827 lines
42 KiB
JavaScript
827 lines
42 KiB
JavaScript
/*
|
|
Cook The Books v2.1.0
|
|
Licensed under CC BY-SA 4.0
|
|
Copyright 2022-2024 Oldgate Studios
|
|
Copyright 2019-2024 ScriptsTown
|
|
Copyright 2003-2024 The WordPress.org Team
|
|
*/
|
|
var cookthebooks = cookthebooks || {};
|
|
function cookthebooksDomReady(e) {
|
|
if ("function" == typeof e)
|
|
return "interactive" === document.readyState || "complete" === document.readyState ? e() : void document.addEventListener("DOMContentLoaded", e, !1)
|
|
}
|
|
Math.easeInOutQuad = function(e, t, n, a) {
|
|
return (e /= a / 2) < 1 ? n / 2 * e * e + t : -n / 2 * (--e * (e - 2) - 1) + t
|
|
}
|
|
,
|
|
cookthebooks.setupMainMenu = {
|
|
init: function() {
|
|
var e, t, n, a, o, i, s, r = document.getElementById("site-navigation");
|
|
r && (t = r.getElementsByTagName("ul")[0],
|
|
e = r.querySelector(".primary-menu-toggle"),
|
|
void 0 === t ? e && (e.style.display = "none") : (t.classList.add("nav-menu"),
|
|
t = r.querySelectorAll(".main-navigation-arrow-btn"),
|
|
n = r.querySelectorAll("li > a"),
|
|
a = r.querySelectorAll("li:not(.menu-item-has-children) > a"),
|
|
o = r.querySelectorAll("li:last-child:not(.menu-item-has-children) > a"),
|
|
i = r.querySelector(".primary-menu-search"),
|
|
s = r.querySelector(".primary-menu-search-toggle"),
|
|
this.toggleTouchClass(r),
|
|
this.toggleNavigation(e, r),
|
|
this.collapseIfClickOutside(e, r),
|
|
this.collapseIfEscapeKeyPress(e, r),
|
|
this.collapseOnResize(e, r),
|
|
this.toggleSubmenu(t, n, a, o),
|
|
this.trapFocusInModal(r),
|
|
this.toggleSearch(s, i),
|
|
this.trapFocusInSearch(i)))
|
|
},
|
|
toggleTouchClass: function(e) {
|
|
const t = "main-navigation--touch";
|
|
function n() {
|
|
return "ontouchstart"in window || 0 < navigator.maxTouchPoints || 0 < navigator.msMaxTouchPoints
|
|
}
|
|
n() && e.classList.add(t),
|
|
window.addEventListener("resize", function() {
|
|
n() ? e.classList.add(t) : e.classList.remove(t)
|
|
})
|
|
},
|
|
toggleNavigation: function(t, n) {
|
|
t && t.addEventListener("click", function(e) {
|
|
e.preventDefault(),
|
|
n.classList.toggle("toggled"),
|
|
t && ("true" === t.getAttribute("aria-expanded") ? t.setAttribute("aria-expanded", "false") : t.setAttribute("aria-expanded", "true"))
|
|
})
|
|
},
|
|
collapseIfClickOutside: function(e, t) {
|
|
const n = this;
|
|
document.addEventListener("click", function(e) {
|
|
t.contains(e.target) || t.classList.contains("toggled") || ([].forEach.call(t.querySelectorAll(".focus"), function(e) {
|
|
e.classList.remove("focus")
|
|
}),
|
|
[].forEach.call(t.querySelectorAll(".main-navigation-arrow-btn"), function(e) {
|
|
e.setAttribute("aria-expanded", "false")
|
|
}),
|
|
n.collapseSearchForm(t))
|
|
})
|
|
},
|
|
collapseIfEscapeKeyPress: function(t, n) {
|
|
const a = this;
|
|
document.addEventListener("keyup", function(e) {
|
|
"Escape" === e.key && (n.classList.remove("toggled"),
|
|
t && t.setAttribute("aria-expanded", "false"),
|
|
a.collapseSearchForm(n))
|
|
})
|
|
},
|
|
collapseOnResize: function(e, t) {
|
|
window.addEventListener("resize", function() {
|
|
window.matchMedia("screen and (min-width: 768px)").matches && (t.classList.remove("toggled"),
|
|
e) && e.setAttribute("aria-expanded", "false")
|
|
})
|
|
},
|
|
toggleSubmenu: function(e, t, n, a) {
|
|
function o() {
|
|
for (var e = this, t = !1; "ul" !== e.tagName.toLowerCase(); )
|
|
"li" !== e.tagName.toLowerCase() || t || e.classList.contains("focus") || (t = e),
|
|
e = e.parentElement;
|
|
[].forEach.call(e.querySelectorAll(".focus"), function(e) {
|
|
e.classList.remove("focus")
|
|
}),
|
|
[].forEach.call(e.querySelectorAll(".main-navigation-arrow-btn"), function(e) {
|
|
e.setAttribute("aria-expanded", "false")
|
|
}),
|
|
t && (t.classList.add("focus"),
|
|
this.setAttribute("aria-expanded", "true"))
|
|
}
|
|
function i(e) {
|
|
var t = this.parentElement
|
|
, n = "Tab" === e.key
|
|
, e = e.shiftKey;
|
|
n && e && t.classList.contains("focus") ? (t.classList.remove("focus"),
|
|
this.setAttribute("aria-expanded", "false")) : !n || e || t.classList.contains("focus") || (t.classList.add("focus"),
|
|
this.setAttribute("aria-expanded", "true"))
|
|
}
|
|
function s() {
|
|
for (var e = this, t = !1; !e.classList.contains("nav-menu"); )
|
|
t || "ul" !== e.tagName.toLowerCase() || ([].forEach.call(e.querySelectorAll(".focus"), function(e) {
|
|
e.classList.remove("focus")
|
|
}),
|
|
[].forEach.call(e.querySelectorAll(".main-navigation-arrow-btn"), function(e) {
|
|
e.setAttribute("aria-expanded", "false")
|
|
}),
|
|
t = !0),
|
|
e = e.parentElement
|
|
}
|
|
function r() {
|
|
for (var e = this; !e.classList.contains("nav-menu"); )
|
|
"li" === e.tagName.toLowerCase() && !e.classList.contains("focus") && (e.classList.add("focus"),
|
|
e.querySelector(".main-navigation-arrow-btn")) && this.setAttribute("aria-expanded", "true"),
|
|
e = e.parentElement
|
|
}
|
|
function c(e) {
|
|
var t, n = this, a = "Tab" === e.key, e = e.shiftKey;
|
|
if (a && !e) {
|
|
for (; t = function(e) {
|
|
for (; (e = e.nextSibling) && 1 !== e.nodeType; )
|
|
;
|
|
return e
|
|
}(n),
|
|
n = n.parentElement,
|
|
!t; )
|
|
;
|
|
[].forEach.call(n.querySelectorAll(".focus"), function(e) {
|
|
e.classList.remove("focus")
|
|
}),
|
|
[].forEach.call(n.querySelectorAll(".main-navigation-arrow-btn"), function(e) {
|
|
e.setAttribute("aria-expanded", "false")
|
|
})
|
|
}
|
|
}
|
|
[].forEach.call(e, function(e) {
|
|
e.addEventListener("click", o),
|
|
e.addEventListener("keydown", i)
|
|
}),
|
|
[].forEach.call(t, function(e) {
|
|
e.addEventListener("focus", s)
|
|
}),
|
|
[].forEach.call(n, function(e) {
|
|
e.addEventListener("focus", r)
|
|
}),
|
|
[].forEach.call(a, function(e) {
|
|
e.addEventListener("keydown", c)
|
|
})
|
|
},
|
|
trapFocusInModal: function(s) {
|
|
document.addEventListener("keydown", function(e) {
|
|
var t, n, a, o, i;
|
|
!s.classList.contains("toggled") || (n = s.querySelectorAll("input, a, button")).length < 1 || (t = n[0],
|
|
n = n[n.length - 1],
|
|
a = document.activeElement,
|
|
o = "Tab" === e.key,
|
|
i = e.shiftKey,
|
|
o && !i && n === a && (e.preventDefault(),
|
|
t.focus()),
|
|
o && i && t === a && (e.preventDefault(),
|
|
n.focus()))
|
|
})
|
|
},
|
|
toggleSearch: function(t, n) {
|
|
t && n && t.addEventListener("click", function(e) {
|
|
e.preventDefault(),
|
|
n.classList.toggle("toggled"),
|
|
"true" === t.getAttribute("aria-expanded") ? t.setAttribute("aria-expanded", "false") : t.setAttribute("aria-expanded", "true")
|
|
})
|
|
},
|
|
collapseSearchForm: function(e) {
|
|
var t = e.querySelector(".primary-menu-search")
|
|
, e = e.querySelector(".primary-menu-search-toggle");
|
|
t && t.classList.remove("toggled"),
|
|
e && e.setAttribute("aria-expanded", "false")
|
|
},
|
|
trapFocusInSearch: function(s) {
|
|
document.addEventListener("keydown", function(e) {
|
|
var t, n, a, o, i;
|
|
s && s.classList.contains("toggled") && (n = s.querySelector(".primary-menu-search-toggle"),
|
|
"none" === window.getComputedStyle(n, null).display || (n = s.querySelectorAll("input, a, button")).length < 1 || (t = n[0],
|
|
n = n[n.length - 1],
|
|
a = document.activeElement,
|
|
o = "Tab" === e.key,
|
|
i = e.shiftKey,
|
|
o && !i && n === a && (e.preventDefault(),
|
|
t.focus()),
|
|
o && i && t === a && (e.preventDefault(),
|
|
n.focus())))
|
|
})
|
|
}
|
|
},
|
|
cookthebooks.goToTop = {
|
|
offset: 300,
|
|
offsetOpacity: 1200,
|
|
scrollDuration: 700,
|
|
init: function() {
|
|
var e = document.querySelector(".go-to-top");
|
|
e && (this.handleScroll(e),
|
|
this.handleClick(e))
|
|
},
|
|
handleScroll: function(t) {
|
|
var n = this.offset
|
|
, a = this.offsetOpacity
|
|
, o = !1;
|
|
function e() {
|
|
var e = window.scrollY || document.documentElement.scrollTop;
|
|
n < e ? t.classList.add("go-to-top--show") : (t.classList.remove("go-to-top--show"),
|
|
t.classList.remove("go-to-top--fade-out")),
|
|
a < e && t.classList.add("go-to-top--fade-out"),
|
|
o = !1
|
|
}
|
|
window.addEventListener("scroll", function() {
|
|
o || (o = !0,
|
|
window.requestAnimationFrame ? window.requestAnimationFrame(e) : setTimeout(e, 250))
|
|
})
|
|
},
|
|
handleClick: function(t) {
|
|
t.addEventListener("click", function(e) {
|
|
function n(e) {
|
|
var e = e - (r = r || e)
|
|
, t = (o < e && (e = o),
|
|
Math.easeInOutQuad(e, s, a - s, o));
|
|
window.scrollTo(0, t),
|
|
e < o ? window.requestAnimationFrame(n) : i && i()
|
|
}
|
|
var a, o, i, s, r;
|
|
e.preventDefault(),
|
|
window.requestAnimationFrame ? (a = 0,
|
|
o = this.scrollDuration,
|
|
s = window.scrollY || document.documentElement.scrollTop,
|
|
r = null,
|
|
window.requestAnimationFrame(n)) : window.scrollTo(0, 0),
|
|
t.blur()
|
|
}
|
|
.bind(this))
|
|
}
|
|
},
|
|
cookthebooksDomReady(function() {
|
|
cookthebooks.setupMainMenu.init(),
|
|
cookthebooks.goToTop.init()
|
|
});
|
|
/*
|
|
ResizeObserver.js
|
|
*/
|
|
!function(t, e) {
|
|
"object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.ResizeObserver = e()
|
|
}(this, function() {
|
|
"use strict";
|
|
var r = function() {
|
|
if ("undefined" != typeof Map)
|
|
return Map;
|
|
function r(t, n) {
|
|
var r = -1;
|
|
return t.some(function(t, e) {
|
|
return t[0] === n && (r = e,
|
|
!0)
|
|
}),
|
|
r
|
|
}
|
|
return function() {
|
|
function t() {
|
|
this.__entries__ = []
|
|
}
|
|
return Object.defineProperty(t.prototype, "size", {
|
|
get: function() {
|
|
return this.__entries__.length
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}),
|
|
t.prototype.get = function(t) {
|
|
var e = r(this.__entries__, t)
|
|
, n = this.__entries__[e];
|
|
return n && n[1]
|
|
}
|
|
,
|
|
t.prototype.set = function(t, e) {
|
|
var n = r(this.__entries__, t);
|
|
~n ? this.__entries__[n][1] = e : this.__entries__.push([t, e])
|
|
}
|
|
,
|
|
t.prototype.delete = function(t) {
|
|
var e = this.__entries__
|
|
, n = r(e, t);
|
|
~n && e.splice(n, 1)
|
|
}
|
|
,
|
|
t.prototype.has = function(t) {
|
|
return !!~r(this.__entries__, t)
|
|
}
|
|
,
|
|
t.prototype.clear = function() {
|
|
this.__entries__.splice(0)
|
|
}
|
|
,
|
|
t.prototype.forEach = function(t, e) {
|
|
void 0 === e && (e = null);
|
|
for (var n = 0, r = this.__entries__; n < r.length; n++) {
|
|
var i = r[n];
|
|
t.call(e, i[1], i[0])
|
|
}
|
|
}
|
|
,
|
|
t
|
|
}()
|
|
}()
|
|
, n = "undefined" != typeof window && "undefined" != typeof document && window.document === document
|
|
, e = "undefined" != typeof global && global.Math === Math ? global : "undefined" != typeof self && self.Math === Math ? self : "undefined" != typeof window && window.Math === Math ? window : Function("return this")()
|
|
, a = "function" == typeof requestAnimationFrame ? requestAnimationFrame.bind(e) : function(t) {
|
|
return setTimeout(function() {
|
|
return t(Date.now())
|
|
}, 1e3 / 60)
|
|
}
|
|
, h = 2;
|
|
var i = ["top", "right", "bottom", "left", "width", "height", "size", "weight"]
|
|
, o = "undefined" != typeof MutationObserver
|
|
, s = function() {
|
|
function t() {
|
|
this.connected_ = !1,
|
|
this.mutationEventsAdded_ = !1,
|
|
this.mutationsObserver_ = null,
|
|
this.observers_ = [],
|
|
this.onTransitionEnd_ = this.onTransitionEnd_.bind(this),
|
|
this.refresh = function(t, e) {
|
|
var n = !1
|
|
, r = !1
|
|
, i = 0;
|
|
function o() {
|
|
n && (n = !1,
|
|
t()),
|
|
r && c()
|
|
}
|
|
function s() {
|
|
a(o)
|
|
}
|
|
function c() {
|
|
var t = Date.now();
|
|
if (n) {
|
|
if (t - i < h)
|
|
return;
|
|
r = !0
|
|
} else
|
|
r = !(n = !0),
|
|
setTimeout(s, e);
|
|
i = t
|
|
}
|
|
return c
|
|
}(this.refresh.bind(this), 20)
|
|
}
|
|
return t.prototype.addObserver = function(t) {
|
|
~this.observers_.indexOf(t) || this.observers_.push(t),
|
|
this.connected_ || this.connect_()
|
|
}
|
|
,
|
|
t.prototype.removeObserver = function(t) {
|
|
var e = this.observers_
|
|
, n = e.indexOf(t);
|
|
~n && e.splice(n, 1),
|
|
!e.length && this.connected_ && this.disconnect_()
|
|
}
|
|
,
|
|
t.prototype.refresh = function() {
|
|
this.updateObservers_() && this.refresh()
|
|
}
|
|
,
|
|
t.prototype.updateObservers_ = function() {
|
|
var t = this.observers_.filter(function(t) {
|
|
return t.gatherActive(),
|
|
t.hasActive()
|
|
});
|
|
return t.forEach(function(t) {
|
|
return t.broadcastActive()
|
|
}),
|
|
0 < t.length
|
|
}
|
|
,
|
|
t.prototype.connect_ = function() {
|
|
n && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_),
|
|
window.addEventListener("resize", this.refresh),
|
|
o ? (this.mutationsObserver_ = new MutationObserver(this.refresh),
|
|
this.mutationsObserver_.observe(document, {
|
|
attributes: !0,
|
|
childList: !0,
|
|
characterData: !0,
|
|
subtree: !0
|
|
})) : (document.addEventListener("DOMSubtreeModified", this.refresh),
|
|
this.mutationEventsAdded_ = !0),
|
|
this.connected_ = !0)
|
|
}
|
|
,
|
|
t.prototype.disconnect_ = function() {
|
|
n && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_),
|
|
window.removeEventListener("resize", this.refresh),
|
|
this.mutationsObserver_ && this.mutationsObserver_.disconnect(),
|
|
this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh),
|
|
this.mutationsObserver_ = null,
|
|
this.mutationEventsAdded_ = !1,
|
|
this.connected_ = !1)
|
|
}
|
|
,
|
|
t.prototype.onTransitionEnd_ = function(t) {
|
|
var e = t.propertyName
|
|
, n = void 0 === e ? "" : e;
|
|
i.some(function(t) {
|
|
return !!~n.indexOf(t)
|
|
}) && this.refresh()
|
|
}
|
|
,
|
|
t.getInstance = function() {
|
|
return this.instance_ || (this.instance_ = new t),
|
|
this.instance_
|
|
}
|
|
,
|
|
t.instance_ = null,
|
|
t
|
|
}()
|
|
, u = function(t, e) {
|
|
for (var n = 0, r = Object.keys(e); n < r.length; n++) {
|
|
var i = r[n];
|
|
Object.defineProperty(t, i, {
|
|
value: e[i],
|
|
enumerable: !1,
|
|
writable: !1,
|
|
configurable: !0
|
|
})
|
|
}
|
|
return t
|
|
}
|
|
, d = function(t) {
|
|
return t && t.ownerDocument && t.ownerDocument.defaultView || e
|
|
}
|
|
, p = b(0, 0, 0, 0);
|
|
function v(t) {
|
|
return parseFloat(t) || 0
|
|
}
|
|
function l(n) {
|
|
for (var t = [], e = 1; e < arguments.length; e++)
|
|
t[e - 1] = arguments[e];
|
|
return t.reduce(function(t, e) {
|
|
return t + v(n["border-" + e + "-width"])
|
|
}, 0)
|
|
}
|
|
function c(t) {
|
|
var e = t.clientWidth
|
|
, n = t.clientHeight;
|
|
if (!e && !n)
|
|
return p;
|
|
var r, i = d(t).getComputedStyle(t), o = function(t) {
|
|
for (var e = {}, n = 0, r = ["top", "right", "bottom", "left"]; n < r.length; n++) {
|
|
var i = r[n]
|
|
, o = t["padding-" + i];
|
|
e[i] = v(o)
|
|
}
|
|
return e
|
|
}(i), s = o.left + o.right, c = o.top + o.bottom, a = v(i.width), h = v(i.height);
|
|
if ("border-box" === i.boxSizing && (Math.round(a + s) !== e && (a -= l(i, "left", "right") + s),
|
|
Math.round(h + c) !== n && (h -= l(i, "top", "bottom") + c)),
|
|
(r = t) !== d(r).document.documentElement) {
|
|
var u = Math.round(a + s) - e
|
|
, f = Math.round(h + c) - n;
|
|
1 !== Math.abs(u) && (a -= u),
|
|
1 !== Math.abs(f) && (h -= f)
|
|
}
|
|
return b(o.left, o.top, a, h)
|
|
}
|
|
var f = "undefined" != typeof SVGGraphicsElement ? function(t) {
|
|
return t instanceof d(t).SVGGraphicsElement
|
|
}
|
|
: function(t) {
|
|
return t instanceof d(t).SVGElement && "function" == typeof t.getBBox
|
|
}
|
|
;
|
|
function _(t) {
|
|
return n ? f(t) ? b(0, 0, (e = t.getBBox()).width, e.height) : c(t) : p;
|
|
var e
|
|
}
|
|
function b(t, e, n, r) {
|
|
return {
|
|
x: t,
|
|
y: e,
|
|
width: n,
|
|
height: r
|
|
}
|
|
}
|
|
var m = function() {
|
|
function t(t) {
|
|
this.broadcastWidth = 0,
|
|
this.broadcastHeight = 0,
|
|
this.contentRect_ = b(0, 0, 0, 0),
|
|
this.target = t
|
|
}
|
|
return t.prototype.isActive = function() {
|
|
var t = _(this.target);
|
|
return (this.contentRect_ = t).width !== this.broadcastWidth || t.height !== this.broadcastHeight
|
|
}
|
|
,
|
|
t.prototype.broadcastRect = function() {
|
|
var t = this.contentRect_;
|
|
return this.broadcastWidth = t.width,
|
|
this.broadcastHeight = t.height,
|
|
t
|
|
}
|
|
,
|
|
t
|
|
}()
|
|
, y = function(t, e) {
|
|
var n, r, i, o, s, c, a, h = (r = (n = e).x,
|
|
i = n.y,
|
|
o = n.width,
|
|
s = n.height,
|
|
c = "undefined" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object,
|
|
a = Object.create(c.prototype),
|
|
u(a, {
|
|
x: r,
|
|
y: i,
|
|
width: o,
|
|
height: s,
|
|
top: i,
|
|
right: r + o,
|
|
bottom: s + i,
|
|
left: r
|
|
}),
|
|
a);
|
|
u(this, {
|
|
target: t,
|
|
contentRect: h
|
|
})
|
|
}
|
|
, g = function() {
|
|
function t(t, e, n) {
|
|
if (this.activeObservations_ = [],
|
|
this.observations_ = new r,
|
|
"function" != typeof t)
|
|
throw new TypeError("The callback provided as parameter 1 is not a function.");
|
|
this.callback_ = t,
|
|
this.controller_ = e,
|
|
this.callbackCtx_ = n
|
|
}
|
|
return t.prototype.observe = function(t) {
|
|
if (!arguments.length)
|
|
throw new TypeError("1 argument required, but only 0 present.");
|
|
if ("undefined" != typeof Element && Element instanceof Object) {
|
|
if (!(t instanceof d(t).Element))
|
|
throw new TypeError('parameter 1 is not of type "Element".');
|
|
var e = this.observations_;
|
|
e.has(t) || (e.set(t, new m(t)),
|
|
this.controller_.addObserver(this),
|
|
this.controller_.refresh())
|
|
}
|
|
}
|
|
,
|
|
t.prototype.unobserve = function(t) {
|
|
if (!arguments.length)
|
|
throw new TypeError("1 argument required, but only 0 present.");
|
|
if ("undefined" != typeof Element && Element instanceof Object) {
|
|
if (!(t instanceof d(t).Element))
|
|
throw new TypeError('parameter 1 is not of type "Element".');
|
|
var e = this.observations_;
|
|
e.has(t) && (e.delete(t),
|
|
e.size || this.controller_.removeObserver(this))
|
|
}
|
|
}
|
|
,
|
|
t.prototype.disconnect = function() {
|
|
this.clearActive(),
|
|
this.observations_.clear(),
|
|
this.controller_.removeObserver(this)
|
|
}
|
|
,
|
|
t.prototype.gatherActive = function() {
|
|
var e = this;
|
|
this.clearActive(),
|
|
this.observations_.forEach(function(t) {
|
|
t.isActive() && e.activeObservations_.push(t)
|
|
})
|
|
}
|
|
,
|
|
t.prototype.broadcastActive = function() {
|
|
if (this.hasActive()) {
|
|
var t = this.callbackCtx_
|
|
, e = this.activeObservations_.map(function(t) {
|
|
return new y(t.target,t.broadcastRect())
|
|
});
|
|
this.callback_.call(t, e, t),
|
|
this.clearActive()
|
|
}
|
|
}
|
|
,
|
|
t.prototype.clearActive = function() {
|
|
this.activeObservations_.splice(0)
|
|
}
|
|
,
|
|
t.prototype.hasActive = function() {
|
|
return 0 < this.activeObservations_.length
|
|
}
|
|
,
|
|
t
|
|
}()
|
|
, w = "undefined" != typeof WeakMap ? new WeakMap : new r
|
|
, t = function t(e) {
|
|
if (!(this instanceof t))
|
|
throw new TypeError("Cannot call a class as a function.");
|
|
if (!arguments.length)
|
|
throw new TypeError("1 argument required, but only 0 present.");
|
|
var n = s.getInstance()
|
|
, r = new g(e,n,this);
|
|
w.set(this, r)
|
|
};
|
|
return ["observe", "unobserve", "disconnect"].forEach(function(e) {
|
|
t.prototype[e] = function() {
|
|
var t;
|
|
return (t = w.get(this))[e].apply(t, arguments)
|
|
}
|
|
}),
|
|
void 0 !== e.ResizeObserver ? e.ResizeObserver : t
|
|
});
|
|
/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */
|
|
var twemoji = function () {
|
|
"use strict";
|
|
var twemoji = {
|
|
base: "https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/",
|
|
ext: ".svg",
|
|
size: "svg",
|
|
className: "emoji",
|
|
convert: {
|
|
fromCodePoint: fromCodePoint,
|
|
toCodePoint: toCodePoint
|
|
},
|
|
onerror: function onerror() {
|
|
if (this.parentNode) {
|
|
this.parentNode.replaceChild(createText(this.alt, false), this)
|
|
}
|
|
},
|
|
parse: parse,
|
|
replace: replace,
|
|
test: test
|
|
},
|
|
escaper = {
|
|
"&": "&",
|
|
"<": "<",
|
|
">": ">",
|
|
"'": "'",
|
|
'"': """
|
|
},
|
|
re = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef0-\udef6]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedd-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec2\uded0-\uded9\udee0-\udee7]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,
|
|
UFE0Fg = /\uFE0F/g,
|
|
U200D = String.fromCharCode(8205),
|
|
rescaper = /[&<>'"]/g,
|
|
shouldntBeParsed = /^(?:iframe|noframes|noscript|script|select|style|textarea)$/,
|
|
fromCharCode = String.fromCharCode;
|
|
return twemoji;
|
|
|
|
function createText(text, clean) {
|
|
return document.createTextNode(clean ? text.replace(UFE0Fg, "") : text)
|
|
}
|
|
|
|
function escapeHTML(s) {
|
|
return s.replace(rescaper, replacer)
|
|
}
|
|
|
|
function defaultImageSrcGenerator(icon, options) {
|
|
return "".concat(options.base, options.size, "/", icon, options.ext)
|
|
}
|
|
|
|
function grabAllTextNodes(node, allText) {
|
|
var childNodes = node.childNodes,
|
|
length = childNodes.length,
|
|
subnode, nodeType;
|
|
while (length--) {
|
|
subnode = childNodes[length];
|
|
nodeType = subnode.nodeType;
|
|
if (nodeType === 3) {
|
|
allText.push(subnode)
|
|
} else if (nodeType === 1 && !("ownerSVGElement" in subnode) && !shouldntBeParsed.test(subnode.nodeName.toLowerCase())) {
|
|
grabAllTextNodes(subnode, allText)
|
|
}
|
|
}
|
|
return allText
|
|
}
|
|
|
|
function grabTheRightIcon(rawText) {
|
|
return toCodePoint(rawText.indexOf(U200D) < 0 ? rawText.replace(UFE0Fg, "") : rawText)
|
|
}
|
|
|
|
function parseNode(node, options) {
|
|
var allText = grabAllTextNodes(node, []),
|
|
length = allText.length,
|
|
attrib, attrname, modified, fragment, subnode, text, match, i, index, img, rawText, iconId, src;
|
|
while (length--) {
|
|
modified = false;
|
|
fragment = document.createDocumentFragment();
|
|
subnode = allText[length];
|
|
text = subnode.nodeValue;
|
|
i = 0;
|
|
while (match = re.exec(text)) {
|
|
index = match.index;
|
|
if (index !== i) {
|
|
fragment.appendChild(createText(text.slice(i, index), true))
|
|
}
|
|
rawText = match[0];
|
|
iconId = grabTheRightIcon(rawText);
|
|
i = index + rawText.length;
|
|
src = options.callback(iconId, options);
|
|
if (iconId && src) {
|
|
img = new Image;
|
|
img.onerror = options.onerror;
|
|
img.setAttribute("draggable", "false");
|
|
img.setAttribute("loading", "lazy");
|
|
attrib = options.attributes(rawText, iconId);
|
|
for (attrname in attrib) {
|
|
if (attrib.hasOwnProperty(attrname) && attrname.indexOf("on") !== 0 && !img.hasAttribute(attrname)) {
|
|
img.setAttribute(attrname, attrib[attrname])
|
|
}
|
|
}
|
|
img.className = options.className;
|
|
img.alt = rawText;
|
|
img.src = src;
|
|
modified = true;
|
|
fragment.appendChild(img)
|
|
}
|
|
if (!img)
|
|
fragment.appendChild(createText(rawText, false));
|
|
img = null
|
|
}
|
|
if (modified) {
|
|
if (i < text.length) {
|
|
fragment.appendChild(createText(text.slice(i), true))
|
|
}
|
|
subnode.parentNode.replaceChild(fragment, subnode)
|
|
}
|
|
}
|
|
return node
|
|
}
|
|
|
|
function parseString(str, options) {
|
|
return replace(str, function(rawText) {
|
|
var ret = rawText,
|
|
iconId = grabTheRightIcon(rawText),
|
|
src = options.callback(iconId, options),
|
|
attrib, attrname;
|
|
if (iconId && src) {
|
|
ret = "<img ".concat('class="', options.className, '" ', 'draggable="false" ', 'loading="lazy" ', 'alt="', rawText, '"', ' src="', src, '"');
|
|
attrib = options.attributes(rawText, iconId);
|
|
for (attrname in attrib) {
|
|
if (attrib.hasOwnProperty(attrname) && attrname.indexOf("on") !== 0 && ret.indexOf(" " + attrname + "=") === -1) {
|
|
ret = ret.concat(" ", attrname, '="', escapeHTML(attrib[attrname]), '"')
|
|
}
|
|
}
|
|
ret = ret.concat("/>")
|
|
}
|
|
return ret
|
|
})
|
|
}
|
|
|
|
function replacer(m) {
|
|
return escaper[m]
|
|
}
|
|
|
|
function returnNull() {
|
|
return null
|
|
}
|
|
|
|
function toSizeSquaredAsset(value) {
|
|
return typeof value === "number" ? value + "x" + value : value
|
|
}
|
|
|
|
function fromCodePoint(codepoint) {
|
|
var code = typeof codepoint === "string" ? parseInt(codepoint, 16) : codepoint;
|
|
if (code < 65536) {
|
|
return fromCharCode(code)
|
|
}
|
|
code -= 65536;
|
|
return fromCharCode(55296 + (code >> 10), 56320 + (code & 1023))
|
|
}
|
|
|
|
function parse(what, how) {
|
|
if (!how || typeof how === "function") {
|
|
how = {
|
|
callback: how
|
|
}
|
|
}
|
|
return (typeof what === "string" ? parseString : parseNode)(what, {
|
|
callback: how.callback || defaultImageSrcGenerator,
|
|
attributes: typeof how.attributes === "function" ? how.attributes : returnNull,
|
|
base: typeof how.base === "string" ? how.base : twemoji.base,
|
|
ext: how.ext || twemoji.ext,
|
|
size: how.folder || toSizeSquaredAsset(how.size || twemoji.size),
|
|
className: how.className || twemoji.className,
|
|
onerror: how.onerror || twemoji.onerror
|
|
})
|
|
}
|
|
|
|
function replace(text, callback) {
|
|
return String(text).replace(re, callback)
|
|
}
|
|
|
|
function test(text) {
|
|
re.lastIndex = 0;
|
|
var result = re.test(text);
|
|
re.lastIndex = 0;
|
|
return result
|
|
}
|
|
|
|
function toCodePoint(unicodeSurrogates, sep) {
|
|
var r = [],
|
|
c = 0,
|
|
p = 0,
|
|
i = 0;
|
|
while (i < unicodeSurrogates.length) {
|
|
c = unicodeSurrogates.charCodeAt(i++);
|
|
if (p) {
|
|
r.push((65536 + (p - 55296 << 10) + (c - 56320)).toString(16));
|
|
p = 0
|
|
} else if (55296 <= c && c <= 56319) {
|
|
p = c
|
|
} else {
|
|
r.push(c.toString(16))
|
|
}
|
|
}
|
|
return r.join(sep || "-")
|
|
}
|
|
}(); |