您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
网页版签到或模拟客户端签到,模拟客户端可获得与客户端相同经验并且签到速度更快~
当前为
// ==UserScript== // @name 百度贴吧签到 // @version 3.2.0 // @description 网页版签到或模拟客户端签到,模拟客户端可获得与客户端相同经验并且签到速度更快~ // @author sakura-flutter // @namespace https://github.com/sakura-flutter/tampermonkey-scripts/commits/master/src/scripts/tieba // @license GPL-3.0 // @compatible chrome >= Latest // @compatible firefox >= Latest // @run-at document-end // @match https://tieba.baidu.com/index.html // @match https://tieba.baidu.com // @connect tieba.baidu.com // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_addValueChangeListener // @grant GM_removeValueChangeListener // @grant GM_addStyle // @require https://cdn.jsdelivr.net/npm/md5/dist/md5.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.runtime.global.prod.js // @require http://greasyfork.icu/scripts/411093-toast/code/Toast.js?version=862073 // ==/UserScript== /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 1530: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var charAt = __webpack_require__(8710).charAt; // `AdvanceStringIndex` abstract operation // https://tc39.github.io/ecma262/#sec-advancestringindex module.exports = function (S, index, unicode) { return index + (unicode ? charAt(S, index).length : 1); }; /***/ }), /***/ 9670: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isObject = __webpack_require__(111); module.exports = function (it) { if (!isObject(it)) { throw TypeError(String(it) + ' is not an object'); } return it; }; /***/ }), /***/ 1318: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var toIndexedObject = __webpack_require__(5656); var toLength = __webpack_require__(7466); var toAbsoluteIndex = __webpack_require__(1400); // `Array.prototype.{ indexOf, includes }` methods implementation var createMethod = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIndexedObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) { if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; module.exports = { // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes includes: createMethod(true), // `Array.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.indexof indexOf: createMethod(false) }; /***/ }), /***/ 4326: /***/ ((module) => { var toString = {}.toString; module.exports = function (it) { return toString.call(it).slice(8, -1); }; /***/ }), /***/ 9920: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var has = __webpack_require__(6656); var ownKeys = __webpack_require__(3887); var getOwnPropertyDescriptorModule = __webpack_require__(1236); var definePropertyModule = __webpack_require__(3070); module.exports = function (target, source) { var keys = ownKeys(source); var defineProperty = definePropertyModule.f; var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); } }; /***/ }), /***/ 8880: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var DESCRIPTORS = __webpack_require__(9781); var definePropertyModule = __webpack_require__(3070); var createPropertyDescriptor = __webpack_require__(9114); module.exports = DESCRIPTORS ? function (object, key, value) { return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); } : function (object, key, value) { object[key] = value; return object; }; /***/ }), /***/ 9114: /***/ ((module) => { module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; /***/ }), /***/ 9781: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var fails = __webpack_require__(7293); // Thank's IE8 for his funny defineProperty module.exports = !fails(function () { return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; }); /***/ }), /***/ 317: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var global = __webpack_require__(7854); var isObject = __webpack_require__(111); var document = global.document; // typeof document.createElement is 'object' in old IE var EXISTS = isObject(document) && isObject(document.createElement); module.exports = function (it) { return EXISTS ? document.createElement(it) : {}; }; /***/ }), /***/ 748: /***/ ((module) => { // IE8- don't enum bug keys module.exports = [ 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf' ]; /***/ }), /***/ 2109: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var global = __webpack_require__(7854); var getOwnPropertyDescriptor = __webpack_require__(1236).f; var createNonEnumerableProperty = __webpack_require__(8880); var redefine = __webpack_require__(1320); var setGlobal = __webpack_require__(3505); var copyConstructorProperties = __webpack_require__(9920); var isForced = __webpack_require__(4705); /* options.target - name of the target object options.global - target is the global object options.stat - export as static methods of target options.proto - export as prototype methods of target options.real - real prototype method for the `pure` version options.forced - export even if the native feature is available options.bind - bind methods to the target, required for the `pure` version options.wrap - wrap constructors to preventing global pollution, required for the `pure` version options.unsafe - use the simple assignment of property instead of delete + defineProperty options.sham - add a flag to not completely full polyfills options.enumerable - export as enumerable property options.noTargetGet - prevent calling a getter on target */ module.exports = function (options, source) { var TARGET = options.target; var GLOBAL = options.global; var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { target = global; } else if (STATIC) { target = global[TARGET] || setGlobal(TARGET, {}); } else { target = (global[TARGET] || {}).prototype; } if (target) for (key in source) { sourceProperty = source[key]; if (options.noTargetGet) { descriptor = getOwnPropertyDescriptor(target, key); targetProperty = descriptor && descriptor.value; } else targetProperty = target[key]; FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target if (!FORCED && targetProperty !== undefined) { if (typeof sourceProperty === typeof targetProperty) continue; copyConstructorProperties(sourceProperty, targetProperty); } // add a flag to not completely full polyfills if (options.sham || (targetProperty && targetProperty.sham)) { createNonEnumerableProperty(sourceProperty, 'sham', true); } // extend global redefine(target, key, sourceProperty, options); } }; /***/ }), /***/ 7293: /***/ ((module) => { module.exports = function (exec) { try { return !!exec(); } catch (error) { return true; } }; /***/ }), /***/ 7007: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; // TODO: Remove from `core-js@4` since it's moved to entry points __webpack_require__(4916); var redefine = __webpack_require__(1320); var fails = __webpack_require__(7293); var wellKnownSymbol = __webpack_require__(5112); var regexpExec = __webpack_require__(2261); var createNonEnumerableProperty = __webpack_require__(8880); var SPECIES = wellKnownSymbol('species'); var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { // #replace needs built-in support for named groups. // #match works fine because it just return the exec results, even if it has // a "grops" property. var re = /./; re.exec = function () { var result = []; result.groups = { a: '7' }; return result; }; return ''.replace(re, '$<a>') !== '7'; }); // IE <= 11 replaces $0 with the whole match, as if it was $& // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 var REPLACE_KEEPS_$0 = (function () { return 'a'.replace(/./, '$0') === '$0'; })(); var REPLACE = wellKnownSymbol('replace'); // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { if (/./[REPLACE]) { return /./[REPLACE]('a', '$0') === ''; } return false; })(); // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec // Weex JS has frozen built-in prototypes, so use try / catch wrapper var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { var re = /(?:)/; var originalExec = re.exec; re.exec = function () { return originalExec.apply(this, arguments); }; var result = 'ab'.split(re); return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; }); module.exports = function (KEY, length, exec, sham) { var SYMBOL = wellKnownSymbol(KEY); var DELEGATES_TO_SYMBOL = !fails(function () { // String methods call symbol-named RegEp methods var O = {}; O[SYMBOL] = function () { return 7; }; return ''[KEY](O) != 7; }); var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { // Symbol-named RegExp methods call .exec var execCalled = false; var re = /a/; if (KEY === 'split') { // We can't use real regex here since it causes deoptimization // and serious performance degradation in V8 // https://github.com/zloirock/core-js/issues/306 re = {}; // RegExp[@@split] doesn't call the regex's exec method, but first creates // a new one. We need to return the patched regex when creating the new one. re.constructor = {}; re.constructor[SPECIES] = function () { return re; }; re.flags = ''; re[SYMBOL] = /./[SYMBOL]; } re.exec = function () { execCalled = true; return null; }; re[SYMBOL](''); return !execCalled; }); if ( !DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || (KEY === 'replace' && !( REPLACE_SUPPORTS_NAMED_GROUPS && REPLACE_KEEPS_$0 && !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE )) || (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) ) { var nativeRegExpMethod = /./[SYMBOL]; var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { if (regexp.exec === regexpExec) { if (DELEGATES_TO_SYMBOL && !forceStringMethod) { // The native String method already delegates to @@method (this // polyfilled function), leasing to infinite recursion. // We avoid it by directly calling the native @@method method. return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; } return { done: true, value: nativeMethod.call(str, regexp, arg2) }; } return { done: false }; }, { REPLACE_KEEPS_$0: REPLACE_KEEPS_$0, REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE }); var stringMethod = methods[0]; var regexMethod = methods[1]; redefine(String.prototype, KEY, stringMethod); redefine(RegExp.prototype, SYMBOL, length == 2 // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) // 21.2.5.11 RegExp.prototype[@@split](string, limit) ? function (string, arg) { return regexMethod.call(string, this, arg); } // 21.2.5.6 RegExp.prototype[@@match](string) // 21.2.5.9 RegExp.prototype[@@search](string) : function (string) { return regexMethod.call(string, this); } ); } if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true); }; /***/ }), /***/ 5005: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var path = __webpack_require__(857); var global = __webpack_require__(7854); var aFunction = function (variable) { return typeof variable == 'function' ? variable : undefined; }; module.exports = function (namespace, method) { return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; }; /***/ }), /***/ 7854: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var check = function (it) { return it && it.Math == Math && it; }; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 module.exports = // eslint-disable-next-line no-undef check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) || // eslint-disable-next-line no-new-func Function('return this')(); /***/ }), /***/ 6656: /***/ ((module) => { var hasOwnProperty = {}.hasOwnProperty; module.exports = function (it, key) { return hasOwnProperty.call(it, key); }; /***/ }), /***/ 3501: /***/ ((module) => { module.exports = {}; /***/ }), /***/ 4664: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var DESCRIPTORS = __webpack_require__(9781); var fails = __webpack_require__(7293); var createElement = __webpack_require__(317); // Thank's IE8 for his funny defineProperty module.exports = !DESCRIPTORS && !fails(function () { return Object.defineProperty(createElement('div'), 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /***/ 8361: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var fails = __webpack_require__(7293); var classof = __webpack_require__(4326); var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings module.exports = fails(function () { // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 // eslint-disable-next-line no-prototype-builtins return !Object('z').propertyIsEnumerable(0); }) ? function (it) { return classof(it) == 'String' ? split.call(it, '') : Object(it); } : Object; /***/ }), /***/ 2788: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var store = __webpack_require__(5465); var functionToString = Function.toString; // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper if (typeof store.inspectSource != 'function') { store.inspectSource = function (it) { return functionToString.call(it); }; } module.exports = store.inspectSource; /***/ }), /***/ 9909: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var NATIVE_WEAK_MAP = __webpack_require__(8536); var global = __webpack_require__(7854); var isObject = __webpack_require__(111); var createNonEnumerableProperty = __webpack_require__(8880); var objectHas = __webpack_require__(6656); var sharedKey = __webpack_require__(6200); var hiddenKeys = __webpack_require__(3501); var WeakMap = global.WeakMap; var set, get, has; var enforce = function (it) { return has(it) ? get(it) : set(it, {}); }; var getterFor = function (TYPE) { return function (it) { var state; if (!isObject(it) || (state = get(it)).type !== TYPE) { throw TypeError('Incompatible receiver, ' + TYPE + ' required'); } return state; }; }; if (NATIVE_WEAK_MAP) { var store = new WeakMap(); var wmget = store.get; var wmhas = store.has; var wmset = store.set; set = function (it, metadata) { wmset.call(store, it, metadata); return metadata; }; get = function (it) { return wmget.call(store, it) || {}; }; has = function (it) { return wmhas.call(store, it); }; } else { var STATE = sharedKey('state'); hiddenKeys[STATE] = true; set = function (it, metadata) { createNonEnumerableProperty(it, STATE, metadata); return metadata; }; get = function (it) { return objectHas(it, STATE) ? it[STATE] : {}; }; has = function (it) { return objectHas(it, STATE); }; } module.exports = { set: set, get: get, has: has, enforce: enforce, getterFor: getterFor }; /***/ }), /***/ 4705: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var fails = __webpack_require__(7293); var replacement = /#|\.prototype\./; var isForced = function (feature, detection) { var value = data[normalize(feature)]; return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection; }; var normalize = isForced.normalize = function (string) { return String(string).replace(replacement, '.').toLowerCase(); }; var data = isForced.data = {}; var NATIVE = isForced.NATIVE = 'N'; var POLYFILL = isForced.POLYFILL = 'P'; module.exports = isForced; /***/ }), /***/ 111: /***/ ((module) => { module.exports = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }), /***/ 1913: /***/ ((module) => { module.exports = false; /***/ }), /***/ 133: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var fails = __webpack_require__(7293); module.exports = !!Object.getOwnPropertySymbols && !fails(function () { // Chrome 38 Symbol has incorrect toString conversion // eslint-disable-next-line no-undef return !String(Symbol()); }); /***/ }), /***/ 8536: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var global = __webpack_require__(7854); var inspectSource = __webpack_require__(2788); var WeakMap = global.WeakMap; module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); /***/ }), /***/ 3070: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var DESCRIPTORS = __webpack_require__(9781); var IE8_DOM_DEFINE = __webpack_require__(4664); var anObject = __webpack_require__(9670); var toPrimitive = __webpack_require__(7593); var nativeDefineProperty = Object.defineProperty; // `Object.defineProperty` method // https://tc39.github.io/ecma262/#sec-object.defineproperty exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (IE8_DOM_DEFINE) try { return nativeDefineProperty(O, P, Attributes); } catch (error) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; /***/ }), /***/ 1236: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var DESCRIPTORS = __webpack_require__(9781); var propertyIsEnumerableModule = __webpack_require__(5296); var createPropertyDescriptor = __webpack_require__(9114); var toIndexedObject = __webpack_require__(5656); var toPrimitive = __webpack_require__(7593); var has = __webpack_require__(6656); var IE8_DOM_DEFINE = __webpack_require__(4664); var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPrimitive(P, true); if (IE8_DOM_DEFINE) try { return nativeGetOwnPropertyDescriptor(O, P); } catch (error) { /* empty */ } if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); }; /***/ }), /***/ 8006: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var internalObjectKeys = __webpack_require__(6324); var enumBugKeys = __webpack_require__(748); var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method // https://tc39.github.io/ecma262/#sec-object.getownpropertynames exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return internalObjectKeys(O, hiddenKeys); }; /***/ }), /***/ 5181: /***/ ((__unused_webpack_module, exports) => { exports.f = Object.getOwnPropertySymbols; /***/ }), /***/ 6324: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var has = __webpack_require__(6656); var toIndexedObject = __webpack_require__(5656); var indexOf = __webpack_require__(1318).indexOf; var hiddenKeys = __webpack_require__(3501); module.exports = function (object, names) { var O = toIndexedObject(object); var i = 0; var result = []; var key; for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); // Don't enum bug & hidden keys while (names.length > i) if (has(O, key = names[i++])) { ~indexOf(result, key) || result.push(key); } return result; }; /***/ }), /***/ 5296: /***/ ((__unused_webpack_module, exports) => { "use strict"; var nativePropertyIsEnumerable = {}.propertyIsEnumerable; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); // `Object.prototype.propertyIsEnumerable` method implementation // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { var descriptor = getOwnPropertyDescriptor(this, V); return !!descriptor && descriptor.enumerable; } : nativePropertyIsEnumerable; /***/ }), /***/ 3887: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getBuiltIn = __webpack_require__(5005); var getOwnPropertyNamesModule = __webpack_require__(8006); var getOwnPropertySymbolsModule = __webpack_require__(5181); var anObject = __webpack_require__(9670); // all object keys, includes non-enumerable and symbols module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { var keys = getOwnPropertyNamesModule.f(anObject(it)); var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; }; /***/ }), /***/ 857: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var global = __webpack_require__(7854); module.exports = global; /***/ }), /***/ 1320: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var global = __webpack_require__(7854); var createNonEnumerableProperty = __webpack_require__(8880); var has = __webpack_require__(6656); var setGlobal = __webpack_require__(3505); var inspectSource = __webpack_require__(2788); var InternalStateModule = __webpack_require__(9909); var getInternalState = InternalStateModule.get; var enforceInternalState = InternalStateModule.enforce; var TEMPLATE = String(String).split('String'); (module.exports = function (O, key, value, options) { var unsafe = options ? !!options.unsafe : false; var simple = options ? !!options.enumerable : false; var noTargetGet = options ? !!options.noTargetGet : false; if (typeof value == 'function') { if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key); enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); } if (O === global) { if (simple) O[key] = value; else setGlobal(key, value); return; } else if (!unsafe) { delete O[key]; } else if (!noTargetGet && O[key]) { simple = true; } if (simple) O[key] = value; else createNonEnumerableProperty(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative })(Function.prototype, 'toString', function toString() { return typeof this == 'function' && getInternalState(this).source || inspectSource(this); }); /***/ }), /***/ 7651: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var classof = __webpack_require__(4326); var regexpExec = __webpack_require__(2261); // `RegExpExec` abstract operation // https://tc39.github.io/ecma262/#sec-regexpexec module.exports = function (R, S) { var exec = R.exec; if (typeof exec === 'function') { var result = exec.call(R, S); if (typeof result !== 'object') { throw TypeError('RegExp exec method returned something other than an Object or null'); } return result; } if (classof(R) !== 'RegExp') { throw TypeError('RegExp#exec called on incompatible receiver'); } return regexpExec.call(R, S); }; /***/ }), /***/ 2261: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var regexpFlags = __webpack_require__(7066); var stickyHelpers = __webpack_require__(2999); var nativeExec = RegExp.prototype.exec; // This always refers to the native implementation, because the // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, // which loads this file before patching the method. var nativeReplace = String.prototype.replace; var patchedExec = nativeExec; var UPDATES_LAST_INDEX_WRONG = (function () { var re1 = /a/; var re2 = /b*/g; nativeExec.call(re1, 'a'); nativeExec.call(re2, 'a'); return re1.lastIndex !== 0 || re2.lastIndex !== 0; })(); var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET; // nonparticipating capturing group, copied from es5-shim's String#split patch. var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y; if (PATCH) { patchedExec = function exec(str) { var re = this; var lastIndex, reCopy, match, i; var sticky = UNSUPPORTED_Y && re.sticky; var flags = regexpFlags.call(re); var source = re.source; var charsAdded = 0; var strCopy = str; if (sticky) { flags = flags.replace('y', ''); if (flags.indexOf('g') === -1) { flags += 'g'; } strCopy = String(str).slice(re.lastIndex); // Support anchored sticky behavior. if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) { source = '(?: ' + source + ')'; strCopy = ' ' + strCopy; charsAdded++; } // ^(? + rx + ) is needed, in combination with some str slicing, to // simulate the 'y' flag. reCopy = new RegExp('^(?:' + source + ')', flags); } if (NPCG_INCLUDED) { reCopy = new RegExp('^' + source + '$(?!\\s)', flags); } if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; match = nativeExec.call(sticky ? reCopy : re, strCopy); if (sticky) { if (match) { match.input = match.input.slice(charsAdded); match[0] = match[0].slice(charsAdded); match.index = re.lastIndex; re.lastIndex += match[0].length; } else re.lastIndex = 0; } else if (UPDATES_LAST_INDEX_WRONG && match) { re.lastIndex = re.global ? match.index + match[0].length : lastIndex; } if (NPCG_INCLUDED && match && match.length > 1) { // Fix browsers whose `exec` methods don't consistently return `undefined` // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ nativeReplace.call(match[0], reCopy, function () { for (i = 1; i < arguments.length - 2; i++) { if (arguments[i] === undefined) match[i] = undefined; } }); } return match; }; } module.exports = patchedExec; /***/ }), /***/ 7066: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var anObject = __webpack_require__(9670); // `RegExp.prototype.flags` getter implementation // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags module.exports = function () { var that = anObject(this); var result = ''; if (that.global) result += 'g'; if (that.ignoreCase) result += 'i'; if (that.multiline) result += 'm'; if (that.dotAll) result += 's'; if (that.unicode) result += 'u'; if (that.sticky) result += 'y'; return result; }; /***/ }), /***/ 2999: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var fails = __webpack_require__(7293); // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError, // so we use an intermediate function. function RE(s, f) { return RegExp(s, f); } exports.UNSUPPORTED_Y = fails(function () { // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError var re = RE('a', 'y'); re.lastIndex = 2; return re.exec('abcd') != null; }); exports.BROKEN_CARET = fails(function () { // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 var re = RE('^r', 'gy'); re.lastIndex = 2; return re.exec('str') != null; }); /***/ }), /***/ 4488: /***/ ((module) => { // `RequireObjectCoercible` abstract operation // https://tc39.github.io/ecma262/#sec-requireobjectcoercible module.exports = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; /***/ }), /***/ 3505: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var global = __webpack_require__(7854); var createNonEnumerableProperty = __webpack_require__(8880); module.exports = function (key, value) { try { createNonEnumerableProperty(global, key, value); } catch (error) { global[key] = value; } return value; }; /***/ }), /***/ 6200: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var shared = __webpack_require__(2309); var uid = __webpack_require__(9711); var keys = shared('keys'); module.exports = function (key) { return keys[key] || (keys[key] = uid(key)); }; /***/ }), /***/ 5465: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var global = __webpack_require__(7854); var setGlobal = __webpack_require__(3505); var SHARED = '__core-js_shared__'; var store = global[SHARED] || setGlobal(SHARED, {}); module.exports = store; /***/ }), /***/ 2309: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var IS_PURE = __webpack_require__(1913); var store = __webpack_require__(5465); (module.exports = function (key, value) { return store[key] || (store[key] = value !== undefined ? value : {}); })('versions', []).push({ version: '3.6.5', mode: IS_PURE ? 'pure' : 'global', copyright: '© 2020 Denis Pushkarev (zloirock.ru)' }); /***/ }), /***/ 8710: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var toInteger = __webpack_require__(9958); var requireObjectCoercible = __webpack_require__(4488); // `String.prototype.{ codePointAt, at }` methods implementation var createMethod = function (CONVERT_TO_STRING) { return function ($this, pos) { var S = String(requireObjectCoercible($this)); var position = toInteger(pos); var size = S.length; var first, second; if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; first = S.charCodeAt(position); return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; }; }; module.exports = { // `String.prototype.codePointAt` method // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat codeAt: createMethod(false), // `String.prototype.at` method // https://github.com/mathiasbynens/String.prototype.at charAt: createMethod(true) }; /***/ }), /***/ 1400: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var toInteger = __webpack_require__(9958); var max = Math.max; var min = Math.min; // Helper for a popular repeating case of the spec: // Let integer be ? ToInteger(index). // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). module.exports = function (index, length) { var integer = toInteger(index); return integer < 0 ? max(integer + length, 0) : min(integer, length); }; /***/ }), /***/ 5656: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // toObject with fallback for non-array-like ES3 strings var IndexedObject = __webpack_require__(8361); var requireObjectCoercible = __webpack_require__(4488); module.exports = function (it) { return IndexedObject(requireObjectCoercible(it)); }; /***/ }), /***/ 9958: /***/ ((module) => { var ceil = Math.ceil; var floor = Math.floor; // `ToInteger` abstract operation // https://tc39.github.io/ecma262/#sec-tointeger module.exports = function (argument) { return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); }; /***/ }), /***/ 7466: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var toInteger = __webpack_require__(9958); var min = Math.min; // `ToLength` abstract operation // https://tc39.github.io/ecma262/#sec-tolength module.exports = function (argument) { return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 }; /***/ }), /***/ 7908: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var requireObjectCoercible = __webpack_require__(4488); // `ToObject` abstract operation // https://tc39.github.io/ecma262/#sec-toobject module.exports = function (argument) { return Object(requireObjectCoercible(argument)); }; /***/ }), /***/ 7593: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isObject = __webpack_require__(111); // `ToPrimitive` abstract operation // https://tc39.github.io/ecma262/#sec-toprimitive // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function (input, PREFERRED_STRING) { if (!isObject(input)) return input; var fn, val; if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }), /***/ 9711: /***/ ((module) => { var id = 0; var postfix = Math.random(); module.exports = function (key) { return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); }; /***/ }), /***/ 3307: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var NATIVE_SYMBOL = __webpack_require__(133); module.exports = NATIVE_SYMBOL // eslint-disable-next-line no-undef && !Symbol.sham // eslint-disable-next-line no-undef && typeof Symbol.iterator == 'symbol'; /***/ }), /***/ 5112: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var global = __webpack_require__(7854); var shared = __webpack_require__(2309); var has = __webpack_require__(6656); var uid = __webpack_require__(9711); var NATIVE_SYMBOL = __webpack_require__(133); var USE_SYMBOL_AS_UID = __webpack_require__(3307); var WellKnownSymbolsStore = shared('wks'); var Symbol = global.Symbol; var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; module.exports = function (name) { if (!has(WellKnownSymbolsStore, name)) { if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name]; else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); } return WellKnownSymbolsStore[name]; }; /***/ }), /***/ 4916: /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var $ = __webpack_require__(2109); var exec = __webpack_require__(2261); $({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { exec: exec }); /***/ }), /***/ 5306: /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var fixRegExpWellKnownSymbolLogic = __webpack_require__(7007); var anObject = __webpack_require__(9670); var toObject = __webpack_require__(7908); var toLength = __webpack_require__(7466); var toInteger = __webpack_require__(9958); var requireObjectCoercible = __webpack_require__(4488); var advanceStringIndex = __webpack_require__(1530); var regExpExec = __webpack_require__(7651); var max = Math.max; var min = Math.min; var floor = Math.floor; var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g; var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g; var maybeToString = function (it) { return it === undefined ? it : String(it); }; // @@replace logic fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) { var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE; var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0; var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; return [ // `String.prototype.replace` method // https://tc39.github.io/ecma262/#sec-string.prototype.replace function replace(searchValue, replaceValue) { var O = requireObjectCoercible(this); var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; return replacer !== undefined ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(String(O), searchValue, replaceValue); }, // `RegExp.prototype[@@replace]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace function (regexp, replaceValue) { if ( (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) || (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) ) { var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); if (res.done) return res.value; } var rx = anObject(regexp); var S = String(this); var functionalReplace = typeof replaceValue === 'function'; if (!functionalReplace) replaceValue = String(replaceValue); var global = rx.global; if (global) { var fullUnicode = rx.unicode; rx.lastIndex = 0; } var results = []; while (true) { var result = regExpExec(rx, S); if (result === null) break; results.push(result); if (!global) break; var matchStr = String(result[0]); if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); } var accumulatedResult = ''; var nextSourcePosition = 0; for (var i = 0; i < results.length; i++) { result = results[i]; var matched = String(result[0]); var position = max(min(toInteger(result.index), S.length), 0); var captures = []; // NOTE: This is equivalent to // captures = result.slice(1).map(maybeToString) // but for some reason `nativeSlice.call(result, 1, result.length)` (called in // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); var namedCaptures = result.groups; if (functionalReplace) { var replacerArgs = [matched].concat(captures, position, S); if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); var replacement = String(replaceValue.apply(undefined, replacerArgs)); } else { replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); } if (position >= nextSourcePosition) { accumulatedResult += S.slice(nextSourcePosition, position) + replacement; nextSourcePosition = position + matched.length; } } return accumulatedResult + S.slice(nextSourcePosition); } ]; // https://tc39.github.io/ecma262/#sec-getsubstitution function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { var tailPos = position + matched.length; var m = captures.length; var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; if (namedCaptures !== undefined) { namedCaptures = toObject(namedCaptures); symbols = SUBSTITUTION_SYMBOLS; } return nativeReplace.call(replacement, symbols, function (match, ch) { var capture; switch (ch.charAt(0)) { case '$': return '$'; case '&': return matched; case '`': return str.slice(0, position); case "'": return str.slice(tailPos); case '<': capture = namedCaptures[ch.slice(1, -1)]; break; default: // \d\d? var n = +ch; if (n === 0) return match; if (n > m) { var f = floor(n / 10); if (f === 0) return match; if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); return match; } capture = captures[n - 1]; } return capture === undefined ? '' : capture; }); } }); /***/ }), /***/ 5482: /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => __WEBPACK_DEFAULT_EXPORT__ /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3645); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); // Imports ; var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); // Module ___CSS_LOADER_EXPORT___.push([module.id, ".skr-button{line-height:1.5715;border:1px solid;border-radius:2px;cursor:pointer;box-shadow:var(--skr-button-box-shadow);transition:var(--skr-button-transition)}.skr-button:focus:not(:focus-visible){outline:0}.skr-button:hover{filter:brightness(1.15)}.skr-button--primary{color:var(--skr-text-inverse-color);background-color:var(--skr-primary-color);border-color:var(--skr-primary-color)}.skr-button--default{color:var(--skr-text-primary-color);background-color:var(--skr-white-color);border-color:var(--skr-border-color)}.skr-button--default:hover{filter:brightness(1);color:var(--skr-primary-color);border-color:currentColor}.skr-button--round{border-radius:50%}.skr-button--shadow{box-shadow:var(--skr-box-shadow-normal)}.skr-button--mini{padding:2px 7px;font-size:12px}.skr-button--small{padding:4px 8px;font-size:12px}.skr-button--normal{padding:4px 15px;font-size:14px}.skr-button--large{padding:10px 20px;font-size:15px}", ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ 9261: /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => __WEBPACK_DEFAULT_EXPORT__ /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3645); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); // Imports ; var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); // Module ___CSS_LOADER_EXPORT___.push([module.id, ".skr-input{margin-top:5px;width:100%;padding-left:8px;padding-right:8px;border:1px solid #d9d9d9;transition:all .3s}.skr-input:hover{border-color:var(--skr-primary-color)}.skr-input:focus{box-shadow:0 0 0 2px var(--skr-primary-lighten-color)}.skr-input--small{padding-top:2px;padding-bottom:2px}.skr-input--normal{padding-top:6px;padding-bottom:6px}.skr-input--large{padding-top:10px;padding-bottom:10px}.skr-input--small.skr-input--scale:focus{padding-top:6px;padding-bottom:6px;font-size:14px}", ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ 8443: /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => __WEBPACK_DEFAULT_EXPORT__ /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3645); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); // Imports ; var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); // Module ___CSS_LOADER_EXPORT___.push([module.id, ".skr-ripple-container{contain:strict;position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;padding:0 !important;margin:0 !important;pointer-events:none !important;border-radius:inherit !important}.skr-ripple{contain:layout;position:absolute;padding:0 !important;margin:0 !important;border-radius:100%;transform:scale(0);pointer-events:none;background:var(--skr-ripple-color);transition:opacity 2s cubic-bezier(0.23, 1, 0.32, 1);animation:skr-ripple forwards cubic-bezier(0.23, 1, 0.32, 1)}@keyframes skr-ripple{to{transform:scale(3)}}", ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ 596: /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => __WEBPACK_DEFAULT_EXPORT__ /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3645); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); // Imports ; var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); // Module ___CSS_LOADER_EXPORT___.push([module.id, ":root{--skr-primary-color: #2878ff;--skr-primary-lighten-color: rgba(24, 144, 255, 0.2);--skr-white-color: #fff;--skr-transition-duration-fast: 0.1s;--skr-transition-duration-normal: 0.3s;--skr-box-shadow-lighten: 0 1px 6px rgba(0, 0, 0, 0.15);--skr-box-shadow-normal: 0 1px 6px rgba(0, 0, 0, 0.2);--skr-border-color: #d9d9d9;--skr-text-primary-color: #303133;--skr-text-regular-color: #666;--skr-text-secondary-color: #909399;--skr-text-inverse-color: var(--skr-white-color);--skr-button-transition: all var(--skr-transition-duration-normal);--skr-button-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);--skr-ripple-color: rgb(138 218 255 / 20%)}#inject-sign{--container-width: 19vw;--container-right: 10px;box-sizing:border-box;color:var(--skr-text-regular-color)}#inject-sign [class*=skr-]{box-sizing:border-box}#inject-sign.normal,#inject-sign.large{--container-width: 21vw}#inject-sign *::-webkit-scrollbar{width:8px;height:8px;background:#f2f2f2}#inject-sign *::-webkit-scrollbar-thumb{border:0;background:#c1c1c1}#inject-sign a{color:var(--skr-primary-color)}#inject-sign button{background-image:none}#inject-sign.forums-hide .forums-container{bottom:0;transform:translateY(calc(100% - 35px))}#inject-sign.forums-hide .control{bottom:40px}#inject-sign.cover .forums-container{z-index:9999}#inject-sign .control{position:fixed;contain:content;display:flex;z-index:500;bottom:12px;right:max(calc(var(--container-right) + var(--container-width) / 2), 150px);transform:translateX(50%);align-items:center;user-select:none;transition:bottom .3s,right .15s}#inject-sign .control label{margin-left:8px;height:20px;text-shadow:0 1px 3px #fff;cursor:pointer}#inject-sign .control input{margin-right:4px;vertical-align:text-top}#inject-sign .control .label-wrap{display:inline-flex;flex-wrap:wrap;flex:1;max-width:156px;margin-left:10px}#inject-sign .forums-container{position:fixed;contain:content;display:flex;flex-direction:column;z-index:2;bottom:60px;right:var(--container-right);width:var(--container-width);min-width:280px;max-height:calc(100vh - 124px);box-shadow:0 2px 4px rgba(0,0,0,.2);background:#fafafa;padding:5px;transition:transform .3s,bottom .3s,width .15s,box-shadow .3s}#inject-sign .forums-container:hover{box-shadow:0 2px 4px 3px rgba(0,0,0,.1)}#inject-sign header{display:flex;margin-bottom:4px}#inject-sign .reverse-btn{flex:1;text-align:center}#inject-sign .resize-btn{flex:none;margin-left:4px}#inject-sign ul{overflow-x:hidden}#inject-sign ul.small li{height:24px}#inject-sign ul.normal li{height:28px;font-size:13px}#inject-sign ul.large li{height:32px;font-size:14px}#inject-sign li{display:flex;border-bottom:1px solid rgba(221,221,221,.4);cursor:default;transition:height .15s}#inject-sign li:hover{background-color:#f0f8ff}#inject-sign li>*{line-height:2.325em}#inject-sign li a{flex:1;padding-left:.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#inject-sign li .signed{width:.9em}#inject-sign li .level{width:2.4em}#inject-sign li .gain{width:1.8em}#inject-sign li .exp{flex:none;width:6.7em}", ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ 3645: /***/ ((module) => { "use strict"; /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ // css base code, injected by the css-loader // eslint-disable-next-line func-names module.exports = function (cssWithMappingToString) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { var content = cssWithMappingToString(item); if (item[2]) { return "@media ".concat(item[2], " {").concat(content, "}"); } return content; }).join(''); }; // import a list of modules into the list // eslint-disable-next-line func-names list.i = function (modules, mediaQuery, dedupe) { if (typeof modules === 'string') { // eslint-disable-next-line no-param-reassign modules = [[null, modules, '']]; } var alreadyImportedModules = {}; if (dedupe) { for (var i = 0; i < this.length; i++) { // eslint-disable-next-line prefer-destructuring var id = this[i][0]; if (id != null) { alreadyImportedModules[id] = true; } } } for (var _i = 0; _i < modules.length; _i++) { var item = [].concat(modules[_i]); if (dedupe && alreadyImportedModules[item[0]]) { // eslint-disable-next-line no-continue continue; } if (mediaQuery) { if (!item[2]) { item[2] = mediaQuery; } else { item[2] = "".concat(mediaQuery, " and ").concat(item[2]); } } list.push(item); } }; return list; }; /***/ }), /***/ 3379: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isOldIE = function isOldIE() { var memo; return function memorize() { if (typeof memo === 'undefined') { // Test for IE <= 9 as proposed by Browserhacks // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // Tests for existence of standard globals is to allow style-loader // to operate correctly into non-standard environments // @see https://github.com/webpack-contrib/style-loader/issues/177 memo = Boolean(window && document && document.all && !window.atob); } return memo; }; }(); var getTarget = function getTarget() { var memo = {}; return function memorize(target) { if (typeof memo[target] === 'undefined') { var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { try { // This will throw an exception if access to iframe is blocked // due to cross-origin restrictions styleTarget = styleTarget.contentDocument.head; } catch (e) { // istanbul ignore next styleTarget = null; } } memo[target] = styleTarget; } return memo[target]; }; }(); var stylesInDom = []; function getIndexByIdentifier(identifier) { var result = -1; for (var i = 0; i < stylesInDom.length; i++) { if (stylesInDom[i].identifier === identifier) { result = i; break; } } return result; } function modulesToDom(list, options) { var idCountMap = {}; var identifiers = []; for (var i = 0; i < list.length; i++) { var item = list[i]; var id = options.base ? item[0] + options.base : item[0]; var count = idCountMap[id] || 0; var identifier = "".concat(id, " ").concat(count); idCountMap[id] = count + 1; var index = getIndexByIdentifier(identifier); var obj = { css: item[1], media: item[2], sourceMap: item[3] }; if (index !== -1) { stylesInDom[index].references++; stylesInDom[index].updater(obj); } else { stylesInDom.push({ identifier: identifier, updater: addStyle(obj, options), references: 1 }); } identifiers.push(identifier); } return identifiers; } function insertStyleElement(options) { var style = document.createElement('style'); var attributes = options.attributes || {}; if (typeof attributes.nonce === 'undefined') { var nonce = true ? __webpack_require__.nc : 0; if (nonce) { attributes.nonce = nonce; } } Object.keys(attributes).forEach(function (key) { style.setAttribute(key, attributes[key]); }); if (typeof options.insert === 'function') { options.insert(style); } else { var target = getTarget(options.insert || 'head'); if (!target) { throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); } target.appendChild(style); } return style; } function removeStyleElement(style) { // istanbul ignore if if (style.parentNode === null) { return false; } style.parentNode.removeChild(style); } /* istanbul ignore next */ var replaceText = function replaceText() { var textStore = []; return function replace(index, replacement) { textStore[index] = replacement; return textStore.filter(Boolean).join('\n'); }; }(); function applyToSingletonTag(style, index, remove, obj) { var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE /* istanbul ignore if */ if (style.styleSheet) { style.styleSheet.cssText = replaceText(index, css); } else { var cssNode = document.createTextNode(css); var childNodes = style.childNodes; if (childNodes[index]) { style.removeChild(childNodes[index]); } if (childNodes.length) { style.insertBefore(cssNode, childNodes[index]); } else { style.appendChild(cssNode); } } } function applyToTag(style, options, obj) { var css = obj.css; var media = obj.media; var sourceMap = obj.sourceMap; if (media) { style.setAttribute('media', media); } else { style.removeAttribute('media'); } if (sourceMap && typeof btoa !== 'undefined') { css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); } // For old IE /* istanbul ignore if */ if (style.styleSheet) { style.styleSheet.cssText = css; } else { while (style.firstChild) { style.removeChild(style.firstChild); } style.appendChild(document.createTextNode(css)); } } var singleton = null; var singletonCounter = 0; function addStyle(obj, options) { var style; var update; var remove; if (options.singleton) { var styleIndex = singletonCounter++; style = singleton || (singleton = insertStyleElement(options)); update = applyToSingletonTag.bind(null, style, styleIndex, false); remove = applyToSingletonTag.bind(null, style, styleIndex, true); } else { style = insertStyleElement(options); update = applyToTag.bind(null, style, options); remove = function remove() { removeStyleElement(style); }; } update(obj); return function updateStyle(newObj) { if (newObj) { if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { return; } update(obj = newObj); } else { remove(); } }; } module.exports = function (list, options) { options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style> // tags it will allow on a page if (!options.singleton && typeof options.singleton !== 'boolean') { options.singleton = isOldIE(); } list = list || []; var lastIdentifiers = modulesToDom(list, options); return function update(newList) { newList = newList || []; if (Object.prototype.toString.call(newList) !== '[object Array]') { return; } for (var i = 0; i < lastIdentifiers.length; i++) { var identifier = lastIdentifiers[i]; var index = getIndexByIdentifier(identifier); stylesInDom[index].references--; } var newLastIdentifiers = modulesToDom(newList, options); for (var _i = 0; _i < lastIdentifiers.length; _i++) { var _identifier = lastIdentifiers[_i]; var _index = getIndexByIdentifier(_identifier); if (stylesInDom[_index].references === 0) { stylesInDom[_index].updater(); stylesInDom.splice(_index, 1); } } lastIdentifiers = newLastIdentifiers; }; }; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(__webpack_module_cache__[moduleId]) { /******/ return __webpack_module_cache__[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ id: moduleId, /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => module['default'] : /******/ () => module; /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/global */ /******/ (() => { /******/ __webpack_require__.g = (function() { /******/ if (typeof globalThis === 'object') return globalThis; /******/ try { /******/ return this || new Function('return this')(); /******/ } catch (e) { /******/ if (typeof window === 'object') return window; /******/ } /******/ })(); /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) /******/ })(); /******/ /************************************************************************/ (() => { "use strict"; // EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js var es_string_replace = __webpack_require__(5306); // CONCATENATED MODULE: ./src/utils/index.js /** * 解析url上的参数 * @param {string} href 或 带有参数格式的string;有search则不再hash * @return {object} */ function parseURL(href = location.href) { if (!href) return {}; let search; try { // 链接 const url = new URL(href); ({ search } = url); // 主要处理对hash的search if (!search && url.hash.includes('?')) { search = url.hash.split('?')[1]; } } catch { // 非链接,如:a=1&b=2、?a=1、/foo?a=1、/foo#bar?a=1 if (href.includes('?')) { search = href.split('?')[1]; } else { search = href; } } const searchParams = new URLSearchParams(search); return [...searchParams.entries()].reduce((acc, [key, value]) => (acc[key] = value, acc), {}); } function stringifyURL(obj) { return Object.entries(obj).map(([key, value]) => `${key}=${value}`).join('&'); } function throttle(fn, delay) { let t = null; let begin = Date.now(); return function (...args) { const self = this; const cur = Date.now(); clearTimeout(t); if (cur - begin >= delay) { fn.apply(self, args); begin = cur; } else { t = setTimeout(function () { fn.apply(self, args); }, delay); } }; } function once(fn) { let called = false; return function (...args) { if (called === false) { called = true; return fn.apply(this, args); } }; } /** * 有些脚本是在document-start执行的,安全地获得document * @param {fn} cb */ function documentLoaded(cb) { document.body ? cb() : window.addEventListener('DOMContentLoaded', cb); } /** * 延时 * @param {number} ms 毫秒数 */ const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); function toFormData(params = {}) { const formData = new FormData(); for (const [key, value] of Object.entries(params)) { formData.append(key, value); } return formData; } // CONCATENATED MODULE: ./src/utils/queue.js class Queue { // 默认同时进行5个任务 constructor({ tasks, limit = 5 }) { this._tasks = [...tasks]; this._limit = limit; // 当前执行数 this._count = 0; // 任务数 this._tasksCount = tasks.length; // 已完成数 this._finishedCount = 0; } run() { return new Promise(resolve => { if (this._tasksCount === 0) { resolve(); return; } const { _tasks } = this; const _run = function () { const idle = Math.min(_tasks.length, this._limit - this._count); for (let i = 0; i < idle; i++) { this._count++; const task = _tasks.shift(); task().finally(() => { this._count--; this._finishedCount++; if (this._finishedCount < this._tasksCount) { _run(); } else { resolve(); } }); } }.bind(this); _run(); }); } } // CONCATENATED MODULE: ./src/utils/compatibility.js /** * 兼容性检查 * @param {object} param0 & param1 版本, notify * @return {boolean} 是否通过 */ function checker({ chrome = 80, firefox = 75, notify = true } = {}) { const { userAgent } = window.navigator; const chromeVersion = userAgent.match(/Chrome\/(\d+)/)?.[1]; const firefoxVersion = userAgent.match(/Firefox\/(\d+)/)?.[1]; let pass = false; if (chromeVersion && chromeVersion >= chrome) { pass = true; } else if (firefoxVersion && firefoxVersion >= firefox) { pass = true; } if (!pass) { notify && Toast.error(`哎呀!遇到错误:不支持的浏览器版本(需要Chrome${chrome}或Firefox${firefox}以上~),请更新浏览器版本 o(╥﹏╥)o`, 0); } return pass; } // CONCATENATED MODULE: ./src/store/index.js /** * store * @param {string} modulename key会加入 [[modulename]]- 前缀 * @param {boolean} local 是否本地存储 * @return {proxy} */ function createStore(modulename = '', local = true) { const getRealProp = property => modulename ? `[[${modulename}]]-${property}` : property; const handler = { get(target, property) { const realProp = getRealProp(property); const value = local ? GM_getValue(realProp) : target[realProp]; return value; }, set(target, property, value) { const realProp = getRealProp(property); local ? GM_setValue(realProp, value) : target[realProp] = value; return true; }, deleteProperty(target, property) { const realProp = getRealProp(property); local ? GM_deleteValue(realProp) : delete target[realProp]; return true; } }; const store = new Proxy({}, handler); return store; } /* harmony default export */ const store = (createStore()); // CONCATENATED MODULE: ./src/scripts/tieba/signature.js /* global MD5 */ const FAKE_VERSION = '11.8.8.0'; function makeFakeParams(obj) { return Object.assign({ _client_type: 4, // prohibit _client_version: FAKE_VERSION, _phone_imei: '0'.repeat(15), model: 'HUAWEI P40', // HUAWEI加油 ヾ(◍°∇°◍)ノ゙ net_type: 1, stErrorNums: 1, stMethod: 1, stMode: 1, stSize: 320, stTime: 117, stTimesNum: 1, timestamp: Date.now() }, obj); } function signature(payload, isFake = true) { if (isFake) { payload = makeFakeParams(payload); } const sortKeys = Object.keys(payload).sort(); let str = sortKeys.reduce((acc, key) => acc += `${key}=${payload[key]}`, ''); str += 'tiebaclient!!!'; return MD5(str); } // CONCATENATED MODULE: ./src/scripts/tieba/api.js ; /** * 跨域请求,依赖GM_xmlhttpRequest * @param {string} url * @param {object} options */ function GMRequest(url, options) { return new Promise((resolve, reject) => { GM_xmlhttpRequest({ timeout: 1000 * 15, // 15s超时,0点高峰期失败概率大,BD是1分钟超时,实际上不必等这么久 ...options, url, onload(res) { try { resolve(JSON.parse(res.response)); } catch (e) { resolve(res.response); } }, onerror: reject }); }); } GMRequest.post = function (url, data, options) { return GMRequest(url, { ...options, data, method: 'POST' }); }; /** * 页面直接发起请求 * @param {string} url * @param {object} options */ function request(url, options) { return fetch(url, { ...options }); } request.post = function (url, data, options = {}) { options.headers = Object.assign({}, options.headers); if (data) { let body = data; if (options.headers['Content-Type'].includes('application/x-www-form-urlencoded') && Object.prototype.toString.call(data) === '[object Object]') { body = stringifyURL(data); } if (options.headers['Content-Type'].includes('application/json') && Object.prototype.toString.call(data) === '[object Object]') { body = JSON.stringify(data); } options.body = body; } return request(url, { ...options, method: 'POST' }); }; /* web接口 */ // 获取关注列表 function getNewmoindex() { return request.post('/mo/q/newmoindex'); } function doWebSign(params) { return request.post('/sign/add', { ie: 'utf-8', ...params }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' } }); } /* app接口 */ // 获取关注列表 function getForumLike(params) { // 签名处理 params = makeFakeParams(params); const paramsSigned = { ...params, sign: signature(params) }; return GMRequest.post('http://c.tieba.baidu.com/c/f/forum/like', stringifyURL(paramsSigned), { headers: { 'User-agent': `bdtb for Android ${FAKE_VERSION}`, Accept: '', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept-Encoding': 'gzip', Cookie: 'ka=open' } }); } function api_doSign(params) { params = makeFakeParams(params); const paramsSigned = { ...params, sign: signature(params) }; return GMRequest.post('http://c.tieba.baidu.com/c/c/forum/sign', stringifyURL(paramsSigned), { headers: { 'User-agent': `bdtb for Android ${FAKE_VERSION}`, Accept: '', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept-Encoding': 'gzip', Cookie: 'ka=open' } }); } // CONCATENATED MODULE: external "Vue" const external_Vue_namespaceObject = Vue; // CONCATENATED MODULE: ./src/composition/use-gm-value.js ; /** * 同GM_getValue且在生命周期内自动GM_addValueChangeListener与GM_removeValueChangeListener,亦提供GM_setValue * 暂不提供GM_deleteValue * @param {string} name * @param {any} defaultValue */ function useGMvalue(name, defaultValue) { const state = (0,external_Vue_namespaceObject.reactive)({ value: GM_getValue(name, defaultValue), old: undefined, name }); (0,external_Vue_namespaceObject.onUnmounted)(() => { GM_removeValueChangeListener(id); }); const id = GM_addValueChangeListener(name, (name, oldVal, newVal) => { state.value = newVal; state.old = oldVal; }); function setValue(val) { GM_setValue(name, val); } return { ...(0,external_Vue_namespaceObject.toRefs)(state), setValue }; } // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js var injectStylesIntoStyleTag = __webpack_require__(3379); var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag); // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/input/index.scss var input = __webpack_require__(9261); // CONCATENATED MODULE: ./src/components/input/index.scss ; var options = {}; options.insert = "head"; options.singleton = false; var update = injectStylesIntoStyleTag_default()(input/* default */.Z, options); /* harmony default export */ const components_input = (input/* default.locals */.Z.locals || {}); // CONCATENATED MODULE: ./src/components/input/index.js ; const prefixCls = 'skr-input'; const Input = (0,external_Vue_namespaceObject.defineComponent)({ name: 'skr-input', props: { modelValue: { type: [String, Number], default: '' }, size: { type: String, validator: value => ['small', 'normal', 'large'].includes(value), default: 'normal' }, scale: { type: Boolean, default: false } }, emit: ['update:modelValue'], setup(props, { emit }) { return () => (0,external_Vue_namespaceObject.createVNode)("input", { "class": [prefixCls, `${prefixCls}--${props.size}`, { [`${prefixCls}--scale`]: props.scale }], "value": props.modelValue, "type": "text", "onInput": event => emit('update:modelValue', event.target.value) }, null); } }); /* harmony default export */ const src_components_input = (Input); // CONCATENATED MODULE: ./src/directives/v-ripple/utils.js /** * 计算一个点离矩形中心点的距离 * @param {number} width 矩形宽 * @param {number} height 矩形高 * @return {function} function(left top 在矩形内点的坐标) @return {number} 距离 */ function calcDiagInRect(width, height) { const halfWidth = width / 2; const halfHeight = height / 2; return function (left, top) { const a = left <= halfWidth ? halfWidth - left : left - halfWidth; const b = top <= halfHeight ? halfHeight - top : top - halfHeight; const c = Math.sqrt(a * a + b * b); return c; }; } /** * 计算当前值离总值中心的位置 越靠近中心值为1,远离中心值为0 * 例如:value:50 extent:100 则计算50在0-100中的位置返回1 * value:0或100 extent:100 返回0 * @param {number} value 当前值 * @param {number} extent 总值 * @return {number} 取值0-1 */ function closeness(value, extent) { if (!value || !extent) return 0; const half = extent / 2; return value <= half ? value / half : 1 - value / extent; } // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/directives/v-ripple/index.scss var v_ripple = __webpack_require__(8443); // CONCATENATED MODULE: ./src/directives/v-ripple/index.scss ; var v_ripple_options = {}; v_ripple_options.insert = "head"; v_ripple_options.singleton = false; var v_ripple_update = injectStylesIntoStyleTag_default()(v_ripple/* default */.Z, v_ripple_options); /* harmony default export */ const directives_v_ripple = (v_ripple/* default.locals */.Z.locals || {}); // CONCATENATED MODULE: ./src/directives/v-ripple/index.js ; const containerClassname = 'skr-ripple-container'; const rippleClassname = 'skr-ripple'; const vmap = new WeakMap(); /** * 创建容器元素 */ function createRippleContainer() { const div = document.createElement('div'); div.classList.add(containerClassname); return div; } /** * 创建涟漪元素 */ function createRippleEl() { const span = document.createElement('div'); span.classList.add(rippleClassname); return span; } function checkOptions(options = {}) { if (typeof options === 'boolean') { return { disabled: !options }; } return options; } /** * 添加涟漪效果 * @param {object} options color颜色 disabled禁用 布尔值时false为禁用 */ const addRippleEffect = function (options = {}) { options = checkOptions(options); // 涟漪个数 let count = 0; function listener(event) { if (options.disabled) return; const { currentTarget } = event; // 优化: 处理过后不再调用getComputedStyle if (vmap.get(currentTarget).position === false) { vmap.get(currentTarget).position = true; // 注意:会改变当前元素定位方式 if (getComputedStyle(currentTarget).position === 'static') { currentTarget.style.position = 'relative'; } } const rect = currentTarget.getBoundingClientRect(); const rippleEl = createRippleEl(); // 取元素长的一边作为涟漪的周长 const side = Math.max(rect.width, rect.height); const radius = side / 2; // 鼠标在元素中的坐标 const left = event.pageX - rect.left - window.scrollX; const top = event.pageY - rect.top - window.scrollY; // 选项加入到元素中 rippleEl.style.background = options.color; rippleEl.style.width = side + 'px'; rippleEl.style.height = side + 'px'; // 元素定位再各减自身的宽高一半 rippleEl.style.top = top - radius + 'px'; rippleEl.style.left = left - radius + 'px'; // 动画在元素中间扩散时基础时长1.5s,当点击范围处于元素边缘时,动画扩散比在元素中间位置要长,所以要加快动画进行 const base = 1.5; const diagonal = calcDiagInRect(rect.width, rect.height)(left, top); rippleEl.style.animationDuration = base - base * diagonal / side + 's'; let container = currentTarget.querySelector(`.${containerClassname}`); if (!container) { container = createRippleContainer(); currentTarget.appendChild(container); } container.appendChild(rippleEl); count++; const unlisten = (() => { const leaveEvents = ['mouseup', 'mouseleave']; const listener = () => { // 为了尽量能看清动画效果,延时一下再进行透明 setTimeout(() => { rippleEl.style.opacity = 0; }, 100); }; leaveEvents.forEach(eventname => currentTarget.addEventListener(eventname, listener)); return () => { leaveEvents.forEach(eventname => currentTarget.removeEventListener(eventname, listener)); }; })(); // 移除涟漪元素 rippleEl.addEventListener('transitionend', transEvent => { if (transEvent.propertyName === 'opacity') { unlisten(); rippleEl.remove(); // 没有涟漪元素时移除容器 if (--count <= 0) { container.remove(); } } }); } // 更新配置项 function update(newOpts) { options = Object.assign({}, options, checkOptions(newOpts)); } return { listener, update }; }; const vRipple = { mounted(el, binding) { const { listener, update } = addRippleEffect(binding.value); vmap.set(el, { listener, update, // 更新配置项函数 position: false // 是否已经改变了el的定位方式 }); el.addEventListener('mousedown', listener, false); }, updated(el, binding) { const val = vmap.get(el); val.update(binding.value); } }; /* harmony default export */ const src_directives_v_ripple = (vRipple); // CONCATENATED MODULE: ./src/directives/index.js // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/button/index.scss var components_button = __webpack_require__(5482); // CONCATENATED MODULE: ./src/components/button/index.scss ; var button_options = {}; button_options.insert = "head"; button_options.singleton = false; var button_update = injectStylesIntoStyleTag_default()(components_button/* default */.Z, button_options); /* harmony default export */ const src_components_button = (components_button/* default.locals */.Z.locals || {}); // CONCATENATED MODULE: ./src/components/button/index.js ; const button_prefixCls = 'skr-button'; // button type非default时覆盖一层白色 const rippleColor = 'rgb(255 255 255 / 15%)'; const Button = (0,external_Vue_namespaceObject.defineComponent)({ name: 'skr-button', props: { type: { type: String, validator: value => ['primary', 'info', 'warning', 'danger', 'default'].includes(value), default: 'default' }, plain: { type: Boolean, default: false }, round: { type: Boolean, default: false }, shadow: { type: Boolean, default: false }, size: { type: String, validator: value => ['mini', 'small', 'normal', 'large'].includes(value), default: 'normal' }, // 涟漪效果 object时参数会透传给ripple ripple: { type: [Boolean, Object], default: true } }, directives: { ripple: src_directives_v_ripple }, setup(props, { slots }) { const rippleOptions = (0,external_Vue_namespaceObject.computed)(() => { return Object.assign({}, { color: props.type === 'default' ? undefined : rippleColor }, typeof props.ripple === 'boolean' ? { disabled: !props.ripple } : props.ripple); }); return () => (0,external_Vue_namespaceObject.withDirectives)((0,external_Vue_namespaceObject.createVNode)("button", { "class": [button_prefixCls, `${button_prefixCls}--${props.type}`, { [`${button_prefixCls}--round`]: props.round, [`${button_prefixCls}--shadow`]: props.shadow }, `${button_prefixCls}--${props.size}`] }, [slots.default()]), [[(0,external_Vue_namespaceObject.resolveDirective)("ripple"), rippleOptions.value]]); } }); /* harmony default export */ const src_components_button_0 = (Button); // CONCATENATED MODULE: ./src/components/index.js // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/scripts/tieba/ui.scss var ui = __webpack_require__(596); // CONCATENATED MODULE: ./src/scripts/tieba/ui.scss ; var ui_options = {}; ui_options.insert = "head"; ui_options.singleton = false; var ui_update = injectStylesIntoStyleTag_default()(ui/* default */.Z, ui_options); /* harmony default export */ const tieba_ui = (ui/* default.locals */.Z.locals || {}); // CONCATENATED MODULE: ./src/scripts/tieba/ui.js ; // eslint-disable-next-line no-unused-vars /* eslint-disable camelcase */ function createUI({ store, runByBDUSS, runByWeb }) { // 兼容性:名称字段更换 middle -> normal if (store.size === 'middle') { store.size = 'normal'; } const sizeTick = function* () { const sizes = ['small', 'normal', 'large']; let currSize = store.size ?? 'small'; let index = sizes.findIndex(v => v === currSize); while (true) { index >= sizes.length && (index = 0); currSize = sizes[index++]; store.size = currSize; yield currSize; } }(); const app = (0,external_Vue_namespaceObject.createApp)({ render() { const { loading, size, keyword, isComplete, isForumsHide, isCover, isReverse, counter, likeForums, diaplayForums, run, setKeyword, setComplete, setForumsHide, setCover, changeReverse, changeSize, onSimulateChange } = this; function expTitle(item) { const MAX_EXP_DAILY = 8; const needed = item.levelup_score - item.user_exp; return `距离升级还需要${needed}经验,若每天+${MAX_EXP_DAILY},还需要${Math.ceil(needed / MAX_EXP_DAILY)}天`; } return (0,external_Vue_namespaceObject.createVNode)("div", { "id": "inject-sign", "class": { 'forums-hide': isForumsHide, cover: isCover, [size]: true } }, [(0,external_Vue_namespaceObject.createVNode)("div", { "class": "control" }, [(0,external_Vue_namespaceObject.createVNode)(src_components_button_0, { "disabled": loading, "type": "primary", "shadow": true, "onClick": run }, { default: () => [(0,external_Vue_namespaceObject.createTextVNode)("\u4E00\u952E\u7B7E\u5230")] }), (0,external_Vue_namespaceObject.createVNode)("div", { "class": "label-wrap" }, [(0,external_Vue_namespaceObject.createVNode)("label", { "title": "模拟APP签到可以获得与APP相同的经验,比网页签到经验更多,也提供更多功能,但需要BDUSS,重新登录后需要再次输入,请网上搜索获得方法,不勾选则通过网页签到,此时不需要BDUSS" }, [(0,external_Vue_namespaceObject.createVNode)("input", { "checked": this.isSimulate, "type": "checkbox", "onChange": onSimulateChange }, null), (0,external_Vue_namespaceObject.createTextVNode)("\u6A21\u62DFAPP")]), (0,external_Vue_namespaceObject.createVNode)("label", { "title": "下次进入贴吧时自动签到,建议同时勾选模拟APP" }, [(0,external_Vue_namespaceObject.createVNode)("input", { "checked": isComplete, "type": "checkbox", "onChange": event => setComplete(event.target.checked) }, null), (0,external_Vue_namespaceObject.createTextVNode)("\u81EA\u52A8\u7B7E\u5230")]), likeForums.length > 0 && (0,external_Vue_namespaceObject.createVNode)(external_Vue_namespaceObject.Fragment, null, [(0,external_Vue_namespaceObject.createVNode)("label", { "title": "列表将缩到底部" }, [(0,external_Vue_namespaceObject.createVNode)("input", { "checked": this.isForumsHide, "type": "checkbox", "onChange": event => setForumsHide(event.target.checked) }, null), (0,external_Vue_namespaceObject.createTextVNode)("\u9690\u85CF\u5217\u8868")]), (0,external_Vue_namespaceObject.createVNode)("label", { "title": "覆盖在页面上显示" }, [(0,external_Vue_namespaceObject.createVNode)("input", { "checked": this.isCover, "type": "checkbox", "onChange": event => setCover(event.target.checked) }, null), (0,external_Vue_namespaceObject.createTextVNode)("\u9632\u6B62\u906E\u6321")])])])]), likeForums.length > 0 && (0,external_Vue_namespaceObject.createVNode)("div", { "class": "forums-container" }, [(0,external_Vue_namespaceObject.createVNode)("header", { "class": "top-btns" }, [(0,external_Vue_namespaceObject.createVNode)(src_components_button_0, { "class": "reverse-btn", "size": "mini", "onClick": changeReverse }, { default: () => [isReverse ? '已倒序' : '普通', (0,external_Vue_namespaceObject.createVNode)("span", { "title": "已签/总数" }, [counter.sign, (0,external_Vue_namespaceObject.createTextVNode)("/"), counter.total])] }), (0,external_Vue_namespaceObject.createVNode)(src_components_button_0, { "class": "resize-btn", "size": "mini", "onClick": changeSize }, { default: () => [(0,external_Vue_namespaceObject.createTextVNode)("\u5927\u5C0F")] })]), (0,external_Vue_namespaceObject.createVNode)("ul", { "class": { [size]: true } }, [diaplayForums.map(item => (0,external_Vue_namespaceObject.createVNode)("li", { "key": item.forum_id }, [(0,external_Vue_namespaceObject.createVNode)("a", { "href": '/f?kw=' + item.forum_name, "title": item.forum_name, "target": "_blank" }, [item.forum_name]), (0,external_Vue_namespaceObject.createVNode)("span", { "class": "signed" }, [item.is_sign ? ' √' : '']), (0,external_Vue_namespaceObject.createVNode)("span", { "class": "level", "title": item.level_name }, [item.user_level, (0,external_Vue_namespaceObject.createTextVNode)("\u7EA7")]), (0,external_Vue_namespaceObject.createVNode)("span", { "class": "gain" }, [item.sign_bonus_point ? '+' + item.sign_bonus_point : '']), (0,external_Vue_namespaceObject.createVNode)("span", { "class": "exp", "title": expTitle(item) }, [item.user_exp, (0,external_Vue_namespaceObject.createTextVNode)("/"), item.levelup_score])]))]), likeForums.length > 25 && (0,external_Vue_namespaceObject.createVNode)(src_components_input, { "value": keyword, "placeholder": "搜索", "size": "small", "scale": true, "onInput": event => setKeyword(event.target.value) }, null)])]); }, setup() { const state = (0,external_Vue_namespaceObject.reactive)({ loading: false, size: sizeTick.next().value, isSimulate: false, isReverse: store.is_reverse || false, likeForums: [] }); const { value: keyword, setValue: setKeyword } = useGMvalue('keyword', ''); const { value: isComplete, setValue: setComplete } = useGMvalue('is_complete', false); const { value: isForumsHide, setValue: setForumsHide } = useGMvalue('is_forums_hide', false); const { value: isCover, setValue: setCover } = useGMvalue('is_cover', false); const diaplayForums = (0,external_Vue_namespaceObject.computed)(() => { let ectype = [...state.likeForums]; state.isReverse && ectype.reverse(); if (keyword.value) { // 忽略大小写 ectype = ectype.filter(forum => forum.forum_name.toUpperCase().includes(keyword.value.toUpperCase())); } return ectype; }); const counter = (0,external_Vue_namespaceObject.computed)(() => ({ total: state.likeForums.length, sign: state.likeForums.filter(({ is_sign }) => is_sign).length })); // 勾选模拟APP并且确认有BDUSS 才算开启 if (store.is_simulate && store.BDUSS) { state.isSimulate = true; } // 自动签到 if (isComplete.value) { run(); } function run() { state.loading = true; // TODO: 应该有更好的实现方法 const exportApi = { updateLikeForum, checkUnsign }; (state.isSimulate ? runByBDUSS : runByWeb)(exportApi).finally(() => { state.loading = false; }); } function setLikeForums(forums) { state.likeForums = [...forums]; } function updateLikeForum(fid, forum) { const index = state.likeForums.findIndex(item => +fid === +item.forum_id); if (index === -1) return; const target = { ...state.likeForums[index], ...forum }; if (forum.sign_bonus_point) { target.user_exp = Number(target.user_exp) + Number(forum.sign_bonus_point); } state.likeForums.splice(index, 1, target); } // 未签到的靠前 function checkUnsign() { state.likeForums.sort((a, b) => { if (!a.is_sign && b.is_sign) return -1; return 0; }); } function changeReverse() { state.isReverse = !state.isReverse; store.is_reverse = state.isReverse; } function changeSize() { state.size = sizeTick.next().value; } function onSimulateChange({ target: { checked } }) { store.is_simulate = checked; if (!checked) return; const { BDUSS } = store; const result = window.prompt('请输入F12->Application->Cookies中的BDUSS', BDUSS || undefined); if (result) { store.BDUSS = result; location.reload(); } else { (0,external_Vue_namespaceObject.nextTick)(() => { state.isSimulate = false; store.is_simulate = false; }); } } return { ...(0,external_Vue_namespaceObject.toRefs)(state), keyword, isComplete, isForumsHide, isCover, diaplayForums, counter, run, setLikeForums, updateLikeForum, checkUnsign, setKeyword, setComplete, setForumsHide, setCover, changeReverse, changeSize, onSimulateChange }; } }); const rootContainer = document.createElement('div'); const ui = app.mount(rootContainer); document.body.appendChild(rootContainer); return { setLikeForums: ui.setLikeForums, updateLikeForum: ui.updateLikeForum, checkUnsign: ui.checkUnsign }; } // CONCATENATED MODULE: ./src/scripts/tieba/index.js ; /* eslint-disable camelcase */ const $$ = document.querySelectorAll.bind(document); // 页面节点 jquery元素 let $moreforumEl; async function main() { if (!checker()) return; const { jQuery } = unsafeWindow; $moreforumEl = jQuery('#moreforum'); // 未登录时删除已有的BDUSS if (!$moreforumEl.length) { delete store.BDUSS; delete store.is_complete; return; } let likeForums = null; if (store.BDUSS) { try { likeForums = await getLikeForums(); } catch (error) { console.error(error); Toast.error('获取贴吧列表失败。。请刷新重试~', 0); } } const ui = createUI({ store: store, runByBDUSS, runByWeb }); if (likeForums) { ui.setLikeForums(likeForums); ui.checkUnsign(); } } // 界面上无法获得失效的贴吧,这里调用接口获取所有关注的贴吧 async function getLikeForums() { const { BDUSS } = store; const tbs = unsafeWindow.PageData.tbs; const req2 = { BDUSS, tbs }; const [like1, like2Map] = await Promise.all([getNewmoindex().then(response => response.json()).then(data => data.data.like_forum), getForumLike(req2).then(data => data.forum_list).then(forum_list => forum_list.reduce((acc, val) => (acc[val.id] = val, acc), {}))]); // 融合数据 like1.forEach(forum => { const { forum_id } = forum; const like2Forum = like2Map[forum_id]; if (!like2Forum) return; Object.assign(forum, { levelup_score: like2Forum.levelup_score, level_name: like2Forum.level_name, slogan: like2Forum.slogan }); }); // 经验降序 like1.sort((a, b) => b.user_exp - a.user_exp); return like1; } // 通过BDUSS签到 获得经验与客户端签到相同 async function runByBDUSS(ui) { // 贴吧必须先触发才能获取剩下贴吧 $moreforumEl.trigger(new MouseEvent('mouseenter')); // 侧边元素 const likeUnsignEls = $$('#likeforumwraper .unsign'); // 查看更多元素 const alwayUnsignEls = $$('#alwayforum-wraper .unsign'); // 关闭面板 $moreforumEl.trigger(new Event('click')); const allUnsignEls = [...likeUnsignEls, ...alwayUnsignEls]; // 需要重新签到元素(失败时尝试重签) const resignEls = []; if (!allUnsignEls.length) { Toast.success('所有贴吧已经签到'); return; } const toast = Toast('开始签到,请等待', 0); // 签到 function doSign(data) { const { BDUSS } = store; const { tbs, fid, kw } = data; const params = { // 以下4个参数 + sign参数 是必选的 BDUSS, tbs, fid, kw }; return api_doSign(params); } const tbs = unsafeWindow.PageData.tbs; const queue = new Queue({ // 限制5个任务,大于5个签到失败的概率好像大点了! limit: 5, tasks: allUnsignEls.map(current => { return async function () { const { kw } = parseURL(current.href); const { fid } = current.dataset; try { const response = await doSign({ tbs, kw, fid }); const { error_code, error, user_info } = response; // 贴吧成功码为0 还会出现code为0但error的情况 if (error_code !== '0' || error) throw response; // 标记为已签到 user_info.is_sign = true; ui.updateLikeForum(fid, user_info); // 替换已签到样式 current.classList.replace('unsign', 'sign'); } catch (e) { console.error(e); // 重签 resignEls.push(current); } // 客户端签到可以将延时缩短,随机延时一下 50ms以上 const ms = parseInt(Math.random() * 20 + 50); await sleep(ms); }; }) }); await queue.run(); let failCount = 0; // 重签 while (resignEls.length) { const current = resignEls.shift(); const { kw } = parseURL(current.href); const { fid } = current.dataset; try { const response = await doSign({ tbs, kw, fid }); const { error_code, error, user_info } = response; if (error_code !== '0' || error) throw response; user_info.is_sign = true; ui.updateLikeForum(fid, user_info); current.classList.replace('unsign', 'sign'); } catch (e) { console.error(e); failCount++; Toast.error(`${decodeURIComponent(kw)} 签到失败`); } await sleep(500); } toast.close(); failCount ? Toast.warning(`签到成功,失败${failCount}个`, 0) : Toast.success('签到成功'); ui.checkUnsign(); } // 网页签到 经验没客户端那么多 但不需要获得BDUSS只需贴吧已登录即可 async function runByWeb() { // 贴吧必须先触发才能获取剩下贴吧 $moreforumEl.trigger(new MouseEvent('mouseenter')); // 侧边元素 const likeUnsignEls = $$('#likeforumwraper .unsign'); // 查看更多元素 const alwayUnsignEls = $$('#alwayforum-wraper .unsign'); // 关闭面板 $moreforumEl.trigger(new Event('click')); const allUnsignEls = [...likeUnsignEls, ...alwayUnsignEls]; // 需要重新签到元素(失败时尝试重签) const resignEls = []; if (!allUnsignEls.length) { Toast.success('所有贴吧已经签到'); return; } const toast = Toast('开始签到,请等待', 0); // 签到 function doSign(data) { return doWebSign(data).then(response => response.json()); } while (allUnsignEls.length) { const current = allUnsignEls.shift(); const { kw } = parseURL(current.href); try { const response = await doSign({ kw }); const { no } = response; // 贴吧成功码为0 if (no !== 0) throw response; // 替换已签到样式 current.classList.replace('unsign', 'sign'); } catch (e) { console.error(e); // 重签 resignEls.push(current); } // 网页签到不能太短,否则很容易出现验证码(ಥ﹏ಥ) 验证码2150040 const ms = parseInt(Math.random() * 500 + 500); await sleep(ms); } let failCount = 0; // 重签 while (resignEls.length) { const current = resignEls.shift(); const { kw } = parseURL(current.href); try { const response = await doSign({ kw }); const { no } = response; if (no !== 0) throw response; current.classList.replace('unsign', 'sign'); } catch (e) { console.error(e); failCount++; Toast.error(`${decodeURIComponent(kw)} 签到失败`); } await sleep(500); } toast.close(); failCount ? Toast.warning(`签到成功,失败${failCount}个`, 0) : Toast.success('签到成功'); } main(); })(); /******/ })() ;