From 9a5063c083d4fc68d7375a0dcb511e715ce4feaf Mon Sep 17 00:00:00 2001 From: David Sevilla Martin Date: Tue, 22 Oct 2019 17:34:33 -0400 Subject: [PATCH] done a bunch of work, header secondary has some components, app.request works, idk... --- js/dist/admin.js | 5240 +++++++++- js/dist/admin.js.map | 2 +- js/dist/forum.js | 9267 ++++++++++++++++- js/dist/forum.js.map | 2 +- js/old/common/Application.js | 2 +- js/old/common/components/Dropdown.js | 4 + js/old/common/extend/index.js | 2 +- js/old/forum/components/HeaderSecondary.js | 2 +- js/old/forum/components/Search.js | 2 +- js/package-lock.json | 1977 ++-- js/package.json | 14 +- js/shims.d.ts | 9 + js/src/common/Application.ts | 240 +- js/src/common/Component.ts | 61 +- js/src/common/Model.ts | 280 + js/src/common/Session.ts | 41 + js/src/common/Store.ts | 147 + js/src/common/Translator.ts | 7 +- js/src/common/compat.ts | 4 - js/src/common/components/Alert.tsx | 66 + js/src/common/components/Badge.tsx | 39 + js/src/common/components/Button.tsx | 70 + js/src/common/components/Dropdown.tsx | 139 + js/src/common/components/GroupBadge.ts | 16 + js/src/common/components/LinkButton.tsx | 43 + js/src/common/components/LoadingIndicator.tsx | 43 + js/src/common/components/Navigation.tsx | 18 - js/src/common/components/SelectDropdown.tsx | 38 + js/src/common/components/Separator.tsx | 12 + js/src/common/helpers/avatar.tsx | 36 + js/src/common/helpers/highlight.ts | 36 + js/src/common/helpers/icon.tsx | 11 + js/src/common/helpers/listItems.tsx | 52 + js/src/common/helpers/username.tsx | 11 + js/src/common/index.ts | 13 +- js/src/common/models/Discussion.tsx | 95 + js/src/common/models/Forum.ts | 7 + js/src/common/models/Group.ts | 12 + js/src/common/models/Post.ts | 30 + js/src/common/models/Route.ts | 13 - js/src/common/models/User.ts | 97 + js/src/common/utils/ItemList.ts | 12 +- js/src/common/utils/RequestError.ts | 27 + js/src/common/utils/computed.ts | 36 + js/src/common/utils/extractText.ts | 15 + js/src/common/utils/patchMithril.ts | 51 +- js/src/common/utils/patchZepto.ts | 138 + js/src/common/utils/string.ts | 49 + js/src/common/utils/stringToColor.ts | 46 + js/src/forum/Forum.ts | 96 + js/src/forum/Forum.tsx | 14 - js/src/forum/compat.ts | 2 - .../components/DiscussionsSearchSource.tsx | 55 + js/src/forum/components/HeaderPrimary.tsx | 24 + js/src/forum/components/HeaderSecondary.tsx | 85 + js/src/forum/components/Layout.tsx | 9 - js/src/forum/components/Search.tsx | 303 + js/src/forum/components/SearchSource.ts | 5 + js/src/forum/components/UsersSearchSource.tsx | 53 + js/src/forum/utils/History.ts | 104 + js/src/forum/utils/KeyboardNavigatable.ts | 116 + js/tsconfig.json | 5 +- views/frontend/app.blade.php | 6 +- 63 files changed, 17333 insertions(+), 2118 deletions(-) create mode 100644 js/shims.d.ts create mode 100644 js/src/common/Model.ts create mode 100644 js/src/common/Session.ts create mode 100644 js/src/common/Store.ts create mode 100644 js/src/common/components/Alert.tsx create mode 100644 js/src/common/components/Badge.tsx create mode 100644 js/src/common/components/Button.tsx create mode 100644 js/src/common/components/Dropdown.tsx create mode 100644 js/src/common/components/GroupBadge.ts create mode 100644 js/src/common/components/LinkButton.tsx create mode 100644 js/src/common/components/LoadingIndicator.tsx delete mode 100644 js/src/common/components/Navigation.tsx create mode 100644 js/src/common/components/SelectDropdown.tsx create mode 100644 js/src/common/components/Separator.tsx create mode 100644 js/src/common/helpers/avatar.tsx create mode 100644 js/src/common/helpers/highlight.ts create mode 100644 js/src/common/helpers/icon.tsx create mode 100644 js/src/common/helpers/listItems.tsx create mode 100644 js/src/common/helpers/username.tsx create mode 100644 js/src/common/models/Discussion.tsx create mode 100644 js/src/common/models/Forum.ts create mode 100644 js/src/common/models/Group.ts create mode 100644 js/src/common/models/Post.ts delete mode 100644 js/src/common/models/Route.ts create mode 100644 js/src/common/models/User.ts create mode 100644 js/src/common/utils/RequestError.ts create mode 100644 js/src/common/utils/computed.ts create mode 100644 js/src/common/utils/extractText.ts create mode 100644 js/src/common/utils/patchZepto.ts create mode 100644 js/src/common/utils/string.ts create mode 100644 js/src/common/utils/stringToColor.ts create mode 100644 js/src/forum/Forum.ts delete mode 100644 js/src/forum/Forum.tsx create mode 100644 js/src/forum/components/DiscussionsSearchSource.tsx create mode 100644 js/src/forum/components/HeaderPrimary.tsx create mode 100644 js/src/forum/components/HeaderSecondary.tsx delete mode 100644 js/src/forum/components/Layout.tsx create mode 100644 js/src/forum/components/Search.tsx create mode 100644 js/src/forum/components/SearchSource.ts create mode 100644 js/src/forum/components/UsersSearchSource.tsx create mode 100644 js/src/forum/utils/History.ts create mode 100644 js/src/forum/utils/KeyboardNavigatable.ts diff --git a/js/dist/admin.js b/js/dist/admin.js index 0875555e9..1774322c6 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -111,6 +111,36 @@ __webpack_require__.r(__webpack_exports__); +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/extends.js": +/*!************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***! + \************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _extends; }); +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + /***/ }), /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/imports-loader/index.js?this=>window!./node_modules/source-map-loader/index.js!./node_modules/zepto/dist/zepto.js": @@ -1845,6 +1875,401 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*** IMPORTS FROM imports-loader ***/ /***/ }), +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/source-map-loader/index.js!./node_modules/classNames/index.js": +/*!*******************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--5!./node_modules/source-map-loader!./node_modules/classNames/index.js ***! + \*******************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! + Copyright (c) 2017 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ + +/* global define */ +(function () { + 'use strict'; + + var hasOwn = {}.hasOwnProperty; + + function classNames() { + var classes = []; + + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; + if (!arg) continue; + var argType = typeof arg; + + if (argType === 'string' || argType === 'number') { + classes.push(arg); + } else if (Array.isArray(arg) && arg.length) { + var inner = classNames.apply(null, arg); + + if (inner) { + classes.push(inner); + } + } else if (argType === 'object') { + for (var key in arg) { + if (hasOwn.call(arg, key) && arg[key]) { + classes.push(key); + } + } + } + } + + return classes.join(' '); + } + + if ( true && module.exports) { + classNames.default = classNames; + module.exports = classNames; + } else if (true) { + // register as 'classnames', consistent with npm package name + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { + return classNames; + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else {} +})(); + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/source-map-loader/index.js!./node_modules/dayjs/dayjs.min.js": +/*!******************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--5!./node_modules/source-map-loader!./node_modules/dayjs/dayjs.min.js ***! + \******************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +!function (t, n) { + true ? module.exports = n() : undefined; +}(this, function () { + "use strict"; + + var t = "millisecond", + n = "second", + e = "minute", + r = "hour", + i = "day", + s = "week", + u = "month", + a = "quarter", + o = "year", + h = /^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/, + f = /\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, + c = function c(t, n, e) { + var r = String(t); + return !r || r.length >= n ? t : "" + Array(n + 1 - r.length).join(e) + t; + }, + d = { + s: c, + z: function z(t) { + var n = -t.utcOffset(), + e = Math.abs(n), + r = Math.floor(e / 60), + i = e % 60; + return (n <= 0 ? "+" : "-") + c(r, 2, "0") + ":" + c(i, 2, "0"); + }, + m: function m(t, n) { + var e = 12 * (n.year() - t.year()) + (n.month() - t.month()), + r = t.clone().add(e, u), + i = n - r < 0, + s = t.clone().add(e + (i ? -1 : 1), u); + return Number(-(e + (n - r) / (i ? r - s : s - r)) || 0); + }, + a: function a(t) { + return t < 0 ? Math.ceil(t) || 0 : Math.floor(t); + }, + p: function p(h) { + return { + M: u, + y: o, + w: s, + d: i, + h: r, + m: e, + s: n, + ms: t, + Q: a + }[h] || String(h || "").toLowerCase().replace(/s$/, ""); + }, + u: function u(t) { + return void 0 === t; + } + }, + $ = { + name: "en", + weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_") + }, + l = "en", + m = {}; + + m[l] = $; + + var y = function y(t) { + return t instanceof v; + }, + M = function M(t, n, e) { + var r; + if (!t) return l; + if ("string" == typeof t) m[t] && (r = t), n && (m[t] = n, r = t);else { + var i = t.name; + m[i] = t, r = i; + } + return e || (l = r), r; + }, + g = function g(t, n, e) { + if (y(t)) return t.clone(); + var r = n ? "string" == typeof n ? { + format: n, + pl: e + } : n : {}; + return r.date = t, new v(r); + }, + D = d; + + D.l = M, D.i = y, D.w = function (t, n) { + return g(t, { + locale: n.$L, + utc: n.$u + }); + }; + + var v = function () { + function c(t) { + this.$L = this.$L || M(t.locale, null, !0), this.parse(t); + } + + var d = c.prototype; + return d.parse = function (t) { + this.$d = function (t) { + var n = t.date, + e = t.utc; + if (null === n) return new Date(NaN); + if (D.u(n)) return new Date(); + if (n instanceof Date) return new Date(n); + + if ("string" == typeof n && !/Z$/i.test(n)) { + var r = n.match(h); + if (r) return e ? new Date(Date.UTC(r[1], r[2] - 1, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, r[7] || 0)) : new Date(r[1], r[2] - 1, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, r[7] || 0); + } + + return new Date(n); + }(t), this.init(); + }, d.init = function () { + var t = this.$d; + this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds(); + }, d.$utils = function () { + return D; + }, d.isValid = function () { + return !("Invalid Date" === this.$d.toString()); + }, d.isSame = function (t, n) { + var e = g(t); + return this.startOf(n) <= e && e <= this.endOf(n); + }, d.isAfter = function (t, n) { + return g(t) < this.startOf(n); + }, d.isBefore = function (t, n) { + return this.endOf(n) < g(t); + }, d.$g = function (t, n, e) { + return D.u(t) ? this[n] : this.set(e, t); + }, d.year = function (t) { + return this.$g(t, "$y", o); + }, d.month = function (t) { + return this.$g(t, "$M", u); + }, d.day = function (t) { + return this.$g(t, "$W", i); + }, d.date = function (t) { + return this.$g(t, "$D", "date"); + }, d.hour = function (t) { + return this.$g(t, "$H", r); + }, d.minute = function (t) { + return this.$g(t, "$m", e); + }, d.second = function (t) { + return this.$g(t, "$s", n); + }, d.millisecond = function (n) { + return this.$g(n, "$ms", t); + }, d.unix = function () { + return Math.floor(this.valueOf() / 1e3); + }, d.valueOf = function () { + return this.$d.getTime(); + }, d.startOf = function (t, a) { + var h = this, + f = !!D.u(a) || a, + c = D.p(t), + d = function d(t, n) { + var e = D.w(h.$u ? Date.UTC(h.$y, n, t) : new Date(h.$y, n, t), h); + return f ? e : e.endOf(i); + }, + $ = function $(t, n) { + return D.w(h.toDate()[t].apply(h.toDate(), (f ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(n)), h); + }, + l = this.$W, + m = this.$M, + y = this.$D, + M = "set" + (this.$u ? "UTC" : ""); + + switch (c) { + case o: + return f ? d(1, 0) : d(31, 11); + + case u: + return f ? d(1, m) : d(0, m + 1); + + case s: + var g = this.$locale().weekStart || 0, + v = (l < g ? l + 7 : l) - g; + return d(f ? y - v : y + (6 - v), m); + + case i: + case "date": + return $(M + "Hours", 0); + + case r: + return $(M + "Minutes", 1); + + case e: + return $(M + "Seconds", 2); + + case n: + return $(M + "Milliseconds", 3); + + default: + return this.clone(); + } + }, d.endOf = function (t) { + return this.startOf(t, !1); + }, d.$set = function (s, a) { + var h, + f = D.p(s), + c = "set" + (this.$u ? "UTC" : ""), + d = (h = {}, h[i] = c + "Date", h.date = c + "Date", h[u] = c + "Month", h[o] = c + "FullYear", h[r] = c + "Hours", h[e] = c + "Minutes", h[n] = c + "Seconds", h[t] = c + "Milliseconds", h)[f], + $ = f === i ? this.$D + (a - this.$W) : a; + + if (f === u || f === o) { + var l = this.clone().set("date", 1); + l.$d[d]($), l.init(), this.$d = l.set("date", Math.min(this.$D, l.daysInMonth())).toDate(); + } else d && this.$d[d]($); + + return this.init(), this; + }, d.set = function (t, n) { + return this.clone().$set(t, n); + }, d.get = function (t) { + return this[D.p(t)](); + }, d.add = function (t, a) { + var h, + f = this; + t = Number(t); + + var c = D.p(a), + d = function d(n) { + var e = g(f); + return D.w(e.date(e.date() + Math.round(n * t)), f); + }; + + if (c === u) return this.set(u, this.$M + t); + if (c === o) return this.set(o, this.$y + t); + if (c === i) return d(1); + if (c === s) return d(7); + var $ = (h = {}, h[e] = 6e4, h[r] = 36e5, h[n] = 1e3, h)[c] || 1, + l = this.valueOf() + t * $; + return D.w(l, this); + }, d.subtract = function (t, n) { + return this.add(-1 * t, n); + }, d.format = function (t) { + var n = this; + if (!this.isValid()) return "Invalid Date"; + + var e = t || "YYYY-MM-DDTHH:mm:ssZ", + r = D.z(this), + i = this.$locale(), + s = this.$H, + u = this.$m, + a = this.$M, + o = i.weekdays, + h = i.months, + c = function c(t, r, i, s) { + return t && (t[r] || t(n, e)) || i[r].substr(0, s); + }, + d = function d(t) { + return D.s(s % 12 || 12, t, "0"); + }, + $ = i.meridiem || function (t, n, e) { + var r = t < 12 ? "AM" : "PM"; + return e ? r.toLowerCase() : r; + }, + l = { + YY: String(this.$y).slice(-2), + YYYY: this.$y, + M: a + 1, + MM: D.s(a + 1, 2, "0"), + MMM: c(i.monthsShort, a, h, 3), + MMMM: h[a] || h(this, e), + D: this.$D, + DD: D.s(this.$D, 2, "0"), + d: String(this.$W), + dd: c(i.weekdaysMin, this.$W, o, 2), + ddd: c(i.weekdaysShort, this.$W, o, 3), + dddd: o[this.$W], + H: String(s), + HH: D.s(s, 2, "0"), + h: d(1), + hh: d(2), + a: $(s, u, !0), + A: $(s, u, !1), + m: String(u), + mm: D.s(u, 2, "0"), + s: String(this.$s), + ss: D.s(this.$s, 2, "0"), + SSS: D.s(this.$ms, 3, "0"), + Z: r + }; + + return e.replace(f, function (t, n) { + return n || l[t] || r.replace(":", ""); + }); + }, d.utcOffset = function () { + return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); + }, d.diff = function (t, h, f) { + var c, + d = D.p(h), + $ = g(t), + l = 6e4 * ($.utcOffset() - this.utcOffset()), + m = this - $, + y = D.m(this, $); + return y = (c = {}, c[o] = y / 12, c[u] = y, c[a] = y / 3, c[s] = (m - l) / 6048e5, c[i] = (m - l) / 864e5, c[r] = m / 36e5, c[e] = m / 6e4, c[n] = m / 1e3, c)[d] || m, f ? y : D.a(y); + }, d.daysInMonth = function () { + return this.endOf(u).$D; + }, d.$locale = function () { + return m[this.$L]; + }, d.locale = function (t, n) { + if (!t) return this.$L; + var e = this.clone(); + return e.$L = M(t, n, !0), e; + }, d.clone = function () { + return D.w(this.toDate(), this); + }, d.toDate = function () { + return new Date(this.$d); + }, d.toJSON = function () { + return this.isValid() ? this.toISOString() : null; + }, d.toISOString = function () { + return this.$d.toISOString(); + }, d.toString = function () { + return this.$d.toUTCString(); + }, c; + }(); + + return g.prototype = v.prototype, g.extend = function (t, n) { + return t(n, v, g), g; + }, g.locale = M, g.isDayjs = y, g.unix = function (t) { + return g(1e3 * t); + }, g.en = m[l], g.Ls = m, g; +}); + +/***/ }), + /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/source-map-loader/index.js!./node_modules/m.attrs.bidi/bidi.js": /*!********************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib??ref--5!./node_modules/source-map-loader!./node_modules/m.attrs.bidi/bidi.js ***! @@ -3045,337 +3470,210 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*global define:false */ /***/ }), -/***/ "./node_modules/dayjs/dayjs.min.js": -/*!*****************************************!*\ - !*** ./node_modules/dayjs/dayjs.min.js ***! - \*****************************************/ +/***/ "./node_modules/bootstrap/js/dropdown.js": +/*!***********************************************!*\ + !*** ./node_modules/bootstrap/js/dropdown.js ***! + \***********************************************/ /*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, exports) { -!function (t, n) { - true ? module.exports = n() : undefined; -}(this, function () { - "use strict"; +/* ======================================================================== + * Bootstrap: dropdown.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ ++function ($) { + 'use strict'; // DROPDOWN CLASS DEFINITION + // ========================= - var t = "millisecond", - n = "second", - e = "minute", - r = "hour", - i = "day", - s = "week", - u = "month", - a = "quarter", - o = "year", - h = /^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/, - f = /\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, - c = function c(t, n, e) { - var r = String(t); - return !r || r.length >= n ? t : "" + Array(n + 1 - r.length).join(e) + t; - }, - d = { - s: c, - z: function z(t) { - var n = -t.utcOffset(), - e = Math.abs(n), - r = Math.floor(e / 60), - i = e % 60; - return (n <= 0 ? "+" : "-") + c(r, 2, "0") + ":" + c(i, 2, "0"); - }, - m: function m(t, n) { - var e = 12 * (n.year() - t.year()) + (n.month() - t.month()), - r = t.clone().add(e, u), - i = n - r < 0, - s = t.clone().add(e + (i ? -1 : 1), u); - return Number(-(e + (n - r) / (i ? r - s : s - r)) || 0); - }, - a: function a(t) { - return t < 0 ? Math.ceil(t) || 0 : Math.floor(t); - }, - p: function p(h) { - return { - M: u, - y: o, - w: s, - d: i, - h: r, - m: e, - s: n, - ms: t, - Q: a - }[h] || String(h || "").toLowerCase().replace(/s$/, ""); - }, - u: function u(t) { - return void 0 === t; - } - }, - $ = { - name: "en", - weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_") - }, - l = "en", - m = {}; + var backdrop = '.dropdown-backdrop'; + var toggle = '[data-toggle="dropdown"]'; - m[l] = $; - - var y = function y(t) { - return t instanceof v; - }, - M = function M(t, n, e) { - var r; - if (!t) return l; - if ("string" == typeof t) m[t] && (r = t), n && (m[t] = n, r = t);else { - var i = t.name; - m[i] = t, r = i; - } - return e || (l = r), r; - }, - g = function g(t, n, e) { - if (y(t)) return t.clone(); - var r = n ? "string" == typeof n ? { - format: n, - pl: e - } : n : {}; - return r.date = t, new v(r); - }, - D = d; - - D.l = M, D.i = y, D.w = function (t, n) { - return g(t, { - locale: n.$L, - utc: n.$u - }); + var Dropdown = function Dropdown(element) { + $(element).on('click.bs.dropdown', this.toggle); }; - var v = function () { - function c(t) { - this.$L = this.$L || M(t.locale, null, !0), this.parse(t); + Dropdown.VERSION = '3.4.1'; + + function getParent($this) { + var selector = $this.attr('data-target'); + + if (!selector) { + selector = $this.attr('href'); + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, ''); // strip for ie7 } - var d = c.prototype; - return d.parse = function (t) { - this.$d = function (t) { - var n = t.date, - e = t.utc; - if (null === n) return new Date(NaN); - if (D.u(n)) return new Date(); - if (n instanceof Date) return new Date(n); + var $parent = selector !== '#' ? $(document).find(selector) : null; + return $parent && $parent.length ? $parent : $this.parent(); + } - if ("string" == typeof n && !/Z$/i.test(n)) { - var r = n.match(h); - if (r) return e ? new Date(Date.UTC(r[1], r[2] - 1, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, r[7] || 0)) : new Date(r[1], r[2] - 1, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, r[7] || 0); - } + function clearMenus(e) { + if (e && e.which === 3) return; + $(backdrop).remove(); + $(toggle).each(function () { + var $this = $(this); + var $parent = getParent($this); + var relatedTarget = { + relatedTarget: this + }; + if (!$parent.hasClass('open')) return; + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return; + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)); + if (e.isDefaultPrevented()) return; + $this.attr('aria-expanded', 'false'); + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)); + }); + } - return new Date(n); - }(t), this.init(); - }, d.init = function () { - var t = this.$d; - this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds(); - }, d.$utils = function () { - return D; - }, d.isValid = function () { - return !("Invalid Date" === this.$d.toString()); - }, d.isSame = function (t, n) { - var e = g(t); - return this.startOf(n) <= e && e <= this.endOf(n); - }, d.isAfter = function (t, n) { - return g(t) < this.startOf(n); - }, d.isBefore = function (t, n) { - return this.endOf(n) < g(t); - }, d.$g = function (t, n, e) { - return D.u(t) ? this[n] : this.set(e, t); - }, d.year = function (t) { - return this.$g(t, "$y", o); - }, d.month = function (t) { - return this.$g(t, "$M", u); - }, d.day = function (t) { - return this.$g(t, "$W", i); - }, d.date = function (t) { - return this.$g(t, "$D", "date"); - }, d.hour = function (t) { - return this.$g(t, "$H", r); - }, d.minute = function (t) { - return this.$g(t, "$m", e); - }, d.second = function (t) { - return this.$g(t, "$s", n); - }, d.millisecond = function (n) { - return this.$g(n, "$ms", t); - }, d.unix = function () { - return Math.floor(this.valueOf() / 1e3); - }, d.valueOf = function () { - return this.$d.getTime(); - }, d.startOf = function (t, a) { - var h = this, - f = !!D.u(a) || a, - c = D.p(t), - d = function d(t, n) { - var e = D.w(h.$u ? Date.UTC(h.$y, n, t) : new Date(h.$y, n, t), h); - return f ? e : e.endOf(i); - }, - $ = function $(t, n) { - return D.w(h.toDate()[t].apply(h.toDate(), (f ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(n)), h); - }, - l = this.$W, - m = this.$M, - y = this.$D, - M = "set" + (this.$u ? "UTC" : ""); + Dropdown.prototype.toggle = function (e) { + var $this = $(this); + if ($this.is('.disabled, :disabled')) return; + var $parent = getParent($this); + var isActive = $parent.hasClass('open'); + clearMenus(); - switch (c) { - case o: - return f ? d(1, 0) : d(31, 11); - - case u: - return f ? d(1, m) : d(0, m + 1); - - case s: - var g = this.$locale().weekStart || 0, - v = (l < g ? l + 7 : l) - g; - return d(f ? y - v : y + (6 - v), m); - - case i: - case "date": - return $(M + "Hours", 0); - - case r: - return $(M + "Minutes", 1); - - case e: - return $(M + "Seconds", 2); - - case n: - return $(M + "Milliseconds", 3); - - default: - return this.clone(); + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')).addClass('dropdown-backdrop').insertAfter($(this)).on('click', clearMenus); } - }, d.endOf = function (t) { - return this.startOf(t, !1); - }, d.$set = function (s, a) { - var h, - f = D.p(s), - c = "set" + (this.$u ? "UTC" : ""), - d = (h = {}, h[i] = c + "Date", h.date = c + "Date", h[u] = c + "Month", h[o] = c + "FullYear", h[r] = c + "Hours", h[e] = c + "Minutes", h[n] = c + "Seconds", h[t] = c + "Milliseconds", h)[f], - $ = f === i ? this.$D + (a - this.$W) : a; - if (f === u || f === o) { - var l = this.clone().set("date", 1); - l.$d[d]($), l.init(), this.$d = l.set("date", Math.min(this.$D, l.daysInMonth())).toDate(); - } else d && this.$d[d]($); - - return this.init(), this; - }, d.set = function (t, n) { - return this.clone().$set(t, n); - }, d.get = function (t) { - return this[D.p(t)](); - }, d.add = function (t, a) { - var h, - f = this; - t = Number(t); - - var c = D.p(a), - d = function d(n) { - var e = g(f); - return D.w(e.date(e.date() + Math.round(n * t)), f); + var relatedTarget = { + relatedTarget: this }; + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)); + if (e.isDefaultPrevented()) return; + $this.trigger('focus').attr('aria-expanded', 'true'); + $parent.toggleClass('open').trigger($.Event('shown.bs.dropdown', relatedTarget)); + } - if (c === u) return this.set(u, this.$M + t); - if (c === o) return this.set(o, this.$y + t); - if (c === i) return d(1); - if (c === s) return d(7); - var $ = (h = {}, h[e] = 6e4, h[r] = 36e5, h[n] = 1e3, h)[c] || 1, - l = this.valueOf() + t * $; - return D.w(l, this); - }, d.subtract = function (t, n) { - return this.add(-1 * t, n); - }, d.format = function (t) { - var n = this; - if (!this.isValid()) return "Invalid Date"; + return false; + }; - var e = t || "YYYY-MM-DDTHH:mm:ssZ", - r = D.z(this), - i = this.$locale(), - s = this.$H, - u = this.$m, - a = this.$M, - o = i.weekdays, - h = i.months, - c = function c(t, r, i, s) { - return t && (t[r] || t(n, e)) || i[r].substr(0, s); - }, - d = function d(t) { - return D.s(s % 12 || 12, t, "0"); - }, - $ = i.meridiem || function (t, n, e) { - var r = t < 12 ? "AM" : "PM"; - return e ? r.toLowerCase() : r; - }, - l = { - YY: String(this.$y).slice(-2), - YYYY: this.$y, - M: a + 1, - MM: D.s(a + 1, 2, "0"), - MMM: c(i.monthsShort, a, h, 3), - MMMM: h[a] || h(this, e), - D: this.$D, - DD: D.s(this.$D, 2, "0"), - d: String(this.$W), - dd: c(i.weekdaysMin, this.$W, o, 2), - ddd: c(i.weekdaysShort, this.$W, o, 3), - dddd: o[this.$W], - H: String(s), - HH: D.s(s, 2, "0"), - h: d(1), - hh: d(2), - a: $(s, u, !0), - A: $(s, u, !1), - m: String(u), - mm: D.s(u, 2, "0"), - s: String(this.$s), - ss: D.s(this.$s, 2, "0"), - SSS: D.s(this.$ms, 3, "0"), - Z: r - }; + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return; + var $this = $(this); + e.preventDefault(); + e.stopPropagation(); + if ($this.is('.disabled, :disabled')) return; + var $parent = getParent($this); + var isActive = $parent.hasClass('open'); - return e.replace(f, function (t, n) { - return n || l[t] || r.replace(":", ""); - }); - }, d.utcOffset = function () { - return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); - }, d.diff = function (t, h, f) { - var c, - d = D.p(h), - $ = g(t), - l = 6e4 * ($.utcOffset() - this.utcOffset()), - m = this - $, - y = D.m(this, $); - return y = (c = {}, c[o] = y / 12, c[u] = y, c[a] = y / 3, c[s] = (m - l) / 6048e5, c[i] = (m - l) / 864e5, c[r] = m / 36e5, c[e] = m / 6e4, c[n] = m / 1e3, c)[d] || m, f ? y : D.a(y); - }, d.daysInMonth = function () { - return this.endOf(u).$D; - }, d.$locale = function () { - return m[this.$L]; - }, d.locale = function (t, n) { - if (!t) return this.$L; - var e = this.clone(); - return e.$L = M(t, n, !0), e; - }, d.clone = function () { - return D.w(this.toDate(), this); - }, d.toDate = function () { - return new Date(this.$d); - }, d.toJSON = function () { - return this.isValid() ? this.toISOString() : null; - }, d.toISOString = function () { - return this.$d.toISOString(); - }, d.toString = function () { - return this.$d.toUTCString(); - }, c; - }(); + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus'); + return $this.trigger('click'); + } - return g.prototype = v.prototype, g.extend = function (t, n) { - return t(n, v, g), g; - }, g.locale = M, g.isDayjs = y, g.unix = function (t) { - return g(1e3 * t); - }, g.en = m[l], g.Ls = m, g; -}); + var desc = ' li:not(.disabled):visible a'; + var $items = $parent.find('.dropdown-menu' + desc); + if (!$items.length) return; + var index = $items.index(e.target); + if (e.which == 38 && index > 0) index--; // up + + if (e.which == 40 && index < $items.length - 1) index++; // down + + if (!~index) index = 0; + $items.eq(index).trigger('focus'); + }; // DROPDOWN PLUGIN DEFINITION + // ========================== + + + function Plugin(option) { + return this.each(function () { + var $this = $(this); + var data = $this.data('bs.dropdown'); + if (!data) $this.data('bs.dropdown', data = new Dropdown(this)); + if (typeof option == 'string') data[option].call($this); + }); + } + + var old = $.fn.dropdown; + $.fn.dropdown = Plugin; + $.fn.dropdown.Constructor = Dropdown; // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old; + return this; + }; // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + + $(document).on('click.bs.dropdown.data-api', clearMenus).on('click.bs.dropdown.data-api', '.dropdown form', function (e) { + e.stopPropagation(); + }).on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle).on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown).on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown); +}(jQuery); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/transition.js": +/*!*************************************************!*\ + !*** ./node_modules/bootstrap/js/transition.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/* ======================================================================== + * Bootstrap: transition.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#transitions + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ ++function ($) { + 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap'); + var transEndEventNames = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { + end: transEndEventNames[name] + }; + } + } + + return false; // explicit for ie8 ( ._.) + } // https://blog.alexmaccaw.com/css-transitions + + + $.fn.emulateTransitionEnd = function (duration) { + var called = false; + var $el = this; + $(this).one('bsTransitionEnd', function () { + called = true; + }); + + var callback = function callback() { + if (!called) $($el).trigger($.support.transition.end); + }; + + setTimeout(callback, duration); + return this; + }; + + $(function () { + $.support.transition = transitionEnd(); + if (!$.support.transition) return; + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function handle(e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments); + } + }; + }); +}(jQuery); /***/ }), @@ -3536,6 +3834,18 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*global define:false */ /***/ }), +/***/ "./node_modules/expose-loader/index.js?classNames!./node_modules/classNames/index.js-exposed": +/*!******************************************************************************************!*\ + !*** ./node_modules/expose-loader?classNames!./node_modules/classNames/index.js-exposed ***! + \******************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {module.exports = global["classNames"] = __webpack_require__(/*! -!./node_modules/babel-loader/lib??ref--5!./node_modules/source-map-loader!./index.js */ "./node_modules/babel-loader/lib/index.js?!./node_modules/source-map-loader/index.js!./node_modules/classNames/index.js"); +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +/***/ }), + /***/ "./node_modules/expose-loader/index.js?dayjs!./node_modules/babel-loader/lib/index.js?!./node_modules/source-map-loader/index.js!./node_modules/dayjs/dayjs.min.js-exposed": /*!*************************************************************************************************************************************************************!*\ !*** ./node_modules/expose-loader?dayjs!./node_modules/babel-loader/lib??ref--5!./node_modules/source-map-loader!./node_modules/dayjs/dayjs.min.js-exposed ***! @@ -3543,7 +3853,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*global define:false */ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -/* WEBPACK VAR INJECTION */(function(global) {module.exports = global["dayjs"] = __webpack_require__(/*! -!./node_modules/babel-loader/lib??ref--5!./node_modules/source-map-loader!./dayjs.min.js */ "./node_modules/dayjs/dayjs.min.js"); +/* WEBPACK VAR INJECTION */(function(global) {module.exports = global["dayjs"] = __webpack_require__(/*! -!./node_modules/babel-loader/lib??ref--5!./node_modules/source-map-loader!./dayjs.min.js */ "./node_modules/babel-loader/lib/index.js?!./node_modules/source-map-loader/index.js!./node_modules/dayjs/dayjs.min.js"); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) /***/ }), @@ -3597,6 +3907,589 @@ module.exports = global["m"]["bidi"] = __webpack_require__(/*! -!./node_modules/ /***/ }), +/***/ "./node_modules/hc-sticky/dist/hc-sticky.js": +/*!**************************************************!*\ + !*** ./node_modules/hc-sticky/dist/hc-sticky.js ***! + \**************************************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js"); + + +/*! + * HC-Sticky + * ========= + * Version: 2.2.3 + * Author: Some Web Media + * Author URL: http://somewebmedia.com + * Plugin URL: https://github.com/somewebmedia/hc-sticky + * Description: Cross-browser plugin that makes any element on your page visible while you scroll + * License: MIT + */ +!function (t, e) { + "use strict"; + + if ( true && "object" == typeof module.exports) { + if (!t.document) throw new Error("HC-Sticky requires a browser to run."); + module.exports = e(t); + } else "function" == typeof define && __webpack_require__(/*! !webpack amd options */ "./node_modules/webpack/buildin/amd-options.js") ? define("hcSticky", [], e(t)) : e(t); +}("undefined" != typeof window ? window : undefined, function (U) { + "use strict"; + + var Y = { + top: 0, + bottom: 0, + bottomEnd: 0, + innerTop: 0, + innerSticker: null, + stickyClass: "sticky", + stickTo: null, + followScroll: !0, + responsive: null, + mobileFirst: !1, + onStart: null, + onStop: null, + onBeforeResize: null, + onResize: null, + resizeDebounce: 100, + disable: !1, + queries: null, + queryFlow: "down" + }, + $ = function $(t, e, o) { + console.log("%c! HC Sticky:%c " + t + "%c " + o + " is now deprecated and will be removed. Use%c " + e + "%c instead.", "color: red", "color: darkviolet", "color: black", "color: darkviolet", "color: black"); + }, + Q = U.document, + X = function X(n, f) { + var o = this; + if ("string" == typeof n && (n = Q.querySelector(n)), !n) return !1; + f.queries && $("queries", "responsive", "option"), f.queryFlow && $("queryFlow", "mobileFirst", "option"); + var p = {}, + d = X.Helpers, + s = n.parentNode; + "static" === d.getStyle(s, "position") && (s.style.position = "relative"); + + var u = function u() { + var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; + d.isEmptyObject(t) && !d.isEmptyObject(p) || (p = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, Y, p, t)); + }, + t = function t() { + return p.disable; + }, + e = function e() { + var t, + e = p.responsive || p.queries; + + if (e) { + var o = U.innerWidth; + if (t = f, (p = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, Y, t || {})).mobileFirst) for (var i in e) { + i <= o && !d.isEmptyObject(e[i]) && u(e[i]); + } else { + var n = []; + + for (var s in e) { + var r = {}; + r[s] = e[s], n.push(r); + } + + for (var l = n.length - 1; 0 <= l; l--) { + var a = n[l], + c = Object.keys(a)[0]; + o <= c && !d.isEmptyObject(a[c]) && u(a[c]); + } + } + } + }, + r = { + css: {}, + position: null, + stick: function stick() { + var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; + d.hasClass(n, p.stickyClass) || (!1 === l.isAttached && l.attach(), r.position = "fixed", n.style.position = "fixed", n.style.left = l.offsetLeft + "px", n.style.width = l.width, void 0 === t.bottom ? n.style.bottom = "auto" : n.style.bottom = t.bottom + "px", void 0 === t.top ? n.style.top = "auto" : n.style.top = t.top + "px", n.classList ? n.classList.add(p.stickyClass) : n.className += " " + p.stickyClass, p.onStart && p.onStart.call(n, Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, p))); + }, + release: function release() { + var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; + + if (t.stop = t.stop || !1, !0 === t.stop || "fixed" === r.position || null === r.position || !(void 0 === t.top && void 0 === t.bottom || void 0 !== t.top && (parseInt(d.getStyle(n, "top")) || 0) === t.top || void 0 !== t.bottom && (parseInt(d.getStyle(n, "bottom")) || 0) === t.bottom)) { + !0 === t.stop ? !0 === l.isAttached && l.detach() : !1 === l.isAttached && l.attach(); + var e = t.position || r.css.position; + r.position = e, n.style.position = e, n.style.left = !0 === t.stop ? r.css.left : l.positionLeft + "px", n.style.width = "absolute" !== e ? r.css.width : l.width, void 0 === t.bottom ? n.style.bottom = !0 === t.stop ? "" : "auto" : n.style.bottom = t.bottom + "px", void 0 === t.top ? n.style.top = !0 === t.stop ? "" : "auto" : n.style.top = t.top + "px", n.classList ? n.classList.remove(p.stickyClass) : n.className = n.className.replace(new RegExp("(^|\\b)" + p.stickyClass.split(" ").join("|") + "(\\b|$)", "gi"), " "), p.onStop && p.onStop.call(n, Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, p)); + } + } + }, + l = { + el: Q.createElement("div"), + offsetLeft: null, + positionLeft: null, + width: null, + isAttached: !1, + init: function init() { + for (var t in l.el.className = "sticky-spacer", r.css) { + l.el.style[t] = r.css[t]; + } + + l.el.style["z-index"] = "-1"; + var e = d.getStyle(n); + l.offsetLeft = d.offset(n).left - (parseInt(e.marginLeft) || 0), l.positionLeft = d.position(n).left, l.width = d.getStyle(n, "width"); + }, + attach: function attach() { + s.insertBefore(l.el, n), l.isAttached = !0; + }, + detach: function detach() { + l.el = s.removeChild(l.el), l.isAttached = !1; + } + }, + a = void 0, + c = void 0, + g = void 0, + m = void 0, + h = void 0, + v = void 0, + y = void 0, + b = void 0, + S = void 0, + w = void 0, + k = void 0, + E = void 0, + x = void 0, + L = void 0, + T = void 0, + j = void 0, + O = void 0, + C = void 0, + i = function i() { + var t, e, o, i; + r.css = (t = n, e = d.getCascadedStyle(t), o = d.getStyle(t), i = { + height: t.offsetHeight + "px", + left: e.left, + right: e.right, + top: e.top, + bottom: e.bottom, + position: o.position, + display: o.display, + verticalAlign: o.verticalAlign, + boxSizing: o.boxSizing, + marginLeft: e.marginLeft, + marginRight: e.marginRight, + marginTop: e.marginTop, + marginBottom: e.marginBottom, + paddingLeft: e.paddingLeft, + paddingRight: e.paddingRight + }, e.float && (i.float = e.float || "none"), e.cssFloat && (i.cssFloat = e.cssFloat || "none"), o.MozBoxSizing && (i.MozBoxSizing = o.MozBoxSizing), i.width = "auto" !== e.width ? e.width : "border-box" === i.boxSizing || "border-box" === i.MozBoxSizing ? t.offsetWidth + "px" : o.width, i), l.init(), a = !(!p.stickTo || !("document" === p.stickTo || p.stickTo.nodeType && 9 === p.stickTo.nodeType || "object" == typeof p.stickTo && p.stickTo instanceof ("undefined" != typeof HTMLDocument ? HTMLDocument : Document))), c = p.stickTo ? a ? Q : "string" == typeof p.stickTo ? Q.querySelector(p.stickTo) : p.stickTo : s, T = (C = function C() { + var t = n.offsetHeight + (parseInt(r.css.marginTop) || 0) + (parseInt(r.css.marginBottom) || 0), + e = (T || 0) - t; + return -1 <= e && e <= 1 ? T : t; + })(), m = (O = function O() { + return a ? Math.max(Q.documentElement.clientHeight, Q.body.scrollHeight, Q.documentElement.scrollHeight, Q.body.offsetHeight, Q.documentElement.offsetHeight) : c.offsetHeight; + })(), h = a ? 0 : d.offset(c).top, v = p.stickTo ? a ? 0 : d.offset(s).top : h, y = U.innerHeight, j = n.offsetTop - (parseInt(r.css.marginTop) || 0), g = p.innerSticker ? "string" == typeof p.innerSticker ? Q.querySelector(p.innerSticker) : p.innerSticker : null, b = isNaN(p.top) && -1 < p.top.indexOf("%") ? parseFloat(p.top) / 100 * y : p.top, S = isNaN(p.bottom) && -1 < p.bottom.indexOf("%") ? parseFloat(p.bottom) / 100 * y : p.bottom, w = g ? g.offsetTop : p.innerTop ? p.innerTop : 0, k = isNaN(p.bottomEnd) && -1 < p.bottomEnd.indexOf("%") ? parseFloat(p.bottomEnd) / 100 * y : p.bottomEnd, E = h - b + w + j; + }, + z = U.pageYOffset || Q.documentElement.scrollTop, + N = 0, + H = void 0, + R = function R() { + T = C(), m = O(), x = h + m - b - k, L = y < T; + var t = U.pageYOffset || Q.documentElement.scrollTop, + e = d.offset(n).top, + o = e - t, + i = void 0; + H = t < z ? "up" : "down", N = t - z, E < (z = t) ? x + b + (L ? S : 0) - (p.followScroll && L ? 0 : b) <= t + T - w - (y - (E - w) < T - w && p.followScroll && 0 < (i = T - y - w) ? i : 0) ? r.release({ + position: "absolute", + bottom: v + s.offsetHeight - x - b + }) : L && p.followScroll ? "down" === H ? o + T + S <= y + .9 ? r.stick({ + bottom: S + }) : "fixed" === r.position && r.release({ + position: "absolute", + top: e - b - E - N + w + }) : Math.ceil(o + w) < 0 && "fixed" === r.position ? r.release({ + position: "absolute", + top: e - b - E + w - N + }) : t + b - w <= e && r.stick({ + top: b - w + }) : r.stick({ + top: b - w + }) : r.release({ + stop: !0 + }); + }, + A = !1, + B = !1, + I = function I() { + A && (d.event.unbind(U, "scroll", R), A = !1); + }, + q = function q() { + null !== n.offsetParent && "none" !== d.getStyle(n, "display") ? (i(), m <= T ? I() : (R(), A || (d.event.bind(U, "scroll", R), A = !0))) : I(); + }, + F = function F() { + n.style.position = "", n.style.left = "", n.style.top = "", n.style.bottom = "", n.style.width = "", n.classList ? n.classList.remove(p.stickyClass) : n.className = n.className.replace(new RegExp("(^|\\b)" + p.stickyClass.split(" ").join("|") + "(\\b|$)", "gi"), " "), r.css = {}, !(r.position = null) === l.isAttached && l.detach(); + }, + M = function M() { + F(), e(), t() ? I() : q(); + }, + D = function D() { + p.onBeforeResize && p.onBeforeResize.call(n, Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, p)), M(), p.onResize && p.onResize.call(n, Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, p)); + }, + P = p.resizeDebounce ? d.debounce(D, p.resizeDebounce) : D, + W = function W() { + B && (d.event.unbind(U, "resize", P), B = !1), I(); + }, + V = function V() { + B || (d.event.bind(U, "resize", P), B = !0), e(), t() ? I() : q(); + }; + + this.options = function (t) { + return t ? p[t] : Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, p); + }, this.refresh = M, this.update = function (t) { + u(t), f = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, f, t || {}), M(); + }, this.attach = V, this.detach = W, this.destroy = function () { + W(), F(); + }, this.triggerMethod = function (t, e) { + "function" == typeof o[t] && o[t](e); + }, this.reinit = function () { + $("reinit", "refresh", "method"), M(); + }, u(f), V(), d.event.bind(U, "load", M); + }; + + if (void 0 !== U.jQuery) { + var i = U.jQuery, + n = "hcSticky"; + i.fn.extend({ + hcSticky: function hcSticky(e, o) { + return this.length ? "options" === e ? i.data(this.get(0), n).options() : this.each(function () { + var t = i.data(this, n); + t ? t.triggerMethod(e, o) : (t = new X(this, e), i.data(this, n, t)); + }) : this; + } + }); + } + + return U.hcSticky = U.hcSticky || X, X; +}), function (c) { + "use strict"; + + var t = c.hcSticky, + f = c.document; + "function" != typeof Object.assign && Object.defineProperty(Object, "assign", { + value: function value(t, e) { + if (null == t) throw new TypeError("Cannot convert undefined or null to object"); + + for (var o = Object(t), i = 1; i < arguments.length; i++) { + var n = arguments[i]; + if (null != n) for (var s in n) { + Object.prototype.hasOwnProperty.call(n, s) && (o[s] = n[s]); + } + } + + return o; + }, + writable: !0, + configurable: !0 + }), Array.prototype.forEach || (Array.prototype.forEach = function (t) { + var e, o; + if (null == this) throw new TypeError("this is null or not defined"); + var i = Object(this), + n = i.length >>> 0; + if ("function" != typeof t) throw new TypeError(t + " is not a function"); + + for (1 < arguments.length && (e = arguments[1]), o = 0; o < n;) { + var s; + o in i && (s = i[o], t.call(e, s, o, i)), o++; + } + }); + + var e = function () { + var t = f.documentElement, + e = function e() {}; + + function i(t) { + var e = c.event; + return e.target = e.target || e.srcElement || t, e; + } + + t.addEventListener ? e = function e(t, _e, o) { + t.addEventListener(_e, o, !1); + } : t.attachEvent && (e = function e(_e2, t, o) { + _e2[t + o] = o.handleEvent ? function () { + var t = i(_e2); + o.handleEvent.call(o, t); + } : function () { + var t = i(_e2); + o.call(_e2, t); + }, _e2.attachEvent("on" + t, _e2[t + o]); + }); + + var o = function o() {}; + + return t.removeEventListener ? o = function o(t, e, _o) { + t.removeEventListener(e, _o, !1); + } : t.detachEvent && (o = function o(e, _o2, i) { + e.detachEvent("on" + _o2, e[_o2 + i]); + + try { + delete e[_o2 + i]; + } catch (t) { + e[_o2 + i] = void 0; + } + }), { + bind: e, + unbind: o + }; + }(), + r = function r(t, e) { + return c.getComputedStyle ? e ? f.defaultView.getComputedStyle(t, null).getPropertyValue(e) : f.defaultView.getComputedStyle(t, null) : t.currentStyle ? e ? t.currentStyle[e.replace(/-\w/g, function (t) { + return t.toUpperCase().replace("-", ""); + })] : t.currentStyle : void 0; + }, + l = function l(t) { + var e = t.getBoundingClientRect(), + o = c.pageYOffset || f.documentElement.scrollTop, + i = c.pageXOffset || f.documentElement.scrollLeft; + return { + top: e.top + o, + left: e.left + i + }; + }; + + t.Helpers = { + isEmptyObject: function isEmptyObject(t) { + for (var e in t) { + return !1; + } + + return !0; + }, + debounce: function debounce(i, n, s) { + var r = void 0; + return function () { + var t = this, + e = arguments, + o = s && !r; + clearTimeout(r), r = setTimeout(function () { + r = null, s || i.apply(t, e); + }, n), o && i.apply(t, e); + }; + }, + hasClass: function hasClass(t, e) { + return t.classList ? t.classList.contains(e) : new RegExp("(^| )" + e + "( |$)", "gi").test(t.className); + }, + offset: l, + position: function position(t) { + var e = t.offsetParent, + o = l(e), + i = l(t), + n = r(e), + s = r(t); + return o.top += parseInt(n.borderTopWidth) || 0, o.left += parseInt(n.borderLeftWidth) || 0, { + top: i.top - o.top - (parseInt(s.marginTop) || 0), + left: i.left - o.left - (parseInt(s.marginLeft) || 0) + }; + }, + getStyle: r, + getCascadedStyle: function getCascadedStyle(t) { + var e = t.cloneNode(!0); + e.style.display = "none", Array.prototype.slice.call(e.querySelectorAll('input[type="radio"]')).forEach(function (t) { + t.removeAttribute("name"); + }), t.parentNode.insertBefore(e, t.nextSibling); + var o = void 0; + e.currentStyle ? o = e.currentStyle : c.getComputedStyle && (o = f.defaultView.getComputedStyle(e, null)); + var i = {}; + + for (var n in o) { + !isNaN(n) || "string" != typeof o[n] && "number" != typeof o[n] || (i[n] = o[n]); + } + + if (Object.keys(i).length < 3) for (var s in i = {}, o) { + isNaN(s) || (i[o[s].replace(/-\w/g, function (t) { + return t.toUpperCase().replace("-", ""); + })] = o.getPropertyValue(o[s])); + } + + if (i.margin || "auto" !== i.marginLeft ? i.margin || i.marginLeft !== i.marginRight || i.marginLeft !== i.marginTop || i.marginLeft !== i.marginBottom || (i.margin = i.marginLeft) : i.margin = "auto", !i.margin && "0px" === i.marginLeft && "0px" === i.marginRight) { + var r = t.offsetLeft - t.parentNode.offsetLeft, + l = r - (parseInt(i.left) || 0) - (parseInt(i.right) || 0), + a = t.parentNode.offsetWidth - t.offsetWidth - r - (parseInt(i.right) || 0) + (parseInt(i.left) || 0) - l; + 0 !== a && 1 !== a || (i.margin = "auto"); + } + + return e.parentNode.removeChild(e), e = null, i; + }, + event: e + }; +}(window); +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/harmony-module.js */ "./node_modules/webpack/buildin/harmony-module.js")(module))) + +/***/ }), + +/***/ "./node_modules/jump.js/dist/jump.module.js": +/*!**************************************************!*\ + !*** ./node_modules/jump.js/dist/jump.module.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// Robert Penner's easeInOutQuad +// find the rest of his easing functions here: http://robertpenner.com/easing/ +// find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js +var easeInOutQuad = function easeInOutQuad(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * t * t + b; + t--; + return -c / 2 * (t * (t - 2) - 1) + b; +}; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; +} : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; +}; + +var jumper = function jumper() { + // private variable cache + // no variables are created during a jump, preventing memory leaks + var element = void 0; // element to scroll to (node) + + var start = void 0; // where scroll starts (px) + + var stop = void 0; // where scroll stops (px) + + var offset = void 0; // adjustment from the stop position (px) + + var easing = void 0; // easing function (function) + + var a11y = void 0; // accessibility support flag (boolean) + + var distance = void 0; // distance of scroll (px) + + var duration = void 0; // scroll duration (ms) + + var timeStart = void 0; // time scroll started (ms) + + var timeElapsed = void 0; // time spent scrolling thus far (ms) + + var next = void 0; // next scroll position (px) + + var callback = void 0; // to call when done scrolling (function) + // scroll position helper + + function location() { + return window.scrollY || window.pageYOffset; + } // element offset helper + + + function top(element) { + return element.getBoundingClientRect().top + start; + } // rAF loop helper + + + function loop(timeCurrent) { + // store time scroll started, if not started already + if (!timeStart) { + timeStart = timeCurrent; + } // determine time spent scrolling so far + + + timeElapsed = timeCurrent - timeStart; // calculate next scroll position + + next = easing(timeElapsed, start, distance, duration); // scroll to it + + window.scrollTo(0, next); // check progress + + timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop + : done(); // scrolling is done + } // scroll finished helper + + + function done() { + // account for rAF time rounding inaccuracies + window.scrollTo(0, start + distance); // if scrolling to an element, and accessibility is enabled + + if (element && a11y) { + // add tabindex indicating programmatic focus + element.setAttribute('tabindex', '-1'); // focus the element + + element.focus(); + } // if it exists, fire the callback + + + if (typeof callback === 'function') { + callback(); + } // reset time for next jump + + + timeStart = false; + } // API + + + function jump(target) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // resolve options, or use defaults + + duration = options.duration || 1000; + offset = options.offset || 0; + callback = options.callback; // "undefined" is a suitable default, and won't be called + + easing = options.easing || easeInOutQuad; + a11y = options.a11y || false; // cache starting position + + start = location(); // resolve target + + switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) { + // scroll from current position + case 'number': + element = undefined; // no element to scroll to + + a11y = false; // make sure accessibility is off + + stop = start + target; + break; + // scroll to element (node) + // bounding rect is relative to the viewport + + case 'object': + element = target; + stop = top(element); + break; + // scroll to element (selector) + // bounding rect is relative to the viewport + + case 'string': + element = document.querySelector(target); + stop = top(element); + break; + } // resolve scroll distance, accounting for offset + + + distance = stop - start + offset; // resolve duration + + switch (_typeof(options.duration)) { + // number in ms + case 'number': + duration = options.duration; + break; + // function passed the distance of the scroll + + case 'function': + duration = options.duration(distance); + break; + } // start the loop + + + window.requestAnimationFrame(loop); + } // expose only the jump method + + + return jump; +}; // export singleton + + +var singleton = jumper(); +/* harmony default export */ __webpack_exports__["default"] = (singleton); + +/***/ }), + /***/ "./node_modules/mithril/api/mount-redraw.js": /*!**************************************************!*\ !*** ./node_modules/mithril/api/mount-redraw.js ***! @@ -6110,6 +7003,2842 @@ module.exports = __webpack_require__(/*! ./api/router */ "./node_modules/mithril /***/ }), +/***/ "./node_modules/mithril/stream.js": +/*!****************************************!*\ + !*** ./node_modules/mithril/stream.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = __webpack_require__(/*! ./stream/stream */ "./node_modules/mithril/stream/stream.js"); + +/***/ }), + +/***/ "./node_modules/mithril/stream/stream.js": +/*!***********************************************!*\ + !*** ./node_modules/mithril/stream/stream.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* eslint-disable */ +; + +(function () { + "use strict"; + /* eslint-enable */ + + Stream.SKIP = {}; + Stream.lift = lift; + Stream.scan = scan; + Stream.merge = merge; + Stream.combine = combine; + Stream.scanMerge = scanMerge; + Stream["fantasy-land/of"] = Stream; + var warnedHalt = false; + Object.defineProperty(Stream, "HALT", { + get: function get() { + warnedHalt || console.log("HALT is deprecated and has been renamed to SKIP"); + warnedHalt = true; + return Stream.SKIP; + } + }); + + function Stream(value) { + var dependentStreams = []; + var dependentFns = []; + + function stream(v) { + if (arguments.length && v !== Stream.SKIP) { + value = v; + + if (open(stream)) { + stream._changing(); + + stream._state = "active"; + dependentStreams.forEach(function (s, i) { + s(dependentFns[i](value)); + }); + } + } + + return value; + } + + stream.constructor = Stream; + stream._state = arguments.length && value !== Stream.SKIP ? "active" : "pending"; + stream._parents = []; + + stream._changing = function () { + if (open(stream)) stream._state = "changing"; + dependentStreams.forEach(function (s) { + s._changing(); + }); + }; + + stream._map = function (fn, ignoreInitial) { + var target = ignoreInitial ? Stream() : Stream(fn(value)); + + target._parents.push(stream); + + dependentStreams.push(target); + dependentFns.push(fn); + return target; + }; + + stream.map = function (fn) { + return stream._map(fn, stream._state !== "active"); + }; + + var end; + + function createEnd() { + end = Stream(); + end.map(function (value) { + if (value === true) { + stream._parents.forEach(function (p) { + p._unregisterChild(stream); + }); + + stream._state = "ended"; + stream._parents.length = dependentStreams.length = dependentFns.length = 0; + } + + return value; + }); + return end; + } + + stream.toJSON = function () { + return value != null && typeof value.toJSON === "function" ? value.toJSON() : value; + }; + + stream["fantasy-land/map"] = stream.map; + + stream["fantasy-land/ap"] = function (x) { + return combine(function (s1, s2) { + return s1()(s2()); + }, [x, stream]); + }; + + stream._unregisterChild = function (child) { + var childIndex = dependentStreams.indexOf(child); + + if (childIndex !== -1) { + dependentStreams.splice(childIndex, 1); + dependentFns.splice(childIndex, 1); + } + }; + + Object.defineProperty(stream, "end", { + get: function get() { + return end || createEnd(); + } + }); + return stream; + } + + function combine(fn, streams) { + var ready = streams.every(function (s) { + if (s.constructor !== Stream) throw new Error("Ensure that each item passed to stream.combine/stream.merge/lift is a stream"); + return s._state === "active"; + }); + var stream = ready ? Stream(fn.apply(null, streams.concat([streams]))) : Stream(); + var changed = []; + var mappers = streams.map(function (s) { + return s._map(function (value) { + changed.push(s); + + if (ready || streams.every(function (s) { + return s._state !== "pending"; + })) { + ready = true; + stream(fn.apply(null, streams.concat([changed]))); + changed = []; + } + + return value; + }, true); + }); + var endStream = stream.end.map(function (value) { + if (value === true) { + mappers.forEach(function (mapper) { + mapper.end(true); + }); + endStream.end(true); + } + + return undefined; + }); + return stream; + } + + function merge(streams) { + return combine(function () { + return streams.map(function (s) { + return s(); + }); + }, streams); + } + + function scan(fn, acc, origin) { + var stream = origin.map(function (v) { + var next = fn(acc, v); + if (next !== Stream.SKIP) acc = next; + return next; + }); + stream(acc); + return stream; + } + + function scanMerge(tuples, seed) { + var streams = tuples.map(function (tuple) { + return tuple[0]; + }); + var stream = combine(function () { + var changed = arguments[arguments.length - 1]; + streams.forEach(function (stream, i) { + if (changed.indexOf(stream) > -1) seed = tuples[i][1](seed, stream()); + }); + return seed; + }, streams); + stream(seed); + return stream; + } + + function lift() { + var fn = arguments[0]; + var streams = Array.prototype.slice.call(arguments, 1); + return merge(streams).map(function (streams) { + return fn.apply(undefined, streams); + }); + } + + function open(s) { + return s._state === "pending" || s._state === "active" || s._state === "changing"; + } + + if (true) module["exports"] = Stream;else {} +})(); + +/***/ }), + +/***/ "./node_modules/popper.js/dist/esm/popper.js": +/*!***************************************************!*\ + !*** ./node_modules/popper.js/dist/esm/popper.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* WEBPACK VAR INJECTION */(function(global) {/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.15.0 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; +var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; +var timeoutDuration = 0; + +for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { + if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { + timeoutDuration = 1; + break; + } +} + +function microtaskDebounce(fn) { + var called = false; + return function () { + if (called) { + return; + } + + called = true; + window.Promise.resolve().then(function () { + called = false; + fn(); + }); + }; +} + +function taskDebounce(fn) { + var scheduled = false; + return function () { + if (!scheduled) { + scheduled = true; + setTimeout(function () { + scheduled = false; + fn(); + }, timeoutDuration); + } + }; +} + +var supportsMicroTasks = isBrowser && window.Promise; +/** +* Create a debounced version of a method, that's asynchronously deferred +* but called in the minimum time possible. +* +* @method +* @memberof Popper.Utils +* @argument {Function} fn +* @returns {Function} +*/ + +var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; +/** + * Check if the given variable is a function + * @method + * @memberof Popper.Utils + * @argument {Any} functionToCheck - variable to check + * @returns {Boolean} answer to: is a function? + */ + +function isFunction(functionToCheck) { + var getType = {}; + return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; +} +/** + * Get CSS computed property of the given element + * @method + * @memberof Popper.Utils + * @argument {Eement} element + * @argument {String} property + */ + + +function getStyleComputedProperty(element, property) { + if (element.nodeType !== 1) { + return []; + } // NOTE: 1 DOM access here + + + var window = element.ownerDocument.defaultView; + var css = window.getComputedStyle(element, null); + return property ? css[property] : css; +} +/** + * Returns the parentNode or the host of the element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} parent + */ + + +function getParentNode(element) { + if (element.nodeName === 'HTML') { + return element; + } + + return element.parentNode || element.host; +} +/** + * Returns the scrolling parent of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} scroll parent + */ + + +function getScrollParent(element) { + // Return body, `getScroll` will take care to get the correct `scrollTop` from it + if (!element) { + return document.body; + } + + switch (element.nodeName) { + case 'HTML': + case 'BODY': + return element.ownerDocument.body; + + case '#document': + return element.body; + } // Firefox want us to check `-x` and `-y` variations as well + + + var _getStyleComputedProp = getStyleComputedProperty(element), + overflow = _getStyleComputedProp.overflow, + overflowX = _getStyleComputedProp.overflowX, + overflowY = _getStyleComputedProp.overflowY; + + if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { + return element; + } + + return getScrollParent(getParentNode(element)); +} + +var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode); +var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent); +/** + * Determines if the browser is Internet Explorer + * @method + * @memberof Popper.Utils + * @param {Number} version to check + * @returns {Boolean} isIE + */ + +function isIE(version) { + if (version === 11) { + return isIE11; + } + + if (version === 10) { + return isIE10; + } + + return isIE11 || isIE10; +} +/** + * Returns the offset parent of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} offset parent + */ + + +function getOffsetParent(element) { + if (!element) { + return document.documentElement; + } + + var noOffsetParent = isIE(10) ? document.body : null; // NOTE: 1 DOM access here + + var offsetParent = element.offsetParent || null; // Skip hidden elements which don't have an offsetParent + + while (offsetParent === noOffsetParent && element.nextElementSibling) { + offsetParent = (element = element.nextElementSibling).offsetParent; + } + + var nodeName = offsetParent && offsetParent.nodeName; + + if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { + return element ? element.ownerDocument.documentElement : document.documentElement; + } // .offsetParent will return the closest TH, TD or TABLE in case + // no offsetParent is present, I hate this job... + + + if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { + return getOffsetParent(offsetParent); + } + + return offsetParent; +} + +function isOffsetContainer(element) { + var nodeName = element.nodeName; + + if (nodeName === 'BODY') { + return false; + } + + return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; +} +/** + * Finds the root node (document, shadowDOM root) of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} node + * @returns {Element} root node + */ + + +function getRoot(node) { + if (node.parentNode !== null) { + return getRoot(node.parentNode); + } + + return node; +} +/** + * Finds the offset parent common to the two provided nodes + * @method + * @memberof Popper.Utils + * @argument {Element} element1 + * @argument {Element} element2 + * @returns {Element} common offset parent + */ + + +function findCommonOffsetParent(element1, element2) { + // This check is needed to avoid errors in case one of the elements isn't defined for any reason + if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { + return document.documentElement; + } // Here we make sure to give as "start" the element that comes first in the DOM + + + var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; + var start = order ? element1 : element2; + var end = order ? element2 : element1; // Get common ancestor container + + var range = document.createRange(); + range.setStart(start, 0); + range.setEnd(end, 0); + var commonAncestorContainer = range.commonAncestorContainer; // Both nodes are inside #document + + if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { + if (isOffsetContainer(commonAncestorContainer)) { + return commonAncestorContainer; + } + + return getOffsetParent(commonAncestorContainer); + } // one of the nodes is inside shadowDOM, find which one + + + var element1root = getRoot(element1); + + if (element1root.host) { + return findCommonOffsetParent(element1root.host, element2); + } else { + return findCommonOffsetParent(element1, getRoot(element2).host); + } +} +/** + * Gets the scroll value of the given element in the given side (top and left) + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @argument {String} side `top` or `left` + * @returns {number} amount of scrolled pixels + */ + + +function getScroll(element) { + var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; + var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; + var nodeName = element.nodeName; + + if (nodeName === 'BODY' || nodeName === 'HTML') { + var html = element.ownerDocument.documentElement; + var scrollingElement = element.ownerDocument.scrollingElement || html; + return scrollingElement[upperSide]; + } + + return element[upperSide]; +} +/* + * Sum or subtract the element scroll values (left and top) from a given rect object + * @method + * @memberof Popper.Utils + * @param {Object} rect - Rect object you want to change + * @param {HTMLElement} element - The element from the function reads the scroll values + * @param {Boolean} subtract - set to true if you want to subtract the scroll values + * @return {Object} rect - The modifier rect object + */ + + +function includeScroll(rect, element) { + var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var scrollTop = getScroll(element, 'top'); + var scrollLeft = getScroll(element, 'left'); + var modifier = subtract ? -1 : 1; + rect.top += scrollTop * modifier; + rect.bottom += scrollTop * modifier; + rect.left += scrollLeft * modifier; + rect.right += scrollLeft * modifier; + return rect; +} +/* + * Helper to detect borders of a given element + * @method + * @memberof Popper.Utils + * @param {CSSStyleDeclaration} styles + * Result of `getStyleComputedProperty` on the given element + * @param {String} axis - `x` or `y` + * @return {number} borders - The borders size of the given axis + */ + + +function getBordersSize(styles, axis) { + var sideA = axis === 'x' ? 'Left' : 'Top'; + var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; + return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10); +} + +function getSize(axis, body, html, computedStyle) { + return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0); +} + +function getWindowSizes(document) { + var body = document.body; + var html = document.documentElement; + var computedStyle = isIE(10) && getComputedStyle(html); + return { + height: getSize('Height', body, html, computedStyle), + width: getSize('Width', body, html, computedStyle) + }; +} + +var classCallCheck = function classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + +var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); + +var defineProperty = function defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +}; + +var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; +}; +/** + * Given element offsets, generate an output similar to getBoundingClientRect + * @method + * @memberof Popper.Utils + * @argument {Object} offsets + * @returns {Object} ClientRect like output + */ + + +function getClientRect(offsets) { + return _extends({}, offsets, { + right: offsets.left + offsets.width, + bottom: offsets.top + offsets.height + }); +} +/** + * Get bounding client rect of given element + * @method + * @memberof Popper.Utils + * @param {HTMLElement} element + * @return {Object} client rect + */ + + +function getBoundingClientRect(element) { + var rect = {}; // IE10 10 FIX: Please, don't ask, the element isn't + // considered in DOM in some circumstances... + // This isn't reproducible in IE10 compatibility mode of IE11 + + try { + if (isIE(10)) { + rect = element.getBoundingClientRect(); + var scrollTop = getScroll(element, 'top'); + var scrollLeft = getScroll(element, 'left'); + rect.top += scrollTop; + rect.left += scrollLeft; + rect.bottom += scrollTop; + rect.right += scrollLeft; + } else { + rect = element.getBoundingClientRect(); + } + } catch (e) {} + + var result = { + left: rect.left, + top: rect.top, + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; // subtract scrollbar size from sizes + + var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {}; + var width = sizes.width || element.clientWidth || result.right - result.left; + var height = sizes.height || element.clientHeight || result.bottom - result.top; + var horizScrollbar = element.offsetWidth - width; + var vertScrollbar = element.offsetHeight - height; // if an hypothetical scrollbar is detected, we must be sure it's not a `border` + // we make this check conditional for performance reasons + + if (horizScrollbar || vertScrollbar) { + var styles = getStyleComputedProperty(element); + horizScrollbar -= getBordersSize(styles, 'x'); + vertScrollbar -= getBordersSize(styles, 'y'); + result.width -= horizScrollbar; + result.height -= vertScrollbar; + } + + return getClientRect(result); +} + +function getOffsetRectRelativeToArbitraryNode(children, parent) { + var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var isIE10 = isIE(10); + var isHTML = parent.nodeName === 'HTML'; + var childrenRect = getBoundingClientRect(children); + var parentRect = getBoundingClientRect(parent); + var scrollParent = getScrollParent(children); + var styles = getStyleComputedProperty(parent); + var borderTopWidth = parseFloat(styles.borderTopWidth, 10); + var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); // In cases where the parent is fixed, we must ignore negative scroll in offset calc + + if (fixedPosition && isHTML) { + parentRect.top = Math.max(parentRect.top, 0); + parentRect.left = Math.max(parentRect.left, 0); + } + + var offsets = getClientRect({ + top: childrenRect.top - parentRect.top - borderTopWidth, + left: childrenRect.left - parentRect.left - borderLeftWidth, + width: childrenRect.width, + height: childrenRect.height + }); + offsets.marginTop = 0; + offsets.marginLeft = 0; // Subtract margins of documentElement in case it's being used as parent + // we do this only on HTML because it's the only element that behaves + // differently when margins are applied to it. The margins are included in + // the box of the documentElement, in the other cases not. + + if (!isIE10 && isHTML) { + var marginTop = parseFloat(styles.marginTop, 10); + var marginLeft = parseFloat(styles.marginLeft, 10); + offsets.top -= borderTopWidth - marginTop; + offsets.bottom -= borderTopWidth - marginTop; + offsets.left -= borderLeftWidth - marginLeft; + offsets.right -= borderLeftWidth - marginLeft; // Attach marginTop and marginLeft because in some circumstances we may need them + + offsets.marginTop = marginTop; + offsets.marginLeft = marginLeft; + } + + if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { + offsets = includeScroll(offsets, parent); + } + + return offsets; +} + +function getViewportOffsetRectRelativeToArtbitraryNode(element) { + var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var html = element.ownerDocument.documentElement; + var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); + var width = Math.max(html.clientWidth, window.innerWidth || 0); + var height = Math.max(html.clientHeight, window.innerHeight || 0); + var scrollTop = !excludeScroll ? getScroll(html) : 0; + var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; + var offset = { + top: scrollTop - relativeOffset.top + relativeOffset.marginTop, + left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, + width: width, + height: height + }; + return getClientRect(offset); +} +/** + * Check if the given element is fixed or is inside a fixed parent + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @argument {Element} customContainer + * @returns {Boolean} answer to "isFixed?" + */ + + +function isFixed(element) { + var nodeName = element.nodeName; + + if (nodeName === 'BODY' || nodeName === 'HTML') { + return false; + } + + if (getStyleComputedProperty(element, 'position') === 'fixed') { + return true; + } + + var parentNode = getParentNode(element); + + if (!parentNode) { + return false; + } + + return isFixed(parentNode); +} +/** + * Finds the first parent of an element that has a transformed property defined + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} first transformed parent or documentElement + */ + + +function getFixedPositionOffsetParent(element) { + // This check is needed to avoid errors in case one of the elements isn't defined for any reason + if (!element || !element.parentElement || isIE()) { + return document.documentElement; + } + + var el = element.parentElement; + + while (el && getStyleComputedProperty(el, 'transform') === 'none') { + el = el.parentElement; + } + + return el || document.documentElement; +} +/** + * Computed the boundaries limits and return them + * @method + * @memberof Popper.Utils + * @param {HTMLElement} popper + * @param {HTMLElement} reference + * @param {number} padding + * @param {HTMLElement} boundariesElement - Element used to define the boundaries + * @param {Boolean} fixedPosition - Is in fixed position mode + * @returns {Object} Coordinates of the boundaries + */ + + +function getBoundaries(popper, reference, padding, boundariesElement) { + var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; // NOTE: 1 DOM access here + + var boundaries = { + top: 0, + left: 0 + }; + var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); // Handle viewport case + + if (boundariesElement === 'viewport') { + boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); + } else { + // Handle other cases based on DOM element used as boundaries + var boundariesNode = void 0; + + if (boundariesElement === 'scrollParent') { + boundariesNode = getScrollParent(getParentNode(reference)); + + if (boundariesNode.nodeName === 'BODY') { + boundariesNode = popper.ownerDocument.documentElement; + } + } else if (boundariesElement === 'window') { + boundariesNode = popper.ownerDocument.documentElement; + } else { + boundariesNode = boundariesElement; + } + + var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); // In case of HTML, we need a different computation + + if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { + var _getWindowSizes = getWindowSizes(popper.ownerDocument), + height = _getWindowSizes.height, + width = _getWindowSizes.width; + + boundaries.top += offsets.top - offsets.marginTop; + boundaries.bottom = height + offsets.top; + boundaries.left += offsets.left - offsets.marginLeft; + boundaries.right = width + offsets.left; + } else { + // for all the other DOM elements, this one is good + boundaries = offsets; + } + } // Add paddings + + + padding = padding || 0; + var isPaddingNumber = typeof padding === 'number'; + boundaries.left += isPaddingNumber ? padding : padding.left || 0; + boundaries.top += isPaddingNumber ? padding : padding.top || 0; + boundaries.right -= isPaddingNumber ? padding : padding.right || 0; + boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; + return boundaries; +} + +function getArea(_ref) { + var width = _ref.width, + height = _ref.height; + return width * height; +} +/** + * Utility used to transform the `auto` placement to the placement with more + * available space. + * @method + * @memberof Popper.Utils + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + + +function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { + var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; + + if (placement.indexOf('auto') === -1) { + return placement; + } + + var boundaries = getBoundaries(popper, reference, padding, boundariesElement); + var rects = { + top: { + width: boundaries.width, + height: refRect.top - boundaries.top + }, + right: { + width: boundaries.right - refRect.right, + height: boundaries.height + }, + bottom: { + width: boundaries.width, + height: boundaries.bottom - refRect.bottom + }, + left: { + width: refRect.left - boundaries.left, + height: boundaries.height + } + }; + var sortedAreas = Object.keys(rects).map(function (key) { + return _extends({ + key: key + }, rects[key], { + area: getArea(rects[key]) + }); + }).sort(function (a, b) { + return b.area - a.area; + }); + var filteredAreas = sortedAreas.filter(function (_ref2) { + var width = _ref2.width, + height = _ref2.height; + return width >= popper.clientWidth && height >= popper.clientHeight; + }); + var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; + var variation = placement.split('-')[1]; + return computedPlacement + (variation ? '-' + variation : ''); +} +/** + * Get offsets to the reference element + * @method + * @memberof Popper.Utils + * @param {Object} state + * @param {Element} popper - the popper element + * @param {Element} reference - the reference element (the popper will be relative to this) + * @param {Element} fixedPosition - is in fixed position mode + * @returns {Object} An object containing the offsets which will be applied to the popper + */ + + +function getReferenceOffsets(state, popper, reference) { + var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); +} +/** + * Get the outer sizes of the given element (offset size + margins) + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Object} object containing width and height properties + */ + + +function getOuterSizes(element) { + var window = element.ownerDocument.defaultView; + var styles = window.getComputedStyle(element); + var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); + var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); + var result = { + width: element.offsetWidth + y, + height: element.offsetHeight + x + }; + return result; +} +/** + * Get the opposite placement of the given one + * @method + * @memberof Popper.Utils + * @argument {String} placement + * @returns {String} flipped placement + */ + + +function getOppositePlacement(placement) { + var hash = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' + }; + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash[matched]; + }); +} +/** + * Get offsets to the popper + * @method + * @memberof Popper.Utils + * @param {Object} position - CSS position the Popper will get applied + * @param {HTMLElement} popper - the popper element + * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) + * @param {String} placement - one of the valid placement options + * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper + */ + + +function getPopperOffsets(popper, referenceOffsets, placement) { + placement = placement.split('-')[0]; // Get popper node sizes + + var popperRect = getOuterSizes(popper); // Add position, width and height to our offsets object + + var popperOffsets = { + width: popperRect.width, + height: popperRect.height + }; // depending by the popper placement we have to compute its offsets slightly differently + + var isHoriz = ['right', 'left'].indexOf(placement) !== -1; + var mainSide = isHoriz ? 'top' : 'left'; + var secondarySide = isHoriz ? 'left' : 'top'; + var measurement = isHoriz ? 'height' : 'width'; + var secondaryMeasurement = !isHoriz ? 'height' : 'width'; + popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; + + if (placement === secondarySide) { + popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; + } else { + popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; + } + + return popperOffsets; +} +/** + * Mimics the `find` method of Array + * @method + * @memberof Popper.Utils + * @argument {Array} arr + * @argument prop + * @argument value + * @returns index or -1 + */ + + +function find(arr, check) { + // use native find if supported + if (Array.prototype.find) { + return arr.find(check); + } // use `filter` to obtain the same behavior of `find` + + + return arr.filter(check)[0]; +} +/** + * Return the index of the matching object + * @method + * @memberof Popper.Utils + * @argument {Array} arr + * @argument prop + * @argument value + * @returns index or -1 + */ + + +function findIndex(arr, prop, value) { + // use native findIndex if supported + if (Array.prototype.findIndex) { + return arr.findIndex(function (cur) { + return cur[prop] === value; + }); + } // use `find` + `indexOf` if `findIndex` isn't supported + + + var match = find(arr, function (obj) { + return obj[prop] === value; + }); + return arr.indexOf(match); +} +/** + * Loop trough the list of modifiers and run them in order, + * each of them will then edit the data object. + * @method + * @memberof Popper.Utils + * @param {dataObject} data + * @param {Array} modifiers + * @param {String} ends - Optional modifier name used as stopper + * @returns {dataObject} + */ + + +function runModifiers(modifiers, data, ends) { + var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); + modifiersToRun.forEach(function (modifier) { + if (modifier['function']) { + // eslint-disable-line dot-notation + console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); + } + + var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation + + if (modifier.enabled && isFunction(fn)) { + // Add properties to offsets to make them a complete clientRect object + // we do this before each modifier to make sure the previous one doesn't + // mess with these values + data.offsets.popper = getClientRect(data.offsets.popper); + data.offsets.reference = getClientRect(data.offsets.reference); + data = fn(data, modifier); + } + }); + return data; +} +/** + * Updates the position of the popper, computing the new offsets and applying + * the new style.
+ * Prefer `scheduleUpdate` over `update` because of performance reasons. + * @method + * @memberof Popper + */ + + +function update() { + // if popper is destroyed, don't perform any further update + if (this.state.isDestroyed) { + return; + } + + var data = { + instance: this, + styles: {}, + arrowStyles: {}, + attributes: {}, + flipped: false, + offsets: {} + }; // compute reference element offsets + + data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + + data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); // store the computed placement inside `originalPlacement` + + data.originalPlacement = data.placement; + data.positionFixed = this.options.positionFixed; // compute the popper offsets + + data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); + data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; // run the modifiers + + data = runModifiers(this.modifiers, data); // the first `update` will call `onCreate` callback + // the other ones will call `onUpdate` callback + + if (!this.state.isCreated) { + this.state.isCreated = true; + this.options.onCreate(data); + } else { + this.options.onUpdate(data); + } +} +/** + * Helper used to know if the given modifier is enabled. + * @method + * @memberof Popper.Utils + * @returns {Boolean} + */ + + +function isModifierEnabled(modifiers, modifierName) { + return modifiers.some(function (_ref) { + var name = _ref.name, + enabled = _ref.enabled; + return enabled && name === modifierName; + }); +} +/** + * Get the prefixed supported property name + * @method + * @memberof Popper.Utils + * @argument {String} property (camelCase) + * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) + */ + + +function getSupportedPropertyName(property) { + var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; + var upperProp = property.charAt(0).toUpperCase() + property.slice(1); + + for (var i = 0; i < prefixes.length; i++) { + var prefix = prefixes[i]; + var toCheck = prefix ? '' + prefix + upperProp : property; + + if (typeof document.body.style[toCheck] !== 'undefined') { + return toCheck; + } + } + + return null; +} +/** + * Destroys the popper. + * @method + * @memberof Popper + */ + + +function destroy() { + this.state.isDestroyed = true; // touch DOM only if `applyStyle` modifier is enabled + + if (isModifierEnabled(this.modifiers, 'applyStyle')) { + this.popper.removeAttribute('x-placement'); + this.popper.style.position = ''; + this.popper.style.top = ''; + this.popper.style.left = ''; + this.popper.style.right = ''; + this.popper.style.bottom = ''; + this.popper.style.willChange = ''; + this.popper.style[getSupportedPropertyName('transform')] = ''; + } + + this.disableEventListeners(); // remove the popper if user explicity asked for the deletion on destroy + // do not use `remove` because IE11 doesn't support it + + if (this.options.removeOnDestroy) { + this.popper.parentNode.removeChild(this.popper); + } + + return this; +} +/** + * Get the window associated with the element + * @argument {Element} element + * @returns {Window} + */ + + +function getWindow(element) { + var ownerDocument = element.ownerDocument; + return ownerDocument ? ownerDocument.defaultView : window; +} + +function attachToScrollParents(scrollParent, event, callback, scrollParents) { + var isBody = scrollParent.nodeName === 'BODY'; + var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; + target.addEventListener(event, callback, { + passive: true + }); + + if (!isBody) { + attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); + } + + scrollParents.push(target); +} +/** + * Setup needed event listeners used to update the popper position + * @method + * @memberof Popper.Utils + * @private + */ + + +function setupEventListeners(reference, options, state, updateBound) { + // Resize event listener on window + state.updateBound = updateBound; + getWindow(reference).addEventListener('resize', state.updateBound, { + passive: true + }); // Scroll event listener on scroll parents + + var scrollElement = getScrollParent(reference); + attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); + state.scrollElement = scrollElement; + state.eventsEnabled = true; + return state; +} +/** + * It will add resize/scroll events and start recalculating + * position of the popper element when they are triggered. + * @method + * @memberof Popper + */ + + +function enableEventListeners() { + if (!this.state.eventsEnabled) { + this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); + } +} +/** + * Remove event listeners used to update the popper position + * @method + * @memberof Popper.Utils + * @private + */ + + +function removeEventListeners(reference, state) { + // Remove resize event listener on window + getWindow(reference).removeEventListener('resize', state.updateBound); // Remove scroll event listener on scroll parents + + state.scrollParents.forEach(function (target) { + target.removeEventListener('scroll', state.updateBound); + }); // Reset state + + state.updateBound = null; + state.scrollParents = []; + state.scrollElement = null; + state.eventsEnabled = false; + return state; +} +/** + * It will remove resize/scroll events and won't recalculate popper position + * when they are triggered. It also won't trigger `onUpdate` callback anymore, + * unless you call `update` method manually. + * @method + * @memberof Popper + */ + + +function disableEventListeners() { + if (this.state.eventsEnabled) { + cancelAnimationFrame(this.scheduleUpdate); + this.state = removeEventListeners(this.reference, this.state); + } +} +/** + * Tells if a given input is a number + * @method + * @memberof Popper.Utils + * @param {*} input to check + * @return {Boolean} + */ + + +function isNumeric(n) { + return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); +} +/** + * Set the style to the given popper + * @method + * @memberof Popper.Utils + * @argument {Element} element - Element to apply the style to + * @argument {Object} styles + * Object with a list of properties and values which will be applied to the element + */ + + +function setStyles(element, styles) { + Object.keys(styles).forEach(function (prop) { + var unit = ''; // add unit if the value is numeric and is one of the following + + if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { + unit = 'px'; + } + + element.style[prop] = styles[prop] + unit; + }); +} +/** + * Set the attributes to the given popper + * @method + * @memberof Popper.Utils + * @argument {Element} element - Element to apply the attributes to + * @argument {Object} styles + * Object with a list of properties and values which will be applied to the element + */ + + +function setAttributes(element, attributes) { + Object.keys(attributes).forEach(function (prop) { + var value = attributes[prop]; + + if (value !== false) { + element.setAttribute(prop, attributes[prop]); + } else { + element.removeAttribute(prop); + } + }); +} +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} data.styles - List of style properties - values to apply to popper element + * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The same data object + */ + + +function applyStyle(data) { + // any property present in `data.styles` will be applied to the popper, + // in this way we can make the 3rd party modifiers add custom styles to it + // Be aware, modifiers could override the properties defined in the previous + // lines of this modifier! + setStyles(data.instance.popper, data.styles); // any property present in `data.attributes` will be applied to the popper, + // they will be set as HTML attributes of the element + + setAttributes(data.instance.popper, data.attributes); // if arrowElement is defined and arrowStyles has some properties + + if (data.arrowElement && Object.keys(data.arrowStyles).length) { + setStyles(data.arrowElement, data.arrowStyles); + } + + return data; +} +/** + * Set the x-placement attribute before everything else because it could be used + * to add margins to the popper margins needs to be calculated to get the + * correct popper offsets. + * @method + * @memberof Popper.modifiers + * @param {HTMLElement} reference - The reference element used to position the popper + * @param {HTMLElement} popper - The HTML element used as popper + * @param {Object} options - Popper.js options + */ + + +function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { + // compute reference element offsets + var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + + var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); + popper.setAttribute('x-placement', placement); // Apply `position` to popper before anything else because + // without the position applied we can't guarantee correct computations + + setStyles(popper, { + position: options.positionFixed ? 'fixed' : 'absolute' + }); + return options; +} +/** + * @function + * @memberof Popper.Utils + * @argument {Object} data - The data object generated by `update` method + * @argument {Boolean} shouldRound - If the offsets should be rounded at all + * @returns {Object} The popper's position offsets rounded + * + * The tale of pixel-perfect positioning. It's still not 100% perfect, but as + * good as it can be within reason. + * Discussion here: https://github.com/FezVrasta/popper.js/pull/715 + * + * Low DPI screens cause a popper to be blurry if not using full pixels (Safari + * as well on High DPI screens). + * + * Firefox prefers no rounding for positioning and does not have blurriness on + * high DPI screens. + * + * Only horizontal placement and left/right values need to be considered. + */ + + +function getRoundedOffsets(data, shouldRound) { + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + var round = Math.round, + floor = Math.floor; + + var noRound = function noRound(v) { + return v; + }; + + var referenceWidth = round(reference.width); + var popperWidth = round(popper.width); + var isVertical = ['left', 'right'].indexOf(data.placement) !== -1; + var isVariation = data.placement.indexOf('-') !== -1; + var sameWidthParity = referenceWidth % 2 === popperWidth % 2; + var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; + var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; + var verticalToInteger = !shouldRound ? noRound : round; + return { + left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), + top: verticalToInteger(popper.top), + bottom: verticalToInteger(popper.bottom), + right: horizontalToInteger(popper.right) + }; +} + +var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent); +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + +function computeStyle(data, options) { + var x = options.x, + y = options.y; + var popper = data.offsets.popper; // Remove this legacy support in Popper.js v2 + + var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { + return modifier.name === 'applyStyle'; + }).gpuAcceleration; + + if (legacyGpuAccelerationOption !== undefined) { + console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); + } + + var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; + var offsetParent = getOffsetParent(data.instance.popper); + var offsetParentRect = getBoundingClientRect(offsetParent); // Styles + + var styles = { + position: popper.position + }; + var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); + var sideA = x === 'bottom' ? 'top' : 'bottom'; + var sideB = y === 'right' ? 'left' : 'right'; // if gpuAcceleration is set to `true` and transform is supported, + // we use `translate3d` to apply the position to the popper we + // automatically use the supported prefixed version if needed + + var prefixedProperty = getSupportedPropertyName('transform'); // now, let's make a step back and look at this code closely (wtf?) + // If the content of the popper grows once it's been positioned, it + // may happen that the popper gets misplaced because of the new content + // overflowing its reference element + // To avoid this problem, we provide two options (x and y), which allow + // the consumer to define the offset origin. + // If we position a popper on top of a reference element, we can set + // `x` to `top` to make the popper grow towards its top instead of + // its bottom. + + var left = void 0, + top = void 0; + + if (sideA === 'bottom') { + // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar) + // and not the bottom of the html element + if (offsetParent.nodeName === 'HTML') { + top = -offsetParent.clientHeight + offsets.bottom; + } else { + top = -offsetParentRect.height + offsets.bottom; + } + } else { + top = offsets.top; + } + + if (sideB === 'right') { + if (offsetParent.nodeName === 'HTML') { + left = -offsetParent.clientWidth + offsets.right; + } else { + left = -offsetParentRect.width + offsets.right; + } + } else { + left = offsets.left; + } + + if (gpuAcceleration && prefixedProperty) { + styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; + styles[sideA] = 0; + styles[sideB] = 0; + styles.willChange = 'transform'; + } else { + // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties + var invertTop = sideA === 'bottom' ? -1 : 1; + var invertLeft = sideB === 'right' ? -1 : 1; + styles[sideA] = top * invertTop; + styles[sideB] = left * invertLeft; + styles.willChange = sideA + ', ' + sideB; + } // Attributes + + + var attributes = { + 'x-placement': data.placement + }; // Update `data` attributes, styles and arrowStyles + + data.attributes = _extends({}, attributes, data.attributes); + data.styles = _extends({}, styles, data.styles); + data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles); + return data; +} +/** + * Helper used to know if the given modifier depends from another one.
+ * It checks if the needed modifier is listed and enabled. + * @method + * @memberof Popper.Utils + * @param {Array} modifiers - list of modifiers + * @param {String} requestingName - name of requesting modifier + * @param {String} requestedName - name of requested modifier + * @returns {Boolean} + */ + + +function isModifierRequired(modifiers, requestingName, requestedName) { + var requesting = find(modifiers, function (_ref) { + var name = _ref.name; + return name === requestingName; + }); + var isRequired = !!requesting && modifiers.some(function (modifier) { + return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; + }); + + if (!isRequired) { + var _requesting = '`' + requestingName + '`'; + + var requested = '`' + requestedName + '`'; + console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); + } + + return isRequired; +} +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + + +function arrow(data, options) { + var _data$offsets$arrow; // arrow depends on keepTogether in order to work + + + if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { + return data; + } + + var arrowElement = options.element; // if arrowElement is a string, suppose it's a CSS selector + + if (typeof arrowElement === 'string') { + arrowElement = data.instance.popper.querySelector(arrowElement); // if arrowElement is not found, don't run the modifier + + if (!arrowElement) { + return data; + } + } else { + // if the arrowElement isn't a query selector we must check that the + // provided DOM node is child of its popper node + if (!data.instance.popper.contains(arrowElement)) { + console.warn('WARNING: `arrow.element` must be child of its popper element!'); + return data; + } + } + + var placement = data.placement.split('-')[0]; + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + var isVertical = ['left', 'right'].indexOf(placement) !== -1; + var len = isVertical ? 'height' : 'width'; + var sideCapitalized = isVertical ? 'Top' : 'Left'; + var side = sideCapitalized.toLowerCase(); + var altSide = isVertical ? 'left' : 'top'; + var opSide = isVertical ? 'bottom' : 'right'; + var arrowElementSize = getOuterSizes(arrowElement)[len]; // + // extends keepTogether behavior making sure the popper and its + // reference have enough pixels in conjunction + // + // top/left side + + if (reference[opSide] - arrowElementSize < popper[side]) { + data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); + } // bottom/right side + + + if (reference[side] + arrowElementSize > popper[opSide]) { + data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; + } + + data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper + + var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets + // take popper margin in account because we don't have this info available + + var css = getStyleComputedProperty(data.instance.popper); + var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10); + var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10); + var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper + + sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); + data.arrowElement = arrowElement; + data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); + return data; +} +/** + * Get the opposite placement variation of the given one + * @method + * @memberof Popper.Utils + * @argument {String} placement variation + * @returns {String} flipped placement variation + */ + + +function getOppositeVariation(variation) { + if (variation === 'end') { + return 'start'; + } else if (variation === 'start') { + return 'end'; + } + + return variation; +} +/** + * List of accepted placements to use as values of the `placement` option.
+ * Valid placements are: + * - `auto` + * - `top` + * - `right` + * - `bottom` + * - `left` + * + * Each placement can have a variation from this list: + * - `-start` + * - `-end` + * + * Variations are interpreted easily if you think of them as the left to right + * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` + * is right.
+ * Vertically (`left` and `right`), `start` is top and `end` is bottom. + * + * Some valid examples are: + * - `top-end` (on top of reference, right aligned) + * - `right-start` (on right of reference, top aligned) + * - `bottom` (on bottom, centered) + * - `auto-end` (on the side with more space available, alignment depends by placement) + * + * @static + * @type {Array} + * @enum {String} + * @readonly + * @method placements + * @memberof Popper + */ + + +var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; // Get rid of `auto` `auto-start` and `auto-end` + +var validPlacements = placements.slice(3); +/** + * Given an initial placement, returns all the subsequent placements + * clockwise (or counter-clockwise). + * + * @method + * @memberof Popper.Utils + * @argument {String} placement - A valid placement (it accepts variations) + * @argument {Boolean} counter - Set to true to walk the placements counterclockwise + * @returns {Array} placements including their variations + */ + +function clockwise(placement) { + var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var index = validPlacements.indexOf(placement); + var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); + return counter ? arr.reverse() : arr; +} + +var BEHAVIORS = { + FLIP: 'flip', + CLOCKWISE: 'clockwise', + COUNTERCLOCKWISE: 'counterclockwise' +}; +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + +function flip(data, options) { + // if `inner` modifier is enabled, we can't use the `flip` modifier + if (isModifierEnabled(data.instance.modifiers, 'inner')) { + return data; + } + + if (data.flipped && data.placement === data.originalPlacement) { + // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides + return data; + } + + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); + var placement = data.placement.split('-')[0]; + var placementOpposite = getOppositePlacement(placement); + var variation = data.placement.split('-')[1] || ''; + var flipOrder = []; + + switch (options.behavior) { + case BEHAVIORS.FLIP: + flipOrder = [placement, placementOpposite]; + break; + + case BEHAVIORS.CLOCKWISE: + flipOrder = clockwise(placement); + break; + + case BEHAVIORS.COUNTERCLOCKWISE: + flipOrder = clockwise(placement, true); + break; + + default: + flipOrder = options.behavior; + } + + flipOrder.forEach(function (step, index) { + if (placement !== step || flipOrder.length === index + 1) { + return data; + } + + placement = data.placement.split('-')[0]; + placementOpposite = getOppositePlacement(placement); + var popperOffsets = data.offsets.popper; + var refOffsets = data.offsets.reference; // using floor because the reference offsets may contain decimals we are not going to consider here + + var floor = Math.floor; + var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); + var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); + var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); + var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); + var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); + var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; // flip the variation if required + + var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; // flips variation if reference element overflows boundaries + + var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); // flips variation if popper content overflows boundaries + + var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop); + var flippedVariation = flippedVariationByRef || flippedVariationByContent; + + if (overlapsRef || overflowsBoundaries || flippedVariation) { + // this boolean to detect any flip loop + data.flipped = true; + + if (overlapsRef || overflowsBoundaries) { + placement = flipOrder[index + 1]; + } + + if (flippedVariation) { + variation = getOppositeVariation(variation); + } + + data.placement = placement + (variation ? '-' + variation : ''); // this object contains `position`, we want to preserve it along with + // any additional property we may add in the future + + data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); + data = runModifiers(data.instance.modifiers, data, 'flip'); + } + }); + return data; +} +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + + +function keepTogether(data) { + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + var placement = data.placement.split('-')[0]; + var floor = Math.floor; + var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; + var side = isVertical ? 'right' : 'bottom'; + var opSide = isVertical ? 'left' : 'top'; + var measurement = isVertical ? 'width' : 'height'; + + if (popper[side] < floor(reference[opSide])) { + data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; + } + + if (popper[opSide] > floor(reference[side])) { + data.offsets.popper[opSide] = floor(reference[side]); + } + + return data; +} +/** + * Converts a string containing value + unit into a px value number + * @function + * @memberof {modifiers~offset} + * @private + * @argument {String} str - Value + unit string + * @argument {String} measurement - `height` or `width` + * @argument {Object} popperOffsets + * @argument {Object} referenceOffsets + * @returns {Number|String} + * Value in pixels, or original string if no values were extracted + */ + + +function toValue(str, measurement, popperOffsets, referenceOffsets) { + // separate value from unit + var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); + var value = +split[1]; + var unit = split[2]; // If it's not a number it's an operator, I guess + + if (!value) { + return str; + } + + if (unit.indexOf('%') === 0) { + var element = void 0; + + switch (unit) { + case '%p': + element = popperOffsets; + break; + + case '%': + case '%r': + default: + element = referenceOffsets; + } + + var rect = getClientRect(element); + return rect[measurement] / 100 * value; + } else if (unit === 'vh' || unit === 'vw') { + // if is a vh or vw, we calculate the size based on the viewport + var size = void 0; + + if (unit === 'vh') { + size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); + } else { + size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); + } + + return size / 100 * value; + } else { + // if is an explicit pixel unit, we get rid of the unit and keep the value + // if is an implicit unit, it's px, and we return just the value + return value; + } +} +/** + * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. + * @function + * @memberof {modifiers~offset} + * @private + * @argument {String} offset + * @argument {Object} popperOffsets + * @argument {Object} referenceOffsets + * @argument {String} basePlacement + * @returns {Array} a two cells array with x and y offsets in numbers + */ + + +function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { + var offsets = [0, 0]; // Use height if placement is left or right and index is 0 otherwise use width + // in this way the first offset will use an axis and the second one + // will use the other one + + var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; // Split the offset string to obtain a list of values and operands + // The regex addresses values with the plus or minus sign in front (+10, -20, etc) + + var fragments = offset.split(/(\+|\-)/).map(function (frag) { + return frag.trim(); + }); // Detect if the offset string contains a pair of values or a single one + // they could be separated by comma or space + + var divider = fragments.indexOf(find(fragments, function (frag) { + return frag.search(/,|\s/) !== -1; + })); + + if (fragments[divider] && fragments[divider].indexOf(',') === -1) { + console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); + } // If divider is found, we divide the list of values and operands to divide + // them by ofset X and Y. + + + var splitRegex = /\s*,\s*|\s+/; + var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; // Convert the values with units to absolute pixels to allow our computations + + ops = ops.map(function (op, index) { + // Most of the units rely on the orientation of the popper + var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; + var mergeWithPrevious = false; + return op // This aggregates any `+` or `-` sign that aren't considered operators + // e.g.: 10 + +5 => [10, +, +5] + .reduce(function (a, b) { + if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { + a[a.length - 1] = b; + mergeWithPrevious = true; + return a; + } else if (mergeWithPrevious) { + a[a.length - 1] += b; + mergeWithPrevious = false; + return a; + } else { + return a.concat(b); + } + }, []) // Here we convert the string values into number values (in px) + .map(function (str) { + return toValue(str, measurement, popperOffsets, referenceOffsets); + }); + }); // Loop trough the offsets arrays and execute the operations + + ops.forEach(function (op, index) { + op.forEach(function (frag, index2) { + if (isNumeric(frag)) { + offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); + } + }); + }); + return offsets; +} +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @argument {Number|String} options.offset=0 + * The offset value as described in the modifier description + * @returns {Object} The data object, properly modified + */ + + +function offset(data, _ref) { + var offset = _ref.offset; + var placement = data.placement, + _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + var basePlacement = placement.split('-')[0]; + var offsets = void 0; + + if (isNumeric(+offset)) { + offsets = [+offset, 0]; + } else { + offsets = parseOffset(offset, popper, reference, basePlacement); + } + + if (basePlacement === 'left') { + popper.top += offsets[0]; + popper.left -= offsets[1]; + } else if (basePlacement === 'right') { + popper.top += offsets[0]; + popper.left += offsets[1]; + } else if (basePlacement === 'top') { + popper.left += offsets[0]; + popper.top -= offsets[1]; + } else if (basePlacement === 'bottom') { + popper.left += offsets[0]; + popper.top += offsets[1]; + } + + data.popper = popper; + return data; +} +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + + +function preventOverflow(data, options) { + var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); // If offsetParent is the reference element, we really want to + // go one step up and use the next offsetParent as reference to + // avoid to make this modifier completely useless and look like broken + + if (data.instance.reference === boundariesElement) { + boundariesElement = getOffsetParent(boundariesElement); + } // NOTE: DOM access here + // resets the popper's position so that the document size can be calculated excluding + // the size of the popper element itself + + + var transformProp = getSupportedPropertyName('transform'); + var popperStyles = data.instance.popper.style; // assignment to help minification + + var top = popperStyles.top, + left = popperStyles.left, + transform = popperStyles[transformProp]; + popperStyles.top = ''; + popperStyles.left = ''; + popperStyles[transformProp] = ''; + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); // NOTE: DOM access here + // restores the original style properties after the offsets have been computed + + popperStyles.top = top; + popperStyles.left = left; + popperStyles[transformProp] = transform; + options.boundaries = boundaries; + var order = options.priority; + var popper = data.offsets.popper; + var check = { + primary: function primary(placement) { + var value = popper[placement]; + + if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { + value = Math.max(popper[placement], boundaries[placement]); + } + + return defineProperty({}, placement, value); + }, + secondary: function secondary(placement) { + var mainSide = placement === 'right' ? 'left' : 'top'; + var value = popper[mainSide]; + + if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { + value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); + } + + return defineProperty({}, mainSide, value); + } + }; + order.forEach(function (placement) { + var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; + popper = _extends({}, popper, check[side](placement)); + }); + data.offsets.popper = popper; + return data; +} +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + + +function shift(data) { + var placement = data.placement; + var basePlacement = placement.split('-')[0]; + var shiftvariation = placement.split('-')[1]; // if shift shiftvariation is specified, run the modifier + + if (shiftvariation) { + var _data$offsets = data.offsets, + reference = _data$offsets.reference, + popper = _data$offsets.popper; + var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; + var side = isVertical ? 'left' : 'top'; + var measurement = isVertical ? 'width' : 'height'; + var shiftOffsets = { + start: defineProperty({}, side, reference[side]), + end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) + }; + data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]); + } + + return data; +} +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + + +function hide(data) { + if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { + return data; + } + + var refRect = data.offsets.reference; + var bound = find(data.instance.modifiers, function (modifier) { + return modifier.name === 'preventOverflow'; + }).boundaries; + + if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { + // Avoid unnecessary DOM access if visibility hasn't changed + if (data.hide === true) { + return data; + } + + data.hide = true; + data.attributes['x-out-of-boundaries'] = ''; + } else { + // Avoid unnecessary DOM access if visibility hasn't changed + if (data.hide === false) { + return data; + } + + data.hide = false; + data.attributes['x-out-of-boundaries'] = false; + } + + return data; +} +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + + +function inner(data) { + var placement = data.placement; + var basePlacement = placement.split('-')[0]; + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; + var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; + popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); + data.placement = getOppositePlacement(placement); + data.offsets.popper = getClientRect(popper); + return data; +} +/** + * Modifier function, each modifier can have a function of this type assigned + * to its `fn` property.
+ * These functions will be called on each update, this means that you must + * make sure they are performant enough to avoid performance bottlenecks. + * + * @function ModifierFn + * @argument {dataObject} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {dataObject} The data object, properly modified + */ + +/** + * Modifiers are plugins used to alter the behavior of your poppers.
+ * Popper.js uses a set of 9 modifiers to provide all the basic functionalities + * needed by the library. + * + * Usually you don't want to override the `order`, `fn` and `onLoad` props. + * All the other properties are configurations that could be tweaked. + * @namespace modifiers + */ + + +var modifiers = { + /** + * Modifier used to shift the popper on the start or end of its reference + * element.
+ * It will read the variation of the `placement` property.
+ * It can be one either `-end` or `-start`. + * @memberof modifiers + * @inner + */ + shift: { + /** @prop {number} order=100 - Index used to define the order of execution */ + order: 100, + + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + + /** @prop {ModifierFn} */ + fn: shift + }, + + /** + * The `offset` modifier can shift your popper on both its axis. + * + * It accepts the following units: + * - `px` or unit-less, interpreted as pixels + * - `%` or `%r`, percentage relative to the length of the reference element + * - `%p`, percentage relative to the length of the popper element + * - `vw`, CSS viewport width unit + * - `vh`, CSS viewport height unit + * + * For length is intended the main axis relative to the placement of the popper.
+ * This means that if the placement is `top` or `bottom`, the length will be the + * `width`. In case of `left` or `right`, it will be the `height`. + * + * You can provide a single value (as `Number` or `String`), or a pair of values + * as `String` divided by a comma or one (or more) white spaces.
+ * The latter is a deprecated method because it leads to confusion and will be + * removed in v2.
+ * Additionally, it accepts additions and subtractions between different units. + * Note that multiplications and divisions aren't supported. + * + * Valid examples are: + * ``` + * 10 + * '10%' + * '10, 10' + * '10%, 10' + * '10 + 10%' + * '10 - 5vh + 3%' + * '-10px + 5vh, 5px - 6%' + * ``` + * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap + * > with their reference element, unfortunately, you will have to disable the `flip` modifier. + * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373). + * + * @memberof modifiers + * @inner + */ + offset: { + /** @prop {number} order=200 - Index used to define the order of execution */ + order: 200, + + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + + /** @prop {ModifierFn} */ + fn: offset, + + /** @prop {Number|String} offset=0 + * The offset value as described in the modifier description + */ + offset: 0 + }, + + /** + * Modifier used to prevent the popper from being positioned outside the boundary. + * + * A scenario exists where the reference itself is not within the boundaries.
+ * We can say it has "escaped the boundaries" — or just "escaped".
+ * In this case we need to decide whether the popper should either: + * + * - detach from the reference and remain "trapped" in the boundaries, or + * - if it should ignore the boundary and "escape with its reference" + * + * When `escapeWithReference` is set to`true` and reference is completely + * outside its boundaries, the popper will overflow (or completely leave) + * the boundaries in order to remain attached to the edge of the reference. + * + * @memberof modifiers + * @inner + */ + preventOverflow: { + /** @prop {number} order=300 - Index used to define the order of execution */ + order: 300, + + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + + /** @prop {ModifierFn} */ + fn: preventOverflow, + + /** + * @prop {Array} [priority=['left','right','top','bottom']] + * Popper will try to prevent overflow following these priorities by default, + * then, it could overflow on the left and on top of the `boundariesElement` + */ + priority: ['left', 'right', 'top', 'bottom'], + + /** + * @prop {number} padding=5 + * Amount of pixel used to define a minimum distance between the boundaries + * and the popper. This makes sure the popper always has a little padding + * between the edges of its container + */ + padding: 5, + + /** + * @prop {String|HTMLElement} boundariesElement='scrollParent' + * Boundaries used by the modifier. Can be `scrollParent`, `window`, + * `viewport` or any DOM element. + */ + boundariesElement: 'scrollParent' + }, + + /** + * Modifier used to make sure the reference and its popper stay near each other + * without leaving any gap between the two. Especially useful when the arrow is + * enabled and you want to ensure that it points to its reference element. + * It cares only about the first axis. You can still have poppers with margin + * between the popper and its reference element. + * @memberof modifiers + * @inner + */ + keepTogether: { + /** @prop {number} order=400 - Index used to define the order of execution */ + order: 400, + + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + + /** @prop {ModifierFn} */ + fn: keepTogether + }, + + /** + * This modifier is used to move the `arrowElement` of the popper to make + * sure it is positioned between the reference element and its popper element. + * It will read the outer size of the `arrowElement` node to detect how many + * pixels of conjunction are needed. + * + * It has no effect if no `arrowElement` is provided. + * @memberof modifiers + * @inner + */ + arrow: { + /** @prop {number} order=500 - Index used to define the order of execution */ + order: 500, + + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + + /** @prop {ModifierFn} */ + fn: arrow, + + /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ + element: '[x-arrow]' + }, + + /** + * Modifier used to flip the popper's placement when it starts to overlap its + * reference element. + * + * Requires the `preventOverflow` modifier before it in order to work. + * + * **NOTE:** this modifier will interrupt the current update cycle and will + * restart it if it detects the need to flip the placement. + * @memberof modifiers + * @inner + */ + flip: { + /** @prop {number} order=600 - Index used to define the order of execution */ + order: 600, + + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + + /** @prop {ModifierFn} */ + fn: flip, + + /** + * @prop {String|Array} behavior='flip' + * The behavior used to change the popper's placement. It can be one of + * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid + * placements (with optional variations) + */ + behavior: 'flip', + + /** + * @prop {number} padding=5 + * The popper will flip if it hits the edges of the `boundariesElement` + */ + padding: 5, + + /** + * @prop {String|HTMLElement} boundariesElement='viewport' + * The element which will define the boundaries of the popper position. + * The popper will never be placed outside of the defined boundaries + * (except if `keepTogether` is enabled) + */ + boundariesElement: 'viewport', + + /** + * @prop {Boolean} flipVariations=false + * The popper will switch placement variation between `-start` and `-end` when + * the reference element overlaps its boundaries. + * + * The original placement should have a set variation. + */ + flipVariations: false, + + /** + * @prop {Boolean} flipVariationsByContent=false + * The popper will switch placement variation between `-start` and `-end` when + * the popper element overlaps its reference boundaries. + * + * The original placement should have a set variation. + */ + flipVariationsByContent: false + }, + + /** + * Modifier used to make the popper flow toward the inner of the reference element. + * By default, when this modifier is disabled, the popper will be placed outside + * the reference element. + * @memberof modifiers + * @inner + */ + inner: { + /** @prop {number} order=700 - Index used to define the order of execution */ + order: 700, + + /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ + enabled: false, + + /** @prop {ModifierFn} */ + fn: inner + }, + + /** + * Modifier used to hide the popper when its reference element is outside of the + * popper boundaries. It will set a `x-out-of-boundaries` attribute which can + * be used to hide with a CSS selector the popper when its reference is + * out of boundaries. + * + * Requires the `preventOverflow` modifier before it in order to work. + * @memberof modifiers + * @inner + */ + hide: { + /** @prop {number} order=800 - Index used to define the order of execution */ + order: 800, + + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + + /** @prop {ModifierFn} */ + fn: hide + }, + + /** + * Computes the style that will be applied to the popper element to gets + * properly positioned. + * + * Note that this modifier will not touch the DOM, it just prepares the styles + * so that `applyStyle` modifier can apply it. This separation is useful + * in case you need to replace `applyStyle` with a custom implementation. + * + * This modifier has `850` as `order` value to maintain backward compatibility + * with previous versions of Popper.js. Expect the modifiers ordering method + * to change in future major versions of the library. + * + * @memberof modifiers + * @inner + */ + computeStyle: { + /** @prop {number} order=850 - Index used to define the order of execution */ + order: 850, + + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + + /** @prop {ModifierFn} */ + fn: computeStyle, + + /** + * @prop {Boolean} gpuAcceleration=true + * If true, it uses the CSS 3D transformation to position the popper. + * Otherwise, it will use the `top` and `left` properties + */ + gpuAcceleration: true, + + /** + * @prop {string} [x='bottom'] + * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. + * Change this if your popper should grow in a direction different from `bottom` + */ + x: 'bottom', + + /** + * @prop {string} [x='left'] + * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. + * Change this if your popper should grow in a direction different from `right` + */ + y: 'right' + }, + + /** + * Applies the computed styles to the popper element. + * + * All the DOM manipulations are limited to this modifier. This is useful in case + * you want to integrate Popper.js inside a framework or view library and you + * want to delegate all the DOM manipulations to it. + * + * Note that if you disable this modifier, you must make sure the popper element + * has its position set to `absolute` before Popper.js can do its work! + * + * Just disable this modifier and define your own to achieve the desired effect. + * + * @memberof modifiers + * @inner + */ + applyStyle: { + /** @prop {number} order=900 - Index used to define the order of execution */ + order: 900, + + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + + /** @prop {ModifierFn} */ + fn: applyStyle, + + /** @prop {Function} */ + onLoad: applyStyleOnLoad, + + /** + * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier + * @prop {Boolean} gpuAcceleration=true + * If true, it uses the CSS 3D transformation to position the popper. + * Otherwise, it will use the `top` and `left` properties + */ + gpuAcceleration: undefined + } +}; +/** + * The `dataObject` is an object containing all the information used by Popper.js. + * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks. + * @name dataObject + * @property {Object} data.instance The Popper.js instance + * @property {String} data.placement Placement applied to popper + * @property {String} data.originalPlacement Placement originally defined on init + * @property {Boolean} data.flipped True if popper has been flipped by flip modifier + * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper + * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier + * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`) + * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`) + * @property {Object} data.boundaries Offsets of the popper boundaries + * @property {Object} data.offsets The measurements of popper, reference and arrow elements + * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values + * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values + * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 + */ + +/** + * Default options provided to Popper.js constructor.
+ * These can be overridden using the `options` argument of Popper.js.
+ * To override an option, simply pass an object with the same + * structure of the `options` object, as the 3rd argument. For example: + * ``` + * new Popper(ref, pop, { + * modifiers: { + * preventOverflow: { enabled: false } + * } + * }) + * ``` + * @type {Object} + * @static + * @memberof Popper + */ + +var Defaults = { + /** + * Popper's placement. + * @prop {Popper.placements} placement='bottom' + */ + placement: 'bottom', + + /** + * Set this to true if you want popper to position it self in 'fixed' mode + * @prop {Boolean} positionFixed=false + */ + positionFixed: false, + + /** + * Whether events (resize, scroll) are initially enabled. + * @prop {Boolean} eventsEnabled=true + */ + eventsEnabled: true, + + /** + * Set to true if you want to automatically remove the popper when + * you call the `destroy` method. + * @prop {Boolean} removeOnDestroy=false + */ + removeOnDestroy: false, + + /** + * Callback called when the popper is created.
+ * By default, it is set to no-op.
+ * Access Popper.js instance with `data.instance`. + * @prop {onCreate} + */ + onCreate: function onCreate() {}, + + /** + * Callback called when the popper is updated. This callback is not called + * on the initialization/creation of the popper, but only on subsequent + * updates.
+ * By default, it is set to no-op.
+ * Access Popper.js instance with `data.instance`. + * @prop {onUpdate} + */ + onUpdate: function onUpdate() {}, + + /** + * List of modifiers used to modify the offsets before they are applied to the popper. + * They provide most of the functionalities of Popper.js. + * @prop {modifiers} + */ + modifiers: modifiers +}; +/** + * @callback onCreate + * @param {dataObject} data + */ + +/** + * @callback onUpdate + * @param {dataObject} data + */ +// Utils +// Methods + +var Popper = function () { + /** + * Creates a new Popper.js instance. + * @class Popper + * @param {Element|referenceObject} reference - The reference element used to position the popper + * @param {Element} popper - The HTML / XML element used as the popper + * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) + * @return {Object} instance - The generated Popper.js instance + */ + function Popper(reference, popper) { + var _this = this; + + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + classCallCheck(this, Popper); + + this.scheduleUpdate = function () { + return requestAnimationFrame(_this.update); + }; // make update() debounced, so that it only runs at most once-per-tick + + + this.update = debounce(this.update.bind(this)); // with {} we create a new object with the options inside it + + this.options = _extends({}, Popper.Defaults, options); // init state + + this.state = { + isDestroyed: false, + isCreated: false, + scrollParents: [] + }; // get reference and popper elements (allow jQuery wrappers) + + this.reference = reference && reference.jquery ? reference[0] : reference; + this.popper = popper && popper.jquery ? popper[0] : popper; // Deep merge modifiers options + + this.options.modifiers = {}; + Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { + _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); + }); // Refactoring modifiers' list (Object => Array) + + this.modifiers = Object.keys(this.options.modifiers).map(function (name) { + return _extends({ + name: name + }, _this.options.modifiers[name]); + }) // sort the modifiers by order + .sort(function (a, b) { + return a.order - b.order; + }); // modifiers have the ability to execute arbitrary code when Popper.js get inited + // such code is executed in the same order of its modifier + // they could add new properties to their options configuration + // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! + + this.modifiers.forEach(function (modifierOptions) { + if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { + modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); + } + }); // fire the first update to position the popper in the right place + + this.update(); + var eventsEnabled = this.options.eventsEnabled; + + if (eventsEnabled) { + // setup event listeners, they will take care of update the position in specific situations + this.enableEventListeners(); + } + + this.state.eventsEnabled = eventsEnabled; + } // We can't use class properties because they don't get listed in the + // class prototype and break stuff like Sinon stubs + + + createClass(Popper, [{ + key: 'update', + value: function update$$1() { + return update.call(this); + } + }, { + key: 'destroy', + value: function destroy$$1() { + return destroy.call(this); + } + }, { + key: 'enableEventListeners', + value: function enableEventListeners$$1() { + return enableEventListeners.call(this); + } + }, { + key: 'disableEventListeners', + value: function disableEventListeners$$1() { + return disableEventListeners.call(this); + } + /** + * Schedules an update. It will run on the next UI update available. + * @method scheduleUpdate + * @memberof Popper + */ + + /** + * Collection of utilities useful when writing custom modifiers. + * Starting from version 1.7, this method is available only if you + * include `popper-utils.js` before `popper.js`. + * + * **DEPRECATION**: This way to access PopperUtils is deprecated + * and will be removed in v2! Use the PopperUtils module directly instead. + * Due to the high instability of the methods contained in Utils, we can't + * guarantee them to follow semver. Use them at your own risk! + * @static + * @private + * @type {Object} + * @deprecated since version 1.8 + * @member Utils + * @memberof Popper + */ + + }]); + return Popper; +}(); +/** + * The `referenceObject` is an object that provides an interface compatible with Popper.js + * and lets you use it as replacement of a real DOM node.
+ * You can use this method to position a popper relatively to a set of coordinates + * in case you don't have a DOM node to use as reference. + * + * ``` + * new Popper(referenceObject, popperNode); + * ``` + * + * NB: This feature isn't supported in Internet Explorer 10. + * @name referenceObject + * @property {Function} data.getBoundingClientRect + * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. + * @property {number} data.clientWidth + * An ES6 getter that will return the width of the virtual reference element. + * @property {number} data.clientHeight + * An ES6 getter that will return the height of the virtual reference element. + */ + + +Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; +Popper.placements = placements; +Popper.Defaults = Defaults; +/* harmony default export */ __webpack_exports__["default"] = (Popper); +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +/***/ }), + /***/ "./node_modules/process/browser.js": /*!*****************************************!*\ !*** ./node_modules/process/browser.js ***! @@ -6609,6 +10338,617 @@ exports.clearImmediate = typeof self !== "undefined" && self.clearImmediate || t /***/ }), +/***/ "./node_modules/tooltip.js/dist/esm/tooltip.js": +/*!*****************************************************!*\ + !*** ./node_modules/tooltip.js/dist/esm/tooltip.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var popper_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js"); +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.3.2 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/** + * Check if the given variable is a function + * @method + * @memberof Popper.Utils + * @argument {Any} functionToCheck - variable to check + * @returns {Boolean} answer to: is a function? + */ + +function isFunction(functionToCheck) { + var getType = {}; + return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; +} + +var classCallCheck = function classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + +var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); + +var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; +}; + +var DEFAULT_OPTIONS = { + container: false, + delay: 0, + html: false, + placement: 'top', + title: '', + template: '', + trigger: 'hover focus', + offset: 0, + arrowSelector: '.tooltip-arrow, .tooltip__arrow', + innerSelector: '.tooltip-inner, .tooltip__inner' +}; + +var Tooltip = function () { + /** + * Create a new Tooltip.js instance + * @class Tooltip + * @param {HTMLElement} reference - The DOM node used as reference of the tooltip (it can be a jQuery element). + * @param {Object} options + * @param {String} options.placement='top' + * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -end), + * left(-start, -end)` + * @param {String} options.arrowSelector='.tooltip-arrow, .tooltip__arrow' - className used to locate the DOM arrow element in the tooltip. + * @param {String} options.innerSelector='.tooltip-inner, .tooltip__inner' - className used to locate the DOM inner element in the tooltip. + * @param {HTMLElement|String|false} options.container=false - Append the tooltip to a specific element. + * @param {Number|Object} options.delay=0 + * Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type. + * If a number is supplied, delay is applied to both hide/show. + * Object structure is: `{ show: 500, hide: 100 }` + * @param {Boolean} options.html=false - Insert HTML into the tooltip. If false, the content will inserted with `textContent`. + * @param {String} [options.template=''] + * Base HTML to used when creating the tooltip. + * The tooltip's `title` will be injected into the `.tooltip-inner` or `.tooltip__inner`. + * `.tooltip-arrow` or `.tooltip__arrow` will become the tooltip's arrow. + * The outermost wrapper element should have the `.tooltip` class. + * @param {String|HTMLElement|TitleFunction} options.title='' - Default title value if `title` attribute isn't present. + * @param {String} [options.trigger='hover focus'] + * How tooltip is triggered - click, hover, focus, manual. + * You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger. + * @param {Boolean} options.closeOnClickOutside=false - Close a popper on click outside of the popper and reference element. This has effect only when options.trigger is 'click'. + * @param {String|HTMLElement} options.boundariesElement + * The element used as boundaries for the tooltip. For more information refer to Popper.js' + * [boundariesElement docs](https://popper.js.org/popper-documentation.html) + * @param {Number|String} options.offset=0 - Offset of the tooltip relative to its reference. For more information refer to Popper.js' + * [offset docs](https://popper.js.org/popper-documentation.html) + * @param {Object} options.popperOptions={} - Popper options, will be passed directly to popper instance. For more information refer to Popper.js' + * [options docs](https://popper.js.org/popper-documentation.html) + * @return {Object} instance - The generated tooltip instance + */ + function Tooltip(reference, options) { + classCallCheck(this, Tooltip); + + _initialiseProps.call(this); // apply user options over default ones + + + options = _extends({}, DEFAULT_OPTIONS, options); + reference.jquery && (reference = reference[0]); // cache reference and options + + this.reference = reference; + this.options = options; // get events list + + var events = typeof options.trigger === 'string' ? options.trigger.split(' ').filter(function (trigger) { + return ['click', 'hover', 'focus'].indexOf(trigger) !== -1; + }) : []; // set initial state + + this._isOpen = false; + this._popperOptions = {}; // set event listeners + + this._setEventListeners(reference, events, options); + } // + // Public methods + // + + /** + * Reveals an element's tooltip. This is considered a "manual" triggering of the tooltip. + * Tooltips with zero-length titles are never displayed. + * @method Tooltip#show + * @memberof Tooltip + */ + + /** + * Hides an element’s tooltip. This is considered a “manual” triggering of the tooltip. + * @method Tooltip#hide + * @memberof Tooltip + */ + + /** + * Hides and destroys an element’s tooltip. + * @method Tooltip#dispose + * @memberof Tooltip + */ + + /** + * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip. + * @method Tooltip#toggle + * @memberof Tooltip + */ + + /** + * Updates the tooltip's title content + * @method Tooltip#updateTitleContent + * @memberof Tooltip + * @param {String|HTMLElement} title - The new content to use for the title + */ + // + // Private methods + // + + + createClass(Tooltip, [{ + key: '_create', + + /** + * Creates a new tooltip node + * @memberof Tooltip + * @private + * @param {HTMLElement} reference + * @param {String} template + * @param {String|HTMLElement|TitleFunction} title + * @param {Boolean} allowHtml + * @return {HTMLElement} tooltipNode + */ + value: function _create(reference, template, title, allowHtml) { + // create tooltip element + var tooltipGenerator = window.document.createElement('div'); + tooltipGenerator.innerHTML = template.trim(); + var tooltipNode = tooltipGenerator.childNodes[0]; // add unique ID to our tooltip (needed for accessibility reasons) + + tooltipNode.id = 'tooltip_' + Math.random().toString(36).substr(2, 10); // set initial `aria-hidden` state to `false` (it's visible!) + + tooltipNode.setAttribute('aria-hidden', 'false'); // add title to tooltip + + var titleNode = tooltipGenerator.querySelector(this.options.innerSelector); + + this._addTitleContent(reference, title, allowHtml, titleNode); // return the generated tooltip node + + + return tooltipNode; + } + }, { + key: '_addTitleContent', + value: function _addTitleContent(reference, title, allowHtml, titleNode) { + if (title.nodeType === 1 || title.nodeType === 11) { + // if title is a element node or document fragment, append it only if allowHtml is true + allowHtml && titleNode.appendChild(title); + } else if (isFunction(title)) { + // if title is a function, call it and set textContent or innerHtml depending by `allowHtml` value + var titleText = title.call(reference); + allowHtml ? titleNode.innerHTML = titleText : titleNode.textContent = titleText; + } else { + // if it's just a simple text, set textContent or innerHtml depending by `allowHtml` value + allowHtml ? titleNode.innerHTML = title : titleNode.textContent = title; + } + } + }, { + key: '_show', + value: function _show(reference, options) { + // don't show if it's already visible + // or if it's not being showed + if (this._isOpen && !this._isOpening) { + return this; + } + + this._isOpen = true; // if the tooltipNode already exists, just show it + + if (this._tooltipNode) { + this._tooltipNode.style.visibility = 'visible'; + + this._tooltipNode.setAttribute('aria-hidden', 'false'); + + this.popperInstance.update(); + return this; + } // get title + + + var title = reference.getAttribute('title') || options.title; // don't show tooltip if no title is defined + + if (!title) { + return this; + } // create tooltip node + + + var tooltipNode = this._create(reference, options.template, title, options.html); // Add `aria-describedby` to our reference element for accessibility reasons + + + reference.setAttribute('aria-describedby', tooltipNode.id); // append tooltip to container + + var container = this._findContainer(options.container, reference); + + this._append(tooltipNode, container); + + this._popperOptions = _extends({}, options.popperOptions, { + placement: options.placement + }); + this._popperOptions.modifiers = _extends({}, this._popperOptions.modifiers, { + arrow: _extends({}, this._popperOptions.modifiers && this._popperOptions.modifiers.arrow, { + element: options.arrowSelector + }), + offset: _extends({}, this._popperOptions.modifiers && this._popperOptions.modifiers.offset, { + offset: options.offset + }) + }); + + if (options.boundariesElement) { + this._popperOptions.modifiers.preventOverflow = { + boundariesElement: options.boundariesElement + }; + } + + this.popperInstance = new popper_js__WEBPACK_IMPORTED_MODULE_0__["default"](reference, tooltipNode, this._popperOptions); + this._tooltipNode = tooltipNode; + return this; + } + }, { + key: '_hide', + value: function _hide() + /*reference, options*/ + { + // don't hide if it's already hidden + if (!this._isOpen) { + return this; + } + + this._isOpen = false; // hide tooltipNode + + this._tooltipNode.style.visibility = 'hidden'; + + this._tooltipNode.setAttribute('aria-hidden', 'true'); + + return this; + } + }, { + key: '_dispose', + value: function _dispose() { + var _this = this; // remove event listeners first to prevent any unexpected behaviour + + + this._events.forEach(function (_ref) { + var func = _ref.func, + event = _ref.event; + + _this.reference.removeEventListener(event, func); + }); + + this._events = []; + + if (this._tooltipNode) { + this._hide(); // destroy instance + + + this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element + + if (!this.popperInstance.options.removeOnDestroy) { + this._tooltipNode.parentNode.removeChild(this._tooltipNode); + + this._tooltipNode = null; + } + } + + return this; + } + }, { + key: '_findContainer', + value: function _findContainer(container, reference) { + // if container is a query, get the relative element + if (typeof container === 'string') { + container = window.document.querySelector(container); + } else if (container === false) { + // if container is `false`, set it to reference parent + container = reference.parentNode; + } + + return container; + } + /** + * Append tooltip to container + * @memberof Tooltip + * @private + * @param {HTMLElement} tooltipNode + * @param {HTMLElement|String|false} container + */ + + }, { + key: '_append', + value: function _append(tooltipNode, container) { + container.appendChild(tooltipNode); + } + }, { + key: '_setEventListeners', + value: function _setEventListeners(reference, events, options) { + var _this2 = this; + + var directEvents = []; + var oppositeEvents = []; + events.forEach(function (event) { + switch (event) { + case 'hover': + directEvents.push('mouseenter'); + oppositeEvents.push('mouseleave'); + break; + + case 'focus': + directEvents.push('focus'); + oppositeEvents.push('blur'); + break; + + case 'click': + directEvents.push('click'); + oppositeEvents.push('click'); + break; + } + }); // schedule show tooltip + + directEvents.forEach(function (event) { + var func = function func(evt) { + if (_this2._isOpening === true) { + return; + } + + evt.usedByTooltip = true; + + _this2._scheduleShow(reference, options.delay, options, evt); + }; + + _this2._events.push({ + event: event, + func: func + }); + + reference.addEventListener(event, func); + }); // schedule hide tooltip + + oppositeEvents.forEach(function (event) { + var func = function func(evt) { + if (evt.usedByTooltip === true) { + return; + } + + _this2._scheduleHide(reference, options.delay, options, evt); + }; + + _this2._events.push({ + event: event, + func: func + }); + + reference.addEventListener(event, func); + + if (event === 'click' && options.closeOnClickOutside) { + document.addEventListener('mousedown', function (e) { + if (!_this2._isOpening) { + return; + } + + var popper = _this2.popperInstance.popper; + + if (reference.contains(e.target) || popper.contains(e.target)) { + return; + } + + func(e); + }, true); + } + }); + } + }, { + key: '_scheduleShow', + value: function _scheduleShow(reference, delay, options + /*, evt */ + ) { + var _this3 = this; + + this._isOpening = true; // defaults to 0 + + var computedDelay = delay && delay.show || delay || 0; + this._showTimeout = window.setTimeout(function () { + return _this3._show(reference, options); + }, computedDelay); + } + }, { + key: '_scheduleHide', + value: function _scheduleHide(reference, delay, options, evt) { + var _this4 = this; + + this._isOpening = false; // defaults to 0 + + var computedDelay = delay && delay.hide || delay || 0; + window.clearTimeout(this._showTimeout); + window.setTimeout(function () { + if (_this4._isOpen === false) { + return; + } + + if (!document.body.contains(_this4._tooltipNode)) { + return; + } // if we are hiding because of a mouseleave, we must check that the new + // reference isn't the tooltip, because in this case we don't want to hide it + + + if (evt.type === 'mouseleave') { + var isSet = _this4._setTooltipNodeEvent(evt, reference, delay, options); // if we set the new event, don't hide the tooltip yet + // the new event will take care to hide it if necessary + + + if (isSet) { + return; + } + } + + _this4._hide(reference, options); + }, computedDelay); + } + }, { + key: '_updateTitleContent', + value: function _updateTitleContent(title) { + if (typeof this._tooltipNode === 'undefined') { + if (typeof this.options.title !== 'undefined') { + this.options.title = title; + } + + return; + } + + var titleNode = this._tooltipNode.querySelector(this.options.innerSelector); + + this._clearTitleContent(titleNode, this.options.html, this.reference.getAttribute('title') || this.options.title); + + this._addTitleContent(this.reference, title, this.options.html, titleNode); + + this.options.title = title; + this.popperInstance.update(); + } + }, { + key: '_clearTitleContent', + value: function _clearTitleContent(titleNode, allowHtml, lastTitle) { + if (lastTitle.nodeType === 1 || lastTitle.nodeType === 11) { + allowHtml && titleNode.removeChild(lastTitle); + } else { + allowHtml ? titleNode.innerHTML = '' : titleNode.textContent = ''; + } + } + }]); + return Tooltip; +}(); +/** + * Title function, its context is the Tooltip instance. + * @memberof Tooltip + * @callback TitleFunction + * @return {String} placement - The desired title. + */ + + +var _initialiseProps = function _initialiseProps() { + var _this5 = this; + + this.show = function () { + return _this5._show(_this5.reference, _this5.options); + }; + + this.hide = function () { + return _this5._hide(); + }; + + this.dispose = function () { + return _this5._dispose(); + }; + + this.toggle = function () { + if (_this5._isOpen) { + return _this5.hide(); + } else { + return _this5.show(); + } + }; + + this.updateTitleContent = function (title) { + return _this5._updateTitleContent(title); + }; + + this._events = []; + + this._setTooltipNodeEvent = function (evt, reference, delay, options) { + var relatedreference = evt.relatedreference || evt.toElement || evt.relatedTarget; + + var callback = function callback(evt2) { + var relatedreference2 = evt2.relatedreference || evt2.toElement || evt2.relatedTarget; // Remove event listener after call + + _this5._tooltipNode.removeEventListener(evt.type, callback); // If the new reference is not the reference element + + + if (!reference.contains(relatedreference2)) { + // Schedule to hide tooltip + _this5._scheduleHide(reference, options.delay, options, evt2); + } + }; + + if (_this5._tooltipNode.contains(relatedreference)) { + // listen to mouseleave on the tooltip element to be able to hide the tooltip + _this5._tooltipNode.addEventListener(evt.type, callback); + + return true; + } + + return false; + }; +}; + +/* harmony default export */ __webpack_exports__["default"] = (Tooltip); + +/***/ }), + +/***/ "./node_modules/webpack/buildin/amd-options.js": +/*!****************************************!*\ + !*** (webpack)/buildin/amd-options.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ +module.exports = __webpack_amd_options__; + +/* WEBPACK VAR INJECTION */}.call(this, {})) + +/***/ }), + /***/ "./node_modules/webpack/buildin/global.js": /*!***********************************!*\ !*** (webpack)/buildin/global.js ***! @@ -6637,6 +10977,41 @@ module.exports = g; /***/ }), +/***/ "./node_modules/webpack/buildin/harmony-module.js": +/*!*******************************************!*\ + !*** (webpack)/buildin/harmony-module.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = function (originalModule) { + if (!originalModule.webpackPolyfill) { + var module = Object.create(originalModule); // module.parent = undefined by default + + if (!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function get() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function get() { + return module.i; + } + }); + Object.defineProperty(module, "exports", { + enumerable: true + }); + module.webpackPolyfill = 1; + } + + return module; +}; + +/***/ }), + /***/ "./node_modules/zepto/src/data.js": /*!****************************************!*\ !*** ./node_modules/zepto/src/data.js ***! @@ -7119,21 +11494,27 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var expose_loader_m_bidi_m_attrs_bidi__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(expose_loader_m_bidi_m_attrs_bidi__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var expose_loader_Mousetrap_mousetrap__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! expose-loader?Mousetrap!mousetrap */ "./node_modules/expose-loader/index.js?Mousetrap!./node_modules/mousetrap/mousetrap.js-exposed"); /* harmony import */ var expose_loader_Mousetrap_mousetrap__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(expose_loader_Mousetrap_mousetrap__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var zepto_src_selector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! zepto/src/selector */ "./node_modules/zepto/src/selector.js"); -/* harmony import */ var zepto_src_selector__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(zepto_src_selector__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var zepto_src_data__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! zepto/src/data */ "./node_modules/zepto/src/data.js"); -/* harmony import */ var zepto_src_data__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(zepto_src_data__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var zepto_src_fx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! zepto/src/fx */ "./node_modules/zepto/src/fx.js"); -/* harmony import */ var zepto_src_fx__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(zepto_src_fx__WEBPACK_IMPORTED_MODULE_7__); -/* harmony import */ var zepto_src_fx_methods__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! zepto/src/fx_methods */ "./node_modules/zepto/src/fx_methods.js"); -/* harmony import */ var zepto_src_fx_methods__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(zepto_src_fx_methods__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! dayjs/plugin/relativeTime */ "./node_modules/dayjs/plugin/relativeTime.js"); -/* harmony import */ var dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_9__); -/* harmony import */ var dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! dayjs/plugin/localizedFormat */ "./node_modules/dayjs/plugin/localizedFormat.js"); -/* harmony import */ var dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_10__); -/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! dayjs */ "./node_modules/dayjs/dayjs.min.js"); -/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_11__); -/* harmony import */ var _utils_patchMithril__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/patchMithril */ "./src/common/utils/patchMithril.ts"); +/* harmony import */ var expose_loader_classNames_classNames__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! expose-loader?classNames!classNames */ "./node_modules/expose-loader/index.js?classNames!./node_modules/classNames/index.js-exposed"); +/* harmony import */ var expose_loader_classNames_classNames__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(expose_loader_classNames_classNames__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var zepto_src_selector__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! zepto/src/selector */ "./node_modules/zepto/src/selector.js"); +/* harmony import */ var zepto_src_selector__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(zepto_src_selector__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var zepto_src_data__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! zepto/src/data */ "./node_modules/zepto/src/data.js"); +/* harmony import */ var zepto_src_data__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(zepto_src_data__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var zepto_src_fx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! zepto/src/fx */ "./node_modules/zepto/src/fx.js"); +/* harmony import */ var zepto_src_fx__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(zepto_src_fx__WEBPACK_IMPORTED_MODULE_8__); +/* harmony import */ var zepto_src_fx_methods__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! zepto/src/fx_methods */ "./node_modules/zepto/src/fx_methods.js"); +/* harmony import */ var zepto_src_fx_methods__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(zepto_src_fx_methods__WEBPACK_IMPORTED_MODULE_9__); +/* harmony import */ var _utils_patchZepto__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils/patchZepto */ "./src/common/utils/patchZepto.ts"); +/* harmony import */ var hc_sticky__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! hc-sticky */ "./node_modules/hc-sticky/dist/hc-sticky.js"); +/* harmony import */ var bootstrap_js_dropdown__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! bootstrap/js/dropdown */ "./node_modules/bootstrap/js/dropdown.js"); +/* harmony import */ var bootstrap_js_dropdown__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(bootstrap_js_dropdown__WEBPACK_IMPORTED_MODULE_12__); +/* harmony import */ var bootstrap_js_transition__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! bootstrap/js/transition */ "./node_modules/bootstrap/js/transition.js"); +/* harmony import */ var bootstrap_js_transition__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(bootstrap_js_transition__WEBPACK_IMPORTED_MODULE_13__); +/* harmony import */ var dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! dayjs/plugin/relativeTime */ "./node_modules/dayjs/plugin/relativeTime.js"); +/* harmony import */ var dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_14__); +/* harmony import */ var dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! dayjs/plugin/localizedFormat */ "./node_modules/dayjs/plugin/localizedFormat.js"); +/* harmony import */ var dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_15__); +/* harmony import */ var _utils_patchMithril__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./utils/patchMithril */ "./src/common/utils/patchMithril.ts"); @@ -7142,18 +11523,18 @@ __webpack_require__.r(__webpack_exports__); - // import './utils/patchZepto'; -// import 'hc-sticky'; -// import 'bootstrap/js/dropdown'; -// import 'bootstrap/js/transition'; -dayjs__WEBPACK_IMPORTED_MODULE_11___default.a.extend(dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_9___default.a); -dayjs__WEBPACK_IMPORTED_MODULE_11___default.a.extend(dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_10___default.a); -Object(_utils_patchMithril__WEBPACK_IMPORTED_MODULE_12__["default"])(window); // import * as Extend from './extend/index'; + + + +dayjs.extend(dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_14___default.a); +dayjs.extend(dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_15___default.a); + +Object(_utils_patchMithril__WEBPACK_IMPORTED_MODULE_16__["default"])(); // import * as Extend from './extend/index'; // export { Extend }; /***/ }), @@ -7167,40 +11548,159 @@ Object(_utils_patchMithril__WEBPACK_IMPORTED_MODULE_12__["default"])(window); // "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return patchMithril; }); -function patchMithril(global) {// const mo = global.m; - // const m = function(comp, ...args) { - // console.log('m', comp, ...args); - // if (comp.prototype && comp.prototype instanceof Component) { - // let children = args.slice(1); - // if (children.length === 1 && Array.isArray(children[0])) { - // children = children[0] - // } - // return comp.component(args[0], children); - // } - // const node = mo.apply(this, arguments); - // if (node.attrs.bidi) { - // m.bidi(node, node.attrs.bidi); - // } - // if (node.attrs.route) { - // node.attrs.href = node.attrs.route; - // node.attrs.config = m.route; - // delete node.attrs.route; - // } - // return node; - // }; - // Object.keys(mo).forEach(key => m[key] = mo[key]); - // // /** - // // * Redraw only if not in the middle of a computation (e.g. a route change). - // // * - // // * @return {void} - // // */ - // // m.lazyRedraw = function() { - // // m.startComputation(); - // // m.endComputation(); - // // }; - // global.m = m; -} +/* harmony import */ var mithril_stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mithril/stream */ "./node_modules/mithril/stream.js"); +/* harmony import */ var mithril_stream__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mithril_stream__WEBPACK_IMPORTED_MODULE_0__); + +/* harmony default export */ __webpack_exports__["default"] = (function () { + m.withAttr = function (key, cb) { + return function () { + cb(this.getAttribute(key)); + }; + }; + + m.prop = mithril_stream__WEBPACK_IMPORTED_MODULE_0___default.a; +}); + +/***/ }), + +/***/ "./src/common/utils/patchZepto.ts": +/*!****************************************!*\ + !*** ./src/common/utils/patchZepto.ts ***! + \****************************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var jump_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jump.js */ "./node_modules/jump.js/dist/jump.module.js"); +/* harmony import */ var tooltip_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tooltip.js */ "./node_modules/tooltip.js/dist/esm/tooltip.js"); + + // add $.fn.tooltip + +$.fn.tooltip = function (option) { + return this.each(function () { + var $this = $(this); + var data = $this.data('bs.tooltip'); + var options = typeof option === 'object' && option || {}; + + if ($this.attr('title')) { + options.title = $this.attr('title'); + $this.removeAttr('title'); + $this.attr('data-original-title', options.title); + } + + if (option === 'destroy') option = 'dispose'; + if (!data && ['dispose', 'hide'].includes(option)) return; + if (!data) $this.data('bs.tooltip', data = new tooltip_js__WEBPACK_IMPORTED_MODULE_1__["default"](this, options)); + if (typeof option === 'string' && data[option]) data[option](); + }); +}; // add $.fn.outerWidth and $.fn.outerHeight + + +['width', 'height'].forEach(function (dimension) { + var Dimension = dimension.replace(/./, function (m) { + return m[0].toUpperCase(); + }); + + $.fn["outer" + Dimension] = function (margin) { + var elem = this; + + if (elem) { + var sides = { + 'width': ['left', 'right'], + 'height': ['top', 'bottom'] + }; + var size = elem[dimension](); + sides[dimension].forEach(function (side) { + if (margin) size += parseInt(elem.css('margin-' + side), 10); + }); + return size; + } else { + return null; + } + }; +}); // allow use of $(':input') +// @ts-ignore + +$.expr[':']['input'] = function () { + if ('disabled' in this || ['INPUT', 'SELECT', 'TEXTAREA', 'BUTTON'].includes(this.tagName)) return this; +}; // add $().hover() method + + +$.fn.hover = function (hover, leave) { + return this.on('mouseenter', hover).on('mouseleave', leave || hover); +}; // add animated scroll + + +$.fn.animatedScrollTop = function (to, duration, callback) { + if (duration === void 0) { + duration = $.fx.speeds._default; + } + + if (typeof to === 'number') to -= window.scrollY || window.pageYOffset; + Object(jump_js__WEBPACK_IMPORTED_MODULE_0__["default"])(to, { + duration: $.fx.speeds[duration] || duration, + callback: callback + }); + return this; +}; // required for compatibility with jquery plugins +// ex: bootstrap plugins + + +$.fn.extend = $.extend.bind($); +/** + * Enable special events on Zepto + * @license Original Copyright 2013 Enideo. Released under dual MIT and GPL licenses. + */ +// @ts-ignore + +$.event.special = $.event.special || {}; +var bindBeforeSpecialEvents = $.fn.bind; + +$.fn.bind = function (eventName, data, callback) { + var el = this; + + if (!callback) { + callback = data; + data = null; + } + + $.each(eventName.split(/\s/), function (key, value) { + value = value.split(/\./)[0]; + + if (value in $.event.special) { + var specialEvent = $.event.special[value]; /// init enable special events on Zepto + + if (!specialEvent._init) { + specialEvent._init = true; /// intercept and replace the special event handler to add functionality + + specialEvent.originalHandler = specialEvent.handler; + + specialEvent.handler = function () { + /// make event argument writable, like on jQuery + var args = Array.prototype.slice.call(arguments); + args[0] = $.extend({}, args[0]); /// define the event handle, $.event.dispatch is only for newer versions of jQuery + + $.event.handle = function () { + /// make context of trigger the event element + var args = Array.prototype.slice.call(arguments); + var event = args[0]; + var $target = $(event.target); + $target.trigger.apply($target, arguments); + }; + + specialEvent.originalHandler.apply(this, args); + }; + } /// setup special events on Zepto + + + specialEvent.setup.apply(el, [data]); + } + + return true; + }); + return bindBeforeSpecialEvents.apply(this, [eventName, callback]); +}; /***/ }), diff --git a/js/dist/admin.js.map b/js/dist/admin.js.map index 14dff85fd..f4ad6b89d 100644 --- a/js/dist/admin.js.map +++ b/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@flarum/core/webpack/bootstrap","webpack://@flarum/core/./admin.ts","webpack://@flarum/core/./node_modules/zepto/dist/zepto.js","webpack://@flarum/core/./node_modules/m.attrs.bidi/bidi.js","webpack://@flarum/core/./node_modules/mithril/index.js","webpack://@flarum/core/./node_modules/mousetrap/mousetrap.js","webpack://@flarum/core/./node_modules/dayjs/dayjs.min.js","webpack://@flarum/core/./node_modules/dayjs/plugin/localizedFormat.js","webpack://@flarum/core/./node_modules/dayjs/plugin/relativeTime.js","webpack://@flarum/core/./node_modules/mousetrap/mousetrap.js-exposed","webpack://@flarum/core/./node_modules/dayjs/dayjs.min.js-exposed","webpack://@flarum/core/./node_modules/zepto/dist/zepto.js-exposed","webpack://@flarum/core/./node_modules/mithril/index.js-exposed","webpack://@flarum/core/./node_modules/m.attrs.bidi/bidi.js-exposed","webpack://@flarum/core/./node_modules/dayjs/dayjs.min.js-exposed?da0f","webpack://@flarum/core/./node_modules/mithril/api/mount-redraw.js","webpack://@flarum/core/./node_modules/mithril/api/router.js","webpack://@flarum/core/./node_modules/mithril/hyperscript.js","webpack://@flarum/core/./node_modules/mithril/mount-redraw.js","webpack://@flarum/core/./node_modules/mithril/pathname/assign.js","webpack://@flarum/core/./node_modules/mithril/pathname/build.js","webpack://@flarum/core/./node_modules/mithril/pathname/compileTemplate.js","webpack://@flarum/core/./node_modules/mithril/pathname/parse.js","webpack://@flarum/core/./node_modules/mithril/promise/polyfill.js","webpack://@flarum/core/./node_modules/mithril/promise/promise.js","webpack://@flarum/core/./node_modules/mithril/querystring/build.js","webpack://@flarum/core/./node_modules/mithril/querystring/parse.js","webpack://@flarum/core/./node_modules/mithril/render.js","webpack://@flarum/core/./node_modules/mithril/render/fragment.js","webpack://@flarum/core/./node_modules/mithril/render/hyperscript.js","webpack://@flarum/core/./node_modules/mithril/render/hyperscriptVnode.js","webpack://@flarum/core/./node_modules/mithril/render/render.js","webpack://@flarum/core/./node_modules/mithril/render/trust.js","webpack://@flarum/core/./node_modules/mithril/render/vnode.js","webpack://@flarum/core/./node_modules/mithril/request.js","webpack://@flarum/core/./node_modules/mithril/request/request.js","webpack://@flarum/core/./node_modules/mithril/route.js","webpack://@flarum/core/./node_modules/process/browser.js","webpack://@flarum/core/./node_modules/setimmediate/setImmediate.js","webpack://@flarum/core/./node_modules/timers-browserify/main.js","webpack://@flarum/core/(webpack)/buildin/global.js","webpack://@flarum/core/./node_modules/zepto/src/data.js","webpack://@flarum/core/./node_modules/zepto/src/fx.js","webpack://@flarum/core/./node_modules/zepto/src/fx_methods.js","webpack://@flarum/core/./node_modules/zepto/src/selector.js","webpack://@flarum/core/./src/common/index.ts","webpack://@flarum/core/./src/common/utils/patchMithril.ts","webpack://@flarum/core/external \"m\""],"names":["global","factory","define","window","Zepto","undefined","key","$","classList","emptyArray","concat","filter","slice","document","elementDisplay","classCache","cssNumber","fragmentRE","singleTagRE","tagExpanderRE","rootNodeRE","capitalRE","methodAttributes","adjacencyOperators","table","createElement","tableRow","containers","readyRE","simpleSelectorRE","class2type","toString","zepto","camelize","uniq","tempParent","propMap","isArray","Array","object","matches","element","selector","nodeType","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","call","match","parent","parentNode","temp","appendChild","qsa","indexOf","removeChild","type","obj","String","isFunction","value","isWindow","isDocument","DOCUMENT_NODE","isObject","isPlainObject","Object","getPrototypeOf","prototype","likeArray","length","compact","array","item","flatten","fn","apply","str","replace","chr","toUpperCase","dasherize","toLowerCase","idx","classRE","name","RegExp","maybeAddPx","defaultDisplay","nodeName","display","body","getComputedStyle","getPropertyValue","children","map","childNodes","node","Z","dom","i","len","fragment","html","properties","nodes","container","test","$1","innerHTML","each","attr","isZ","init","context","trim","find","ready","extend","target","source","deep","args","arguments","shift","forEach","arg","found","maybeID","maybeClass","nameOnly","isSimple","getElementById","getElementsByClassName","getElementsByTagName","querySelectorAll","filtered","contains","documentElement","funcArg","payload","setAttribute","removeAttribute","className","klass","svg","baseVal","deserializeValue","parseJSON","e","isEmptyObject","isNumeric","val","num","Number","isNaN","isFinite","inArray","elem","camelCase","uuid","support","expr","noop","elements","callback","values","push","grep","JSON","parse","split","constructor","reduce","sort","splice","toArray","el","readyState","addEventListener","get","size","remove","every","not","add","is","excludes","has","eq","first","last","result","$this","some","closest","collection","_","parents","ancestors","pluck","contents","contentDocument","siblings","child","empty","property","show","style","replaceWith","newContent","before","wrap","structure","func","clone","index","wrapAll","cloneNode","append","wrapInner","self","unwrap","hide","css","toggle","setting","prev","next","originHtml","text","newText","textContent","join","getAttribute","removeAttr","attribute","prop","removeProp","data","attrName","multiple","selected","offset","coordinates","coords","parentOffset","offsetParent","props","top","left","getBoundingClientRect","pageXOffset","pageYOffset","width","Math","round","height","computedStyle","removeProperty","cssText","hasClass","addClass","cls","newName","removeClass","toggleClass","when","names","scrollTop","hasScrollTop","scrollTo","scrollX","scrollLeft","hasScrollLeft","scrollY","position","parseFloat","detach","dimension","dimensionProperty","m","traverseNode","fun","operator","operatorIndex","inside","argType","arr","copyByClone","nextSibling","firstChild","parentInDocument","insertBefore","src","ownerDocument","defaultView","_zid","isString","handlers","specialEvents","focusinSupported","focus","blur","hover","mouseenter","mouseleave","click","mousedown","mouseup","mousemove","zid","findHandlers","event","ns","matcher","matcherFor","handler","sel","parts","eventCapture","captureSetting","del","realEvent","events","delegator","capture","id","set","related","relatedTarget","proxy","compatible","isImmediatePropagationStopped","_args","preventDefault","stopPropagation","removeEventListener","proxyFn","unshift","TypeError","bind","on","unbind","off","one","returnTrue","returnFalse","ignoreProperties","eventMethods","stopImmediatePropagation","isDefaultPrevented","predicate","sourceMethod","timeStamp","Date","now","defaultPrevented","returnValue","getPreventDefault","createProxy","originalEvent","delegate","undelegate","live","die","autoRemove","evt","currentTarget","liveFired","trigger","Event","dispatchEvent","triggerHandler","createEvent","bubbles","initEvent","jsonpID","rscript","scriptTypeRE","xmlTypeRE","jsonType","htmlType","blankRE","originAnchor","href","location","triggerAndReturn","eventName","triggerGlobal","settings","active","ajaxStart","ajaxStop","ajaxBeforeSend","xhr","beforeSend","ajaxSuccess","deferred","status","success","resolveWith","ajaxComplete","ajaxError","error","rejectWith","complete","ajaxDataFilter","dataFilter","ajaxJSONP","options","ajax","_callbackName","jsonpCallback","callbackName","script","originalCallback","responseData","abort","errorType","abortTimeout","promise","clearTimeout","url","head","timeout","setTimeout","ajaxSettings","XMLHttpRequest","accepts","json","xml","crossDomain","processData","cache","mimeToDataType","mime","appendQuery","query","serializeData","param","traditional","dataType","Deferred","urlAnchor","hashIndex","protocol","host","hasPlaceholder","jsonp","headers","setHeader","nativeSetHeader","setRequestHeader","mimeType","overrideMimeType","contentType","onreadystatechange","getResponseHeader","responseType","response","responseText","eval","responseXML","statusText","async","open","username","password","xhrFields","send","parseArguments","post","getJSON","load","escape","encodeURIComponent","serialize","params","scope","hash","serializeArray","field","disabled","checked","elm","submit","nativeGetComputedStyle","pseudoElement","_package","bidi","tag","attrs","multi","onchange","selectedOptions","x","oninput","option","view","ctrl","hyperscript","require","request","mountRedraw","trust","mount","route","render","redraw","parseQueryString","buildQueryString","parsePathname","buildPathname","vnode","PromisePolyfill","module","exports","_MAP","_KEYCODE_MAP","_SHIFT_MAP","_SPECIAL_ALIASES","navigator","platform","_REVERSE_MAP","_addEvent","attachEvent","_characterFromEvent","character","fromCharCode","which","shiftKey","_modifiersMatch","modifiers1","modifiers2","_eventModifiers","modifiers","altKey","ctrlKey","metaKey","_preventDefault","_stopPropagation","cancelBubble","_isModifier","_getReverseMap","hasOwnProperty","_pickBestAction","action","_keysFromString","combination","_getKeyInfo","keys","_belongsTo","ancestor","Mousetrap","targetElement","_callbacks","_directMap","_sequenceLevels","_resetTimer","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","level","seq","deleteCombo","combo","deleteSequence","_fireCallback","sequence","stopCallback","srcElement","_handleKey","callbacks","maxLevel","processedSequenceCallback","max","ignoreThisKeypress","_handleKeyEvent","keyCode","handleKey","_resetSequenceTimer","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","isFinal","wrappedCallback","_bindSingle","info","_bindMultiple","combinations","reset","composedPath","initialEventTarget","tagName","isContentEditable","addKeycodes","documentMousetrap","method","charAt","t","n","r","s","u","a","o","h","f","c","d","z","utcOffset","abs","floor","year","month","ceil","p","M","y","w","ms","Q","weekdays","months","l","v","g","format","pl","date","D","locale","$L","utc","$u","$d","NaN","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","day","hour","minute","second","millisecond","unix","valueOf","getTime","toDate","$locale","weekStart","$set","min","daysInMonth","subtract","substr","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","A","mm","ss","SSS","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","isDayjs","en","Ls","LTS","LT","L","LL","LLL","LLLL","formats","relativeTime","future","past","yy","to","from","toNow","fromNow","Vnode","schedule","console","subscriptions","rendering","pending","sync","Error","root","component","Promise","compileTemplate","assign","sentinel","$window","fireAsync","setPath","path","state","title","history","replaceState","prefix","pushState","currentResolver","currentPath","lastUpdate","SKIP","defaultRoute","routes","compiled","SyntaxError","check","callAsync","setImmediate","resolve","scheduled","onremove","defaultData","ReferenceError","resolveRoute","search","pathname","decodeURIComponent","fail","loop","matchedRoute","localComp","update","comp","onmatch","then","onbeforeupdate","oncreate","Link","onclick","oninit","onupdate","onbeforeremove","Boolean","handleEvent","button","requestAnimationFrame","template","queryIndex","queryEnd","pathEnd","resolved","variadic","newQueryIndex","newHashIndex","newQueryEnd","newPathEnd","querystring","templateData","templateKeys","regexp","extra","k","exec","executor","resolvers","rejectors","resolveCurrent","rejectCurrent","instance","_instance","list","shouldAbsorb","execute","executeOnce","retry","runs","run","onerror","onFulfilled","onRejection","handle","resolveNext","rejectNext","reject","catch","finally","reason","all","total","count","consume","race","destructure","string","entries","counters","entry","levels","cursor","pop","j","nextLevel","isNumber","parseInt","desc","getOwnPropertyDescriptor","hyperscriptVnode","normalizeChildren","selectorParser","selectorCache","hasOwn","isEmpty","compileSelector","classes","attrValue","execSelector","class","newAttrs","start","$doc","currentRedraw","nameSpace","math","getNameSpace","xmlns","checkState","original","callHook","activeElement","createNodes","vnodes","end","hooks","createNode","initLifecycle","createText","createHTML","createFragment","createComponent","createTextNode","insertNode","possibleParents","caption","thead","tbody","tfoot","tr","th","td","colgroup","col","domSize","createDocumentFragment","createElementNS","setAttrs","maybeSetContentEditable","setLateSelectAttrs","initComponent","create","$$reentrantLock$$","normalize","updateNodes","old","removeNodes","isOldKeyed","isKeyed","oldStart","commonLength","getNextSibling","removeNode","updateNode","oldEnd","oe","ve","topSibling","moveNodes","originalNextSibling","vnodesLength","oldIndices","li","pos","matched","lisIndices","getKeyMap","oldIndex","makeLisIndices","oldTag","shouldNotUpdate","updateLifecycle","updateText","updateHTML","updateFragment","updateElement","updateComponent","nodeValue","removeHTML","updateAttrs","lisTemp","il","frag","moveChildToFrag","contenteditable","contentEditable","content","mask","stateResult","attrsResult","reallyRemove","setAttr","isLifecycleMethod","isFormAttribute","updateEvent","setAttributeNS","updateStyle","hasPropertyKey","selectedIndex","nsLastIndex","normalized","uppercaseRegex","capital","normalizeKey","setProperty","EventDict","ev","force","namespace","namespaceURI","prevRedraw","input","oncompletion","callbackCount","PromiseProxy","__proto__","makeRequest","background","hasHeader","assumeJSON","FormData","extract","aborted","replacedAbort","user","deserialize","withCredentials","message","code","config","stringify","random","callbackKey","process","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","nextTick","Item","browser","env","argv","version","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","nextHandle","tasksByHandle","currentlyRunningATask","doc","registerImmediate","Function","task","clearImmediate","runIfPresent","installNextTickImplementation","canUsePostMessage","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","installPostMessageImplementation","messagePrefix","onGlobalMessage","installMessageChannelImplementation","channel","MessageChannel","port1","port2","installReadyStateChangeImplementation","installSetTimeoutImplementation","attachTo","Timeout","setInterval","clearInterval","close","clearFn","_id","_clearFn","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","onTimeout","_onTimeout","dataAttr","exp","expando","getData","store","setData","camelName","attributeData","attributes","hasData","removeData","methodName","origFn","eventPrefix","vendors","Webkit","Moz","O","testEl","supportedTransforms","transform","transitionProperty","transitionDuration","transitionTiming","transitionDelay","animationName","animationDuration","animationTiming","animationDelay","cssReset","normalizeEvent","vendor","fx","speeds","_default","fast","slow","cssPrefix","transitionEnd","animationEnd","animate","duration","ease","delay","easing","anim","cssValues","cssProperties","transforms","that","endEvent","fired","clientLeft","docElem","origShow","origHide","origToggle","speed","opacity","scale","fadeTo","fadeIn","fadeOut","fadeToggle","oldQsa","oldMatches","visible","filters","hidden","filterRe","childRe","classTag","taggedParent","dayjs","localizedFormat","patchMithril"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.ts\");\n","/*\r\n * This file is part of Flarum.\r\n *\r\n * (c) Toby Zerner \r\n *\r\n * For the full copyright and license information, please view the LICENSE\r\n * file that was distributed with this source code.\r\n */\r\n\r\nexport * from './src/common';\r\nexport * from './src/admin';","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\n(function(global, factory) {\n if (typeof define === 'function' && define.amd)\n define(function() { return factory(global) })\n else\n factory(global)\n}(this, function(window) {\n var Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nwindow.Zepto = Zepto\nwindow.$ === undefined && (window.$ = Zepto)\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == 'string' },\n handlers = {},\n specialEvents={},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = ('' + event).split('.')\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == 'ready') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n e.data = data\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if ('addEventListener' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || '').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if ('removeEventListener' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError(\"expected function\")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n event.timeStamp || (event.timeStamp = Date.now())\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n\n;(function($){\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a')\n\n originAnchor.href = window.location.href\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName)\n $(context).trigger(event, data)\n return !event.isDefaultPrevented()\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\n }\n\n // Number of active Ajax requests\n $.active = 0\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart')\n }\n function ajaxStop(settings) {\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop')\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context\n if (settings.beforeSend.call(context, xhr, settings) === false ||\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false)\n return false\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings])\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context, status = 'success'\n settings.success.call(context, data, status, xhr)\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data])\n ajaxComplete(status, xhr, settings)\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context\n settings.error.call(context, xhr, type, error)\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type])\n ajaxComplete(type, xhr, settings)\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context\n settings.complete.call(context, xhr, status)\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings])\n ajaxStop(settings)\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data\n var context = settings.context\n return settings.dataFilter.call(context, data, type)\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function(options, deferred){\n if (!('type' in options)) return $.ajax(options)\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ?\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function(errorType) {\n $(script).triggerHandler('error', errorType || 'abort')\n },\n xhr = { abort: abort }, abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n $(script).on('load error', function(e, errorType){\n clearTimeout(abortTimeout)\n $(script).off().remove()\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred)\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred)\n }\n\n window[callbackName] = originalCallback\n if (responseData && $.isFunction(originalCallback))\n originalCallback(responseData[0])\n\n originalCallback = responseData = undefined\n })\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort')\n return xhr\n }\n\n window[callbackName] = function(){\n responseData = arguments\n }\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName)\n document.head.appendChild(script)\n\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\n abort('timeout')\n }, options.timeout)\n\n return xhr\n }\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function () {\n return new window.XMLHttpRequest()\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n }\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(';', 2)[0]\n return mime && ( mime == htmlType ? 'html' :\n mime == jsonType ? 'json' :\n scriptTypeRE.test(mime) ? 'script' :\n xmlTypeRE.test(mime) && 'xml' ) || 'text'\n }\n\n function appendQuery(url, query) {\n if (query == '') return url\n return (url + '&' + query).replace(/[&?]{1,2}/, '?')\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != \"string\")\n options.data = $.param(options.data, options.traditional)\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType))\n options.url = appendQuery(options.url, options.data), options.data = undefined\n }\n\n $.ajax = function(options){\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor, hashIndex\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\n\n ajaxStart(settings)\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a')\n urlAnchor.href = settings.url\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host)\n }\n\n if (!settings.url) settings.url = window.location.toString()\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex)\n serializeData(settings)\n\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\n if (hasPlaceholder) dataType = 'jsonp'\n\n if (settings.cache === false || (\n (!options || options.cache !== true) &&\n ('script' == dataType || 'jsonp' == dataType)\n ))\n settings.url = appendQuery(settings.url, '_=' + Date.now())\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder)\n settings.url = appendQuery(settings.url,\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?')\n return $.ajaxJSONP(settings, deferred)\n }\n\n var mime = settings.accepts[dataType],\n headers = { },\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest')\n setHeader('Accept', mime || '*/*')\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0]\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\n }\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))\n setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')\n\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\n xhr.setRequestHeader = setHeader\n\n xhr.onreadystatechange = function(){\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty\n clearTimeout(abortTimeout)\n var result, error = false\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'))\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob')\n result = xhr.response\n else {\n result = xhr.responseText\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings)\n if (dataType == 'script') (1,eval)(result)\n else if (dataType == 'xml') result = xhr.responseXML\n else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result)\n } catch (e) { error = e }\n\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred)\n }\n\n ajaxSuccess(result, xhr, settings, deferred)\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred)\n }\n }\n }\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort()\n ajaxError(null, 'abort', xhr, settings, deferred)\n return xhr\n }\n\n var async = 'async' in settings ? settings.async : true\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\n\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\n\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\n\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\n xhr.onreadystatechange = empty\n xhr.abort()\n ajaxError(null, 'timeout', xhr, settings, deferred)\n }, settings.timeout)\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null)\n return xhr\n }\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\n if (!$.isFunction(success)) dataType = success, success = undefined\n return {\n url: url\n , data: data\n , success: success\n , dataType: dataType\n }\n }\n\n $.get = function(/* url, data, success, dataType */){\n return $.ajax(parseArguments.apply(null, arguments))\n }\n\n $.post = function(/* url, data, success, dataType */){\n var options = parseArguments.apply(null, arguments)\n options.type = 'POST'\n return $.ajax(options)\n }\n\n $.getJSON = function(/* url, data, success */){\n var options = parseArguments.apply(null, arguments)\n options.dataType = 'json'\n return $.ajax(options)\n }\n\n $.fn.load = function(url, data, success){\n if (!this.length) return this\n var self = this, parts = url.split(/\\s/), selector,\n options = parseArguments(url, data, success),\n callback = options.success\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\n options.success = function(response){\n self.html(selector ?\n $('
').html(response.replace(rscript, \"\")).find(selector)\n : response)\n callback && callback.apply(self, arguments)\n }\n $.ajax(options)\n return this\n }\n\n var escape = encodeURIComponent\n\n function serialize(params, obj, traditional, scope){\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\n $.each(obj, function(key, value) {\n type = $.type(value)\n if (scope) key = traditional ? scope :\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']'\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value)\n // recurse into nested objects\n else if (type == \"array\" || (!traditional && type == \"object\"))\n serialize(params, value, traditional, key)\n else params.add(key, value)\n })\n }\n\n $.param = function(obj, traditional){\n var params = []\n params.add = function(key, value) {\n if ($.isFunction(value)) value = value()\n if (value == null) value = \"\"\n this.push(escape(key) + '=' + escape(value))\n }\n serialize(params, obj, traditional)\n return params.join('&').replace(/%20/g, '+')\n }\n})(Zepto)\n\n;(function($){\n $.fn.serializeArray = function() {\n var name, type, result = [],\n add = function(value) {\n if (value.forEach) return value.forEach(add)\n result.push({ name: name, value: value })\n }\n if (this[0]) $.each(this[0].elements, function(_, field){\n type = field.type, name = field.name\n if (name && field.nodeName.toLowerCase() != 'fieldset' &&\n !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' &&\n ((type != 'radio' && type != 'checkbox') || field.checked))\n add($(field).val())\n })\n return result\n }\n\n $.fn.serialize = function(){\n var result = []\n this.serializeArray().forEach(function(elm){\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value))\n })\n return result.join('&')\n }\n\n $.fn.submit = function(callback) {\n if (0 in arguments) this.bind('submit', callback)\n else if (this.length) {\n var event = $.Event('submit')\n this.eq(0).trigger(event)\n if (!event.isDefaultPrevented()) this.get(0).submit()\n }\n return this\n }\n\n})(Zepto)\n\n;(function(){\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined)\n } catch(e) {\n var nativeGetComputedStyle = getComputedStyle\n window.getComputedStyle = function(element, pseudoElement){\n try {\n return nativeGetComputedStyle(element, pseudoElement)\n } catch(e) {\n return null\n }\n }\n }\n})()\n return Zepto\n}))\n\n}.call(window));","( function _package( factory ){\r\n\tif( typeof define === 'function' && define.amd ){\r\n\t\tdefine( [ 'mithril' ], factory )\r\n\t}\r\n\telse if( typeof exports === 'object' ){\r\n\t\tmodule.exports = factory( require( 'mithril' ) )\r\n\t}\r\n\telse{\r\n\t\tfactory( m )\r\n\t}\r\n}( function define( m ){\r\n\tfunction bidi( node, prop ){\r\n\t\tvar type = node.tag === 'select'\r\n\t\t\t? node.attrs.multi\r\n\t\t\t\t? 'multi'\r\n\t\t\t\t: 'select'\r\n\t\t\t: node.attrs.type\r\n\r\n\t\t// Setup: bind listeners\r\n\t\tif( type === 'multi' ){\r\n\t\t\tnode.attrs.onchange = function(){\r\n\t\t\t\tprop( [].slice.call( this.selectedOptions, function( x ){\r\n\t\t\t\t\treturn x.value\r\n\t\t\t\t} ) )\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if( type === 'select' ){\r\n\t\t\tnode.attrs.onchange = function( e ){\r\n\t\t\t\tprop( this.selectedOptions[ 0 ].value )\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if( type === 'checkbox' ){\r\n\t\t\tnode.attrs.onchange = function( e ){\r\n\t\t\t\tprop( this.checked )\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tnode.attrs.onchange = node.attrs.oninput = function( e ){\r\n\t\t\t\tprop( this.value )\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif( node.tag === 'select' ){\r\n\t\t\tnode.children.forEach( function( option ){\r\n\t\t\t\tif( option.attrs.value === prop() || option.children[ 0 ] === prop() ){\r\n\t\t\t\t\toption.attrs.selected = true\r\n\t\t\t\t}\r\n\t\t\t} )\r\n\t\t}\r\n\t\telse if( type === 'checkbox' ){\r\n\t\t\tnode.attrs.checked = prop()\r\n\t\t}\r\n\t\telse if( type === 'radio' ){\r\n\t\t\tnode.attrs.checked = prop() === node.attrs.value\r\n\t\t}\r\n\t\telse {\r\n\t\t\tnode.attrs.value = prop()\r\n\t\t}\r\n\r\n\t\treturn node\r\n\t}\r\n\r\n\tbidi.view = function( ctrl, node, prop ){\r\n\t return bidi( node, node.attrs.bidi )\r\n\t}\r\n\r\n\tif( m.attrs ) m.attrs.bidi = bidi\r\n\t\r\n\tm.bidi = bidi\r\n\r\n\treturn bidi\r\n} ) )\r\n","\"use strict\"\n\nvar hyperscript = require(\"./hyperscript\")\nvar request = require(\"./request\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nvar m = function m() { return hyperscript.apply(this, arguments) }\nm.m = hyperscript\nm.trust = hyperscript.trust\nm.fragment = hyperscript.fragment\nm.mount = mountRedraw.mount\nm.route = require(\"./route\")\nm.render = require(\"./render\")\nm.redraw = mountRedraw.redraw\nm.request = request.request\nm.jsonp = request.jsonp\nm.parseQueryString = require(\"./querystring/parse\")\nm.buildQueryString = require(\"./querystring/build\")\nm.parsePathname = require(\"./pathname/parse\")\nm.buildPathname = require(\"./pathname/build\")\nm.vnode = require(\"./render/vnode\")\nm.PromisePolyfill = require(\"./promise/polyfill\")\n\nmodule.exports = m\n","/*global define:false */\n/**\n * Copyright 2012-2017 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.6.3\n * @url craig.is/killing/mice\n */\n(function(window, document, undefined) {\n\n // Check if mousetrap is used inside browser, if not, return\n if (!window) {\n return;\n }\n\n /**\n * mapping of special keycodes to their corresponding keys\n *\n * everything in this dictionary cannot use keypress events\n * so it has to be here to map to the correct keycodes for\n * keyup/keydown events\n *\n * @type {Object}\n */\n var _MAP = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'ins',\n 46: 'del',\n 91: 'meta',\n 93: 'meta',\n 224: 'meta'\n };\n\n /**\n * mapping for special characters so they can support\n *\n * this dictionary is only used incase you want to bind a\n * keyup or keydown event to one of these keys\n *\n * @type {Object}\n */\n var _KEYCODE_MAP = {\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111 : '/',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: '\\''\n };\n\n /**\n * this is a mapping of keys that require shift on a US keypad\n * back to the non shift equivelents\n *\n * this is so you can use keyup events with these keys\n *\n * note that this will only work reliably on US keyboards\n *\n * @type {Object}\n */\n var _SHIFT_MAP = {\n '~': '`',\n '!': '1',\n '@': '2',\n '#': '3',\n '$': '4',\n '%': '5',\n '^': '6',\n '&': '7',\n '*': '8',\n '(': '9',\n ')': '0',\n '_': '-',\n '+': '=',\n ':': ';',\n '\\\"': '\\'',\n '<': ',',\n '>': '.',\n '?': '/',\n '|': '\\\\'\n };\n\n /**\n * this is a list of special strings you can use to map\n * to modifier keys when you specify your keyboard shortcuts\n *\n * @type {Object}\n */\n var _SPECIAL_ALIASES = {\n 'option': 'alt',\n 'command': 'meta',\n 'return': 'enter',\n 'escape': 'esc',\n 'plus': '+',\n 'mod': /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl'\n };\n\n /**\n * variable to store the flipped version of _MAP from above\n * needed to check if we should use keypress or not when no action\n * is specified\n *\n * @type {Object|undefined}\n */\n var _REVERSE_MAP;\n\n /**\n * loop through the f keys, f1 to f19 and add them to the map\n * programatically\n */\n for (var i = 1; i < 20; ++i) {\n _MAP[111 + i] = 'f' + i;\n }\n\n /**\n * loop through to map numbers on the numeric keypad\n */\n for (i = 0; i <= 9; ++i) {\n\n // This needs to use a string cause otherwise since 0 is falsey\n // mousetrap will never fire for numpad 0 pressed as part of a keydown\n // event.\n //\n // @see https://github.com/ccampbell/mousetrap/pull/258\n _MAP[i + 96] = i.toString();\n }\n\n /**\n * cross browser add event method\n *\n * @param {Element|HTMLDocument} object\n * @param {string} type\n * @param {Function} callback\n * @returns void\n */\n function _addEvent(object, type, callback) {\n if (object.addEventListener) {\n object.addEventListener(type, callback, false);\n return;\n }\n\n object.attachEvent('on' + type, callback);\n }\n\n /**\n * takes the event and returns the key character\n *\n * @param {Event} e\n * @return {string}\n */\n function _characterFromEvent(e) {\n\n // for keypress events we should return the character as is\n if (e.type == 'keypress') {\n var character = String.fromCharCode(e.which);\n\n // if the shift key is not pressed then it is safe to assume\n // that we want the character to be lowercase. this means if\n // you accidentally have caps lock on then your key bindings\n // will continue to work\n //\n // the only side effect that might not be desired is if you\n // bind something like 'A' cause you want to trigger an\n // event when capital A is pressed caps lock will no longer\n // trigger the event. shift+a will though.\n if (!e.shiftKey) {\n character = character.toLowerCase();\n }\n\n return character;\n }\n\n // for non keypress events the special maps are needed\n if (_MAP[e.which]) {\n return _MAP[e.which];\n }\n\n if (_KEYCODE_MAP[e.which]) {\n return _KEYCODE_MAP[e.which];\n }\n\n // if it is not in the special map\n\n // with keydown and keyup events the character seems to always\n // come in as an uppercase character whether you are pressing shift\n // or not. we should make sure it is always lowercase for comparisons\n return String.fromCharCode(e.which).toLowerCase();\n }\n\n /**\n * checks if two arrays are equal\n *\n * @param {Array} modifiers1\n * @param {Array} modifiers2\n * @returns {boolean}\n */\n function _modifiersMatch(modifiers1, modifiers2) {\n return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n }\n\n /**\n * takes a key event and figures out what the modifiers are\n *\n * @param {Event} e\n * @returns {Array}\n */\n function _eventModifiers(e) {\n var modifiers = [];\n\n if (e.shiftKey) {\n modifiers.push('shift');\n }\n\n if (e.altKey) {\n modifiers.push('alt');\n }\n\n if (e.ctrlKey) {\n modifiers.push('ctrl');\n }\n\n if (e.metaKey) {\n modifiers.push('meta');\n }\n\n return modifiers;\n }\n\n /**\n * prevents default for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n return;\n }\n\n e.returnValue = false;\n }\n\n /**\n * stops propogation for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n return;\n }\n\n e.cancelBubble = true;\n }\n\n /**\n * determines if the keycode specified is a modifier key or not\n *\n * @param {string} key\n * @returns {boolean}\n */\n function _isModifier(key) {\n return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';\n }\n\n /**\n * reverses the map lookup so that we can look for specific keys\n * to see what can and can't use keypress\n *\n * @return {Object}\n */\n function _getReverseMap() {\n if (!_REVERSE_MAP) {\n _REVERSE_MAP = {};\n for (var key in _MAP) {\n\n // pull out the numeric keypad from here cause keypress should\n // be able to detect the keys from the character\n if (key > 95 && key < 112) {\n continue;\n }\n\n if (_MAP.hasOwnProperty(key)) {\n _REVERSE_MAP[_MAP[key]] = key;\n }\n }\n }\n return _REVERSE_MAP;\n }\n\n /**\n * picks the best action based on the key combination\n *\n * @param {string} key - character for key\n * @param {Array} modifiers\n * @param {string=} action passed in\n */\n function _pickBestAction(key, modifiers, action) {\n\n // if no action was picked in we should try to pick the one\n // that we think would work best for this key\n if (!action) {\n action = _getReverseMap()[key] ? 'keydown' : 'keypress';\n }\n\n // modifier keys don't work as expected with keypress,\n // switch to keydown\n if (action == 'keypress' && modifiers.length) {\n action = 'keydown';\n }\n\n return action;\n }\n\n /**\n * Converts from a string key combination to an array\n *\n * @param {string} combination like \"command+shift+l\"\n * @return {Array}\n */\n function _keysFromString(combination) {\n if (combination === '+') {\n return ['+'];\n }\n\n combination = combination.replace(/\\+{2}/g, '+plus');\n return combination.split('+');\n }\n\n /**\n * Gets info for a specific key combination\n *\n * @param {string} combination key combination (\"command+s\" or \"a\" or \"*\")\n * @param {string=} action\n * @returns {Object}\n */\n function _getKeyInfo(combination, action) {\n var keys;\n var key;\n var i;\n var modifiers = [];\n\n // take the keys from this pattern and figure out what the actual\n // pattern is all about\n keys = _keysFromString(combination);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n // normalize key names\n if (_SPECIAL_ALIASES[key]) {\n key = _SPECIAL_ALIASES[key];\n }\n\n // if this is not a keypress event then we should\n // be smart about using shift keys\n // this will only work for US keyboards however\n if (action && action != 'keypress' && _SHIFT_MAP[key]) {\n key = _SHIFT_MAP[key];\n modifiers.push('shift');\n }\n\n // if this key is a modifier then add it to the list of modifiers\n if (_isModifier(key)) {\n modifiers.push(key);\n }\n }\n\n // depending on what the key combination is\n // we will try to pick the best event for it\n action = _pickBestAction(key, modifiers, action);\n\n return {\n key: key,\n modifiers: modifiers,\n action: action\n };\n }\n\n function _belongsTo(element, ancestor) {\n if (element === null || element === document) {\n return false;\n }\n\n if (element === ancestor) {\n return true;\n }\n\n return _belongsTo(element.parentNode, ancestor);\n }\n\n function Mousetrap(targetElement) {\n var self = this;\n\n targetElement = targetElement || document;\n\n if (!(self instanceof Mousetrap)) {\n return new Mousetrap(targetElement);\n }\n\n /**\n * element to attach key events to\n *\n * @type {Element}\n */\n self.target = targetElement;\n\n /**\n * a list of all the callbacks setup via Mousetrap.bind()\n *\n * @type {Object}\n */\n self._callbacks = {};\n\n /**\n * direct map of string combinations to callbacks used for trigger()\n *\n * @type {Object}\n */\n self._directMap = {};\n\n /**\n * keeps track of what level each sequence is at since multiple\n * sequences can start out with the same sequence\n *\n * @type {Object}\n */\n var _sequenceLevels = {};\n\n /**\n * variable to store the setTimeout call\n *\n * @type {null|number}\n */\n var _resetTimer;\n\n /**\n * temporary state where we will ignore the next keyup\n *\n * @type {boolean|string}\n */\n var _ignoreNextKeyup = false;\n\n /**\n * temporary state where we will ignore the next keypress\n *\n * @type {boolean}\n */\n var _ignoreNextKeypress = false;\n\n /**\n * are we currently inside of a sequence?\n * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n *\n * @type {boolean|string}\n */\n var _nextExpectedAction = false;\n\n /**\n * resets all sequence counters except for the ones passed in\n *\n * @param {Object} doNotReset\n * @returns void\n */\n function _resetSequences(doNotReset) {\n doNotReset = doNotReset || {};\n\n var activeSequences = false,\n key;\n\n for (key in _sequenceLevels) {\n if (doNotReset[key]) {\n activeSequences = true;\n continue;\n }\n _sequenceLevels[key] = 0;\n }\n\n if (!activeSequences) {\n _nextExpectedAction = false;\n }\n }\n\n /**\n * finds all callbacks that match based on the keycode, modifiers,\n * and action\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event|Object} e\n * @param {string=} sequenceName - name of the sequence we are looking for\n * @param {string=} combination\n * @param {number=} level\n * @returns {Array}\n */\n function _getMatches(character, modifiers, e, sequenceName, combination, level) {\n var i;\n var callback;\n var matches = [];\n var action = e.type;\n\n // if there are no events related to this keycode\n if (!self._callbacks[character]) {\n return [];\n }\n\n // if a modifier key is coming up on its own we should allow it\n if (action == 'keyup' && _isModifier(character)) {\n modifiers = [character];\n }\n\n // loop through all callbacks for the key that was pressed\n // and see if any of them match\n for (i = 0; i < self._callbacks[character].length; ++i) {\n callback = self._callbacks[character][i];\n\n // if a sequence name is not specified, but this is a sequence at\n // the wrong level then move onto the next match\n if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {\n continue;\n }\n\n // if the action we are looking for doesn't match the action we got\n // then we should keep going\n if (action != callback.action) {\n continue;\n }\n\n // if this is a keypress event and the meta key and control key\n // are not pressed that means that we need to only look at the\n // character, otherwise check the modifiers as well\n //\n // chrome will not fire a keypress if meta or control is down\n // safari will fire a keypress if meta or meta+shift is down\n // firefox will fire a keypress if meta or control is down\n if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {\n\n // when you bind a combination or sequence a second time it\n // should overwrite the first one. if a sequenceName or\n // combination is specified in this call it does just that\n //\n // @todo make deleting its own method?\n var deleteCombo = !sequenceName && callback.combo == combination;\n var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;\n if (deleteCombo || deleteSequence) {\n self._callbacks[character].splice(i, 1);\n }\n\n matches.push(callback);\n }\n }\n\n return matches;\n }\n\n /**\n * actually calls the callback function\n *\n * if your callback function returns false this will use the jquery\n * convention - prevent default and stop propogation on the event\n *\n * @param {Function} callback\n * @param {Event} e\n * @returns void\n */\n function _fireCallback(callback, e, combo, sequence) {\n\n // if this event should not happen stop here\n if (self.stopCallback(e, e.target || e.srcElement, combo, sequence)) {\n return;\n }\n\n if (callback(e, combo) === false) {\n _preventDefault(e);\n _stopPropagation(e);\n }\n }\n\n /**\n * handles a character key event\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event} e\n * @returns void\n */\n self._handleKey = function(character, modifiers, e) {\n var callbacks = _getMatches(character, modifiers, e);\n var i;\n var doNotReset = {};\n var maxLevel = 0;\n var processedSequenceCallback = false;\n\n // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n for (i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].seq) {\n maxLevel = Math.max(maxLevel, callbacks[i].level);\n }\n }\n\n // loop through matching callbacks for this key event\n for (i = 0; i < callbacks.length; ++i) {\n\n // fire for all sequence callbacks\n // this is because if for example you have multiple sequences\n // bound such as \"g i\" and \"g t\" they both need to fire the\n // callback for matching g cause otherwise you can only ever\n // match the first one\n if (callbacks[i].seq) {\n\n // only fire callbacks for the maxLevel to prevent\n // subsequences from also firing\n //\n // for example 'a option b' should not cause 'option b' to fire\n // even though 'option b' is part of the other sequence\n //\n // any sequences that do not match here will be discarded\n // below by the _resetSequences call\n if (callbacks[i].level != maxLevel) {\n continue;\n }\n\n processedSequenceCallback = true;\n\n // keep a list of which sequences were matches for later\n doNotReset[callbacks[i].seq] = 1;\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);\n continue;\n }\n\n // if there were no sequence matches but we are still here\n // that means this is a regular match so we should fire that\n if (!processedSequenceCallback) {\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n }\n }\n\n // if the key you pressed matches the type of sequence without\n // being a modifier (ie \"keyup\" or \"keypress\") then we should\n // reset all sequences that were not matched by this event\n //\n // this is so, for example, if you have the sequence \"h a t\" and you\n // type \"h e a r t\" it does not match. in this case the \"e\" will\n // cause the sequence to reset\n //\n // modifier keys are ignored because you can have a sequence\n // that contains modifiers such as \"enter ctrl+space\" and in most\n // cases the modifier key will be pressed before the next key\n //\n // also if you have a sequence such as \"ctrl+b a\" then pressing the\n // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n //\n // the \"keydown\" is expected when there is a modifier, but the\n // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n // after and that causes the sequence to reset\n //\n // we ignore keypresses in a sequence that directly follow a keydown\n // for the same character\n var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;\n if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {\n _resetSequences(doNotReset);\n }\n\n _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';\n };\n\n /**\n * handles a keydown event\n *\n * @param {Event} e\n * @returns void\n */\n function _handleKeyEvent(e) {\n\n // normalize e.which for key events\n // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n if (typeof e.which !== 'number') {\n e.which = e.keyCode;\n }\n\n var character = _characterFromEvent(e);\n\n // no character found then stop\n if (!character) {\n return;\n }\n\n // need to use === for the character check because the character can be 0\n if (e.type == 'keyup' && _ignoreNextKeyup === character) {\n _ignoreNextKeyup = false;\n return;\n }\n\n self.handleKey(character, _eventModifiers(e), e);\n }\n\n /**\n * called to set a 1 second timeout on the specified sequence\n *\n * this is so after each key press in the sequence you have 1 second\n * to press the next key before you have to start over\n *\n * @returns void\n */\n function _resetSequenceTimer() {\n clearTimeout(_resetTimer);\n _resetTimer = setTimeout(_resetSequences, 1000);\n }\n\n /**\n * binds a key sequence to an event\n *\n * @param {string} combo - combo specified in bind call\n * @param {Array} keys\n * @param {Function} callback\n * @param {string=} action\n * @returns void\n */\n function _bindSequence(combo, keys, callback, action) {\n\n // start off by adding a sequence level record for this combination\n // and setting the level to 0\n _sequenceLevels[combo] = 0;\n\n /**\n * callback to increase the sequence level for this sequence and reset\n * all other sequences that were active\n *\n * @param {string} nextAction\n * @returns {Function}\n */\n function _increaseSequence(nextAction) {\n return function() {\n _nextExpectedAction = nextAction;\n ++_sequenceLevels[combo];\n _resetSequenceTimer();\n };\n }\n\n /**\n * wraps the specified callback inside of another function in order\n * to reset all sequence counters as soon as this sequence is done\n *\n * @param {Event} e\n * @returns void\n */\n function _callbackAndReset(e) {\n _fireCallback(callback, e, combo);\n\n // we should ignore the next key up if the action is key down\n // or keypress. this is so if you finish a sequence and\n // release the key the final key will not trigger a keyup\n if (action !== 'keyup') {\n _ignoreNextKeyup = _characterFromEvent(e);\n }\n\n // weird race condition if a sequence ends with the key\n // another sequence begins with\n setTimeout(_resetSequences, 10);\n }\n\n // loop through keys one at a time and bind the appropriate callback\n // function. for any key leading up to the final one it should\n // increase the sequence. after the final, it should reset all sequences\n //\n // if an action is specified in the original bind call then that will\n // be used throughout. otherwise we will pass the action that the\n // next key in the sequence should match. this allows a sequence\n // to mix and match keypress and keydown events depending on which\n // ones are better suited to the key provided\n for (var i = 0; i < keys.length; ++i) {\n var isFinal = i + 1 === keys.length;\n var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);\n _bindSingle(keys[i], wrappedCallback, action, combo, i);\n }\n }\n\n /**\n * binds a single keyboard combination\n *\n * @param {string} combination\n * @param {Function} callback\n * @param {string=} action\n * @param {string=} sequenceName - name of sequence if part of sequence\n * @param {number=} level - what part of the sequence the command is\n * @returns void\n */\n function _bindSingle(combination, callback, action, sequenceName, level) {\n\n // store a direct mapped reference for use with Mousetrap.trigger\n self._directMap[combination + ':' + action] = callback;\n\n // make sure multiple spaces in a row become a single space\n combination = combination.replace(/\\s+/g, ' ');\n\n var sequence = combination.split(' ');\n var info;\n\n // if this pattern is a sequence of keys then run through this method\n // to reprocess each pattern one key at a time\n if (sequence.length > 1) {\n _bindSequence(combination, sequence, callback, action);\n return;\n }\n\n info = _getKeyInfo(combination, action);\n\n // make sure to initialize array if this is the first time\n // a callback is added for this key\n self._callbacks[info.key] = self._callbacks[info.key] || [];\n\n // remove an existing match if there is one\n _getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);\n\n // add this call back to the array\n // if it is a sequence put it at the beginning\n // if not put it at the end\n //\n // this is important because the way these are processed expects\n // the sequence ones to come first\n self._callbacks[info.key][sequenceName ? 'unshift' : 'push']({\n callback: callback,\n modifiers: info.modifiers,\n action: info.action,\n seq: sequenceName,\n level: level,\n combo: combination\n });\n }\n\n /**\n * binds multiple combinations to the same callback\n *\n * @param {Array} combinations\n * @param {Function} callback\n * @param {string|undefined} action\n * @returns void\n */\n self._bindMultiple = function(combinations, callback, action) {\n for (var i = 0; i < combinations.length; ++i) {\n _bindSingle(combinations[i], callback, action);\n }\n };\n\n // start!\n _addEvent(targetElement, 'keypress', _handleKeyEvent);\n _addEvent(targetElement, 'keydown', _handleKeyEvent);\n _addEvent(targetElement, 'keyup', _handleKeyEvent);\n }\n\n /**\n * binds an event to mousetrap\n *\n * can be a single key, a combination of keys separated with +,\n * an array of keys, or a sequence of keys separated by spaces\n *\n * be sure to list the modifier keys first to make sure that the\n * correct key ends up getting bound (the last key in the pattern)\n *\n * @param {string|Array} keys\n * @param {Function} callback\n * @param {string=} action - 'keypress', 'keydown', or 'keyup'\n * @returns void\n */\n Mousetrap.prototype.bind = function(keys, callback, action) {\n var self = this;\n keys = keys instanceof Array ? keys : [keys];\n self._bindMultiple.call(self, keys, callback, action);\n return self;\n };\n\n /**\n * unbinds an event to mousetrap\n *\n * the unbinding sets the callback function of the specified key combo\n * to an empty function and deletes the corresponding key in the\n * _directMap dict.\n *\n * TODO: actually remove this from the _callbacks dictionary instead\n * of binding an empty function\n *\n * the keycombo+action has to be exactly the same as\n * it was defined in the bind method\n *\n * @param {string|Array} keys\n * @param {string} action\n * @returns void\n */\n Mousetrap.prototype.unbind = function(keys, action) {\n var self = this;\n return self.bind.call(self, keys, function() {}, action);\n };\n\n /**\n * triggers an event that has already been bound\n *\n * @param {string} keys\n * @param {string=} action\n * @returns void\n */\n Mousetrap.prototype.trigger = function(keys, action) {\n var self = this;\n if (self._directMap[keys + ':' + action]) {\n self._directMap[keys + ':' + action]({}, keys);\n }\n return self;\n };\n\n /**\n * resets the library back to its initial state. this is useful\n * if you want to clear out the current keyboard shortcuts and bind\n * new ones - for example if you switch to another page\n *\n * @returns void\n */\n Mousetrap.prototype.reset = function() {\n var self = this;\n self._callbacks = {};\n self._directMap = {};\n return self;\n };\n\n /**\n * should we stop this event before firing off callbacks\n *\n * @param {Event} e\n * @param {Element} element\n * @return {boolean}\n */\n Mousetrap.prototype.stopCallback = function(e, element) {\n var self = this;\n\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n if (_belongsTo(element, self.target)) {\n return false;\n }\n\n // Events originating from a shadow DOM are re-targetted and `e.target` is the shadow host,\n // not the initial event target in the shadow tree. Note that not all events cross the\n // shadow boundary.\n // For shadow trees with `mode: 'open'`, the initial event target is the first element in\n // the event’s composed path. For shadow trees with `mode: 'closed'`, the initial event\n // target cannot be obtained.\n if ('composedPath' in e && typeof e.composedPath === 'function') {\n // For open shadow trees, update `element` so that the following check works.\n var initialEventTarget = e.composedPath()[0];\n if (initialEventTarget !== e.target) {\n element = initialEventTarget;\n }\n }\n\n // stop for input, select, and textarea\n return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;\n };\n\n /**\n * exposes _handleKey publicly so it can be overwritten by extensions\n */\n Mousetrap.prototype.handleKey = function() {\n var self = this;\n return self._handleKey.apply(self, arguments);\n };\n\n /**\n * allow custom key mappings\n */\n Mousetrap.addKeycodes = function(object) {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n _MAP[key] = object[key];\n }\n }\n _REVERSE_MAP = null;\n };\n\n /**\n * Init the global mousetrap functions\n *\n * This method is needed to allow the global mousetrap functions to work\n * now that mousetrap is a constructor function.\n */\n Mousetrap.init = function() {\n var documentMousetrap = Mousetrap(document);\n for (var method in documentMousetrap) {\n if (method.charAt(0) !== '_') {\n Mousetrap[method] = (function(method) {\n return function() {\n return documentMousetrap[method].apply(documentMousetrap, arguments);\n };\n } (method));\n }\n }\n };\n\n Mousetrap.init();\n\n // expose mousetrap to the global object\n window.Mousetrap = Mousetrap;\n\n // expose as a common js module\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = Mousetrap;\n }\n\n // expose mousetrap as an AMD module\n if (typeof define === 'function' && define.amd) {\n define(function() {\n return Mousetrap;\n });\n }\n}) (typeof window !== 'undefined' ? window : null, typeof window !== 'undefined' ? document : null);\n","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):t.dayjs=n()}(this,function(){\"use strict\";var t=\"millisecond\",n=\"second\",e=\"minute\",r=\"hour\",i=\"day\",s=\"week\",u=\"month\",a=\"quarter\",o=\"year\",h=/^(\\d{4})-?(\\d{1,2})-?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?.?(\\d{1,3})?$/,f=/\\[([^\\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=function(t,n,e){var r=String(t);return!r||r.length>=n?t:\"\"+Array(n+1-r.length).join(e)+t},d={s:c,z:function(t){var n=-t.utcOffset(),e=Math.abs(n),r=Math.floor(e/60),i=e%60;return(n<=0?\"+\":\"-\")+c(r,2,\"0\")+\":\"+c(i,2,\"0\")},m:function(t,n){var e=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(e,u),i=n-r<0,s=t.clone().add(e+(i?-1:1),u);return Number(-(e+(n-r)/(i?r-s:s-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:o,w:s,d:i,h:r,m:e,s:n,ms:t,Q:a}[h]||String(h||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},$={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},l=\"en\",m={};m[l]=$;var y=function(t){return t instanceof v},M=function(t,n,e){var r;if(!t)return l;if(\"string\"==typeof t)m[t]&&(r=t),n&&(m[t]=n,r=t);else{var i=t.name;m[i]=t,r=i}return e||(l=r),r},g=function(t,n,e){if(y(t))return t.clone();var r=n?\"string\"==typeof n?{format:n,pl:e}:n:{};return r.date=t,new v(r)},D=d;D.l=M,D.i=y,D.w=function(t,n){return g(t,{locale:n.$L,utc:n.$u})};var v=function(){function c(t){this.$L=this.$L||M(t.locale,null,!0),this.parse(t)}var d=c.prototype;return d.parse=function(t){this.$d=function(t){var n=t.date,e=t.utc;if(null===n)return new Date(NaN);if(D.u(n))return new Date;if(n instanceof Date)return new Date(n);if(\"string\"==typeof n&&!/Z$/i.test(n)){var r=n.match(h);if(r)return e?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(n)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return D},d.isValid=function(){return!(\"Invalid Date\"===this.$d.toString())},d.isSame=function(t,n){var e=g(t);return this.startOf(n)<=e&&e<=this.endOf(n)},d.isAfter=function(t,n){return g(t)0&&(l=a[s-1]),i=u[l.l].replace(\"%d\",h);break}}return t?i:(d>0?u.future:u.past).replace(\"%s\",i)};n.to=function(r,t){return o(r,t,this,!0)},n.from=function(r,t){return o(r,t,this)};var d=function(r){return r.$u?e.utc():e()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}});\n","module.exports = global[\"Mousetrap\"] = require(\"-!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js??ref--5!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\source-map-loader\\\\index.js!.\\\\mousetrap.js\");","module.exports = global[\"dayjs\"] = require(\"-!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js??ref--5!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\source-map-loader\\\\index.js!.\\\\dayjs.min.js\");","module.exports = global[\"jQuery\"] = require(\"-!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js??ref--5!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\imports-loader\\\\index.js?this=>window!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\source-map-loader\\\\index.js!.\\\\zepto.js\");","module.exports = global[\"m\"] = require(\"-!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js??ref--5!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\source-map-loader\\\\index.js!.\\\\index.js\");","if(!global[\"m\"]) global[\"m\"] = {};\nmodule.exports = global[\"m\"][\"bidi\"] = require(\"-!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js??ref--5!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\source-map-loader\\\\index.js!.\\\\bidi.js\");","module.exports = global[\"moment\"] = require(\"-!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\expose-loader\\\\index.js?dayjs!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js??ref--5!E:\\\\sites\\\\flarum-new\\\\packages\\\\flarum-core\\\\js\\\\node_modules\\\\source-map-loader\\\\index.js!.\\\\dayjs.min.js\");","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(render, schedule, console) {\n\tvar subscriptions = []\n\tvar rendering = false\n\tvar pending = false\n\n\tfunction sync() {\n\t\tif (rendering) throw new Error(\"Nested m.redraw.sync() call\")\n\t\trendering = true\n\t\tfor (var i = 0; i < subscriptions.length; i += 2) {\n\t\t\ttry { render(subscriptions[i], Vnode(subscriptions[i + 1]), redraw) }\n\t\t\tcatch (e) { console.error(e) }\n\t\t}\n\t\trendering = false\n\t}\n\n\tfunction redraw() {\n\t\tif (!pending) {\n\t\t\tpending = true\n\t\t\tschedule(function() {\n\t\t\t\tpending = false\n\t\t\t\tsync()\n\t\t\t})\n\t\t}\n\t}\n\n\tredraw.sync = sync\n\n\tfunction mount(root, component) {\n\t\tif (component != null && component.view == null && typeof component !== \"function\") {\n\t\t\tthrow new TypeError(\"m.mount(element, component) expects a component, not a vnode\")\n\t\t}\n\n\t\tvar index = subscriptions.indexOf(root)\n\t\tif (index >= 0) {\n\t\t\tsubscriptions.splice(index, 2)\n\t\t\trender(root, [], redraw)\n\t\t}\n\n\t\tif (component != null) {\n\t\t\tsubscriptions.push(root, component)\n\t\t\trender(root, Vnode(component), redraw)\n\t\t}\n\t}\n\n\treturn {mount: mount, redraw: redraw}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar m = require(\"../render/hyperscript\")\nvar Promise = require(\"../promise/promise\")\n\nvar buildPathname = require(\"../pathname/build\")\nvar parsePathname = require(\"../pathname/parse\")\nvar compileTemplate = require(\"../pathname/compileTemplate\")\nvar assign = require(\"../pathname/assign\")\n\nvar sentinel = {}\n\nmodule.exports = function($window, mountRedraw) {\n\tvar fireAsync\n\n\tfunction setPath(path, data, options) {\n\t\tpath = buildPathname(path, data)\n\t\tif (fireAsync != null) {\n\t\t\tfireAsync()\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, route.prefix + path)\n\t\t\telse $window.history.pushState(state, title, route.prefix + path)\n\t\t}\n\t\telse {\n\t\t\t$window.location.href = route.prefix + path\n\t\t}\n\t}\n\n\tvar currentResolver = sentinel, component, attrs, currentPath, lastUpdate\n\n\tvar SKIP = route.SKIP = {}\n\n\tfunction route(root, defaultRoute, routes) {\n\t\tif (root == null) throw new Error(\"Ensure the DOM element that was passed to `m.route` is not undefined\")\n\t\t// 0 = start\n\t\t// 1 = init\n\t\t// 2 = ready\n\t\tvar state = 0\n\n\t\tvar compiled = Object.keys(routes).map(function(route) {\n\t\t\tif (route[0] !== \"/\") throw new SyntaxError(\"Routes must start with a `/`\")\n\t\t\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(route)) {\n\t\t\t\tthrow new SyntaxError(\"Route parameter names must be separated with either `/`, `.`, or `-`\")\n\t\t\t}\n\t\t\treturn {\n\t\t\t\troute: route,\n\t\t\t\tcomponent: routes[route],\n\t\t\t\tcheck: compileTemplate(route),\n\t\t\t}\n\t\t})\n\t\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\t\tvar p = Promise.resolve()\n\t\tvar scheduled = false\n\t\tvar onremove\n\n\t\tfireAsync = null\n\n\t\tif (defaultRoute != null) {\n\t\t\tvar defaultData = parsePathname(defaultRoute)\n\n\t\t\tif (!compiled.some(function (i) { return i.check(defaultData) })) {\n\t\t\t\tthrow new ReferenceError(\"Default route doesn't match any known routes\")\n\t\t\t}\n\t\t}\n\n\t\tfunction resolveRoute() {\n\t\t\tscheduled = false\n\t\t\t// Consider the pathname holistically. The prefix might even be invalid,\n\t\t\t// but that's not our problem.\n\t\t\tvar prefix = $window.location.hash\n\t\t\tif (route.prefix[0] !== \"#\") {\n\t\t\t\tprefix = $window.location.search + prefix\n\t\t\t\tif (route.prefix[0] !== \"?\") {\n\t\t\t\t\tprefix = $window.location.pathname + prefix\n\t\t\t\t\tif (prefix[0] !== \"/\") prefix = \"/\" + prefix\n\t\t\t\t}\n\t\t\t}\n\t\t\t// This seemingly useless `.concat()` speeds up the tests quite a bit,\n\t\t\t// since the representation is consistently a relatively poorly\n\t\t\t// optimized cons string.\n\t\t\tvar path = prefix.concat()\n\t\t\t\t.replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)\n\t\t\t\t.slice(route.prefix.length)\n\t\t\tvar data = parsePathname(path)\n\n\t\t\tassign(data.params, $window.history.state)\n\n\t\t\tfunction fail() {\n\t\t\t\tif (path === defaultRoute) throw new Error(\"Could not resolve default route \" + defaultRoute)\n\t\t\t\tsetPath(defaultRoute, null, {replace: true})\n\t\t\t}\n\n\t\t\tloop(0)\n\t\t\tfunction loop(i) {\n\t\t\t\t// 0 = init\n\t\t\t\t// 1 = scheduled\n\t\t\t\t// 2 = done\n\t\t\t\tfor (; i < compiled.length; i++) {\n\t\t\t\t\tif (compiled[i].check(data)) {\n\t\t\t\t\t\tvar payload = compiled[i].component\n\t\t\t\t\t\tvar matchedRoute = compiled[i].route\n\t\t\t\t\t\tvar localComp = payload\n\t\t\t\t\t\tvar update = lastUpdate = function(comp) {\n\t\t\t\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\t\t\t\tif (comp === SKIP) return loop(i + 1)\n\t\t\t\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\t\t\t\tattrs = data.params, currentPath = path, lastUpdate = null\n\t\t\t\t\t\t\tcurrentResolver = payload.render ? payload : null\n\t\t\t\t\t\t\tif (state === 2) mountRedraw.redraw()\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tstate = 2\n\t\t\t\t\t\t\t\tmountRedraw.redraw.sync()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// There's no understating how much I *wish* I could\n\t\t\t\t\t\t// use `async`/`await` here...\n\t\t\t\t\t\tif (payload.view || typeof payload === \"function\") {\n\t\t\t\t\t\t\tpayload = {}\n\t\t\t\t\t\t\tupdate(localComp)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (payload.onmatch) {\n\t\t\t\t\t\t\tp.then(function () {\n\t\t\t\t\t\t\t\treturn payload.onmatch(data.params, path, matchedRoute)\n\t\t\t\t\t\t\t}).then(update, fail)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse update(\"div\")\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfail()\n\t\t\t}\n\t\t}\n\n\t\t// Set it unconditionally so `m.route.set` and `m.route.Link` both work,\n\t\t// even if neither `pushState` nor `hashchange` are supported. It's\n\t\t// cleared if `hashchange` is used, since that makes it automatically\n\t\t// async.\n\t\tfireAsync = function() {\n\t\t\tif (!scheduled) {\n\t\t\t\tscheduled = true\n\t\t\t\tcallAsync(resolveRoute)\n\t\t\t}\n\t\t}\n\n\t\tif (typeof $window.history.pushState === \"function\") {\n\t\t\tonremove = function() {\n\t\t\t\t$window.removeEventListener(\"popstate\", fireAsync, false)\n\t\t\t}\n\t\t\t$window.addEventListener(\"popstate\", fireAsync, false)\n\t\t} else if (route.prefix[0] === \"#\") {\n\t\t\tfireAsync = null\n\t\t\tonremove = function() {\n\t\t\t\t$window.removeEventListener(\"hashchange\", resolveRoute, false)\n\t\t\t}\n\t\t\t$window.addEventListener(\"hashchange\", resolveRoute, false)\n\t\t}\n\n\t\treturn mountRedraw.mount(root, {\n\t\t\tonbeforeupdate: function() {\n\t\t\t\tstate = state ? 2 : 1\n\t\t\t\treturn !(!state || sentinel === currentResolver)\n\t\t\t},\n\t\t\toncreate: resolveRoute,\n\t\t\tonremove: onremove,\n\t\t\tview: function() {\n\t\t\t\tif (!state || sentinel === currentResolver) return\n\t\t\t\t// Wrap in a fragment to preserve existing key semantics\n\t\t\t\tvar vnode = [Vnode(component, attrs.key, attrs)]\n\t\t\t\tif (currentResolver) vnode = currentResolver.render(vnode[0])\n\t\t\t\treturn vnode\n\t\t\t},\n\t\t})\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\tsetPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = \"#!\"\n\troute.Link = {\n\t\tview: function(vnode) {\n\t\t\tvar options = vnode.attrs.options\n\t\t\t// Remove these so they don't get overwritten\n\t\t\tvar attrs = {}, onclick, href\n\t\t\tassign(attrs, vnode.attrs)\n\t\t\t// The first two are internal, but the rest are magic attributes\n\t\t\t// that need censored to not screw up rendering.\n\t\t\tattrs.selector = attrs.options = attrs.key = attrs.oninit =\n\t\t\tattrs.oncreate = attrs.onbeforeupdate = attrs.onupdate =\n\t\t\tattrs.onbeforeremove = attrs.onremove = null\n\n\t\t\t// Do this now so we can get the most current `href` and `disabled`.\n\t\t\t// Those attributes may also be specified in the selector, and we\n\t\t\t// should honor that.\n\t\t\tvar child = m(vnode.attrs.selector || \"a\", attrs, vnode.children)\n\n\t\t\t// Let's provide a *right* way to disable a route link, rather than\n\t\t\t// letting people screw up accessibility on accident.\n\t\t\t//\n\t\t\t// The attribute is coerced so users don't get surprised over\n\t\t\t// `disabled: 0` resulting in a button that's somehow routable\n\t\t\t// despite being visibly disabled.\n\t\t\tif (child.attrs.disabled = Boolean(child.attrs.disabled)) {\n\t\t\t\tchild.attrs.href = null\n\t\t\t\tchild.attrs[\"aria-disabled\"] = \"true\"\n\t\t\t\t// If you *really* do want to do this on a disabled link, use\n\t\t\t\t// an `oncreate` hook to add it.\n\t\t\t\tchild.attrs.onclick = null\n\t\t\t} else {\n\t\t\t\tonclick = child.attrs.onclick\n\t\t\t\thref = child.attrs.href\n\t\t\t\tchild.attrs.href = route.prefix + href\n\t\t\t\tchild.attrs.onclick = function(e) {\n\t\t\t\t\tvar result\n\t\t\t\t\tif (typeof onclick === \"function\") {\n\t\t\t\t\t\tresult = onclick.call(e.currentTarget, e)\n\t\t\t\t\t} else if (onclick == null || typeof onclick !== \"object\") {\n\t\t\t\t\t\t// do nothing\n\t\t\t\t\t} else if (typeof onclick.handleEvent === \"function\") {\n\t\t\t\t\t\tonclick.handleEvent(e)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Adapted from React Router's implementation:\n\t\t\t\t\t// https://github.com/ReactTraining/react-router/blob/520a0acd48ae1b066eb0b07d6d4d1790a1d02482/packages/react-router-dom/modules/Link.js\n\t\t\t\t\t//\n\t\t\t\t\t// Try to be flexible and intuitive in how we handle links.\n\t\t\t\t\t// Fun fact: links aren't as obvious to get right as you\n\t\t\t\t\t// would expect. There's a lot more valid ways to click a\n\t\t\t\t\t// link than this, and one might want to not simply click a\n\t\t\t\t\t// link, but right click or command-click it to copy the\n\t\t\t\t\t// link target, etc. Nope, this isn't just for blind people.\n\t\t\t\t\tif (\n\t\t\t\t\t\t// Skip if `onclick` prevented default\n\t\t\t\t\t\tresult !== false && !e.defaultPrevented &&\n\t\t\t\t\t\t// Ignore everything but left clicks\n\t\t\t\t\t\t(e.button === 0 || e.which === 0 || e.which === 1) &&\n\t\t\t\t\t\t// Let the browser handle `target=_blank`, etc.\n\t\t\t\t\t\t(!e.currentTarget.target || e.currentTarget.target === \"_self\") &&\n\t\t\t\t\t\t// No modifier keys\n\t\t\t\t\t\t!e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\te.redraw = false\n\t\t\t\t\t\troute.set(href, null, options)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn child\n\t\t},\n\t}\n\troute.param = function(key) {\n\t\treturn attrs && key != null ? attrs[key] : attrs\n\t}\n\n\treturn route\n}\n","\"use strict\"\n\nvar hyperscript = require(\"./render/hyperscript\")\n\nhyperscript.trust = require(\"./render/trust\")\nhyperscript.fragment = require(\"./render/fragment\")\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar render = require(\"./render\")\n\nmodule.exports = require(\"./api/mount-redraw\")(render, requestAnimationFrame, console)\n","\"use strict\"\n\nmodule.exports = Object.assign || function(target, source) {\n\tif(source) Object.keys(source).forEach(function(key) { target[key] = source[key] })\n}\n","\"use strict\"\n\nvar buildQueryString = require(\"../querystring/build\")\nvar assign = require(\"./assign\")\n\n// Returns `path` from `template` + `params`\nmodule.exports = function(template, params) {\n\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(template)) {\n\t\tthrow new SyntaxError(\"Template parameter names *must* be separated\")\n\t}\n\tif (params == null) return template\n\tvar queryIndex = template.indexOf(\"?\")\n\tvar hashIndex = template.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? template.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = template.slice(0, pathEnd)\n\tvar query = {}\n\n\tassign(query, params)\n\n\tvar resolved = path.replace(/:([^\\/\\.-]+)(\\.{3})?/g, function(m, key, variadic) {\n\t\tdelete query[key]\n\t\t// If no such parameter exists, don't interpolate it.\n\t\tif (params[key] == null) return m\n\t\t// Escape normal parameters, but not variadic ones.\n\t\treturn variadic ? params[key] : encodeURIComponent(String(params[key]))\n\t})\n\n\t// In case the template substitution adds new query/hash parameters.\n\tvar newQueryIndex = resolved.indexOf(\"?\")\n\tvar newHashIndex = resolved.indexOf(\"#\")\n\tvar newQueryEnd = newHashIndex < 0 ? resolved.length : newHashIndex\n\tvar newPathEnd = newQueryIndex < 0 ? newQueryEnd : newQueryIndex\n\tvar result = resolved.slice(0, newPathEnd)\n\n\tif (queryIndex >= 0) result += template.slice(queryIndex, queryEnd)\n\tif (newQueryIndex >= 0) result += (queryIndex < 0 ? \"?\" : \"&\") + resolved.slice(newQueryIndex, newQueryEnd)\n\tvar querystring = buildQueryString(query)\n\tif (querystring) result += (queryIndex < 0 && newQueryIndex < 0 ? \"?\" : \"&\") + querystring\n\tif (hashIndex >= 0) result += template.slice(hashIndex)\n\tif (newHashIndex >= 0) result += (hashIndex < 0 ? \"\" : \"&\") + resolved.slice(newHashIndex)\n\treturn result\n}\n","\"use strict\"\n\nvar parsePathname = require(\"./parse\")\n\n// Compiles a template into a function that takes a resolved path (without query\n// strings) and returns an object containing the template parameters with their\n// parsed values. This expects the input of the compiled template to be the\n// output of `parsePathname`. Note that it does *not* remove query parameters\n// specified in the template.\nmodule.exports = function(template) {\n\tvar templateData = parsePathname(template)\n\tvar templateKeys = Object.keys(templateData.params)\n\tvar keys = []\n\tvar regexp = new RegExp(\"^\" + templateData.path.replace(\n\t\t// I escape literal text so people can use things like `:file.:ext` or\n\t\t// `:lang-:locale` in routes. This is all merged into one pass so I\n\t\t// don't also accidentally escape `-` and make it harder to detect it to\n\t\t// ban it from template parameters.\n\t\t/:([^\\/.-]+)(\\.{3}|\\.(?!\\.)|-)?|[\\\\^$*+.()|\\[\\]{}]/g,\n\t\tfunction(m, key, extra) {\n\t\t\tif (key == null) return \"\\\\\" + m\n\t\t\tkeys.push({k: key, r: extra === \"...\"})\n\t\t\tif (extra === \"...\") return \"(.*)\"\n\t\t\tif (extra === \".\") return \"([^/]+)\\\\.\"\n\t\t\treturn \"([^/]+)\" + (extra || \"\")\n\t\t}\n\t) + \"$\")\n\treturn function(data) {\n\t\t// First, check the params. Usually, there isn't any, and it's just\n\t\t// checking a static set.\n\t\tfor (var i = 0; i < templateKeys.length; i++) {\n\t\t\tif (templateData.params[templateKeys[i]] !== data.params[templateKeys[i]]) return false\n\t\t}\n\t\t// If no interpolations exist, let's skip all the ceremony\n\t\tif (!keys.length) return regexp.test(data.path)\n\t\tvar values = regexp.exec(data.path)\n\t\tif (values == null) return false\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tdata.params[keys[i].k] = keys[i].r ? values[i + 1] : decodeURIComponent(values[i + 1])\n\t\t}\n\t\treturn true\n\t}\n}\n","\"use strict\"\n\nvar parseQueryString = require(\"../querystring/parse\")\n\n// Returns `{path, params}` from `url`\nmodule.exports = function(url) {\n\tvar queryIndex = url.indexOf(\"?\")\n\tvar hashIndex = url.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? url.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = url.slice(0, pathEnd).replace(/\\/{2,}/g, \"/\")\n\n\tif (!path) path = \"/\"\n\telse {\n\t\tif (path[0] !== \"/\") path = \"/\" + path\n\t\tif (path.length > 1 && path[path.length - 1] === \"/\") path = path.slice(0, -1)\n\t}\n\treturn {\n\t\tpath: path,\n\t\tparams: queryIndex < 0\n\t\t\t? {}\n\t\t\t: parseQueryString(url.slice(queryIndex + 1, queryEnd)),\n\t}\n}\n","\"use strict\"\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with `new`\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function\")\n\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved w/ itself\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.prototype.finally = function(callback) {\n\treturn this.then(\n\t\tfunction(value) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn value\n\t\t\t})\n\t\t},\n\t\tfunction(reason) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn PromisePolyfill.reject(reason);\n\t\t\t})\n\t\t}\n\t)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\n\nmodule.exports = PromisePolyfill\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./polyfill\")\n\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") {\n\t\twindow.Promise = PromisePolyfill\n\t} else if (!window.Promise.prototype.finally) {\n\t\twindow.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") {\n\t\tglobal.Promise = PromisePolyfill\n\t} else if (!global.Promise.prototype.finally) {\n\t\tglobal.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = global.Promise\n} else {\n\tmodule.exports = PromisePolyfill\n}\n","\"use strict\"\n\nmodule.exports = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\n\tvar args = []\n\tfor (var key in object) {\n\t\tdestructure(key, object[key])\n\t}\n\n\treturn args.join(\"&\")\n\n\tfunction destructure(key, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\n","\"use strict\"\n\nmodule.exports = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\n\tvar entries = string.split(\"&\"), counters = {}, data = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key = decodeURIComponent(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponent(entry[1]) : \"\"\n\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\n\t\tvar levels = key.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data\n\t\tif (key.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key = levels.slice(0, j).join()\n\t\t\t\tif (counters[key] == null) {\n\t\t\t\t\tcounters[key] = Array.isArray(cursor) ? cursor.length : 0\n\t\t\t\t}\n\t\t\t\tlevel = counters[key]++\n\t\t\t}\n\t\t\t// Disallow direct prototype pollution\n\t\t\telse if (level === \"__proto__\") break\n\t\t\tif (j === levels.length - 1) cursor[level] = value\n\t\t\telse {\n\t\t\t\t// Read own properties exclusively to disallow indirect\n\t\t\t\t// prototype pollution\n\t\t\t\tvar desc = Object.getOwnPropertyDescriptor(cursor, level)\n\t\t\t\tif (desc != null) desc = desc.value\n\t\t\t\tif (desc == null) cursor[level] = desc = isNumber ? [] : {}\n\t\t\t\tcursor = desc\n\t\t\t}\n\t\t}\n\t}\n\treturn data\n}\n","\"use strict\"\n\nmodule.exports = require(\"./render/render\")(window)\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nmodule.exports = function() {\n\tvar vnode = hyperscriptVnode.apply(0, arguments)\n\n\tvnode.tag = \"[\"\n\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\treturn vnode\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\nvar hasOwn = {}.hasOwnProperty\n\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\n\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\n\nfunction execSelector(state, vnode) {\n\tvar attrs = vnode.attrs\n\tvar children = Vnode.normalizeChildren(vnode.children)\n\tvar hasClass = hasOwn.call(attrs, \"class\")\n\tvar className = hasClass ? attrs.class : attrs.className\n\n\tvnode.tag = state.tag\n\tvnode.attrs = null\n\tvnode.children = undefined\n\n\tif (!isEmpty(state.attrs) && !isEmpty(attrs)) {\n\t\tvar newAttrs = {}\n\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]\n\t\t}\n\n\t\tattrs = newAttrs\n\t}\n\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key) && key !== \"className\" && !hasOwn.call(attrs, key)){\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className != null || state.attrs.className != null) attrs.className =\n\t\tclassName != null\n\t\t\t? state.attrs.className != null\n\t\t\t\t? String(state.attrs.className) + \" \" + String(className)\n\t\t\t\t: className\n\t\t\t: state.attrs.className != null\n\t\t\t\t? state.attrs.className\n\t\t\t\t: null\n\n\tif (hasClass) attrs.class = null\n\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\tvnode.attrs = attrs\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === \"#\") {\n\t\tvnode.text = children[0].children\n\t} else {\n\t\tvnode.children = children\n\t}\n\n\treturn vnode\n}\n\nfunction hyperscript(selector) {\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\n\tvar vnode = hyperscriptVnode.apply(1, arguments)\n\n\tif (typeof selector === \"string\") {\n\t\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\t\tif (selector !== \"[\") return execSelector(selectorCache[selector] || compileSelector(selector), vnode)\n\t}\n\n\tvnode.tag = selector\n\treturn vnode\n}\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\n// Call via `hyperscriptVnode.apply(startOffset, arguments)`\n//\n// The reason I do it this way, forwarding the arguments and passing the start\n// offset in `this`, is so I don't have to create a temporary array in a\n// performance-critical path.\n//\n// In native ES6, I'd instead add a final `...args` parameter to the\n// `hyperscript` and `fragment` factories and define this as\n// `hyperscriptVnode(...args)`, since modern engines do optimize that away. But\n// ES5 (what Mithril requires thanks to IE support) doesn't give me that luxury,\n// and engines aren't nearly intelligent enough to do either of these:\n//\n// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to\n// another function only to be indexed.\n// 2. Elide an `arguments` allocation when it's passed to any function other\n// than `Function.prototype.apply` or `Reflect.apply`.\n//\n// In ES6, it'd probably look closer to this (I'd need to profile it, though):\n// module.exports = function(attrs, ...children) {\n// if (attrs == null || typeof attrs === \"object\" && attrs.tag == null && !Array.isArray(attrs)) {\n// if (children.length === 1 && Array.isArray(children[0])) children = children[0]\n// } else {\n// children = children.length === 0 && Array.isArray(attrs) ? attrs : [attrs, ...children]\n// attrs = undefined\n// }\n//\n// if (attrs == null) attrs = {}\n// return Vnode(\"\", attrs.key, attrs, children)\n// }\nmodule.exports = function() {\n\tvar attrs = arguments[this], start = this + 1, children\n\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = this\n\t}\n\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\n\treturn Vnode(\"\", attrs.key, attrs, children)\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function($window) {\n\tvar $doc = $window && $window.document\n\tvar currentRedraw\n\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\n\tfunction getNameSpace(vnode) {\n\t\treturn vnode.attrs && vnode.attrs.xmlns || nameSpace[vnode.tag]\n\t}\n\n\t//sanity check to discourage people from doing `vnode.state = ...`\n\tfunction checkState(vnode, original) {\n\t\tif (vnode.state !== original) throw new Error(\"`vnode.state` must not be modified\")\n\t}\n\n\t//Note: the hook is passed as the `this` argument to allow proxying the\n\t//arguments without requiring a full array allocation to do so. It also\n\t//takes advantage of the fact the current `vnode` is the first argument in\n\t//all lifecycle methods.\n\tfunction callHook(vnode) {\n\t\tvar original = vnode.state\n\t\ttry {\n\t\t\treturn this.apply(original, arguments)\n\t\t} finally {\n\t\t\tcheckState(vnode, original)\n\t\t}\n\t}\n\n\t// IE11 (at least) throws an UnspecifiedError when accessing document.activeElement when\n\t// inside an iframe. Catch and swallow this error, and heavy-handidly return null.\n\tfunction activeElement() {\n\t\ttry {\n\t\t\treturn $doc.activeElement\n\t\t} catch (e) {\n\t\t\treturn null\n\t\t}\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": createText(parent, vnode, nextSibling); break\n\t\t\t\tcase \"<\": createHTML(parent, vnode, ns, nextSibling); break\n\t\t\t\tcase \"[\": createFragment(parent, vnode, hooks, ns, nextSibling); break\n\t\t\t\tdefault: createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = $doc.createTextNode(vnode.children)\n\t\tinsertNode(parent, vnode.dom, nextSibling)\n\t}\n\tvar possibleParents = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}\n\tfunction createHTML(parent, vnode, ns, nextSibling) {\n\t\tvar match = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\t// not using the proper parent makes the child element(s) vanish.\n\t\t// var div = document.createElement(\"div\")\n\t\t// div.innerHTML = \"ij\"\n\t\t// console.log(div.innerHTML)\n\t\t// --> \"ij\", no in sight.\n\t\tvar temp = $doc.createElement(possibleParents[match[1]] || \"div\")\n\t\tif (ns === \"http://www.w3.org/2000/svg\") {\n\t\t\ttemp.innerHTML = \"\" + vnode.children + \"\"\n\t\t\ttemp = temp.firstChild\n\t\t} else {\n\t\t\ttemp.innerHTML = vnode.children\n\t\t}\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\t// Capture nodes to remove, so we don't confuse them.\n\t\tvnode.instance = []\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tvnode.instance.push(child)\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tvar attrs = vnode.attrs\n\t\tvar is = attrs && attrs.is\n\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode.dom = element\n\n\t\tif (attrs != null) {\n\t\t\tsetAttrs(vnode, attrs, ns)\n\t\t}\n\n\t\tinsertNode(parent, element, nextSibling)\n\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (vnode.text != null) {\n\t\t\t\tif (vnode.text !== \"\") element.textContent = vnode.text\n\t\t\t\telse vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t}\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tif (vnode.tag === \"select\" && attrs != null) setLateSelectAttrs(vnode, attrs)\n\t\t\t}\n\t\t}\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tinitLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tcreateNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t}\n\t}\n\n\t//update\n\t/**\n\t * @param {Element|Fragment} parent - the parent element\n\t * @param {Vnode[] | null} old - the list of vnodes of the last `render()` call for\n\t * this part of the tree\n\t * @param {Vnode[] | null} vnodes - as above, but for the current `render()` call.\n\t * @param {Function[]} hooks - an accumulator of post-render hooks (oncreate/onupdate)\n\t * @param {Element | null} nextSibling - the next DOM node if we're dealing with a\n\t * fragment that is not the last item in its\n\t * parent\n\t * @param {'svg' | 'math' | String | null} ns) - the current XML namespace, if any\n\t * @returns void\n\t */\n\t// This function diffs and patches lists of vnodes, both keyed and unkeyed.\n\t//\n\t// We will:\n\t//\n\t// 1. describe its general structure\n\t// 2. focus on the diff algorithm optimizations\n\t// 3. discuss DOM node operations.\n\n\t// ## Overview:\n\t//\n\t// The updateNodes() function:\n\t// - deals with trivial cases\n\t// - determines whether the lists are keyed or unkeyed based on the first non-null node\n\t// of each list.\n\t// - diffs them and patches the DOM if needed (that's the brunt of the code)\n\t// - manages the leftovers: after diffing, are there:\n\t// - old nodes left to remove?\n\t// \t - new nodes to insert?\n\t// \t deal with them!\n\t//\n\t// The lists are only iterated over once, with an exception for the nodes in `old` that\n\t// are visited in the fourth part of the diff and in the `removeNodes` loop.\n\n\t// ## Diffing\n\t//\n\t// Reading https://github.com/localvoid/ivi/blob/ddc09d06abaef45248e6133f7040d00d3c6be853/packages/ivi/src/vdom/implementation.ts#L617-L837\n\t// may be good for context on longest increasing subsequence-based logic for moving nodes.\n\t//\n\t// In order to diff keyed lists, one has to\n\t//\n\t// 1) match nodes in both lists, per key, and update them accordingly\n\t// 2) create the nodes present in the new list, but absent in the old one\n\t// 3) remove the nodes present in the old list, but absent in the new one\n\t// 4) figure out what nodes in 1) to move in order to minimize the DOM operations.\n\t//\n\t// To achieve 1) one can create a dictionary of keys => index (for the old list), then iterate\n\t// over the new list and for each new vnode, find the corresponding vnode in the old list using\n\t// the map.\n\t// 2) is achieved in the same step: if a new node has no corresponding entry in the map, it is new\n\t// and must be created.\n\t// For the removals, we actually remove the nodes that have been updated from the old list.\n\t// The nodes that remain in that list after 1) and 2) have been performed can be safely removed.\n\t// The fourth step is a bit more complex and relies on the longest increasing subsequence (LIS)\n\t// algorithm.\n\t//\n\t// the longest increasing subsequence is the list of nodes that can remain in place. Imagine going\n\t// from `1,2,3,4,5` to `4,5,1,2,3` where the numbers are not necessarily the keys, but the indices\n\t// corresponding to the keyed nodes in the old list (keyed nodes `e,d,c,b,a` => `b,a,e,d,c` would\n\t// match the above lists, for example).\n\t//\n\t// In there are two increasing subsequences: `4,5` and `1,2,3`, the latter being the longest. We\n\t// can update those nodes without moving them, and only call `insertNode` on `4` and `5`.\n\t//\n\t// @localvoid adapted the algo to also support node deletions and insertions (the `lis` is actually\n\t// the longest increasing subsequence *of old nodes still present in the new list*).\n\t//\n\t// It is a general algorithm that is fireproof in all circumstances, but it requires the allocation\n\t// and the construction of a `key => oldIndex` map, and three arrays (one with `newIndex => oldIndex`,\n\t// the `LIS` and a temporary one to create the LIS).\n\t//\n\t// So we cheat where we can: if the tails of the lists are identical, they are guaranteed to be part of\n\t// the LIS and can be updated without moving them.\n\t//\n\t// If two nodes are swapped, they are guaranteed not to be part of the LIS, and must be moved (with\n\t// the exception of the last node if the list is fully reversed).\n\t//\n\t// ## Finding the next sibling.\n\t//\n\t// `updateNode()` and `createNode()` expect a nextSibling parameter to perform DOM operations.\n\t// When the list is being traversed top-down, at any index, the DOM nodes up to the previous\n\t// vnode reflect the content of the new list, whereas the rest of the DOM nodes reflect the old\n\t// list. The next sibling must be looked for in the old list using `getNextSibling(... oldStart + 1 ...)`.\n\t//\n\t// In the other scenarios (swaps, upwards traversal, map-based diff),\n\t// the new vnodes list is traversed upwards. The DOM nodes at the bottom of the list reflect the\n\t// bottom part of the new vnodes list, and we can use the `v.dom` value of the previous node\n\t// as the next sibling (cached in the `nextSibling` variable).\n\n\n\t// ## DOM node moves\n\t//\n\t// In most scenarios `updateNode()` and `createNode()` perform the DOM operations. However,\n\t// this is not the case if the node moved (second and fourth part of the diff algo). We move\n\t// the old DOM nodes before updateNode runs because it enables us to use the cached `nextSibling`\n\t// variable rather than fetching it using `getNextSibling()`.\n\t//\n\t// The fourth part of the diff currently inserts nodes unconditionally, leading to issues\n\t// like #1791 and #1999. We need to be smarter about those situations where adjascent old\n\t// nodes remain together in the new list in a way that isn't covered by parts one and\n\t// three of the diff algo.\n\n\tfunction updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null || vnodes.length === 0) removeNodes(parent, old, 0, old.length)\n\t\telse {\n\t\t\tvar isOldKeyed = old[0] != null && old[0].key != null\n\t\t\tvar isKeyed = vnodes[0] != null && vnodes[0].key != null\n\t\t\tvar start = 0, oldStart = 0\n\t\t\tif (!isOldKeyed) while (oldStart < old.length && old[oldStart] == null) oldStart++\n\t\t\tif (!isKeyed) while (start < vnodes.length && vnodes[start] == null) start++\n\t\t\tif (isKeyed === null && isOldKeyed == null) return // both lists are full of nulls\n\t\t\tif (isOldKeyed !== isKeyed) {\n\t\t\t\tremoveNodes(parent, old, oldStart, old.length)\n\t\t\t\tcreateNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else if (!isKeyed) {\n\t\t\t\t// Don't index past the end of either list (causes deopts).\n\t\t\t\tvar commonLength = old.length < vnodes.length ? old.length : vnodes.length\n\t\t\t\t// Rewind if necessary to the first non-null index on either side.\n\t\t\t\t// We could alternatively either explicitly create or remove nodes when `start !== oldStart`\n\t\t\t\t// but that would be optimizing for sparse lists which are more rare than dense ones.\n\t\t\t\tstart = start < oldStart ? start : oldStart\n\t\t\t\tfor (; start < commonLength; start++) {\n\t\t\t\t\to = old[start]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o === v || o == null && v == null) continue\n\t\t\t\t\telse if (o == null) createNode(parent, v, hooks, ns, getNextSibling(old, start + 1, nextSibling))\n\t\t\t\t\telse if (v == null) removeNode(parent, o)\n\t\t\t\t\telse updateNode(parent, o, v, hooks, getNextSibling(old, start + 1, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\tif (old.length > commonLength) removeNodes(parent, old, start, old.length)\n\t\t\t\tif (vnodes.length > commonLength) createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else {\n\t\t\t\t// keyed diff\n\t\t\t\tvar oldEnd = old.length - 1, end = vnodes.length - 1, map, o, v, oe, ve, topSibling\n\n\t\t\t\t// bottom-up\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\t// top-down\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o.key !== v.key) break\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tif (o !== v) updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\t// swaps and list reversals\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (start === end) break\n\t\t\t\t\tif (o.key !== ve.key || oe.key !== v.key) break\n\t\t\t\t\ttopSibling = getNextSibling(old, oldStart, nextSibling)\n\t\t\t\t\tmoveNodes(parent, oe, topSibling)\n\t\t\t\t\tif (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)\n\t\t\t\t\tif (++start <= --end) moveNodes(parent, o, nextSibling)\n\t\t\t\t\tif (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldStart++; oldEnd--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t}\n\t\t\t\t// bottom up once again\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t}\n\t\t\t\tif (start > end) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\telse if (oldStart > oldEnd) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\telse {\n\t\t\t\t\t// inspired by ivi https://github.com/ivijs/ivi/ by Boris Kaul\n\t\t\t\t\tvar originalNextSibling = nextSibling, vnodesLength = end - start + 1, oldIndices = new Array(vnodesLength), li=0, i=0, pos = 2147483647, matched = 0, map, lisIndices\n\t\t\t\t\tfor (i = 0; i < vnodesLength; i++) oldIndices[i] = -1\n\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\tif (map == null) map = getKeyMap(old, oldStart, oldEnd + 1)\n\t\t\t\t\t\tve = vnodes[i]\n\t\t\t\t\t\tvar oldIndex = map[ve.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tpos = (oldIndex < pos) ? oldIndex : -1 // becomes -1 if nodes were re-ordered\n\t\t\t\t\t\t\toldIndices[i-start] = oldIndex\n\t\t\t\t\t\t\toe = old[oldIndex]\n\t\t\t\t\t\t\told[oldIndex] = null\n\t\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\t\tmatched++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnextSibling = originalNextSibling\n\t\t\t\t\tif (matched !== oldEnd - oldStart + 1) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\t\tif (matched === 0) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\t// the indices of the indices of the items that are part of the\n\t\t\t\t\t\t\t// longest increasing subsequence in the oldIndices list\n\t\t\t\t\t\t\tlisIndices = makeLisIndices(oldIndices)\n\t\t\t\t\t\t\tli = lisIndices.length - 1\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (lisIndices[li] === i - start) li--\n\t\t\t\t\t\t\t\t\telse moveNodes(parent, v, nextSibling)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode.events = old.events\n\t\t\tif (shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tupdateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, ns, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(parent, old)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, ns, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\tremoveHTML(parent, old)\n\t\t\tcreateHTML(parent, vnode, ns, nextSibling)\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t\tvnode.instance = old.instance\n\t\t}\n\t}\n\tfunction updateFragment(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tif (vnode.tag === \"textarea\") {\n\t\t\tif (vnode.attrs == null) vnode.attrs = {}\n\t\t\tif (vnode.text != null) {\n\t\t\t\tvnode.attrs.value = vnode.text //FIXME handle multiple children\n\t\t\t\tvnode.text = undefined\n\t\t\t}\n\t\t}\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (old.text != null && vnode.text != null && vnode.text !== \"\") {\n\t\t\t\tif (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (old.text != null) old.children = [Vnode(\"#\", undefined, undefined, old.text, undefined, old.dom.firstChild)]\n\t\t\t\tif (vnode.text != null) vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t\tupdateNodes(element, old.children, vnode.children, hooks, null, ns)\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tupdateLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(parent, old.instance)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction getKeyMap(vnodes, start, end) {\n\t\tvar map = Object.create(null)\n\t\tfor (; start < end; start++) {\n\t\t\tvar vnode = vnodes[start]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key = vnode.key\n\t\t\t\tif (key != null) map[key] = start\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\t// Lifted from ivi https://github.com/ivijs/ivi/\n\t// takes a list of unique numbers (-1 is special and can\n\t// occur multiple times) and returns an array with the indices\n\t// of the items that are part of the longest increasing\n\t// subsequece\n\tvar lisTemp = []\n\tfunction makeLisIndices(a) {\n\t\tvar result = [0]\n\t\tvar u = 0, v = 0, i = 0\n\t\tvar il = lisTemp.length = a.length\n\t\tfor (var i = 0; i < il; i++) lisTemp[i] = a[i]\n\t\tfor (var i = 0; i < il; ++i) {\n\t\t\tif (a[i] === -1) continue\n\t\t\tvar j = result[result.length - 1]\n\t\t\tif (a[j] < a[i]) {\n\t\t\t\tlisTemp[i] = j\n\t\t\t\tresult.push(i)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tu = 0\n\t\t\tv = result.length - 1\n\t\t\twhile (u < v) {\n\t\t\t\t// Fast integer average without overflow.\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tvar c = (u >>> 1) + (v >>> 1) + (u & v & 1)\n\t\t\t\tif (a[result[c]] < a[i]) {\n\t\t\t\t\tu = c + 1\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tv = c\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (a[i] < a[result[u]]) {\n\t\t\t\tif (u > 0) lisTemp[i] = result[u - 1]\n\t\t\t\tresult[u] = i\n\t\t\t}\n\t\t}\n\t\tu = result.length\n\t\tv = result[u - 1]\n\t\twhile (u-- > 0) {\n\t\t\tresult[u] = v\n\t\t\tv = lisTemp[v]\n\t\t}\n\t\tlisTemp.length = 0\n\t\treturn result\n\t}\n\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\n\t// This covers a really specific edge case:\n\t// - Parent node is keyed and contains child\n\t// - Child is removed, returns unresolved promise in `onbeforeremove`\n\t// - Parent node is moved in keyed diff\n\t// - Remaining children still need moved appropriately\n\t//\n\t// Ideally, I'd track removed nodes as well, but that introduces a lot more\n\t// complexity and I'm not exactly interested in doing that.\n\tfunction moveNodes(parent, vnode, nextSibling) {\n\t\tvar frag = $doc.createDocumentFragment()\n\t\tmoveChildToFrag(parent, frag, vnode)\n\t\tinsertNode(parent, frag, nextSibling)\n\t}\n\tfunction moveChildToFrag(parent, frag, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\t\t\tfrag.appendChild(vnode.instance[i])\n\t\t\t\t}\n\t\t\t} else if (vnode.tag !== \"[\") {\n\t\t\t\t// Don't recurse for text nodes *or* elements, just fragments\n\t\t\t\tfrag.appendChild(vnode.dom)\n\t\t\t} else if (vnode.children.length === 1) {\n\t\t\t\tvnode = vnode.children[0]\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else {\n\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\tif (child != null) moveChildToFrag(parent, frag, child)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling != null) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\n\tfunction maybeSetContentEditable(vnode) {\n\t\tif (vnode.attrs == null || (\n\t\t\tvnode.attrs.contenteditable == null && // attribute\n\t\t\tvnode.attrs.contentEditable == null // property\n\t\t)) return false\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (vnode.text != null || children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted\")\n\t\treturn true\n\t}\n\n\t//remove\n\tfunction removeNodes(parent, vnodes, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) removeNode(parent, vnode)\n\t\t}\n\t}\n\tfunction removeNode(parent, vnode) {\n\t\tvar mask = 0\n\t\tvar original = vnode.state\n\t\tvar stateResult, attrsResult\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.state.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\tmask = 1\n\t\t\t\tstateResult = result\n\t\t\t}\n\t\t}\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.attrs.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tmask |= 2\n\t\t\t\tattrsResult = result\n\t\t\t}\n\t\t}\n\t\tcheckState(vnode, original)\n\n\t\t// If we can, try to fast-path it and avoid all the overhead of awaiting\n\t\tif (!mask) {\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t} else {\n\t\t\tif (stateResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 1) { mask &= 2; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tstateResult.then(next, next)\n\t\t\t}\n\t\t\tif (attrsResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 2) { mask &= 1; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tattrsResult.then(next, next)\n\t\t\t}\n\t\t}\n\n\t\tfunction reallyRemove() {\n\t\t\tcheckState(vnode, original)\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t}\n\t}\n\tfunction removeHTML(parent, vnode) {\n\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\tparent.removeChild(vnode.instance[i])\n\t\t}\n\t}\n\tfunction removeChild(parent, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tremoveHTML(parent, vnode)\n\t\t\t} else {\n\t\t\t\tif (vnode.tag !== \"[\") {\n\t\t\t\t\tparent.removeChild(vnode.dom)\n\t\t\t\t\tif (!Array.isArray(vnode.children)) break\n\t\t\t\t}\n\t\t\t\tif (vnode.children.length === 1) {\n\t\t\t\t\tvnode = vnode.children[0]\n\t\t\t\t\tif (vnode != null) continue\n\t\t\t\t} else {\n\t\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\t\tif (child != null) removeChild(parent, child)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\tfunction onremove(vnode) {\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onremove === \"function\") callHook.call(vnode.state.onremove, vnode)\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") callHook.call(vnode.attrs.onremove, vnode)\n\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\t} else {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//attrs\n\tfunction setAttrs(vnode, attrs, ns) {\n\t\tfor (var key in attrs) {\n\t\t\tsetAttr(vnode, key, null, attrs[key], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key, old, value, ns) {\n\t\tif (key === \"key\" || key === \"is\" || value == null || isLifecycleMethod(key) || (old === value && !isFormAttribute(vnode, key)) && typeof value !== \"object\") return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") return updateEvent(vnode, key, value)\n\t\tif (key.slice(0, 6) === \"xlink:\") vnode.dom.setAttributeNS(\"http://www.w3.org/1999/xlink\", key.slice(6), value)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, value)\n\t\telse if (hasPropertyKey(vnode, key, ns)) {\n\t\t\tif (key === \"value\") {\n\t\t\t\t// Only do the coercion if we're actually going to check the value.\n\t\t\t\t/* eslint-disable no-implicit-coercion */\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\tif ((vnode.tag === \"input\" || vnode.tag === \"textarea\") && vnode.dom.value === \"\" + value && vnode.dom === activeElement()) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"select\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"option\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t/* eslint-enable no-implicit-coercion */\n\t\t\t}\n\t\t\t// If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur.\n\t\t\tif (vnode.tag === \"input\" && key === \"type\") vnode.dom.setAttribute(key, value)\n\t\t\telse vnode.dom[key] = value\n\t\t} else {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) vnode.dom.setAttribute(key, \"\")\n\t\t\t\telse vnode.dom.removeAttribute(key)\n\t\t\t}\n\t\t\telse vnode.dom.setAttribute(key === \"className\" ? \"class\" : key, value)\n\t\t}\n\t}\n\tfunction removeAttr(vnode, key, old, ns) {\n\t\tif (key === \"key\" || key === \"is\" || old == null || isLifecycleMethod(key)) return\n\t\tif (key[0] === \"o\" && key[1] === \"n\" && !isLifecycleMethod(key)) updateEvent(vnode, key, undefined)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, null)\n\t\telse if (\n\t\t\thasPropertyKey(vnode, key, ns)\n\t\t\t&& key !== \"className\"\n\t\t\t&& !(key === \"value\" && (\n\t\t\t\tvnode.tag === \"option\"\n\t\t\t\t|| vnode.tag === \"select\" && vnode.dom.selectedIndex === -1 && vnode.dom === activeElement()\n\t\t\t))\n\t\t\t&& !(vnode.tag === \"input\" && key === \"type\")\n\t\t) {\n\t\t\tvnode.dom[key] = null\n\t\t} else {\n\t\t\tvar nsLastIndex = key.indexOf(\":\")\n\t\t\tif (nsLastIndex !== -1) key = key.slice(nsLastIndex + 1)\n\t\t\tif (old !== false) vnode.dom.removeAttribute(key === \"className\" ? \"class\" : key)\n\t\t}\n\t}\n\tfunction setLateSelectAttrs(vnode, attrs) {\n\t\tif (\"value\" in attrs) {\n\t\t\tif(attrs.value === null) {\n\t\t\t\tif (vnode.dom.selectedIndex !== -1) vnode.dom.value = null\n\t\t\t} else {\n\t\t\t\tvar normalized = \"\" + attrs.value // eslint-disable-line no-implicit-coercion\n\t\t\t\tif (vnode.dom.value !== normalized || vnode.dom.selectedIndex === -1) {\n\t\t\t\t\tvnode.dom.value = normalized\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (\"selectedIndex\" in attrs) setAttr(vnode, \"selectedIndex\", null, attrs.selectedIndex, undefined)\n\t}\n\tfunction updateAttrs(vnode, old, attrs, ns) {\n\t\tif (attrs != null) {\n\t\t\tfor (var key in attrs) {\n\t\t\t\tsetAttr(vnode, key, old && old[key], attrs[key], ns)\n\t\t\t}\n\t\t}\n\t\tvar val\n\t\tif (old != null) {\n\t\t\tfor (var key in old) {\n\t\t\t\tif (((val = old[key]) != null) && (attrs == null || attrs[key] == null)) {\n\t\t\t\t\tremoveAttr(vnode, key, val, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === activeElement() || vnode.tag === \"option\" && vnode.dom.parentNode === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction hasPropertyKey(vnode, key, ns) {\n\t\t// Filter out namespaced keys\n\t\treturn ns === undefined && (\n\t\t\t// If it's a custom element, just keep it.\n\t\t\tvnode.tag.indexOf(\"-\") > -1 || vnode.attrs != null && vnode.attrs.is ||\n\t\t\t// If it's a normal element, let's try to avoid a few browser bugs.\n\t\t\tkey !== \"href\" && key !== \"list\" && key !== \"form\" && key !== \"width\" && key !== \"height\"// && key !== \"type\"\n\t\t\t// Defer the property check until *after* we check everything.\n\t\t) && key in vnode.dom\n\t}\n\n\t//style\n\tvar uppercaseRegex = /[A-Z]/g\n\tfunction toLowerCase(capital) { return \"-\" + capital.toLowerCase() }\n\tfunction normalizeKey(key) {\n\t\treturn key[0] === \"-\" && key[1] === \"-\" ? key :\n\t\t\tkey === \"cssFloat\" ? \"float\" :\n\t\t\t\tkey.replace(uppercaseRegex, toLowerCase)\n\t}\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) {\n\t\t\t// Styles are equivalent, do nothing.\n\t\t} else if (style == null) {\n\t\t\t// New style is missing, just clear it.\n\t\t\telement.style.cssText = \"\"\n\t\t} else if (typeof style !== \"object\") {\n\t\t\t// New style is a string, let engine deal with patching.\n\t\t\telement.style.cssText = style\n\t\t} else if (old == null || typeof old !== \"object\") {\n\t\t\t// `old` is missing or a string, `style` is an object.\n\t\t\telement.style.cssText = \"\"\n\t\t\t// Add new style properties\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null) element.style.setProperty(normalizeKey(key), String(value))\n\t\t\t}\n\t\t} else {\n\t\t\t// Both old & new are (different) objects.\n\t\t\t// Update style properties that have changed\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null && (value = String(value)) !== String(old[key])) {\n\t\t\t\t\telement.style.setProperty(normalizeKey(key), value)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Remove style properties that no longer exist\n\t\t\tfor (var key in old) {\n\t\t\t\tif (old[key] != null && style[key] == null) {\n\t\t\t\t\telement.style.removeProperty(normalizeKey(key))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Here's an explanation of how this works:\n\t// 1. The event names are always (by design) prefixed by `on`.\n\t// 2. The EventListener interface accepts either a function or an object\n\t// with a `handleEvent` method.\n\t// 3. The object does not inherit from `Object.prototype`, to avoid\n\t// any potential interference with that (e.g. setters).\n\t// 4. The event name is remapped to the handler before calling it.\n\t// 5. In function-based event handlers, `ev.target === this`. We replicate\n\t// that below.\n\t// 6. In function-based event handlers, `return false` prevents the default\n\t// action and stops event propagation. We replicate that below.\n\tfunction EventDict() {\n\t\t// Save this, so the current redraw is correctly tracked.\n\t\tthis._ = currentRedraw\n\t}\n\tEventDict.prototype = Object.create(null)\n\tEventDict.prototype.handleEvent = function (ev) {\n\t\tvar handler = this[\"on\" + ev.type]\n\t\tvar result\n\t\tif (typeof handler === \"function\") result = handler.call(ev.currentTarget, ev)\n\t\telse if (typeof handler.handleEvent === \"function\") handler.handleEvent(ev)\n\t\tif (this._ && ev.redraw !== false) (0, this._)()\n\t\tif (result === false) {\n\t\t\tev.preventDefault()\n\t\t\tev.stopPropagation()\n\t\t}\n\t}\n\n\t//event\n\tfunction updateEvent(vnode, key, value) {\n\t\tif (vnode.events != null) {\n\t\t\tif (vnode.events[key] === value) return\n\t\t\tif (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\t\tif (vnode.events[key] == null) vnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = value\n\t\t\t} else {\n\t\t\t\tif (vnode.events[key] != null) vnode.dom.removeEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = undefined\n\t\t\t}\n\t\t} else if (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\tvnode.events = new EventDict()\n\t\t\tvnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\tvnode.events[key] = value\n\t\t}\n\t}\n\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") callHook.call(source.oninit, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(callHook.bind(source.oncreate, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(callHook.bind(source.onupdate, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tdo {\n\t\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.attrs.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.state.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\treturn false\n\t\t} while (false); // eslint-disable-line no-constant-condition\n\t\tvnode.dom = old.dom\n\t\tvnode.domSize = old.domSize\n\t\tvnode.instance = old.instance\n\t\t// One would think having the actual latest attributes would be ideal,\n\t\t// but it doesn't let us properly diff based on our current internal\n\t\t// representation. We have to save not only the old DOM info, but also\n\t\t// the attributes used to create it, as we diff *that*, not against the\n\t\t// DOM directly (with a few exceptions in `setAttr`). And, of course, we\n\t\t// need to save the children and text as they are conceptually not\n\t\t// unlike special \"attributes\" internally.\n\t\tvnode.attrs = old.attrs\n\t\tvnode.children = old.children\n\t\tvnode.text = old.text\n\t\treturn true\n\t}\n\n\treturn function(dom, vnodes, redraw) {\n\t\tif (!dom) throw new TypeError(\"Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.\")\n\t\tvar hooks = []\n\t\tvar active = activeElement()\n\t\tvar namespace = dom.namespaceURI\n\n\t\t// First time rendering into a node clears it out\n\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\n\t\tvnodes = Vnode.normalizeChildren(Array.isArray(vnodes) ? vnodes : [vnodes])\n\t\tvar prevRedraw = currentRedraw\n\t\ttry {\n\t\t\tcurrentRedraw = typeof redraw === \"function\" ? redraw : undefined\n\t\t\tupdateNodes(dom, dom.vnodes, vnodes, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\t} finally {\n\t\t\tcurrentRedraw = prevRedraw\n\t\t}\n\t\tdom.vnodes = vnodes\n\t\t// `document.activeElement` can return null: https://html.spec.whatwg.org/multipage/interaction.html#dom-document-activeelement\n\t\tif (active != null && activeElement() !== active && typeof active.focus === \"function\") active.focus()\n\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\n","\"use strict\"\n\nfunction Vnode(tag, key, attrs, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs, children: children, text: text, dom: dom, domSize: undefined, state: undefined, events: undefined, instance: undefined}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node == null || typeof node === \"boolean\") return null\n\tif (typeof node === \"object\") return node\n\treturn Vnode(\"#\", undefined, undefined, String(node), undefined, undefined)\n}\nVnode.normalizeChildren = function(input) {\n\tvar children = []\n\tif (input.length) {\n\t\tvar isKeyed = input[0] != null && input[0].key != null\n\t\t// Note: this is a *very* perf-sensitive check.\n\t\t// Fun fact: merging the loop like this is somehow faster than splitting\n\t\t// it, noticeably so.\n\t\tfor (var i = 1; i < input.length; i++) {\n\t\t\tif ((input[i] != null && input[i].key != null) !== isKeyed) {\n\t\t\t\tthrow new TypeError(\"Vnodes must either always have keys or never have keys!\")\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < input.length; i++) {\n\t\t\tchildren[i] = Vnode.normalize(input[i])\n\t\t}\n\t}\n\treturn children\n}\n\nmodule.exports = Vnode\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./promise/promise\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./request/request\")(window, PromisePolyfill, mountRedraw.redraw)\n","\"use strict\"\n\nvar buildPathname = require(\"../pathname/build\")\n\nmodule.exports = function($window, Promise, oncompletion) {\n\tvar callbackCount = 0\n\n\tfunction PromiseProxy(executor) {\n\t\treturn new Promise(executor)\n\t}\n\n\t// In case the global Promise is some userland library's where they rely on\n\t// `foo instanceof this.constructor`, `this.constructor.resolve(value)`, or\n\t// similar. Let's *not* break them.\n\tPromiseProxy.prototype = Promise.prototype\n\tPromiseProxy.__proto__ = Promise // eslint-disable-line no-proto\n\n\tfunction makeRequest(factory) {\n\t\treturn function(url, args) {\n\t\t\tif (typeof url !== \"string\") { args = url; url = url.url }\n\t\t\telse if (args == null) args = {}\n\t\t\tvar promise = new Promise(function(resolve, reject) {\n\t\t\t\tfactory(buildPathname(url, args.params), args, function (data) {\n\t\t\t\t\tif (typeof args.type === \"function\") {\n\t\t\t\t\t\tif (Array.isArray(data)) {\n\t\t\t\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\t\t\t\tdata[i] = new args.type(data[i])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse data = new args.type(data)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(data)\n\t\t\t\t}, reject)\n\t\t\t})\n\t\t\tif (args.background === true) return promise\n\t\t\tvar count = 0\n\t\t\tfunction complete() {\n\t\t\t\tif (--count === 0 && typeof oncompletion === \"function\") oncompletion()\n\t\t\t}\n\n\t\t\treturn wrap(promise)\n\n\t\t\tfunction wrap(promise) {\n\t\t\t\tvar then = promise.then\n\t\t\t\t// Set the constructor, so engines know to not await or resolve\n\t\t\t\t// this as a native promise. At the time of writing, this is\n\t\t\t\t// only necessary for V8, but their behavior is the correct\n\t\t\t\t// behavior per spec. See this spec issue for more details:\n\t\t\t\t// https://github.com/tc39/ecma262/issues/1577. Also, see the\n\t\t\t\t// corresponding comment in `request/tests/test-request.js` for\n\t\t\t\t// a bit more background on the issue at hand.\n\t\t\t\tpromise.constructor = PromiseProxy\n\t\t\t\tpromise.then = function() {\n\t\t\t\t\tcount++\n\t\t\t\t\tvar next = then.apply(promise, arguments)\n\t\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\t\tcomplete()\n\t\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t\t})\n\t\t\t\t\treturn wrap(next)\n\t\t\t\t}\n\t\t\t\treturn promise\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasHeader(args, name) {\n\t\tfor (var key in args.headers) {\n\t\t\tif ({}.hasOwnProperty.call(args.headers, key) && name.test(key)) return true\n\t\t}\n\t\treturn false\n\t}\n\n\treturn {\n\t\trequest: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar method = args.method != null ? args.method.toUpperCase() : \"GET\"\n\t\t\tvar body = args.body\n\t\t\tvar assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(body instanceof $window.FormData)\n\t\t\tvar responseType = args.responseType || (typeof args.extract === \"function\" ? \"\" : \"json\")\n\n\t\t\tvar xhr = new $window.XMLHttpRequest(), aborted = false\n\t\t\tvar original = xhr, replacedAbort\n\t\t\tvar abort = xhr.abort\n\n\t\t\txhr.abort = function() {\n\t\t\t\taborted = true\n\t\t\t\tabort.call(this)\n\t\t\t}\n\n\t\t\txhr.open(method, url, args.async !== false, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\n\t\t\tif (assumeJSON && body != null && !hasHeader(args, /^content-type$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (typeof args.deserialize !== \"function\" && !hasHeader(args, /^accept$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tif (args.timeout) xhr.timeout = args.timeout\n\t\t\txhr.responseType = responseType\n\n\t\t\tfor (var key in args.headers) {\n\t\t\t\tif ({}.hasOwnProperty.call(args.headers, key)) {\n\t\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.onreadystatechange = function(ev) {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif (aborted) return\n\n\t\t\t\tif (ev.target.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar success = (ev.target.status >= 200 && ev.target.status < 300) || ev.target.status === 304 || (/^file:\\/\\//i).test(url)\n\t\t\t\t\t\t// When the response type isn't \"\" or \"text\",\n\t\t\t\t\t\t// `xhr.responseText` is the wrong thing to use.\n\t\t\t\t\t\t// Browsers do the right thing and throw here, and we\n\t\t\t\t\t\t// should honor that and do the right thing by\n\t\t\t\t\t\t// preferring `xhr.response` where possible/practical.\n\t\t\t\t\t\tvar response = ev.target.response, message\n\n\t\t\t\t\t\tif (responseType === \"json\") {\n\t\t\t\t\t\t\t// For IE and Edge, which don't implement\n\t\t\t\t\t\t\t// `responseType: \"json\"`.\n\t\t\t\t\t\t\tif (!ev.target.responseType && typeof args.extract !== \"function\") response = JSON.parse(ev.target.responseText)\n\t\t\t\t\t\t} else if (!responseType || responseType === \"text\") {\n\t\t\t\t\t\t\t// Only use this default if it's text. If a parsed\n\t\t\t\t\t\t\t// document is needed on old IE and friends (all\n\t\t\t\t\t\t\t// unsupported), the user should use a custom\n\t\t\t\t\t\t\t// `config` instead. They're already using this at\n\t\t\t\t\t\t\t// their own risk.\n\t\t\t\t\t\t\tif (response == null) response = ev.target.responseText\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof args.extract === \"function\") {\n\t\t\t\t\t\t\tresponse = args.extract(ev.target, args)\n\t\t\t\t\t\t\tsuccess = true\n\t\t\t\t\t\t} else if (typeof args.deserialize === \"function\") {\n\t\t\t\t\t\t\tresponse = args.deserialize(response)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (success) resolve(response)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\ttry { message = ev.target.responseText }\n\t\t\t\t\t\t\tcatch (e) { message = response }\n\t\t\t\t\t\t\tvar error = new Error(message)\n\t\t\t\t\t\t\terror.code = ev.target.status\n\t\t\t\t\t\t\terror.response = response\n\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof args.config === \"function\") {\n\t\t\t\txhr = args.config(xhr, args, url) || xhr\n\n\t\t\t\t// Propagate the `abort` to any replacement XHR as well.\n\t\t\t\tif (xhr !== original) {\n\t\t\t\t\treplacedAbort = xhr.abort\n\t\t\t\t\txhr.abort = function() {\n\t\t\t\t\t\taborted = true\n\t\t\t\t\t\treplacedAbort.call(this)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (body == null) xhr.send()\n\t\t\telse if (typeof args.serialize === \"function\") xhr.send(args.serialize(body))\n\t\t\telse if (body instanceof $window.FormData) xhr.send(body)\n\t\t\telse xhr.send(JSON.stringify(body))\n\t\t}),\n\t\tjsonp: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(data)\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t}\n\t\t\tscript.src = url + (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") +\n\t\t\t\tencodeURIComponent(args.callbackKey || \"callback\") + \"=\" +\n\t\t\t\tencodeURIComponent(callbackName)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t}),\n\t}\n}\n","\"use strict\"\n\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./api/router\")(window, mountRedraw)\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a