您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Integrates MyAnimeList into various sites, with auto episode tracking.
当前为
// ==UserScript== // @name MAL-Sync // @namespace http://greasyfork.icu/users/92233 // @description Integrates MyAnimeList into various sites, with auto episode tracking. // @version 0.4.5 // @author [email protected] // @license GPL-3.0 // @iconURL https://raw.githubusercontent.com/lolamtisch/MALSync/master/assets/icons/icon128.png // @grant GM_xmlhttpRequest // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_listValues // @grant GM_addStyle // @grant GM_getResourceText // @grant GM.xmlHttpRequest // @grant GM.getValue // @grant GM.setValue // @noframes // @match *://myanimelist.net/anime/* // @match *://myanimelist.net/manga/* // @match *://myanimelist.net/animelist/* // @match *://myanimelist.net/mangalist/* // @match *://myanimelist.net/anime.php?id=* // @match *://myanimelist.net/manga.php?id=* // @match *://myanimelist.net/character/* // @match *://myanimelist.net/people/* // @match *://myanimelist.net/search/* // @match *://anilist.co/* // @match *://kissanime.ru/Anime/* // @match *://kissanime.to/Anime/* // @match *://kissmanga.com/Manga/* // @match *://*.9anime.to/watch/* // @match *://*.9anime.is/watch/* // @match *://*.9anime.ru/watch/* // @match *://*.9anime.ch/watch/* // @match *://*.crunchyroll.com/* // @match *://www.masterani.me/anime/info/* // @match *://www.masterani.me/anime/watch/* // @match *://*.mangadex.org/manga/* // @match *://*.mangadex.org/title/* // @match *://*.mangadex.org/chapter/* // @match *://mangarock.com/* // @match *://*.gogoanime.tv/* // @match *://*.gogoanime.io/* // @match *://*.gogoanime.in/* // @match *://*.gogoanime.se/* // @match *://*.gogoanime.sh/* // @match *://*.gogoanimes.co/* // @match *://*.anime4you.one/show/1/aid/* // @match *://*.www.turkanime.tv/video/* // @match *://*.www.turkanime.tv/anime/* // @match *://twist.moe/* // @exclude *myanimelist.net/anime/season* // @exclude *crunchyroll.com/ // @exclude *crunchyroll.com // @exclude *crunchyroll.com/acct* // @exclude *crunchyroll.com/anime* // @exclude *crunchyroll.com/comics* // @exclude *crunchyroll.com/edit* // @exclude *crunchyroll.com/email* // @exclude *crunchyroll.com/forum* // @exclude *crunchyroll.com/home* // @exclude *crunchyroll.com/inbox* // @exclude *crunchyroll.com/library* // @exclude *crunchyroll.com/login* // @exclude *crunchyroll.com/manga* // @exclude *crunchyroll.com/newprivate* // @exclude *crunchyroll.com/news* // @exclude *crunchyroll.com/notifications* // @exclude *crunchyroll.com/order* // @exclude *crunchyroll.com/outbox* // @exclude *crunchyroll.com/pm* // @exclude *crunchyroll.com/search* // @exclude *crunchyroll.com/store* // @exclude *crunchyroll.com/user* // @exclude *crunchyroll.com/videos* // @exclude *crunchyroll.com/affiliate_iframeplayer* // @exclude *gogoanime*.*/ // @exclude *gogoanime*.*/*.html // @exclude *gogoanime*.*/anime-List* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js // @resource material.css https://code.getmdl.io/1.3.0/material.indigo-pink.min.css // @resource materialFont.css https://fonts.googleapis.com/icon?family=Material+Icons // @resource material.js http://greasyfork.icu/scripts/377924-material-design-lite-mal-sync/code/material-design-lite%20MAL-Sync.js?version=671593 // @resource simpleBar.css https://unpkg.com/[email protected]/dist/simplebar.css // @resource simpleBar.js https://unpkg.com/[email protected]/dist/simplebar.js // @run-at document_start // @connect myanimelist.net // @connect kissanimelist.firebaseio.com // @connect graphql.anilist.co // @connect * // ==/UserScript== !function(modules) { var installedModules = {}; function __webpack_require__(moduleId) { if (installedModules[moduleId]) return installedModules[moduleId].exports; var module = installedModules[moduleId] = { i: moduleId, l: !1, exports: {} }; return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), module.l = !0, module.exports; } __webpack_require__.m = modules, __webpack_require__.c = installedModules, __webpack_require__.d = function(exports, name, getter) { __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, { enumerable: !0, get: getter }); }, __webpack_require__.r = function(exports) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(exports, "__esModule", { value: !0 }); }, __webpack_require__.t = function(value, mode) { if (1 & mode && (value = __webpack_require__(value)), 8 & mode) return value; if (4 & mode && "object" == typeof value && value && value.__esModule) return value; var ns = Object.create(null); if (__webpack_require__.r(ns), Object.defineProperty(ns, "default", { enumerable: !0, value: value }), 2 & mode && "string" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); return ns; }, __webpack_require__.n = function(module) { var getter = module && module.__esModule ? function() { return module.default; } : function() { return module; }; return __webpack_require__.d(getter, "a", getter), getter; }, __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }, __webpack_require__.p = "", __webpack_require__(__webpack_require__.s = 62); }([ function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); var userscriptLegacy = __webpack_require__(30), __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; const requestUserscriptLegacy = { xhr(method, url) { return __awaiter(this, void 0, void 0, function*() { return new Promise((resolve, reject) => { var request = { method: method, url: url, synchronous: !1, headers: [], data: null, onload: function(response) { console.log(response); var responseObj = { finalUrl: response.finalUrl, responseText: response.responseText, status: response.status }; resolve(responseObj); } }; "object" == typeof url && (request.url = url.url, request.headers = url.headers, request.data = url.data), GM_xmlhttpRequest(request); }); }); } }; var settings = __webpack_require__(31); __webpack_require__.d(__webpack_exports__, "storage", function() { return storage; }), __webpack_require__.d(__webpack_exports__, "request", function() { return request; }), __webpack_require__.d(__webpack_exports__, "settings", function() { return userscript_settings; }), __webpack_require__.d(__webpack_exports__, "type", function() { return type; }); var storage = userscriptLegacy.a, request = requestUserscriptLegacy, userscript_settings = settings.a, type = "userscript"; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__), __webpack_require__.d(__webpack_exports__, "$", function() { return $; }); var $ = jQuery; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__), __webpack_require__.d(__webpack_exports__, "log", function() { return log; }), __webpack_require__.d(__webpack_exports__, "error", function() { return error; }), __webpack_require__.d(__webpack_exports__, "info", function() { return info; }); var log = Function.prototype.bind.call(console.log, console, "%cMAL-Sync", "background-color: #2e51a2; color: white; padding: 2px 10px; border-radius: 3px;"), error = Function.prototype.bind.call(console.error, console, "%cMAL-Sync", "background-color: #8f0000; color: white; padding: 2px 10px; border-radius: 3px;"), info = Function.prototype.bind.call(console.info, console, "%cMAL-Sync", "background-color: wheat; color: black; padding: 2px 10px; border-radius: 3px;"); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__), function(api, j, con, utils) { __webpack_require__.d(__webpack_exports__, "urlPart", function() { return urlPart; }), __webpack_require__.d(__webpack_exports__, "urlParam", function() { return urlParam; }), __webpack_require__.d(__webpack_exports__, "favicon", function() { return favicon; }), __webpack_require__.d(__webpack_exports__, "watching", function() { return watching; }), __webpack_require__.d(__webpack_exports__, "planTo", function() { return planTo; }), __webpack_require__.d(__webpack_exports__, "episode", function() { return episode; }), __webpack_require__.d(__webpack_exports__, "syncRegex", function() { return syncRegex; }), __webpack_require__.d(__webpack_exports__, "status", function() { return status; }), __webpack_require__.d(__webpack_exports__, "getselect", function() { return getselect; }), __webpack_require__.d(__webpack_exports__, "absoluteLink", function() { return absoluteLink; }), __webpack_require__.d(__webpack_exports__, "urlChangeDetect", function() { return urlChangeDetect; }), __webpack_require__.d(__webpack_exports__, "changeDetect", function() { return changeDetect; }), __webpack_require__.d(__webpack_exports__, "waitUntilTrue", function() { return waitUntilTrue; }), __webpack_require__.d(__webpack_exports__, "getUrlFromTags", function() { return getUrlFromTags; }), __webpack_require__.d(__webpack_exports__, "setUrlInTags", function() { return setUrlInTags; }), __webpack_require__.d(__webpack_exports__, "setResumeWaching", function() { return setResumeWaching; }), __webpack_require__.d(__webpack_exports__, "getResumeWaching", function() { return getResumeWaching; }), __webpack_require__.d(__webpack_exports__, "setContinueWaching", function() { return setContinueWaching; }), __webpack_require__.d(__webpack_exports__, "getContinueWaching", function() { return getContinueWaching; }), __webpack_require__.d(__webpack_exports__, "handleMalImages", function() { return handleMalImages; }), __webpack_require__.d(__webpack_exports__, "getMalToKissArray", function() { return getMalToKissArray; }), __webpack_require__.d(__webpack_exports__, "getTooltip", function() { return getTooltip; }), __webpack_require__.d(__webpack_exports__, "epPredictionUI", function() { return epPredictionUI; }), __webpack_require__.d(__webpack_exports__, "timeDiffToText", function() { return timeDiffToText; }), __webpack_require__.d(__webpack_exports__, "canHideTabs", function() { return canHideTabs; }), __webpack_require__.d(__webpack_exports__, "epPrediction", function() { return epPrediction; }), __webpack_require__.d(__webpack_exports__, "statusTag", function() { return statusTag; }), __webpack_require__.d(__webpack_exports__, "notifications", function() { return notifications; }), __webpack_require__.d(__webpack_exports__, "flashm", function() { return flashm; }), __webpack_require__.d(__webpack_exports__, "flashConfirm", function() { return flashConfirm; }), __webpack_require__.d(__webpack_exports__, "lazyload", function() { return lazyload; }), __webpack_require__.d(__webpack_exports__, "elementInViewport", function() { return elementInViewport; }); var __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; function urlPart(url, part) { try { return url.split("/")[part].split("?")[0]; } catch (e) { return; } } function urlParam(url, name) { var results = new RegExp("[?&]" + name + "=([^&#]*)").exec(url); return null == results ? null : decodeURI(results[1]) || 0; } function favicon(domain) { return -1 !== domain.indexOf("animeheaven") ? "http://animeheaven.eu/favicon.ico" : "https://www.google.com/s2/favicons?domain=" + domain; } function watching(type) { return "manga" == type ? "Reading" : "Watching"; } function planTo(type) { return "manga" == type ? "Plan to Read" : "Plan to Watch"; } function episode(type) { return "manga" == type ? "Chapter" : "Episode"; } var status, syncRegex = /(^settings\/.*|^resume\/.*|^continue\/.*|^.*\/Offset$|^updateCheckTime$|^tempVersion$)/; function getselect(data, name) { var temp = data.split('name="' + name + '"')[1].split("</select>")[0]; if (!(temp.indexOf('selected="selected"') > -1)) return ""; temp = temp.split("<option"); for (var i = 0; i < temp.length; ++i) if (temp[i].indexOf('selected="selected"') > -1) return temp[i].split('value="')[1].split('"')[0]; } function absoluteLink(url, domain) { return void 0 === url ? url : (url.startsWith("http") || ("/" !== url.charAt(0) && (url = "/" + url), url = domain + url), url); } function urlChangeDetect(callback) { var currentPage = window.location.href; return setInterval(function() { currentPage != window.location.href && (currentPage = window.location.href, callback()); }, 1e3); } function changeDetect(callback, func) { var currentPage = func(); return setInterval(function() { var temp = func(); void 0 !== temp && currentPage != temp && (currentPage = func(), callback()); }, 1e3); } function waitUntilTrue(condition, callback) { var Interval = null; return Interval = setInterval(function() { condition() && (clearInterval(Interval), callback()); }, 1e3); } function getUrlFromTags(tags) { if (api.settings.get("malTags")) return /malSync::[\d\D]+::/.test(tags) ? atobURL(tags.split("malSync::")[1].split("::")[0]) : /last::[\d\D]+::/.test(tags) ? atobURL(tags.split("last::")[1].split("::")[0]) : void 0; function atobURL(encoded) { try { return atob(encoded); } catch (e) { return encoded; } } } function setUrlInTags(url, tags) { if (!api.settings.get("malTags")) return tags; var addition = "malSync::" + btoa(url) + "::"; return tags = /(last|malSync)::[\d\D]+::/.test(tags) ? tags.replace(/(last|malSync)::[^\^]*?::/, addition) : tags + "," + addition; } function setResumeWaching(url, ep, type, id) { return __awaiter(this, void 0, void 0, function*() { return api.storage.set("resume/" + type + "/" + id, { url: url, ep: ep }); }); } function getResumeWaching(type, id) { return __awaiter(this, void 0, void 0, function*() { if (api.settings.get("malResume")) return api.storage.get("resume/" + type + "/" + id); }); } function setContinueWaching(url, ep, type, id) { return __awaiter(this, void 0, void 0, function*() { return api.storage.set("continue/" + type + "/" + id, { url: url, ep: ep }); }); } function getContinueWaching(type, id) { return __awaiter(this, void 0, void 0, function*() { if (api.settings.get("malContinue")) return api.storage.get("continue/" + type + "/" + id); }); } function handleMalImages(url) { return -1 !== url.indexOf("questionmark") ? api.storage.assetUrl("questionmark.gif") : url; } function getMalToKissArray(type, id) { return __awaiter(this, void 0, void 0, function*() { return new Promise((resolve, reject) => { var url = "https://kissanimelist.firebaseio.com/Data2/Mal" + type + "/" + id + "/Sites.json"; api.request.xhr("GET", url).then(response => __awaiter(this, void 0, void 0, function*() { var json = j.$.parseJSON(response.responseText); for (var pageKey in json) { var page = json[pageKey]; if (api.settings.get(pageKey)) for (var streamKey in page) { var stream = page[streamKey], streamUrl = "https://kissanimelist.firebaseio.com/Data2/" + stream + "/" + encodeURIComponent(streamKey) + ".json", cache = yield api.storage.get("MalToKiss/" + stream + "/" + encodeURIComponent(streamKey), null); if (void 0 !== cache) var streamJson = cache; else { var streamRespose = yield api.request.xhr("GET", streamUrl); streamJson = j.$.parseJSON(streamRespose.responseText); api.storage.set("MalToKiss/" + stream + "/" + encodeURIComponent(streamKey), streamJson); } "Crunchyroll" == pageKey && (streamJson.url = streamJson.url + "?season=" + streamKey), json[pageKey][streamKey] = streamJson; } else con.log(pageKey + " is deactivated"), delete json[pageKey]; } con.log("Mal2Kiss", json), resolve(json); })); }); }); } function getTooltip(text, style = "", direction = "top") { var rNumber = Math.floor(1e3 * Math.random() + 1); return '<div id="tt' + rNumber + '" class="icon material-icons" style="font-size:16px; line-height: 0; color: #7f7f7f; padding-bottom: 20px; padding-left: 3px; ' + style + '">contact_support</div> <div class="mdl-tooltip mdl-tooltip--' + direction + ' mdl-tooltip--large" for="tt' + rNumber + '">' + text + "</div>"; } function epPredictionUI(malid, type = "anime", callback) { return __awaiter(this, void 0, void 0, function*() { utils.epPrediction(malid, function(pre) { return __awaiter(this, void 0, void 0, function*() { pre || callback(!1); var updateCheckTime = yield api.storage.get("updateCheckTime"), aniCache = yield api.storage.get("mal/" + malid + "/aniSch"), elCache = void 0; if (void 0 !== updateCheckTime && updateCheckTime && "0" != updateCheckTime && (elCache = yield api.storage.get("updateCheck/" + type + "/" + malid)), !1 !== pre || void 0 !== elCache) { var UI = { tag: "", text: "", color: "", colorStyle: "", tagEpisode: !1, prediction: pre, aniCache: aniCache, elCache: elCache }, airing = pre.airing, episode = pre.episode; if (void 0 !== aniCache) { var timestamp = 1e3 * aniCache.nextEpTime; if (Date.now() < timestamp) { episode = aniCache.currentEp; var delta = (timestamp - Date.now()) / 1e3; pre.diffDays = Math.floor(delta / 86400), delta -= 86400 * pre.diffDays, pre.diffHours = Math.floor(delta / 3600) % 24, delta -= 3600 * pre.diffHours, pre.diffMinutes = Math.floor(delta / 60) % 60, delta -= 60 * pre.diffMinutes; } else Date.now() - timestamp < 864e5 && (episode = aniCache.currentEp + 1); } void 0 !== elCache && void 0 === elCache.error && (elCache.finished || (airing = !0), elCache.newestEp && "" != elCache.newestEp && void 0 !== elCache.newestEp && (episode = elCache.newestEp, UI.color = "red")), "" != UI.color && (UI.colorStyle = "background-color: #00ff0057;"), airing ? (pre.airing && (UI.text = "Next episode estimated in " + pre.diffDays + "d " + pre.diffHours + "h " + pre.diffMinutes + "m"), episode && (UI.tag = '<span class="mal-sync-ep-pre" title="' + UI.text + '">[<span style="' + UI.colorStyle + ';">' + episode + "</span>]</span>", UI.tagEpisode = episode)) : pre && (UI.text = '<span class="mal-sync-ep-pre">Airing in ' + (7 * pre.diffWeeks + pre.diffDays) + "d " + pre.diffHours + "h " + pre.diffMinutes + "m </span>"), callback(UI); } }); }); }); } function timeDiffToText(delta) { var text = ""; delta /= 1e3; var diffDays = Math.floor(delta / 86400); delta -= 86400 * diffDays, diffDays && (text += diffDays + "d "); var diffHours = Math.floor(delta / 3600) % 24; delta -= 3600 * diffHours, diffHours && diffDays < 2 && (text += diffHours + "h "); var diffMinutes = Math.floor(delta / 60) % 60; return delta -= 60 * diffMinutes, diffMinutes && !diffDays && diffHours < 3 && (text += diffMinutes + "min "), text; } function canHideTabs() { return "undefined" != typeof browser && void 0 !== browser.tabs.hide; } function epPrediction(malId, callback) { return __awaiter(this, void 0, void 0, function*() { if (api.settings.get("epPredictions")) { var timestamp = yield api.storage.get("mal/" + malId + "/release"); if (void 0 !== timestamp) { var airing = 1, episode = 0; if (Date.now() < timestamp && (airing = 0), airing) var delta = Math.abs(Date.now() - timestamp) / 1e3; else delta = Math.abs(timestamp - Date.now()) / 1e3; var diffWeeks = Math.floor(delta / 604800); delta -= 604800 * diffWeeks, airing && (delta = 604800 - delta); var diffDays = Math.floor(delta / 86400); delta -= 86400 * diffDays; var diffHours = Math.floor(delta / 3600) % 24; delta -= 3600 * diffHours; var diffMinutes = Math.floor(delta / 60) % 60; delta -= 60 * diffMinutes, airing && (episode = diffWeeks - (new Date().getFullYear() - new Date(timestamp).getFullYear()), ++episode > 50 && (episode = 0)); var maxEp = yield api.storage.get("mal/" + malId + "/release"); if (void 0 === maxEp || episode < maxEp) return void callback({ timestamp: timestamp, airing: airing, diffWeeks: diffWeeks, diffDays: diffDays, diffHours: diffHours, diffMinutes: diffMinutes, episode: episode }); } callback(!1); } }); } function statusTag(status, type, id) { var info = { anime: { 1: { class: "watching", text: "CW", title: "Watching" }, 2: { class: "completed", text: "CMPL", title: "Completed" }, 3: { class: "on-hold", text: " HOLD", title: "On-Hold" }, 4: { class: "dropped", text: "DROP", title: "Dropped" }, 6: { class: "plantowatch", text: "PTW", title: "Plan to Watch" } }, manga: { 1: { class: "reading", text: "CR", title: "Reading" }, 2: { class: "completed", text: "CMPL", title: "Completed" }, 3: { class: "on-hold", text: " HOLD", title: "On-Hold" }, 4: { class: "dropped", text: "DROP", title: "Dropped" }, 6: { class: "plantoread", text: "PTR", title: "Plan to Read" } } }; if ($.each([ 1, 2, 3, 4, 6 ], function(i, el) { info.anime[info.anime[el].title] = info.anime[el], info.manga[info.manga[el].title] = info.manga[el]; }), status) { var tempInfo = info[type][status]; return ` <a href="https://myanimelist.net/ownlist/${type}/${id}/edit?hideLayout=1" title="${tempInfo.title}" class="Lightbox_AddEdit button_edit ${tempInfo.class}">${tempInfo.text}</a>`; } return !1; } function notifications(url, title, message, iconUrl = "") { var messageObj = { type: "basic", title: title, message: message, iconUrl: iconUrl }; con.log("Notification", url, messageObj), api.storage.get("notificationHistory").then(history => { void 0 === history && (history = []), history.length >= 10 && history.shift(), history.push({ url: url, title: messageObj.title, message: messageObj.message, iconUrl: messageObj.iconUrl, timestamp: Date.now() }), api.storage.set("notificationHistory", history); }); try { return chrome.notifications.create(url, messageObj); } catch (e) { con.error(e); } } function flashm(text, options) { j.$("#flash-div-top").length || (api.storage.addStyle('.flashinfo{ transition: max-height 2s; } .flashinfo:hover{ max-height:5000px !important; z-index: 2147483647; } .flashinfo .synopsis{ transition: max-height 2s, max-width 2s ease 2s; } .flashinfo:hover .synopsis{ max-height:9999px !important; max-width: 500px !important; transition: max-height 2s; } #flashinfo-div{ z-index: 2; transition: 2s; } #flashinfo-div:hover, #flashinfo-div.hover{ z-index: 2147483647; } #flash-div-top, #flash-div-bottom, #flashinfo-div{ font-family: "Helvetica","Arial",sans-serif; color: white; font-size: 14px; font-weight: 400; line-height: 17px; } #flash-div-top h2, #flash-div-bottom h2, #flashinfo-div h2{ font-family: "Helvetica","Arial",sans-serif; color: white; font-size: 14px; font-weight: 700; line-height: 17px; padding: 0; margin: 0; } #flash-div-top a, #flash-div-bottom a, #flashinfo-div a{ color: #DF6300; }'), j.$("body").after('<div id="flash-div-top" style="text-align: center;pointer-events: none;position: fixed;top:-5px;width:100%;z-index: 2147483647;left: 0;"></div> <div id="flash-div-bottom" style="text-align: center;pointer-events: none;position: fixed;bottom:0px;width:100%;z-index: 2147483647;left: 0;"><div id="flash" style="display:none; background-color: red;padding: 20px; margin: 0 auto;max-width: 60%; -webkit-border-radius: 20px;-moz-border-radius: 20px;border-radius: 20px;background:rgba(227,0,0,0.6);"></div></div> <div id="flashinfo-div" style="text-align: center;pointer-events: none;position: fixed;bottom:0px;width:100%;left: 0;">')), con.log("[Flash] Message:", text); var colorF = "#323232"; if (void 0 !== options && void 0 !== options.error && options.error) colorF = "#3e0808"; var flashdiv = "#flash-div-bottom"; void 0 !== options && void 0 !== options.position && options.position && (flashdiv = "#flash-div-" + options.position); var messClass = "flash"; if (void 0 !== options && void 0 !== options.type && options.type) { var tempClass = "type-" + options.type; j.$(flashdiv + " ." + tempClass + ", #flashinfo-div ." + tempClass).removeClass(tempClass).fadeOut({ duration: 1e3, queue: !1, complete: function() { j.$(this).remove(); } }), messClass += " " + tempClass; } var mess = '<div class="' + messClass + '" style="display:none;"> <div style="display:table; pointer-events: all; padding: 14px 24px 14px 24px; margin: 0 auto; margin-top: 5px; max-width: 60%; -webkit-border-radius: 20px;-moz-border-radius: 20px;border-radius: 2px;color: white;background:' + colorF + '; "> ' + text + " </div> </div>"; if (void 0 !== options && void 0 !== options.hoverInfo && options.hoverInfo) { mess = '<div class="' + (messClass += " flashinfo") + '" style="display:none; max-height: 5000px; overflow: hidden;"><div style="display:table; pointer-events: all; margin: 0 auto; margin-top: -2px; max-width: 60%; -webkit-border-radius: 20px;-moz-border-radius: 20px;border-radius: 2px;color: white;background:' + colorF + '; "><div style="max-height: 60vh; overflow-y: auto; padding: 14px 24px 14px 24px;">' + text + "</div></div></div>", j.$("#flashinfo-div").addClass("hover"); var flashm = j.$(mess).appendTo("#flashinfo-div"); } else flashm = j.$(mess).appendTo(flashdiv); return void 0 !== options && void 0 !== options.permanent && options.permanent ? flashm.slideDown(800) : void 0 !== options && void 0 !== options.hoverInfo && options.hoverInfo ? flashm.slideDown(800).delay(4e3).queue(function() { j.$("#flashinfo-div").removeClass("hover"), flashm.css("max-height", "8px"); }) : flashm.slideDown(800).delay(4e3).slideUp(800, () => { j.$(this).remove(); }), flashm; } function flashConfirm(message, type, yesCall = (() => {}), cancelCall = (() => {})) { return __awaiter(this, void 0, void 0, function*() { return new Promise(function(resolve, reject) { var flasmessage = flashm(message = '<div style="text-align: center;">' + message + '</div><div style="display: flex; justify-content: space-around;"><button class="Yes" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px; cursor:pointer;">OK</button><button class="Cancel" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px; cursor:pointer;">CANCEL</button></div>', { permanent: !0, position: "top", type: type }); flasmessage.find(".Yes").click(function(evt) { j.$(evt.target).parentsUntil(".flash").remove(), resolve(!0), yesCall(); }), flasmessage.find(".Cancel").click(function(evt) { j.$(evt.target).parentsUntil(".flash").remove(), resolve(!1), cancelCall(); }); }); }); } !function(status) { status[status.watching = 1] = "watching", status[status.completed = 2] = "completed", status[status.onhold = 3] = "onhold", status[status.dropped = 4] = "dropped", status[status.planToWatch = 6] = "planToWatch"; }(status || (status = {})); var lazyloaded = !1, lazyimages = new Array(); function lazyload(doc, scrollElement = ".simplebar-scroll-content") { function loadImage(el, fn) { if (!j.$(el).is(":visible")) return !1; if (j.$(el).hasClass("lazyBack")) j.$(el).css("background-image", "url(" + el.getAttribute("data-src") + ")").removeClass("lazyBack"); else { var img = new Image(), src = el.getAttribute("data-src"); img.onload = function() { el.parent ? el.parent.replaceChild(img, el) : el.src = src, fn && fn(); }, img.src = src; } } for (var i = 0; i < lazyimages.length; i++) $(lazyimages[i]).addClass("init"); lazyimages = new Array(); var query = doc.find("img.lazy.init, .lazyBack.init"), processScroll = function() { for (var i = 0; i < lazyimages.length; i++) utils.elementInViewport(lazyimages[i], 600) && loadImage(lazyimages[i], function() { lazyimages.splice(i, i); }), $(lazyimages[i]).length || lazyimages.splice(i, i); }; for (i = 0; i < query.length; i++) lazyimages.push(query[i]), $(query[i]).removeClass("init"); processScroll(), lazyloaded || (lazyloaded = !0, doc.find(scrollElement).scroll(function() { processScroll(); })); } function elementInViewport(el, horizontalOffset = 0) { var rect = el.getBoundingClientRect(); return rect.top >= 0 && rect.left >= 0 && rect.top - horizontalOffset <= (window.innerHeight || document.documentElement.clientHeight); } }.call(this, __webpack_require__(0), __webpack_require__(1), __webpack_require__(2), __webpack_require__(3)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; function normalizeComponent(scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) { var hook, options = "function" == typeof scriptExports ? scriptExports.options : scriptExports; if (render && (options.render = render, options.staticRenderFns = staticRenderFns, options._compiled = !0), functionalTemplate && (options.functional = !0), scopeId && (options._scopeId = "data-v-" + scopeId), moduleIdentifier ? (hook = function(context) { (context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) || "undefined" == typeof __VUE_SSR_CONTEXT__ || (context = __VUE_SSR_CONTEXT__), injectStyles && injectStyles.call(this, context), context && context._registeredComponents && context._registeredComponents.add(moduleIdentifier); }, options._ssrRegister = hook) : injectStyles && (hook = shadowMode ? function() { injectStyles.call(this, this.$root.$options.shadowRoot); } : injectStyles), hook) if (options.functional) { options._injectStyles = hook; var originalRender = options.render; options.render = function(h, context) { return hook.call(context), originalRender(h, context); }; } else { var existing = options.beforeCreate; options.beforeCreate = existing ? [].concat(existing, hook) : [ hook ]; } return { exports: scriptExports, options: options }; } __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; }); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(api, utils, con) { function translateList(aniStatus, malStatus = null) { var list = { CURRENT: 1, PLANNING: 6, COMPLETED: 2, DROPPED: 4, PAUSED: 3, REPEATING: 1 }; return null != malStatus ? Object.keys(list).find(key => list[key] === malStatus) : list[aniStatus]; } function accessToken() { return api.settings.get("anilistToken"); } function errorHandling(res, silent = !1) { void 0 !== res.errors && res.errors.forEach(error => { switch (error.status) { case 400: silent || utils.flashm('Please Authenticate <a target="_blank" href="https://anilist.co/api/v2/oauth/authorize?client_id=1487&response_type=token">Here</a>', { error: !0 }); break; case 404: silent || utils.flashm("anilist: " + error.message, { error: !0 }); break; default: throw silent || utils.flashm("anilist: " + error.message, { error: !0 }), error.message; } }); } function aniListToMal(anilistId, type) { var variables = { id: anilistId, type: type.toUpperCase() }; return api.request.xhr("POST", { url: "https://graphql.anilist.co", headers: { "Content-Type": "application/json", Accept: "application/json" }, data: JSON.stringify({ query: "\n query ($id: Int, $type: MediaType) {\n Media (id: $id, type: $type) {\n id\n idMal\n }\n }\n ", variables: variables }) }).then(response => { var res = JSON.parse(response.responseText); return con.log(res), errorHandling(res), res.data.Media.idMal; }); } __webpack_require__.d(__webpack_exports__, "d", function() { return translateList; }), __webpack_require__.d(__webpack_exports__, "a", function() { return accessToken; }), __webpack_require__.d(__webpack_exports__, "c", function() { return errorHandling; }), __webpack_require__.d(__webpack_exports__, "b", function() { return aniListToMal; }); }).call(this, __webpack_require__(0), __webpack_require__(3), __webpack_require__(2)); }, function(module, exports) { module.exports = function(useSourceMap) { var list = []; return list.toString = function() { return this.map(function(item) { var content = function(item, useSourceMap) { var content = item[1] || "", cssMapping = item[3]; if (!cssMapping) return content; if (useSourceMap && "function" == typeof btoa) { var sourceMapping = (sourceMap = cssMapping, "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */"), sourceURLs = cssMapping.sources.map(function(source) { return "/*# sourceURL=" + cssMapping.sourceRoot + source + " */"; }); return [ content ].concat(sourceURLs).concat([ sourceMapping ]).join("\n"); } var sourceMap; return [ content ].join("\n"); }(item, useSourceMap); return item[2] ? "@media " + item[2] + "{" + content + "}" : content; }).join(""); }, list.i = function(modules, mediaQuery) { "string" == typeof modules && (modules = [ [ null, modules, "" ] ]); for (var alreadyImportedModules = {}, i = 0; i < this.length; i++) { var id = this[i][0]; "number" == typeof id && (alreadyImportedModules[id] = !0); } for (i = 0; i < modules.length; i++) { var item = modules[i]; "number" == typeof item[0] && alreadyImportedModules[item[0]] || (mediaQuery && !item[2] ? item[2] = mediaQuery : mediaQuery && (item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"), list.push(item)); } }, list; }; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(api) { __webpack_require__.d(__webpack_exports__, "a", function() { return entryClass; }), __webpack_require__.d(__webpack_exports__, "b", function() { return userList; }); var _MyAnimeList_entryClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10), _MyAnimeList_userList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11), _AniList_entryClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23), _AniList_userList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24); function getSyncMode() { return api.settings.get("syncMode"); } function entryClass(url, miniMAL = !1, silent = !1) { return "MAL" == getSyncMode() ? new _MyAnimeList_entryClass__WEBPACK_IMPORTED_MODULE_0__.a(url, miniMAL) : new _AniList_entryClass__WEBPACK_IMPORTED_MODULE_2__.a(url, miniMAL, silent); } function userList(status = 1, localListType = "anime", callbacks, username = null, offset = 0, templist = []) { return "MAL" == getSyncMode() ? _MyAnimeList_userList__WEBPACK_IMPORTED_MODULE_1__.b(status, localListType, callbacks, username, offset, templist) : _AniList_userList__WEBPACK_IMPORTED_MODULE_3__.a(status, localListType, callbacks, username, offset, templist); } }).call(this, __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, "b", function() { return pages; }), __webpack_require__.d(__webpack_exports__, "a", function() { return pageSearch; }); var _Kissanime_main__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(33), _Kissmanga_main__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34), _nineAnime_main__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(35), _Crunchyroll_main__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(36), _Masterani_main__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(37), _Mangadex_main__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(38), _Mangarock_main__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(39), _Gogoanime_main__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(40), _Anime4you_main__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(41), _Turkanime_main__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(42), _Twistmoe_main__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(43); const pages = { Kissanime: _Kissanime_main__WEBPACK_IMPORTED_MODULE_0__.a, Kissmanga: _Kissmanga_main__WEBPACK_IMPORTED_MODULE_1__.a, nineAnime: _nineAnime_main__WEBPACK_IMPORTED_MODULE_2__.a, Crunchyroll: _Crunchyroll_main__WEBPACK_IMPORTED_MODULE_3__.a, Masterani: _Masterani_main__WEBPACK_IMPORTED_MODULE_4__.a, Mangadex: _Mangadex_main__WEBPACK_IMPORTED_MODULE_5__.a, Mangarock: _Mangarock_main__WEBPACK_IMPORTED_MODULE_6__.a, Gogoanime: _Gogoanime_main__WEBPACK_IMPORTED_MODULE_7__.a, Anime4you: _Anime4you_main__WEBPACK_IMPORTED_MODULE_8__.a, Turkanime: _Turkanime_main__WEBPACK_IMPORTED_MODULE_9__.a, Twistmoe: _Twistmoe_main__WEBPACK_IMPORTED_MODULE_10__.a }, pageSearch = { Kissanime: { name: "Kissanime", type: "anime", domain: "kissanime.ru", searchUrl: titleEncoded => "", completeSearchTag: (title, linkContent) => '<form class="mal_links" target="_blank" action="http://kissanime.ru/Search/Anime" style="display: inline;" id="kissanimeSearch" method="post" _lpchecked="1"><a href="#" class="submitKissanimeSearch" onclick="document.getElementById(\'kissanimeSearch\').submit(); return false;">' + linkContent + '</a><input type="hidden" id="keyword" name="keyword" value="' + title + '"/></form>' }, Kissmanga: { name: "Kissmanga", type: "manga", domain: "kissmanga.com", searchUrl: titleEncoded => "", completeSearchTag: (title, linkContent) => '<form class="mal_links" target="_blank" action="http://kissmanga.com/Search/Manga" style="display: inline;" id="kissanimeSearch" method="post" _lpchecked="1"><a href="#" class="submitKissanimeSearch" onclick="document.getElementById(\'kissanimeSearch\').submit(); return false;">' + linkContent + '</a><input type="hidden" id="keyword" name="keyword" value="' + title + '"/></form>' }, Crunchyroll: { name: "Crunchyroll", type: "anime", domain: "www.crunchyroll.com", searchUrl: titleEncoded => "http://www.crunchyroll.com/search?q=" + titleEncoded }, nineAnime: { name: "9Anime", type: "anime", domain: "9anime.to", googleSearchDomain: "9anime.to/watch", searchUrl: titleEncoded => "https://www1.9anime.to/search?keyword=" + titleEncoded }, MasterAnime: { name: "MasterAnime", type: "anime", domain: "www.masterani.me", googleSearchDomain: "www.masterani.me/anime/info/", searchUrl: titleEncoded => "https://www.masterani.me/anime?search=" + titleEncoded }, Gogoanime: { name: "Gogoanime", type: "anime", domain: "www.gogoanime.in", searchUrl: titleEncoded => "http://gogoanimes.co/search.html?keyword=" + titleEncoded }, Turkanime: { name: "Turkanime", type: "anime", domain: "www.turkanime.tv/", searchUrl: titleEncoded => "https://www.google.com/search?q=" + titleEncoded + "+site:turkanime.tv/anime/", googleSearchDomain: "turkanime.tv/anime/" }, Mangadex: { name: "Mangadex", type: "manga", domain: "mangadex.org", searchUrl: titleEncoded => "https://mangadex.org/quick_search/" + titleEncoded }, Mangarock: { name: "Mangarock", type: "manga", domain: "mangarock.com", searchUrl: titleEncoded => "https://mangarock.com/search?q=" + titleEncoded }, AniList: { name: "AniList", type: "anime", domain: "anilist.co", searchUrl: titleEncoded => "https://anilist.co/search/anime?sort=SEARCH_MATCH&search=" + titleEncoded }, AniListManga: { name: "AniList", type: "manga", domain: "anilist.co", searchUrl: titleEncoded => "https://anilist.co/search/manga?sort=SEARCH_MATCH&search=" + titleEncoded } }; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(api) { __webpack_require__.d(__webpack_exports__, "a", function() { return providerTemplates; }); var _MyAnimeList_templates__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(47), _AniList_templates__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48); function providerTemplates() { return "MAL" == api.settings.get("syncMode") ? _MyAnimeList_templates__WEBPACK_IMPORTED_MODULE_0__.a : _AniList_templates__WEBPACK_IMPORTED_MODULE_1__.a; } }).call(this, __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, con, api, j) { __webpack_require__.d(__webpack_exports__, "a", function() { return entryClass; }); var __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; class entryClass { constructor(url, miniMAL = !1) { this.url = url, this.miniMAL = miniMAL, this.name = "", this.totalEp = NaN, this.addAnime = !1, this.login = !1, this.wrong = !1, this.id = utils.urlPart(url, 4), this.type = utils.urlPart(url, 3); } init() { return this.update(); } getDisplayUrl() { return this.url; } update() { var editUrl = "https://myanimelist.net/ownlist/" + this.type + "/" + this.id + "/edit?hideLayout"; return con.log("Update MAL info", editUrl), api.request.xhr("GET", editUrl).then(response => { if (response.finalUrl.indexOf("myanimelist.net/login.php") > -1 || response.responseText.indexOf("Unauthorized") > -1) return this.login = !1, void con.error("User not logged in"); this.login = !0, this.animeInfo = this.getObject(response.responseText); }); } getEpisode() { return "manga" == this.type ? this.animeInfo[".add_manga[num_read_chapters]"] : this.animeInfo[".add_anime[num_watched_episodes]"]; } setEpisode(ep) { ep + "" == "" && (ep = 0), "manga" == this.type && (this.animeInfo[".add_manga[num_read_chapters]"] = parseInt(ep + "")), this.animeInfo[".add_anime[num_watched_episodes]"] = parseInt(ep + ""); } getVolume() { return "manga" == this.type && this.animeInfo[".add_manga[num_read_volumes]"]; } setVolume(ep) { "manga" != this.type ? con.error("You cant set Volumes for animes") : this.animeInfo[".add_manga[num_read_volumes]"] = ep; } getStatus() { return "manga" == this.type ? this.animeInfo[".add_manga[status]"] : this.animeInfo[".add_anime[status]"]; } setStatus(status) { "manga" == this.type && (this.animeInfo[".add_manga[status]"] = status), this.animeInfo[".add_anime[status]"] = status; } getScore() { return "manga" == this.type ? this.animeInfo[".add_manga[score]"] : this.animeInfo[".add_anime[score]"]; } setScore(score) { "manga" == this.type && (this.animeInfo[".add_manga[score]"] = score), this.animeInfo[".add_anime[score]"] = score; } getRewatching() { return "manga" == this.type ? this.animeInfo[".add_manga[is_rereading]"] : this.animeInfo[".add_anime[is_rewatching]"]; } setRewatching(rewatching) { "manga" == this.type && (this.animeInfo[".add_manga[is_rereading]"] = rewatching), this.animeInfo[".add_anime[is_rewatching]"] = rewatching; } setCompletionDateToNow() { var Datec = new Date(); "" === this.animeInfo[".add_anime[finish_date][day]"] || "" === this.animeInfo[".add_manga[finish_date][day]"] ? ("manga" == this.type && (this.animeInfo[".add_manga[finish_date][year]"] = Datec.getFullYear(), this.animeInfo[".add_manga[finish_date][month]"] = Datec.getMonth() + 1, this.animeInfo[".add_manga[finish_date][day]"] = Datec.getDate()), this.animeInfo[".add_anime[finish_date][year]"] = Datec.getFullYear(), this.animeInfo[".add_anime[finish_date][month]"] = Datec.getMonth() + 1, this.animeInfo[".add_anime[finish_date][day]"] = Datec.getDate()) : con.error("Completion date already set"); } setStartingDateToNow() { var Datec = new Date(); "" === this.animeInfo[".add_anime[start_date][day]"] || "" === this.animeInfo[".add_manga[start_date][day]"] ? ("manga" == this.type && (this.animeInfo[".add_manga[start_date][year]"] = Datec.getFullYear(), this.animeInfo[".add_manga[start_date][month]"] = Datec.getMonth() + 1, this.animeInfo[".add_manga[start_date][day]"] = Datec.getDate()), this.animeInfo[".add_anime[start_date][year]"] = Datec.getFullYear(), this.animeInfo[".add_anime[start_date][month]"] = Datec.getMonth() + 1, this.animeInfo[".add_anime[start_date][day]"] = Datec.getDate()) : con.info("Start date already set"); } getStreamingUrl() { var tags = this.animeInfo[".add_anime[tags]"]; return "manga" == this.type && (tags = this.animeInfo[".add_manga[tags]"]), utils.getUrlFromTags(tags); } setStreamingUrl(url) { var tags = this.animeInfo[".add_anime[tags]"]; "manga" == this.type && (tags = this.animeInfo[".add_manga[tags]"]), tags = utils.setUrlInTags(url, tags), "manga" != this.type ? this.animeInfo[".add_anime[tags]"] = tags : this.animeInfo[".add_manga[tags]"] = tags; } getRating() { return __awaiter(this, void 0, void 0, function*() { return new Promise((resolve, reject) => { var url = ""; url = "anime" == this.type ? "https://myanimelist.net/includes/ajax.inc.php?t=64&id=" + this.id : "https://myanimelist.net/includes/ajax.inc.php?t=65&id=" + this.id, api.request.xhr("GET", url).then(response => { try { resolve(response.responseText.split("Score:</span>")[1].split("<")[0]); } catch (e) { con.error("Could not get rating", e), reject(); } }); }); }); } setResumeWaching(url, ep) { return __awaiter(this, void 0, void 0, function*() { return utils.setResumeWaching(url, ep, this.type, this.id); }); } getResumeWaching() { return __awaiter(this, void 0, void 0, function*() { return utils.getResumeWaching(this.type, this.id); }); } setContinueWaching(url, ep) { return __awaiter(this, void 0, void 0, function*() { return utils.setContinueWaching(url, ep, this.type, this.id); }); } getContinueWaching() { return __awaiter(this, void 0, void 0, function*() { return utils.getContinueWaching(this.type, this.id); }); } getImage() { return __awaiter(this, void 0, void 0, function*() { return api.request.xhr("GET", this.url).then(response => { var data = response.responseText, image = ""; try { image = data.split("js-scrollfix-bottom")[1].split('<img src="')[1].split('"')[0]; } catch (e) { console.log("[mal.ts] Error:", e); } return image; }); }); } clone() { const copy = new this.constructor(); return Object.assign(copy, this), copy.animeInfo = Object.assign({}, this.animeInfo), copy; } sync() { var status = utils.status; return new Promise((resolve, reject) => { var This = this, url = "https://myanimelist.net/ownlist/" + this.type + "/" + this.id + "/edit"; if (this.addAnime) { var imgSelector = "malSyncImg" + this.id, flashConfirmText = `\n Is "${this.name}" correct?\n <br>\n <img id="${imgSelector}" style="\n height: 200px;\n min-height: 200px;\n min-width: 144px;\n border: 1px solid;\n margin-top: 10px;\n display: inline;\n " src="" />\n <br>\n \x3c!--<a style="margin-left: -2px;" target="_blank" href="https://github.com/lolamtisch/MALSync/wiki/Troubleshooting#myanimeentry-entry-is-not-correct">[How to correct entries]</a>--\x3e\n `; return This.miniMAL && (flashConfirmText = `\n Add "${this.name}" to MAL?`), "anime" == this.type ? (url = "https://myanimelist.net/ownlist/anime/add?selected_series_id=" + this.id, utils.flashConfirm(flashConfirmText, "add", function() { continueCall(); }, function() { wrongCall(); })) : (url = "https://myanimelist.net/ownlist/manga/add?selected_manga_id=" + this.id, utils.flashConfirm(flashConfirmText, "add", function() { continueCall(); }, function() { wrongCall(); })), void (This.miniMAL || (this.getImage().then(image => { j.$("#" + imgSelector).attr("src", image); }), j.$(".Yes").text("YES"), j.$(".Cancel").text("NO"))); } var watchCounter = ".add_anime[num_watched_times]", rewatchText = "Rewatch Anime?", rewatchFinishText = "Finish rewatching?"; function wrongCall() { if (This.wrong = !0, !This.miniMAL) { var miniButton = j.$("button.open-info-popup"); "none" != miniButton.css("display") ? miniButton.click() : (miniButton.click(), miniButton.click()); } } function continueCall() { var parameter = ""; j.$.each(This.animeInfo, function(index, value) { "." == index.toString().charAt(0) && (".add_anime[is_rewatching]" !== index && ".add_manga[is_rereading]" !== index || 0 !== parseInt(value)) && (parameter += encodeURIComponent(index.toString().substring(1)) + "=" + encodeURIComponent(value) + "&"); }), con.log("[SET] URL:", url), con.log("[SET] Object:", This.animeInfo), api.request.xhr("POST", { url: url, data: parameter, headers: { "Content-Type": "application/x-www-form-urlencoded" } }).then(response => { response.responseText.indexOf("Successfully") >= 0 ? (con.log("Update Succeeded"), resolve()) : (con.error("Update failed"), reject()); }); } "manga" == this.type && (watchCounter = ".add_manga[num_read_times]", rewatchText = "Reread Manga?", rewatchFinishText = "Finish rereading?"), this.getStatus() != status.completed || 1 !== this.getEpisode() || 1 === this.totalEp || 1 === this.getRewatching() ? this.getStatus() != status.completed || this.getEpisode() !== this.totalEp || 1 !== this.getRewatching() ? continueCall() : utils.flashConfirm(rewatchFinishText, "add", () => { this.setRewatching(0), "" === this.animeInfo[watchCounter] ? this.animeInfo[watchCounter] = 1 : this.animeInfo[watchCounter] = parseInt(this.animeInfo[watchCounter]) + 1, continueCall(); }, function() { continueCall(); }) : utils.flashConfirm(rewatchText, "add", () => { this.setRewatching(1), continueCall(); }, function() { con.log("Rewatching denial"); }); }); } getObject(data) { var anime, getselect = utils.getselect; if (void 0 === data.split('<form name="')[1] && (-1 !== this.url.indexOf("/manga/") || -1 !== this.url.indexOf("/anime/"))) throw new Error("MAL is down or otherwise giving bad data"); return this.addAnime = !1, "anime" == this.type ? ((anime = {})[".csrf_token"] = data.split("'csrf_token'")[1].split("'")[1].split("'")[0], data.indexOf("Add Anime") > -1 && (this.addAnime = !0), data = data.split('<form name="')[1].split("</form>")[0], this.totalEp = parseInt(data.split('id="totalEpisodes">')[1].split("<")[0]), this.name = data.split('<a href="')[1].split('">')[1].split("<")[0], anime[".anime_id"] = parseInt(data.split('name="anime_id"')[1].split('value="')[1].split('"')[0]), anime[".aeps"] = parseInt(data.split('name="aeps"')[1].split('value="')[1].split('"')[0]), anime[".astatus"] = parseInt(data.split('name="astatus"')[1].split('value="')[1].split('"')[0]), anime[".add_anime[status]"] = parseInt(getselect(data, "add_anime[status]")), data.split('name="add_anime[is_rewatching]"')[1].split(">")[0].indexOf('checked="checked"') >= 0 && (anime[".add_anime[is_rewatching]"] = 1), anime[".add_anime[num_watched_episodes]"] = parseInt(data.split('name="add_anime[num_watched_episodes]"')[1].split('value="')[1].split('"')[0]), isNaN(anime[".add_anime[num_watched_episodes]"]) && (anime[".add_anime[num_watched_episodes]"] = ""), anime[".add_anime[score]"] = getselect(data, "add_anime[score]"), anime[".add_anime[start_date][month]"] = getselect(data, "add_anime[start_date][month]"), anime[".add_anime[start_date][day]"] = getselect(data, "add_anime[start_date][day]"), anime[".add_anime[start_date][year]"] = getselect(data, "add_anime[start_date][year]"), anime[".add_anime[finish_date][month]"] = getselect(data, "add_anime[finish_date][month]"), anime[".add_anime[finish_date][day]"] = getselect(data, "add_anime[finish_date][day]"), anime[".add_anime[finish_date][year]"] = getselect(data, "add_anime[finish_date][year]"), anime[".add_anime[tags]"] = data.split('name="add_anime[tags]"')[1].split(">")[1].split("<")[0], anime[".add_anime[priority]"] = getselect(data, "add_anime[priority]"), anime[".add_anime[storage_type]"] = getselect(data, "add_anime[storage_type]"), anime[".add_anime[storage_value]"] = data.split('name="add_anime[storage_value]"')[1].split('value="')[1].split('"')[0], anime[".add_anime[num_watched_times]"] = data.split('name="add_anime[num_watched_times]"')[1].split('value="')[1].split('"')[0], anime[".add_anime[rewatch_value]"] = getselect(data, "add_anime[rewatch_value]"), anime[".add_anime[comments]"] = data.split('name="add_anime[comments]"')[1].split(">")[1].split("<")[0], anime[".add_anime[is_asked_to_discuss]"] = getselect(data, "add_anime[is_asked_to_discuss]"), "" == anime[".add_anime[is_asked_to_discuss]"] && (anime[".add_anime[is_asked_to_discuss]"] = 0), anime[".add_anime[sns_post_type]"] = getselect(data, "add_anime[sns_post_type]"), anime[".submitIt"] = data.split('name="submitIt"')[1].split('value="')[1].split('"')[0], con.log("[GET] Object:", anime), anime) : ((anime = {})[".csrf_token"] = data.split("'csrf_token'")[1].split("'")[1].split("'")[0], data.indexOf("Add Manga") > -1 && (this.addAnime = !0), data = data.split('<form name="')[1].split("</form>")[0], this.totalEp = parseInt(data.split('id="totalChap">')[1].split("<")[0]), this.totalVol = parseInt(data.split('id="totalVol">')[1].split("<")[0]), this.name = data.split('<a href="')[1].split('">')[1].split("<")[0], anime[".entry_id"] = parseInt(data.split('name="entry_id"')[1].split('value="')[1].split('"')[0]), anime[".manga_id"] = parseInt(data.split('name="manga_id"')[1].split('value="')[1].split('"')[0]), anime.volumes = parseInt(data.split('id="volumes"')[1].split('value="')[1].split('"')[0]), anime.mstatus = parseInt(data.split('id="mstatus"')[1].split('value="')[1].split('"')[0]), anime[".add_manga[status]"] = parseInt(getselect(data, "add_manga[status]")), data.split('name="add_manga[is_rereading]"')[1].split(">")[0].indexOf('checked="checked"') >= 0 && (anime[".add_manga[is_rereading]"] = 1), anime[".add_manga[num_read_volumes]"] = parseInt(data.split('name="add_manga[num_read_volumes]"')[1].split('value="')[1].split('"')[0]), isNaN(anime[".add_manga[num_read_volumes]"]) && (anime[".add_manga[num_read_volumes]"] = ""), anime[".add_manga[num_read_chapters]"] = parseInt(data.split('name="add_manga[num_read_chapters]"')[1].split('value="')[1].split('"')[0]), isNaN(anime[".add_manga[num_read_chapters]"]) && (anime[".add_manga[num_read_chapters]"] = ""), anime[".add_manga[score]"] = getselect(data, "add_manga[score]"), anime[".add_manga[start_date][month]"] = getselect(data, "add_manga[start_date][month]"), anime[".add_manga[start_date][day]"] = getselect(data, "add_manga[start_date][day]"), anime[".add_manga[start_date][year]"] = getselect(data, "add_manga[start_date][year]"), anime[".add_manga[finish_date][month]"] = getselect(data, "add_manga[finish_date][month]"), anime[".add_manga[finish_date][day]"] = getselect(data, "add_manga[finish_date][day]"), anime[".add_manga[finish_date][year]"] = getselect(data, "add_manga[finish_date][year]"), anime[".add_manga[tags]"] = data.split('name="add_manga[tags]"')[1].split(">")[1].split("<")[0], anime[".add_manga[priority]"] = getselect(data, "add_manga[priority]"), anime[".add_manga[storage_type]"] = getselect(data, "add_manga[storage_type]"), anime[".add_manga[num_retail_volumes]"] = data.split('name="add_manga[num_retail_volumes]"')[1].split('value="')[1].split('"')[0], anime[".add_manga[num_read_times]"] = data.split('name="add_manga[num_read_times]"')[1].split('value="')[1].split('"')[0], anime[".add_manga[reread_value]"] = getselect(data, "add_manga[reread_value]"), anime[".add_manga[comments]"] = data.split('name="add_manga[comments]"')[1].split(">")[1].split("<")[0], anime[".add_manga[is_asked_to_discuss]"] = getselect(data, "add_manga[is_asked_to_discuss]"), "" == anime[".add_manga[is_asked_to_discuss]"] && (anime[".add_manga[is_asked_to_discuss]"] = 0), anime[".add_manga[sns_post_type]"] = getselect(data, "add_manga[sns_post_type]"), anime[".submitIt"] = data.split('name="submitIt"')[1].split('value="')[1].split('"')[0], con.log("[GET] Object:", anime), anime); } } }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(0), __webpack_require__(1)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(con, utils, api) { function userList(status = 1, localListType = "anime", callbacks, username = null, offset = 0, templist = []) { if (con.log("[UserList]", "username: " + username, "status: " + status, "offset: " + offset), null == username) return callback = function(usernameTemp) { 0 == usernameTemp ? (utils.flashm("Please log in on <a target='_blank' href='https://myanimelist.net/login.php'>MyAnimeList!<a>"), void 0 !== callbacks.fullListCallback && callbacks.fullListCallback([]), void 0 !== callbacks.finishCallback && callbacks.finishCallback()) : userList(status, localListType, callbacks, usernameTemp, offset, templist); }, void api.request.xhr("GET", "https://myanimelist.net/editlist.php?hideLayout").then(response => { var username = !1; try { username = response.responseText.split('USER_NAME = "')[1].split('"')[0]; } catch (e) {} con.log("[Username]", username), callback(username); }); var callback, url = "https://myanimelist.net/" + localListType + "list/" + username + "/load.json?offset=" + offset + "&status=" + status; api.request.xhr("GET", url).then(response => { var data = JSON.parse(response.responseText); if (data = prepareData(data, localListType), void 0 !== callbacks.singleCallback) { data.length || callbacks.singleCallback(!1, 0, 0); for (var i = 0; i < data.length; i++) callbacks.singleCallback(data[i], i + offset + 1, data.length + offset); } void 0 !== callbacks.fullListCallback && (templist = templist.concat(data)), data.length > 299 ? void 0 !== callbacks.continueCall ? callbacks.continueCall(function() { userList(status, localListType, callbacks, username, offset + 300, templist); }) : userList(status, localListType, callbacks, username, offset + 300, templist) : (void 0 !== callbacks.fullListCallback && callbacks.fullListCallback(templist), void 0 !== callbacks.finishCallback && callbacks.finishCallback()); }); } function prepareData(data, listType) { for (var newData = [], i = 0; i < data.length; i++) { var el = data[i]; "anime" === listType ? newData.push({ id: el.anime_id, type: listType, title: el.anime_title, url: "https://myanimelist.net" + el.anime_url, watchedEp: el.num_watched_episodes, totalEp: el.anime_num_episodes, image: el.anime_image_path, tags: el.tags, airingState: el.anime_airing_status }) : newData.push({ id: el.manga_id, type: listType, title: el.manga_title, url: "https://myanimelist.net" + el.manga_url, watchedEp: el.num_read_chapters, totalEp: el.manga_num_chapters, image: el.manga_image_path, tags: el.tags, airingState: el.anime_airing_status }); } return newData; } __webpack_require__.d(__webpack_exports__, "b", function() { return userList; }), __webpack_require__.d(__webpack_exports__, "a", function() { return prepareData; }); }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, j, con) { var timer, _minimalApp_settings_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55), _minimalApp_overview_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(58), _minimalApp_recommendations_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56), _minimalApp_bookmarks_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(59), _minimalApp_search_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26), _minimalApp_updateCheck_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(54), _minimalApp_reviews_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(53), ignoreCurrentTab = !0, ignoreNullBase = !1, popupStorage_fetch = function() { return JSON.parse(localStorage.getItem("VUE-MAL-SYNC") || "[]"); }, popupStorage_save = function(state) { localStorage.setItem("VUE-MAL-SYNC", JSON.stringify(state)); }; __webpack_exports__.a = { components: { overviewVue: _minimalApp_overview_vue__WEBPACK_IMPORTED_MODULE_1__.a, recommendationsVue: _minimalApp_recommendations_vue__WEBPACK_IMPORTED_MODULE_2__.a, reviewsVue: _minimalApp_reviews_vue__WEBPACK_IMPORTED_MODULE_6__.a, bookmarksVue: _minimalApp_bookmarks_vue__WEBPACK_IMPORTED_MODULE_3__.a, searchVue: _minimalApp_search_vue__WEBPACK_IMPORTED_MODULE_4__.a, updateCheckVue: _minimalApp_updateCheck_vue__WEBPACK_IMPORTED_MODULE_5__.a, settingsVue: _minimalApp_settings_vue__WEBPACK_IMPORTED_MODULE_0__.a }, data: () => ({ tabs: { overview: { title: "overview", scroll: 0 }, reviews: { title: "reviews", scroll: 0 }, recommendations: { title: "recommendations", scroll: 0 }, settings: { title: "settings", scroll: 0 }, bookmarks: { title: "bookmarks", scroll: 0, state: 1, type: "anime" }, search: { title: "search", scroll: 0, type: "anime", keyword: "" }, updateCheck: { title: "updateCheck", scroll: 0 } }, keyword: "", currentTab: "settings", renderUrl: "", history: [], baseFallback: "", page: null }), computed: { base: function() { return this.page ? this.page.malObj ? this.page.malObj.url : (this.renderUrl = "", "") : this.baseFallback; }, utils: function() { return utils; }, backbutton: function() { return this.history.length > 0; }, backbuttonSearchStyle: function() { return this.backbutton ? { "margin-left": "-17px" } : { "margin-left": "-57px" }; }, backbuttonBookStyle: function() { return this.backbutton ? { left: "40px" } : { left: "0px" }; }, popOver: function() { return this.currentTab === this.tabs.bookmarks.title || (this.currentTab === this.tabs.search.title || this.currentTab === this.tabs.updateCheck.title); }, navigation: function() { return !this.popOver && !this.onlySettings; }, onlySettings: function() { return "" === this.renderUrl; }, bookIcon: function() { j.$(this.$el); return "bookmarks" === this.currentTab ? this.onlySettings ? "settings" : "collections_bookmark" : "book"; } }, mounted: function() { if (this.isPopup()) { var state = popupStorage_fetch(); void 0 !== state && void 0 !== state.currentTab && (ignoreNullBase = !0, this.setCurrent(state)); } }, updated: function() { this.isPopup() && popupStorage_save(this.getCurrent(this.currentTab)); }, watch: { renderUrl: function(url, oldUrl) {}, currentTab: function(tab, oldtab) { this.tabs[oldtab].scroll = this.getScroll(), this.$nextTick(() => { this.setScroll(this.tabs[tab].scroll); }), ignoreCurrentTab ? ignoreCurrentTab = !1 : (this.currentTab === this.tabs.bookmarks.title && this.history.push(this.getCurrent(oldtab)), this.currentTab === this.tabs.search.title && this.history.push(this.getCurrent(oldtab)), this.currentTab === this.tabs.updateCheck.title && this.history.push(this.getCurrent(oldtab))); }, keyword: function(keyword) { "" !== keyword ? this.selectTab("search") : this.selectTab("overview"); }, base: function(base, oldBase) { if (base !== oldBase) { for (;this.history.length > 0; ) this.history.pop(); this.fill(base, !0); } } }, methods: { selectTab(selectedTab) { !this.onlySettings || "overview" !== selectedTab && "reviews" !== selectedTab && "recommendations" !== selectedTab || (selectedTab = "settings"), con.log("Tab Changed", selectedTab), this.currentTab = selectedTab; }, getScroll() { return j.$(this.$el).find(".simplebar-scroll-content").first().scrollTop(); }, setScroll(scroll) { return j.$(this.$el).find(".simplebar-scroll-content").first().scrollTop(scroll); }, isPopup: () => !!j.$("#Mal-Sync-Popup").length, fill(url, isBase = !1) { j.$(this.$el); return null == url ? (this.isPopup() && this.selectTab("bookmarks"), !1) : /^https:\/\/myanimelist.net\/(anime|manga)\//i.test(url) ? (isBase || this.history.push(this.getCurrent(this.currentTab)), this.renderUrl = url, this.currentTab = "overview", !0) : (this.isPopup() && this.selectTab("bookmarks"), !1); }, fillBase(url) { con.log("Fill Base", url, this.history), ignoreNullBase && null === url || (this.baseFallback = url), "" === url && (this.renderUrl = url); }, setPage(page) { this.page = page, void 0 === this.page.malObj && this.$set(this.page, "malObj", void 0); }, backbuttonClick() { con.log("History", this.history), this.history.length > 0 && this.setCurrent(this.history.pop()); }, bookClick() { j.$(this.$el); "book" !== this.bookIcon ? this.selectTab("overview") : this.selectTab("bookmarks"); }, keywordSet() { clearTimeout(timer), timer = setTimeout(() => { this.tabs.search.keyword = this.keyword; }, 300); }, getCurrent(tab, url = this.renderUrl) { return { renderUrl: url, currentTab: tab, tabData: $.extend(!0, {}, this.tabs[tab]) }; }, setCurrent(historyElement) { con.log("Set Current", historyElement), void 0 !== historyElement.tabData.keyword && (this.keyword = historyElement.tabData.keyword), this.tabs[historyElement.currentTab] = historyElement.tabData, this.renderUrl = historyElement.renderUrl, this.currentTab !== historyElement.currentTab && (ignoreCurrentTab = !0), this.currentTab = historyElement.currentTab; } } }; }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(api, con) { var _components_settingsCheckbox_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(61), _components_tooltip_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25), _correction_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(60); __webpack_exports__.a = { components: { correction: _correction_vue__WEBPACK_IMPORTED_MODULE_2__.a, tooltip: _components_tooltip_vue__WEBPACK_IMPORTED_MODULE_1__.a, checkbox: _components_settingsCheckbox_vue__WEBPACK_IMPORTED_MODULE_0__.a }, props: { page: { type: Object, default: null } }, mounted: function() { api.request.xhr("GET", "https://kissanimelist.firebaseio.com/Data2/Notification/Contributer.json").then(response => { try { this.contributer = JSON.parse(response.responseText.replace(/(^"|"$)/gi, "").replace(/\\"/g, '"')); } catch (e) { return void con.error("Contributer Could not be retieved", e); } con.log("Contributer", contr); }); }, methods: { myOpen: function() { this.isOpen = !this.isOpen; } }, data: function() { return { contributer: [], isOpen: !1, options: api.settings.options, version: { link: `https://malsync.lolamtisch.de/changelog#${api.storage.version()}`, img: `https://img.shields.io/badge/Changelog-${api.storage.version()}-green.svg?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAtxQTFRFAAAARj1Hw158LyQzRDRBVF54Ew0ZXqvnIx4labLsQEFTdsD7ZpPC////VE1SNCg3Nik7PS1CSzBKWjRXczBXjjBUsTZd0WuILSUyMiU2MiI2Nyc9dypNoClRbC5INTQ+YXKMMCQ7PyQ/WitFKx4vFxchT16CRStIPSY6TSQ6jjhScb33TViCpCROni9VYKzqTlN+qDBZXK3sYi5JXbHyQzNGXLLzTTZOW6/wQC5EX67sNSw7Y67qWa3vLCUzMCo1uc3fXq3rWa/yLCgxSEdKZa7nV6rrWrDyKCEsMzA1aLDpYbLyYbj6SUJgPj5VLy87e8D6csP+c8r/d9L/fNT+esnydLbgcKfOa5vDdJ/MQi5GSjFLTTFOYi9PWS1NUS9OTTFPRzFLSDJMTTBMXjBPaS5NZzBVgTdjczVfbjVhXjVaTjRTQzJMSzRNTzVOTzNLai1ShzJcjjNdiDNeejRhbDVhWzZbSzRRQzFKQjJKUDNMiyxPYy9UlzBfyDBlpjJgcjJbajNfXDVaTDNRPzBHPTBHVDJNrDBZxSpaV1aBajBZkDNipzNjnTNjdDJdYzJcXDRZTzRQPzFHRzJHZTJNcS9MZ2WUcS9VcDNdezRgcjJeezNgZTNaTjNRRDFLQzJJQjNHQjJGWDJLUjJKYoK4cS5NWTFTWzRaWDJVbjRbWDNVSzNQRjJMUTRLSTVHSzRJjjZbfDdZYqXlhEZwVS5MSzRUVTNUczVbTjJRSTNOUDRMSTNLQTJISTNGczZUXjVRWrH0W3+1Ri9OSDJSSzNSTDNTRzJRRzNRSTNNQzJLPzFKPjJGPjFCOSw/W67vTWOORi5NSjJRSzNVTDRURTJRQTBNQTFKQzJKPjFINSw9XKrpSVyIQCxLRS9QRjJSQjJPRzRQUTROQjBFLyc1W6rrS22ePTRVQSxLSjNVSzZYTzZWUTJPOSw+Z778YqPWWnGcV1F/UkZxT0Nm////ch6M6QAAAFp0Uk5TAAAAAAAAAAAAAAAAAAABKH2/3+bIjTgFCm7a/f7nhRILifn9nRJx+v6JBC3b6UV//aPB3OTz5/bL3Y6oNuLuTAGA/ZsIEp79shwRhervmxwFQqDd+frjqksImWc25wAAAAFiS0dEDfa0YfUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEbSURBVBjTARAB7/4AAAABDg8QERITFBUWFwIAAAAAAxgZGhtaW1xdHB0eHwQAAAUgISJeX2BhYmNkZSMkJQYAACYnZmdoaWprbG1ubygpKgArLHBxcnN0dXZ3eHl6ey0uAC8wfH1+f4CBgoOEhYaHiDEAMomKi4yNjo+QkZKSk5SVMwA0lpeYmZqbnJ2en6ChoqM1ADakpaanqKmqq6ytrq+wsTcAOLKztLW2t7i5uru8vb6/OQA6wMHCw8TFxsfIycrLzM07ADw9zs/Q0dLT1NXW19jZPj8AQEFC2tvc3d7U3+Dh4uNDRAAHRUZH5OXm5+jp6uvsSEkIAAAJSktM7e7v8PHyTU5PCgAAAAALUFFSU1RVVldYWQwNAEGXdELuOiRkAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE4LTA1LTE2VDEzOjM2OjI0KzAwOjAwK9TuQgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOC0wNS0xNlQxMzozNjoyNCswMDowMFqJVv4AAABGdEVYdHNvZnR3YXJlAEltYWdlTWFnaWNrIDYuNy44LTkgMjAxNC0wNS0xMiBRMTYgaHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmfchu0AAAAAGHRFWHRUaHVtYjo6RG9jdW1lbnQ6OlBhZ2VzADGn/7svAAAAGHRFWHRUaHVtYjo6SW1hZ2U6OmhlaWdodAAxOTIPAHKFAAAAF3RFWHRUaHVtYjo6SW1hZ2U6OldpZHRoADE5MtOsIQgAAAAZdEVYdFRodW1iOjpNaW1ldHlwZQBpbWFnZS9wbmc/slZOAAAAF3RFWHRUaHVtYjo6TVRpbWUAMTUyNjQ3Nzc4NGTqj8oAAAAPdEVYdFRodW1iOjpTaXplADBCQpSiPuwAAABWdEVYdFRodW1iOjpVUkkAZmlsZTovLy9tbnRsb2cvZmF2aWNvbnMvMjAxOC0wNS0xNi82ODRlZmQxYzBmMTdmMzAxMjIzMWFmNzQ4YzhmYjJjYy5pY28ucG5nP6GaiQAAAABJRU5ErkJggg==` } }; } }; }).call(this, __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(api) { __webpack_exports__.a = { props: { option: { type: String } }, computed: { value: { get: function() { return api.settings.get(this.option); }, set: function(value) { api.settings.set(this.option, value); } } } }; }).call(this, __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, utils) { var _components_tooltip_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25), _search_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26); __webpack_exports__.a = { components: { tooltip: _components_tooltip_vue__WEBPACK_IMPORTED_MODULE_0__.a, searchVue: _search_vue__WEBPACK_IMPORTED_MODULE_1__.a }, props: { page: { type: Object, default: null } }, data: function() { return { malUrl: "", searchType: this.page.page.type, searchKeyword: "" }; }, watch: { url: function(url) { this.malUrl = this.url; }, wrong: function(wrong) { wrong && (this.$parent.$parent.currentTab = "settings"); } }, mounted: function() { this.malUrl = this.url, j.$(this.$el).closest("html").find("head").click(); var This = this; j.$(this.$el).on("click", ".searchItem", function(e) { e.preventDefault(), This.submit(j.$(this).attr("href")); }), this.wrong && (this.$parent.$parent.currentTab = "settings"); }, computed: { title: function() { return void 0 !== this.page.malObj ? this.page.malObj.name : "Not Found"; }, url: function() { return void 0 !== this.page.malObj ? this.page.malObj.url : ""; }, wrong: function() { return !(void 0 === this.page || void 0 === this.page.malObj || !this.page.malObj.wrong); }, offset: { get: function() { var offset = this.page.getOffset(); return 0 === offset ? "" : offset; }, set: function(offset) { null !== offset && ("" !== offset ? (this.page.setOffset(offset), utils.flashm("New Offset (" + offset + ") set.")) : (this.page.setOffset("0"), utils.flashm("Offset reset"))); } } }, methods: { submit: function(malUrl) { var toDatabase = !1; void 0 !== this.page.page.database && confirm("Submit database correction request?") && (toDatabase = "correction"), this.$set(this.page, "malObj", void 0), this.page.setCache(malUrl, toDatabase), utils.flashm("new url '" + malUrl + "' set.", !1), this.page.handlePage(); }, noMal: function() { this.submit(""); }, reset: function() { this.page.deleteCache(), this.$set(this.page, "malObj", void 0), utils.flashm("MyAnimeList url reset", !1), this.page.handlePage(); }, update: function() { this.submit(this.malUrl); } } }; }).call(this, __webpack_require__(1), __webpack_require__(3)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, api) { __webpack_require__(7); var _bookmarksItem_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); __webpack_exports__.a = { components: { bookmarksItem: _bookmarksItem_vue__WEBPACK_IMPORTED_MODULE_1__.a }, data: function() { return { items: [], loading: !0 }; }, props: { type: { type: String, default: "anime" }, keyword: { type: String, default: "" } }, mounted: function() { this.load(); }, activated: function() { this.$nextTick(() => { j.$(this.$el).closest("html").find("head").click(); }); }, watch: { keyword: function(type) { this.load(); }, type: function(type) { this.load(); } }, methods: { load: function() { this.loading = !0, api.request.xhr("GET", "https://myanimelist.net/search/prefix.json?type=" + this.type + "&keyword=" + this.keyword + "&v=1").then(response => { this.loading = !1; var searchResults = j.$.parseJSON(response.responseText); this.items = searchResults.categories[0].items; }); } } }; }).call(this, __webpack_require__(1), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, api) { __webpack_require__(7); __webpack_exports__.a = { data: function() { return { prediction: void 0, resumeUrl: null, continueUrl: null }; }, props: { item: { type: Object } }, mounted: async function() { if (void 0 === this.item.resume) { var resumeUrl = null, continueUrl = null, id = utils.urlPart(this.item.url, 4), type = utils.urlPart(this.item.url, 3), resumeUrlObj = await utils.getResumeWaching(type, id), continueUrlObj = await utils.getContinueWaching(type, id), curEp = parseInt(this.item.watchedEp.toString()); void 0 !== continueUrlObj && continueUrlObj.ep === curEp + 1 ? continueUrl = continueUrlObj.url : void 0 !== resumeUrlObj && resumeUrlObj.ep === curEp && (resumeUrl = resumeUrlObj.url), this.resumeUrl = resumeUrl, this.continueUrl = continueUrl; } void 0 === this.prediction && (this.setPrediction(), setInterval(() => { this.setPrediction(); }, 6e4)); }, watch: { prediction: function() { this.$parent.sortByPrediction(); } }, computed: { imageHi: function() { var imageHi = this.item.image, regexDimensions = /\/r\/\d*x\d*/g; return regexDimensions.test(imageHi) && (imageHi = imageHi.replace(/v.jpg$/g, ".jpg").replace(regexDimensions, "")), imageHi; }, barTotal: function() { return this.prediction && this.prediction.tagEpisode && !this.hasTotalEp ? this.prediction.tagEpisode > this.item.watchedEp ? Math.ceil(1.2 * this.prediction.tagEpisode) : Math.ceil(1.2 * this.item.watchedEp) : this.item.totalEp; }, hasTotalEp: function() { return 0 !== parseInt(this.item.totalEp); }, progress: function() { return "width: " + this.item.watchedEp / this.barTotal * 100 + "%;"; }, predictionBar: function() { var predictionProgress = this.prediction.tagEpisode / this.barTotal * 100, color = "orange"; return "" !== this.prediction.color && (color = this.prediction.color), "width: " + predictionProgress + "%; background-color: " + color; }, streamUrl: function() { return utils.getUrlFromTags(this.item.tags); }, preTexter: function() { var pre = this.prediction.prediction, diffDays = pre.diffDays, diffHours = pre.diffHours, diffMinutes = pre.diffMinutes; diffDays > 1 && diffHours > 12 && diffDays++; var text = ""; return diffDays > 1 ? text + diffDays + " Days" : (1 === diffDays && (text += diffDays + " Day "), diffHours > 1 ? text + diffHours + " Hours" : (1 === diffHours && (text += diffHours + " Hour "), text + diffMinutes + " mins")); } }, methods: { favicon: function(domain) { return utils.favicon(domain); }, assetUrl: function(asset) { return api.storage.assetUrl(asset); }, setPrediction: function() { utils.epPredictionUI(utils.urlPart(this.item.url, 4), utils.urlPart(this.item.url, 3), prediction => { this.prediction = prediction; }); } } }; }).call(this, __webpack_require__(3), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, api, j, con) { var _provider_provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7); __webpack_exports__.a = { data: function() { return { xhr: "", mal: { malObj: null, resumeUrl: null, continueUrl: null }, kiss2mal: {}, related: [], prediction: null, utils: utils }; }, props: { url: { type: String, default: "" } }, watch: { url: async function(url) { this.xhr = "", this.mal.malObj = null, this.mal.resumeUrl = null, this.mal.continueUrl = null, this.kiss2mal = {}, this.related = [], this.prediction = null, api.request.xhr("GET", this.url).then(response => { this.xhr = response.responseText, this.related = this.getRelated(), this.updateStatusTags(); }); var malObj = Object(_provider_provider__WEBPACK_IMPORTED_MODULE_0__.a)(this.url, !0); malObj.init().then(async () => { this.mal.malObj = malObj, this.mal.resumeUrl = await malObj.getResumeWaching(), this.mal.continueUrl = await malObj.getContinueWaching(); }), this.url.split("").length > 3 && (utils.getMalToKissArray(utils.urlPart(this.url, 3), utils.urlPart(this.url, 4)).then(links => { this.kiss2mal = links; }), utils.epPredictionUI(utils.urlPart(this.url, 4), utils.urlPart(this.url, 3), prediction => { this.prediction = prediction; })); } }, computed: { localType: function() { return this.url.split("/").length > 3 ? utils.urlPart(this.url, 3) : ""; }, editUrl: function() { return this.url.split("/").length > 3 ? `https://myanimelist.net/ownlist/${this.localType}/${utils.urlPart(this.url, 4)}/edit` : null; }, malStatus: { get: function() { return this.mal.malObj ? 0 === this.mal.malObj.getScore() ? 1 : this.mal.malObj.getStatus() : null; }, set: function(value) { this.mal.malObj && this.mal.malObj.setStatus(value); } }, malEpisode: { get: function() { return this.mal.malObj ? this.mal.malObj.addAnime ? null : this.mal.malObj.getEpisode() : null; }, set: function(value) { this.mal.malObj && this.mal.malObj.setEpisode(value); } }, malVolume: { get: function() { return this.mal.malObj ? this.mal.malObj.addAnime ? null : this.mal.malObj.getVolume() : null; }, set: function(value) { this.mal.malObj && this.mal.malObj.setVolume(value); } }, malScore: { get: function() { return this.mal.malObj ? 0 === this.mal.malObj.getScore() ? "" : this.mal.malObj.getScore() : null; }, set: function(value) { this.mal.malObj && this.mal.malObj.setScore(value); } }, statistics: function() { var stats = ""; try { var statsBlock = this.xhr.split("<h2>Statistics</h2>")[1].split("<h2>")[0], tempHtml = j.$.parseHTML(statsBlock), statsHtml = '<ul class="mdl-list mdl-grid mdl-grid--no-spacing mdl-cell mdl-cell--12-col" style="display: flex; justify-content: space-around;">'; j.$.each(j.$(tempHtml).filter("div").slice(0, 5), function(index, value) { statsHtml += '<li class="mdl-list__item mdl-list__item--two-line" style="padding: 0; padding-left: 10px; padding-right: 3px; min-width: 18%;">', statsHtml += '<span class="mdl-list__item-primary-content">', statsHtml += "<span>", statsHtml += j.$(value).find(".dark_text").text(), statsHtml += "</span>", statsHtml += '<span class="mdl-list__item-sub-title">', statsHtml += null != j.$(value).find("span[itemprop=ratingValue]").height() ? j.$(value).find("span[itemprop=ratingValue]").text() : j.$(value).clone().children().remove().end().text(), statsHtml += "</span>", statsHtml += "</span>", statsHtml += "</li>"; }), stats = statsHtml += "</ul>"; } catch (e) { console.log("[iframeOverview] Error:", e); } return stats; }, displayUrl: function() { return null != this.mal.malObj ? this.mal.malObj.getDisplayUrl() : this.url; }, image: function() { var image = ""; try { image = this.xhr.split("js-scrollfix-bottom")[1].split('<img src="')[1].split('"')[0]; } catch (e) { console.log("[iframeOverview] Error:", e); } return image; }, title: function() { var title = ""; try { title = this.xhr.split('itemprop="name">')[1].split("<")[0]; } catch (e) { console.log("[iframeOverview] Error:", e); } return title; }, description: function() { var description = ""; try { description = this.xhr.split('itemprop="description">')[1].split("</span")[0]; } catch (e) { console.log("[iframeOverview] Error:", e); } return description; }, altTitle: function() { var altTitle = ""; try { altTitle = (altTitle = (altTitle = (altTitle = this.xhr.split("<h2>Alternative Titles</h2>")[1].split("<h2>")[0]).replace(/spaceit_pad/g, 'mdl-chip" style="margin-right: 5px;')).replace(/<\/span>/g, '</span><span class="mdl-chip__text">')).replace(/<\/div>/g, "</span></div>"); } catch (e) { console.log("[iframeOverview] Error:", e); } return altTitle; }, streaming: function() { var streamhtml = null, malObj = this.mal.malObj; if (null == malObj) return null; var streamUrl = malObj.getStreamingUrl(); return void 0 !== streamUrl && (streamhtml = `\n <div class="data title progress" style="display: inline-block; position: relative; top: 2px; margin-left: -2px;">\n <a class="stream mdl-button mdl-button--colored mdl-js-button mdl-button--raised" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0px 5px; color: white;" href="${streamUrl}">\n <img src="${utils.favicon(streamUrl.split("/")[2])}" style="padding-bottom: 3px; padding-right: 6px; margin-left: -3px;">Continue ${utils.watching(malObj.type)}\n </a>`, con.log("Resume", this.mal.resumeUrl, "Continue", this.mal.continueUrl), void 0 !== this.mal.continueUrl && this.mal.continueUrl && this.mal.continueUrl.ep === malObj.getEpisode() + 1 ? streamhtml += `<a class="nextStream mdl-button mdl-button--colored mdl-js-button mdl-button--raised" title="Continue watching" target="_blank" style="margin: 0px 5px 0px 0px; color: white;" href="${this.mal.continueUrl.url}">\n <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16" style="padding-bottom: 3px; padding-right: 6px; margin-left: -3px;">Next Episode\n </a>` : void 0 !== this.mal.resumeUrl && this.mal.resumeUrl && this.mal.resumeUrl.ep === malObj.getEpisode() && (streamhtml += `<a class="resumeStream mdl-button mdl-button--colored mdl-js-button mdl-button--raised" title="Resume watching" target="_blank" style="margin: 0px 5px 0px 0px; color: white;" href="${this.mal.resumeUrl.url}">\n <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16" style="padding-bottom: 3px; padding-right: 6px; margin-left: -3px;">Resume Episode\n </a>`), streamhtml += "</div>\n "), streamhtml; }, characters: function() { var charArray = []; try { var characterBlock = this.xhr.split("detail-characters-list")[1].split("</h2>")[0], charHtml = j.$.parseHTML('<div class="detail-characters-list ' + characterBlock); j.$.each(j.$(charHtml).find(":not(td) > table"), (index, value) => { index || 1; var regexDimensions = /\/r\/\d*x\d*/g, charImg = j.$(value).find("img").first().attr("data-src"); charImg = regexDimensions.test(charImg) ? charImg.replace(regexDimensions, "") : "https://myanimelist.cdn-dena.com/images/questionmark_23.gif", charImg = utils.handleMalImages(charImg), charArray.push({ img: charImg, html: j.$(value).find(".borderClass .spaceit_pad").first().parent().html() }); }); } catch (e) { console.log("[iframeOverview] Error:", e); } return charArray; }, info: function() { var html = ""; try { var infoBlock = this.xhr.split("<h2>Information</h2>")[1].split("<h2>")[0], infoData = j.$.parseHTML(infoBlock), infoHtml = '<ul class="mdl-grid mdl-grid--no-spacing mdl-list mdl-cell mdl-cell--12-col">'; j.$.each(j.$(infoData).filter("div"), (index, value) => { infoHtml += '<li class="mdl-list__item mdl-list__item--three-line mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet">', infoHtml += '<span class="mdl-list__item-primary-content">', infoHtml += "<span>", infoHtml += j.$(value).find(".dark_text").text(), infoHtml += "</span>", infoHtml += '<span class="mdl-list__item-text-body">', j.$(value).find(".dark_text").remove(), infoHtml += j.$(value).html(), infoHtml += "</span>", infoHtml += "</span>", infoHtml += "</li>"; }), infoHtml += this.externalLinks, html += '<div class="mdl-grid mdl-grid--no-spacing mdl-cell mdl-cell--12-col mdl-shadow--4dp info-block mdl-grid malClear">' + (infoHtml += "</ul>") + "</div>"; } catch (e) { console.log("[iframeOverview] Error:", e); } return html; }, externalLinks: function() { var html = ""; try { var infoBlock = this.xhr.split("<h2>External Links</h2>")[1].split("</div>")[0] + "</div>", infoData = j.$.parseHTML(infoBlock), infoHtml = ""; infoHtml += '<li class="mdl-list__item mdl-list__item--three-line mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet">', infoHtml += '<span class="mdl-list__item-primary-content">', infoHtml += "<span>", infoHtml += "External Links", infoHtml += "</span>", infoHtml += '<span class="mdl-list__item-text-body">', j.$.each(j.$(infoData).find("a"), (index, value) => { index && (infoHtml += ", "), infoHtml += '<a href="' + j.$(value).attr("href") + '">' + j.$(value).text() + "</a>"; }), infoHtml += "</span>", infoHtml += "</span>", html = infoHtml += "</li>"; } catch (e) { console.log("[iframeOverview] Error:", e); } return html; } }, methods: { malSync: function() { this.mal.malObj.sync().then(function() { utils.flashm("Updated"); }, function() { utils.flashm("Update failed", { error: !0 }); }); }, getMal2KissFavicon: function(streams) { return utils.favicon(streams[Object.keys(streams)[0]].url.split("/")[2]); }, getRelated: function() { var el = []; try { var relatedBlock = this.xhr.split("Related ")[1].split("</h2>")[1].split("<h2>")[0], related = j.$.parseHTML(relatedBlock); j.$.each(j.$(related).filter("table").find("tr"), function(index, value) { var links = []; j.$(value).find(".borderClass").last().find("a").each(function(index, value) { links.push({ url: j.$(value).attr("href"), title: j.$(value).text(), statusTag: "" }); }), el.push({ type: j.$(value).find(".borderClass").first().text(), links: links }); }); } catch (e) { console.log("[iframeOverview] Error:", e); } return el; }, updateStatusTags: async function() { for (var relatedKey in this.related) { var relate = this.related[relatedKey]; for (var linkKey in relate.links) { var link = relate.links[linkKey], url = utils.absoluteLink(link.url, "https://myanimelist.net"); if (void 0 !== url) { var malObj = Object(_provider_provider__WEBPACK_IMPORTED_MODULE_0__.a)(url, !0, !0); await malObj.init(); var tag = utils.statusTag(malObj.getStatus(), malObj.type, malObj.id); tag && (this.related[relatedKey].links[linkKey].statusTag = tag); } } } } } }; }).call(this, __webpack_require__(3), __webpack_require__(0), __webpack_require__(1), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, api) { __webpack_require__(7); __webpack_exports__.a = { data: function() { return { xhr: "" }; }, props: { url: { type: String, default: "" }, state: { type: Boolean, default: !1 } }, updated: function() { var minimal = j.$(this.$el); minimal.find(".js-similar-recommendations-button").addClass("nojs").click(function() { j.$(this).parent().find(".more").toggle(); }), minimal.find(".js-toggle-recommendation-button").addClass("nojs").click(function() { var revID = j.$(this).attr("data-id"); minimal.find("#recommend" + revID).css("display", "initial"), j.$(this).remove(); }), minimal.find("#malRecommendations .more .borderClass").addClass("mdl-shadow--2dp").css("padding", "10px"), minimal.find(".lazyload").each(function() { j.$(this).attr("src", j.$(this).attr("data-src")); }); }, watch: { url: async function(url) { this.xhr = "", this.state && api.request.xhr("GET", this.url + "/userrecs").then(response => { this.xhr = response.responseText; }); }, state: async function(state) { state && "" === this.xhr && api.request.xhr("GET", this.url + "/userrecs").then(response => { this.xhr = response.responseText; }); } }, computed: { recommendations: function() { try { var recommendationsBlock = this.xhr.split("Make a recommendation</a>")[1].split("</h2>")[1].split('<div class="mauto')[0], htmlT = j.$.parseHTML(recommendationsBlock), recommendationsHtml = ""; j.$.each(j.$(htmlT).filter(".borderClass"), (index, value) => { recommendationsHtml += '<div class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp mdl-grid">', recommendationsHtml += '<div class="mdl-card__media" style="background-color: transparent; margin: 8px;">', recommendationsHtml += j.$(value).find(".picSurround").html(), recommendationsHtml += "</div>", recommendationsHtml += '<div class="mdl-cell" style="flex-grow: 100;">', recommendationsHtml += '<div class="">', j.$(value).find(".button_edit, .button_add, td:eq(1) > div:eq(1) span").remove(), recommendationsHtml += j.$(value).find("td:eq(1) > div:eq(1)").html(), recommendationsHtml += "</div>", recommendationsHtml += '<div class="">', j.$(value).find('a[href^="/dbchanges.php?go=report"]').remove(), recommendationsHtml += j.$(value).find(".borderClass").html(), recommendationsHtml += "</div>", recommendationsHtml += '<div class="">', recommendationsHtml += void 0 !== j.$(value).find(".spaceit").html() ? j.$(value).find(".spaceit").html() : "", recommendationsHtml += '<div class="more" style="display: none;">', recommendationsHtml += j.$(value).find("td:eq(1) > div").last().html(), recommendationsHtml += "</div>", recommendationsHtml += "</div>", recommendationsHtml += "</div>", recommendationsHtml += "</div>"; }), recommendationsHtml += ""; } catch (e) { console.log("[iframeRecommendations] Error:", e); } return recommendationsHtml; } }, methods: {} }; }).call(this, __webpack_require__(1), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j) { var timer, _provider_provider_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7), _bookmarksItem_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); __webpack_exports__.a = { components: { bookmarksItem: _bookmarksItem_vue__WEBPACK_IMPORTED_MODULE_1__.a }, data: function() { return { items: [], loading: !0 }; }, props: { listType: { type: String, default: "anime" }, state: { type: Number, default: 1 } }, mounted: function() { this.load(); }, activated: function() { this.$nextTick(() => { j.$(this.$el).closest("html").find("head").click(); }); }, watch: { listType: function(type) { this.load(); }, state: function(state) { this.load(); } }, methods: { load: function() { this.loading = !0, _provider_provider_ts__WEBPACK_IMPORTED_MODULE_0__.b(this.state, this.listType, { fullListCallback: async list => { this.loading = !1, this.items = list; } }); }, sortByPrediction: function() { 1 !== this.state && "1" !== this.state || (clearTimeout(timer), timer = setTimeout(() => { var This = this, normalItems = [], preItems = [], watchedItems = []; function sortItems(a, b) { var vueA = This.$refs[a.id][0], vueB = This.$refs[b.id][0], preA = 99999999, preB = preA; return vueA.prediction && vueA.prediction.prediction && (preA = 1440 * vueA.prediction.prediction.diffDays + 60 * vueA.prediction.prediction.diffHours + vueA.prediction.prediction.diffMinutes), vueB.prediction && vueB.prediction.prediction && (preB = 1440 * vueB.prediction.prediction.diffDays + 60 * vueB.prediction.prediction.diffHours + vueB.prediction.prediction.diffMinutes), preA - preB; } this.items.forEach(item => { var vue = this.$refs[item.id][0]; vue.prediction && vue.prediction.prediction ? item.watchedEp < vue.prediction.tagEpisode ? preItems.push(item) : watchedItems.push(item) : normalItems.push(item); }), preItems = preItems.sort(sortItems).reverse(), watchedItems = watchedItems.sort(sortItems), this.items = preItems.concat(watchedItems, normalItems), this.$nextTick(() => { j.$(this.$el).closest(".simplebar-scroll-content").first().scroll(); }); }, 50)); } } }; }).call(this, __webpack_require__(1)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(con, api, utils) { var interva, _provider_provider_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7); __webpack_exports__.a = { data: function() { return { items: [], history: [] }; }, props: { listType: { type: String, default: "anime" } }, mounted: function() { this.load(), interva = setInterval(() => { this.load(); }, 5e3); }, destroyed: function() { clearInterval(interva); }, watch: { listType: function(type) { this.load(); } }, methods: { load: function() { _provider_provider_ts__WEBPACK_IMPORTED_MODULE_0__.b(1, this.listType, { fullListCallback: async list => { for (var i = 0; i < list.length; i++) { var el = list[i], episode = "", error = "", trColor = ""; con.log("el", el); var elCache = await api.storage.get("updateCheck/" + this.listType + "/" + el.id); con.log("elCache", elCache), void 0 !== elCache && (episode = elCache.newestEp + "/" + el.totalEp, trColor = "orange", elCache.finished && (error = "finished", trColor = "green"), void 0 !== elCache.error && (error = elCache.error, trColor = "red")), el.episode = episode, el.trColor = trColor, el.error = error; } this.items = list; } }), api.storage.get("notificationHistory").then(history => { history.forEach(entry => { var timeDiff = Date.now() - entry.timestamp; timeDiff = utils.timeDiffToText(timeDiff), timeDiff += "ago", entry.timeDiff = timeDiff; }), this.history = history.reverse(); }); }, deleteItem(item) { var delPath = "updateCheck/" + this.listType + "/" + item.id; con.log("delete", delPath, item), api.storage.remove(delPath), item.trColor = "black"; }, notificationTest() { utils.notifications("https://malsync.lolamtisch.de/", "MyAnimeList-Sync", "by lolamtisch", "https://cdn.myanimelist.net/images/anime/5/65187.jpg"); }, startCheck() { chrome.alarms.create("updateCheckNow", { when: Date.now() + 1e3 }), utils.flashm("Check started"); } } }; }).call(this, __webpack_require__(2), __webpack_require__(0), __webpack_require__(3)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, api) { __webpack_require__(7); __webpack_exports__.a = { data: function() { return { xhr: "" }; }, props: { url: { type: String, default: "" }, state: { type: Boolean, default: !1 } }, updated: function() { var minimal = j.$(this.$el); minimal.find(".js-toggle-review-button").addClass("nojs").click(function() { var revID = j.$(this).attr("data-id"); minimal.find("#review" + revID).css("display", "initial"), minimal.find("#revhelp_output_" + revID).remove(), j.$(this).remove(); }), minimal.find(".mb8 a").addClass("nojs").click(function() { var revID = j.$(this).attr("onclick").split("j.$('")[1].split("'")[0]; minimal.find(revID).toggle(); }); }, watch: { url: async function(url) { this.xhr = "", this.state && api.request.xhr("GET", this.url + "/reviews").then(response => { this.xhr = response.responseText; }); }, state: async function(state) { state && "" === this.xhr && api.request.xhr("GET", this.url + "/reviews").then(response => { this.xhr = response.responseText; }); } }, computed: { reviews: function() { var html = ""; try { var reviews = this.xhr.split("Reviews</h2>")[1].split("<h2>")[0], reviewsData = j.$.parseHTML(reviews), reviewsHtml = ""; j.$.each(j.$(reviewsData).filter(".borderDark"), (index, value) => { reviewsHtml += '<div class="mdl-cell mdl-cell--12-col mdl-shadow--4dp">', reviewsHtml += '<div class="mdl-card__supporting-text mdl-card--border" style="color: black;">', j.$(value).find(".spaceit > div").css("max-width", "60%"), reviewsHtml += j.$(value).find(".spaceit").first().html(), reviewsHtml += "</div>", reviewsHtml += '<div class="mdl-card__supporting-text" style="color: black;">', j.$(value).find(".textReadability, .textReadability > span").contents().filter(function() { return 3 === this.nodeType && j.$.trim(this.nodeValue).length; }).wrap('<p style="margin:0;padding=0;"/>'), j.$(value).find("br").css("line-height", "10px"), reviewsHtml += j.$(value).find(".textReadability").html(), reviewsHtml += "</div>", reviewsHtml += "</div>"; }), html = reviewsHtml += ""; } catch (e) { console.log("[iframeReview] Error:", e); } return html; } }, methods: {} }; }).call(this, __webpack_require__(1), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, con, api, j) { __webpack_require__.d(__webpack_exports__, "a", function() { return entryClass; }); var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5), __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; class entryClass { constructor(url, miniMAL = !1, silent = !1) { this.url = url, this.miniMAL = miniMAL, this.silent = silent, this.aniId = NaN, this.name = "", this.totalEp = NaN, this.addAnime = !1, this.login = !1, this.wrong = !1, this.displayUrl = "", this.type = utils.urlPart(url, 3), void 0 !== url && url.indexOf("myanimelist.net") > -1 ? this.id = utils.urlPart(url, 4) : void 0 !== url && url.indexOf("anilist.co") > -1 ? (this.id = NaN, this.aniId = utils.urlPart(url, 4)) : this.id = NaN; } init() { return this.update(); } getDisplayUrl() { return "" !== this.displayUrl && null != this.displayUrl ? this.displayUrl : this.url; } update() { con.log("Update AniList info", this.id ? "MAL: " + this.id : "AniList: " + this.aniId); var selectId = this.id, selectQuery = "idMal"; isNaN(this.id) && (selectId = this.aniId, selectQuery = "id"); var query = `\n query ($id: Int, $type: MediaType) {\n Media (${selectQuery}: $id, type: $type) {\n id\n idMal\n siteUrl\n episodes\n chapters\n volumes\n averageScore\n coverImage{\n large\n }\n title {\n userPreferred\n }\n mediaListEntry {\n status\n progress\n progressVolumes\n score(format: POINT_10)\n repeat\n notes\n }\n }\n }\n `, variables = { id: selectId, type: this.type.toUpperCase() }; return api.request.xhr("POST", { url: "https://graphql.anilist.co", headers: { Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(), "Content-Type": "application/json", Accept: "application/json" }, data: JSON.stringify({ query: query, variables: variables }) }).then(response => { var res = JSON.parse(response.responseText); con.log(res), this.login = !0, _helper__WEBPACK_IMPORTED_MODULE_0__.c(res, this.silent), this.animeInfo = res.data.Media, this.aniId = this.animeInfo.id, isNaN(this.id) && this.animeInfo.idMal && (this.id = this.animeInfo.idMal), this.displayUrl = this.animeInfo.siteUrl, this.addAnime = !1, null === this.animeInfo.mediaListEntry && (this.addAnime = !0, this.animeInfo.mediaListEntry = { notes: "", progress: 0, progressVolumes: 0, repeat: 0, score: 0, status: "PLANNING" }), this.name = this.animeInfo.title.userPreferred, this.totalEp = this.animeInfo.episodes ? this.animeInfo.episodes : this.animeInfo.chapters, this.animeInfo.volumes && (this.totalVol = this.animeInfo.volumes); }); } getEpisode() { return this.animeInfo.mediaListEntry.progress; } setEpisode(ep) { ep + "" == "" && (ep = 0), this.animeInfo.mediaListEntry.progress = parseInt(ep + ""); } getVolume() { return "manga" == this.type && this.animeInfo.mediaListEntry.progressVolumes; } setVolume(ep) { "manga" != this.type ? con.error("You cant set Volumes for animes") : this.animeInfo.mediaListEntry.progressVolumes = ep; } getStatus() { return this.addAnime ? 0 : _helper__WEBPACK_IMPORTED_MODULE_0__.d(this.animeInfo.mediaListEntry.status); } setStatus(status) { "REPEATING" == this.animeInfo.mediaListEntry.status && 1 == parseInt(status.toString()) || (this.animeInfo.mediaListEntry.status = _helper__WEBPACK_IMPORTED_MODULE_0__.d(status, parseInt(status.toString()))); } getScore() { return this.animeInfo.mediaListEntry.score; } setScore(score) { this.animeInfo.mediaListEntry.score = score; } getRewatching() { return "REPEATING" == this.animeInfo.mediaListEntry.status ? 1 : 0; } setRewatching(rewatching) { 1 == rewatching && (this.animeInfo.mediaListEntry.status = "REPEATING"); } setCompletionDateToNow() {} setStartingDateToNow() {} getStreamingUrl() { var tags = this.animeInfo.mediaListEntry.notes; return utils.getUrlFromTags(tags); } setStreamingUrl(url) { var tags = this.animeInfo.mediaListEntry.notes; tags = utils.setUrlInTags(url, tags), this.animeInfo.mediaListEntry.notes = tags; } getRating() { return __awaiter(this, void 0, void 0, function*() { return null == this.animeInfo.averageScore ? "N/A" : this.animeInfo.averageScore; }); } setResumeWaching(url, ep) { return __awaiter(this, void 0, void 0, function*() { return utils.setResumeWaching(url, ep, this.type, this.id); }); } getResumeWaching() { return __awaiter(this, void 0, void 0, function*() { return utils.getResumeWaching(this.type, this.id); }); } setContinueWaching(url, ep) { return __awaiter(this, void 0, void 0, function*() { return utils.setContinueWaching(url, ep, this.type, this.id); }); } getContinueWaching() { return __awaiter(this, void 0, void 0, function*() { return utils.getContinueWaching(this.type, this.id); }); } getImage() { return __awaiter(this, void 0, void 0, function*() { return this.animeInfo.coverImage.large; }); } clone() { const copy = new this.constructor(); return Object.assign(copy, this), copy.animeInfo = Object.assign({}, this.animeInfo), copy.animeInfo.mediaListEntry = Object.assign({}, this.animeInfo.mediaListEntry), copy; } sync() { var status = utils.status; return new Promise((resolve, reject) => { var This = this; this.type, this.id; if (this.addAnime) { var imgSelector = "malSyncImg" + this.id, flashConfirmText = `\n Is "${this.name}" correct?\n <br>\n <img id="${imgSelector}" style="\n height: 200px;\n min-height: 200px;\n min-width: 144px;\n border: 1px solid;\n margin-top: 10px;\n display: inline;\n " src="" />\n <br>\n \x3c!--<a style="margin-left: -2px;" target="_blank" href="https://github.com/lolamtisch/MALSync/wiki/Troubleshooting#myanimeentry-entry-is-not-correct">[How to correct entries]</a>--\x3e\n `; return This.miniMAL && (flashConfirmText = `\n Add "${this.name}" to AniList?`), "anime" == this.type ? ("https://myanimelist.net/ownlist/anime/add?selected_series_id=" + this.id, utils.flashConfirm(flashConfirmText, "add", function() { continueCall(); }, function() { wrongCall(); })) : ("https://myanimelist.net/ownlist/manga/add?selected_manga_id=" + this.id, utils.flashConfirm(flashConfirmText, "add", function() { continueCall(); }, function() { wrongCall(); })), void (This.miniMAL || (this.getImage().then(image => { j.$("#" + imgSelector).attr("src", image); }), j.$(".Yes").text("YES"), j.$(".Cancel").text("NO"))); } var watchCounter = ".add_anime[num_watched_times]", rewatchText = "Rewatch Anime?", rewatchFinishText = "Finish rewatching?"; function wrongCall() { if (This.wrong = !0, !This.miniMAL) { var miniButton = j.$("button.open-info-popup"); "none" != miniButton.css("display") ? miniButton.click() : (miniButton.click(), miniButton.click()); } } function continueCall() { var variables = { mediaId: This.aniId, status: This.animeInfo.mediaListEntry.status, progress: This.animeInfo.mediaListEntry.progress, scoreRaw: 10 * This.animeInfo.mediaListEntry.score, notes: This.animeInfo.mediaListEntry.notes }; con.log("[SET] Object:", variables), api.request.xhr("POST", { url: "https://graphql.anilist.co", headers: { Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(), "Content-Type": "application/json", Accept: "application/json" }, data: JSON.stringify({ query: "\n mutation ($mediaId: Int, $status: MediaListStatus, $progress: Int, $scoreRaw: Int, $notes: String) {\n SaveMediaListEntry (mediaId: $mediaId, status: $status, progress: $progress, scoreRaw: $scoreRaw, notes: $notes) {\n id\n status\n progress\n }\n }\n ", variables: variables }) }).then(response => { var res = JSON.parse(response.responseText); con.log(res), _helper__WEBPACK_IMPORTED_MODULE_0__.c(res, This.silent), con.log("Update Succeeded"), resolve(); }); } "manga" == this.type && (watchCounter = ".add_manga[num_read_times]", rewatchText = "Reread Manga?", rewatchFinishText = "Finish rereading?"), this.getStatus() != status.completed || 1 !== this.getEpisode() || 1 === this.totalEp || 1 === this.getRewatching() ? this.getStatus() != status.completed || this.getEpisode() !== this.totalEp || 1 !== this.getRewatching() ? continueCall() : utils.flashConfirm(rewatchFinishText, "add", () => { this.setRewatching(0), "" === this.animeInfo[watchCounter] ? this.animeInfo[watchCounter] = 1 : this.animeInfo[watchCounter] = parseInt(this.animeInfo[watchCounter]) + 1, continueCall(); }, function() { continueCall(); }) : utils.flashConfirm(rewatchText, "add", () => { this.setRewatching(1), continueCall(); }, function() { continueCall(); }); }); } } }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(0), __webpack_require__(1)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(con, utils, api) { __webpack_require__.d(__webpack_exports__, "a", function() { return userList; }); var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); function userList(status = 1, localListType = "anime", callbacks, username = null, offset = 0, templist = []) { offset < 1 && (offset = 1); var callback, anilist = !1; if (status = parseInt(status.toString()), void 0 !== callbacks.anilist && (anilist = !0), con.log("[UserList][AniList]", "username: " + username, "status: " + status, "offset: " + offset), null == username) return callback = function(usernameTemp) { 0 == usernameTemp ? (utils.flashm("Please log in on <a target='_blank' href='https://myanimelist.net/login.php'>MyAnimeList!<a>"), void 0 !== callbacks.fullListCallback && callbacks.fullListCallback([]), void 0 !== callbacks.finishCallback && callbacks.finishCallback()) : userList(status, localListType, callbacks, usernameTemp, offset, templist); }, void api.request.xhr("POST", { url: "https://graphql.anilist.co", headers: { Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(), "Content-Type": "application/json", Accept: "application/json" }, data: JSON.stringify({ query: "\n query {\n Viewer {\n name\n id\n }\n }\n ", variables: [] }) }).then(response => { var res = JSON.parse(response.responseText); con.log(res), _helper__WEBPACK_IMPORTED_MODULE_0__.c(res), callback(res.data.Viewer.name); }); var query = "\n query ($page: Int, $userName: String, $type: MediaType, $status: MediaListStatus, $sort: [MediaListSort] ) {\n Page (page: $page, perPage: 100) {\n pageInfo {\n hasNextPage\n }\n mediaList (status: $status, type: $type, userName: $userName, sort: $sort) {\n status\n progress\n progressVolumes\n notes\n media {\n id\n idMal\n episodes\n chapters\n volumes\n averageScore\n coverImage{\n large\n }\n title {\n userPreferred\n }\n }\n }\n }\n }\n "; anilist && (query = "\n query ($page: Int, $userName: String, $type: MediaType, $status: MediaListStatus, $sort: [MediaListSort]) {\n Page (page: $page, perPage: 100) {\n pageInfo {\n hasNextPage\n }\n mediaList (status: $status, type: $type, userName: $userName, sort: $sort) {\n progress\n media {\n id\n idMal\n }\n }\n }\n }\n "); var variables = { page: offset, userName: username, type: localListType.toUpperCase(), status: _helper__WEBPACK_IMPORTED_MODULE_0__.d(parseInt(status.toString()), parseInt(status.toString())), sort: "UPDATED_TIME_DESC" }; 1 !== status && (variables.sort = null), api.request.xhr("POST", { url: "https://graphql.anilist.co", headers: { Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(), "Content-Type": "application/json", Accept: "application/json" }, data: JSON.stringify({ query: query, variables: variables }) }).then(response => { var res = JSON.parse(response.responseText); con.log(res), _helper__WEBPACK_IMPORTED_MODULE_0__.c(res); var data = res.data.Page.mediaList; if (data = anilist ? function(data, listType) { for (var newData = [], i = 0; i < data.length; i++) { var el = data[i]; newData.push({ malid: el.media.idMal, id: el.media.id, watchedEp: el.progress }); } return newData; }(data) : function(data, listType) { for (var newData = [], i = 0; i < data.length; i++) { var el = data[i]; if ("anime" === listType) var tempData = { id: el.media.idMal, type: listType, title: el.media.title.userPreferred, url: "https://myanimelist.net/" + listType + "/" + el.media.idMal + "/" + el.media.title.userPreferred, watchedEp: el.progress, totalEp: el.media.episodes, image: el.media.coverImage.large, tags: el.notes, airingState: el.anime_airing_status }; else var tempData = { id: el.media.idMal, type: listType, title: el.media.title.userPreferred, url: "https://myanimelist.net/" + listType + "/" + el.media.idMal + "/" + el.media.title.userPreferred, watchedEp: el.progress, totalEp: el.media.chapters, image: el.media.coverImage.large, tags: el.notes, airingState: el.anime_airing_status }; null == tempData.totalEp && (tempData.totalEp = 0), newData.push(tempData); } return newData; }(data, localListType), void 0 !== callbacks.singleCallback) { data.length || callbacks.singleCallback(!1, 0, 0); for (var i = 0; i < data.length; i++) callbacks.singleCallback(data[i], i + offset + 1, data.length + offset); } void 0 !== callbacks.fullListCallback && (templist = templist.concat(data)), res.data.Page.pageInfo.hasNextPage ? void 0 !== callbacks.continueCall ? callbacks.continueCall(function() { userList(status, localListType, callbacks, username, offset + 1, templist); }) : userList(status, localListType, callbacks, username, offset + 1, templist) : (void 0 !== callbacks.fullListCallback && callbacks.fullListCallback(templist), void 0 !== callbacks.finishCallback && callbacks.finishCallback()); }); } }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("div", [ _c("div", { staticClass: "icon material-icons", staticStyle: { "font-size": "16px", "line-height": "0", color: "#7f7f7f", "padding-bottom": "20px", "padding-left": "3px" }, style: this.tagStyle, attrs: { id: this.id } }, [ this._v("\n contact_support\n ") ]), this._v(" "), _c("div", { staticClass: "mdl-tooltip mdl-tooltip--large", class: this.directionClass, attrs: { for: this.id } }, [ this._t("default") ], 2) ]); }; render._withStripped = !0; var components_tooltipvue_type_script_lang_js_ = { data: function() { return { number: Math.floor(1e3 * Math.random() + 1) }; }, props: { direction: { type: String, default: "top" }, tagStyle: { type: String, default: "" } }, computed: { id: function() { return "tt-" + this.number; }, directionClass: function() { return "mdl-tooltip--" + this.direction; } } }, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(components_tooltipvue_type_script_lang_js_, render, [], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/components/tooltip.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("div", [ _c("div", { directives: [ { name: "show", rawName: "v-show", value: _vm.loading, expression: "loading" } ], staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate", staticStyle: { width: "100%", position: "absolute" }, attrs: { id: "loadMalSearchPop" } }), _vm._v(" "), _vm._t("default"), _vm._v(" "), _c("div", { staticClass: "mdl-grid" }, [ _vm.loading || _vm.items.length ? _vm._e() : _c("span", { staticClass: "mdl-chip", staticStyle: { margin: "auto", "margin-top": "16px", display: "table" } }, [ _c("span", { staticClass: "mdl-chip__text" }, [ _vm._v("No Entries") ]) ]), _vm._v(" "), _vm._l(_vm.items, function(item) { return _c("a", { key: item.id, staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--2dp mdl-grid searchItem", staticStyle: { cursor: "pointer" }, attrs: { href: item.url } }, [ _c("img", { staticStyle: { margin: "-8px 0px -8px -8px", height: "100px", width: "64px", "background-color": "grey" }, attrs: { src: item.image_url } }), _vm._v(" "), _c("div", { staticClass: "mdl-cell", staticStyle: { "flex-grow": "100", cursor: "pointer", "margin-top": "0", "margin-bottom": "0" } }, [ _c("span", { staticStyle: { "font-size": "20px", "font-weight": "400", "line-height": "1" } }, [ _vm._v(_vm._s(item.name)) ]), _vm._v(" "), _c("p", { staticStyle: { "margin-bottom": "0", "line-height": "20px", "padding-top": "3px" } }, [ _vm._v("Type: " + _vm._s(item.payload.media_type)) ]), _vm._v(" "), _c("p", { staticStyle: { "margin-bottom": "0", "line-height": "20px" } }, [ _vm._v("Score: " + _vm._s(item.payload.score)) ]), _vm._v(" "), _c("p", { staticStyle: { "margin-bottom": "0", "line-height": "20px" } }, [ _vm._v("Year: " + _vm._s(item.payload.start_year)) ]) ]) ]); }) ], 2) ], 2); }; render._withStripped = !0; var minimalApp_searchvue_type_script_lang_js_ = __webpack_require__(16).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(minimalApp_searchvue_type_script_lang_js_, render, [], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/search.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("div", { staticClass: "mdl-cell mdl-cell--2-col mdl-cell--4-col-tablet mdl-cell--6-col-phone mdl-shadow--2dp mdl-grid bookEntry", staticStyle: { position: "relative", height: "293px", padding: "0", width: "210px" }, attrs: { title: _vm.prediction && _vm.prediction.text } }, [ _c("div", { staticClass: "data title", staticStyle: { "background-color": "#cdcdcd", width: "100%", position: "relative", "padding-top": "5px" } }, [ _c("div", { staticStyle: { position: "absolute", top: "0", left: "0", right: "0", bottom: "0", overflow: "hidden" } }, [ _c("clazy-load", { staticStyle: { position: "absolute", top: "0", left: "0", right: "0", bottom: "0", overflow: "hidden" }, attrs: { src: _vm.imageHi, margin: "200px 0px", threshold: .1, ratio: .1 } }, [ _c("img", { attrs: { src: _vm.imageHi, width: "100%" } }) ]) ], 1), _vm._v(" "), _vm.prediction && _vm.prediction.text ? _c("div", { staticClass: "mdl-shadow--2dp", staticStyle: { position: "absolute", top: "0", right: "0", "background-color": "rgba(255, 255, 255, 0.9)", padding: "0px 5px", margin: "5px 0", "text-align": "center" } }, [ _vm._v("\n " + _vm._s(_vm.preTexter) + "\n ") ]) : _vm._e(), _vm._v(" "), _c("a", { staticStyle: { position: "absolute", top: "0", left: "0", right: "0", bottom: "0" }, attrs: { href: _vm.item.url } }), _vm._v(" "), _c("span", { staticClass: "mdl-shadow--2dp", staticStyle: { position: "absolute", bottom: "0", display: "inline-flex", "background-color": "rgba(255, 255, 255, 0.9)", "padding-top": "5px", "align-items": "center", "justify-content": "space-between", left: "0", right: "0", "padding-right": "8px", "padding-left": "8px", "padding-bottom": "8px" } }, [ _c("a", { staticStyle: { color: "black", "text-decoration": "none" }, attrs: { href: _vm.item.url } }, [ _vm._v("\n " + _vm._s(_vm.item.title) + "\n ") ]), _vm._v(" "), _c("div", { staticClass: "mdl-progress", staticStyle: { position: "absolute", top: "-4px", left: "0" }, attrs: { id: "p1" } }, [ _c("div", { staticClass: "progressbar bar bar1", style: _vm.progress }), _vm._v(" "), _vm.hasTotalEp ? _c("div", { staticClass: "bufferbar bar bar2", staticStyle: { width: "calc(100% + 1px)" } }) : _vm._e(), _vm._v(" "), _vm.prediction && _vm.prediction.tagEpisode ? _c("div", { staticClass: "predictionbar bar kal-ep-pre", style: _vm.predictionBar }) : _vm._e(), _vm._v(" "), _c("div", { staticClass: "auxbar bar bar3", staticStyle: { width: "0%" } }) ]), _vm._v(" "), _c("div", { staticClass: "data progress mdl-chip mdl-chip--contact mdl-color--indigo-100", staticStyle: { float: "right", "line-height": "20px", height: "20px", "padding-right": "4px", "margin-left": "5px" } }, [ _c("div", { staticClass: "link mdl-chip__contact mdl-color--primary mdl-color-text--white", staticStyle: { "line-height": "20px", height: "20px", "margin-right": "0" } }, [ _vm._v(_vm._s(_vm.item.watchedEp)) ]), _vm._v(" "), _vm.streamUrl ? _c("a", { staticClass: "mal-sync-stream", staticStyle: { margin: "0 5px" }, attrs: { title: _vm.streamUrl.split("/")[2], target: "_blank", href: _vm.streamUrl } }, [ _c("img", { attrs: { src: _vm.favicon(_vm.streamUrl.split("/")[2]) } }) ]) : _vm._e(), _vm._v(" "), _vm.continueUrl ? _c("a", { staticClass: "nextStream", staticStyle: { margin: "0 5px 0 0", color: "#BABABA" }, attrs: { title: "Continue watching", target: "_blank", href: _vm.continueUrl } }, [ _c("img", { attrs: { src: _vm.assetUrl("double-arrow-16px.png"), width: "16", height: "16" } }) ]) : _vm._e(), _vm._v(" "), _vm.resumeUrl ? _c("a", { staticClass: "resumeStream", staticStyle: { margin: "0 5px 0 0", color: "#BABABA" }, attrs: { title: "Resume watching", target: "_blank", href: _vm.resumeUrl } }, [ _c("img", { attrs: { src: _vm.assetUrl("arrow-16px.png"), width: "16", height: "16" } }) ]) : _vm._e() ]) ]) ]) ]); }; render._withStripped = !0; var minimalApp_bookmarksItemvue_type_script_lang_js_ = __webpack_require__(17).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(minimalApp_bookmarksItemvue_type_script_lang_js_, render, [], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/bookmarksItem.vue"; __webpack_exports__.a = component.exports; }, function(module, exports) { var g; g = function() { return this; }(); try { g = g || new Function("return this")(); } catch (e) { "object" == typeof window && (g = window); } module.exports = g; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(global, setImmediate) { var emptyObject = Object.freeze({}); function isUndef(v) { return null == v; } function isDef(v) { return null != v; } function isTrue(v) { return !0 === v; } function isPrimitive(value) { return "string" == typeof value || "number" == typeof value || "symbol" == typeof value || "boolean" == typeof value; } function isObject(obj) { return null !== obj && "object" == typeof obj; } var _toString = Object.prototype.toString; function isPlainObject(obj) { return "[object Object]" === _toString.call(obj); } function isRegExp(v) { return "[object RegExp]" === _toString.call(v); } function isValidArrayIndex(val) { var n = parseFloat(String(val)); return n >= 0 && Math.floor(n) === n && isFinite(val); } function isPromise(val) { return isDef(val) && "function" == typeof val.then && "function" == typeof val.catch; } function toString(val) { return null == val ? "" : Array.isArray(val) || isPlainObject(val) && val.toString === _toString ? JSON.stringify(val, null, 2) : String(val); } function toNumber(val) { var n = parseFloat(val); return isNaN(n) ? val : n; } function makeMap(str, expectsLowerCase) { for (var map = Object.create(null), list = str.split(","), i = 0; i < list.length; i++) map[list[i]] = !0; return expectsLowerCase ? function(val) { return map[val.toLowerCase()]; } : function(val) { return map[val]; }; } makeMap("slot,component", !0); var isReservedAttribute = makeMap("key,ref,slot,slot-scope,is"); function remove(arr, item) { if (arr.length) { var index = arr.indexOf(item); if (index > -1) return arr.splice(index, 1); } } var hasOwnProperty = Object.prototype.hasOwnProperty; function hasOwn(obj, key) { return hasOwnProperty.call(obj, key); } function cached(fn) { var cache = Object.create(null); return function(str) { return cache[str] || (cache[str] = fn(str)); }; } var camelizeRE = /-(\w)/g, camelize = cached(function(str) { return str.replace(camelizeRE, function(_, c) { return c ? c.toUpperCase() : ""; }); }), capitalize = cached(function(str) { return str.charAt(0).toUpperCase() + str.slice(1); }), hyphenateRE = /\B([A-Z])/g, hyphenate = cached(function(str) { return str.replace(hyphenateRE, "-$1").toLowerCase(); }); var bind = Function.prototype.bind ? function(fn, ctx) { return fn.bind(ctx); } : function(fn, ctx) { function boundFn(a) { var l = arguments.length; return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx); } return boundFn._length = fn.length, boundFn; }; function toArray(list, start) { start = start || 0; for (var i = list.length - start, ret = new Array(i); i--; ) ret[i] = list[i + start]; return ret; } function extend(to, _from) { for (var key in _from) to[key] = _from[key]; return to; } function toObject(arr) { for (var res = {}, i = 0; i < arr.length; i++) arr[i] && extend(res, arr[i]); return res; } function noop(a, b, c) {} var no = function(a, b, c) { return !1; }, identity = function(_) { return _; }; function looseEqual(a, b) { if (a === b) return !0; var isObjectA = isObject(a), isObjectB = isObject(b); if (!isObjectA || !isObjectB) return !isObjectA && !isObjectB && String(a) === String(b); try { var isArrayA = Array.isArray(a), isArrayB = Array.isArray(b); if (isArrayA && isArrayB) return a.length === b.length && a.every(function(e, i) { return looseEqual(e, b[i]); }); if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime(); if (isArrayA || isArrayB) return !1; var keysA = Object.keys(a), keysB = Object.keys(b); return keysA.length === keysB.length && keysA.every(function(key) { return looseEqual(a[key], b[key]); }); } catch (e) { return !1; } } function looseIndexOf(arr, val) { for (var i = 0; i < arr.length; i++) if (looseEqual(arr[i], val)) return i; return -1; } function once(fn) { var called = !1; return function() { called || (called = !0, fn.apply(this, arguments)); }; } var SSR_ATTR = "data-server-rendered", ASSET_TYPES = [ "component", "directive", "filter" ], LIFECYCLE_HOOKS = [ "beforeCreate", "created", "beforeMount", "mounted", "beforeUpdate", "updated", "beforeDestroy", "destroyed", "activated", "deactivated", "errorCaptured", "serverPrefetch" ], config = { optionMergeStrategies: Object.create(null), silent: !1, productionTip: !1, devtools: !1, performance: !1, errorHandler: null, warnHandler: null, ignoredElements: [], keyCodes: Object.create(null), isReservedTag: no, isReservedAttr: no, isUnknownElement: no, getTagNamespace: noop, parsePlatformTagName: identity, mustUseProp: no, async: !0, _lifecycleHooks: LIFECYCLE_HOOKS }, unicodeLetters = "a-zA-Z·À-ÖØ-öø-ͽͿ--‿-⁀⁰-Ⰰ-、-豈-﷏ﷰ-�"; function def(obj, key, val, enumerable) { Object.defineProperty(obj, key, { value: val, enumerable: !!enumerable, writable: !0, configurable: !0 }); } var bailRE = new RegExp("[^" + unicodeLetters + ".$_\\d]"); var _isServer, hasProto = "__proto__" in {}, inBrowser = "undefined" != typeof window, inWeex = "undefined" != typeof WXEnvironment && !!WXEnvironment.platform, weexPlatform = inWeex && WXEnvironment.platform.toLowerCase(), UA = inBrowser && window.navigator.userAgent.toLowerCase(), isIE = UA && /msie|trident/.test(UA), isIE9 = UA && UA.indexOf("msie 9.0") > 0, isEdge = UA && UA.indexOf("edge/") > 0, isIOS = (UA && UA.indexOf("android"), UA && /iphone|ipad|ipod|ios/.test(UA) || "ios" === weexPlatform), isFF = (UA && /chrome\/\d+/.test(UA), UA && /phantomjs/.test(UA), UA && UA.match(/firefox\/(\d+)/)), nativeWatch = {}.watch, supportsPassive = !1; if (inBrowser) try { var opts = {}; Object.defineProperty(opts, "passive", { get: function() { supportsPassive = !0; } }), window.addEventListener("test-passive", null, opts); } catch (e) {} var isServerRendering = function() { return void 0 === _isServer && (_isServer = !inBrowser && !inWeex && void 0 !== global && (global.process && "server" === global.process.env.VUE_ENV)), _isServer; }, devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; function isNative(Ctor) { return "function" == typeof Ctor && /native code/.test(Ctor.toString()); } var _Set, hasSymbol = "undefined" != typeof Symbol && isNative(Symbol) && "undefined" != typeof Reflect && isNative(Reflect.ownKeys); _Set = "undefined" != typeof Set && isNative(Set) ? Set : function() { function Set() { this.set = Object.create(null); } return Set.prototype.has = function(key) { return !0 === this.set[key]; }, Set.prototype.add = function(key) { this.set[key] = !0; }, Set.prototype.clear = function() { this.set = Object.create(null); }, Set; }(); var warn = noop, uid = 0, Dep = function() { this.id = uid++, this.subs = []; }; Dep.prototype.addSub = function(sub) { this.subs.push(sub); }, Dep.prototype.removeSub = function(sub) { remove(this.subs, sub); }, Dep.prototype.depend = function() { Dep.target && Dep.target.addDep(this); }, Dep.prototype.notify = function() { var subs = this.subs.slice(); for (var i = 0, l = subs.length; i < l; i++) subs[i].update(); }, Dep.target = null; var targetStack = []; function pushTarget(target) { targetStack.push(target), Dep.target = target; } function popTarget() { targetStack.pop(), Dep.target = targetStack[targetStack.length - 1]; } var VNode = function(tag, data, children, text, elm, context, componentOptions, asyncFactory) { this.tag = tag, this.data = data, this.children = children, this.text = text, this.elm = elm, this.ns = void 0, this.context = context, this.fnContext = void 0, this.fnOptions = void 0, this.fnScopeId = void 0, this.key = data && data.key, this.componentOptions = componentOptions, this.componentInstance = void 0, this.parent = void 0, this.raw = !1, this.isStatic = !1, this.isRootInsert = !0, this.isComment = !1, this.isCloned = !1, this.isOnce = !1, this.asyncFactory = asyncFactory, this.asyncMeta = void 0, this.isAsyncPlaceholder = !1; }, prototypeAccessors = { child: { configurable: !0 } }; prototypeAccessors.child.get = function() { return this.componentInstance; }, Object.defineProperties(VNode.prototype, prototypeAccessors); var createEmptyVNode = function(text) { void 0 === text && (text = ""); var node = new VNode(); return node.text = text, node.isComment = !0, node; }; function createTextVNode(val) { return new VNode(void 0, void 0, void 0, String(val)); } function cloneVNode(vnode) { var cloned = new VNode(vnode.tag, vnode.data, vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory); return cloned.ns = vnode.ns, cloned.isStatic = vnode.isStatic, cloned.key = vnode.key, cloned.isComment = vnode.isComment, cloned.fnContext = vnode.fnContext, cloned.fnOptions = vnode.fnOptions, cloned.fnScopeId = vnode.fnScopeId, cloned.asyncMeta = vnode.asyncMeta, cloned.isCloned = !0, cloned; } var arrayProto = Array.prototype, arrayMethods = Object.create(arrayProto); [ "push", "pop", "shift", "unshift", "splice", "sort", "reverse" ].forEach(function(method) { var original = arrayProto[method]; def(arrayMethods, method, function() { for (var args = [], len = arguments.length; len--; ) args[len] = arguments[len]; var inserted, result = original.apply(this, args), ob = this.__ob__; switch (method) { case "push": case "unshift": inserted = args; break; case "splice": inserted = args.slice(2); } return inserted && ob.observeArray(inserted), ob.dep.notify(), result; }); }); var arrayKeys = Object.getOwnPropertyNames(arrayMethods), shouldObserve = !0; function toggleObserving(value) { shouldObserve = value; } var Observer = function(value) { var src; this.value = value, this.dep = new Dep(), this.vmCount = 0, def(value, "__ob__", this), Array.isArray(value) ? (hasProto ? (src = arrayMethods, value.__proto__ = src) : function(target, src, keys) { for (var i = 0, l = keys.length; i < l; i++) { var key = keys[i]; def(target, key, src[key]); } }(value, arrayMethods, arrayKeys), this.observeArray(value)) : this.walk(value); }; function observe(value, asRootData) { var ob; if (isObject(value) && !(value instanceof VNode)) return hasOwn(value, "__ob__") && value.__ob__ instanceof Observer ? ob = value.__ob__ : shouldObserve && !isServerRendering() && (Array.isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue && (ob = new Observer(value)), asRootData && ob && ob.vmCount++, ob; } function defineReactive$$1(obj, key, val, customSetter, shallow) { var dep = new Dep(), property = Object.getOwnPropertyDescriptor(obj, key); if (!property || !1 !== property.configurable) { var getter = property && property.get, setter = property && property.set; getter && !setter || 2 !== arguments.length || (val = obj[key]); var childOb = !shallow && observe(val); Object.defineProperty(obj, key, { enumerable: !0, configurable: !0, get: function() { var value = getter ? getter.call(obj) : val; return Dep.target && (dep.depend(), childOb && (childOb.dep.depend(), Array.isArray(value) && function dependArray(value) { for (var e = void 0, i = 0, l = value.length; i < l; i++) (e = value[i]) && e.__ob__ && e.__ob__.dep.depend(), Array.isArray(e) && dependArray(e); }(value))), value; }, set: function(newVal) { var value = getter ? getter.call(obj) : val; newVal === value || newVal != newVal && value != value || getter && !setter || (setter ? setter.call(obj, newVal) : val = newVal, childOb = !shallow && observe(newVal), dep.notify()); } }); } } function set(target, key, val) { if (Array.isArray(target) && isValidArrayIndex(key)) return target.length = Math.max(target.length, key), target.splice(key, 1, val), val; if (key in target && !(key in Object.prototype)) return target[key] = val, val; var ob = target.__ob__; return target._isVue || ob && ob.vmCount ? val : ob ? (defineReactive$$1(ob.value, key, val), ob.dep.notify(), val) : (target[key] = val, val); } function del(target, key) { if (Array.isArray(target) && isValidArrayIndex(key)) target.splice(key, 1); else { var ob = target.__ob__; target._isVue || ob && ob.vmCount || hasOwn(target, key) && (delete target[key], ob && ob.dep.notify()); } } Observer.prototype.walk = function(obj) { for (var keys = Object.keys(obj), i = 0; i < keys.length; i++) defineReactive$$1(obj, keys[i]); }, Observer.prototype.observeArray = function(items) { for (var i = 0, l = items.length; i < l; i++) observe(items[i]); }; var strats = config.optionMergeStrategies; function mergeData(to, from) { if (!from) return to; for (var key, toVal, fromVal, keys = hasSymbol ? Reflect.ownKeys(from) : Object.keys(from), i = 0; i < keys.length; i++) "__ob__" !== (key = keys[i]) && (toVal = to[key], fromVal = from[key], hasOwn(to, key) ? toVal !== fromVal && isPlainObject(toVal) && isPlainObject(fromVal) && mergeData(toVal, fromVal) : set(to, key, fromVal)); return to; } function mergeDataOrFn(parentVal, childVal, vm) { return vm ? function() { var instanceData = "function" == typeof childVal ? childVal.call(vm, vm) : childVal, defaultData = "function" == typeof parentVal ? parentVal.call(vm, vm) : parentVal; return instanceData ? mergeData(instanceData, defaultData) : defaultData; } : childVal ? parentVal ? function() { return mergeData("function" == typeof childVal ? childVal.call(this, this) : childVal, "function" == typeof parentVal ? parentVal.call(this, this) : parentVal); } : childVal : parentVal; } function mergeHook(parentVal, childVal) { var res = childVal ? parentVal ? parentVal.concat(childVal) : Array.isArray(childVal) ? childVal : [ childVal ] : parentVal; return res ? function(hooks) { for (var res = [], i = 0; i < hooks.length; i++) -1 === res.indexOf(hooks[i]) && res.push(hooks[i]); return res; }(res) : res; } function mergeAssets(parentVal, childVal, vm, key) { var res = Object.create(parentVal || null); return childVal ? extend(res, childVal) : res; } strats.data = function(parentVal, childVal, vm) { return vm ? mergeDataOrFn(parentVal, childVal, vm) : childVal && "function" != typeof childVal ? parentVal : mergeDataOrFn(parentVal, childVal); }, LIFECYCLE_HOOKS.forEach(function(hook) { strats[hook] = mergeHook; }), ASSET_TYPES.forEach(function(type) { strats[type + "s"] = mergeAssets; }), strats.watch = function(parentVal, childVal, vm, key) { if (parentVal === nativeWatch && (parentVal = void 0), childVal === nativeWatch && (childVal = void 0), !childVal) return Object.create(parentVal || null); if (!parentVal) return childVal; var ret = {}; for (var key$1 in extend(ret, parentVal), childVal) { var parent = ret[key$1], child = childVal[key$1]; parent && !Array.isArray(parent) && (parent = [ parent ]), ret[key$1] = parent ? parent.concat(child) : Array.isArray(child) ? child : [ child ]; } return ret; }, strats.props = strats.methods = strats.inject = strats.computed = function(parentVal, childVal, vm, key) { if (!parentVal) return childVal; var ret = Object.create(null); return extend(ret, parentVal), childVal && extend(ret, childVal), ret; }, strats.provide = mergeDataOrFn; var defaultStrat = function(parentVal, childVal) { return void 0 === childVal ? parentVal : childVal; }; function mergeOptions(parent, child, vm) { if ("function" == typeof child && (child = child.options), function(options, vm) { var props = options.props; if (props) { var i, val, res = {}; if (Array.isArray(props)) for (i = props.length; i--; ) "string" == typeof (val = props[i]) && (res[camelize(val)] = { type: null }); else if (isPlainObject(props)) for (var key in props) val = props[key], res[camelize(key)] = isPlainObject(val) ? val : { type: val }; options.props = res; } }(child), function(options, vm) { var inject = options.inject; if (inject) { var normalized = options.inject = {}; if (Array.isArray(inject)) for (var i = 0; i < inject.length; i++) normalized[inject[i]] = { from: inject[i] }; else if (isPlainObject(inject)) for (var key in inject) { var val = inject[key]; normalized[key] = isPlainObject(val) ? extend({ from: key }, val) : { from: val }; } } }(child), function(options) { var dirs = options.directives; if (dirs) for (var key in dirs) { var def$$1 = dirs[key]; "function" == typeof def$$1 && (dirs[key] = { bind: def$$1, update: def$$1 }); } }(child), !child._base && (child.extends && (parent = mergeOptions(parent, child.extends, vm)), child.mixins)) for (var i = 0, l = child.mixins.length; i < l; i++) parent = mergeOptions(parent, child.mixins[i], vm); var key, options = {}; for (key in parent) mergeField(key); for (key in child) hasOwn(parent, key) || mergeField(key); function mergeField(key) { var strat = strats[key] || defaultStrat; options[key] = strat(parent[key], child[key], vm, key); } return options; } function resolveAsset(options, type, id, warnMissing) { if ("string" == typeof id) { var assets = options[type]; if (hasOwn(assets, id)) return assets[id]; var camelizedId = camelize(id); if (hasOwn(assets, camelizedId)) return assets[camelizedId]; var PascalCaseId = capitalize(camelizedId); return hasOwn(assets, PascalCaseId) ? assets[PascalCaseId] : assets[id] || assets[camelizedId] || assets[PascalCaseId]; } } function validateProp(key, propOptions, propsData, vm) { var prop = propOptions[key], absent = !hasOwn(propsData, key), value = propsData[key], booleanIndex = getTypeIndex(Boolean, prop.type); if (booleanIndex > -1) if (absent && !hasOwn(prop, "default")) value = !1; else if ("" === value || value === hyphenate(key)) { var stringIndex = getTypeIndex(String, prop.type); (stringIndex < 0 || booleanIndex < stringIndex) && (value = !0); } if (void 0 === value) { value = function(vm, prop, key) { if (!hasOwn(prop, "default")) return; var def = prop.default; 0; if (vm && vm.$options.propsData && void 0 === vm.$options.propsData[key] && void 0 !== vm._props[key]) return vm._props[key]; return "function" == typeof def && "Function" !== getType(prop.type) ? def.call(vm) : def; }(vm, prop, key); var prevShouldObserve = shouldObserve; toggleObserving(!0), observe(value), toggleObserving(prevShouldObserve); } return value; } function getType(fn) { var match = fn && fn.toString().match(/^\s*function (\w+)/); return match ? match[1] : ""; } function isSameType(a, b) { return getType(a) === getType(b); } function getTypeIndex(type, expectedTypes) { if (!Array.isArray(expectedTypes)) return isSameType(expectedTypes, type) ? 0 : -1; for (var i = 0, len = expectedTypes.length; i < len; i++) if (isSameType(expectedTypes[i], type)) return i; return -1; } function handleError(err, vm, info) { if (vm) for (var cur = vm; cur = cur.$parent; ) { var hooks = cur.$options.errorCaptured; if (hooks) for (var i = 0; i < hooks.length; i++) try { if (!1 === hooks[i].call(cur, err, vm, info)) return; } catch (e) { globalHandleError(e, cur, "errorCaptured hook"); } } globalHandleError(err, vm, info); } function invokeWithErrorHandling(handler, context, args, vm, info) { var res; try { (res = args ? handler.apply(context, args) : handler.call(context)) && !res._isVue && isPromise(res) && res.catch(function(e) { return handleError(e, vm, info + " (Promise/async)"); }); } catch (e) { handleError(e, vm, info); } return res; } function globalHandleError(err, vm, info) { if (config.errorHandler) try { return config.errorHandler.call(null, err, vm, info); } catch (e) { e !== err && logError(e, null, "config.errorHandler"); } logError(err, vm, info); } function logError(err, vm, info) { if (!inBrowser && !inWeex || "undefined" == typeof console) throw err; console.error(err); } var timerFunc, isUsingMicroTask = !1, callbacks = [], pending = !1; function flushCallbacks() { pending = !1; var copies = callbacks.slice(0); callbacks.length = 0; for (var i = 0; i < copies.length; i++) copies[i](); } if ("undefined" != typeof Promise && isNative(Promise)) { var p = Promise.resolve(); timerFunc = function() { p.then(flushCallbacks), isIOS && setTimeout(noop); }, isUsingMicroTask = !0; } else if (isIE || "undefined" == typeof MutationObserver || !isNative(MutationObserver) && "[object MutationObserverConstructor]" !== MutationObserver.toString()) timerFunc = void 0 !== setImmediate && isNative(setImmediate) ? function() { setImmediate(flushCallbacks); } : function() { setTimeout(flushCallbacks, 0); }; else { var counter = 1, observer = new MutationObserver(flushCallbacks), textNode = document.createTextNode(String(counter)); observer.observe(textNode, { characterData: !0 }), timerFunc = function() { counter = (counter + 1) % 2, textNode.data = String(counter); }, isUsingMicroTask = !0; } function nextTick(cb, ctx) { var _resolve; if (callbacks.push(function() { if (cb) try { cb.call(ctx); } catch (e) { handleError(e, ctx, "nextTick"); } else _resolve && _resolve(ctx); }), pending || (pending = !0, timerFunc()), !cb && "undefined" != typeof Promise) return new Promise(function(resolve) { _resolve = resolve; }); } var seenObjects = new _Set(); function traverse(val) { !function _traverse(val, seen) { var i, keys; var isA = Array.isArray(val); if (!isA && !isObject(val) || Object.isFrozen(val) || val instanceof VNode) return; if (val.__ob__) { var depId = val.__ob__.dep.id; if (seen.has(depId)) return; seen.add(depId); } if (isA) for (i = val.length; i--; ) _traverse(val[i], seen); else for (keys = Object.keys(val), i = keys.length; i--; ) _traverse(val[keys[i]], seen); }(val, seenObjects), seenObjects.clear(); } var normalizeEvent = cached(function(name) { var passive = "&" === name.charAt(0), once$$1 = "~" === (name = passive ? name.slice(1) : name).charAt(0), capture = "!" === (name = once$$1 ? name.slice(1) : name).charAt(0); return { name: name = capture ? name.slice(1) : name, once: once$$1, capture: capture, passive: passive }; }); function createFnInvoker(fns, vm) { function invoker() { var arguments$1 = arguments, fns = invoker.fns; if (!Array.isArray(fns)) return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler"); for (var cloned = fns.slice(), i = 0; i < cloned.length; i++) invokeWithErrorHandling(cloned[i], null, arguments$1, vm, "v-on handler"); } return invoker.fns = fns, invoker; } function updateListeners(on, oldOn, add, remove$$1, createOnceHandler, vm) { var name, cur, old, event; for (name in on) cur = on[name], old = oldOn[name], event = normalizeEvent(name), isUndef(cur) || (isUndef(old) ? (isUndef(cur.fns) && (cur = on[name] = createFnInvoker(cur, vm)), isTrue(event.once) && (cur = on[name] = createOnceHandler(event.name, cur, event.capture)), add(event.name, cur, event.capture, event.passive, event.params)) : cur !== old && (old.fns = cur, on[name] = old)); for (name in oldOn) isUndef(on[name]) && remove$$1((event = normalizeEvent(name)).name, oldOn[name], event.capture); } function mergeVNodeHook(def, hookKey, hook) { var invoker; def instanceof VNode && (def = def.data.hook || (def.data.hook = {})); var oldHook = def[hookKey]; function wrappedHook() { hook.apply(this, arguments), remove(invoker.fns, wrappedHook); } isUndef(oldHook) ? invoker = createFnInvoker([ wrappedHook ]) : isDef(oldHook.fns) && isTrue(oldHook.merged) ? (invoker = oldHook).fns.push(wrappedHook) : invoker = createFnInvoker([ oldHook, wrappedHook ]), invoker.merged = !0, def[hookKey] = invoker; } function checkProp(res, hash, key, altKey, preserve) { if (isDef(hash)) { if (hasOwn(hash, key)) return res[key] = hash[key], preserve || delete hash[key], !0; if (hasOwn(hash, altKey)) return res[key] = hash[altKey], preserve || delete hash[altKey], !0; } return !1; } function normalizeChildren(children) { return isPrimitive(children) ? [ createTextVNode(children) ] : Array.isArray(children) ? function normalizeArrayChildren(children, nestedIndex) { var res = []; var i, c, lastIndex, last; for (i = 0; i < children.length; i++) isUndef(c = children[i]) || "boolean" == typeof c || (lastIndex = res.length - 1, last = res[lastIndex], Array.isArray(c) ? c.length > 0 && (isTextNode((c = normalizeArrayChildren(c, (nestedIndex || "") + "_" + i))[0]) && isTextNode(last) && (res[lastIndex] = createTextVNode(last.text + c[0].text), c.shift()), res.push.apply(res, c)) : isPrimitive(c) ? isTextNode(last) ? res[lastIndex] = createTextVNode(last.text + c) : "" !== c && res.push(createTextVNode(c)) : isTextNode(c) && isTextNode(last) ? res[lastIndex] = createTextVNode(last.text + c.text) : (isTrue(children._isVList) && isDef(c.tag) && isUndef(c.key) && isDef(nestedIndex) && (c.key = "__vlist" + nestedIndex + "_" + i + "__"), res.push(c))); return res; }(children) : void 0; } function isTextNode(node) { return isDef(node) && isDef(node.text) && !1 === node.isComment; } function resolveInject(inject, vm) { if (inject) { for (var result = Object.create(null), keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject), i = 0; i < keys.length; i++) { var key = keys[i]; if ("__ob__" !== key) { for (var provideKey = inject[key].from, source = vm; source; ) { if (source._provided && hasOwn(source._provided, provideKey)) { result[key] = source._provided[provideKey]; break; } source = source.$parent; } if (!source) if ("default" in inject[key]) { var provideDefault = inject[key].default; result[key] = "function" == typeof provideDefault ? provideDefault.call(vm) : provideDefault; } else 0; } } return result; } } function resolveSlots(children, context) { if (!children || !children.length) return {}; for (var slots = {}, i = 0, l = children.length; i < l; i++) { var child = children[i], data = child.data; if (data && data.attrs && data.attrs.slot && delete data.attrs.slot, child.context !== context && child.fnContext !== context || !data || null == data.slot) (slots.default || (slots.default = [])).push(child); else { var name = data.slot, slot = slots[name] || (slots[name] = []); "template" === child.tag ? slot.push.apply(slot, child.children || []) : slot.push(child); } } for (var name$1 in slots) slots[name$1].every(isWhitespace) && delete slots[name$1]; return slots; } function isWhitespace(node) { return node.isComment && !node.asyncFactory || " " === node.text; } function normalizeScopedSlots(slots, normalSlots, prevSlots) { var res; if (slots) { if (slots._normalized) return slots._normalized; if (slots.$stable && prevSlots && prevSlots !== emptyObject && 0 === Object.keys(normalSlots).length) return prevSlots; for (var key in res = {}, slots) slots[key] && "$" !== key[0] && (res[key] = normalizeScopedSlot(normalSlots, key, slots[key])); } else res = {}; for (var key$1 in normalSlots) key$1 in res || (res[key$1] = proxyNormalSlot(normalSlots, key$1)); return slots && Object.isExtensible(slots) && (slots._normalized = res), def(res, "$stable", !slots || !!slots.$stable), res; } function normalizeScopedSlot(normalSlots, key, fn) { var normalized = function() { var res = arguments.length ? fn.apply(null, arguments) : fn({}); return (res = res && "object" == typeof res && !Array.isArray(res) ? [ res ] : normalizeChildren(res)) && 0 === res.length ? void 0 : res; }; return fn.proxy && Object.defineProperty(normalSlots, key, { get: normalized, enumerable: !0, configurable: !0 }), normalized; } function proxyNormalSlot(slots, key) { return function() { return slots[key]; }; } function renderList(val, render) { var ret, i, l, keys, key; if (Array.isArray(val) || "string" == typeof val) for (ret = new Array(val.length), i = 0, l = val.length; i < l; i++) ret[i] = render(val[i], i); else if ("number" == typeof val) for (ret = new Array(val), i = 0; i < val; i++) ret[i] = render(i + 1, i); else if (isObject(val)) if (hasSymbol && val[Symbol.iterator]) { ret = []; for (var iterator = val[Symbol.iterator](), result = iterator.next(); !result.done; ) ret.push(render(result.value, ret.length)), result = iterator.next(); } else for (keys = Object.keys(val), ret = new Array(keys.length), i = 0, l = keys.length; i < l; i++) key = keys[i], ret[i] = render(val[key], key, i); return isDef(ret) || (ret = []), ret._isVList = !0, ret; } function renderSlot(name, fallback, props, bindObject) { var nodes, scopedSlotFn = this.$scopedSlots[name]; scopedSlotFn ? (props = props || {}, bindObject && (props = extend(extend({}, bindObject), props)), nodes = scopedSlotFn(props) || fallback) : nodes = this.$slots[name] || fallback; var target = props && props.slot; return target ? this.$createElement("template", { slot: target }, nodes) : nodes; } function resolveFilter(id) { return resolveAsset(this.$options, "filters", id) || identity; } function isKeyNotMatch(expect, actual) { return Array.isArray(expect) ? -1 === expect.indexOf(actual) : expect !== actual; } function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) { var mappedKeyCode = config.keyCodes[key] || builtInKeyCode; return builtInKeyName && eventKeyName && !config.keyCodes[key] ? isKeyNotMatch(builtInKeyName, eventKeyName) : mappedKeyCode ? isKeyNotMatch(mappedKeyCode, eventKeyCode) : eventKeyName ? hyphenate(eventKeyName) !== key : void 0; } function bindObjectProps(data, tag, value, asProp, isSync) { if (value) if (isObject(value)) { var hash; Array.isArray(value) && (value = toObject(value)); var loop = function(key) { if ("class" === key || "style" === key || isReservedAttribute(key)) hash = data; else { var type = data.attrs && data.attrs.type; hash = asProp || config.mustUseProp(tag, type, key) ? data.domProps || (data.domProps = {}) : data.attrs || (data.attrs = {}); } var camelizedKey = camelize(key); key in hash || camelizedKey in hash || (hash[key] = value[key], isSync && ((data.on || (data.on = {}))["update:" + camelizedKey] = function($event) { value[key] = $event; })); }; for (var key in value) loop(key); } else ; return data; } function renderStatic(index, isInFor) { var cached = this._staticTrees || (this._staticTrees = []), tree = cached[index]; return tree && !isInFor ? tree : (markStatic(tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, null, this), "__static__" + index, !1), tree); } function markOnce(tree, index, key) { return markStatic(tree, "__once__" + index + (key ? "_" + key : ""), !0), tree; } function markStatic(tree, key, isOnce) { if (Array.isArray(tree)) for (var i = 0; i < tree.length; i++) tree[i] && "string" != typeof tree[i] && markStaticNode(tree[i], key + "_" + i, isOnce); else markStaticNode(tree, key, isOnce); } function markStaticNode(node, key, isOnce) { node.isStatic = !0, node.key = key, node.isOnce = isOnce; } function bindObjectListeners(data, value) { if (value) if (isPlainObject(value)) { var on = data.on = data.on ? extend({}, data.on) : {}; for (var key in value) { var existing = on[key], ours = value[key]; on[key] = existing ? [].concat(existing, ours) : ours; } } else ; return data; } function resolveScopedSlots(fns, hasDynamicKeys, res) { res = res || { $stable: !hasDynamicKeys }; for (var i = 0; i < fns.length; i++) { var slot = fns[i]; Array.isArray(slot) ? resolveScopedSlots(slot, hasDynamicKeys, res) : slot && (slot.proxy && (slot.fn.proxy = !0), res[slot.key] = slot.fn); } return res; } function bindDynamicKeys(baseObj, values) { for (var i = 0; i < values.length; i += 2) { var key = values[i]; "string" == typeof key && key && (baseObj[values[i]] = values[i + 1]); } return baseObj; } function prependModifier(value, symbol) { return "string" == typeof value ? symbol + value : value; } function installRenderHelpers(target) { target._o = markOnce, target._n = toNumber, target._s = toString, target._l = renderList, target._t = renderSlot, target._q = looseEqual, target._i = looseIndexOf, target._m = renderStatic, target._f = resolveFilter, target._k = checkKeyCodes, target._b = bindObjectProps, target._v = createTextVNode, target._e = createEmptyVNode, target._u = resolveScopedSlots, target._g = bindObjectListeners, target._d = bindDynamicKeys, target._p = prependModifier; } function FunctionalRenderContext(data, props, children, parent, Ctor) { var contextVm, this$1 = this, options = Ctor.options; hasOwn(parent, "_uid") ? (contextVm = Object.create(parent))._original = parent : (contextVm = parent, parent = parent._original); var isCompiled = isTrue(options._compiled), needNormalization = !isCompiled; this.data = data, this.props = props, this.children = children, this.parent = parent, this.listeners = data.on || emptyObject, this.injections = resolveInject(options.inject, parent), this.slots = function() { return this$1.$slots || normalizeScopedSlots(data.scopedSlots, this$1.$slots = resolveSlots(children, parent)), this$1.$slots; }, Object.defineProperty(this, "scopedSlots", { enumerable: !0, get: function() { return normalizeScopedSlots(data.scopedSlots, this.slots()); } }), isCompiled && (this.$options = options, this.$slots = this.slots(), this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots)), options._scopeId ? this._c = function(a, b, c, d) { var vnode = createElement(contextVm, a, b, c, d, needNormalization); return vnode && !Array.isArray(vnode) && (vnode.fnScopeId = options._scopeId, vnode.fnContext = parent), vnode; } : this._c = function(a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); }; } function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) { var clone = cloneVNode(vnode); return clone.fnContext = contextVm, clone.fnOptions = options, data.slot && ((clone.data || (clone.data = {})).slot = data.slot), clone; } function mergeProps(to, from) { for (var key in from) to[camelize(key)] = from[key]; } installRenderHelpers(FunctionalRenderContext.prototype); var componentVNodeHooks = { init: function(vnode, hydrating) { if (vnode.componentInstance && !vnode.componentInstance._isDestroyed && vnode.data.keepAlive) { var mountedNode = vnode; componentVNodeHooks.prepatch(mountedNode, mountedNode); } else { (vnode.componentInstance = function(vnode, parent) { var options = { _isComponent: !0, _parentVnode: vnode, parent: parent }, inlineTemplate = vnode.data.inlineTemplate; isDef(inlineTemplate) && (options.render = inlineTemplate.render, options.staticRenderFns = inlineTemplate.staticRenderFns); return new vnode.componentOptions.Ctor(options); }(vnode, activeInstance)).$mount(hydrating ? vnode.elm : void 0, hydrating); } }, prepatch: function(oldVnode, vnode) { var options = vnode.componentOptions; !function(vm, propsData, listeners, parentVnode, renderChildren) { 0; var hasDynamicScopedSlot = !!(parentVnode.data.scopedSlots && !parentVnode.data.scopedSlots.$stable || vm.$scopedSlots !== emptyObject && !vm.$scopedSlots.$stable), needsForceUpdate = !!(renderChildren || vm.$options._renderChildren || hasDynamicScopedSlot); vm.$options._parentVnode = parentVnode, vm.$vnode = parentVnode, vm._vnode && (vm._vnode.parent = parentVnode); if (vm.$options._renderChildren = renderChildren, vm.$attrs = parentVnode.data.attrs || emptyObject, vm.$listeners = listeners || emptyObject, propsData && vm.$options.props) { toggleObserving(!1); for (var props = vm._props, propKeys = vm.$options._propKeys || [], i = 0; i < propKeys.length; i++) { var key = propKeys[i], propOptions = vm.$options.props; props[key] = validateProp(key, propOptions, propsData, vm); } toggleObserving(!0), vm.$options.propsData = propsData; } listeners = listeners || emptyObject; var oldListeners = vm.$options._parentListeners; vm.$options._parentListeners = listeners, updateComponentListeners(vm, listeners, oldListeners), needsForceUpdate && (vm.$slots = resolveSlots(renderChildren, parentVnode.context), vm.$forceUpdate()); 0; }(vnode.componentInstance = oldVnode.componentInstance, options.propsData, options.listeners, vnode, options.children); }, insert: function(vnode) { var vm, context = vnode.context, componentInstance = vnode.componentInstance; componentInstance._isMounted || (componentInstance._isMounted = !0, callHook(componentInstance, "mounted")), vnode.data.keepAlive && (context._isMounted ? ((vm = componentInstance)._inactive = !1, activatedChildren.push(vm)) : activateChildComponent(componentInstance, !0)); }, destroy: function(vnode) { var componentInstance = vnode.componentInstance; componentInstance._isDestroyed || (vnode.data.keepAlive ? function deactivateChildComponent(vm, direct) { if (direct && (vm._directInactive = !0, isInInactiveTree(vm))) return; if (!vm._inactive) { vm._inactive = !0; for (var i = 0; i < vm.$children.length; i++) deactivateChildComponent(vm.$children[i]); callHook(vm, "deactivated"); } }(componentInstance, !0) : componentInstance.$destroy()); } }, hooksToMerge = Object.keys(componentVNodeHooks); function createComponent(Ctor, data, context, children, tag) { if (!isUndef(Ctor)) { var baseCtor = context.$options._base; if (isObject(Ctor) && (Ctor = baseCtor.extend(Ctor)), "function" == typeof Ctor) { var asyncFactory; if (isUndef(Ctor.cid) && void 0 === (Ctor = function(factory, baseCtor) { if (isTrue(factory.error) && isDef(factory.errorComp)) return factory.errorComp; if (isDef(factory.resolved)) return factory.resolved; if (isTrue(factory.loading) && isDef(factory.loadingComp)) return factory.loadingComp; var owner = currentRenderingInstance; if (!isDef(factory.owners)) { var owners = factory.owners = [ owner ], sync = !0, forceRender = function(renderCompleted) { for (var i = 0, l = owners.length; i < l; i++) owners[i].$forceUpdate(); renderCompleted && (owners.length = 0); }, resolve = once(function(res) { factory.resolved = ensureCtor(res, baseCtor), sync ? owners.length = 0 : forceRender(!0); }), reject = once(function(reason) { isDef(factory.errorComp) && (factory.error = !0, forceRender(!0)); }), res = factory(resolve, reject); return isObject(res) && (isPromise(res) ? isUndef(factory.resolved) && res.then(resolve, reject) : isPromise(res.component) && (res.component.then(resolve, reject), isDef(res.error) && (factory.errorComp = ensureCtor(res.error, baseCtor)), isDef(res.loading) && (factory.loadingComp = ensureCtor(res.loading, baseCtor), 0 === res.delay ? factory.loading = !0 : setTimeout(function() { isUndef(factory.resolved) && isUndef(factory.error) && (factory.loading = !0, forceRender(!1)); }, res.delay || 200)), isDef(res.timeout) && setTimeout(function() { isUndef(factory.resolved) && reject(null); }, res.timeout))), sync = !1, factory.loading ? factory.loadingComp : factory.resolved; } factory.owners.push(owner); }(asyncFactory = Ctor, baseCtor))) return function(factory, data, context, children, tag) { var node = createEmptyVNode(); return node.asyncFactory = factory, node.asyncMeta = { data: data, context: context, children: children, tag: tag }, node; }(asyncFactory, data, context, children, tag); data = data || {}, resolveConstructorOptions(Ctor), isDef(data.model) && function(options, data) { var prop = options.model && options.model.prop || "value", event = options.model && options.model.event || "input"; (data.attrs || (data.attrs = {}))[prop] = data.model.value; var on = data.on || (data.on = {}), existing = on[event], callback = data.model.callback; isDef(existing) ? (Array.isArray(existing) ? -1 === existing.indexOf(callback) : existing !== callback) && (on[event] = [ callback ].concat(existing)) : on[event] = callback; }(Ctor.options, data); var propsData = function(data, Ctor, tag) { var propOptions = Ctor.options.props; if (!isUndef(propOptions)) { var res = {}, attrs = data.attrs, props = data.props; if (isDef(attrs) || isDef(props)) for (var key in propOptions) { var altKey = hyphenate(key); checkProp(res, props, key, altKey, !0) || checkProp(res, attrs, key, altKey, !1); } return res; } }(data, Ctor); if (isTrue(Ctor.options.functional)) return function(Ctor, propsData, data, contextVm, children) { var options = Ctor.options, props = {}, propOptions = options.props; if (isDef(propOptions)) for (var key in propOptions) props[key] = validateProp(key, propOptions, propsData || emptyObject); else isDef(data.attrs) && mergeProps(props, data.attrs), isDef(data.props) && mergeProps(props, data.props); var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor), vnode = options.render.call(null, renderContext._c, renderContext); if (vnode instanceof VNode) return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options); if (Array.isArray(vnode)) { for (var vnodes = normalizeChildren(vnode) || [], res = new Array(vnodes.length), i = 0; i < vnodes.length; i++) res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options); return res; } }(Ctor, propsData, data, context, children); var listeners = data.on; if (data.on = data.nativeOn, isTrue(Ctor.options.abstract)) { var slot = data.slot; data = {}, slot && (data.slot = slot); } !function(data) { for (var hooks = data.hook || (data.hook = {}), i = 0; i < hooksToMerge.length; i++) { var key = hooksToMerge[i], existing = hooks[key], toMerge = componentVNodeHooks[key]; existing === toMerge || existing && existing._merged || (hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge); } }(data); var name = Ctor.options.name || tag; return new VNode("vue-component-" + Ctor.cid + (name ? "-" + name : ""), data, void 0, void 0, void 0, context, { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory); } } } function mergeHook$1(f1, f2) { var merged = function(a, b) { f1(a, b), f2(a, b); }; return merged._merged = !0, merged; } var SIMPLE_NORMALIZE = 1, ALWAYS_NORMALIZE = 2; function createElement(context, tag, data, children, normalizationType, alwaysNormalize) { return (Array.isArray(data) || isPrimitive(data)) && (normalizationType = children, children = data, data = void 0), isTrue(alwaysNormalize) && (normalizationType = ALWAYS_NORMALIZE), function(context, tag, data, children, normalizationType) { if (isDef(data) && isDef(data.__ob__)) return createEmptyVNode(); isDef(data) && isDef(data.is) && (tag = data.is); if (!tag) return createEmptyVNode(); 0; Array.isArray(children) && "function" == typeof children[0] && ((data = data || {}).scopedSlots = { default: children[0] }, children.length = 0); normalizationType === ALWAYS_NORMALIZE ? children = normalizeChildren(children) : normalizationType === SIMPLE_NORMALIZE && (children = function(children) { for (var i = 0; i < children.length; i++) if (Array.isArray(children[i])) return Array.prototype.concat.apply([], children); return children; }(children)); var vnode, ns; if ("string" == typeof tag) { var Ctor; ns = context.$vnode && context.$vnode.ns || config.getTagNamespace(tag), vnode = config.isReservedTag(tag) ? new VNode(config.parsePlatformTagName(tag), data, children, void 0, void 0, context) : data && data.pre || !isDef(Ctor = resolveAsset(context.$options, "components", tag)) ? new VNode(tag, data, children, void 0, void 0, context) : createComponent(Ctor, data, context, children, tag); } else vnode = createComponent(tag, data, context, children); return Array.isArray(vnode) ? vnode : isDef(vnode) ? (isDef(ns) && function applyNS(vnode, ns, force) { vnode.ns = ns; "foreignObject" === vnode.tag && (ns = void 0, force = !0); if (isDef(vnode.children)) for (var i = 0, l = vnode.children.length; i < l; i++) { var child = vnode.children[i]; isDef(child.tag) && (isUndef(child.ns) || isTrue(force) && "svg" !== child.tag) && applyNS(child, ns, force); } }(vnode, ns), isDef(data) && function(data) { isObject(data.style) && traverse(data.style); isObject(data.class) && traverse(data.class); }(data), vnode) : createEmptyVNode(); }(context, tag, data, children, normalizationType); } var target, currentRenderingInstance = null; function ensureCtor(comp, base) { return (comp.__esModule || hasSymbol && "Module" === comp[Symbol.toStringTag]) && (comp = comp.default), isObject(comp) ? base.extend(comp) : comp; } function isAsyncPlaceholder(node) { return node.isComment && node.asyncFactory; } function getFirstComponentChild(children) { if (Array.isArray(children)) for (var i = 0; i < children.length; i++) { var c = children[i]; if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) return c; } } function add(event, fn) { target.$on(event, fn); } function remove$1(event, fn) { target.$off(event, fn); } function createOnceHandler(event, fn) { var _target = target; return function onceHandler() { null !== fn.apply(null, arguments) && _target.$off(event, onceHandler); }; } function updateComponentListeners(vm, listeners, oldListeners) { target = vm, updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm), target = void 0; } var activeInstance = null; function setActiveInstance(vm) { var prevActiveInstance = activeInstance; return activeInstance = vm, function() { activeInstance = prevActiveInstance; }; } function isInInactiveTree(vm) { for (;vm && (vm = vm.$parent); ) if (vm._inactive) return !0; return !1; } function activateChildComponent(vm, direct) { if (direct) { if (vm._directInactive = !1, isInInactiveTree(vm)) return; } else if (vm._directInactive) return; if (vm._inactive || null === vm._inactive) { vm._inactive = !1; for (var i = 0; i < vm.$children.length; i++) activateChildComponent(vm.$children[i]); callHook(vm, "activated"); } } function callHook(vm, hook) { pushTarget(); var handlers = vm.$options[hook], info = hook + " hook"; if (handlers) for (var i = 0, j = handlers.length; i < j; i++) invokeWithErrorHandling(handlers[i], vm, null, vm, info); vm._hasHookEvent && vm.$emit("hook:" + hook), popTarget(); } var queue = [], activatedChildren = [], has = {}, waiting = !1, flushing = !1, index = 0; var currentFlushTimestamp = 0, getNow = Date.now; function flushSchedulerQueue() { var watcher, id; for (currentFlushTimestamp = getNow(), flushing = !0, queue.sort(function(a, b) { return a.id - b.id; }), index = 0; index < queue.length; index++) (watcher = queue[index]).before && watcher.before(), id = watcher.id, has[id] = null, watcher.run(); var activatedQueue = activatedChildren.slice(), updatedQueue = queue.slice(); index = queue.length = activatedChildren.length = 0, has = {}, waiting = flushing = !1, function(queue) { for (var i = 0; i < queue.length; i++) queue[i]._inactive = !0, activateChildComponent(queue[i], !0); }(activatedQueue), function(queue) { var i = queue.length; for (;i--; ) { var watcher = queue[i], vm = watcher.vm; vm._watcher === watcher && vm._isMounted && !vm._isDestroyed && callHook(vm, "updated"); } }(updatedQueue), devtools && config.devtools && devtools.emit("flush"); } inBrowser && getNow() > document.createEvent("Event").timeStamp && (getNow = function() { return performance.now(); }); var uid$2 = 0, Watcher = function(vm, expOrFn, cb, options, isRenderWatcher) { this.vm = vm, isRenderWatcher && (vm._watcher = this), vm._watchers.push(this), options ? (this.deep = !!options.deep, this.user = !!options.user, this.lazy = !!options.lazy, this.sync = !!options.sync, this.before = options.before) : this.deep = this.user = this.lazy = this.sync = !1, this.cb = cb, this.id = ++uid$2, this.active = !0, this.dirty = this.lazy, this.deps = [], this.newDeps = [], this.depIds = new _Set(), this.newDepIds = new _Set(), this.expression = "", "function" == typeof expOrFn ? this.getter = expOrFn : (this.getter = function(path) { if (!bailRE.test(path)) { var segments = path.split("."); return function(obj) { for (var i = 0; i < segments.length; i++) { if (!obj) return; obj = obj[segments[i]]; } return obj; }; } }(expOrFn), this.getter || (this.getter = noop)), this.value = this.lazy ? void 0 : this.get(); }; Watcher.prototype.get = function() { var value; pushTarget(this); var vm = this.vm; try { value = this.getter.call(vm, vm); } catch (e) { if (!this.user) throw e; handleError(e, vm, 'getter for watcher "' + this.expression + '"'); } finally { this.deep && traverse(value), popTarget(), this.cleanupDeps(); } return value; }, Watcher.prototype.addDep = function(dep) { var id = dep.id; this.newDepIds.has(id) || (this.newDepIds.add(id), this.newDeps.push(dep), this.depIds.has(id) || dep.addSub(this)); }, Watcher.prototype.cleanupDeps = function() { for (var i = this.deps.length; i--; ) { var dep = this.deps[i]; this.newDepIds.has(dep.id) || dep.removeSub(this); } var tmp = this.depIds; this.depIds = this.newDepIds, this.newDepIds = tmp, this.newDepIds.clear(), tmp = this.deps, this.deps = this.newDeps, this.newDeps = tmp, this.newDeps.length = 0; }, Watcher.prototype.update = function() { this.lazy ? this.dirty = !0 : this.sync ? this.run() : function(watcher) { var id = watcher.id; if (null == has[id]) { if (has[id] = !0, flushing) { for (var i = queue.length - 1; i > index && queue[i].id > watcher.id; ) i--; queue.splice(i + 1, 0, watcher); } else queue.push(watcher); waiting || (waiting = !0, nextTick(flushSchedulerQueue)); } }(this); }, Watcher.prototype.run = function() { if (this.active) { var value = this.get(); if (value !== this.value || isObject(value) || this.deep) { var oldValue = this.value; if (this.value = value, this.user) try { this.cb.call(this.vm, value, oldValue); } catch (e) { handleError(e, this.vm, 'callback for watcher "' + this.expression + '"'); } else this.cb.call(this.vm, value, oldValue); } } }, Watcher.prototype.evaluate = function() { this.value = this.get(), this.dirty = !1; }, Watcher.prototype.depend = function() { for (var i = this.deps.length; i--; ) this.deps[i].depend(); }, Watcher.prototype.teardown = function() { if (this.active) { this.vm._isBeingDestroyed || remove(this.vm._watchers, this); for (var i = this.deps.length; i--; ) this.deps[i].removeSub(this); this.active = !1; } }; var sharedPropertyDefinition = { enumerable: !0, configurable: !0, get: noop, set: noop }; function proxy(target, sourceKey, key) { sharedPropertyDefinition.get = function() { return this[sourceKey][key]; }, sharedPropertyDefinition.set = function(val) { this[sourceKey][key] = val; }, Object.defineProperty(target, key, sharedPropertyDefinition); } function initState(vm) { vm._watchers = []; var opts = vm.$options; opts.props && function(vm, propsOptions) { var propsData = vm.$options.propsData || {}, props = vm._props = {}, keys = vm.$options._propKeys = []; vm.$parent && toggleObserving(!1); var loop = function(key) { keys.push(key); var value = validateProp(key, propsOptions, propsData, vm); defineReactive$$1(props, key, value), key in vm || proxy(vm, "_props", key); }; for (var key in propsOptions) loop(key); toggleObserving(!0); }(vm, opts.props), opts.methods && function(vm, methods) { vm.$options.props; for (var key in methods) vm[key] = "function" != typeof methods[key] ? noop : bind(methods[key], vm); }(vm, opts.methods), opts.data ? function(vm) { var data = vm.$options.data; isPlainObject(data = vm._data = "function" == typeof data ? function(data, vm) { pushTarget(); try { return data.call(vm, vm); } catch (e) { return handleError(e, vm, "data()"), {}; } finally { popTarget(); } }(data, vm) : data || {}) || (data = {}); var keys = Object.keys(data), props = vm.$options.props, i = (vm.$options.methods, keys.length); for (;i--; ) { var key = keys[i]; 0, props && hasOwn(props, key) || (c = void 0, 36 !== (c = (key + "").charCodeAt(0)) && 95 !== c && proxy(vm, "_data", key)); } var c; observe(data, !0); }(vm) : observe(vm._data = {}, !0), opts.computed && function(vm, computed) { var watchers = vm._computedWatchers = Object.create(null), isSSR = isServerRendering(); for (var key in computed) { var userDef = computed[key], getter = "function" == typeof userDef ? userDef : userDef.get; 0, isSSR || (watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions)), key in vm || defineComputed(vm, key, userDef); } }(vm, opts.computed), opts.watch && opts.watch !== nativeWatch && function(vm, watch) { for (var key in watch) { var handler = watch[key]; if (Array.isArray(handler)) for (var i = 0; i < handler.length; i++) createWatcher(vm, key, handler[i]); else createWatcher(vm, key, handler); } }(vm, opts.watch); } var computedWatcherOptions = { lazy: !0 }; function defineComputed(target, key, userDef) { var shouldCache = !isServerRendering(); "function" == typeof userDef ? (sharedPropertyDefinition.get = shouldCache ? createComputedGetter(key) : createGetterInvoker(userDef), sharedPropertyDefinition.set = noop) : (sharedPropertyDefinition.get = userDef.get ? shouldCache && !1 !== userDef.cache ? createComputedGetter(key) : createGetterInvoker(userDef.get) : noop, sharedPropertyDefinition.set = userDef.set || noop), Object.defineProperty(target, key, sharedPropertyDefinition); } function createComputedGetter(key) { return function() { var watcher = this._computedWatchers && this._computedWatchers[key]; if (watcher) return watcher.dirty && watcher.evaluate(), Dep.target && watcher.depend(), watcher.value; }; } function createGetterInvoker(fn) { return function() { return fn.call(this, this); }; } function createWatcher(vm, expOrFn, handler, options) { return isPlainObject(handler) && (options = handler, handler = handler.handler), "string" == typeof handler && (handler = vm[handler]), vm.$watch(expOrFn, handler, options); } var uid$3 = 0; function resolveConstructorOptions(Ctor) { var options = Ctor.options; if (Ctor.super) { var superOptions = resolveConstructorOptions(Ctor.super); if (superOptions !== Ctor.superOptions) { Ctor.superOptions = superOptions; var modifiedOptions = function(Ctor) { var modified, latest = Ctor.options, sealed = Ctor.sealedOptions; for (var key in latest) latest[key] !== sealed[key] && (modified || (modified = {}), modified[key] = latest[key]); return modified; }(Ctor); modifiedOptions && extend(Ctor.extendOptions, modifiedOptions), (options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions)).name && (options.components[options.name] = Ctor); } } return options; } function Vue(options) { this._init(options); } function initExtend(Vue) { Vue.cid = 0; var cid = 1; Vue.extend = function(extendOptions) { extendOptions = extendOptions || {}; var Super = this, SuperId = Super.cid, cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {}); if (cachedCtors[SuperId]) return cachedCtors[SuperId]; var name = extendOptions.name || Super.options.name; var Sub = function(options) { this._init(options); }; return (Sub.prototype = Object.create(Super.prototype)).constructor = Sub, Sub.cid = cid++, Sub.options = mergeOptions(Super.options, extendOptions), Sub.super = Super, Sub.options.props && function(Comp) { var props = Comp.options.props; for (var key in props) proxy(Comp.prototype, "_props", key); }(Sub), Sub.options.computed && function(Comp) { var computed = Comp.options.computed; for (var key in computed) defineComputed(Comp.prototype, key, computed[key]); }(Sub), Sub.extend = Super.extend, Sub.mixin = Super.mixin, Sub.use = Super.use, ASSET_TYPES.forEach(function(type) { Sub[type] = Super[type]; }), name && (Sub.options.components[name] = Sub), Sub.superOptions = Super.options, Sub.extendOptions = extendOptions, Sub.sealedOptions = extend({}, Sub.options), cachedCtors[SuperId] = Sub, Sub; }; } function getComponentName(opts) { return opts && (opts.Ctor.options.name || opts.tag); } function matches(pattern, name) { return Array.isArray(pattern) ? pattern.indexOf(name) > -1 : "string" == typeof pattern ? pattern.split(",").indexOf(name) > -1 : !!isRegExp(pattern) && pattern.test(name); } function pruneCache(keepAliveInstance, filter) { var cache = keepAliveInstance.cache, keys = keepAliveInstance.keys, _vnode = keepAliveInstance._vnode; for (var key in cache) { var cachedNode = cache[key]; if (cachedNode) { var name = getComponentName(cachedNode.componentOptions); name && !filter(name) && pruneCacheEntry(cache, key, keys, _vnode); } } } function pruneCacheEntry(cache, key, keys, current) { var cached$$1 = cache[key]; !cached$$1 || current && cached$$1.tag === current.tag || cached$$1.componentInstance.$destroy(), cache[key] = null, remove(keys, key); } !function(Vue) { Vue.prototype._init = function(options) { var vm = this; vm._uid = uid$3++, vm._isVue = !0, options && options._isComponent ? function(vm, options) { var opts = vm.$options = Object.create(vm.constructor.options), parentVnode = options._parentVnode; opts.parent = options.parent, opts._parentVnode = parentVnode; var vnodeComponentOptions = parentVnode.componentOptions; opts.propsData = vnodeComponentOptions.propsData, opts._parentListeners = vnodeComponentOptions.listeners, opts._renderChildren = vnodeComponentOptions.children, opts._componentTag = vnodeComponentOptions.tag, options.render && (opts.render = options.render, opts.staticRenderFns = options.staticRenderFns); }(vm, options) : vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm), vm._renderProxy = vm, vm._self = vm, function(vm) { var options = vm.$options, parent = options.parent; if (parent && !options.abstract) { for (;parent.$options.abstract && parent.$parent; ) parent = parent.$parent; parent.$children.push(vm); } vm.$parent = parent, vm.$root = parent ? parent.$root : vm, vm.$children = [], vm.$refs = {}, vm._watcher = null, vm._inactive = null, vm._directInactive = !1, vm._isMounted = !1, vm._isDestroyed = !1, vm._isBeingDestroyed = !1; }(vm), function(vm) { vm._events = Object.create(null), vm._hasHookEvent = !1; var listeners = vm.$options._parentListeners; listeners && updateComponentListeners(vm, listeners); }(vm), function(vm) { vm._vnode = null, vm._staticTrees = null; var options = vm.$options, parentVnode = vm.$vnode = options._parentVnode, renderContext = parentVnode && parentVnode.context; vm.$slots = resolveSlots(options._renderChildren, renderContext), vm.$scopedSlots = emptyObject, vm._c = function(a, b, c, d) { return createElement(vm, a, b, c, d, !1); }, vm.$createElement = function(a, b, c, d) { return createElement(vm, a, b, c, d, !0); }; var parentData = parentVnode && parentVnode.data; defineReactive$$1(vm, "$attrs", parentData && parentData.attrs || emptyObject, null, !0), defineReactive$$1(vm, "$listeners", options._parentListeners || emptyObject, null, !0); }(vm), callHook(vm, "beforeCreate"), function(vm) { var result = resolveInject(vm.$options.inject, vm); result && (toggleObserving(!1), Object.keys(result).forEach(function(key) { defineReactive$$1(vm, key, result[key]); }), toggleObserving(!0)); }(vm), initState(vm), function(vm) { var provide = vm.$options.provide; provide && (vm._provided = "function" == typeof provide ? provide.call(vm) : provide); }(vm), callHook(vm, "created"), vm.$options.el && vm.$mount(vm.$options.el); }; }(Vue), function(Vue) { var dataDef = { get: function() { return this._data; } }, propsDef = { get: function() { return this._props; } }; Object.defineProperty(Vue.prototype, "$data", dataDef), Object.defineProperty(Vue.prototype, "$props", propsDef), Vue.prototype.$set = set, Vue.prototype.$delete = del, Vue.prototype.$watch = function(expOrFn, cb, options) { if (isPlainObject(cb)) return createWatcher(this, expOrFn, cb, options); (options = options || {}).user = !0; var watcher = new Watcher(this, expOrFn, cb, options); if (options.immediate) try { cb.call(this, watcher.value); } catch (error) { handleError(error, this, 'callback for immediate watcher "' + watcher.expression + '"'); } return function() { watcher.teardown(); }; }; }(Vue), function(Vue) { var hookRE = /^hook:/; Vue.prototype.$on = function(event, fn) { var vm = this; if (Array.isArray(event)) for (var i = 0, l = event.length; i < l; i++) vm.$on(event[i], fn); else (vm._events[event] || (vm._events[event] = [])).push(fn), hookRE.test(event) && (vm._hasHookEvent = !0); return vm; }, Vue.prototype.$once = function(event, fn) { var vm = this; function on() { vm.$off(event, on), fn.apply(vm, arguments); } return on.fn = fn, vm.$on(event, on), vm; }, Vue.prototype.$off = function(event, fn) { var vm = this; if (!arguments.length) return vm._events = Object.create(null), vm; if (Array.isArray(event)) { for (var i$1 = 0, l = event.length; i$1 < l; i$1++) vm.$off(event[i$1], fn); return vm; } var cb, cbs = vm._events[event]; if (!cbs) return vm; if (!fn) return vm._events[event] = null, vm; for (var i = cbs.length; i--; ) if ((cb = cbs[i]) === fn || cb.fn === fn) { cbs.splice(i, 1); break; } return vm; }, Vue.prototype.$emit = function(event) { var cbs = this._events[event]; if (cbs) { cbs = cbs.length > 1 ? toArray(cbs) : cbs; for (var args = toArray(arguments, 1), info = 'event handler for "' + event + '"', i = 0, l = cbs.length; i < l; i++) invokeWithErrorHandling(cbs[i], this, args, this, info); } return this; }; }(Vue), function(Vue) { Vue.prototype._update = function(vnode, hydrating) { var vm = this, prevEl = vm.$el, prevVnode = vm._vnode, restoreActiveInstance = setActiveInstance(vm); vm._vnode = vnode, vm.$el = prevVnode ? vm.__patch__(prevVnode, vnode) : vm.__patch__(vm.$el, vnode, hydrating, !1), restoreActiveInstance(), prevEl && (prevEl.__vue__ = null), vm.$el && (vm.$el.__vue__ = vm), vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode && (vm.$parent.$el = vm.$el); }, Vue.prototype.$forceUpdate = function() { this._watcher && this._watcher.update(); }, Vue.prototype.$destroy = function() { var vm = this; if (!vm._isBeingDestroyed) { callHook(vm, "beforeDestroy"), vm._isBeingDestroyed = !0; var parent = vm.$parent; !parent || parent._isBeingDestroyed || vm.$options.abstract || remove(parent.$children, vm), vm._watcher && vm._watcher.teardown(); for (var i = vm._watchers.length; i--; ) vm._watchers[i].teardown(); vm._data.__ob__ && vm._data.__ob__.vmCount--, vm._isDestroyed = !0, vm.__patch__(vm._vnode, null), callHook(vm, "destroyed"), vm.$off(), vm.$el && (vm.$el.__vue__ = null), vm.$vnode && (vm.$vnode.parent = null); } }; }(Vue), function(Vue) { installRenderHelpers(Vue.prototype), Vue.prototype.$nextTick = function(fn) { return nextTick(fn, this); }, Vue.prototype._render = function() { var vnode, vm = this, ref = vm.$options, render = ref.render, _parentVnode = ref._parentVnode; _parentVnode && (vm.$scopedSlots = normalizeScopedSlots(_parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots)), vm.$vnode = _parentVnode; try { currentRenderingInstance = vm, vnode = render.call(vm._renderProxy, vm.$createElement); } catch (e) { handleError(e, vm, "render"), vnode = vm._vnode; } finally { currentRenderingInstance = null; } return Array.isArray(vnode) && 1 === vnode.length && (vnode = vnode[0]), vnode instanceof VNode || (vnode = createEmptyVNode()), vnode.parent = _parentVnode, vnode; }; }(Vue); var patternTypes = [ String, RegExp, Array ], builtInComponents = { KeepAlive: { name: "keep-alive", abstract: !0, props: { include: patternTypes, exclude: patternTypes, max: [ String, Number ] }, created: function() { this.cache = Object.create(null), this.keys = []; }, destroyed: function() { for (var key in this.cache) pruneCacheEntry(this.cache, key, this.keys); }, mounted: function() { var this$1 = this; this.$watch("include", function(val) { pruneCache(this$1, function(name) { return matches(val, name); }); }), this.$watch("exclude", function(val) { pruneCache(this$1, function(name) { return !matches(val, name); }); }); }, render: function() { var slot = this.$slots.default, vnode = getFirstComponentChild(slot), componentOptions = vnode && vnode.componentOptions; if (componentOptions) { var name = getComponentName(componentOptions), include = this.include, exclude = this.exclude; if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) return vnode; var cache = this.cache, keys = this.keys, key = null == vnode.key ? componentOptions.Ctor.cid + (componentOptions.tag ? "::" + componentOptions.tag : "") : vnode.key; cache[key] ? (vnode.componentInstance = cache[key].componentInstance, remove(keys, key), keys.push(key)) : (cache[key] = vnode, keys.push(key), this.max && keys.length > parseInt(this.max) && pruneCacheEntry(cache, keys[0], keys, this._vnode)), vnode.data.keepAlive = !0; } return vnode || slot && slot[0]; } } }; !function(Vue) { var configDef = { get: function() { return config; } }; Object.defineProperty(Vue, "config", configDef), Vue.util = { warn: warn, extend: extend, mergeOptions: mergeOptions, defineReactive: defineReactive$$1 }, Vue.set = set, Vue.delete = del, Vue.nextTick = nextTick, Vue.observable = function(obj) { return observe(obj), obj; }, Vue.options = Object.create(null), ASSET_TYPES.forEach(function(type) { Vue.options[type + "s"] = Object.create(null); }), Vue.options._base = Vue, extend(Vue.options.components, builtInComponents), function(Vue) { Vue.use = function(plugin) { var installedPlugins = this._installedPlugins || (this._installedPlugins = []); if (installedPlugins.indexOf(plugin) > -1) return this; var args = toArray(arguments, 1); return args.unshift(this), "function" == typeof plugin.install ? plugin.install.apply(plugin, args) : "function" == typeof plugin && plugin.apply(null, args), installedPlugins.push(plugin), this; }; }(Vue), function(Vue) { Vue.mixin = function(mixin) { return this.options = mergeOptions(this.options, mixin), this; }; }(Vue), initExtend(Vue), function(Vue) { ASSET_TYPES.forEach(function(type) { Vue[type] = function(id, definition) { return definition ? ("component" === type && isPlainObject(definition) && (definition.name = definition.name || id, definition = this.options._base.extend(definition)), "directive" === type && "function" == typeof definition && (definition = { bind: definition, update: definition }), this.options[type + "s"][id] = definition, definition) : this.options[type + "s"][id]; }; }); }(Vue); }(Vue), Object.defineProperty(Vue.prototype, "$isServer", { get: isServerRendering }), Object.defineProperty(Vue.prototype, "$ssrContext", { get: function() { return this.$vnode && this.$vnode.ssrContext; } }), Object.defineProperty(Vue, "FunctionalRenderContext", { value: FunctionalRenderContext }), Vue.version = "2.6.6"; var isReservedAttr = makeMap("style,class"), acceptValue = makeMap("input,textarea,option,select,progress"), isEnumeratedAttr = makeMap("contenteditable,draggable,spellcheck"), isValidContentEditableValue = makeMap("events,caret,typing,plaintext-only"), convertEnumeratedValue = function(key, value) { return isFalsyAttrValue(value) || "false" === value ? "false" : "contenteditable" === key && isValidContentEditableValue(value) ? value : "true"; }, isBooleanAttr = makeMap("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"), xlinkNS = "http://www.w3.org/1999/xlink", isXlink = function(name) { return ":" === name.charAt(5) && "xlink" === name.slice(0, 5); }, getXlinkProp = function(name) { return isXlink(name) ? name.slice(6, name.length) : ""; }, isFalsyAttrValue = function(val) { return null == val || !1 === val; }; function genClassForVnode(vnode) { for (var data = vnode.data, parentNode = vnode, childNode = vnode; isDef(childNode.componentInstance); ) (childNode = childNode.componentInstance._vnode) && childNode.data && (data = mergeClassData(childNode.data, data)); for (;isDef(parentNode = parentNode.parent); ) parentNode && parentNode.data && (data = mergeClassData(data, parentNode.data)); return function(staticClass, dynamicClass) { if (isDef(staticClass) || isDef(dynamicClass)) return concat(staticClass, stringifyClass(dynamicClass)); return ""; }(data.staticClass, data.class); } function mergeClassData(child, parent) { return { staticClass: concat(child.staticClass, parent.staticClass), class: isDef(child.class) ? [ child.class, parent.class ] : parent.class }; } function concat(a, b) { return a ? b ? a + " " + b : a : b || ""; } function stringifyClass(value) { return Array.isArray(value) ? function(value) { for (var stringified, res = "", i = 0, l = value.length; i < l; i++) isDef(stringified = stringifyClass(value[i])) && "" !== stringified && (res && (res += " "), res += stringified); return res; }(value) : isObject(value) ? function(value) { var res = ""; for (var key in value) value[key] && (res && (res += " "), res += key); return res; }(value) : "string" == typeof value ? value : ""; } var namespaceMap = { svg: "http://www.w3.org/2000/svg", math: "http://www.w3.org/1998/Math/MathML" }, isHTMLTag = makeMap("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"), isSVG = makeMap("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view", !0), isReservedTag = function(tag) { return isHTMLTag(tag) || isSVG(tag); }; var unknownElementCache = Object.create(null); var isTextInputType = makeMap("text,number,password,search,email,tel,url"); var nodeOps = Object.freeze({ createElement: function(tagName, vnode) { var elm = document.createElement(tagName); return "select" !== tagName ? elm : (vnode.data && vnode.data.attrs && void 0 !== vnode.data.attrs.multiple && elm.setAttribute("multiple", "multiple"), elm); }, createElementNS: function(namespace, tagName) { return document.createElementNS(namespaceMap[namespace], tagName); }, createTextNode: function(text) { return document.createTextNode(text); }, createComment: function(text) { return document.createComment(text); }, insertBefore: function(parentNode, newNode, referenceNode) { parentNode.insertBefore(newNode, referenceNode); }, removeChild: function(node, child) { node.removeChild(child); }, appendChild: function(node, child) { node.appendChild(child); }, parentNode: function(node) { return node.parentNode; }, nextSibling: function(node) { return node.nextSibling; }, tagName: function(node) { return node.tagName; }, setTextContent: function(node, text) { node.textContent = text; }, setStyleScope: function(node, scopeId) { node.setAttribute(scopeId, ""); } }), ref = { create: function(_, vnode) { registerRef(vnode); }, update: function(oldVnode, vnode) { oldVnode.data.ref !== vnode.data.ref && (registerRef(oldVnode, !0), registerRef(vnode)); }, destroy: function(vnode) { registerRef(vnode, !0); } }; function registerRef(vnode, isRemoval) { var key = vnode.data.ref; if (isDef(key)) { var vm = vnode.context, ref = vnode.componentInstance || vnode.elm, refs = vm.$refs; isRemoval ? Array.isArray(refs[key]) ? remove(refs[key], ref) : refs[key] === ref && (refs[key] = void 0) : vnode.data.refInFor ? Array.isArray(refs[key]) ? refs[key].indexOf(ref) < 0 && refs[key].push(ref) : refs[key] = [ ref ] : refs[key] = ref; } } var emptyNode = new VNode("", {}, []), hooks = [ "create", "activate", "update", "remove", "destroy" ]; function sameVnode(a, b) { return a.key === b.key && (a.tag === b.tag && a.isComment === b.isComment && isDef(a.data) === isDef(b.data) && function(a, b) { if ("input" !== a.tag) return !0; var i, typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type, typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type; return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB); }(a, b) || isTrue(a.isAsyncPlaceholder) && a.asyncFactory === b.asyncFactory && isUndef(b.asyncFactory.error)); } function createKeyToOldIdx(children, beginIdx, endIdx) { var i, key, map = {}; for (i = beginIdx; i <= endIdx; ++i) isDef(key = children[i].key) && (map[key] = i); return map; } var directives = { create: updateDirectives, update: updateDirectives, destroy: function(vnode) { updateDirectives(vnode, emptyNode); } }; function updateDirectives(oldVnode, vnode) { (oldVnode.data.directives || vnode.data.directives) && function(oldVnode, vnode) { var key, oldDir, dir, isCreate = oldVnode === emptyNode, isDestroy = vnode === emptyNode, oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context), newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context), dirsWithInsert = [], dirsWithPostpatch = []; for (key in newDirs) oldDir = oldDirs[key], dir = newDirs[key], oldDir ? (dir.oldValue = oldDir.value, dir.oldArg = oldDir.arg, callHook$1(dir, "update", vnode, oldVnode), dir.def && dir.def.componentUpdated && dirsWithPostpatch.push(dir)) : (callHook$1(dir, "bind", vnode, oldVnode), dir.def && dir.def.inserted && dirsWithInsert.push(dir)); if (dirsWithInsert.length) { var callInsert = function() { for (var i = 0; i < dirsWithInsert.length; i++) callHook$1(dirsWithInsert[i], "inserted", vnode, oldVnode); }; isCreate ? mergeVNodeHook(vnode, "insert", callInsert) : callInsert(); } dirsWithPostpatch.length && mergeVNodeHook(vnode, "postpatch", function() { for (var i = 0; i < dirsWithPostpatch.length; i++) callHook$1(dirsWithPostpatch[i], "componentUpdated", vnode, oldVnode); }); if (!isCreate) for (key in oldDirs) newDirs[key] || callHook$1(oldDirs[key], "unbind", oldVnode, oldVnode, isDestroy); }(oldVnode, vnode); } var emptyModifiers = Object.create(null); function normalizeDirectives$1(dirs, vm) { var i, dir, res = Object.create(null); if (!dirs) return res; for (i = 0; i < dirs.length; i++) (dir = dirs[i]).modifiers || (dir.modifiers = emptyModifiers), res[getRawDirName(dir)] = dir, dir.def = resolveAsset(vm.$options, "directives", dir.name); return res; } function getRawDirName(dir) { return dir.rawName || dir.name + "." + Object.keys(dir.modifiers || {}).join("."); } function callHook$1(dir, hook, vnode, oldVnode, isDestroy) { var fn = dir.def && dir.def[hook]; if (fn) try { fn(vnode.elm, dir, vnode, oldVnode, isDestroy); } catch (e) { handleError(e, vnode.context, "directive " + dir.name + " " + hook + " hook"); } } var baseModules = [ ref, directives ]; function updateAttrs(oldVnode, vnode) { var opts = vnode.componentOptions; if (!(isDef(opts) && !1 === opts.Ctor.options.inheritAttrs || isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs))) { var key, cur, elm = vnode.elm, oldAttrs = oldVnode.data.attrs || {}, attrs = vnode.data.attrs || {}; for (key in isDef(attrs.__ob__) && (attrs = vnode.data.attrs = extend({}, attrs)), attrs) cur = attrs[key], oldAttrs[key] !== cur && setAttr(elm, key, cur); for (key in (isIE || isEdge) && attrs.value !== oldAttrs.value && setAttr(elm, "value", attrs.value), oldAttrs) isUndef(attrs[key]) && (isXlink(key) ? elm.removeAttributeNS(xlinkNS, getXlinkProp(key)) : isEnumeratedAttr(key) || elm.removeAttribute(key)); } } function setAttr(el, key, value) { el.tagName.indexOf("-") > -1 ? baseSetAttr(el, key, value) : isBooleanAttr(key) ? isFalsyAttrValue(value) ? el.removeAttribute(key) : (value = "allowfullscreen" === key && "EMBED" === el.tagName ? "true" : key, el.setAttribute(key, value)) : isEnumeratedAttr(key) ? el.setAttribute(key, convertEnumeratedValue(key, value)) : isXlink(key) ? isFalsyAttrValue(value) ? el.removeAttributeNS(xlinkNS, getXlinkProp(key)) : el.setAttributeNS(xlinkNS, key, value) : baseSetAttr(el, key, value); } function baseSetAttr(el, key, value) { if (isFalsyAttrValue(value)) el.removeAttribute(key); else { if (isIE && !isIE9 && "TEXTAREA" === el.tagName && "placeholder" === key && "" !== value && !el.__ieph) { var blocker = function(e) { e.stopImmediatePropagation(), el.removeEventListener("input", blocker); }; el.addEventListener("input", blocker), el.__ieph = !0; } el.setAttribute(key, value); } } var attrs = { create: updateAttrs, update: updateAttrs }; function updateClass(oldVnode, vnode) { var el = vnode.elm, data = vnode.data, oldData = oldVnode.data; if (!(isUndef(data.staticClass) && isUndef(data.class) && (isUndef(oldData) || isUndef(oldData.staticClass) && isUndef(oldData.class)))) { var cls = genClassForVnode(vnode), transitionClass = el._transitionClasses; isDef(transitionClass) && (cls = concat(cls, stringifyClass(transitionClass))), cls !== el._prevClass && (el.setAttribute("class", cls), el._prevClass = cls); } } var target$1, klass = { create: updateClass, update: updateClass }, RANGE_TOKEN = "__r", CHECKBOX_RADIO_TOKEN = "__c"; function createOnceHandler$1(event, handler, capture) { var _target = target$1; return function onceHandler() { null !== handler.apply(null, arguments) && remove$2(event, onceHandler, capture, _target); }; } var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53); function add$1(name, handler, capture, passive) { if (useMicrotaskFix) { var attachedTimestamp = currentFlushTimestamp, original = handler; handler = original._wrapper = function(e) { if (e.target === e.currentTarget || e.timeStamp >= attachedTimestamp || 0 === e.timeStamp || e.target.ownerDocument !== document) return original.apply(this, arguments); }; } target$1.addEventListener(name, handler, supportsPassive ? { capture: capture, passive: passive } : capture); } function remove$2(name, handler, capture, _target) { (_target || target$1).removeEventListener(name, handler._wrapper || handler, capture); } function updateDOMListeners(oldVnode, vnode) { if (!isUndef(oldVnode.data.on) || !isUndef(vnode.data.on)) { var on = vnode.data.on || {}, oldOn = oldVnode.data.on || {}; target$1 = vnode.elm, function(on) { if (isDef(on[RANGE_TOKEN])) { var event = isIE ? "change" : "input"; on[event] = [].concat(on[RANGE_TOKEN], on[event] || []), delete on[RANGE_TOKEN]; } isDef(on[CHECKBOX_RADIO_TOKEN]) && (on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []), delete on[CHECKBOX_RADIO_TOKEN]); }(on), updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context), target$1 = void 0; } } var svgContainer, events = { create: updateDOMListeners, update: updateDOMListeners }; function updateDOMProps(oldVnode, vnode) { if (!isUndef(oldVnode.data.domProps) || !isUndef(vnode.data.domProps)) { var key, cur, elm = vnode.elm, oldProps = oldVnode.data.domProps || {}, props = vnode.data.domProps || {}; for (key in isDef(props.__ob__) && (props = vnode.data.domProps = extend({}, props)), oldProps) isUndef(props[key]) && (elm[key] = ""); for (key in props) { if (cur = props[key], "textContent" === key || "innerHTML" === key) { if (vnode.children && (vnode.children.length = 0), cur === oldProps[key]) continue; 1 === elm.childNodes.length && elm.removeChild(elm.childNodes[0]); } if ("value" === key || cur !== oldProps[key]) if ("value" === key) { elm._value = cur; var strCur = isUndef(cur) ? "" : String(cur); shouldUpdateValue(elm, strCur) && (elm.value = strCur); } else if ("innerHTML" === key && isSVG(elm.tagName) && isUndef(elm.innerHTML)) { (svgContainer = svgContainer || document.createElement("div")).innerHTML = "<svg>" + cur + "</svg>"; for (var svg = svgContainer.firstChild; elm.firstChild; ) elm.removeChild(elm.firstChild); for (;svg.firstChild; ) elm.appendChild(svg.firstChild); } else elm[key] = cur; } } } function shouldUpdateValue(elm, checkVal) { return !elm.composing && ("OPTION" === elm.tagName || function(elm, checkVal) { var notInFocus = !0; try { notInFocus = document.activeElement !== elm; } catch (e) {} return notInFocus && elm.value !== checkVal; }(elm, checkVal) || function(elm, newVal) { var value = elm.value, modifiers = elm._vModifiers; if (isDef(modifiers)) { if (modifiers.number) return toNumber(value) !== toNumber(newVal); if (modifiers.trim) return value.trim() !== newVal.trim(); } return value !== newVal; }(elm, checkVal)); } var domProps = { create: updateDOMProps, update: updateDOMProps }, parseStyleText = cached(function(cssText) { var res = {}, propertyDelimiter = /:(.+)/; return cssText.split(/;(?![^(]*\))/g).forEach(function(item) { if (item) { var tmp = item.split(propertyDelimiter); tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim()); } }), res; }); function normalizeStyleData(data) { var style = normalizeStyleBinding(data.style); return data.staticStyle ? extend(data.staticStyle, style) : style; } function normalizeStyleBinding(bindingStyle) { return Array.isArray(bindingStyle) ? toObject(bindingStyle) : "string" == typeof bindingStyle ? parseStyleText(bindingStyle) : bindingStyle; } var emptyStyle, cssVarRE = /^--/, importantRE = /\s*!important$/, setProp = function(el, name, val) { if (cssVarRE.test(name)) el.style.setProperty(name, val); else if (importantRE.test(val)) el.style.setProperty(hyphenate(name), val.replace(importantRE, ""), "important"); else { var normalizedName = normalize(name); if (Array.isArray(val)) for (var i = 0, len = val.length; i < len; i++) el.style[normalizedName] = val[i]; else el.style[normalizedName] = val; } }, vendorNames = [ "Webkit", "Moz", "ms" ], normalize = cached(function(prop) { if (emptyStyle = emptyStyle || document.createElement("div").style, "filter" !== (prop = camelize(prop)) && prop in emptyStyle) return prop; for (var capName = prop.charAt(0).toUpperCase() + prop.slice(1), i = 0; i < vendorNames.length; i++) { var name = vendorNames[i] + capName; if (name in emptyStyle) return name; } }); function updateStyle(oldVnode, vnode) { var data = vnode.data, oldData = oldVnode.data; if (!(isUndef(data.staticStyle) && isUndef(data.style) && isUndef(oldData.staticStyle) && isUndef(oldData.style))) { var cur, name, el = vnode.elm, oldStaticStyle = oldData.staticStyle, oldStyleBinding = oldData.normalizedStyle || oldData.style || {}, oldStyle = oldStaticStyle || oldStyleBinding, style = normalizeStyleBinding(vnode.data.style) || {}; vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style; var newStyle = function(vnode, checkChild) { var styleData, res = {}; if (checkChild) for (var childNode = vnode; childNode.componentInstance; ) (childNode = childNode.componentInstance._vnode) && childNode.data && (styleData = normalizeStyleData(childNode.data)) && extend(res, styleData); (styleData = normalizeStyleData(vnode.data)) && extend(res, styleData); for (var parentNode = vnode; parentNode = parentNode.parent; ) parentNode.data && (styleData = normalizeStyleData(parentNode.data)) && extend(res, styleData); return res; }(vnode, !0); for (name in oldStyle) isUndef(newStyle[name]) && setProp(el, name, ""); for (name in newStyle) (cur = newStyle[name]) !== oldStyle[name] && setProp(el, name, null == cur ? "" : cur); } } var style = { create: updateStyle, update: updateStyle }, whitespaceRE = /\s+/; function addClass(el, cls) { if (cls && (cls = cls.trim())) if (el.classList) cls.indexOf(" ") > -1 ? cls.split(whitespaceRE).forEach(function(c) { return el.classList.add(c); }) : el.classList.add(cls); else { var cur = " " + (el.getAttribute("class") || "") + " "; cur.indexOf(" " + cls + " ") < 0 && el.setAttribute("class", (cur + cls).trim()); } } function removeClass(el, cls) { if (cls && (cls = cls.trim())) if (el.classList) cls.indexOf(" ") > -1 ? cls.split(whitespaceRE).forEach(function(c) { return el.classList.remove(c); }) : el.classList.remove(cls), el.classList.length || el.removeAttribute("class"); else { for (var cur = " " + (el.getAttribute("class") || "") + " ", tar = " " + cls + " "; cur.indexOf(tar) >= 0; ) cur = cur.replace(tar, " "); (cur = cur.trim()) ? el.setAttribute("class", cur) : el.removeAttribute("class"); } } function resolveTransition(def$$1) { if (def$$1) { if ("object" == typeof def$$1) { var res = {}; return !1 !== def$$1.css && extend(res, autoCssTransition(def$$1.name || "v")), extend(res, def$$1), res; } return "string" == typeof def$$1 ? autoCssTransition(def$$1) : void 0; } } var autoCssTransition = cached(function(name) { return { enterClass: name + "-enter", enterToClass: name + "-enter-to", enterActiveClass: name + "-enter-active", leaveClass: name + "-leave", leaveToClass: name + "-leave-to", leaveActiveClass: name + "-leave-active" }; }), hasTransition = inBrowser && !isIE9, TRANSITION = "transition", ANIMATION = "animation", transitionProp = "transition", transitionEndEvent = "transitionend", animationProp = "animation", animationEndEvent = "animationend"; hasTransition && (void 0 === window.ontransitionend && void 0 !== window.onwebkittransitionend && (transitionProp = "WebkitTransition", transitionEndEvent = "webkitTransitionEnd"), void 0 === window.onanimationend && void 0 !== window.onwebkitanimationend && (animationProp = "WebkitAnimation", animationEndEvent = "webkitAnimationEnd")); var raf = inBrowser ? window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : setTimeout : function(fn) { return fn(); }; function nextFrame(fn) { raf(function() { raf(fn); }); } function addTransitionClass(el, cls) { var transitionClasses = el._transitionClasses || (el._transitionClasses = []); transitionClasses.indexOf(cls) < 0 && (transitionClasses.push(cls), addClass(el, cls)); } function removeTransitionClass(el, cls) { el._transitionClasses && remove(el._transitionClasses, cls), removeClass(el, cls); } function whenTransitionEnds(el, expectedType, cb) { var ref = getTransitionInfo(el, expectedType), type = ref.type, timeout = ref.timeout, propCount = ref.propCount; if (!type) return cb(); var event = type === TRANSITION ? transitionEndEvent : animationEndEvent, ended = 0, end = function() { el.removeEventListener(event, onEnd), cb(); }, onEnd = function(e) { e.target === el && ++ended >= propCount && end(); }; setTimeout(function() { ended < propCount && end(); }, timeout + 1), el.addEventListener(event, onEnd); } var transformRE = /\b(transform|all)(,|$)/; function getTransitionInfo(el, expectedType) { var type, styles = window.getComputedStyle(el), transitionDelays = (styles[transitionProp + "Delay"] || "").split(", "), transitionDurations = (styles[transitionProp + "Duration"] || "").split(", "), transitionTimeout = getTimeout(transitionDelays, transitionDurations), animationDelays = (styles[animationProp + "Delay"] || "").split(", "), animationDurations = (styles[animationProp + "Duration"] || "").split(", "), animationTimeout = getTimeout(animationDelays, animationDurations), timeout = 0, propCount = 0; return expectedType === TRANSITION ? transitionTimeout > 0 && (type = TRANSITION, timeout = transitionTimeout, propCount = transitionDurations.length) : expectedType === ANIMATION ? animationTimeout > 0 && (type = ANIMATION, timeout = animationTimeout, propCount = animationDurations.length) : propCount = (type = (timeout = Math.max(transitionTimeout, animationTimeout)) > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null) ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0, { type: type, timeout: timeout, propCount: propCount, hasTransform: type === TRANSITION && transformRE.test(styles[transitionProp + "Property"]) }; } function getTimeout(delays, durations) { for (;delays.length < durations.length; ) delays = delays.concat(delays); return Math.max.apply(null, durations.map(function(d, i) { return toMs(d) + toMs(delays[i]); })); } function toMs(s) { return 1e3 * Number(s.slice(0, -1).replace(",", ".")); } function enter(vnode, toggleDisplay) { var el = vnode.elm; isDef(el._leaveCb) && (el._leaveCb.cancelled = !0, el._leaveCb()); var data = resolveTransition(vnode.data.transition); if (!isUndef(data) && !isDef(el._enterCb) && 1 === el.nodeType) { for (var css = data.css, type = data.type, enterClass = data.enterClass, enterToClass = data.enterToClass, enterActiveClass = data.enterActiveClass, appearClass = data.appearClass, appearToClass = data.appearToClass, appearActiveClass = data.appearActiveClass, beforeEnter = data.beforeEnter, enter = data.enter, afterEnter = data.afterEnter, enterCancelled = data.enterCancelled, beforeAppear = data.beforeAppear, appear = data.appear, afterAppear = data.afterAppear, appearCancelled = data.appearCancelled, duration = data.duration, context = activeInstance, transitionNode = activeInstance.$vnode; transitionNode && transitionNode.parent; ) context = (transitionNode = transitionNode.parent).context; var isAppear = !context._isMounted || !vnode.isRootInsert; if (!isAppear || appear || "" === appear) { var startClass = isAppear && appearClass ? appearClass : enterClass, activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass, toClass = isAppear && appearToClass ? appearToClass : enterToClass, beforeEnterHook = isAppear && beforeAppear || beforeEnter, enterHook = isAppear && "function" == typeof appear ? appear : enter, afterEnterHook = isAppear && afterAppear || afterEnter, enterCancelledHook = isAppear && appearCancelled || enterCancelled, explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration); 0; var expectsCSS = !1 !== css && !isIE9, userWantsControl = getHookArgumentsLength(enterHook), cb = el._enterCb = once(function() { expectsCSS && (removeTransitionClass(el, toClass), removeTransitionClass(el, activeClass)), cb.cancelled ? (expectsCSS && removeTransitionClass(el, startClass), enterCancelledHook && enterCancelledHook(el)) : afterEnterHook && afterEnterHook(el), el._enterCb = null; }); vnode.data.show || mergeVNodeHook(vnode, "insert", function() { var parent = el.parentNode, pendingNode = parent && parent._pending && parent._pending[vnode.key]; pendingNode && pendingNode.tag === vnode.tag && pendingNode.elm._leaveCb && pendingNode.elm._leaveCb(), enterHook && enterHook(el, cb); }), beforeEnterHook && beforeEnterHook(el), expectsCSS && (addTransitionClass(el, startClass), addTransitionClass(el, activeClass), nextFrame(function() { removeTransitionClass(el, startClass), cb.cancelled || (addTransitionClass(el, toClass), userWantsControl || (isValidDuration(explicitEnterDuration) ? setTimeout(cb, explicitEnterDuration) : whenTransitionEnds(el, type, cb))); })), vnode.data.show && (toggleDisplay && toggleDisplay(), enterHook && enterHook(el, cb)), expectsCSS || userWantsControl || cb(); } } } function leave(vnode, rm) { var el = vnode.elm; isDef(el._enterCb) && (el._enterCb.cancelled = !0, el._enterCb()); var data = resolveTransition(vnode.data.transition); if (isUndef(data) || 1 !== el.nodeType) return rm(); if (!isDef(el._leaveCb)) { var css = data.css, type = data.type, leaveClass = data.leaveClass, leaveToClass = data.leaveToClass, leaveActiveClass = data.leaveActiveClass, beforeLeave = data.beforeLeave, leave = data.leave, afterLeave = data.afterLeave, leaveCancelled = data.leaveCancelled, delayLeave = data.delayLeave, duration = data.duration, expectsCSS = !1 !== css && !isIE9, userWantsControl = getHookArgumentsLength(leave), explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration); 0; var cb = el._leaveCb = once(function() { el.parentNode && el.parentNode._pending && (el.parentNode._pending[vnode.key] = null), expectsCSS && (removeTransitionClass(el, leaveToClass), removeTransitionClass(el, leaveActiveClass)), cb.cancelled ? (expectsCSS && removeTransitionClass(el, leaveClass), leaveCancelled && leaveCancelled(el)) : (rm(), afterLeave && afterLeave(el)), el._leaveCb = null; }); delayLeave ? delayLeave(performLeave) : performLeave(); } function performLeave() { cb.cancelled || (!vnode.data.show && el.parentNode && ((el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = vnode), beforeLeave && beforeLeave(el), expectsCSS && (addTransitionClass(el, leaveClass), addTransitionClass(el, leaveActiveClass), nextFrame(function() { removeTransitionClass(el, leaveClass), cb.cancelled || (addTransitionClass(el, leaveToClass), userWantsControl || (isValidDuration(explicitLeaveDuration) ? setTimeout(cb, explicitLeaveDuration) : whenTransitionEnds(el, type, cb))); })), leave && leave(el, cb), expectsCSS || userWantsControl || cb()); } } function isValidDuration(val) { return "number" == typeof val && !isNaN(val); } function getHookArgumentsLength(fn) { if (isUndef(fn)) return !1; var invokerFns = fn.fns; return isDef(invokerFns) ? getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns) : (fn._length || fn.length) > 1; } function _enter(_, vnode) { !0 !== vnode.data.show && enter(vnode); } var patch = function(backend) { var i, j, cbs = {}, modules = backend.modules, nodeOps = backend.nodeOps; for (i = 0; i < hooks.length; ++i) for (cbs[hooks[i]] = [], j = 0; j < modules.length; ++j) isDef(modules[j][hooks[i]]) && cbs[hooks[i]].push(modules[j][hooks[i]]); function removeNode(el) { var parent = nodeOps.parentNode(el); isDef(parent) && nodeOps.removeChild(parent, el); } function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) { if (isDef(vnode.elm) && isDef(ownerArray) && (vnode = ownerArray[index] = cloneVNode(vnode)), vnode.isRootInsert = !nested, !function(vnode, insertedVnodeQueue, parentElm, refElm) { var i = vnode.data; if (isDef(i)) { var isReactivated = isDef(vnode.componentInstance) && i.keepAlive; if (isDef(i = i.hook) && isDef(i = i.init) && i(vnode, !1), isDef(vnode.componentInstance)) return initComponent(vnode, insertedVnodeQueue), insert(parentElm, vnode.elm, refElm), isTrue(isReactivated) && function(vnode, insertedVnodeQueue, parentElm, refElm) { for (var i, innerNode = vnode; innerNode.componentInstance; ) if (innerNode = innerNode.componentInstance._vnode, isDef(i = innerNode.data) && isDef(i = i.transition)) { for (i = 0; i < cbs.activate.length; ++i) cbs.activate[i](emptyNode, innerNode); insertedVnodeQueue.push(innerNode); break; } insert(parentElm, vnode.elm, refElm); }(vnode, insertedVnodeQueue, parentElm, refElm), !0; } }(vnode, insertedVnodeQueue, parentElm, refElm)) { var data = vnode.data, children = vnode.children, tag = vnode.tag; isDef(tag) ? (vnode.elm = vnode.ns ? nodeOps.createElementNS(vnode.ns, tag) : nodeOps.createElement(tag, vnode), setScope(vnode), createChildren(vnode, children, insertedVnodeQueue), isDef(data) && invokeCreateHooks(vnode, insertedVnodeQueue), insert(parentElm, vnode.elm, refElm)) : isTrue(vnode.isComment) ? (vnode.elm = nodeOps.createComment(vnode.text), insert(parentElm, vnode.elm, refElm)) : (vnode.elm = nodeOps.createTextNode(vnode.text), insert(parentElm, vnode.elm, refElm)); } } function initComponent(vnode, insertedVnodeQueue) { isDef(vnode.data.pendingInsert) && (insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert), vnode.data.pendingInsert = null), vnode.elm = vnode.componentInstance.$el, isPatchable(vnode) ? (invokeCreateHooks(vnode, insertedVnodeQueue), setScope(vnode)) : (registerRef(vnode), insertedVnodeQueue.push(vnode)); } function insert(parent, elm, ref$$1) { isDef(parent) && (isDef(ref$$1) ? nodeOps.parentNode(ref$$1) === parent && nodeOps.insertBefore(parent, elm, ref$$1) : nodeOps.appendChild(parent, elm)); } function createChildren(vnode, children, insertedVnodeQueue) { if (Array.isArray(children)) for (var i = 0; i < children.length; ++i) createElm(children[i], insertedVnodeQueue, vnode.elm, null, !0, children, i); else isPrimitive(vnode.text) && nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text))); } function isPatchable(vnode) { for (;vnode.componentInstance; ) vnode = vnode.componentInstance._vnode; return isDef(vnode.tag); } function invokeCreateHooks(vnode, insertedVnodeQueue) { for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) cbs.create[i$1](emptyNode, vnode); isDef(i = vnode.data.hook) && (isDef(i.create) && i.create(emptyNode, vnode), isDef(i.insert) && insertedVnodeQueue.push(vnode)); } function setScope(vnode) { var i; if (isDef(i = vnode.fnScopeId)) nodeOps.setStyleScope(vnode.elm, i); else for (var ancestor = vnode; ancestor; ) isDef(i = ancestor.context) && isDef(i = i.$options._scopeId) && nodeOps.setStyleScope(vnode.elm, i), ancestor = ancestor.parent; isDef(i = activeInstance) && i !== vnode.context && i !== vnode.fnContext && isDef(i = i.$options._scopeId) && nodeOps.setStyleScope(vnode.elm, i); } function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) { for (;startIdx <= endIdx; ++startIdx) createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, !1, vnodes, startIdx); } function invokeDestroyHook(vnode) { var i, j, data = vnode.data; if (isDef(data)) for (isDef(i = data.hook) && isDef(i = i.destroy) && i(vnode), i = 0; i < cbs.destroy.length; ++i) cbs.destroy[i](vnode); if (isDef(i = vnode.children)) for (j = 0; j < vnode.children.length; ++j) invokeDestroyHook(vnode.children[j]); } function removeVnodes(parentElm, vnodes, startIdx, endIdx) { for (;startIdx <= endIdx; ++startIdx) { var ch = vnodes[startIdx]; isDef(ch) && (isDef(ch.tag) ? (removeAndInvokeRemoveHook(ch), invokeDestroyHook(ch)) : removeNode(ch.elm)); } } function removeAndInvokeRemoveHook(vnode, rm) { if (isDef(rm) || isDef(vnode.data)) { var i, listeners = cbs.remove.length + 1; for (isDef(rm) ? rm.listeners += listeners : rm = function(childElm, listeners) { function remove$$1() { 0 == --remove$$1.listeners && removeNode(childElm); } return remove$$1.listeners = listeners, remove$$1; }(vnode.elm, listeners), isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data) && removeAndInvokeRemoveHook(i, rm), i = 0; i < cbs.remove.length; ++i) cbs.remove[i](vnode, rm); isDef(i = vnode.data.hook) && isDef(i = i.remove) ? i(vnode, rm) : rm(); } else removeNode(vnode.elm); } function findIdxInOld(node, oldCh, start, end) { for (var i = start; i < end; i++) { var c = oldCh[i]; if (isDef(c) && sameVnode(node, c)) return i; } } function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) { if (oldVnode !== vnode) { isDef(vnode.elm) && isDef(ownerArray) && (vnode = ownerArray[index] = cloneVNode(vnode)); var elm = vnode.elm = oldVnode.elm; if (isTrue(oldVnode.isAsyncPlaceholder)) isDef(vnode.asyncFactory.resolved) ? hydrate(oldVnode.elm, vnode, insertedVnodeQueue) : vnode.isAsyncPlaceholder = !0; else if (isTrue(vnode.isStatic) && isTrue(oldVnode.isStatic) && vnode.key === oldVnode.key && (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) vnode.componentInstance = oldVnode.componentInstance; else { var i, data = vnode.data; isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch) && i(oldVnode, vnode); var oldCh = oldVnode.children, ch = vnode.children; if (isDef(data) && isPatchable(vnode)) { for (i = 0; i < cbs.update.length; ++i) cbs.update[i](oldVnode, vnode); isDef(i = data.hook) && isDef(i = i.update) && i(oldVnode, vnode); } isUndef(vnode.text) ? isDef(oldCh) && isDef(ch) ? oldCh !== ch && function(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) { for (var oldKeyToIdx, idxInOld, vnodeToMove, oldStartIdx = 0, newStartIdx = 0, oldEndIdx = oldCh.length - 1, oldStartVnode = oldCh[0], oldEndVnode = oldCh[oldEndIdx], newEndIdx = newCh.length - 1, newStartVnode = newCh[0], newEndVnode = newCh[newEndIdx], canMove = !removeOnly; oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx; ) isUndef(oldStartVnode) ? oldStartVnode = oldCh[++oldStartIdx] : isUndef(oldEndVnode) ? oldEndVnode = oldCh[--oldEndIdx] : sameVnode(oldStartVnode, newStartVnode) ? (patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx), oldStartVnode = oldCh[++oldStartIdx], newStartVnode = newCh[++newStartIdx]) : sameVnode(oldEndVnode, newEndVnode) ? (patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx), oldEndVnode = oldCh[--oldEndIdx], newEndVnode = newCh[--newEndIdx]) : sameVnode(oldStartVnode, newEndVnode) ? (patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx), canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm)), oldStartVnode = oldCh[++oldStartIdx], newEndVnode = newCh[--newEndIdx]) : sameVnode(oldEndVnode, newStartVnode) ? (patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx), canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm), oldEndVnode = oldCh[--oldEndIdx], newStartVnode = newCh[++newStartIdx]) : (isUndef(oldKeyToIdx) && (oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx)), isUndef(idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx)) ? createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, !1, newCh, newStartIdx) : sameVnode(vnodeToMove = oldCh[idxInOld], newStartVnode) ? (patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx), oldCh[idxInOld] = void 0, canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm)) : createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, !1, newCh, newStartIdx), newStartVnode = newCh[++newStartIdx]); oldStartIdx > oldEndIdx ? addVnodes(parentElm, isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue) : newStartIdx > newEndIdx && removeVnodes(0, oldCh, oldStartIdx, oldEndIdx); }(elm, oldCh, ch, insertedVnodeQueue, removeOnly) : isDef(ch) ? (isDef(oldVnode.text) && nodeOps.setTextContent(elm, ""), addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue)) : isDef(oldCh) ? removeVnodes(0, oldCh, 0, oldCh.length - 1) : isDef(oldVnode.text) && nodeOps.setTextContent(elm, "") : oldVnode.text !== vnode.text && nodeOps.setTextContent(elm, vnode.text), isDef(data) && isDef(i = data.hook) && isDef(i = i.postpatch) && i(oldVnode, vnode); } } } function invokeInsertHook(vnode, queue, initial) { if (isTrue(initial) && isDef(vnode.parent)) vnode.parent.data.pendingInsert = queue; else for (var i = 0; i < queue.length; ++i) queue[i].data.hook.insert(queue[i]); } var isRenderedModule = makeMap("attrs,class,staticClass,staticStyle,key"); function hydrate(elm, vnode, insertedVnodeQueue, inVPre) { var i, tag = vnode.tag, data = vnode.data, children = vnode.children; if (inVPre = inVPre || data && data.pre, vnode.elm = elm, isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) return vnode.isAsyncPlaceholder = !0, !0; if (isDef(data) && (isDef(i = data.hook) && isDef(i = i.init) && i(vnode, !0), isDef(i = vnode.componentInstance))) return initComponent(vnode, insertedVnodeQueue), !0; if (isDef(tag)) { if (isDef(children)) if (elm.hasChildNodes()) if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) { if (i !== elm.innerHTML) return !1; } else { for (var childrenMatch = !0, childNode = elm.firstChild, i$1 = 0; i$1 < children.length; i$1++) { if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) { childrenMatch = !1; break; } childNode = childNode.nextSibling; } if (!childrenMatch || childNode) return !1; } else createChildren(vnode, children, insertedVnodeQueue); if (isDef(data)) { var fullInvoke = !1; for (var key in data) if (!isRenderedModule(key)) { fullInvoke = !0, invokeCreateHooks(vnode, insertedVnodeQueue); break; } !fullInvoke && data.class && traverse(data.class); } } else elm.data !== vnode.text && (elm.data = vnode.text); return !0; } return function(oldVnode, vnode, hydrating, removeOnly) { if (!isUndef(vnode)) { var elm, isInitialPatch = !1, insertedVnodeQueue = []; if (isUndef(oldVnode)) isInitialPatch = !0, createElm(vnode, insertedVnodeQueue); else { var isRealElement = isDef(oldVnode.nodeType); if (!isRealElement && sameVnode(oldVnode, vnode)) patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly); else { if (isRealElement) { if (1 === oldVnode.nodeType && oldVnode.hasAttribute(SSR_ATTR) && (oldVnode.removeAttribute(SSR_ATTR), hydrating = !0), isTrue(hydrating) && hydrate(oldVnode, vnode, insertedVnodeQueue)) return invokeInsertHook(vnode, insertedVnodeQueue, !0), oldVnode; elm = oldVnode, oldVnode = new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], void 0, elm); } var oldElm = oldVnode.elm, parentElm = nodeOps.parentNode(oldElm); if (createElm(vnode, insertedVnodeQueue, oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm)), isDef(vnode.parent)) for (var ancestor = vnode.parent, patchable = isPatchable(vnode); ancestor; ) { for (var i = 0; i < cbs.destroy.length; ++i) cbs.destroy[i](ancestor); if (ancestor.elm = vnode.elm, patchable) { for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) cbs.create[i$1](emptyNode, ancestor); var insert = ancestor.data.hook.insert; if (insert.merged) for (var i$2 = 1; i$2 < insert.fns.length; i$2++) insert.fns[i$2](); } else registerRef(ancestor); ancestor = ancestor.parent; } isDef(parentElm) ? removeVnodes(0, [ oldVnode ], 0, 0) : isDef(oldVnode.tag) && invokeDestroyHook(oldVnode); } } return invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch), vnode.elm; } isDef(oldVnode) && invokeDestroyHook(oldVnode); }; }({ nodeOps: nodeOps, modules: [ attrs, klass, events, domProps, style, inBrowser ? { create: _enter, activate: _enter, remove: function(vnode, rm) { !0 !== vnode.data.show ? leave(vnode, rm) : rm(); } } : {} ].concat(baseModules) }); isIE9 && document.addEventListener("selectionchange", function() { var el = document.activeElement; el && el.vmodel && trigger(el, "input"); }); var directive = { inserted: function(el, binding, vnode, oldVnode) { "select" === vnode.tag ? (oldVnode.elm && !oldVnode.elm._vOptions ? mergeVNodeHook(vnode, "postpatch", function() { directive.componentUpdated(el, binding, vnode); }) : setSelected(el, binding, vnode.context), el._vOptions = [].map.call(el.options, getValue)) : ("textarea" === vnode.tag || isTextInputType(el.type)) && (el._vModifiers = binding.modifiers, binding.modifiers.lazy || (el.addEventListener("compositionstart", onCompositionStart), el.addEventListener("compositionend", onCompositionEnd), el.addEventListener("change", onCompositionEnd), isIE9 && (el.vmodel = !0))); }, componentUpdated: function(el, binding, vnode) { if ("select" === vnode.tag) { setSelected(el, binding, vnode.context); var prevOptions = el._vOptions, curOptions = el._vOptions = [].map.call(el.options, getValue); if (curOptions.some(function(o, i) { return !looseEqual(o, prevOptions[i]); })) (el.multiple ? binding.value.some(function(v) { return hasNoMatchingOption(v, curOptions); }) : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions)) && trigger(el, "change"); } } }; function setSelected(el, binding, vm) { actuallySetSelected(el, binding, vm), (isIE || isEdge) && setTimeout(function() { actuallySetSelected(el, binding, vm); }, 0); } function actuallySetSelected(el, binding, vm) { var value = binding.value, isMultiple = el.multiple; if (!isMultiple || Array.isArray(value)) { for (var selected, option, i = 0, l = el.options.length; i < l; i++) if (option = el.options[i], isMultiple) selected = looseIndexOf(value, getValue(option)) > -1, option.selected !== selected && (option.selected = selected); else if (looseEqual(getValue(option), value)) return void (el.selectedIndex !== i && (el.selectedIndex = i)); isMultiple || (el.selectedIndex = -1); } } function hasNoMatchingOption(value, options) { return options.every(function(o) { return !looseEqual(o, value); }); } function getValue(option) { return "_value" in option ? option._value : option.value; } function onCompositionStart(e) { e.target.composing = !0; } function onCompositionEnd(e) { e.target.composing && (e.target.composing = !1, trigger(e.target, "input")); } function trigger(el, type) { var e = document.createEvent("HTMLEvents"); e.initEvent(type, !0, !0), el.dispatchEvent(e); } function locateNode(vnode) { return !vnode.componentInstance || vnode.data && vnode.data.transition ? vnode : locateNode(vnode.componentInstance._vnode); } var platformDirectives = { model: directive, show: { bind: function(el, ref, vnode) { var value = ref.value, transition$$1 = (vnode = locateNode(vnode)).data && vnode.data.transition, originalDisplay = el.__vOriginalDisplay = "none" === el.style.display ? "" : el.style.display; value && transition$$1 ? (vnode.data.show = !0, enter(vnode, function() { el.style.display = originalDisplay; })) : el.style.display = value ? originalDisplay : "none"; }, update: function(el, ref, vnode) { var value = ref.value; !value != !ref.oldValue && ((vnode = locateNode(vnode)).data && vnode.data.transition ? (vnode.data.show = !0, value ? enter(vnode, function() { el.style.display = el.__vOriginalDisplay; }) : leave(vnode, function() { el.style.display = "none"; })) : el.style.display = value ? el.__vOriginalDisplay : "none"); }, unbind: function(el, binding, vnode, oldVnode, isDestroy) { isDestroy || (el.style.display = el.__vOriginalDisplay); } } }, transitionProps = { name: String, appear: Boolean, css: Boolean, mode: String, type: String, enterClass: String, leaveClass: String, enterToClass: String, leaveToClass: String, enterActiveClass: String, leaveActiveClass: String, appearClass: String, appearActiveClass: String, appearToClass: String, duration: [ Number, String, Object ] }; function getRealChild(vnode) { var compOptions = vnode && vnode.componentOptions; return compOptions && compOptions.Ctor.options.abstract ? getRealChild(getFirstComponentChild(compOptions.children)) : vnode; } function extractTransitionData(comp) { var data = {}, options = comp.$options; for (var key in options.propsData) data[key] = comp[key]; var listeners = options._parentListeners; for (var key$1 in listeners) data[camelize(key$1)] = listeners[key$1]; return data; } function placeholder(h, rawChild) { if (/\d-keep-alive$/.test(rawChild.tag)) return h("keep-alive", { props: rawChild.componentOptions.propsData }); } var isNotTextNode = function(c) { return c.tag || isAsyncPlaceholder(c); }, isVShowDirective = function(d) { return "show" === d.name; }, Transition = { name: "transition", props: transitionProps, abstract: !0, render: function(h) { var this$1 = this, children = this.$slots.default; if (children && (children = children.filter(isNotTextNode)).length) { 0; var mode = this.mode; 0; var rawChild = children[0]; if (function(vnode) { for (;vnode = vnode.parent; ) if (vnode.data.transition) return !0; }(this.$vnode)) return rawChild; var child = getRealChild(rawChild); if (!child) return rawChild; if (this._leaving) return placeholder(h, rawChild); var id = "__transition-" + this._uid + "-"; child.key = null == child.key ? child.isComment ? id + "comment" : id + child.tag : isPrimitive(child.key) ? 0 === String(child.key).indexOf(id) ? child.key : id + child.key : child.key; var data = (child.data || (child.data = {})).transition = extractTransitionData(this), oldRawChild = this._vnode, oldChild = getRealChild(oldRawChild); if (child.data.directives && child.data.directives.some(isVShowDirective) && (child.data.show = !0), oldChild && oldChild.data && !function(child, oldChild) { return oldChild.key === child.key && oldChild.tag === child.tag; }(child, oldChild) && !isAsyncPlaceholder(oldChild) && (!oldChild.componentInstance || !oldChild.componentInstance._vnode.isComment)) { var oldData = oldChild.data.transition = extend({}, data); if ("out-in" === mode) return this._leaving = !0, mergeVNodeHook(oldData, "afterLeave", function() { this$1._leaving = !1, this$1.$forceUpdate(); }), placeholder(h, rawChild); if ("in-out" === mode) { if (isAsyncPlaceholder(child)) return oldRawChild; var delayedLeave, performLeave = function() { delayedLeave(); }; mergeVNodeHook(data, "afterEnter", performLeave), mergeVNodeHook(data, "enterCancelled", performLeave), mergeVNodeHook(oldData, "delayLeave", function(leave) { delayedLeave = leave; }); } } return rawChild; } } }, props = extend({ tag: String, moveClass: String }, transitionProps); function callPendingCbs(c) { c.elm._moveCb && c.elm._moveCb(), c.elm._enterCb && c.elm._enterCb(); } function recordPosition(c) { c.data.newPos = c.elm.getBoundingClientRect(); } function applyTranslation(c) { var oldPos = c.data.pos, newPos = c.data.newPos, dx = oldPos.left - newPos.left, dy = oldPos.top - newPos.top; if (dx || dy) { c.data.moved = !0; var s = c.elm.style; s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)", s.transitionDuration = "0s"; } } delete props.mode; var platformComponents = { Transition: Transition, TransitionGroup: { props: props, beforeMount: function() { var this$1 = this, update = this._update; this._update = function(vnode, hydrating) { var restoreActiveInstance = setActiveInstance(this$1); this$1.__patch__(this$1._vnode, this$1.kept, !1, !0), this$1._vnode = this$1.kept, restoreActiveInstance(), update.call(this$1, vnode, hydrating); }; }, render: function(h) { for (var tag = this.tag || this.$vnode.data.tag || "span", map = Object.create(null), prevChildren = this.prevChildren = this.children, rawChildren = this.$slots.default || [], children = this.children = [], transitionData = extractTransitionData(this), i = 0; i < rawChildren.length; i++) { var c = rawChildren[i]; if (c.tag) if (null != c.key && 0 !== String(c.key).indexOf("__vlist")) children.push(c), map[c.key] = c, (c.data || (c.data = {})).transition = transitionData; else ; } if (prevChildren) { for (var kept = [], removed = [], i$1 = 0; i$1 < prevChildren.length; i$1++) { var c$1 = prevChildren[i$1]; c$1.data.transition = transitionData, c$1.data.pos = c$1.elm.getBoundingClientRect(), map[c$1.key] ? kept.push(c$1) : removed.push(c$1); } this.kept = h(tag, null, kept), this.removed = removed; } return h(tag, null, children); }, updated: function() { var children = this.prevChildren, moveClass = this.moveClass || (this.name || "v") + "-move"; children.length && this.hasMove(children[0].elm, moveClass) && (children.forEach(callPendingCbs), children.forEach(recordPosition), children.forEach(applyTranslation), this._reflow = document.body.offsetHeight, children.forEach(function(c) { if (c.data.moved) { var el = c.elm, s = el.style; addTransitionClass(el, moveClass), s.transform = s.WebkitTransform = s.transitionDuration = "", el.addEventListener(transitionEndEvent, el._moveCb = function cb(e) { e && e.target !== el || e && !/transform$/.test(e.propertyName) || (el.removeEventListener(transitionEndEvent, cb), el._moveCb = null, removeTransitionClass(el, moveClass)); }); } })); }, methods: { hasMove: function(el, moveClass) { if (!hasTransition) return !1; if (this._hasMove) return this._hasMove; var clone = el.cloneNode(); el._transitionClasses && el._transitionClasses.forEach(function(cls) { removeClass(clone, cls); }), addClass(clone, moveClass), clone.style.display = "none", this.$el.appendChild(clone); var info = getTransitionInfo(clone); return this.$el.removeChild(clone), this._hasMove = info.hasTransform; } } } }; Vue.config.mustUseProp = function(tag, type, attr) { return "value" === attr && acceptValue(tag) && "button" !== type || "selected" === attr && "option" === tag || "checked" === attr && "input" === tag || "muted" === attr && "video" === tag; }, Vue.config.isReservedTag = isReservedTag, Vue.config.isReservedAttr = isReservedAttr, Vue.config.getTagNamespace = function(tag) { return isSVG(tag) ? "svg" : "math" === tag ? "math" : void 0; }, Vue.config.isUnknownElement = function(tag) { if (!inBrowser) return !0; if (isReservedTag(tag)) return !1; if (tag = tag.toLowerCase(), null != unknownElementCache[tag]) return unknownElementCache[tag]; var el = document.createElement(tag); return tag.indexOf("-") > -1 ? unknownElementCache[tag] = el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement : unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()); }, extend(Vue.options.directives, platformDirectives), extend(Vue.options.components, platformComponents), Vue.prototype.__patch__ = inBrowser ? patch : noop, Vue.prototype.$mount = function(el, hydrating) { return function(vm, el, hydrating) { var updateComponent; return vm.$el = el, vm.$options.render || (vm.$options.render = createEmptyVNode), callHook(vm, "beforeMount"), updateComponent = function() { vm._update(vm._render(), hydrating); }, new Watcher(vm, updateComponent, noop, { before: function() { vm._isMounted && !vm._isDestroyed && callHook(vm, "beforeUpdate"); } }, !0), hydrating = !1, null == vm.$vnode && (vm._isMounted = !0, callHook(vm, "mounted")), vm; }(this, el = el && inBrowser ? function(el) { if ("string" == typeof el) { var selected = document.querySelector(el); return selected || document.createElement("div"); } return el; }(el) : void 0, hydrating); }, inBrowser && setTimeout(function() { config.devtools && devtools && devtools.emit("init", Vue); }, 0), __webpack_exports__.a = Vue; }).call(this, __webpack_require__(28), __webpack_require__(85).setImmediate); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j) { __webpack_require__.d(__webpack_exports__, "a", function() { return userscriptLegacy; }); var __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; const userscriptLegacy = { set(key, value) { return __awaiter(this, void 0, void 0, function*() { GM_setValue(key, value); }); }, get(key) { return __awaiter(this, void 0, void 0, function*() { return GM_getValue(key); }); }, remove(key) { return __awaiter(this, void 0, void 0, function*() { GM_deleteValue(key); }); }, list() { return __awaiter(this, void 0, void 0, function*() { var reverseArray = {}; return j.$.each(GM_listValues(), function(index, cache) { reverseArray[cache] = index; }), reverseArray; }); }, addStyle(css) { return __awaiter(this, void 0, void 0, function*() { GM_addStyle(css); }); }, version: () => GM_info.script.version, assetUrl: filename => "https://raw.githubusercontent.com/lolamtisch/MALSync/master/assets/assets/" + filename, injectCssResource(res, head) { head.append(j.$("<style>").attr("rel", "stylesheet").attr("type", "text/css").html(GM_getResourceText(res))); }, injectjsResource(res, head) { var s = document.createElement("script"); s.text = GM_getResourceText(res), s.onload = function() { this.remove(); }, head.get(0).appendChild(s); }, updateDom(head) { var s = document.createElement("script"); s.text = "\n document.getElementsByTagName('head')[0].onclick = function(e){\n try{\n componentHandler.upgradeDom();\n }catch(e){\n console.log(e);\n setTimeout(function(){\n componentHandler.upgradeDom();\n },500);\n }\n }", s.onload = function() { this.remove(); }, head.get(0).appendChild(s); } }; }).call(this, __webpack_require__(1)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return settingsObj; }); var __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }, settingsObj = { options: { autoTracking: !0, userscriptMode: !1, syncMode: "MAL", delay: 0, malTags: !0, malContinue: !0, malResume: !0, epPredictions: !0, posLeft: "left", miniMALonMal: !1, floatButtonStealth: !1, outWay: !0, miniMalWidth: "500px", miniMalHeight: "90%", malThumbnail: 100, friendScore: !0, SiteSearch: !0, "9anime": !0, Crunchyroll: !0, Gogoanime: !0, Kissanime: !0, Masterani: !0, Animeheaven: !0, Twistmoe: !0, Anime4you: !0, Kissmanga: !0, Mangadex: !0, Mangarock: !0, updateCheckNotifications: !0, anilistToken: "" }, init: function() { return __awaiter(this, void 0, void 0, function*() { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function*() { for (var key in this.options) { var store = yield api.storage.get("settings/" + key); void 0 !== store && (this.options[key] = store); } con.log("Settings", this.options), resolve(this); })); }); }, get: function(name) { return this.options[name]; }, set: function(name, value) { if (this.options.hasOwnProperty(name)) return this.options[name] = value, api.storage.set("settings/" + name, value); con.error(name + " is not a defined option"); } }; }).call(this, __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, utils, api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return syncPage; }); var _pages__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8), _provider_provider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7), _minimal_iframe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44), _provider_templates__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9), __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; class syncPage { constructor(url) { if (this.url = url, this.UILoaded = !1, this.page = this.getPage(url), null == this.page) throw new Error("Page could not be recognized"); } init() { var This = this; j.$(document).ready(function() { Object(_minimal_iframe__WEBPACK_IMPORTED_MODULE_2__.a)(This); }), this.page.init(this); } getPage(url) { for (var key in _pages__WEBPACK_IMPORTED_MODULE_0__.b) { var page = _pages__WEBPACK_IMPORTED_MODULE_0__.b[key]; if (j.$.isArray(page.domain)) for (var k in page.domain) { var singleDomain = page.domain[k]; if (checkDomain(singleDomain)) return page.domain = singleDomain, page; } else if (checkDomain(page.domain)) return page; function checkDomain(domain) { return url.indexOf(utils.urlPart(domain, 2).split(".").slice(-2, -1)[0] + ".") > -1; } } return null; } handlePage() { return __awaiter(this, void 0, void 0, function*() { var state, This = this; if (this.url = window.location.href, this.loadUI(), this.page.isSyncPage(this.url)) state = { title: this.page.sync.getTitle(this.url), identifier: this.page.sync.getIdentifier(this.url) }, this.offset = yield api.storage.get(this.page.name + "/" + state.identifier + "/Offset"), state.episode = +parseInt(this.page.sync.getEpisode(this.url) + "") + parseInt(this.getOffset()), void 0 !== this.page.sync.getVolume && (state.volume = this.page.sync.getVolume(this.url)), con.log("Sync", state); else { if (void 0 === this.page.overview) return void con.log("No overview definition"); state = { title: this.page.overview.getTitle(this.url), identifier: this.page.overview.getIdentifier(this.url) }, this.offset = yield api.storage.get(this.page.name + "/" + state.identifier + "/Offset"), con.log("Overview", state); } var malUrl = yield this.getMalUrl(state.identifier, state.title, this.page); if (null === malUrl) j.$("#MalInfo").text("Not Found!"), con.log("Not on mal"); else if (malUrl) { if (con.log("MyAnimeList", malUrl), this.malObj = Object(_provider_provider__WEBPACK_IMPORTED_MODULE_1__.a)(malUrl), yield this.malObj.init(), this.oldMalObj = this.malObj.clone(), this.fillUI(), !this.malObj.login) return void utils.flashm(Object(_provider_templates__WEBPACK_IMPORTED_MODULE_3__.a)().noLogin, { error: !0 }); if (this.page.isSyncPage(this.url)) if (yield this.handleAnimeUpdate(state)) { if (con.log("Start Sync (" + api.settings.get("delay") + " Seconds)"), api.settings.get("autoTracking")) setTimeout(() => { sync(); }, 1e3 * api.settings.get("delay")); else { if ("anime" == This.page.type) var epis = "episode: " + state.episode; else epis = "chapter: <b>" + state.episode + "</b>"; var message = '<button class="sync" style="margin-bottom: 8px; background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px;cursor: pointer;">Update ' + Object(_provider_templates__WEBPACK_IMPORTED_MODULE_3__.a)().shortName + " to " + epis + "</button>"; utils.flashm(message, { hoverInfo: !0, error: !0, type: "update" }).find(".sync").on("click", function() { j.$(".flashinfo").remove(), sync(); }), con.log("overviewUrl", This.page.sync.getOverviewUrl(This.url)), void 0 !== This.page.sync.nextEpUrl && con.log("nextEp", This.page.sync.nextEpUrl(This.url)); } function sync() { if (This.malObj.setResumeWaching(This.url, state.episode), void 0 !== This.page.sync.nextEpUrl) { var continueWatching = This.page.sync.nextEpUrl(This.url); continueWatching && -1 == continueWatching.indexOf("undefined") && This.malObj.setContinueWaching(continueWatching, state.episode + 1); } This.syncHandling(!0); } } else con.log("Nothing to Sync"); } else j.$("#MalInfo").text("Nothing Found!"), con.log("Nothing found"); }); } syncHandling(hoverInfo = !1) { var This = this; return this.malObj.sync().then(function() { var message = This.malObj.name, split = "<br>", totalVol = This.malObj.totalVol; 0 == totalVol && (totalVol = "?"); var totalEp = This.malObj.totalEp; if (0 == totalEp && (totalEp = "?"), void 0 === This.oldMalObj || This.malObj.getStatus() != This.oldMalObj.getStatus()) { var statusString = ""; switch (parseInt(This.malObj.getStatus())) { case 1: statusString = utils.watching(This.page.type); break; case 2: statusString = "Completed"; break; case 3: statusString = "On-Hold"; break; case 4: statusString = "Dropped"; break; case 6: statusString = utils.planTo(This.page.type); } message += split + statusString, split = " | "; } "manga" != This.page.type || void 0 !== This.oldMalObj && This.malObj.getVolume() == This.oldMalObj.getVolume() || (message += split + "Volume: " + This.malObj.getVolume() + "/" + totalVol, split = " | "), void 0 !== This.oldMalObj && This.malObj.getEpisode() == This.oldMalObj.getEpisode() || (message += split + "Episode: " + This.malObj.getEpisode() + "/" + totalEp, split = " | "), (void 0 === This.oldMalObj || This.malObj.getScore() != This.oldMalObj.getScore() && "" != This.malObj.getScore()) && (message += split + "Rating: " + This.malObj.getScore(), split = " | "), hoverInfo ? (void 0 !== This.oldMalObj && (message += '<br><button class="undoButton" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px;cursor: pointer;">Undo</button>'), utils.flashm(message, { hoverInfo: !0, type: "update" }).find(".undoButton").on("click", function() { this.closest(".flash").remove(), This.malObj = This.oldMalObj, This.oldMalObj = void 0, This.syncHandling(); })) : utils.flashm(message), This.fillUI(); }).catch(function(e) { con.error(e), utils.flashm("Update failed", { error: !0 }); }); } handleAnimeUpdate(state) { return __awaiter(this, void 0, void 0, function*() { var status = utils.status; if (this.malObj.getEpisode() >= state.episode && (this.malObj.getStatus() != status.completed || 1 !== state.episode || 1 === this.malObj.totalEp || 1 === this.malObj.getRewatching())) return !1; if (this.malObj.setEpisode(state.episode), this.malObj.setStreamingUrl(this.page.sync.getOverviewUrl(this.url)), this.malObj.setStartingDateToNow(), this.malObj.getStatus() !== status.completed && parseInt(state.episode) === this.malObj.totalEp && 0 != parseInt(state.episode) && (yield utils.flashConfirm("Set as completed?", "complete"))) return this.malObj.setStatus(status.completed), this.malObj.setCompletionDateToNow(), !0; if (this.malObj.getStatus() !== status.watching && this.malObj.getStatus() !== status.completed && state.status !== status.completed) { if (!(yield utils.flashConfirm("Start " + utils.watching(this.page.type).toLowerCase() + "?", "start"))) return !1; this.malObj.setStatus(status.watching); } return !0; }); } fillUI() { if (j.$(".MalLogin").css("display", "initial"), j.$("#AddMalDiv").remove(), j.$("#malRating").attr("href", this.malObj.getDisplayUrl()), this.malObj.getRating().then(rating => { j.$("#malRating").text(rating); }), !this.malObj.login) return j.$(".MalLogin").css("display", "none"), j.$("#MalData").css("display", "flex"), j.$("#MalInfo").text(""), void j.$("#malRating").after(" <span id='LoginMalDiv'>" + Object(_provider_templates__WEBPACK_IMPORTED_MODULE_3__.a)().noLogin + "</span>"); if (this.malObj.addAnime) { j.$(".MalLogin").css("display", "none"), j.$("#malRating").after("<span id='AddMalDiv'> <a href='#' id='AddMal' onclick='return false;'>Add to " + Object(_provider_templates__WEBPACK_IMPORTED_MODULE_3__.a)().shortName + "</a></span>"); var This = this; j.$("#AddMal").click(function() { This.malObj.setStatus(6), This.syncHandling().then(() => This.malObj.update()).then(() => { This.fillUI(); }); }); } else j.$("#malTotal, #malTotalCha").text(this.malObj.totalEp), 0 == this.malObj.totalEp && j.$("#malTotal, #malTotalCha").text("?"), j.$("#malTotalVol").text(this.malObj.totalVol), 0 == this.malObj.totalVol && j.$("#malTotalVol").text("?"), j.$("#malEpisodes").val(this.malObj.getEpisode()), j.$("#malVolumes").val(this.malObj.getVolume()), j.$("#malStatus").val(this.malObj.getStatus()), j.$("#malUserRating").val(this.malObj.getScore()); j.$("#MalData").css("display", "flex"), j.$("#MalInfo").text(""), j.$("#malEpisodes, #malVolumes").trigger("input"); try { this.handleList(!0); } catch (e) { con.error(e); } } handleList(searchCurrent = !1, reTry = 0) { if (j.$(".mal-sync-active").removeClass("mal-sync-active"), void 0 !== this.page.overview && void 0 !== this.page.overview.list) { var epList = this.getEpList(); if (void 0 !== epList && epList.length > 0) { this.offsetHandler(epList); var elementUrl = this.page.overview.list.elementUrl; con.log("Episode List", j.$.map(epList, function(val, i) { return void 0 !== val ? elementUrl(val) : "-"; })); var curEp = epList[this.malObj.getEpisode()]; if (void 0 !== curEp && curEp) curEp.addClass("mal-sync-active"); else if (this.malObj.getEpisode() && searchCurrent && reTry < 10 && void 0 !== this.page.overview.list.paginationNext) { con.log("Pagination next"); var This = this; this.page.overview.list.paginationNext() && setTimeout(function() { reTry++, This.handleList(!0, reTry); }, 500); } var nextEp = epList[this.malObj.getEpisode() + 1]; if (void 0 !== nextEp && nextEp && !this.page.isSyncPage(this.url)) { var message = '<a href="' + elementUrl(nextEp) + '">' + utils.episode(this.page.type) + " " + (this.malObj.getEpisode() + 1) + "</a>"; utils.flashm(message, { hoverInfo: !0, type: "nextEp" }); } } } } getEpList() { var This = this; if (void 0 !== this.page.overview && void 0 !== this.page.overview.list) { var elementEp = this.page.overview.list.elementEp, elementArray = []; return this.page.overview.list.elementsSelector().each(function(index, el) { try { var elEp = parseInt(elementEp(j.$(el)) + "") + parseInt(This.getOffset()); elementArray[elEp] = j.$(el); } catch (e) { con.info(e); } }), elementArray; } } offsetHandler(epList) { if (this.page.overview.list.offsetHandler && (void 0 === this.offset || "0" === this.offset)) for (var i = 0; i < epList.length; ++i) if (void 0 !== epList[i]) { if (con.log("Offset", i), i > 1) { var calcOffset = 1 - i; utils.flashConfirm("A possible Episode offset of " + calcOffset + " was detected. Is that correct? ", "offset", () => { this.setOffset(calcOffset); }, () => { this.setOffset(0); }); } return; } } cdn() {} getMalUrl(identifier, title, page) { return __awaiter(this, void 0, void 0, function*() { var url, This = this, cache = yield api.storage.get(this.page.name + "/" + identifier + "/Mal", null); if (void 0 !== cache) return con.log("Cache", this.page.name + "/" + identifier, cache), cache; if (void 0 !== page.database) { var firebaseVal = yield (url = "https://kissanimelist.firebaseio.com/Data2/" + page.database + "/" + encodeURIComponent(function(title) { if (window.location.href.indexOf("crunchyroll.com") > -1) return encodeURIComponent(title.toLowerCase().split("#")[0]).replace(/\./g, "%2E"); return title.toLowerCase().split("#")[0].replace(/\./g, "%2E"); }(identifier)).toLowerCase() + "/Mal.json", con.log("Firebase", url), api.request.xhr("GET", url).then(response => { if (con.log("Firebase response", response.responseText), "null" === response.responseText || response.responseText.indexOf("error") > -1) return !1; var returnUrl = ""; return returnUrl = "Not-Found" == response.responseText.split('"')[1] ? null : "https://myanimelist.net/" + page.type + "/" + response.responseText.split('"')[1] + "/" + response.responseText.split('"')[3], This.setCache(returnUrl, !1, identifier), returnUrl; })); if (!1 !== firebaseVal) return firebaseVal; } var malSearchVal = yield function() { var url = "https://myanimelist.net/" + page.type + ".php?q=" + encodeURI(title); return con.log("malSearch", url), api.request.xhr("GET", url).then(response => { if ("null" === response.responseText || response.responseText.indexOf(" error ") > -1) return !1; try { var link = response.responseText.split('<a class="hoverinfo_trigger" href="')[1].split('"')[0]; return This.setCache(link, !0, identifier), link; } catch (e) { con.error(e); try { return link = response.responseText.split('class="picSurround')[1].split("<a")[1].split('href="')[1].split('"')[0], This.setCache(link, !0, identifier), link; } catch (e) { return con.error(e), !1; } } }); }(); return !1 !== malSearchVal && malSearchVal; }); } setCache(url, toDatabase, identifier = null) { null == identifier && (identifier = this.page.isSyncPage(this.url) ? this.page.sync.getIdentifier(this.url) : this.page.overview.getIdentifier(this.url)), api.storage.set(this.page.name + "/" + identifier + "/Mal", url), this.databaseRequest(url, toDatabase, identifier); } databaseRequest(malurl, toDatabase, identifier, kissurl = null) { if (void 0 !== this.page.database && toDatabase) { null == kissurl && (kissurl = this.page.isSyncPage(this.url) ? this.page.sync.getOverviewUrl(this.url) : this.url); var param = { Kiss: kissurl, Mal: malurl }; "correction" == toDatabase && (param.newCorrection = !0); var url = "https://kissanimelist.firebaseio.com/Data2/Request/" + this.page.database + "Request.json"; api.request.xhr("POST", { url: url, data: JSON.stringify(param) }).then(response => { "null" === response.responseText || response.responseText.indexOf("error") > -1 ? con.error("[DB] Send to database:", response.responseText) : con.log("[DB] Send to database:", param); }); } } deleteCache() { var getIdentifier; getIdentifier = this.page.isSyncPage(this.url) ? this.page.sync.getIdentifier : this.page.overview.getIdentifier, api.storage.remove(this.page.name + "/" + getIdentifier(this.url) + "/Mal"); } getOffset() { return void 0 === this.offset ? 0 : this.offset; } setOffset(value) { return __awaiter(this, void 0, void 0, function*() { var getIdentifier; this.offset = value, this.page.isSyncPage(this.url) ? getIdentifier = this.page.sync.getIdentifier : (getIdentifier = this.page.overview.getIdentifier, this.handleList()); var returnValue = api.storage.set(this.page.name + "/" + getIdentifier(this.url) + "/Offset", value); return void 0 !== this.malObj && api.storage.remove("updateCheck/" + this.malObj.type + "/" + this.malObj.id), returnValue; }); } loadUI() { if (!this.UILoaded) { this.UILoaded = !0; var wrapStart = '<span style="display: inline-block;">', ui = '<p id="malp">'; if (ui += '<span id="MalInfo">Loading</span>', ui += '<span id="MalData" style="display: none; justify-content: space-between; flex-wrap: wrap;">', ui += wrapStart, ui += '<span class="info">' + Object(_provider_templates__WEBPACK_IMPORTED_MODULE_3__.a)().score + " </span>", ui += '<a id="malRating" style="min-width: 30px;display: inline-block;" target="_blank" href="">____</a>', ui += "</span>", ui += wrapStart = '<span style="display: inline-block; display: none;" class="MalLogin">', ui += '<span class="info">Status: </span>', ui += '<select id="malStatus">', ui += '<option value="1" >' + utils.watching(this.page.type) + "</option>", ui += '<option value="2" >Completed</option>', ui += '<option value="3" >On-Hold</option>', ui += '<option value="4" >Dropped</option>', ui += '<option value="6" >' + utils.planTo(this.page.type) + "</option>", ui += "</select>", ui += "</span>", "anime" == this.page.type) { var middle = ""; middle += wrapStart, middle += '<span class="info">Episode: </span>', middle += '<span style=" text-decoration: none; outline: medium none;">', middle += '<input id="malEpisodes" value="0" type="text" size="1" maxlength="4">', middle += '/<span id="malTotal">0</span>', middle += "</span>", middle += "</span>"; } else { middle = ""; middle += wrapStart, middle += '<span class="info">Volume: </span>', middle += '<span style=" text-decoration: none; outline: medium none;">', middle += '<input id="malVolumes" value="0" type="text" size="1" maxlength="4">', middle += '/<span id="malTotalVol">0</span>', middle += "</span>", middle += "</span>", middle += wrapStart, middle += '<span class="info">Chapter: </span>', middle += '<span style=" text-decoration: none; outline: medium none;">', middle += '<input id="malEpisodes" value="0" type="text" size="1" maxlength="4">', middle += '/<span id="malTotalCha">0</span>', middle += "</span>", middle += "</span>"; } ui += middle, ui += wrapStart, ui += '<span class="info">Your Score: </span>', ui += '<select id="malUserRating"><option value="" >Select</option>', ui += '<option value="10" >(10) Masterpiece</option>', ui += '<option value="9" >(9) Great</option>', ui += '<option value="8" >(8) Very Good</option>', ui += '<option value="7" >(7) Good</option>', ui += '<option value="6" >(6) Fine</option>', ui += '<option value="5" >(5) Average</option>', ui += '<option value="4" >(4) Bad</option>', ui += '<option value="3" >(3) Very Bad</option>', ui += '<option value="2" >(2) Horrible</option>', ui += '<option value="1" >(1) Appalling</option>', ui += "</select>", ui += "</span>", ui += "</span>", ui += "</p>"; '<p class="headui" style="float: right; margin: 0; margin-right: 10px">', "", "</p>"; '<button class="open-info-popup mdl-button" style="display:none; margin-left: 6px;">MAL</button>', this.page.isSyncPage(this.url) ? void 0 !== this.page.sync.uiSelector && this.page.sync.uiSelector(j.$(ui)) : void 0 !== this.page.overview && this.page.overview.uiSelector(j.$(ui)); var This = this; j.$("#malEpisodes, #malVolumes, #malUserRating, #malStatus").change(function() { This.buttonclick(); }), j.$("#malEpisodes, #malVolumes").on("input", function() { var el = $(this), numberlength = el.val().toString().length; numberlength < 1 && (numberlength = 1); var numberWidth = 7.7 * numberlength + 3; el.css("width", numberWidth + "px"); }).trigger("input"); } } buttonclick() { this.malObj.setEpisode(j.$("#malEpisodes").val()), j.$("#malVolumes").length && this.malObj.setVolume(j.$("#malVolumes").val()), this.malObj.setScore(j.$("#malUserRating").val()), this.malObj.setStatus(j.$("#malStatus").val()), this.syncHandling().then(() => this.malObj.update()).then(() => { this.fillUI(); }); } } }).call(this, __webpack_require__(1), __webpack_require__(3), __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, j, con, api) { __webpack_require__.d(__webpack_exports__, "a", function() { return Kissanime; }); const Kissanime = { name: "kissanime", domain: "http://kissanime.ru", database: "Kissanime", type: "anime", isSyncPage: function(url) { return !(void 0 === utils.urlPart(url, 5) || !j.$("#centerDivVideo").length); }, sync: { getTitle: function(url) { return j.$("#navsubbar a").first().text().replace("Anime", "").replace("information", "").trim(); }, getIdentifier: function(url) { return utils.urlPart(url, 4); }, getOverviewUrl: function(url) { return url.split("/").slice(0, 5).join("/"); }, getEpisode: function(url) { var episodePart = utils.urlPart(url, 5), temp = []; return null !== (temp = (episodePart = episodePart.replace(/1080p/i, " ").replace(/720p/i, " ")).match(/[e,E][p,P][i,I]?[s,S]?[o,O]?[d,D]?[e,E]?\D?\d{3}/)) && (episodePart = temp[0]), null === (temp = episodePart.match(/\d{3}/)) ? (temp = episodePart.match(/\d{2,}\-/), episodePart = null === temp ? 1 : temp[0]) : episodePart = temp[0], episodePart; }, nextEpUrl: function(url) { return url.replace(/\/[^\/]*$/, "") + "/" + j.$("#selectEpisode option:selected").next().val(); } }, overview: { getTitle: function() { return j.$(".bigChar").first().text(); }, getIdentifier: function(url) { return Kissanime.sync.getIdentifier(url); }, uiSelector: function(selector) { selector.insertAfter(j.$(".bigChar").first()); }, list: { offsetHandler: !0, elementsSelector: function() { return j.$(".listing tr"); }, elementUrl: function(selector) { return utils.absoluteLink(selector.find("a").first().attr("href"), Kissanime.domain); }, elementEp: function(selector) { var url = Kissanime.overview.list.elementUrl(selector); return /_ED/.test(url) ? NaN : Kissanime.sync.getEpisode(url); } } }, init(page) { if ("Please wait 5 seconds..." == document.title) return con.log("loading"), void page.cdn(); api.storage.addStyle(__webpack_require__(63).toString()), j.$(document).ready(function() { page.handlePage(); }); } }; }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(2), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, j, con, api) { __webpack_require__.d(__webpack_exports__, "a", function() { return Kissmanga; }); const Kissmanga = { name: "kissmanga", domain: "http://kissmanga.com", database: "Kissmanga", type: "manga", isSyncPage: function(url) { return void 0 !== utils.urlPart(url, 5); }, sync: { getTitle: function(url) { return j.$("#navsubbar a").first().text().replace("Manga", "").replace("information", "").trim(); }, getIdentifier: function(url) { return utils.urlPart(url, 4); }, getOverviewUrl: function(url) { return url.split("/").slice(0, 5).join("/"); }, getEpisode: function(url) { var episodePart = utils.urlPart(url, 5), temp = episodePart.match(/[c,C][h,H][a,A]?[p,P]?[t,T]?[e,E]?[r,R]?\D?\d+/); return null === temp ? null === (temp = (episodePart = episodePart.replace(/[V,v][o,O][l,L]\D?\d+/, "")).match(/\d{3}/)) ? (temp = episodePart.match(/\d+/), episodePart = null === temp ? 0 : temp[0]) : episodePart = temp[0] : episodePart = temp[0].match(/\d+/)[0], episodePart; }, getVolume: function(url) { try { url = (url = url.match(/[V,v][o,O][l,L]\D?\d{3}/)[0]).match(/\d+/)[0].slice(-3); } catch (e) { return; } return url; } }, overview: { getTitle: function() { return j.$(".bigChar").first().text(); }, getIdentifier: function(url) { return Kissmanga.sync.getIdentifier(url); }, uiSelector: function(selector) { selector.insertAfter(j.$(".bigChar").first()); }, list: { offsetHandler: !0, elementsSelector: function() { return j.$(".listing tr"); }, elementUrl: function(selector) { return utils.absoluteLink(selector.find("a").first().attr("href"), Kissmanga.domain); }, elementEp: function(selector) { var url = Kissmanga.overview.list.elementUrl(selector); return /_ED/.test(url) ? NaN : Kissmanga.sync.getEpisode(url); } } }, init(page) { if ("Please wait 5 seconds..." == document.title) return con.log("loading"), void page.cdn(); api.storage.addStyle(__webpack_require__(65).toString()), j.$(document).ready(function() { page.handlePage(); }); } }; }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(2), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, utils, api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return nineAnime; }); const nineAnime = { name: "9anime", domain: "https://9anime.to", database: "9anime", type: "anime", isSyncPage: function(url) { return !0; }, sync: { getTitle: function(url) { return j.$("h1.title").text(); }, getIdentifier: function(url) { return (url = url.split("/")[4].split("?")[0]).indexOf(".") > -1 && (url = url.split(".")[1]), url; }, getOverviewUrl: function(url) { return url.split("/").slice(0, 5).join("/"); }, getEpisode: function(url) { return parseInt(j.$(".servers .episodes a.active").attr("data-base")); }, nextEpUrl: function(url) { return nineAnime.domain + j.$(".servers .episodes a.active").parent("li").next().find("a").attr("href"); }, uiSelector: function(selector) { j.$('<div class="widget info"><div class="widget-body"> <p id="malp">' + selector.html() + "</p></div></div>").insertBefore(j.$(".widget.info").first()); } }, overview: { getTitle: function(url) { return ""; }, getIdentifier: function(url) { return ""; }, uiSelector: function(selector) {}, list: { offsetHandler: !1, elementsSelector: function() { return j.$(".episodes.range a"); }, elementUrl: function(selector) { return utils.absoluteLink(selector.attr("href"), nineAnime.domain); }, elementEp: function(selector) { return selector.attr("data-base"); } } }, init(page) { api.storage.addStyle(__webpack_require__(67).toString()), utils.waitUntilTrue(function() { return j.$(".servers").length; }, function() { con.info("Start check"), page.handlePage(), utils.urlChangeDetect(function() { con.info("Check"), page.handlePage(); }); }); } }; }).call(this, __webpack_require__(1), __webpack_require__(3), __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, utils, api) { __webpack_require__.d(__webpack_exports__, "a", function() { return Crunchyroll; }); const Crunchyroll = { name: "Crunchyroll", domain: "http://www.crunchyroll.com", database: "Crunchyroll", type: "anime", isSyncPage: function(url) { return !(void 0 === url.split("/")[4] || !j.$("#showmedia_video").length); }, sync: { getTitle: function(url) { return Crunchyroll.sync.getIdentifier(urlHandling(url)); }, getIdentifier: function(url) { var script = j.$("#template_body script")[1].innerHTML; return script = script.split("mediaMetadata =")[1].split('"name":"')[1].split(" -")[0], script = JSON.parse('"' + script.replace('"', '\\"') + '"'); }, getOverviewUrl: function(url) { return urlHandling(url).split("/").slice(0, 4).join("/") + "?season=" + Crunchyroll.sync.getIdentifier(urlHandling(url)); }, getEpisode: function(url) { var episodePart = utils.urlPart(urlHandling(url), 4), temp = []; return temp = episodePart.match(/[e,E][p,P][i,I]?[s,S]?[o,O]?[d,D]?[e,E]?\D?\d+/), temp = (episodePart = null !== temp ? temp[0] : "").match(/\d+/), episodePart = null === temp ? 1 : temp[0]; }, nextEpUrl: function(url) { return Crunchyroll.domain + j.$(".collection-carousel-media-link-current").parent().next().find(".link").attr("href"); } }, overview: { getTitle: function(url) { return Crunchyroll.overview.getIdentifier(urlHandling(url)); }, getIdentifier: function(url) { if (j.$(".season-dropdown").length > 1) throw new Error("MAL-Sync does not support multiple seasons"); return j.$(".season-dropdown").length ? j.$(".season-dropdown").first().text() : j.$("#source_showview h1 span").text(); }, uiSelector: function(selector) { selector.insertBefore(j.$("#tabs").first()); }, list: { offsetHandler: !0, elementsSelector: function() { return j.$("#showview_content_videos .list-of-seasons .group-item a"); }, elementUrl: function(selector) { return utils.absoluteLink(selector.attr("href"), Crunchyroll.domain); }, elementEp: function(selector) { var url = Crunchyroll.overview.list.elementUrl(selector); return Crunchyroll.sync.getEpisode(urlHandling(url)); } } }, init(page) { api.storage.addStyle(__webpack_require__(69).toString()), page.setCacheTemp = page.setCache, page.setCache = function(url, toDatabase, identifier = null) { this.page.isSyncPage(this.url) && this.setCacheTemp(url, toDatabase, identifier); }, page.databaseRequestTemp = page.databaseRequest, page.databaseRequest = function(malurl, toDatabase, identifier, kissurl = null) { this.databaseRequestTemp(malurl, toDatabase, identifier, this.url + "?.." + encodeURIComponent(identifier.toLowerCase().split("#")[0]).replace(/\./g, "%2E")); }, j.$(document).ready(function() { if (j.$(".season-dropdown").length > 1) { j.$(".season-dropdown").append('<span class="exclusivMal" style="float: right; margin-right: 20px; color: #0A6DA4;" onclick="return false;">MAL</span>'), j.$(".exclusivMal").click(function(evt) { j.$("#showview_content").before('<div><a href="' + page.url.split("?")[0] + '">Show hidden seasons</a></div>'); var thisparent = j.$(evt.target).parent(); j.$(".season-dropdown").not(thisparent).siblings().remove(), j.$(".season-dropdown").not(thisparent).remove(), j.$(".portrait-grid").css("display", "block").find("li.group-item img.landscape").each(function() { void 0 === j.$(this).attr("src") && j.$(this).attr("src", j.$(this).attr("data-thumbnailUrl")); }), j.$(".exclusivMal").remove(), page.handlePage(); }); var season = new RegExp("[?&]season=([^&#]*)").exec(page.url); null != season && null != (season = season[1] || null) && (season = decodeURIComponent(decodeURI(season)), j.$('.season-dropdown[title="' + season + '" i] .exclusivMal').first().click()); } else page.handlePage(); }); } }; function urlHandling(url) { var langslug = j.$("#home_link, #logo_beta a").first().attr("href"); return "/" == langslug ? url : url.replace(langslug, ""); } }).call(this, __webpack_require__(1), __webpack_require__(3), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, utils, api) { __webpack_require__.d(__webpack_exports__, "a", function() { return Masterani; }); const Masterani = { name: "Masterani", domain: "https://www.masterani.me", database: "Masterani", type: "anime", isSyncPage: function(url) { return "watch" === url.split("/")[4]; }, sync: { getTitle: function(url) { return j.$(".info h1").text().trim(); }, getIdentifier: function(url) { return utils.urlPart(url, 5); }, getOverviewUrl: function(url) { return utils.absoluteLink(j.$(".info a").first().attr("href"), Masterani.domain); }, getEpisode: function(url) { return parseInt(utils.urlPart(url, 6)); }, nextEpUrl: function(url) { var nexUrl = Masterani.domain + j.$("#watch .anime-info .actions a").last().attr("href"); if (Masterani.isSyncPage(nexUrl)) return nexUrl; } }, overview: { getTitle: function(url) { return Masterani.sync.getIdentifier(url).replace(/^\d*-/, ""); }, getIdentifier: function(url) { return Masterani.sync.getIdentifier(url); }, uiSelector: function(selector) { selector.prependTo(j.$("#stats").first()); }, list: { offsetHandler: !1, elementsSelector: function() { return j.$(".episodes .thumbnail"); }, elementUrl: function(selector) { return utils.absoluteLink(selector.find("a").first().attr("href"), Masterani.domain); }, elementEp: function(selector) { return Masterani.sync.getEpisode(Masterani.overview.list.elementUrl(selector)); }, paginationNext: function() { var el = j.$(".pagination .item").last(); return !el.hasClass("disabled") && (el[0].click(), !0); } } }, init(page) { api.storage.addStyle(__webpack_require__(71).toString()), utils.waitUntilTrue(function() { return j.$("#stats,#watch").length; }, function() { page.handlePage(), j.$(".ui.toggle.checkbox, .pagination.menu").click(function() { setTimeout(function() { page.handleList(); }, 500); }); }); } }; }).call(this, __webpack_require__(1), __webpack_require__(3), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, utils, api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return Mangadex; }); const Mangadex = { name: "Mangadex", domain: "https://www.mangadex.org", database: "Mangadex", type: "manga", isSyncPage: function(url) { return "chapter" === url.split("/")[3]; }, sync: { getTitle: function(url) { return j.$(".manga-link").text().trim(); }, getIdentifier: function(url) { return utils.urlPart(Mangadex.sync.getOverviewUrl(url), 4); }, getOverviewUrl: function(url) { return utils.absoluteLink(j.$("a.manga-link").first().attr("href"), Mangadex.domain); }, getEpisode: function(url) { var chapterId = url.split("/")[4], curOption = j.$('#jump-chapter option[value="' + chapterId + '"]'); if (curOption.length) { var temp = curOption.text().trim().match(/ch\.\D?\d+/i); if (null !== temp) return function(string) { if (!string) return ""; if (!isNaN(parseInt(string))) return string; var temp = []; if (temp = string.match(/ch\.\D?\d+/i), console.log(temp), null !== temp && (string = temp[0], null !== (temp = string.match(/\d+/)))) return temp[0]; return ""; }(temp[0]); } return NaN; }, getVolume: function(url) { var chapterId = url.split("/")[4], curOption = j.$('#jump-chapter option[value="' + chapterId + '"]'); if (curOption.length) { var temp = curOption.text().trim().match(/vol\.\D?\d+/i); if (null !== temp && null !== (temp = temp[0].match(/\d+/))) return parseInt(temp[0]); } return 0; } }, overview: { getTitle: function() { return j.$(".card-header").first().text().trim(); }, getIdentifier: function(url) { return utils.urlPart(url, 4); }, uiSelector: function(selector) { j.$(".container .card .edit.row > * > .row").first().after('<div class="row m-0 py-1 px-0 border-top"><div class="col-lg-3 col-xl-2 strong">MyAnimeList:</div><div class="col-lg-9 col-xl-10 kal-ui"></div></div>'), selector.appendTo(j.$(".container .card .kal-ui").first()); }, list: { offsetHandler: !1, elementsSelector: function() { return j.$(".chapter-container > .row:not(:first-of-type) .chapter-row"); }, elementUrl: function(selector) { return utils.absoluteLink(selector.find("a").first().attr("href"), Mangadex.domain); }, elementEp: function(selector) { return selector.attr("data-chapter"); } } }, init(page) { api.storage.addStyle(__webpack_require__(73).toString()), j.$(".card-header").length ? j.$(document).ready(function() { page.handlePage(); }) : (con.info("Waiting"), utils.waitUntilTrue(function() { return Mangadex.sync.getOverviewUrl(""); }, function() { con.info("Start"), page.handlePage(); var tempChapterId = utils.urlPart(window.location.href, 4); utils.urlChangeDetect(function() { var newTempChapterId = utils.urlPart(window.location.href, 4); tempChapterId !== newTempChapterId ? (tempChapterId = newTempChapterId, con.info("Check"), page.handlePage()) : con.info("Nothing to do"); }); })), j.$(document).ready(function() { switch ($("#theme_id").val()) { case "2": case "4": case "6": case "7": $("body").addClass("MALSyncDark"); } }); } }; }).call(this, __webpack_require__(1), __webpack_require__(3), __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, j, con, api) { __webpack_require__.d(__webpack_exports__, "a", function() { return Mangarock; }); const Mangarock = { name: "Mangarock", domain: "https://mangarock.com", database: "Mangarock", type: "manga", isSyncPage: function(url) { return void 0 !== utils.urlPart(url, 5); }, sync: { getTitle: function(url) { return j.$('a[href*="' + Mangarock.overview.getIdentifier(url) + '"]').text().trim(); }, getIdentifier: function(url) { return Mangarock.overview.getIdentifier(url); }, getOverviewUrl: function(url) { return url.split("/").slice(0, 5).join("/"); }, getEpisode: function(url) { return con.log(j.$("option:contains('Chapter')").first().parent().find(":selected").text()), EpisodePartToEpisode(j.$("option:contains('Chapter')").first().parent().find(":selected").text()); }, getVolume: function(url) { return 0; } }, overview: { getTitle: function() { return j.$("h1").first().text().trim(); }, getIdentifier: function(url) { return utils.urlPart(url, 4).replace(/mrs-serie-/i, ""); }, uiSelector: function(selector) { selector.insertBefore($("h2:contains('Chapters')").first().parent().parent().parent()); }, list: { offsetHandler: !1, elementsSelector: function() { return j.$('[data-test="chapter-table"] tr'); }, elementUrl: function(selector) { return utils.absoluteLink(selector.find("a").first().attr("href"), Mangarock.domain); }, elementEp: function(selector) { return EpisodePartToEpisode(selector.find("a").text()); } } }, init(page) { function start() { /manga/i.test(utils.urlPart(page.url, 3)) ? Mangarock.isSyncPage(page.url) ? utils.waitUntilTrue(function() { return Mangarock.sync.getTitle(page.url); }, function() { page.handlePage(); }) : j.$(document).ready(function() { var waitTimeout = !1; utils.waitUntilTrue(function() { return con.log("visibility", j.$("#page-content .col-lg-8 .lazyload-placeholder:visible").length), !j.$("#page-content .col-lg-8 .lazyload-placeholder:visible").length || waitTimeout; }, function() { page.handlePage(); }), setTimeout(function() { waitTimeout = !0; }, 1e3); }) : con.log("Not a manga page!"); } api.storage.addStyle(__webpack_require__(75).toString()), start(), utils.urlChangeDetect(function() { page.url = window.location.href, page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), start(); }); } }; function EpisodePartToEpisode(string) { if (!string) return ""; if (!isNaN(parseInt(string))) return string; var temp = []; return temp = string.match(/Chapter\ \d+/i), con.log(temp), null !== temp && null !== (temp = (string = temp[0]).match(/\d+/)) ? temp[0] : ""; } }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(2), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, j, api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return Gogoanime; }); const Gogoanime = { name: "Gogoanime", domain: [ "https://gogoanimes.co", "https://gogoanime.tv" ], database: "Gogoanime", type: "anime", isSyncPage: function(url) { return "category" !== utils.urlPart(url, 3); }, sync: { getTitle: function(url) { return j.$(".anime-info a").first().text().trim(); }, getIdentifier: function(url) { return utils.urlPart(url, 3).split("-episode")[0]; }, getOverviewUrl: function(url) { return url.split("/").slice(0, 3).join("/") + "/category/" + Gogoanime.sync.getIdentifier(url); }, getEpisode: function(url) { return utils.urlPart(url, 3).split("episode-")[1]; }, nextEpUrl: function(url) { return Gogoanime.domain + j.$(".anime_video_body_episodes_r a").last().attr("href"); } }, overview: { getTitle: function(url) { return Gogoanime.overview.getIdentifier(url); }, getIdentifier: function(url) { return utils.urlPart(url, 4); }, uiSelector: function(selector) { selector.prependTo(j.$(".anime_info_body").first()); }, list: { offsetHandler: !1, elementsSelector: function() { return j.$("#episode_related a"); }, elementUrl: function(selector) { return utils.absoluteLink(selector.attr("href").replace(/^ /, ""), Gogoanime.domain); }, elementEp: function(selector) { var url = Gogoanime.overview.list.elementUrl(selector); return Gogoanime.sync.getEpisode(url); }, paginationNext: function() { var next = !1, nextReturn = !1; return j.$(j.$("#episode_page a").get().reverse()).each(function(index, el) { if (next && !nextReturn) return el.click(), void (nextReturn = !0); j.$(el).hasClass("active") && (next = !0); }), nextReturn; } } }, init(page) { function start() { Gogoanime.domain = window.location.protocol + "//" + window.location.hostname, page.handlePage(), j.$("#episode_page").click(function() { setTimeout(function() { page.handleList(); }, 500); }); } api.storage.addStyle(__webpack_require__(77).toString()), Gogoanime.isSyncPage(page.url) ? j.$(document).ready(function() { start(); }) : (con.log("noSync"), utils.waitUntilTrue(function() { return j.$("#episode_related").length; }, function() { start(); })); } }; }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, utils, con, api) { __webpack_require__.d(__webpack_exports__, "a", function() { return Anime4you; }); const Anime4you = { name: "Anime4you", domain: "https://www.anime4you.one", database: "Anime4you", type: "anime", isSyncPage: function(url) { return "epi" === url.split("/")[7]; }, sync: { getTitle: function(url) { return j.$(".titel").text().replace(j.$(".titel h5").text(), "").trim(); }, getIdentifier: function(url) { return parseInt(utils.urlPart(url, 6)).toString(); }, getOverviewUrl: function(url) { return Anime4you.domain + "/show/1/aid/" + Anime4you.sync.getIdentifier(url); }, getEpisode: function(url) { return parseInt(utils.urlPart(url, 8)); }, nextEpUrl: function(url) { return Anime4you.domain + j.$(".vidplayer .forward a").first().attr("href"); }, uiSelector: function(selector) { selector.insertAfter(j.$("#beschreibung > p").first()); } }, overview: { getTitle: function(url) { return Anime4you.sync.getTitle(url); }, getIdentifier: function(url) { return Anime4you.sync.getIdentifier(url); }, uiSelector: function(selector) { Anime4you.sync.uiSelector(selector); }, list: { offsetHandler: !1, elementsSelector: function() { return j.$(".episoden li"); }, elementUrl: function(selector) { return utils.absoluteLink(selector.find("a").first().attr("href"), Anime4you.domain); }, elementEp: function(selector) { return Anime4you.sync.getEpisode(Anime4you.overview.list.elementUrl(selector)); } } }, init(page) { if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn(); api.storage.addStyle(__webpack_require__(79).toString()), j.$(document).ready(function() { page.handlePage(); }); } }; }).call(this, __webpack_require__(1), __webpack_require__(3), __webpack_require__(2), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, utils, api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return Turkanime; }); const Turkanime = { name: "Turkanime", domain: "http://www.turkanime.tv", type: "anime", isSyncPage: function(url) { return "video" === url.split("/")[3]; }, sync: { getTitle: function(url) { return j.$(".breadcrumb a").first().text().trim(); }, getIdentifier: function(url) { return Turkanime.overview.getIdentifier(Turkanime.sync.getOverviewUrl(url)); }, getOverviewUrl: function(url) { return utils.absoluteLink(j.$(".breadcrumb a").first().attr("href"), Turkanime.domain); }, getEpisode: function(url) { return getEpisode(Turkanime.sync.getIdentifier(url), Turkanime.overview.getIdentifier(url)); }, nextEpUrl: function(url) { if (j.$('.panel-footer a[href^="video"]').last().attr("href") != j.$('.panel-footer a[href^="video"]').first().attr("href")) return utils.absoluteLink(j.$('.panel-footer a[href^="video"]').last().attr("href"), Turkanime.domain); } }, overview: { getTitle: function(url) { return j.$("#detayPaylas .panel-title").first().text().trim(); }, getIdentifier: function(url) { return utils.urlPart(url, 4); }, uiSelector: function(selector) { selector.prependTo(j.$("#detayPaylas .panel-body").first()); }, list: { offsetHandler: !1, elementsSelector: function() { return j.$(".list.menum > li"); }, elementUrl: function(selector) { return utils.absoluteLink(selector.find("a").last().attr("href").replace(/^\/\//, "http://"), Turkanime.domain); }, elementEp: function(selector) { var url = Turkanime.overview.list.elementUrl(selector); return getEpisode(Turkanime.overview.getIdentifier(window.location.href), Turkanime.overview.getIdentifier(url)); } } }, init(page) { api.storage.addStyle(__webpack_require__(81).toString()), j.$(document).ready(function() { Turkanime.isSyncPage(page.url) ? page.handlePage() : utils.waitUntilTrue(function() { return j.$(".list.menum").length; }, function() { page.handlePage(); }); }); } }; function getEpisode(selector, episodeSelector) { var diff = episodeSelector.replace(selector, "").replace(/-/g, ":"); con.log("getEpisode", selector, episodeSelector, diff); var temp = diff.match(/\d+/); return null === temp ? 0 : parseInt(temp[0]); } }).call(this, __webpack_require__(1), __webpack_require__(3), __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, utils, api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return Twistmoe; }); const Twistmoe = { name: "Twistmoe", domain: "https://twist.moe", database: "Twistmoe", type: "anime", isSyncPage: function(url) { return !0; }, sync: { getTitle: function(url) { return j.$(".series-title").text().trim(); }, getIdentifier: function(url) { return utils.urlPart(url, 4); }, getOverviewUrl: function(url) { return Twistmoe.domain + "/a/" + Twistmoe.sync.getIdentifier(url) + "/1"; }, getEpisode: function(url) { return parseInt(utils.urlPart(url, 5)); }, nextEpUrl: function(url) { return utils.absoluteLink(j.$(".episode-list .current").first().parent().next().find("a").attr("href"), Twistmoe.domain); }, uiSelector: function(selector) { selector.insertAfter(j.$(".information").first()); } }, overview: { getTitle: function(url) { return ""; }, getIdentifier: function(url) { return ""; }, uiSelector: function(selector) { return ""; }, list: { offsetHandler: !1, elementsSelector: function() { return j.$(".episode-list li"); }, elementUrl: function(selector) { return utils.absoluteLink(selector.find("a").first().attr("href"), Twistmoe.domain); }, elementEp: function(selector) { return Twistmoe.sync.getEpisode(Twistmoe.overview.list.elementUrl(selector)); } } }, init(page) { function start() { "a" == utils.urlPart(page.url, 3).toLowerCase() ? page.handlePage() : con.log("Not an anime page!"); } api.storage.addStyle(__webpack_require__(83).toString()), j.$(document).ready(function() { start(), utils.urlChangeDetect(function() { page.url = window.location.href, page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), start(); }); }); } }; }).call(this, __webpack_require__(1), __webpack_require__(3), __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return initIframeModal; }); var minimalObj, _minimalClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(45); function initIframeModal(page) { var posLeft = api.settings.get("posLeft"), miniMalWidth = api.settings.get("miniMalWidth"), miniMalHeight = api.settings.get("miniMalHeight"); if (!j.$("#info-popup").length) { api.storage.addStyle(".modal-content-kal.fullscreen{width: 100% !important;height: 100% !important; bottom: 0 !important;" + posLeft + ": 0 !important;} .modal-content-kal{-webkit-transition: all 0.5s ease; -moz-transition: all 0.5s ease; -o-transition: all 0.5s ease; transition: all 0.5s ease;} .floatbutton:hover {background-color:rgb(63,81,181) !important;} .floatbutton:hover div {background-color:white;} .floatbutton div {background-color:black;-webkit-transition: all 0.5s ease;-moz-transition: all 0.5s ease;-o-transition: all 0.5s ease;transition: all 0.5s ease;} .floatbutton { z-index: 9999;display: none; position:fixed; bottom:40px; right:40px; border-radius: 50%; font-size: 24px; height: 56px; margin: auto; min-width: 56px; width: 56px; padding: 0; overflow: hidden; background: rgba(158,158,158,.2); box-shadow: 0 1px 1.5px 0 rgba(0,0,0,.12), 0 1px 1px 0 rgba(0,0,0,.24); line-height: normal; border: none; font-weight: 500; text-transform: uppercase; letter-spacing: 0; will-change: box-shadow; transition: box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1); outline: none; cursor: pointer; text-decoration: none; text-align: center; vertical-align: middle; padding: 16px; } .mdl-button{ background: #3f51b5; color: #fff;box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12); border: none; border-radius: 2px; } .floatbutton.stealth { background: rgba(158,158,158,.03); } .floatbutton.stealth .open-info-popup{ visibility: hidden; }"); var position = "max-width: 100%; max-height: 100%; min-width: 500px; min-height: 300px; width: " + miniMalWidth + "; height: " + miniMalHeight + "; position: absolute; bottom: 0%; " + posLeft + ": 0%"; j.$(window).width() < 500 && (position = "width: 100vw; height: 100%; position: absolute; top: 0%; " + posLeft + ": 0%"); var material = '<dialog class="modal-kal" id="info-popup" style="pointer-events: none;display: none; position: fixed;z-index: 9999;left: 0;top: 0;bottom: 0;width: 100%; height: 100%; background-color: transparent; padding: 0; margin: 0; border: 0;">'; material += '<div id="modal-content" class="modal-content-kal" Style="pointer-events: all; background-color: #f9f9f9; margin: 0; ' + position + '">', material += "</div>", material += "</dialog>", j.$("body").after(material); var additionalClasses = ""; api.settings.get("floatButtonStealth") && (additionalClasses += "stealth "); var floatbutton = '<button class="open-info-popup floatbutton ' + additionalClasses + '" style="">'; floatbutton += '<i class="my-float open-info-popup" style="margin-top:22px;"><div class="open-info-popup" style="width: 100%; height: 4px; margin-bottom: 15%;"></div><div class="open-info-popup" style="width: 100%; height: 4px; margin-bottom: 15%;"></div><div class="open-info-popup" style="width: 100%; height: 4px"></div></i></button>', j.$("#info-popup").after(floatbutton), j.$(".open-info-popup").show(), document.addEventListener("click", function(e) { j.$(e.target).hasClass("open-info-popup") && (con.log("Open miniMAL"), "none" == j.$("#info-popup").css("display") ? (document.getElementById("info-popup").style.display = "block", j.$(".floatbutton").fadeOut(), j.$("#info-iframe").length ? void 0 !== minimalObj && void 0 !== page.malObj && (minimalObj.fillBase(page.malObj.url), minimalObj.setPageSync(page)) : function(page) { var iframe = document.createElement("iframe"); iframe.setAttribute("id", "info-iframe"), iframe.setAttribute("style", "height:100%;width:100%;border:0;display:block;"), iframe.onload = function() { var head = j.$("#info-iframe").contents().find("head"); api.storage.injectjsResource("simpleBar.js", head), api.storage.injectjsResource("material.js", head), api.storage.updateDom(head), api.storage.injectCssResource("material.css", head), api.storage.injectCssResource("materialFont.css", head), api.storage.injectCssResource("simpleBar.css", head), setTimeout(function() { minimalObj = new _minimalClass__WEBPACK_IMPORTED_MODULE_0__.a(j.$("#info-iframe").contents().find("html")), void 0 !== page && (void 0 !== page.malObj ? minimalObj.fillBase(page.malObj.url) : minimalObj.fillBase(null), minimalObj.setPageSync(page)); }, 200); }, document.getElementById("modal-content").appendChild(iframe), j.$("#modal-content").append('<div class="kal-tempHeader" style="position: absolute; width: 100%; height: 103px; background-color: rgb(63,81,181); "></div>'), j.$("#info-iframe").length && "block" == j.$("#info-iframe").css("display") || (j.$("#info-popup").remove(), alert("The miniMAL iframe could not be loaded.\nThis could be caused by an AdBlocker.")); }(page)) : (document.getElementById("info-popup").style.display = "none", j.$(".floatbutton").fadeIn())); }); } } }).call(this, __webpack_require__(1), __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(j, utils, api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return minimal; }); var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29), _minimalApp_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57), vue_clazy_load__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(46), __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; vue__WEBPACK_IMPORTED_MODULE_0__.a.use(vue_clazy_load__WEBPACK_IMPORTED_MODULE_2__); class minimal { constructor(minimal) { this.minimal = minimal, this.history = [], this.minimal.find("body").append('<div id="minimalApp"></div>'), this.minimalVue = new vue__WEBPACK_IMPORTED_MODULE_0__.a({ el: this.minimal.find("#minimalApp").get(0), render: h => h(_minimalApp_vue__WEBPACK_IMPORTED_MODULE_1__.a) }), this.minimal.find("head").append('<base href="https://myanimelist.net/">'), this.uiListener(), this.injectCss(), this.loadSettings(), this.updateDom(); } uiListener() { var modal = document.getElementById("info-popup"), This = this; this.minimal.on("click", ".mdl-layout__content a", function(e) { if ("_blank" !== j.$(this).attr("target") && !j.$(this).hasClass("nojs")) { e.preventDefault(); var url = utils.absoluteLink(j.$(this).attr("href"), "https://myanimelist.net"); if (!This.fill(url)) { var win = window.open(url, "_blank"); win ? win.focus() : alert("Please allow popups for this website"); } } }), this.minimal.find("#close-info-popup").click(function() { This.isPopup() ? window.close() : (modal.style.display = "none", j.$(".floatbutton").fadeIn()); }), this.minimal.find("#material-fullscreen").click(function() { j.$(".modal-content-kal.fullscreen").length ? (j.$(".modal-content-kal").removeClass("fullscreen"), j.$(this).find("i").text("fullscreen")) : (j.$(".modal-content-kal").addClass("fullscreen"), j.$(this).find("i").text("fullscreen_exit")); }); } isPopup() { return !!j.$("#Mal-Sync-Popup").length; } updateDom() { this.minimal.find("head").click(); } injectCss() { this.minimal.find("head").append(j.$("<style>").html(__webpack_require__(88).toString())); } fill(url) { return this.minimalVue.$children[0].fill(url); } fillBase(url) { return this.minimalVue.$children[0].fillBase(url); } setPageSync(page) { this.minimalVue.$children[0].setPage(page); } loadSettings() { var This = this; this.minimal.find("#posLeft").val(api.settings.get("posLeft")), this.minimal.find("#posLeft").change(function() { api.settings.set("posLeft", j.$(this).val()), j.$("#modal-content").css("right", "auto").css("left", "auto").css(j.$(this).val(), "0"); }), this.minimal.find("#miniMalWidth").on("input", function() { var miniMalWidth = This.minimal.find("#miniMalWidth").val(); null !== miniMalWidth && ("" === miniMalWidth && (miniMalWidth = "30%", utils.flashm("Width reset")), api.settings.set("miniMalWidth", miniMalWidth)), j.$("#modal-content").css("width", miniMalWidth); }), this.minimal.find("#syncMode").change(function() { var value = j.$(this).val(); api.settings.set("syncMode", value); }), this.minimal.find("#syncMode").val(api.settings.get("syncMode")).change(), this.minimal.find("#miniMalHeight").on("input", function() { var miniMalHeight = This.minimal.find("#miniMalHeight").val(); null !== miniMalHeight && ("" === miniMalHeight && (miniMalHeight = "90%", utils.flashm("Height reset")), api.settings.set("miniMalHeight", miniMalHeight)), j.$("#modal-content").css("height", miniMalHeight); }), this.minimal.find("#malThumbnail").val(api.settings.get("malThumbnail")), this.minimal.find("#malThumbnail").change(function() { api.settings.set("malThumbnail", This.minimal.find("#malThumbnail").val()); }), this.minimal.find("#clearCache").click(function() { return __awaiter(this, void 0, void 0, function*() { var cacheArray = yield api.storage.list(), deleted = 0; j.$.each(cacheArray, function(index, cache) { utils.syncRegex.test(index) || (api.storage.remove(index), deleted++); }), utils.flashm("Cache Cleared [" + deleted + "]"); }); }), this.minimal.find("#malDelay").on("input", function() { var tempDelay = This.minimal.find("#malDelay").val(); null !== tempDelay && ("" !== tempDelay ? (api.settings.set("delay", tempDelay), utils.flashm("New delay (" + tempDelay + ") set.")) : (api.settings.set("delay", 0), utils.flashm("Delay reset"))); }), "webextension" == api.type && this.minimal.find(".option-extension").show(), "webextension" == api.type && this.isPopup() && this.minimal.find(".option-extension-popup").show(), "webextension" == api.type && this.isPopup() && (chrome.alarms.get("updateCheck", a => { if (con.log(a), interval = 0, void 0 !== a) { var interval = a.periodInMinutes; this.minimal.find(".updateCheckEnable").show(); } if (this.minimal.find("#updateCheckTime").val(interval), interval) { function setUpdateCheckLast() { api.storage.get("updateCheckLast").then(updateCheckTime => { if (!isNaN(updateCheckTime)) { var delta = Math.abs(updateCheckTime - Date.now()), text = utils.timeDiffToText(delta); "" != text && (text += "ago", $("#updateCheckAgo").text(text)); } }); } setUpdateCheckLast(), setInterval(function() { setUpdateCheckLast(); }, 6e4); } }), this.minimal.find("#updateCheckTime").change(() => { var updateCheckTime = this.minimal.find("#updateCheckTime").val(); api.storage.set("updateCheckTime", updateCheckTime), 0 != updateCheckTime && "0" != updateCheckTime ? (this.minimal.find(".updateCheckEnable").show(), chrome.alarms.create("updateCheck", { periodInMinutes: parseInt(updateCheckTime) }), utils.canHideTabs() || chrome.permissions.request({ permissions: [ "webRequest", "webRequestBlocking" ], origins: chrome.runtime.getManifest().optional_permissions.filter(permission => "webRequest" != permission && "webRequestBlocking" != permission && "cookies" != permission) }, function(granted) { con.log("optional_permissions", granted); }), chrome.alarms.create("updateCheckNow", { when: Date.now() + 1e3 })) : (this.minimal.find(".updateCheckEnable").hide(), chrome.alarms.clear("updateCheck")); }), this.minimal.find("#updateCheck").show()), this.minimal.find("#updateCheckUi").click(() => { this.minimalVue.$children[0].selectTab("updateCheck"); }); try { "webextension" == api.type && chrome.permissions.contains({ permissions: [ "cookies" ] }, result => { result && (this.minimal.find("#strictCookies")[0].checked || this.minimal.find("#strictCookies").trigger("click")), this.minimal.find("#strictCookies").change(() => { this.minimal.find("#strictCookies")[0].checked ? (con.log("strictCookies checked"), chrome.permissions.request({ permissions: [ "webRequest", "webRequestBlocking", "cookies" ], origins: [] }, function(granted) { con.log("optional_permissions", granted); })) : (con.log("strictCookies not checked"), chrome.permissions.remove({ permissions: [ "cookies" ], origins: [] }, function(remove) { con.log("optional_permissions_remove", remove); })); }); }); } catch (e) { con.error(e); } api.storage.get("tempVersion").then(version => { var versionMsg = ""; version != api.storage.version() && (versionMsg = "Updated to version " + api.storage.version() + ' [<a class="close" target="_blank" href="https://malsync.lolamtisch.de/changelog#' + api.storage.version() + '">CHANGELOG</a>]'), con.log(version), void 0 === version && (versionMsg = '\n <div style="\n text-align: left;\n margin-left: auto;\n margin-right: auto;\n display: inline-block;\n padding: 10px 15px;\n background-color: #3d4e9a;\n margin-top: -5px;\n ">\n <span style="text-decoration: underline; font-size: 15px;">Thanks for installing MAL-Sync</span><br>\n <br>\n Having Questions?<br>\n <a target="_blank" href="https://discordapp.com/invite/cTH4yaw">\n <img alt="Discord" src="https://img.shields.io/discord/358599430502481920.svg?style=flat-square&logo=discord&label=Discord&colorB=7289DA">\n </a><br>\n <a target="_blank" href="https://github.com/lolamtisch/MALSync/issues">\n <img alt="Github Issues" src="https://img.shields.io/github/issues/lolamtisch/MALSync.svg?style=flat-square&logo=github&logoColor=white">\n </a><br>\n <br>\n Open Source Code:<br>\n <a target="_blank" href="https://github.com/lolamtisch/MALSync">\n <img alt="Github" src="https://img.shields.io/github/last-commit/lolamtisch/malsync.svg?style=flat-square&logo=github&logoColor=white&label=Github">\n </a>\n </div>\n '), "" != versionMsg && this.flashm(versionMsg, function() { api.storage.set("tempVersion", api.storage.version()); }); }); } searchMal(keyword, type = "all", selector, callback) { var This = this; this.minimal.find(selector).html(""), api.request.xhr("GET", "https://myanimelist.net/search/prefix.json?type=" + type + "&keyword=" + keyword + "&v=1").then(response => { var searchResults = j.$.parseJSON(response.responseText); this.minimal.find(selector).append('<div class="mdl-grid"> <select name="myinfo_score" id="searchListType" class="inputtext mdl-textfield__input mdl-cell mdl-cell--12-col" style="outline: none; background-color: white; border: none;"> <option value="anime">Anime</option> <option value="manga">Manga</option> </select> </div>'), this.minimal.find("#searchListType").val(type), this.minimal.find("#searchListType").change(function(event) { This.searchMal(keyword, This.minimal.find("#searchListType").val(), selector, callback); }), j.$.each(searchResults, (i, value) => { j.$.each(value, (i, value) => { j.$.each(value, (i, value) => { "object" == typeof value && j.$.each(value, (i, value) => { void 0 !== value.name && This.minimal.find(selector + " > div").append('<a class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--2dp mdl-grid searchItem" href="' + value.url + '" style="cursor: pointer;"> <img src="' + value.image_url + '" style="margin: -8px 0px -8px -8px; height: 100px; width: 64px; background-color: grey;"></img> <div style="flex-grow: 100; cursor: pointer; margin-top: 0; margin-bottom: 0;" class="mdl-cell"> <span style="font-size: 20px; font-weight: 400; line-height: 1;">' + value.name + '</span> <p style="margin-bottom: 0; line-height: 20px; padding-top: 3px;">Type: ' + value.payload.media_type + '</p> <p style="margin-bottom: 0; line-height: 20px;">Score: ' + value.payload.score + '</p> <p style="margin-bottom: 0; line-height: 20px;">Year: ' + value.payload.start_year + "</p> </div> </a>"); }); }); }); }), callback(); }); } flashm(text, closefn = function() {}) { var mess = `\n <div style="\n background-color: #3f51b5;\n text-align: center;\n padding: 5px 24px;\n color: white;\n border-top: 1px solid #fefefe;\n ">\n ${text}\n <i class="material-icons close" style="\n float: right;\n font-size: 24px;\n margin-top: -2px;\n margin-right: -24px;\n margin-bottom: -5px;\n ">close</i>\n </div>\n `, flashmDiv = j.$(mess).appendTo(this.minimal.find(".mdl-layout")); return flashmDiv.find(".close").click(function() { flashmDiv.slideUp(100, function() { flashmDiv.remove(), closefn(); }); }), flashmDiv; } } }).call(this, __webpack_require__(1), __webpack_require__(3), __webpack_require__(0), __webpack_require__(2)); }, function(module, exports, __webpack_require__) { var factory; "undefined" != typeof self && self, factory = function() { return function(modules) { var installedModules = {}; function __webpack_require__(moduleId) { if (installedModules[moduleId]) return installedModules[moduleId].exports; var module = installedModules[moduleId] = { i: moduleId, l: !1, exports: {} }; return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), module.l = !0, module.exports; } return __webpack_require__.m = modules, __webpack_require__.c = installedModules, __webpack_require__.d = function(exports, name, getter) { __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, { configurable: !1, enumerable: !0, get: getter }); }, __webpack_require__.n = function(module) { var getter = module && module.__esModule ? function() { return module.default; } : function() { return module; }; return __webpack_require__.d(getter, "a", getter), getter; }, __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }, __webpack_require__.p = "", __webpack_require__(__webpack_require__.s = 0); }([ function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: !0 }), __webpack_require__.d(__webpack_exports__, "install", function() { return install; }), __webpack_require__.d(__webpack_exports__, "VueClazyLoad", function() { return VueClazyLoad; }); var ClazyLoadComponent = { name: "ClazyLoad", props: { tag: { type: String, default: "div" }, src: { type: String, required: !0 }, element: String, threshold: { type: [ Array, Number ], default: function() { return [ 0, .5, 1 ]; } }, ratio: { type: Number, default: .4, validator: function(value) { return value > 0 && value <= 1; } }, margin: { type: String, default: "0px" }, crossorigin: { type: String, default: null, validator: function(value) { return "anonymous" === value || "use-credentials" === value; } }, loadedClass: { type: String, default: "loaded" }, loadingClass: { type: String, default: "loading" }, errorClass: { type: String, default: null } }, data: function() { return { loaded: !1, observer: null, errored: !1 }; }, methods: { load: function() { var _this = this; if (this.$emit("loading"), this.observer.disconnect(), !this.loaded) { var img = new Image(); img.addEventListener("load", function() { _this.loaded = !0, _this.$emit("load"), _clear(); }), img.addEventListener("error", function(event) { _this.errored = !0, _this.$emit("error", event), _clear(); }); var _clear = function() { img = null, _this.observer = null; }; null !== this.crossorigin && (img.crossOrigin = this.crossorigin), img.src = this.src; } }, observe: function() { var _this2 = this, options = { threshold: this.threshold, root: this.element ? document.querySelector(this.element) : null, rootMargin: this.margin }; this.observer = new IntersectionObserver(function(entries) { entries[0].intersectionRatio >= _this2.ratio && _this2.load(); }, options), this.observer.observe(this.$el); } }, render: function(h) { var elementClass = this.loaded ? this.loadedClass : this.loadingClass; return h(this.tag, { class: this.errored && this.errorClass ? this.errorClass : elementClass }, [ this.loaded ? this.$slots.default || this.$slots.image : this.$slots.placeholder ]); }, mounted: function() { this.$nextTick(this.observe); } }, install = function(Vue) { Vue.component("clazy-load", ClazyLoadComponent); }, VueClazyLoad = ClazyLoadComponent; __webpack_exports__.default = { install: install }; } ]); }, module.exports = factory(); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, "a", function() { return mal; }); const mal = { shortName: "MAL", score: "MAL Score:", noLogin: "Please log in on <a target='_blank' href='https://myanimelist.net/login.php'>MyAnimeList!<a>" }; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, "a", function() { return anilist; }); const anilist = { shortName: "AniList", score: "AniList Score:", noLogin: 'Please Authenticate <a target="_blank" href="https://anilist.co/api/v2/oauth/authorize?client_id=1487&response_type=token">Here</a>' }; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, con, api) { __webpack_require__.d(__webpack_exports__, "a", function() { return myanimelistClass; }); var _pages_pages__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8), _provider_MyAnimeList_entryClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10), _provider_MyAnimeList_userList__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11), __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; class myanimelistClass { constructor(url) { if (this.url = url, this.page = null, this.id = null, this.type = null, this.username = null, url.indexOf("myanimelist.net/anime.php") > -1) { var urlTemp = "/anime/" + utils.urlParam(this.url, "id"); window.history.replaceState(null, null, urlTemp), this.url = utils.absoluteLink(urlTemp, "https://myanimelist.net"); } if (url.indexOf("myanimelist.net/manga.php") > -1) { urlTemp = "/manga/" + utils.urlParam(this.url, "id"); window.history.replaceState(null, null, urlTemp), this.url = utils.absoluteLink(urlTemp, "https://myanimelist.net"); } var urlpart = utils.urlPart(this.url, 3); "anime" != urlpart && "manga" != urlpart || (this.page = "detail", this.id = utils.urlPart(this.url, 4), this.type = urlpart), "animelist" != urlpart && "mangalist" != urlpart || (this.page = "bookmarks", this.type = urlpart.substring(0, 5), this.username = utils.urlPart(this.url, 4)), "character" == urlpart && (this.page = "character"), "people" == urlpart && (this.page = "people"), "search" == urlpart && (this.page = "search"); } init() { switch (con.log(this), this.page) { case "detail": this.thumbnails(), this.setEpPrediction(), this.streamingUI(), this.malToKiss(), this.siteSearch(), this.related(), this.friendScore(), setInterval(() => { this.setEpPrediction(); }, 6e4); break; case "bookmarks": var This = this; $(document).ready(function() { $("#mal_cs_powered").length ? This.page = "classic" : This.page = "modern", This.init(); }); break; case "modern": case "classic": this.bookmarks(); break; case "character": case "people": this.relatedTag(); case "search": this.thumbnails(); break; default: con.log("This page has no scipt"); } } thumbnails() { if (con.log("Lazyloaded Images"), !(this.url.indexOf("/pics") > -1 || this.url.indexOf("/pictures") > -1 || "0" == api.settings.get("malThumbnail"))) { var height = parseInt(api.settings.get("malThumbnail")), width = Math.floor(height / 144 * 100), surHeight = height + 4, surWidth = width + 4; api.storage.addStyle(".picSurround img:not(.noKal){height: " + height + "px !important; width: " + width + "px !important;}"), api.storage.addStyle(".picSurround img.lazyloaded.kal{width: auto !important;}"), api.storage.addStyle(".picSurround:not(.noKal) a{height: " + surHeight + "px; width: " + surWidth + "px; overflow: hidden; display: flex; justify-content: center;}"); var loaded = 0; try { $(window).load(function() { overrideLazyload(); }); } catch (e) { con.info(e); } try { window.onload = function() { overrideLazyload(); }; } catch (e) { con.info(e); } try { document.onload = function() { overrideLazyload(); }; } catch (e) { con.info(e); } try { $(document).ready(function() { overrideLazyload(); }); } catch (e) { con.info(e); } } function overrideLazyload() { if (!loaded) { loaded = 1; for (var tags = document.querySelectorAll(".picSurround img:not(.kal)"), url = "", i = 0; i < tags.length; i++) { var regexDimensions = /\/r\/\d*x\d*/g; url = tags[i].hasAttribute("data-src") ? tags[i].getAttribute("data-src") : tags[i].getAttribute("src"), regexDimensions.test(url) || /voiceactors.*v.jpg$/g.test(url) || -1 !== url.indexOf("questionmark") ? ((url = utils.handleMalImages(url)).indexOf("100x140") > -1 || (tags[i].setAttribute("data-src", url), url = url.replace(/v.jpg$/g, ".jpg"), tags[i].setAttribute("data-srcset", url.replace(regexDimensions, "")), tags[i].classList.add("lazyload")), tags[i].classList.add("kal")) : (tags[i].closest(".picSurround").classList.add("noKal"), tags[i].classList.add("kal"), tags[i].classList.add("noKal")); } } } } bookmarksHDimages() { for (var tags = document.querySelectorAll('img[src*="/96x136/"]'), i = 0; i < tags.length; i++) { var url = tags[i].getAttribute("src"); tags[i].setAttribute("src", url.replace(/\/r\/\d*x\d*/g, "")); } } setEpPrediction() { con.log("setEpPrediction"), utils.epPredictionUI(this.id, this.type, function(prediction) { prediction && (con.log(prediction), $(".mal-sync-pre-remove, .mal-sync-ep-pre").remove(), $("#addtolist").prev().before('<div class="mal-sync-pre-remove">' + prediction.text + "</div>"), $('[id="curEps"], [id="totalChaps"]').before(prediction.tag + " ")); }); } malToKiss() { return __awaiter(this, void 0, void 0, function*() { con.log("malToKiss"), utils.getMalToKissArray(this.type, this.id).then(links => { var html = ""; for (var pageKey in links) { var page = links[pageKey], tempHtml = "", tempUrl = ""; for (var streamKey in page) { var stream = page[streamKey]; tempHtml += '<div class="mal_links"><a target="_blank" href="' + stream.url + '">' + stream.title + "</a></div>", tempUrl = stream.url; } html += '<h2 id="' + pageKey + 'Links" class="mal_links"><img src="' + utils.favicon(tempUrl.split("/")[2]) + '"> ' + pageKey + '<span title="' + pageKey + '" class="remove-mal-sync" style="float: right; font-weight: 100; line-height: 2; cursor: pointer; color: grey;">x</span></h2>', html += tempHtml, html += '<br class="mal_links" />'; } $(document).ready(function() { $('h2:contains("Information")').before(html), $(".remove-mal-sync").click(function() { var key = $(this).attr("title"); api.settings.set(key, !1), location.reload(); }); }); }); }); } siteSearch() { if (api.settings.get("SiteSearch")) { var This = this; $(document).ready(function() { con.log("Site Search"), $('h2:contains("Information")').before('<h2 id="mal-sync-search-links" class="mal_links">Search</h2><div class="MALSync-search"><a>[Show]</a></div><br class="mal_links" />'), api.storage.addStyle("#AniList.mal_links img{background-color: #898989;}"), $("#mal-sync-search-links, .MALSync-search").one("click", () => { $(".MALSync-search").remove(); var title = $("#contentWrapper > div:first-child span").text(), titleEncoded = encodeURI(title), html = "", imgStyle = "position: relative; top: 4px;"; for (var key in _pages_pages__WEBPACK_IMPORTED_MODULE_0__.a) { var page = _pages_pages__WEBPACK_IMPORTED_MODULE_0__.a[key]; if (page.type === This.type) { var linkContent = `<img style="${imgStyle}" src="${utils.favicon(page.domain)}"> ${page.name}`; if (void 0 === page.completeSearchTag) var link = `<a target="_blank" href="${page.searchUrl(titleEncoded)}">\n ${linkContent}\n </a>`; else link = page.completeSearchTag(title, linkContent); var googleSeach = ""; void 0 !== page.googleSearchDomain && (googleSeach = `<a target="_blank" href="https://www.google.com/search?q=${titleEncoded}+site:${page.googleSearchDomain}">\n <img style="${imgStyle}" src="${utils.favicon("google.com")}">\n </a>`), html += `<div class="mal_links" id="${key}" style="padding: 1px 0;">\n ${link}\n ${googleSeach}\n </div>`; } } $("#mal-sync-search-links").after(html); }); }); } } streamingUI() { return __awaiter(this, void 0, void 0, function*() { con.log("Streaming UI"); var malObj = new _provider_MyAnimeList_entryClass__WEBPACK_IMPORTED_MODULE_1__.a(this.url); yield malObj.init(); var streamUrl = malObj.getStreamingUrl(); void 0 !== streamUrl && $(document).ready(function() { return __awaiter(this, void 0, void 0, function*() { $(".h1 span").first().after(`\n <div class="data title progress" id="mal-sync-stream-div" style="display: inline-block; position: relative; top: 2px;">\n <a class="mal-sync-stream" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0 0;" href="${streamUrl}">\n <img src="${utils.favicon(streamUrl.split("/")[2])}">\n </a>\n </div>`); var resumeUrlObj = yield malObj.getResumeWaching(), continueUrlObj = yield malObj.getContinueWaching(); con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === malObj.getEpisode() + 1 ? $("#mal-sync-stream-div").append(`<a class="nextStream" title="Continue watching" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${continueUrlObj.url}">\n <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === malObj.getEpisode() && $("#mal-sync-stream-div").append(`<a class="resumeStream" title="Resume watching" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${resumeUrlObj.url}">\n <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n </a>`); }); }); }); } bookmarks() { con.log("Bookmarks [" + this.username + "][" + this.page + "]"); var This = this; if ("modern" == this.page) var book = { bookReady: function(callback) { utils.waitUntilTrue(function() { return "none" == $("#loading-spinner").css("display"); }, function() { callback(Object(_provider_MyAnimeList_userList__WEBPACK_IMPORTED_MODULE_2__.a)($.parseJSON($(".list-table").attr("data-items")), This.type)); }); }, getElement: function(malUrl) { return $('.list-item a[href^="' + malUrl + '"]').parent().parent(".list-table-data"); }, streamingSelector: ".data.title .link", cleanTags: function() { $(".tags span a").each(function(index) { void 0 !== utils.getUrlFromTags($(this).text()) && $(this).parent().remove(); }); }, predictionPos(element, tag) { element.find(".data.progress span, .data.chapter span").first().after(tag); } }; else { if ("classic" != this.page) return void con.error("Bookmark type unknown"); book = { bookReady: function(callback) { var tType = "anime"; null !== This.type && (tType = This.type), Object(_provider_MyAnimeList_userList__WEBPACK_IMPORTED_MODULE_2__.b)(7, tType, { fullListCallback: function(list) { callback(list); } }, This.username); }, getElement: function(malUrl) { return $('a[href^="' + malUrl + '"]'); }, streamingSelector: "span", cleanTags: function() { $('span[id^="tagLinks"] a').each(function(index) { void 0 !== utils.getUrlFromTags($(this).text()) && $(this).remove(); }); }, predictionPos(element, tag) { element.parent().parent().find('span[id^="epText"] a span, span[id^="chap"]').first().after(tag); } }; } book.bookReady(function(data) { This.bookmarksHDimages(), $.each(data, function(index, el) { return __awaiter(this, void 0, void 0, function*() { var streamUrl = utils.getUrlFromTags(el.tags), malUrl = el.url.replace("https://myanimelist.net", ""); con.log(malUrl); var id = el.id, type = el.type; if (void 0 !== streamUrl) { var element = book.getElement(malUrl); element.find(book.streamingSelector).after(`\n <a class="mal-sync-stream" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0 0;" href="${streamUrl}">\n <img src="${utils.favicon(streamUrl.split("/")[2])}">\n </a>`); var resumeUrlObj = yield utils.getResumeWaching(type, id), continueUrlObj = yield utils.getContinueWaching(type, id), curEp = parseInt(el.watchedEp); con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === curEp + 1 ? element.find(".mal-sync-stream").after(`<a class="nextStream" title="Continue watching" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${continueUrlObj.url}">\n <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === curEp && element.find(".mal-sync-stream").after(`<a class="resumeStream" title="Resume watching" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${resumeUrlObj.url}">\n <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n </a>`); } utils.epPredictionUI(id, type, function(prediction) { if (prediction) { var element = book.getElement(malUrl); book.predictionPos(element, prediction.tag); } }); }); }), book.cleanTags(); }); } related() { $(document).ready(function() { $(".anime_detail_related_anime a").each(function() { var el = $(this), url = utils.absoluteLink(el.attr("href"), "https://myanimelist.net"); if (void 0 !== url) { var malObj = new _provider_MyAnimeList_entryClass__WEBPACK_IMPORTED_MODULE_1__.a(url); malObj.init().then(() => { var tag = utils.statusTag(malObj.getStatus(), malObj.type, malObj.id); tag && el.after(tag); }); } }); }); } relatedTag() { $(document).ready(function() { $("a.button_edit").each(function() { var el = $(this), href = $(this).attr("href"), type = utils.urlPart(href, 4), id = utils.urlPart(href, 5), state = el.attr("title"); if (void 0 !== state && state) { var tag = utils.statusTag(state, type, id); el.parent().parent().find("> a").after(tag), el.remove(); } }); }); } friendScore() { api.settings.get("friendScore") && $(document).ready(function() { var position = $("h2:contains(Reviews)"); if (position.length) { var overview = $("#horiznav_nav li a").first(); if (overview.is("#horiznav_nav li a.horiznav_active")) { var url = overview.attr("href"); void 0 !== url && url && (url = utils.absoluteLink(url, "https://myanimelist.net"), api.request.xhr("GET", url + "/stats").then(response => { var friendHead = $("a[name=members]", $(response.responseText).children()); if (friendHead) { var friendBody = friendHead.nextAll(); friendBody.length > 1 && friendBody.find('a:contains("All Members")').length && (position.before(friendHead).before(friendBody).before("<br>"), $('a:contains("All Members")').after(' | <span id="mal-sync-removeFriends" title="remove" style="cursor: pointer; color: #1d439b;">X</span>'), $("#mal-sync-removeFriends").click(function() { api.settings.set("friendScore", !1), location.reload(); })); } })); } } }); } } }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(0)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(utils, api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return anilistClass; }); var _provider_AniList_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5), _pages_pages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8), _provider_AniList_entryClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23), _provider_AniList_userList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24), __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; class anilistClass { constructor(url) { this.url = url, this.page = null, this.tempAnimelist = null, this.tempMangalist = null, utils.changeDetect(() => { this.url = window.location.href, this.init(); }, () => { if (null !== this.page && "bookmarks" == this.page.page && $(".lists").length) return $(".lists").first().height(); var ogUrl = $('meta[property="og:url"]').attr("content"); return void 0 !== ogUrl && ogUrl.split("/").length > 4 ? ogUrl.split("/").slice(0, 6).join("/") : ogUrl = window.location.href; }), this.url.indexOf("access_token=") > -1 && this.init(), api.storage.addStyle(__webpack_require__(90).toString()); } init() { this.url.indexOf("access_token=") > -1 && this.authentication(); var urlpart = utils.urlPart(this.url, 3); "anime" != urlpart && "manga" != urlpart || (this.page = { page: "detail", id: utils.urlPart(this.url, 4), malid: NaN, type: urlpart }, this.siteSearch(), this.streamingUI(), _provider_AniList_helper__WEBPACK_IMPORTED_MODULE_0__.b(this.page.id, this.page.type).then(malid => { this.page.malid = malid, con.log("page", this.page), this.malToKiss(); })); var urlpart4 = utils.urlPart(this.url, 5); "animelist" != urlpart4 && "mangalist" != urlpart4 || (this.page = { page: "bookmarks", type: urlpart4.substring(0, 5) }, this.bookmarks()); } authentication() { var tokens = /access_token=[^&]+/gi.exec(this.url); if (null != tokens && void 0 !== tokens[0] && tokens[0]) { var token = tokens[0].toString().replace(/access_token=/gi, ""); con.log("Token Found", token), api.settings.set("anilistToken", token).then(() => { $(document).ready(function() { $(".page-content .container").html('\n <div style="text-align: center; margin-top: 50px; background-color: white; border: 1px solid lightgrey; padding: 10px;">\n <h1>MAL-Sync</h1>\n <br>\n Token saved you can close this page now\n </div>\n '); }); }); } } getMalUrl() { return __awaiter(this, void 0, void 0, function*() { var urlpart = utils.urlPart(this.url, 3); if ("anime" == urlpart || "manga" == urlpart) { var aniListId = utils.urlPart(this.url, 4); return _provider_AniList_helper__WEBPACK_IMPORTED_MODULE_0__.b(aniListId, urlpart).then(malId => "https://myanimelist.net/" + urlpart + "/" + malId + "/" + utils.urlPart(this.url, 5)); } return ""; }); } malToKiss() { con.log("malToKiss"), $(".mal_links").remove(), utils.getMalToKissArray(this.page.type, this.page.malid).then(links => { var html = ""; for (var pageKey in links) { var page = links[pageKey], tempHtml = "", tempUrl = ""; for (var streamKey in page) { var stream = page[streamKey]; tempHtml += `\n <div class="mal_links" style="margin-top: 5px;">\n <a target="_blank" href="${stream.url}">\n ${stream.title}\n </a>\n </div>`, tempUrl = stream.url; } html += `\n <div id="${pageKey}Links" class="mal_links" style="\n background: rgb(var(--color-foreground));\n border-radius: 3px;\n display: block;\n padding: 8px 12px;\n width: 100%;\n margin-bottom: 16px;\n font-size: 1.2rem;\n\n ">\n <img src="${utils.favicon(tempUrl.split("/")[2])}">\n <span style="font-weight: 500; line-height: 16px; vertical-align: middle;">${pageKey}</span>\n <span title="${pageKey}" class="remove-mal-sync" style="float: right; cursor: pointer;">x</span>\n ${tempHtml}\n </div>`; } $(document).ready(function() { $(".sidebar .data").before(html), $(".remove-mal-sync").click(function() { var key = $(this).attr("title"); api.settings.set(key, !1), location.reload(); }); }); }); } siteSearch() { if (api.settings.get("SiteSearch")) { var This = this; $(document).ready(function() { con.log("Site Search"), $("#mal-sync-search-links").remove(), $(".sidebar .data").before('\n <div id="mal-sync-search-links" style="\n background: rgb(var(--color-foreground));\n border-radius: 3px;\n display: block;\n padding: 8px 12px;\n width: 100%;\n margin-bottom: 16px;\n font-size: 1.2rem;\n ">\n <span style="font-weight: 500; line-height: 16px; vertical-align: middle;">Search</span>\n <div class="MALSync-search"><a>[Show]</a></div><br class="mal_links" />\n </div>\n '), api.storage.addStyle("#AniList.mal_links img{background-color: #898989;}"), $(".MALSync-search").one("click", () => { var title = $('meta[property="og:title"]').attr("content"), titleEncoded = encodeURI(title), html = "", imgStyle = "position: relative; top: 0px;"; for (var key in _pages_pages__WEBPACK_IMPORTED_MODULE_1__.a) { var page = _pages_pages__WEBPACK_IMPORTED_MODULE_1__.a[key]; if (page.type === This.page.type) { var linkContent = `<img style="${imgStyle}" src="${utils.favicon(page.domain)}"> ${page.name}`; if (void 0 === page.completeSearchTag) var link = `<a target="_blank" href="${page.searchUrl(titleEncoded)}">\n ${linkContent}\n </a>`; else link = page.completeSearchTag(title, linkContent); var googleSeach = ""; void 0 !== page.googleSearchDomain && (googleSeach = `<a target="_blank" href="https://www.google.com/search?q=${titleEncoded}+site:${page.googleSearchDomain}">\n <img style="${imgStyle}" src="${utils.favicon("google.com")}">\n </a>`), html += `<div class="mal_links" id="${key}" style="padding: 1px 0;">\n ${link}\n ${googleSeach}\n </div>`; } } $(".MALSync-search").html(html); }); }); } } streamingUI() { return __awaiter(this, void 0, void 0, function*() { con.log("Streaming UI"), $("#mal-sync-stream-div").remove(); var malObj = new _provider_AniList_entryClass__WEBPACK_IMPORTED_MODULE_2__.a(this.url); yield malObj.init(); var streamUrl = malObj.getStreamingUrl(); void 0 !== streamUrl && $(document).ready(function() { return __awaiter(this, void 0, void 0, function*() { $("h1").first().append(`\n <div class="data title progress" id="mal-sync-stream-div" style="margin-top: -2px; display: inline-block; position: relative; top: 2px;">\n <a class="mal-sync-stream" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0 0;" href="${streamUrl}">\n <img src="${utils.favicon(streamUrl.split("/")[2])}">\n </a>\n </div>`); var resumeUrlObj = yield malObj.getResumeWaching(), continueUrlObj = yield malObj.getContinueWaching(); con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === malObj.getEpisode() + 1 ? $("#mal-sync-stream-div").append(`<a class="nextStream" title="Continue watching" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${continueUrlObj.url}">\n <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === malObj.getEpisode() && $("#mal-sync-stream-div").append(`<a class="resumeStream" title="Resume watching" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${resumeUrlObj.url}">\n <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n </a>`); }); }); }); } bookmarks() { var This = this; $(document).ready(() => { if ($(".list-entries .entry, .list-entries .entry-card").not(".malSyncDone").each((index, el) => { $(el).addClass("malSyncDone"); var streamUrl = utils.getUrlFromTags($(el).find(".notes").first().attr("label")); if (void 0 !== streamUrl) { con.log(streamUrl), $(el).find(".title a").first().after(`\n <a class="mal-sync-stream mal-rem" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0 0; max-height: 14px;" href="${streamUrl}">\n <img src="${utils.favicon(streamUrl.split("/")[2])}">\n </a>`); var label = $(el).find(".notes").first().attr("label"); void 0 !== label && ("" === (label = label.replace(/(malSync|last)::[\d\D]+::/, "").replace(/#,/, "")).trim() || "," === label.trim() ? $(el).find(".notes").first().css("visibility", "hidden") : $(el).find(".notes").first().attr("label", label)); } }), "anime" == this.page.type) { if (null != this.tempAnimelist) return void fullListCallback(this.tempAnimelist); } else if (null != this.tempMangalist) return void fullListCallback(this.tempMangalist); function fullListCallback(list) { con.log(list), $.each(list, (index, en) => __awaiter(this, void 0, void 0, function*() { if (con.log("en", en), void 0 !== en.malid && null !== en.malid && en.malid) { var element = $('.entry:not(.malSyncDone2) a[href^="/' + This.page.type + "/" + en.id + '/"], .entry-card:not(.malSyncDone2) a[href^="/' + This.page.type + "/" + en.id + '/"]').first().parent(); con.log(element), element.parent().addClass("malSyncDone2"); var resumeUrlObj = yield utils.getResumeWaching(This.page.type, en.malid), continueUrlObj = yield utils.getContinueWaching(This.page.type, en.malid), curEp = en.watchedEp; con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === curEp + 1 ? element.prepend(`<a class="nextStream mal-rem" title="Continue watching" target="_blank" style="margin: -2px 5px 0 0; color: #BABABA;" href="${continueUrlObj.url}">\n <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === curEp && element.prepend(`<a class="resumeStream mal-rem" title="Resume watching" target="_blank" style="margin: -2px 5px 0 0; color: #BABABA;" href="${resumeUrlObj.url}">\n <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n </a>`), utils.epPredictionUI(en.malid, This.page.type, prediction => { prediction && element.parent().find(".progress").append(prediction.tag); }); } })); } Object(_provider_AniList_userList__WEBPACK_IMPORTED_MODULE_3__.a)(1, this.page.type, { anilist: !0, fullListCallback: list => { "anime" == this.page.type ? this.tempAnimelist = list : this.tempMangalist = list, fullListCallback(list); } }); }); } } }).call(this, __webpack_require__(3), __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(api, con) { __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleUpdate; }); var __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; function scheduleUpdate() { return __awaiter(this, void 0, void 0, function*() { yield function() { return __awaiter(this, void 0, void 0, function*() { return api.request.xhr("GET", "https://myanimelist.net/anime/season/schedule").then(response => __awaiter(this, void 0, void 0, function*() { console.groupCollapsed("MyAnimeList Scheduler"), con.log("Recived"); var found = 0, parsed = $.parseHTML(response.responseText), se = ".js-seasonal-anime-list-key-"; se = se + "monday, " + se + "tuesday ," + se + "wednesday ," + se + "thursday ," + se + "friday ," + se + "saturday ," + se + "sunday"; var seasons = $(parsed).find(se).find(".seasonal-anime"); seasons.length && (yield function() { return __awaiter(this, void 0, void 0, function*() { var cacheArray = yield api.storage.list(), deleted = 0; $.each(cacheArray, function(index, cache) { /^mal\/[^\/]+\/(release|eps|aniSch)$/.test(index) && (api.storage.remove(index), deleted++); }), con.log("Cache Cleared [" + deleted + "]"); }); }()), seasons.each(function() { if ($(this).find(".info .remain-time").text().match(/\w+\ \d+.\ \d+,\ \d+:\d+\ \(JST\)/i)) { var malId = $(this).find("a.link-title").attr("href").split("/")[4], jpdate = $(this).find(".info .remain-time").text().trim(), day = jpdate.split(" ")[1].replace(",", "").trim(), month = jpdate.split(" ")[0].trim(); month = "JanFebMarAprMayJunJulAugSepOctNovDec".indexOf(month) / 3 + 1; var year = jpdate.split(" ")[2].replace(",", "").trim(), time = jpdate.split(" ")[3].trim(), minute = time.split(":")[1], hour = time.split(":")[0], timestamp = function(year, month, day, hour, minute, second) { return new Date(Date.UTC(year, month - 1, day, hour, minute, second)).getTime() - 324e5; }(year, month, day, hour, minute, 0); con.log(malId, timestamp), api.storage.set("mal/" + malId + "/release", timestamp); var episode = $(this).find(".eps a span").last().text(); episode.match(/^\d+/) && api.storage.set("mal/" + malId + "/eps", parseInt(episode.match(/^\d+/)[0])); } found++; }), con.log("Schedule updated (" + found + ")"), console.groupEnd(); })); }); }(), yield function anilistScheduler(page = 0) { return __awaiter(this, void 0, void 0, function*() { var variables = { page: page }; return api.request.xhr("POST", { url: "https://graphql.anilist.co", headers: { "Content-Type": "application/json", Accept: "application/json" }, data: JSON.stringify({ query: "\n query($page: Int){\n Page(page: $page, perPage: 50){\n pageInfo{\n hasNextPage\n }\n media (type: ANIME, status: RELEASING) {\n id\n idMal\n nextAiringEpisode{\n episode\n airingAt\n }\n }\n }\n }\n ", variables: variables }) }).then(response => { console.groupCollapsed("Anilist Scheduler " + page); var res = JSON.parse(response.responseText); if (void 0 !== res.errors) return con.log("Anilist api limit", res), void setTimeout(function() { anilistScheduler(page); }, 6e4); if (void 0 === res.data.Page.media) throw "anilistScheduler empty"; return con.log(res.data.Page.pageInfo), res.data.Page.media.forEach(function(el) { var malId = el.idMal; if (malId && "null" !== malId && null != malId && null != el.nextAiringEpisode && el.nextAiringEpisode.episode > 1) { var elObj = { aniId: el.id, currentEp: el.nextAiringEpisode.episode - 1, nextEpTime: el.nextAiringEpisode.airingAt }; con.log(elObj), api.storage.set("mal/" + malId + "/aniSch", elObj); } }), con.log(res), console.groupEnd(), res.data.Page.pageInfo.hasNextPage ? anilistScheduler(page + 1) : void 0; }); }); }(); }); } }).call(this, __webpack_require__(0), __webpack_require__(2)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; (function(api, j, con, utils) { __webpack_require__.d(__webpack_exports__, "a", function() { return firebaseNotification; }); var __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; function firebaseNotification() { return __awaiter(this, void 0, void 0, function*() { var schedule = yield api.storage.get("timestampUpdate/firebaseNotification"); (void 0 === schedule || j.$.now() - schedule > 6e5) && (!function checkNotifications() { con.log("checkNotifications"); api.request.xhr("GET", "https://kissanimelist.firebaseio.com/Data2/Notification/Current.json").then(response => __awaiter(this, void 0, void 0, function*() { var current = parseInt(JSON.parse(response.responseText)); if (isNaN(current)) con.error("Could not read current Notification number"); else { con.log("Current Notification", current); var last = parseInt(yield api.storage.get("firebaseNotification")), next = last + 1; if (null == typeof last || isNaN(last)) return void api.storage.set("firebaseNotification", current); if (current >= next) { var notificationUrl = "https://kissanimelist.firebaseio.com/Data2/Notification/list/N" + next + ".json"; api.request.xhr("GET", notificationUrl).then(response => __awaiter(this, void 0, void 0, function*() { var message = JSON.parse(response.responseText); "null" != message && null != message ? j.$(document).ready(function() { var flashm = utils.flashm('<div style="text-align: left;">' + message + '</div><button class="okChangelog" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px;cursor: pointer;">Close</button>', { permanent: !0, position: "top" }); flashm.find(".okChangelog").click(function() { flashm.remove(), api.storage.set("firebaseNotification", next).then(function() { checkNotifications(); }); }); }) : (con.info("Notification empty", response.responseText), api.storage.set("firebaseNotification", next).then(function() { checkNotifications(); })); })); } else con.log("No new notifications"); } })); }(), api.storage.set("timestampUpdate/firebaseNotification", j.$.now())); }); } }).call(this, __webpack_require__(0), __webpack_require__(1), __webpack_require__(2), __webpack_require__(3)); }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("div", { staticClass: "page-content malClear", attrs: { id: "malReviews" } }, [ _c("div", { directives: [ { name: "show", rawName: "v-show", value: "" == _vm.xhr, expression: "xhr == ''" } ], staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate", staticStyle: { width: "100%", position: "absolute" }, attrs: { id: "loadOverview" } }), _vm._v(" "), _c("span", { directives: [ { name: "show", rawName: "v-show", value: "" != _vm.xhr && "" == _vm.reviews, expression: "xhr != '' && reviews == ''" } ], staticClass: "mdl-chip", staticStyle: { margin: "auto", "margin-top": "16px", display: "table" } }, [ _c("span", { staticClass: "mdl-chip__text" }, [ _vm._v("Nothing Found") ]) ]), _vm._v(" "), "" != _vm.xhr ? _c("div", { staticClass: "mdl-grid", domProps: { innerHTML: _vm._s(_vm.reviews) } }) : _vm._e() ]); }; render._withStripped = !0; var minimalApp_reviewsvue_type_script_lang_js_ = __webpack_require__(22).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(minimalApp_reviewsvue_type_script_lang_js_, render, [], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/reviews.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("div", [ _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--primary refresh-updateCheck", on: { click: function($event) { return _vm.load(); } } }, [ _vm._v("\n Refresh\n ") ]), _vm._v(" "), _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--accent startCheck-updateCheck", on: { click: function($event) { return _vm.startCheck(); } } }, [ _vm._v("\n Start Check\n ") ]), _vm._v(" "), _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--accent notification-updateCheck", on: { click: function($event) { return _vm.notificationTest(); } } }, [ _vm._v("\n Notification Check\n ") ]), _vm._v(" "), _c("select", { directives: [ { name: "model", rawName: "v-model", value: _vm.listType, expression: "listType" } ], staticClass: "typeSelect-updateCheck", staticStyle: { float: "right" }, on: { change: function($event) { var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) { return o.selected; }).map(function(o) { return "_value" in o ? o._value : o.value; }); _vm.listType = $event.target.multiple ? $$selectedVal : $$selectedVal[0]; } } }, [ _c("option", { attrs: { value: "anime" } }, [ _vm._v("Anime") ]), _vm._v(" "), _c("option", { attrs: { value: "manga" } }, [ _vm._v("Manga") ]) ]), _vm._v(" "), _c("table", { staticClass: "mdl-data-table mdl-js-data-table mdl-data-table__cell--non-numeric mdl-shadow--2dp" }, [ _vm._m(0), _vm._v(" "), _vm._l(_vm.items, function(item) { return _c("tr", { key: item.id, style: { backgroundColor: item.trColor } }, [ _c("th", { staticClass: "mdl-data-table__cell--non-numeric" }, [ _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--icon delete-updateCheck", on: { click: function($event) { return _vm.deleteItem(item); } } }, [ _c("i", { staticClass: "material-icons" }, [ _vm._v("delete") ]) ]), _vm._v(" "), _c("a", { staticStyle: { color: "black" }, attrs: { href: item.url } }, [ _vm._v("\n " + _vm._s(item.title) + "\n ") ]) ]), _vm._v(" "), _c("th", [ _vm._v(_vm._s(item.episode)) ]), _vm._v(" "), _c("th", [ _vm._v(_vm._s(item.error)) ]) ]); }) ], 2), _vm._v(" "), _c("div", { staticClass: "history" }, [ _c("h3", [ _vm._v("Notification History") ]), _vm._v(" "), _vm._l(_vm.history, function(historyItem) { return _c("a", { key: historyItem.id, staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--2dp mdl-grid", staticStyle: { "text-decoration": "none !important", color: "black" }, attrs: { href: historyItem.url } }, [ _c("img", { staticStyle: { margin: "-8px 0px -8px -8px", height: "100px", width: "64px", "background-color": "grey" }, attrs: { src: historyItem.iconUrl } }), _vm._v(" "), _c("div", { staticClass: "mdl-cell", staticStyle: { "flex-grow": "100", cursor: "pointer", "margin-top": "0", "margin-bottom": "0" } }, [ _c("span", { staticStyle: { "font-size": "20px", "font-weight": "400", "line-height": "1" } }, [ _vm._v(_vm._s(historyItem.title)) ]), _vm._v(" "), _c("p", { staticStyle: { "margin-bottom": "0", "line-height": "20px", "padding-top": "3px" } }, [ _vm._v(_vm._s(historyItem.message)) ]), _vm._v(" "), _c("p", { staticStyle: { "margin-bottom": "0", "line-height": "20px" } }, [ _vm._v(_vm._s(historyItem.timeDiff)) ]) ]) ]); }) ], 2) ]); }; render._withStripped = !0; var minimalApp_updateCheckvue_type_script_lang_js_ = __webpack_require__(21).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(minimalApp_updateCheckvue_type_script_lang_js_, render, [ function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("tr", [ _c("th", { staticClass: "mdl-data-table__cell--non-numeric" }), this._v(" "), _c("th", [ this._v("Episode") ]), this._v(" "), _c("th", [ this._v("Message") ]) ]); } ], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/updateCheck.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("ul", { staticClass: "demo-list-control mdl-list", staticStyle: { margin: "0px", padding: "0px" } }, [ _c("div", { staticClass: "mdl-grid" }, [ _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp", staticStyle: { display: "none" }, attrs: { id: "page-config" } }), _vm._v(" "), _vm.page ? _c("correction", { attrs: { page: _vm.page } }) : _vm._e(), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp" }, [ _vm._m(0), _vm._v(" "), _c("checkbox", { attrs: { option: "autoTracking" } }, [ _vm._v("\n Autotracking\n "), _c("tooltip", { attrs: { direction: "bottom" } }, [ _vm._v("\n Autotracking is the function where this script automatically updates the anime`s you watch with your MAL account.\n ") ]) ], 1), _vm._v(" "), _vm._m(1), _vm._v(" "), "ANILIST" == _vm.options.syncMode ? _c("li", { staticClass: "mdl-list__item" }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ _vm._v("\n AniList\n ") ]), _vm._v(" "), _vm._m(2) ]) : _vm._e(), _vm._v(" "), _c("li", { directives: [ { name: "show", rawName: "v-show", value: _vm.options.autoTracking, expression: "options.autoTracking" } ], staticClass: "mdl-list__item" }, [ _c("div", { staticClass: "mdl-textfield mdl-js-textfield mdl-textfield--floating-label", staticStyle: { width: "100%" } }, [ _c("input", { staticClass: "mdl-textfield__input", attrs: { type: "number", step: "1", id: "malDelay" }, domProps: { value: _vm.options.delay } }), _vm._v(" "), _c("label", { staticClass: "mdl-textfield__label", attrs: { for: "malDelay" } }, [ _vm._v("Autotracking delay (Seconds)") ]) ]) ]) ], 1), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp" }, [ _c("div", { staticClass: "mdl-card__title mdl-card--border" }, [ _c("h2", { staticClass: "mdl-card__title-text" }, [ _vm._v("Streaming Site Links") ]), _vm._v(" "), _c("tooltip", [ _vm._v("If disabled, the streaming site will no longer appear in an animes sidebar on MAL.") ]) ], 1), _vm._v(" "), _c("checkbox", { attrs: { option: "SiteSearch" } }, [ _vm._v("Search") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "Kissanime" } }, [ _vm._v("KissAnime") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "Masterani" } }, [ _vm._v("MasterAnime") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "9anime" } }, [ _vm._v("9anime") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "Crunchyroll" } }, [ _vm._v("Crunchyroll") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "Gogoanime" } }, [ _vm._v("Gogoanime") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "Twistmoe" } }, [ _vm._v("twist.moe") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "Anime4you" } }, [ _vm._v("Anime4You (Ger)") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "Kissmanga" } }, [ _vm._v("KissManga") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "Mangadex" } }, [ _vm._v("MangaDex") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "Mangarock" } }, [ _vm._v("Mangarock") ]) ], 1), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp" }, [ _vm._m(3), _vm._v(" "), _c("li", { staticClass: "mdl-list__item" }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ _vm._v("\n Thumbnails\n "), _c("tooltip", [ _vm._v("The option is for resizing the thumbnails on MAL."), _c("br"), _vm._v("Like thumbnails for characters, people, recommendations, etc.") ]) ], 1), _vm._v(" "), _vm._m(4) ]), _vm._v(" "), _c("checkbox", { attrs: { option: "friendScore" } }, [ _vm._v("Friend scores on detail page") ]) ], 1), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp" }, [ _vm._m(5), _vm._v(" "), _c("checkbox", { attrs: { option: "epPredictions" } }, [ _vm._v("Estimate episode number") ]), _vm._v(" "), _c("checkbox", { attrs: { option: "malTags" } }, [ _vm._v("\n Use Tags/Notes\n "), _c("tooltip", { attrs: { direction: "bottom" } }, [ _vm._v("\n If enabled: On your MAL Anime List and the bookmark list in miniMAL, an icon-link will be added to the last used streaming site you were using to watch an anime."), _c("br"), _vm._v("Simply click the icon to continue watching the anime.\n ") ]) ], 1), _vm._v(" "), _c("checkbox", { directives: [ { name: "show", rawName: "v-show", value: _vm.options.malTags, expression: "options.malTags" } ], attrs: { option: "malContinue" } }, [ _vm._v("Continue watching links") ]), _vm._v(" "), _c("checkbox", { directives: [ { name: "show", rawName: "v-show", value: _vm.options.malTags, expression: "options.malTags" } ], attrs: { option: "malResume" } }, [ _vm._v("Resume watching links") ]) ], 1), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp" }, [ _vm._m(6), _vm._v(" "), _c("checkbox", { attrs: { option: "floatButtonStealth" } }, [ _vm._v("Stealth floating menu button") ]), _vm._v(" "), _vm._m(7), _vm._v(" "), _c("li", { staticClass: "mdl-list__item", staticStyle: { display: "inline-block", width: "49%" } }, [ _c("div", { staticClass: "mdl-textfield mdl-js-textfield mdl-textfield--floating-label", staticStyle: { width: "100%" } }, [ _c("input", { staticClass: "mdl-textfield__input", attrs: { type: "text", step: "1", id: "miniMalHeight" }, domProps: { value: _vm.options.miniMalHeight } }), _vm._v(" "), _c("label", { staticClass: "mdl-textfield__label", attrs: { for: "miniMalHeight" } }, [ _vm._v("Height (px / %)\n ") ]) ]) ]), _vm._v(" "), _c("li", { staticClass: "mdl-list__item", staticStyle: { display: "inline-block", width: "50%" } }, [ _c("div", { staticClass: "mdl-textfield mdl-js-textfield mdl-textfield--floating-label", staticStyle: { width: "100%" } }, [ _c("input", { staticClass: "mdl-textfield__input", attrs: { type: "text", step: "1", id: "miniMalWidth" }, domProps: { value: _vm.options.miniMalWidth } }), _vm._v(" "), _c("label", { staticClass: "mdl-textfield__label", attrs: { for: "miniMalWidth" } }, [ _vm._v("Width (px / %)") ]) ]) ]) ], 1), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp", staticStyle: { display: "none" }, attrs: { id: "updateCheck" } }, [ _c("div", { staticClass: "mdl-card__title mdl-card--border" }, [ _c("h2", { staticClass: "mdl-card__title-text" }, [ _vm._v("Update Check") ]), _vm._v(" "), _c("tooltip", [ _vm._v("\n Checks for new episodes in the background.\n ") ]), _vm._v(" "), _c("div", { staticStyle: { "margin-left": "auto" }, attrs: { id: "updateCheckAgo" } }) ], 1), _vm._v(" "), _vm._m(8), _vm._v(" "), _c("span", { staticClass: "updateCheckEnable", staticStyle: { display: "none" } }, [ _c("checkbox", { attrs: { option: "updateCheckNotifications" } }, [ _vm._v("Notifications") ]) ], 1), _vm._v(" "), _vm._m(9) ]), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp" }, [ _vm._m(10), _vm._v(" "), _c("span", { staticClass: "option-extension", staticStyle: { display: "none" } }, [ _c("checkbox", { attrs: { option: "userscriptMode" } }, [ _vm._v("Userscript mode"), _c("tooltip", { attrs: { direction: "bottom" } }, [ _vm._v("Disables the content script. This makes it possible to have the extension and userscript enabled at the same time.") ]) ], 1) ], 1), _vm._v(" "), _c("span", { staticClass: "option-extension-popup", staticStyle: { display: "none" } }, [ _c("checkbox", { attrs: { option: "strictCookies" } }, [ _vm._v("Strict Cookies") ]) ], 1), _vm._v(" "), _vm._m(11) ]), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp", class: { open: _vm.isOpen }, attrs: { id: "contributer" }, on: { click: function($event) { return _vm.myOpen(); } } }, [ _vm._l(_vm.contributer, function(contributerGroup, group) { return _c("div", { staticClass: "inline-block" }, [ _c("div", { staticClass: "group" }, [ _vm._v(_vm._s(group)) ]), _vm._v(" "), _vm._l(contributerGroup, function(contr) { return _c("div", { staticClass: "inline-block" }, [ _c("div", { staticClass: "user" }, [ _c("div", { staticClass: "image align-middle" }, [ contr.gif ? _c("clazy-load", { attrs: { src: contr.gif } }, [ _c("img", { staticClass: "lazy init gif", attrs: { src: contr.gif } }) ]) : _vm._e(), _vm._v(" "), _c("clazy-load", { attrs: { src: contr.image } }, [ _c("img", { staticClass: "lazy init", attrs: { src: contr.image } }) ]) ], 1), _vm._v(" "), _c("div", { staticClass: "text align-middle" }, [ _c("div", { staticClass: "name", style: "color:" + contr.color, attrs: { title: contr.name } }, [ _vm._v("\n " + _vm._s(contr.name) + "\n ") ]), _vm._v(" "), contr.subText ? _c("div", { staticClass: "subtext" }, [ _vm._v(_vm._s(contr.subText)) ]) : _vm._e() ]) ]) ]); }) ], 2); }), _vm._v(" "), _vm._m(12), _vm._v(" "), _c("a", { staticClass: "discord", attrs: { href: "https://discordapp.com/invite/cTH4yaw" } }, [ _c("div", { staticStyle: { height: "20px", margin: "-15px", "margin-top": "15px", background: "-webkit-linear-gradient(top, #ffffff 0%,#738bd7 74%)" } }), _vm._v(" "), _c("clazy-load", { staticStyle: { background: "linear-gradient(to bottom, #738bd7 0%,#738bd7 64%,#697ec4 64%,#697ec4 100%)", "background-color": "#697ec4", position: "relative", overflow: "hidden", "margin-left": "-15px", "margin-right": "-15px", "margin-bottom": "-15px", "margin-top": "15px" }, attrs: { src: "https://discordapp.com/api/guilds/358599430502481920/widget.png?style=banner3" } }, [ _c("img", { staticStyle: { margin: "auto", display: "block" }, attrs: { src: "https://discordapp.com/api/guilds/358599430502481920/widget.png?style=banner3" } }) ]) ], 1) ], 2), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp" }, [ _c("li", { staticClass: "mdl-list__item" }, [ _c("div", { staticStyle: { "line-height": "30px" } }, [ _c("clazy-load", { attrs: { tag: "a", href: _vm.version.link, src: _vm.version.img } }, [ _c("img", { attrs: { src: _vm.version.img } }), _vm._v(" "), _c("span", { attrs: { slot: "placeholder" }, slot: "placeholder" }, [ _vm._v("\n Loading\n ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", { attrs: { tag: "a", href: "https://discordapp.com/invite/cTH4yaw", src: "https://img.shields.io/discord/358599430502481920.svg?style=flat-square&logo=discord&label=Chat%20%2F%20Support&colorB=7289DA" } }, [ _c("img", { attrs: { src: "https://img.shields.io/discord/358599430502481920.svg?style=flat-square&logo=discord&label=Chat%20%2F%20Support&colorB=7289DA" } }), _vm._v(" "), _c("span", { attrs: { slot: "placeholder" }, slot: "placeholder" }, [ _vm._v("\n Loading\n ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", { attrs: { tag: "a", href: "https://github.com/lolamtisch/MALSync", src: "https://img.shields.io/github/last-commit/lolamtisch/malsync.svg?style=flat-square&logo=github&logoColor=white&label=Github" } }, [ _c("img", { attrs: { src: "https://img.shields.io/github/last-commit/lolamtisch/malsync.svg?style=flat-square&logo=github&logoColor=white&label=Github" } }), _vm._v(" "), _c("span", { attrs: { slot: "placeholder" }, slot: "placeholder" }, [ _vm._v("\n Loading\n ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", { attrs: { tag: "a", href: "https://github.com/lolamtisch/MALSync/issues", src: "https://img.shields.io/github/issues/lolamtisch/MALSync.svg?style=flat-square&logo=github&logoColor=white" } }, [ _c("img", { attrs: { src: "https://img.shields.io/github/issues/lolamtisch/MALSync.svg?style=flat-square&logo=github&logoColor=white" } }), _vm._v(" "), _c("span", { attrs: { slot: "placeholder" }, slot: "placeholder" }, [ _vm._v("\n Loading\n ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", { attrs: { tag: "a", href: "https://chrome.google.com/webstore/detail/mal-sync/kekjfbackdeiabghhcdklcdoekaanoel?hl=en", src: "https://img.shields.io/badge/Chrome-Download-brightgreen.svg?style=flat-square&label=Chrome&logo=google%20chrome&logoColor=white" } }, [ _c("img", { attrs: { src: "https://img.shields.io/badge/Chrome-Download-brightgreen.svg?style=flat-square&label=Chrome&logo=google%20chrome&logoColor=white" } }), _vm._v(" "), _c("span", { attrs: { slot: "placeholder" }, slot: "placeholder" }, [ _vm._v("\n Loading\n ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", { attrs: { tag: "a", href: "https://addons.mozilla.org/en-US/firefox/addon/mal-sync", src: "https://img.shields.io/badge/Firefox-Download-brightgreen.svg?style=flat-square&label=Firefox&logo=mozilla%20firefox&logoColor=white" } }, [ _c("img", { attrs: { src: "https://img.shields.io/badge/Firefox-Download-brightgreen.svg?style=flat-square&label=Firefox&logo=mozilla%20firefox&logoColor=white" } }), _vm._v(" "), _c("span", { attrs: { slot: "placeholder" }, slot: "placeholder" }, [ _vm._v("\n Loading\n ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", { attrs: { tag: "a", href: "http://greasyfork.icu/de/scripts/372847-mal-sync", src: "https://img.shields.io/badge/Userscript-Download-brightgreen.svg?style=flat-square&label=Userscript&logo=javascript&logoColor=white" } }, [ _c("img", { attrs: { src: "https://img.shields.io/badge/Userscript-Download-brightgreen.svg?style=flat-square&label=Userscript&logo=javascript&logoColor=white" } }), _vm._v(" "), _c("span", { attrs: { slot: "placeholder" }, slot: "placeholder" }, [ _vm._v("\n Loading\n ") ]) ]) ], 1) ]) ]) ], 1) ]); }; render._withStripped = !0; var minimalApp_settingsvue_type_script_lang_js_ = __webpack_require__(13).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(minimalApp_settingsvue_type_script_lang_js_, render, [ function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("div", { staticClass: "mdl-card__title mdl-card--border" }, [ _c("h2", { staticClass: "mdl-card__title-text" }, [ this._v("General") ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("li", { staticClass: "mdl-list__item" }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ this._v("\n Mode\n ") ]), this._v(" "), _c("span", { staticClass: "mdl-list__item-secondary-action" }, [ _c("select", { staticClass: "inputtext mdl-textfield__input", staticStyle: { outline: "none" }, attrs: { name: "myinfo_score", id: "syncMode" } }, [ _c("option", { attrs: { value: "MAL" } }, [ this._v("MyAnimeList") ]), this._v(" "), _c("option", { attrs: { value: "ANILIST" } }, [ this._v("AniList") ]) ]) ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("span", { staticClass: "mdl-list__item-secondary-action" }, [ _c("a", { attrs: { target: "_blank", href: "https://anilist.co/api/v2/oauth/authorize?client_id=1487&response_type=token" } }, [ this._v("Authenticate") ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("div", { staticClass: "mdl-card__title mdl-card--border" }, [ _c("h2", { staticClass: "mdl-card__title-text" }, [ this._v("MyAnimeList") ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("span", { staticClass: "mdl-list__item-secondary-action" }, [ _c("select", { staticClass: "inputtext mdl-textfield__input", staticStyle: { outline: "none" }, attrs: { name: "myinfo_score", id: "malThumbnail" } }, [ _c("option", { attrs: { value: "144" } }, [ this._v("Large") ]), this._v(" "), _c("option", { attrs: { value: "100" } }, [ this._v("Medium") ]), this._v(" "), _c("option", { attrs: { value: "60" } }, [ this._v("Small") ]), this._v(" "), _c("option", { attrs: { value: "0" } }, [ this._v("MAL Default") ]) ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("div", { staticClass: "mdl-card__title mdl-card--border" }, [ _c("h2", { staticClass: "mdl-card__title-text" }, [ this._v("MyAnimeList / AniList") ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("div", { staticClass: "mdl-card__title mdl-card--border" }, [ _c("h2", { staticClass: "mdl-card__title-text" }, [ this._v("miniMAL") ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("li", { staticClass: "mdl-list__item" }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ this._v("\n Display to the\n ") ]), this._v(" "), _c("span", { staticClass: "mdl-list__item-secondary-action" }, [ _c("select", { staticClass: "inputtext mdl-textfield__input", staticStyle: { outline: "none" }, attrs: { name: "myinfo_score", id: "posLeft" } }, [ _c("option", { attrs: { value: "left" } }, [ this._v("Left") ]), this._v(" "), _c("option", { attrs: { value: "right" } }, [ this._v("Right") ]) ]) ]) ]); }, function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("li", { staticClass: "mdl-list__item" }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ _vm._v("\n Interval\n ") ]), _vm._v(" "), _c("span", { staticClass: "mdl-list__item-secondary-action" }, [ _c("select", { staticClass: "inputtext mdl-textfield__input", staticStyle: { outline: "none" }, attrs: { name: "updateCheckTime", id: "updateCheckTime" } }, [ _c("option", { attrs: { value: "0" } }, [ _vm._v("Off") ]), _vm._v(" "), _c("option", { attrs: { value: "60" } }, [ _vm._v("1h") ]), _vm._v(" "), _c("option", { attrs: { value: "240" } }, [ _vm._v("4h") ]), _vm._v(" "), _c("option", { attrs: { value: "720" } }, [ _vm._v("12h") ]), _vm._v(" "), _c("option", { attrs: { value: "1440" } }, [ _vm._v("24h") ]), _vm._v(" "), _c("option", { attrs: { value: "2880" } }, [ _vm._v("48h") ]) ]) ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("li", { staticClass: "mdl-list__item updateCheckEnable", staticStyle: { display: "none" } }, [ _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored", attrs: { type: "button", id: "updateCheckUi" } }, [ this._v("Debugging") ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("div", { staticClass: "mdl-card__title mdl-card--border" }, [ _c("h2", { staticClass: "mdl-card__title-text" }, [ this._v("ETC") ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("li", { staticClass: "mdl-list__item" }, [ _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored", attrs: { type: "button", id: "clearCache" } }, [ this._v("Clear Cache") ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("div", { staticClass: "user pop" }, [ _c("div", { staticClass: "image align-middle" }, [ _c("i", { staticClass: "material-icons", staticStyle: { color: "white", padding: "4px 4px", cursor: "pointer" } }, [ this._v("\n arrow_right_alt\n ") ]) ]) ]); } ], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/settings.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("div", { staticClass: "page-content malClear", attrs: { id: "malRecommendations" } }, [ _c("div", { directives: [ { name: "show", rawName: "v-show", value: "" == _vm.xhr, expression: "xhr == ''" } ], staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate", staticStyle: { width: "100%", position: "absolute" }, attrs: { id: "loadOverview" } }), _vm._v(" "), _c("span", { directives: [ { name: "show", rawName: "v-show", value: "" != _vm.xhr && "" == _vm.recommendations, expression: "xhr != '' && recommendations == ''" } ], staticClass: "mdl-chip", staticStyle: { margin: "auto", "margin-top": "16px", display: "table" } }, [ _c("span", { staticClass: "mdl-chip__text" }, [ _vm._v("Nothing Found") ]) ]), _vm._v(" "), "" != _vm.xhr ? _c("div", { staticClass: "mdl-grid", domProps: { innerHTML: _vm._s(_vm.recommendations) } }) : _vm._e() ]); }; render._withStripped = !0; var minimalApp_recommendationsvue_type_script_lang_js_ = __webpack_require__(19).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(minimalApp_recommendationsvue_type_script_lang_js_, render, [], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/recommendations.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("div", { class: { "pop-over": !_vm.navigation }, staticStyle: { height: "100%" }, attrs: { id: "material" } }, [ _c("div", { staticClass: "mdl-layout mdl-js-layout mdl-layout--fixed-header mdl-layout--fixed-tabs" }, [ _c("header", { staticClass: "mdl-layout__header", staticStyle: { "min-height": "0" } }, [ _c("button", { directives: [ { name: "show", rawName: "v-show", value: _vm.backbutton, expression: "backbutton" } ], staticClass: "mdl-layout__drawer-button", staticStyle: { display: "none" }, attrs: { id: "backbutton" }, on: { click: function($event) { return _vm.backbuttonClick(); } } }, [ _c("i", { staticClass: "material-icons" }, [ _vm._v("arrow_back") ]) ]), _vm._v(" "), _c("div", { staticClass: "mdl-layout__header-row" }, [ _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--icon mdl-layout__drawer-button", style: _vm.backbuttonBookStyle, attrs: { id: "book" }, on: { click: function($event) { return _vm.bookClick(); } } }, [ _c("i", { staticClass: "material-icons md-48 bookIcon" }, [ _vm._v(_vm._s(_vm.bookIcon)) ]) ]), _vm._v(" "), _c("div", { staticClass: "mdl-textfield mdl-js-textfield mdl-textfield--expandable", class: { "is-dirty": _vm.currentTab == _vm.tabs.search.title }, staticStyle: { "margin-left": "-57px", "margin-top": "3px", "padding-left": "40px" }, style: _vm.backbuttonSearchStyle, attrs: { id: "SearchButton" } }, [ _vm._m(0), _vm._v(" "), _c("div", { staticClass: "mdl-textfield__expandable-holder" }, [ _c("input", { directives: [ { name: "model", rawName: "v-model", value: _vm.keyword, expression: "keyword" } ], staticClass: "mdl-textfield__input", attrs: { type: "text", id: "headMalSearch" }, domProps: { value: _vm.keyword }, on: { keyup: function($event) { return _vm.keywordSet(); }, input: function($event) { $event.target.composing || (_vm.keyword = $event.target.value); } } }), _vm._v(" "), _c("label", { staticClass: "mdl-textfield__label", attrs: { for: "headMalSearch" } }) ]) ]), _vm._v(" "), _vm._m(1), _vm._v(" "), _vm._m(2) ]), _vm._v(" "), _c("div", { staticClass: "mdl-layout__tab-bar mdl-js-ripple-effect" }, [ _c("a", { staticClass: "mdl-layout__tab", class: { "is-active": _vm.currentTab == _vm.tabs.overview.title }, on: { click: function($event) { return _vm.selectTab(_vm.tabs.overview.title); } } }, [ _vm._v("Overview") ]), _vm._v(" "), _c("a", { staticClass: "mdl-layout__tab reviewsTab", class: { "is-active": _vm.currentTab == _vm.tabs.reviews.title }, on: { click: function($event) { return _vm.selectTab(_vm.tabs.reviews.title); } } }, [ _vm._v("Reviews") ]), _vm._v(" "), _c("a", { staticClass: "mdl-layout__tab recommendationTab", class: { "is-active": _vm.currentTab == _vm.tabs.recommendations.title }, on: { click: function($event) { return _vm.selectTab(_vm.tabs.recommendations.title); } } }, [ _vm._v("Recommendations") ]), _vm._v(" "), _c("a", { staticClass: "mdl-layout__tab settingsTab", class: { "is-active": _vm.currentTab == _vm.tabs.settings.title }, on: { click: function($event) { return _vm.selectTab(_vm.tabs.settings.title); } } }, [ _vm._v("Settings") ]) ]) ]), _vm._v(" "), _c("main", { staticClass: "mdl-layout__content", staticStyle: { height: "100%" }, attrs: { "data-simplebar": "" } }, [ _c("section", { staticClass: "mdl-layout__tab-panel", class: { "is-active": _vm.currentTab == _vm.tabs.overview.title }, attrs: { id: "fixed-tab-1" } }, [ _c("overviewVue", { attrs: { url: _vm.renderUrl } }) ], 1), _vm._v(" "), _c("section", { staticClass: "mdl-layout__tab-panel", class: { "is-active": _vm.currentTab == _vm.tabs.reviews.title }, attrs: { id: "fixed-tab-2" } }, [ _c("reviewsVue", { attrs: { url: _vm.renderUrl, state: _vm.currentTab == _vm.tabs.reviews.title } }) ], 1), _vm._v(" "), _c("section", { staticClass: "mdl-layout__tab-panel", class: { "is-active": _vm.currentTab == _vm.tabs.recommendations.title }, attrs: { id: "fixed-tab-3" } }, [ _c("recommendationsVue", { attrs: { url: _vm.renderUrl, state: _vm.currentTab == _vm.tabs.recommendations.title } }) ], 1), _vm._v(" "), _c("section", { staticClass: "mdl-layout__tab-panel", class: { "is-active": _vm.popOver }, attrs: { id: "fixed-tab-4" } }, [ _c("keep-alive", [ _vm.currentTab == _vm.tabs.bookmarks.title ? _c("bookmarksVue", { attrs: { state: _vm.tabs.bookmarks.state, listType: _vm.tabs.bookmarks.type } }, [ _c("div", { staticClass: "mdl-grid", staticStyle: { "justify-content": "space-around" }, attrs: { id: "malList" } }, [ _c("select", { directives: [ { name: "model", rawName: "v-model", value: _vm.tabs.bookmarks.type, expression: "tabs.bookmarks.type" } ], staticClass: "inputtext mdl-textfield__input mdl-cell mdl-cell--12-col", staticStyle: { outline: "none", "background-color": "white", border: "none" }, attrs: { name: "myinfo_score", id: "userListType" }, on: { change: function($event) { var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) { return o.selected; }).map(function(o) { return "_value" in o ? o._value : o.value; }); _vm.$set(_vm.tabs.bookmarks, "type", $event.target.multiple ? $$selectedVal : $$selectedVal[0]); } } }, [ _c("option", { attrs: { value: "anime" } }, [ _vm._v("Anime") ]), _vm._v(" "), _c("option", { attrs: { value: "manga" } }, [ _vm._v("Manga") ]) ]), _vm._v(" "), _c("select", { directives: [ { name: "model", rawName: "v-model", value: _vm.tabs.bookmarks.state, expression: "tabs.bookmarks.state" } ], staticClass: "inputtext mdl-textfield__input mdl-cell mdl-cell--12-col", staticStyle: { outline: "none", "background-color": "white", border: "none" }, attrs: { name: "myinfo_score", id: "userListState" }, on: { change: function($event) { var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) { return o.selected; }).map(function(o) { return "_value" in o ? o._value : o.value; }); _vm.$set(_vm.tabs.bookmarks, "state", $event.target.multiple ? $$selectedVal : $$selectedVal[0]); } } }, [ _c("option", { attrs: { value: "7" } }, [ _vm._v("All") ]), _vm._v(" "), _c("option", { attrs: { value: "1", selected: "" } }, [ _vm._v(_vm._s(_vm.utils.watching(_vm.tabs.bookmarks.type))) ]), _vm._v(" "), _c("option", { attrs: { value: "2" } }, [ _vm._v("Completed") ]), _vm._v(" "), _c("option", { attrs: { value: "3" } }, [ _vm._v("On-Hold") ]), _vm._v(" "), _c("option", { attrs: { value: "4" } }, [ _vm._v("Dropped") ]), _vm._v(" "), _c("option", { attrs: { value: "6" } }, [ _vm._v(_vm._s(_vm.utils.planTo(_vm.tabs.bookmarks.type))) ]) ]) ]) ]) : _vm._e(), _vm._v(" "), _vm.currentTab == _vm.tabs.search.title ? _c("searchVue", { attrs: { keyword: _vm.tabs.search.keyword, type: _vm.tabs.search.type } }, [ _c("div", { staticClass: "mdl-grid", staticStyle: { "justify-content": "space-around" } }, [ _c("select", { directives: [ { name: "model", rawName: "v-model", value: _vm.tabs.search.type, expression: "tabs.search.type" } ], staticClass: "inputtext mdl-textfield__input mdl-cell mdl-cell--12-col", staticStyle: { outline: "none", "background-color": "white", border: "none" }, attrs: { name: "myinfo_score", id: "userListType" }, on: { change: function($event) { var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) { return o.selected; }).map(function(o) { return "_value" in o ? o._value : o.value; }); _vm.$set(_vm.tabs.search, "type", $event.target.multiple ? $$selectedVal : $$selectedVal[0]); } } }, [ _c("option", { attrs: { value: "anime" } }, [ _vm._v("Anime") ]), _vm._v(" "), _c("option", { attrs: { value: "manga" } }, [ _vm._v("Manga") ]) ]) ]) ]) : _vm._e() ], 1), _vm._v(" "), _vm.currentTab == _vm.tabs.updateCheck.title ? _c("updateCheckVue") : _vm._e() ], 1), _vm._v(" "), _c("section", { staticClass: "mdl-layout__tab-panel", class: { "is-active": _vm.currentTab == _vm.tabs.settings.title }, attrs: { id: "fixed-tab-5" } }, [ _c("div", { staticClass: "page-content malClear", attrs: { id: "malConfig" } }, [ _c("settingsVue", { attrs: { page: _vm.page } }) ], 1) ]) ]) ]) ]); }; render._withStripped = !0; var minimal_minimalAppvue_type_script_lang_js_ = __webpack_require__(12).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(minimal_minimalAppvue_type_script_lang_js_, render, [ function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("label", { staticClass: "mdl-button mdl-js-button mdl-button--icon", attrs: { for: "headMalSearch" } }, [ _c("i", { staticClass: "material-icons" }, [ this._v("search") ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--icon mdl-layout__drawer-button", staticStyle: { left: "initial", right: "40px" }, attrs: { id: "material-fullscreen" } }, [ _c("i", { staticClass: "material-icons md-48" }, [ this._v("fullscreen") ]) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--icon mdl-layout__drawer-button", staticStyle: { left: "initial", right: "0" }, attrs: { id: "close-info-popup" } }, [ _c("i", { staticClass: "material-icons close" }, [ this._v("close") ]) ]); } ], !1, null, null, null); component.options.__file = "src/minimal/minimalApp.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("div", { staticClass: "page-content" }, [ _c("div", { directives: [ { name: "show", rawName: "v-show", value: "" == _vm.xhr, expression: "xhr == ''" } ], staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate", staticStyle: { width: "100%", position: "absolute" }, attrs: { id: "loadOverview" } }), _vm._v(" "), "" != _vm.xhr ? _c("div", { staticClass: "mdl-grid" }, [ _c("div", { staticClass: "mdl-cell mdl-cell--1-col mdl-cell--8-col-tablet mdl-cell--6-col-phone mdl-shadow--4dp stats-block malClear", staticStyle: { "min-width": "120px" }, domProps: { innerHTML: _vm._s(_vm.statistics) } }), _vm._v(" "), _c("div", { staticClass: "mdl-grid mdl-cell mdl-shadow--4dp coverinfo malClear", staticStyle: { display: "block", "flex-grow": "100", "min-width": "70%" } }, [ _c("div", { staticClass: "mdl-card__media mdl-cell mdl-cell--2-col", staticStyle: { "background-color": "transparent", float: "left", "padding-right": "16px" } }, [ _c("clazy-load", { staticClass: "malImage malClear", staticStyle: { width: "100%", height: "auto" }, attrs: { src: _vm.image } }, [ _c("img", { staticStyle: { height: "auto", width: "100%" }, attrs: { src: _vm.image } }) ]) ], 1), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--12-col" }, [ _c("a", { staticClass: "mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect malClear malLink", staticStyle: { float: "right" }, attrs: { href: _vm.displayUrl, target: "_blank" } }, [ _c("i", { staticClass: "material-icons" }, [ _vm._v("open_in_new") ]) ]), _vm._v(" "), _c("h1", { staticClass: "malTitle mdl-card__title-text malClear", staticStyle: { "padding-left": "0px", overflow: "visible" }, domProps: { innerHTML: _vm._s(_vm.title) } }), _vm._v(" "), _c("div", { staticClass: "malAltTitle mdl-card__supporting-text malClear", staticStyle: { padding: "10px 0 0 0px", overflow: "visible" }, domProps: { innerHTML: _vm._s(_vm.altTitle) } }) ]), _vm._v(" "), _c("div", { staticClass: "malDescription malClear mdl-cell mdl-cell--10-col", staticStyle: { overflow: "hidden" } }, [ _c("p", { staticStyle: { color: "black" }, domProps: { innerHTML: _vm._s(_vm.description) } }), _vm._v(" "), _c("div", { directives: [ { name: "show", rawName: "v-show", value: _vm.streaming, expression: "streaming" } ], staticClass: "mdl-card__actions mdl-card--border", staticStyle: { "padding-left": "0" }, domProps: { innerHTML: _vm._s(_vm.streaming) } }) ]) ]), _vm._v(" "), _c("div", { staticClass: "mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet mdl-shadow--4dp data-block mdl-grid mdl-grid--no-spacing malClear" }, [ _vm.prediction && _vm.prediction.prediction.airing ? _c("li", { staticClass: "mdl-list__item", staticStyle: { width: "100%" } }, [ _vm._v(_vm._s(_vm.prediction.text)) ]) : _vm._e(), _vm._v(" "), _c("table", { attrs: { border: "0", cellpadding: "0", cellspacing: "0", width: "100%" } }, [ _c("tbody", [ _c("li", { staticClass: "mdl-list__item mdl-list__item--three-line", staticStyle: { width: "100%" } }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ _c("span", [ _vm._v("Status:") ]), _vm._v(" "), _c("span", { staticClass: "mdl-list__item-text-body" }, [ _c("select", { directives: [ { name: "model", rawName: "v-model", value: _vm.malStatus, expression: "malStatus" } ], staticClass: "inputtext js-anime-status-dropdown mdl-textfield__input", staticStyle: { outline: "none" }, attrs: { disabled: !this.mal.malObj, name: "myinfo_status", id: "myinfo_status" }, on: { change: function($event) { var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) { return o.selected; }).map(function(o) { return "_value" in o ? o._value : o.value; }); _vm.malStatus = $event.target.multiple ? $$selectedVal : $$selectedVal[0]; } } }, [ _c("option", { attrs: { selected: "selected", value: "1" } }, [ _vm._v(_vm._s(_vm.utils.watching(_vm.localType))) ]), _vm._v(" "), _c("option", { attrs: { value: "2" } }, [ _vm._v("Completed") ]), _vm._v(" "), _c("option", { attrs: { value: "3" } }, [ _vm._v("On-Hold") ]), _vm._v(" "), _c("option", { attrs: { value: "4" } }, [ _vm._v("Dropped") ]), _vm._v(" "), _c("option", { attrs: { value: "6" } }, [ _vm._v(_vm._s(_vm.utils.planTo(_vm.localType))) ]) ]) ]) ]) ]), _vm._v(" "), _c("li", { staticClass: "mdl-list__item mdl-list__item--three-line", staticStyle: { width: "100%" } }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ _c("span", [ _vm._v(_vm._s(_vm.utils.episode(_vm.localType)) + ":") ]), _vm._v(" "), _c("span", { staticClass: "mdl-list__item-text-body" }, [ _c("input", { directives: [ { name: "model", rawName: "v-model", value: _vm.malEpisode, expression: "malEpisode" } ], staticClass: "inputtext mdl-textfield__input", staticStyle: { width: "35px", display: "inline-block" }, attrs: { disabled: !this.mal.malObj, type: "text", id: "myinfo_watchedeps", name: "myinfo_watchedeps", size: "3", value: "6" }, domProps: { value: _vm.malEpisode }, on: { input: function($event) { $event.target.composing || (_vm.malEpisode = $event.target.value); } } }), _vm._v(" / "), _vm.prediction ? _c("span", { domProps: { innerHTML: _vm._s(_vm.prediction.tag) } }) : _vm._e(), _vm._v(" "), _vm.mal.malObj && _vm.mal.malObj.totalEp ? _c("span", { attrs: { id: "curEps" } }, [ _vm._v(_vm._s(_vm.mal.malObj.totalEp)) ]) : _c("span", [ _vm._v("?") ]) ]), _vm._v(" "), _vm._m(0) ]) ]), _vm._v(" "), _c("li", { directives: [ { name: "show", rawName: "v-show", value: "manga" == _vm.localType, expression: "localType == 'manga'" } ], staticClass: "mdl-list__item mdl-list__item--three-line", staticStyle: { width: "100%" } }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ _c("span", [ _vm._v("Volume:") ]), _vm._v(" "), _c("span", { staticClass: "mdl-list__item-text-body" }, [ _c("input", { directives: [ { name: "model", rawName: "v-model", value: _vm.malVolume, expression: "malVolume" } ], staticClass: "inputtext mdl-textfield__input", staticStyle: { width: "35px", display: "inline-block" }, attrs: { disabled: !this.mal.malObj, type: "text", id: "myinfo_volumes", name: "myinfo_volumes", size: "3", value: "6" }, domProps: { value: _vm.malVolume }, on: { input: function($event) { $event.target.composing || (_vm.malVolume = $event.target.value); } } }), _vm._v(" / "), _vm.mal.malObj && _vm.mal.malObj.totalVol ? _c("span", { attrs: { id: "curVolumes" } }, [ _vm._v(_vm._s(_vm.mal.malObj.totalVol)) ]) : _c("span", [ _vm._v("?") ]) ]), _vm._v(" "), _vm._m(1) ]) ]), _vm._v(" "), _c("li", { staticClass: "mdl-list__item mdl-list__item--three-line", staticStyle: { width: "100%" } }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ _c("span", [ _vm._v("Your Score:") ]), _vm._v(" "), _c("span", { staticClass: "mdl-list__item-text-body" }, [ _c("select", { directives: [ { name: "model", rawName: "v-model", value: _vm.malScore, expression: "malScore" } ], staticClass: "inputtext mdl-textfield__input", staticStyle: { outline: "none" }, attrs: { disabled: !this.mal.malObj, name: "myinfo_score", id: "myinfo_score" }, on: { change: function($event) { var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) { return o.selected; }).map(function(o) { return "_value" in o ? o._value : o.value; }); _vm.malScore = $event.target.multiple ? $$selectedVal : $$selectedVal[0]; } } }, [ _c("option", { attrs: { value: "", selected: "selected" } }, [ _vm._v("Select") ]), _vm._v(" "), _c("option", { attrs: { value: "10" } }, [ _vm._v("(10) Masterpiece") ]), _vm._v(" "), _c("option", { attrs: { value: "9" } }, [ _vm._v("(9) Great") ]), _vm._v(" "), _c("option", { attrs: { value: "8" } }, [ _vm._v("(8) Very Good") ]), _vm._v(" "), _c("option", { attrs: { value: "7" } }, [ _vm._v("(7) Good") ]), _vm._v(" "), _c("option", { attrs: { value: "6" } }, [ _vm._v("(6) Fine") ]), _vm._v(" "), _c("option", { attrs: { value: "5" } }, [ _vm._v("(5) Average") ]), _vm._v(" "), _c("option", { attrs: { value: "4" } }, [ _vm._v("(4) Bad") ]), _vm._v(" "), _c("option", { attrs: { value: "3" } }, [ _vm._v("(3) Very Bad") ]), _vm._v(" "), _c("option", { attrs: { value: "2" } }, [ _vm._v("(2) Horrible") ]), _vm._v(" "), _c("option", { attrs: { value: "1" } }, [ _vm._v("(1) Appalling") ]) ]) ]) ]) ]), _vm._v(" "), _c("li", { staticClass: "mdl-list__item", staticStyle: { width: "100%" } }, [ _vm.mal.malObj && _vm.mal.malObj.addAnime ? _c("input", { staticClass: "inputButton btn-middle flat js-anime-update-button mdl-button mdl-js-button mdl-button--raised mdl-button--accent", staticStyle: { "margin-right": "5px" }, attrs: { type: "button", name: "myinfo_submit", value: "Add", "data-upgraded": ",MaterialButton", disabled: !_vm.mal.malObj }, on: { click: function($event) { return _vm.malSync(); } } }) : _c("input", { staticClass: "inputButton btn-middle flat js-anime-update-button mdl-button mdl-js-button mdl-button--raised mdl-button--colored", staticStyle: { "margin-right": "5px" }, attrs: { type: "button", name: "myinfo_submit", value: "Update", "data-upgraded": ",MaterialButton", disabled: !_vm.mal.malObj }, on: { click: function($event) { return _vm.malSync(); } } }), _vm._v(" "), _vm.editUrl && _vm.mal.malObj ? _c("small", [ _c("a", { attrs: { href: _vm.editUrl, target: "_blank" } }, [ _vm._v("Edit Details") ]) ]) : _vm._e() ]) ]) ]) ]), _vm._v(" "), _c("div", { directives: [ { name: "show", rawName: "v-show", value: _vm.related, expression: "related" } ], staticClass: "mdl-grid mdl-grid--no-spacing mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet mdl-shadow--4dp related-block alternative-list mdl-grid malClear" }, [ _c("ul", { staticClass: "mdl-list" }, _vm._l(_vm.related, function(relatedType) { return _c("li", { staticClass: "mdl-list__item mdl-list__item--two-line" }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ _c("span", [ _vm._v("\n " + _vm._s(relatedType.type) + "\n ") ]), _vm._v(" "), _c("span", { staticClass: "mdl-list__item-sub-title" }, _vm._l(relatedType.links, function(link) { return _c("div", [ _c("a", { attrs: { href: link.url } }, [ _vm._v(_vm._s(link.title)) ]), _vm._v(" "), _c("span", { domProps: { innerHTML: _vm._s(link.statusTag) } }) ]); }), 0) ]) ]); }), 0) ]), _vm._v(" "), _c("div", { directives: [ { name: "show", rawName: "v-show", value: _vm.kiss2mal, expression: "kiss2mal" } ], staticClass: "mdl-grid mdl-grid--no-spacing mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet mdl-shadow--4dp mdl-grid alternative-list stream-block malClear" }, [ _c("ul", { staticClass: "mdl-list stream-block-inner" }, _vm._l(_vm.kiss2mal, function(streams, page) { return _c("li", { staticClass: "mdl-list__item mdl-list__item--three-line" }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ _c("span", [ _c("img", { staticStyle: { "padding-bottom": "3px" }, attrs: { src: _vm.getMal2KissFavicon(streams) } }), _vm._v("\n " + _vm._s(page) + "\n ") ]), _vm._v(" "), _c("span", { staticClass: "mdl-list__item-text-body", attrs: { id: "KissAnimeLinks" } }, _vm._l(streams, function(stream) { return _c("div", { staticClass: "mal_links" }, [ _c("a", { attrs: { target: "_blank", href: stream.url } }, [ _vm._v(_vm._s(stream.title)) ]) ]); }), 0) ]) ]); }), 0) ]), _vm._v(" "), _c("div", { directives: [ { name: "show", rawName: "v-show", value: _vm.characters.length > 0, expression: "characters.length > 0" } ], staticClass: "mdl-grid mdl-grid--no-spacing mdl-cell mdl-cell--12-col mdl-shadow--4dp characters-block mdl-grid malClear" }, [ _vm._m(2), _vm._v(" "), _c("div", { staticClass: "mdl-grid mdl-card__actions mdl-card--border", staticStyle: { "justify-content": "space-between" }, attrs: { id: "characterList" } }, [ _vm._l(_vm.characters, function(character) { return _c("div", [ _c("div", { staticClass: "mdl-grid", staticStyle: { width: "126px" } }, [ _c("clazy-load", { staticStyle: { width: "100%", height: "auto" }, attrs: { src: character.img, margin: "200px 0px", threshold: .1, ratio: .1 } }, [ _c("img", { staticStyle: { height: "auto", width: "100%" }, attrs: { src: character.img } }) ]), _vm._v(" "), _c("div", { domProps: { innerHTML: _vm._s(character.html) } }) ], 1) ]); }), _vm._v(" "), _vm._l(10, function(n) { return _c("div", { staticClass: "listPlaceholder", staticStyle: { height: "0" } }, [ _c("div", { staticClass: "mdl-grid", staticStyle: { width: "126px" } }) ]); }) ], 2) ]), _vm._v(" "), _c("div", { staticClass: "mdl-grid mdl-grid--no-spacing mdl-cell mdl-cell--12-col mdl-shadow--4dp info-block mdl-grid malClear", domProps: { innerHTML: _vm._s(_vm.info) } }) ]) : _vm._e() ]); }; render._withStripped = !0; var minimalApp_overviewvue_type_script_lang_js_ = __webpack_require__(18).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(minimalApp_overviewvue_type_script_lang_js_, render, [ function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("a", { staticClass: "js-anime-increment-episode-button", attrs: { href: "javascript:void(0)", target: "_blank" } }, [ _c("i", { staticClass: "fa fa-plus-circle ml4" }) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("a", { staticClass: "js-anime-increment-episode-button", attrs: { href: "javascript:void(0)", target: "_blank" } }, [ _c("i", { staticClass: "fa fa-plus-circle ml4" }) ]); }, function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("div", { staticClass: "mdl-card__actions clicker" }, [ _c("h1", { staticClass: "mdl-card__title-text", staticStyle: { float: "left" } }, [ this._v("Characters") ]) ]); } ], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/overview.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("div", [ _c("div", { directives: [ { name: "show", rawName: "v-show", value: _vm.loading, expression: "loading" } ], staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate", staticStyle: { width: "100%", position: "absolute" }, attrs: { id: "loadMalSearchPop" } }), _vm._v(" "), _vm._t("default"), _vm._v(" "), _vm.loading || _vm.items.length ? _vm._e() : _c("span", { staticClass: "mdl-chip", staticStyle: { margin: "auto", "margin-top": "16px", display: "table" } }, [ _c("span", { staticClass: "mdl-chip__text" }, [ _vm._v("No Entries") ]) ]), _vm._v(" "), _c("div", { staticClass: "mdl-grid", staticStyle: { "justify-content": "space-around" }, attrs: { id: "malList" } }, [ _vm._l(_vm.items, function(item) { return _c("div", { key: item.id }, [ _c("bookmarksItem", { ref: item.id, refInFor: !0, attrs: { item: item } }) ], 1); }), _vm._v(" "), _vm._l(10, function(n) { return _c("div", { staticClass: "listPlaceholder mdl-cell mdl-cell--2-col mdl-cell--4-col-tablet mdl-cell--6-col-phone mdl-shadow--2dp mdl-grid ", staticStyle: { cursor: "pointer", height: "0px", padding: "0", width: "210px", "margin-top": "0", "margin-bottom": "0", visibility: "hidden" } }); }) ], 2) ], 2); }; render._withStripped = !0; var minimalApp_bookmarksvue_type_script_lang_js_ = __webpack_require__(20).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(minimalApp_bookmarksvue_type_script_lang_js_, render, [], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/bookmarks.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("div", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp", style: _vm.wrong ? "border: 1px solid red;" : "" }, [ _c("div", { staticClass: "mdl-card__title mdl-card--border" }, [ _c("h2", { staticClass: "mdl-card__title-text" }, [ _vm._v("\n " + _vm._s(_vm.title) + "\n ") ]), _vm._v(" "), _c("a", { staticStyle: { "margin-left": "auto" }, attrs: { href: "https://github.com/lolamtisch/MALSync/wiki/Troubleshooting" } }, [ _vm._v("Help") ]) ]), _vm._v(" "), _c("div", { staticClass: "mdl-list__item" }, [ _c("div", { staticClass: "mdl-textfield mdl-js-textfield mdl-textfield--floating-label", staticStyle: { width: "100%" } }, [ _c("input", { directives: [ { name: "model", rawName: "v-model", value: _vm.offset, expression: "offset" } ], staticClass: "mdl-textfield__input", staticStyle: { "padding-right": "18px" }, attrs: { type: "number", step: "1", id: "malOffset" }, domProps: { value: _vm.offset }, on: { input: function($event) { $event.target.composing || (_vm.offset = $event.target.value); } } }), _vm._v(" "), _c("label", { staticClass: "mdl-textfield__label", attrs: { for: "malOffset" } }, [ _vm._v("Episode Offset") ]), _vm._v(" "), _c("tooltip", { staticStyle: { float: "right", "margin-top": "-17px" }, attrs: { direction: "left" } }, [ _vm._v('\n Input the episode offset, if an anime has 12 episodes, but uses the numbers 0-11 rather than 1-12, you simply type " +1 " in the episode offset.\n ') ]) ], 1) ]), _vm._v(" "), _c("div", { staticClass: "mdl-list__item", staticStyle: { "padding-bottom": "0", "padding-top": "0" } }, [ _c("div", { staticClass: "mdl-textfield mdl-js-textfield mdl-textfield--floating-label", staticStyle: { width: "100%" } }, [ _c("input", { directives: [ { name: "model", rawName: "v-model", value: _vm.malUrl, expression: "malUrl" } ], staticClass: "mdl-textfield__input", staticStyle: { "padding-right": "18px" }, attrs: { type: "text", id: "malUrlInput" }, domProps: { value: _vm.malUrl }, on: { input: function($event) { $event.target.composing || (_vm.malUrl = $event.target.value); } } }), _vm._v(" "), _c("label", { staticClass: "mdl-textfield__label", staticStyle: { color: "rgb(63,81,181)", "font-size": "12px", top: "4px", visibility: "visible" }, attrs: { for: "malUrlInput" } }, [ _vm._v("MyAnimeList Url") ]), _vm._v(" "), _c("tooltip", { staticStyle: { float: "right", "margin-top": "-17px" }, attrs: { direction: "left" } }, [ _vm._v("\n Only change this URL if it points to the wrong anime page on MAL.\n ") ]) ], 1) ]), _vm._v(" "), _c("div", { staticClass: "mdl-list__item", staticStyle: { "padding-bottom": "0", "padding-top": "0" } }, [ _c("div", { staticClass: "mdl-textfield mdl-js-textfield mdl-textfield--floating-label", staticStyle: { width: "100%" } }, [ _c("label", { staticClass: "mdl-textfield__label", attrs: { for: "malSearch" } }, [ _vm._v("\n Correction Search\n ") ]), _vm._v(" "), _c("input", { directives: [ { name: "model", rawName: "v-model", value: _vm.searchKeyword, expression: "searchKeyword" } ], staticClass: "mdl-textfield__input", staticStyle: { "padding-right": "18px" }, attrs: { type: "text", id: "malSearch" }, domProps: { value: _vm.searchKeyword }, on: { input: function($event) { $event.target.composing || (_vm.searchKeyword = $event.target.value); } } }), _vm._v(" "), _c("tooltip", { staticStyle: { float: "right", "margin-top": "-17px" }, attrs: { direction: "left" } }, [ _vm._v('\n This field is for finding an anime, when you need to correct the "MyAnimeList Url" shown above.'), _c("br"), _vm._v("\n To make a search, simply begin typing the name of an anime, and a list with results will automatically appear as you type.\n ") ]) ], 1) ]), _vm._v(" "), _vm._m(0), _vm._v(" "), _c("div", { staticClass: "mdl-list__item" }, [ _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored", attrs: { id: "malSubmit" }, on: { click: function($event) { return _vm.update(); } } }, [ _vm._v("Update") ]), _vm._v(" "), _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--accent", staticStyle: { "margin-left": "5px" }, attrs: { id: "malReset" }, on: { click: function($event) { return _vm.reset(); } } }, [ _vm._v("Reset") ]), _vm._v(" "), _c("button", { staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect", staticStyle: { "margin-left": "auto", float: "right" }, attrs: { id: "malNotOnMal", title: "If the Anime/Manga can't be found on MAL" }, on: { click: function($event) { return _vm.noMal(); } } }, [ _vm._v("No MAL") ]) ]), _vm._v(" "), _c("searchVue", { directives: [ { name: "show", rawName: "v-show", value: _vm.searchKeyword, expression: "searchKeyword" } ], attrs: { keyword: _vm.searchKeyword, type: _vm.searchType } }, [ _c("div", { staticClass: "mdl-grid", staticStyle: { "justify-content": "space-around" } }, [ _c("select", { directives: [ { name: "model", rawName: "v-model", value: _vm.searchType, expression: "searchType" } ], staticClass: "inputtext mdl-textfield__input mdl-cell mdl-cell--12-col", staticStyle: { outline: "none", "background-color": "white", border: "none" }, attrs: { name: "myinfo_score", id: "userListType" }, on: { change: function($event) { var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) { return o.selected; }).map(function(o) { return "_value" in o ? o._value : o.value; }); _vm.searchType = $event.target.multiple ? $$selectedVal : $$selectedVal[0]; } } }, [ _c("option", { attrs: { value: "anime" } }, [ _vm._v("Anime") ]), _vm._v(" "), _c("option", { attrs: { value: "manga" } }, [ _vm._v("Manga") ]) ]), _vm._v(" "), _c("a", { staticClass: "mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--2dp mdl-grid searchItem nojs", staticStyle: { cursor: "pointer" }, attrs: { href: "" } }, [ _c("div", { staticStyle: { margin: "-8px 0px -8px -8px", height: "100px", width: "64px", "background-color": "grey" } }), _vm._v(" "), _c("div", { staticClass: "mdl-cell", staticStyle: { "flex-grow": "100", cursor: "pointer", "margin-top": "0", "margin-bottom": "0" } }, [ _c("span", { staticStyle: { "font-size": "20px", "font-weight": "400", "line-height": "1" } }, [ _vm._v("\n No entry on MyAnimeList") ]), _vm._v(" "), _c("p", { staticStyle: { "margin-bottom": "0", "line-height": "20px", "padding-top": "3px" } }, [ _vm._v("\n If the Anime/Manga can't be found on MAL") ]) ]) ]) ]) ]) ], 1); }; render._withStripped = !0; var minimalApp_correctionvue_type_script_lang_js_ = __webpack_require__(15).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(minimalApp_correctionvue_type_script_lang_js_, render, [ function() { var _h = this.$createElement, _c = this._self._c || _h; return _c("div", { staticClass: "mdl-list__item", staticStyle: { "min-height": "0", "padding-bottom": "0", "padding-top": "0" } }, [ _c("div", { staticClass: "malResults", attrs: { id: "malSearchResults" } }) ]); } ], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/correction.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function() { var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h; return _c("li", { staticClass: "mdl-list__item" }, [ _c("span", { staticClass: "mdl-list__item-primary-content" }, [ _vm._t("default") ], 2), _vm._v(" "), _c("span", { staticClass: "mdl-list__item-secondary-action" }, [ _c("label", { staticClass: "mdl-switch mdl-js-switch mdl-js-ripple-effect", attrs: { for: _vm.option } }, [ _c("input", { directives: [ { name: "model", rawName: "v-model", value: _vm.value, expression: "value" } ], staticClass: "mdl-switch__input", attrs: { type: "checkbox", id: _vm.option }, domProps: { checked: Array.isArray(_vm.value) ? _vm._i(_vm.value, null) > -1 : _vm.value }, on: { change: function($event) { var $$a = _vm.value, $$el = $event.target, $$c = !!$$el.checked; if (Array.isArray($$a)) { var $$i = _vm._i($$a, null); $$el.checked ? $$i < 0 && (_vm.value = $$a.concat([ null ])) : $$i > -1 && (_vm.value = $$a.slice(0, $$i).concat($$a.slice($$i + 1))); } else _vm.value = $$c; } } }) ]) ]) ]); }; render._withStripped = !0; var components_settingsCheckboxvue_type_script_lang_js_ = __webpack_require__(14).a, componentNormalizer = __webpack_require__(4), component = Object(componentNormalizer.a)(components_settingsCheckboxvue_type_script_lang_js_, render, [], !1, null, null, null); component.options.__file = "src/minimal/minimalApp/components/settingsCheckbox.vue"; __webpack_exports__.a = component.exports; }, function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__), function(api, j) { var _pages_syncPage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32), _myanimelist_myanimelistClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49), _anilist_anilistClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(50), _utils_scheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(51), _utils_firebaseNotification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(52), __awaiter = function(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function(resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; console.log("%cMAL-Sync", "font-size: 40px; padding-bottom: 3px; color: white; text-shadow: -1px -1px #2e51a2, 1px -1px #2e51a2, -1px 1px #2e51a2, 1px 1px #2e51a2, 2px 2px #2e51a2, 3px 3px #2e51a2;", "Version: " + api.storage.version()), api.settings.init().then(() => { !function() { window.location.href.indexOf("myanimelist.net") > -1 ? new _myanimelist_myanimelistClass__WEBPACK_IMPORTED_MODULE_1__.a(window.location.href).init() : window.location.href.indexOf("anilist.co") > -1 ? new _anilist_anilistClass__WEBPACK_IMPORTED_MODULE_2__.a(window.location.href) : new _pages_syncPage__WEBPACK_IMPORTED_MODULE_0__.a(window.location.href).init(); Object(_utils_firebaseNotification__WEBPACK_IMPORTED_MODULE_4__.a)(); }(), function() { __awaiter(this, void 0, void 0, function*() { var schedule = yield api.storage.get("timestampUpdate/release"); (void 0 === schedule || j.$.now() - schedule > 3456e5) && (yield Object(_utils_scheduler__WEBPACK_IMPORTED_MODULE_3__.a)(), api.storage.set("timestampUpdate/release", j.$.now())); }); }(); }); }.call(this, __webpack_require__(0), __webpack_require__(1)); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(64); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: #d5f406;\n}\n.mal-sync-active {\n background-color: #002966;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: #d5f406;\n}\n#footer {\n z-index: 2;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n height: auto !important;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(66); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: #72cefe;\n}\n.mal-sync-active {\n background-color: #002966;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: #72cefe;\n}\n#footer {\n z-index: 2;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(68); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: #694ba1;\n}\n.mal-sync-active {\n background-color: #002966;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: #694ba1;\n}\n#MalData select option {\n background-color: white;\n}\nbody.dark #MalData select option {\n background-color: #1c1b26 !important;\n}\n#malp {\n margin: 0;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(70); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: white;\n}\n.mal-sync-active {\n background-color: #b2d1ff !important;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: white;\n}\n#malp {\n background-color: #555;\n padding: 10px 7px 5px 7px;\n}\n#malp span {\n color: white;\n}\n#malp select > * {\n background-color: #555 !important;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(72); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: white;\n}\n.mal-sync-active {\n background-color: #002966;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: white;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(74); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: inherit;\n}\n.mal-sync-active {\n background-color: #cee1ff;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: inherit;\n}\n#malp {\n margin: 0;\n}\n#malp span {\n color: inherit;\n}\n#malp select > * {\n background-color: white !important;\n}\n@media only screen and (max-width: 1440px) {\n #malp .MalLogin {\n width: 100%;\n }\n}\n.MALSyncDark #MalData select option {\n background-color: black !important;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(76); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: black;\n}\n.mal-sync-active {\n background-color: #cee1ff !important;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: black;\n}\n#malp {\n background-color: #fff;\n padding: 20px;\n border-radius: 2px;\n -webkit-box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.14);\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.14);\n margin-bottom: 20px;\n position: relative;\n}\n#malp span {\n color: black;\n}\n#malp select > * {\n background-color: white !important;\n}\n@media only screen and (max-width: 1320px) {\n #malp .MalLogin {\n width: 100%;\n }\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(78); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: #ffc119;\n}\n.mal-sync-active {\n background-color: #002966 !important;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: #ffc119;\n}\n#malp * {\n font-size: 13px;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(80); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: white;\n}\n.mal-sync-active {\n background-color: #002966;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: white;\n}\n.mal-sync-active a {\n background-color: #72abff !important;\n}\n#flashinfo-div {\n z-index: 100 !important;\n}\n#malp #malVolumes,\n#malp #malEpisodes {\n float: none;\n display: inline-block;\n border-radius: 0;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(82); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: black;\n}\n.mal-sync-active {\n background-color: #0066ff;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: black;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(84); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n color: white;\n}\n.mal-sync-active {\n background-color: #002966;\n}\n#malp select option {\n background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n font-size: inherit;\n font-family: inherit;\n background: transparent;\n border-width: 1px;\n border-color: grey;\n text-decoration: none;\n outline: medium none;\n border-width: 0px;\n height: auto;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n text-align: center;\n border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n border-color: white;\n}\n#malp {\n margin-top: 1rem;\n border-top: 0 solid hsla(0, 0%, 100%, 0.05);\n border-width: 1px 0;\n font-size: 14px;\n padding: 10px 5px 0;\n padding-top: 1rem;\n}\n#malp select {\n display: inline-block;\n width: auto;\n}\n#malp input {\n display: inline-block;\n}\n.my-float.open-info-popup {\n height: 100%;\n width: 100%;\n margin: 0 !important;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { (function(global) { var scope = void 0 !== global && global || "undefined" != typeof self && self || window, apply = Function.prototype.apply; function Timeout(id, clearFn) { this._id = id, this._clearFn = clearFn; } exports.setTimeout = function() { return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout); }, exports.setInterval = function() { return new Timeout(apply.call(setInterval, scope, arguments), clearInterval); }, exports.clearTimeout = exports.clearInterval = function(timeout) { timeout && timeout.close(); }, Timeout.prototype.unref = Timeout.prototype.ref = function() {}, Timeout.prototype.close = function() { this._clearFn.call(scope, this._id); }, exports.enroll = function(item, msecs) { clearTimeout(item._idleTimeoutId), item._idleTimeout = msecs; }, exports.unenroll = function(item) { clearTimeout(item._idleTimeoutId), item._idleTimeout = -1; }, exports._unrefActive = exports.active = function(item) { clearTimeout(item._idleTimeoutId); var msecs = item._idleTimeout; msecs >= 0 && (item._idleTimeoutId = setTimeout(function() { item._onTimeout && item._onTimeout(); }, msecs)); }, __webpack_require__(86), exports.setImmediate = "undefined" != typeof self && self.setImmediate || void 0 !== global && global.setImmediate || this && this.setImmediate, exports.clearImmediate = "undefined" != typeof self && self.clearImmediate || void 0 !== global && global.clearImmediate || this && this.clearImmediate; }).call(this, __webpack_require__(28)); }, function(module, exports, __webpack_require__) { (function(global, process) { !function(global, undefined) { "use strict"; if (!global.setImmediate) { var registerImmediate, html, channel, messagePrefix, onGlobalMessage, nextHandle = 1, tasksByHandle = {}, currentlyRunningATask = !1, doc = global.document, attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); attachTo = attachTo && attachTo.setTimeout ? attachTo : global, "[object process]" === {}.toString.call(global.process) ? registerImmediate = function(handle) { process.nextTick(function() { runIfPresent(handle); }); } : !function() { if (global.postMessage && !global.importScripts) { var postMessageIsAsynchronous = !0, oldOnMessage = global.onmessage; return global.onmessage = function() { postMessageIsAsynchronous = !1; }, global.postMessage("", "*"), global.onmessage = oldOnMessage, postMessageIsAsynchronous; } }() ? global.MessageChannel ? ((channel = new MessageChannel()).port1.onmessage = function(event) { runIfPresent(event.data); }, registerImmediate = function(handle) { channel.port2.postMessage(handle); }) : doc && "onreadystatechange" in doc.createElement("script") ? (html = doc.documentElement, registerImmediate = function(handle) { var script = doc.createElement("script"); script.onreadystatechange = function() { runIfPresent(handle), script.onreadystatechange = null, html.removeChild(script), script = null; }, html.appendChild(script); }) : registerImmediate = function(handle) { setTimeout(runIfPresent, 0, handle); } : (messagePrefix = "setImmediate$" + Math.random() + "$", onGlobalMessage = function(event) { event.source === global && "string" == typeof event.data && 0 === event.data.indexOf(messagePrefix) && runIfPresent(+event.data.slice(messagePrefix.length)); }, global.addEventListener ? global.addEventListener("message", onGlobalMessage, !1) : global.attachEvent("onmessage", onGlobalMessage), registerImmediate = function(handle) { global.postMessage(messagePrefix + handle, "*"); }), attachTo.setImmediate = function(callback) { "function" != typeof callback && (callback = new Function("" + callback)); for (var args = new Array(arguments.length - 1), i = 0; i < args.length; i++) args[i] = arguments[i + 1]; var task = { callback: callback, args: args }; return tasksByHandle[nextHandle] = task, registerImmediate(nextHandle), nextHandle++; }, attachTo.clearImmediate = clearImmediate; } function clearImmediate(handle) { delete tasksByHandle[handle]; } function runIfPresent(handle) { if (currentlyRunningATask) setTimeout(runIfPresent, 0, handle); else { var task = tasksByHandle[handle]; if (task) { currentlyRunningATask = !0; try { !function(task) { var callback = task.callback, args = task.args; switch (args.length) { case 0: callback(); break; case 1: callback(args[0]); break; case 2: callback(args[0], args[1]); break; case 3: callback(args[0], args[1], args[2]); break; default: callback.apply(undefined, args); } }(task); } finally { clearImmediate(handle), currentlyRunningATask = !1; } } } } }("undefined" == typeof self ? void 0 === global ? this : global : self); }).call(this, __webpack_require__(28), __webpack_require__(87)); }, function(module, exports) { var cachedSetTimeout, cachedClearTimeout, process = module.exports = {}; function defaultSetTimout() { throw new Error("setTimeout has not been defined"); } function defaultClearTimeout() { throw new Error("clearTimeout has not been defined"); } function runTimeout(fun) { if (cachedSetTimeout === setTimeout) return setTimeout(fun, 0); if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) return cachedSetTimeout = setTimeout, setTimeout(fun, 0); try { return cachedSetTimeout(fun, 0); } catch (e) { try { return cachedSetTimeout.call(null, fun, 0); } catch (e) { return cachedSetTimeout.call(this, fun, 0); } } } !function() { try { cachedSetTimeout = "function" == typeof setTimeout ? setTimeout : defaultSetTimout; } catch (e) { cachedSetTimeout = defaultSetTimout; } try { cachedClearTimeout = "function" == typeof clearTimeout ? clearTimeout : defaultClearTimeout; } catch (e) { cachedClearTimeout = defaultClearTimeout; } }(); var currentQueue, queue = [], draining = !1, queueIndex = -1; function cleanUpNextTick() { draining && currentQueue && (draining = !1, currentQueue.length ? queue = currentQueue.concat(queue) : queueIndex = -1, queue.length && drainQueue()); } function drainQueue() { if (!draining) { var timeout = runTimeout(cleanUpNextTick); draining = !0; for (var len = queue.length; len; ) { for (currentQueue = queue, queue = []; ++queueIndex < len; ) currentQueue && currentQueue[queueIndex].run(); queueIndex = -1, len = queue.length; } currentQueue = null, draining = !1, function(marker) { if (cachedClearTimeout === clearTimeout) return clearTimeout(marker); if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) return cachedClearTimeout = clearTimeout, clearTimeout(marker); try { cachedClearTimeout(marker); } catch (e) { try { return cachedClearTimeout.call(null, marker); } catch (e) { return cachedClearTimeout.call(this, marker); } } }(timeout); } } function Item(fun, array) { this.fun = fun, this.array = array; } function noop() {} process.nextTick = function(fun) { var args = new Array(arguments.length - 1); if (arguments.length > 1) for (var i = 1; i < arguments.length; i++) args[i - 1] = arguments[i]; queue.push(new Item(fun, args)), 1 !== queue.length || draining || runTimeout(drainQueue); }, Item.prototype.run = function() { this.fun.apply(null, this.array); }, process.title = "browser", process.browser = !0, process.env = {}, process.argv = [], process.version = "", process.versions = {}, process.on = noop, process.addListener = noop, process.once = noop, process.off = noop, process.removeListener = noop, process.removeAllListeners = noop, process.emit = noop, process.prependListener = noop, process.prependOnceListener = noop, process.listeners = function(name) { return []; }, process.binding = function(name) { throw new Error("process.binding is not supported"); }, process.cwd = function() { return "/"; }, process.chdir = function(dir) { throw new Error("process.chdir is not supported"); }, process.umask = function() { return 0; }; }, function(module, exports, __webpack_require__) { var result = __webpack_require__(89); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, "#material .mdl-card__supporting-text {\n width: initial;\n}\n.mdl-layout__header .mdl-textfield__label:after {\n background-color: red !important;\n}\n.alternative-list .mdl-list {\n max-width: 100%;\n margin: 0;\n padding: 0;\n}\n.alternative-list .mdl-list__item {\n height: auto;\n}\n.alternative-list .mdl-list__item-primary-content {\n height: auto !important;\n}\n.alternative-list .mdl-list__item-primary-content a {\n display: inline-block;\n}\n.alternative-list .mdl-list__item-text-body {\n height: auto !important;\n}\n.coverinfo .mdl-chip {\n height: auto;\n}\n.coverinfo .mdl-chip .mdl-chip__text {\n white-space: normal;\n line-height: 24px;\n}\n.mdl-layout__content::-webkit-scrollbar {\n width: 10px !important;\n background-color: #F5F5F5;\n}\n.mdl-layout__content::-webkit-scrollbar-thumb {\n background-color: #c1c1c1 !important;\n}\n.simplebar-track {\n width: 10px !important;\n background-color: #F5F5F5;\n}\n.simplebar-scrollbar {\n background-color: #c1c1c1 !important;\n}\n.simplebar-track.horizontal {\n display: none;\n}\n.simplebar-scrollbar {\n transition: height 100ms;\n border-radius: 0px !important;\n right: 0 !important;\n width: 100% !important;\n opacity: 1 !important;\n}\n.simplebar-scrollbar.visible:before {\n display: none;\n}\n.simplebar-content {\n margin-right: -7px !important;\n}\n.simplebar-track {\n margin-top: -2px;\n margin-bottom: -2px;\n}\na {\n text-decoration: none;\n}\n.mdl-layout__tab-panel a:hover {\n text-decoration: underline;\n}\n.mdl-cell {\n background-color: #fefefe;\n}\n#material.simple-header .mdl-layout__header .mdl-layout__tab-bar-container {\n display: none;\n}\n.newEp {\n position: absolute;\n background-color: #dedede;\n height: 25px;\n width: 29px;\n top: 3px;\n right: -4px;\n background-repeat: no-repeat;\n background-position: 4px 3px;\n background-image: url(https://github.com/google/material-design-icons/blob/master/social/1x_web/ic_notifications_none_black_18dp.png?raw=true);\n}\n.searchItem {\n text-decoration: none !important;\n color: black;\n}\n#material .mdl-layout__tab {\n cursor: pointer;\n}\n#material.settings-only .mdl-layout__header .mdl-layout__tab-bar-container,\n#material.pop-over .mdl-layout__header .mdl-layout__tab-bar-container {\n display: none;\n}\n#material.settings-only #fixed-tab-5.mdl-layout__tab-panel {\n display: block !important;\n}\n#characterList .loading {\n background-color: #cdcdcd;\n min-height: 196px;\n}\n.malImage.loading {\n background-color: #cdcdcd;\n padding-bottom: 133.33%;\n}\n#Mal-Sync-Popup #material-fullscreen {\n display: none !important;\n}\n#Mal-Sync-Popup .settings-only #book.open .bookIcon {\n display: none;\n}\n#Mal-Sync-Popup .settings-only #book.open .settingsIcon {\n display: block !important;\n}\n#material a.button_edit {\n text-decoration: none;\n background-color: #efefef;\n border-bottom: 1px solid #ebebeb;\n font-size: 10px;\n line-height: 1em;\n margin: 0;\n opacity: 1;\n padding: 2px 4px;\n -webkit-transition-duration: 0.3s;\n transition-duration: 0.3s;\n -webkit-transition-property: all;\n transition-property: all;\n -webkit-transition-timing-function: ease-in-out;\n transition-timing-function: ease-in-out;\n display: inline-block;\n font-family: Avenir, lucida grande, tahoma, verdana, arial, sans-serif;\n height: 9px;\n}\n#material a.button_edit.reading,\n#material a.button_edit.watching {\n background-color: #2db039;\n color: #fff;\n}\n#material a.button_edit.reading:hover,\n#material a.button_edit.watching:hover {\n opacity: 0.7;\n}\n#material a.button_edit.plantoread,\n#material a.button_edit.plantowatch {\n background-color: #c3c3c3;\n color: #fff;\n}\n#material a.button_edit.plantoread:hover,\n#material a.button_edit.plantowatch:hover {\n opacity: 0.7;\n}\n#material a.button_edit.completed {\n background-color: #26448f;\n color: #fff;\n}\n#material a.button_edit.completed:hover {\n opacity: 0.7;\n}\n#material a.button_edit.on-hold {\n background-color: #f1c83e;\n color: #fff;\n}\n#material a.button_edit.dropped {\n background-color: #a12f31;\n color: #fff;\n}\n#material a.button_edit.dropped:hover {\n opacity: 0.7;\n}\n#material #contributer {\n padding: 15px;\n padding-bottom: 0;\n}\n#material #contributer .group {\n display: none;\n text-transform: uppercase;\n font-size: 12px;\n padding: 5px 0px;\n font-weight: bold;\n color: #707070;\n opacity: 0;\n -webkit-transition: 1s;\n -o-transition: 1s;\n transition: 1s;\n}\n#material #contributer .user {\n height: 40px;\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n}\n#material #contributer .user .image {\n position: relative;\n vertical-align: middle!important;\n display: inline-block;\n height: 32px;\n width: 32px;\n margin-right: 10px;\n border-radius: 50%;\n overflow: hidden;\n border: 1px solid #e0e0e0;\n}\n#material #contributer .user .image .gif {\n position: absolute;\n display: none;\n}\n#material #contributer .user .text {\n vertical-align: middle!important;\n display: none;\n line-height: 100%;\n}\n#material #contributer .user.pop .image {\n background-color: #3f51b5;\n}\n#material #contributer .discord {\n display: none;\n}\n#material #contributer .inline-block {\n display: inline-block;\n}\n#material #contributer.open {\n padding-bottom: 15px;\n}\n#material #contributer.open .group {\n opacity: 1;\n display: block;\n}\n#material #contributer.open .user {\n display: block;\n}\n#material #contributer.open .user .image .gif {\n display: block;\n}\n#material #contributer.open .user .text {\n display: inline-block;\n}\n#material #contributer.open .user.pop {\n display: none;\n}\n#material #contributer.open .discord {\n display: block;\n}\n#material #contributer.open .inline-block {\n display: block;\n}\n", "" ]); }, function(module, exports, __webpack_require__) { var result = __webpack_require__(91); module.exports = "string" == typeof result ? result : result.toString(); }, function(module, exports, __webpack_require__) { (module.exports = __webpack_require__(6)(!1)).push([ module.i, ".site-theme-dark .nextStream img,\n.entry-card .nextStream img,\n.site-theme-dark .resumeStream img,\n.entry-card .resumeStream img {\n filter: invert(100%);\n}\n.entry-card .mal-sync-stream {\n position: absolute;\n max-height: 17px !important;\n left: 7px;\n top: -17px;\n background: rgba(var(--color-overlay), 0.8);\n border-radius: 100% 100% 0 0;\n}\n.entry-card .mal-sync-stream img {\n padding: 5px;\n padding-top: 7px;\n}\n.entry-card .nextStream,\n.entry-card .resumeStream {\n position: absolute;\n max-height: 17px !important;\n right: 7px;\n top: -15px;\n margin-right: 0px !important;\n background: rgba(var(--color-overlay), 0.8);\n border-radius: 100% 100% 0 0;\n}\n.entry-card .nextStream img,\n.entry-card .resumeStream img {\n margin: 5px;\n margin-top: 7px;\n}\n", "" ]); } ]);