function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /** * Huebee PACKAGED v2.0.0 * 1-click color picker * MIT license * http://huebee.buzz * Copyright 2018 Metafizzy */ !function (t, e) { "function" == typeof define && define.amd ? define("ev-emitter/ev-emitter", e) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e() : t.EvEmitter = e(); }("undefined" != typeof window ? window : this, function () { function t() {} var e = t.prototype; return e.on = function (t, e) { if (t && e) { var n = this._events = this._events || {}, i = n[t] = n[t] || []; return i.indexOf(e) == -1 && i.push(e), this; } }, e.once = function (t, e) { if (t && e) { this.on(t, e); var n = this._onceEvents = this._onceEvents || {}, i = n[t] = n[t] || {}; return i[e] = !0, this; } }, e.off = function (t, e) { var n = this._events && this._events[t]; if (n && n.length) { var i = n.indexOf(e); return i != -1 && n.splice(i, 1), this; } }, e.emitEvent = function (t, e) { var n = this._events && this._events[t]; if (n && n.length) { var i = 0, o = n[i]; e = e || []; for (var s = this._onceEvents && this._onceEvents[t]; o;) { var r = s && s[o]; r && (this.off(t, o), delete s[o]), o.apply(this, e), i += r ? 0 : 1, o = n[i]; } return this; } }, t; }), function (t, e) { "function" == typeof define && define.amd ? define("unipointer/unipointer", ["ev-emitter/ev-emitter"], function (n) { return e(t, n); }) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e(t, require("ev-emitter")) : t.Unipointer = e(t, t.EvEmitter); }(window, function (t, e) { function n() {} function i() {} var o = i.prototype = Object.create(e.prototype); o.bindStartEvent = function (t) { this._bindStartEvent(t, !0); }, o.unbindStartEvent = function (t) { this._bindStartEvent(t, !1); }, o._bindStartEvent = function (e, n) { n = void 0 === n || !!n; var i = n ? "addEventListener" : "removeEventListener"; t.navigator.pointerEnabled ? e[i]("pointerdown", this) : t.navigator.msPointerEnabled ? e[i]("MSPointerDown", this) : (e[i]("mousedown", this), e[i]("touchstart", this)); }, o.handleEvent = function (t) { var e = "on" + t.type; this[e] && this[e](t); }, o.getTouch = function (t) { for (var e = 0; e < t.length; e++) { var n = t[e]; if (n.identifier == this.pointerIdentifier) return n; } }, o.onmousedown = function (t) { var e = t.button; e && 0 !== e && 1 !== e || this._pointerDown(t, t); }, o.ontouchstart = function (t) { this._pointerDown(t, t.changedTouches[0]); }, o.onMSPointerDown = o.onpointerdown = function (t) { this._pointerDown(t, t); }, o._pointerDown = function (t, e) { this.isPointerDown || (this.isPointerDown = !0, this.pointerIdentifier = void 0 !== e.pointerId ? e.pointerId : e.identifier, this.pointerDown(t, e)); }, o.pointerDown = function (t, e) { this._bindPostStartEvents(t), this.emitEvent("pointerDown", [t, e]); }; var s = { mousedown: ["mousemove", "mouseup"], touchstart: ["touchmove", "touchend", "touchcancel"], pointerdown: ["pointermove", "pointerup", "pointercancel"], MSPointerDown: ["MSPointerMove", "MSPointerUp", "MSPointerCancel"] }; return o._bindPostStartEvents = function (e) { if (e) { var n = s[e.type]; n.forEach(function (e) { t.addEventListener(e, this); }, this), this._boundPointerEvents = n; } }, o._unbindPostStartEvents = function () { this._boundPointerEvents && (this._boundPointerEvents.forEach(function (e) { t.removeEventListener(e, this); }, this), delete this._boundPointerEvents); }, o.onmousemove = function (t) { this._pointerMove(t, t); }, o.onMSPointerMove = o.onpointermove = function (t) { t.pointerId == this.pointerIdentifier && this._pointerMove(t, t); }, o.ontouchmove = function (t) { var e = this.getTouch(t.changedTouches); e && this._pointerMove(t, e); }, o._pointerMove = function (t, e) { this.pointerMove(t, e); }, o.pointerMove = function (t, e) { this.emitEvent("pointerMove", [t, e]); }, o.onmouseup = function (t) { this._pointerUp(t, t); }, o.onMSPointerUp = o.onpointerup = function (t) { t.pointerId == this.pointerIdentifier && this._pointerUp(t, t); }, o.ontouchend = function (t) { var e = this.getTouch(t.changedTouches); e && this._pointerUp(t, e); }, o._pointerUp = function (t, e) { this._pointerDone(), this.pointerUp(t, e); }, o.pointerUp = function (t, e) { this.emitEvent("pointerUp", [t, e]); }, o._pointerDone = function () { this.isPointerDown = !1, delete this.pointerIdentifier, this._unbindPostStartEvents(), this.pointerDone(); }, o.pointerDone = n, o.onMSPointerCancel = o.onpointercancel = function (t) { t.pointerId == this.pointerIdentifier && this._pointerCancel(t, t); }, o.ontouchcancel = function (t) { var e = this.getTouch(t.changedTouches); e && this._pointerCancel(t, e); }, o._pointerCancel = function (t, e) { this._pointerDone(), this.pointerCancel(t, e); }, o.pointerCancel = function (t, e) { this.emitEvent("pointerCancel", [t, e]); }, i.getPointerPoint = function (t) { return { x: t.pageX, y: t.pageY }; }, i; }), function (t, e) { "function" == typeof define && define.amd ? define(["ev-emitter/ev-emitter", "unipointer/unipointer"], function (n, i) { return e(t, n, i); }) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e(t, require("ev-emitter"), require("unipointer")) : t.Huebee = e(t, t.EvEmitter, t.Unipointer); }(window, function (t, e, n) { function i(t, e) { if (t = h(t), !t) throw "Bad element for Huebee: " + t; this.anchor = t, this.options = {}, this.option(i.defaults), this.option(e), this.create(); } function o() { for (var t = document.querySelectorAll("[data-huebee]"), e = 0; e < t.length; e++) { var n, o = t[e], s = o.getAttribute("data-huebee"); try { n = s && JSON.parse(s); } catch (t) { C && C.error("Error parsing data-huebee on " + o.className + ": " + t); continue; } new i(o, n); } } function s(t) { _.clearRect(0, 0, 1, 1), _.fillStyle = "#010203", _.fillStyle = t, _.fillRect(0, 0, 1, 1); var e = _.getImageData(0, 0, 1, 1).data; if (e = [e[0], e[1], e[2], e[3]], "1,2,3,255" != e.join(",")) { var n = u.apply(this, e); return { color: t.trim(), hue: n[0], sat: n[1], lum: n[2] }; } } function r(t, e) { for (var n in e) { t[n] = e[n]; } return t; } function h(t) { return "string" == typeof t && (t = document.querySelector(t)), t; } function a(t, e, n) { var i = c(t, e, n); return d(i); } function c(t, e, n) { var i, o, s = (1 - Math.abs(2 * n - 1)) * e, r = t / 60, h = s * (1 - Math.abs(r % 2 - 1)); switch (Math.floor(r)) { case 0: i = [s, h, 0]; break; case 1: i = [h, s, 0]; break; case 2: i = [0, s, h]; break; case 3: i = [0, h, s]; break; case 4: i = [h, 0, s]; break; case 5: i = [s, 0, h]; break; default: i = [0, 0, 0]; } return o = n - s / 2, i = i.map(function (t) { return t + o; }); } function u(t, e, n) { t /= 255, e /= 255, n /= 255; var i, o = Math.max(t, e, n), s = Math.min(t, e, n), r = o - s, h = .5 * (o + s), a = 0 === r ? 0 : r / (1 - Math.abs(2 * h - 1)); 0 === r ? i = 0 : o === t ? i = (e - n) / r % 6 : o === e ? i = (n - t) / r + 2 : o === n && (i = (t - e) / r + 4); var c = 60 * i; return [c, parseFloat(a), parseFloat(h)]; } function d(t) { var e = t.map(function (t) { t = Math.round(255 * t); var e = t.toString(16).toUpperCase(); return e = e.length < 2 ? "0" + e : e; }); return "#" + e.join(""); } function p(t) { return "#" + t[1] + t[3] + t[5]; } i.defaults = { hues: 12, hue0: 0, shades: 5, saturations: 3, notation: "shortHex", setText: !0, setBGColor: !0 }; var f = i.prototype = Object.create(e.prototype); f.option = function (t) { this.options = r(this.options, t); }; var v = 0, l = {}; f.create = function () { function t(t) { t.target == i && t.preventDefault(); } var e = this.guid = ++v; this.anchor.huebeeGUID = e, l[e] = this, this.setBGElems = this.getSetElems(this.options.setBGColor), this.setTextElems = this.getSetElems(this.options.setText), this.outsideCloseIt = this.outsideClose.bind(this), this.onDocKeydown = this.docKeydown.bind(this), this.closeIt = this.close.bind(this), this.openIt = this.open.bind(this), this.onElemTransitionend = this.elemTransitionend.bind(this), this.isInputAnchor = "INPUT" == this.anchor.nodeName, this.options.staticOpen || (this.anchor.addEventListener("click", this.openIt), this.anchor.addEventListener("focus", this.openIt)), this.isInputAnchor && this.anchor.addEventListener("input", this.inputInput.bind(this)); var n = this.element = document.createElement("div"); n.className = "huebee ", n.className += this.options.staticOpen ? "is-static-open " : "is-hidden ", n.className += this.options.className || ""; var i = this.container = document.createElement("div"); if (i.className = "huebee__container", i.addEventListener("mousedown", t), i.addEventListener("touchstart", t), this.createCanvas(), this.cursor = document.createElement("div"), this.cursor.className = "huebee__cursor is-hidden", i.appendChild(this.cursor), this.createCloseButton(), n.appendChild(i), !this.options.staticOpen) { var o = getComputedStyle(this.anchor.parentNode); "relative" != o.position && "absolute" != o.position && (this.anchor.parentNode.style.position = "relative"); } var s = this.options.hues, r = this.options.customColors, h = r && r.length; this.satY = h ? Math.ceil(h / s) + 1 : 0, this.updateColors(), this.setAnchorColor(), this.options.staticOpen && this.open(); }, f.getSetElems = function (t) { return t === !0 ? [this.anchor] : "string" == typeof t ? document.querySelectorAll(t) : void 0; }, f.createCanvas = function () { var t = this.canvas = document.createElement("canvas"); t.className = "huebee__canvas", this.ctx = t.getContext("2d"); var e = this.canvasPointer = new n(); e._bindStartEvent(t), e.on("pointerDown", this.canvasPointerDown.bind(this)), e.on("pointerMove", this.canvasPointerMove.bind(this)), this.container.appendChild(t); }; var m = "http://www.w3.org/2000/svg"; f.createCloseButton = function () { if (!this.options.staticOpen) { var t = document.createElementNS(m, "svg"); t.setAttribute("class", "huebee__close-button"), t.setAttribute("viewBox", "0 0 24 24"), t.setAttribute("width", "24"), t.setAttribute("height", "24"); var e = document.createElementNS(m, "path"); e.setAttribute("d", "M 7,7 L 17,17 M 17,7 L 7,17"), e.setAttribute("class", "huebee__close-button__x"), t.appendChild(e), t.addEventListener("click", this.closeIt), this.container.appendChild(t); } }, f.updateColors = function () { this.swatches = {}, this.colorGrid = {}, this.updateColorModer(); var t = this.options.shades, e = this.options.saturations, n = this.options.hues, i = this.options.customColors; if (i && i.length) { var o = 0; i.forEach(function (t) { var e = o % n, i = Math.floor(o / n), r = s(t); r && (this.addSwatch(r, e, i), o++); }.bind(this)); } for (var r = 0; r < e; r++) { var h = 1 - r / e, a = t * r + this.satY; this.updateSaturationGrid(r, h, a); } for (r = 0; r < t + 2; r++) { var c = 1 - r / (t + 1), u = this.colorModer(0, 0, c), d = s(u); this.addSwatch(d, n + 1, r); } }, f.updateSaturationGrid = function (t, e, n) { for (var i = this.options.shades, o = this.options.hues, r = this.options.hue0, h = 0; h < i; h++) { for (var a = 0; a < o; a++) { var c = Math.round(360 * a / o + r) % 360, u = 1 - (h + 1) / (i + 1), d = this.colorModer(c, e, u), p = s(d), f = h + n; this.addSwatch(p, a, f); } } }, f.addSwatch = function (t, e, n) { this.swatches[e + "," + n] = t, this.colorGrid[t.color.toUpperCase()] = { x: e, y: n }; }; var E = { hsl: function hsl(t, e, n) { return e = Math.round(100 * e), n = Math.round(100 * n), "hsl(" + t + ", " + e + "%, " + n + "%)"; }, hex: a, shortHex: function shortHex(t, e, n) { var i = a(t, e, n); return p(i); } }; f.updateColorModer = function () { this.colorModer = E[this.options.notation] || E.shortHex; }, f.renderColors = function () { var t = 2 * this.gridSize; for (var e in this.swatches) { var n = this.swatches[e], i = e.split(","), o = i[0], s = i[1]; this.ctx.fillStyle = n.color, this.ctx.fillRect(o * t, s * t, t, t); } }, f.setAnchorColor = function () { this.isInputAnchor && this.setColor(this.anchor.value); }; var g = document.documentElement; f.open = function () { if (!this.isOpen) { var t = this.anchor, e = this.element; this.options.staticOpen || (e.style.left = t.offsetLeft + "px", e.style.top = t.offsetTop + t.offsetHeight + "px"), this.bindOpenEvents(!0), e.removeEventListener("transitionend", this.onElemTransitionend), t.parentNode.insertBefore(e, t.nextSibling); var n = getComputedStyle(e).transitionDuration; this.hasTransition = n && "none" != n && parseFloat(n), this.isOpen = !0, this.updateSizes(), this.renderColors(), this.setAnchorColor(); e.offsetHeight; e.classList.remove("is-hidden"); } }, f.bindOpenEvents = function (t) { if (!this.options.staticOpen) { var e = (t ? "add" : "remove") + "EventListener"; g[e]("mousedown", this.outsideCloseIt), g[e]("touchstart", this.outsideCloseIt), document[e]("focusin", this.outsideCloseIt), document[e]("keydown", this.onDocKeydown), this.anchor[e]("blur", this.closeIt); } }, f.updateSizes = function () { var t = this.options.hues, e = this.options.shades, n = this.options.saturations; this.cursorBorder = parseInt(getComputedStyle(this.cursor).borderTopWidth, 10), this.gridSize = Math.round(this.cursor.offsetWidth - 2 * this.cursorBorder), this.canvasOffset = { x: this.canvas.offsetLeft, y: this.canvas.offsetTop }; var i = Math.max(e * n + this.satY, e + 2), o = this.gridSize * (t + 2); this.canvas.width = 2 * o, this.canvas.style.width = o + "px", this.canvas.height = this.gridSize * i * 2; }, f.outsideClose = function (t) { var e = this.anchor.contains(t.target), n = this.element.contains(t.target); e || n || this.close(); }; var b = { 13: !0, 27: !0 }; f.docKeydown = function (t) { b[t.keyCode] && this.close(); }; var w = "string" == typeof g.style.transform; f.close = function () { this.isOpen && (w && this.hasTransition ? this.element.addEventListener("transitionend", this.onElemTransitionend) : this.remove(), this.element.classList.add("is-hidden"), this.bindOpenEvents(!1), this.isOpen = !1); }, f.remove = function () { var t = this.element.parentNode; t.contains(this.element) && t.removeChild(this.element); }, f.elemTransitionend = function (t) { t.target == this.element && (this.element.removeEventListener("transitionend", this.onElemTransitionend), this.remove()); }, f.inputInput = function () { this.setColor(this.anchor.value); }, f.canvasPointerDown = function (t, e) { t.preventDefault(), this.updateOffset(), this.canvasPointerChange(e); }, f.updateOffset = function () { var e = this.canvas.getBoundingClientRect(); this.offset = { x: e.left + t.pageXOffset, y: e.top + t.pageYOffset }; }, f.canvasPointerMove = function (t, e) { this.canvasPointerChange(e); }, f.canvasPointerChange = function (t) { var e = Math.round(t.pageX - this.offset.x), n = Math.round(t.pageY - this.offset.y), i = this.gridSize, o = Math.floor(e / i), s = Math.floor(n / i), r = this.swatches[o + "," + s]; this.setSwatch(r); }, f.setColor = function (t) { var e = s(t); this.setSwatch(e); }, f.setSwatch = function (t) { var e = t && t.color; if (t) { var n = e == this.color; this.color = e, this.hue = t.hue, this.sat = t.sat, this.lum = t.lum; var i = this.lum - .15 * Math.cos((this.hue + 70) / 180 * Math.PI); this.isLight = i > .5; var o = this.colorGrid[e.toUpperCase()]; this.updateCursor(o), this.setTexts(), this.setBackgrounds(), n || this.emitEvent("change", [e, t.hue, t.sat, t.lum]); } }, f.setTexts = function () { if (this.setTextElems) for (var t = 0; t < this.setTextElems.length; t++) { var e = this.setTextElems[t], n = "INPUT" == e.nodeName ? "value" : "textContent"; e[n] = this.color; } }, f.setBackgrounds = function () { if (this.setBGElems) for (var t = this.isLight ? "#222" : "white", e = 0; e < this.setBGElems.length; e++) { var n = this.setBGElems[e]; n.style.backgroundColor = this.color, n.style.color = t; } }, f.updateCursor = function (t) { if (this.isOpen) { var e = t ? "remove" : "add"; if (this.cursor.classList[e]("is-hidden"), t) { var n = this.gridSize, i = this.canvasOffset, o = this.cursorBorder; this.cursor.style.left = t.x * n + i.x - o + "px", this.cursor.style.top = t.y * n + i.y - o + "px"; } } }; var C = t.console, S = document.readyState; "complete" == S || "interactive" == S ? o() : document.addEventListener("DOMContentLoaded", o), i.data = function (t) { t = h(t); var e = t && t.huebeeGUID; return e && l[e]; }; var y = document.createElement("canvas"); y.width = y.height = 1; var _ = y.getContext("2d"); return i; }); $.when($.ready).then(function () { var base = (document.querySelector('base') || {}).href; if ($('.message-container').length) { setTimeout(function () { $('.message-container').fadeOut(); }, 3500); } // from https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API // Set the name of the hidden property and the change event for visibility var hidden, visibilityChange; if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support hidden = "hidden"; visibilityChange = "visibilitychange"; } else if (typeof document.msHidden !== "undefined") { hidden = "msHidden"; visibilityChange = "msvisibilitychange"; } else if (typeof document.webkitHidden !== "undefined") { hidden = "webkitHidden"; visibilityChange = "webkitvisibilitychange"; } var livestatsRefreshTimeouts = []; var livestatsFuncs = []; var livestatsContainers = $('.livestats-container'); function stopLivestatsRefresh() { for (var _i = 0, _livestatsRefreshTime = livestatsRefreshTimeouts; _i < _livestatsRefreshTime.length; _i++) { var timeoutId = _livestatsRefreshTime[_i]; window.clearTimeout(timeoutId); } } function startLivestatsRefresh() { for (var _i2 = 0, _livestatsFuncs = livestatsFuncs; _i2 < _livestatsFuncs.length; _i2++) { var fun = _livestatsFuncs[_i2]; fun(); } } if (livestatsContainers.length > 0) { if (typeof document.addEventListener === "undefined" || hidden === undefined) { console.log("This browser does not support visibilityChange"); } else { document.addEventListener(visibilityChange, function () { if (document[hidden]) { stopLivestatsRefresh(); } else { startLivestatsRefresh(); } }, false); } livestatsContainers.each(function (index) { var id = $(this).data('id'); var dataonly = $(this).data('dataonly'); var increaseby = dataonly == 1 ? 20000 : 1000; var container = $(this); var max_timer = 30000; var timer = 5000; var fun = function worker() { $.ajax({ url: base + 'get_stats/' + id, dataType: 'json', success: function success(data) { container.html(data.html); if (data.status == 'active') timer = increaseby;else { if (timer < max_timer) timer += 2000; } }, complete: function complete() { // Schedule the next request when the current one's complete livestatsRefreshTimeouts[index] = window.setTimeout(worker, timer); } }); }; livestatsFuncs[index] = fun; fun(); }); } function readURL(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { $('#appimage img').attr('src', e.target.result); }; reader.readAsDataURL(input.files[0]); } } $('#upload').change(function () { readURL(this); }); /*$(".droppable").droppable({ tolerance: "intersect", drop: function( event, ui ) { var tag = $( this ).data('id'); var item = $( ui.draggable ).data('id'); $.get('tag/add/'+tag+'/'+item, function(data) { if(data == 1) { $( ui.draggable ).remove(); } else { alert('not added'); } }); } });*/ $('#sortable').sortable({ stop: function stop(event, ui) { var idsInOrder = $('#sortable').sortable('toArray', { attribute: 'data-id' }); $.post(base + 'order', { order: idsInOrder }); } }); $('#sortable').sortable('disable'); $('#search-container').on('input', 'input[name=q]', function () { var search = this.value; var items = $('#sortable').children('.item-container'); if ($('#search-container select[name=provider]').val() === 'tiles') { if (search.length > 0) { items.hide(); items.filter(function () { var name = $(this).data('name').toLowerCase(); return name.includes(search.toLowerCase()); }).show(); } else { items.show(); } } else { items.show(); } }).on('change', 'select[name=provider]', function () { var items = $('#sortable').children('.item-container'); if ($(this).val() === 'tiles') { $('#search-container button').hide(); var search = $('#search-container input[name=q]').val(); if (search.length > 0) { items.hide(); items.filter(function () { var name = $(this).data('name').toLowerCase(); return name.includes(search.toLowerCase()); }).show(); } else { items.show(); } } else { $('#search-container button').show(); items.show(); } }); $('#app').on('click', '#config-button', function (e) { e.preventDefault(); var app = $('#app'); var active = app.hasClass('header'); app.toggleClass('header'); if (active) { $('.add-item').hide(); $('.item-edit').hide(); $('#app').removeClass('sidebar'); $('#sortable').sortable('disable'); } else { $('#sortable').sortable('enable'); setTimeout(function () { $('.add-item').fadeIn(); $('.item-edit').fadeIn(); }, 350); } }).on('click', '#add-item, #pin-item', function (e) { e.preventDefault(); var app = $('#app'); var active = app.hasClass('sidebar'); app.toggleClass('sidebar'); }).on('click', '.close-sidenav', function (e) { e.preventDefault(); var app = $('#app'); app.removeClass('sidebar'); }).on('click', '#test_config', function (e) { e.preventDefault(); var apiurl = $('#create input[name=url]').val(); var override_url = $('#create input[name="config[override_url]"]').val(); if (override_url.length && override_url != '') { apiurl = override_url; } var data = {}; data['url'] = apiurl; $('.config-item').each(function (index) { var config = $(this).data('config'); data[config] = $(this).val(); }); $.post(base + 'test_config', { data: data }, function (data) { alert(data); }); }); $('#pinlist').on('click', 'a', function (e) { e.preventDefault(); var current = $(this); var id = current.data('id'); var tag = current.data('tag'); $.get(base + 'items/pintoggle/' + id + '/true/' + tag, function (data) { var inner = $(data).filter('#sortable').html(); $('#sortable').html(inner); current.toggleClass('active'); }); }); });