V2EX 主题回复增强

增强 V2EX 主题的回复。

  1. /******/ (() => { // webpackBootstrap
  2. /******/ "use strict";
  3. /******/ var __webpack_modules__ = ({
  4.  
  5. /***/ 915:
  6. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  7.  
  8. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  9. /* harmony export */ A: () => (/* binding */ Store)
  10. /* harmony export */ });
  11. function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
  12. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  13. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
  14. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
  15. function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
  16. function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
  17. /**
  18. * 存储
  19. */
  20. var Store = /*#__PURE__*/function () {
  21. function Store() {
  22. _classCallCheck(this, Store);
  23. }
  24. return _createClass(Store, null, [{
  25. key: "get",
  26. value:
  27. /**
  28. * 获取
  29. * @param key 键
  30. */
  31. function get(key) {
  32. return GM_getValue(key);
  33. }
  34.  
  35. /**
  36. * 设置
  37. * @param key 键
  38. * @param value 值
  39. */
  40. }, {
  41. key: "set",
  42. value: function set(key, value) {
  43. GM_setValue(key, value);
  44. }
  45. }]);
  46. }();
  47.  
  48.  
  49. /***/ }),
  50.  
  51. /***/ 952:
  52. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  53.  
  54.  
  55. // EXPORTS
  56. __webpack_require__.d(__webpack_exports__, {
  57. A: () => (/* binding */ Options)
  58. });
  59.  
  60. // EXTERNAL MODULE: ./utils/src/gm/Store.ts
  61. var Store = __webpack_require__(915);
  62. ;// CONCATENATED MODULE: ./utils/src/gm/MenuCmd.ts
  63. function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
  64. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  65. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
  66. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
  67. function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
  68. function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
  69. /**
  70. * 选项菜单
  71. */
  72. var MenuCmd = /*#__PURE__*/function () {
  73. function MenuCmd() {
  74. _classCallCheck(this, MenuCmd);
  75. }
  76. return _createClass(MenuCmd, null, [{
  77. key: "register",
  78. value:
  79. /**
  80. * 注册(不可用)
  81. * @param name 名称
  82. * @param fn 点击菜单时执行的函数
  83. */
  84. function register(name, fn) {
  85. return GM_registerMenuCommand(name, fn);
  86. }
  87.  
  88. /**
  89. * 注销
  90. * @param menuCmdId 注册(不可用)时返回的 ID
  91. */
  92. }, {
  93. key: "unregister",
  94. value: function unregister(menuCmdId) {
  95. GM_unregisterMenuCommand(menuCmdId);
  96. }
  97. }]);
  98. }();
  99.  
  100. ;// CONCATENATED MODULE: ./utils/src/CommonOptions.ts
  101. function CommonOptions_typeof(o) { "@babel/helpers - typeof"; return CommonOptions_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, CommonOptions_typeof(o); }
  102. function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  103. function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  104. function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
  105. function CommonOptions_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  106. function CommonOptions_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, CommonOptions_toPropertyKey(descriptor.key), descriptor); } }
  107. function CommonOptions_createClass(Constructor, protoProps, staticProps) { if (protoProps) CommonOptions_defineProperties(Constructor.prototype, protoProps); if (staticProps) CommonOptions_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
  108. function CommonOptions_toPropertyKey(t) { var i = CommonOptions_toPrimitive(t, "string"); return "symbol" == CommonOptions_typeof(i) ? i : i + ""; }
  109. function CommonOptions_toPrimitive(t, r) { if ("object" != CommonOptions_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != CommonOptions_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
  110.  
  111.  
  112.  
  113. /**
  114. * 选项菜单
  115. */
  116. var CommonOptions = /*#__PURE__*/function () {
  117. function CommonOptions() {
  118. CommonOptions_classCallCheck(this, CommonOptions);
  119. }
  120. return CommonOptions_createClass(CommonOptions, null, [{
  121. key: "registerBoolOption",
  122. value:
  123. // /**
  124. // * 选项 Key
  125. // */
  126. // protected static Keys = {
  127. // // xxx: 'xxx'
  128. // }
  129. //
  130. // /**
  131. // * 选项
  132. // * @private
  133. // */
  134. // protected static options = [
  135. // // {label: '', name: this.Keys.xxx, version: 1, value: false, menuCmdId: null},
  136. // ];
  137.  
  138. /**
  139. * 注册(不可用) bool 类型的选项
  140. * @param option 选项
  141. */
  142. function registerBoolOption(option) {
  143. var _this = this;
  144. var val = option.value,
  145. valIsBool = typeof val === 'boolean';
  146. if (!valIsBool) {
  147. return;
  148. }
  149. // 注册(不可用)选项
  150. var currentMenuCmdId = MenuCmd.register((val ? '☑️ ' : '🔲 ') + option.label, function () {
  151. // 点击值取反
  152. option.value = !option.value;
  153. Store/* default */.A.set(option.name, JSON.stringify(option));
  154.  
  155. // 取消注册(不可用)
  156. MenuCmd.unregister(currentMenuCmdId);
  157. // 重新注册(不可用)
  158. _this.registerBoolOption(option);
  159. // 刷新页面
  160. window.location.reload();
  161. });
  162.  
  163. // 保存选项 ID
  164. option.menuCmdId = currentMenuCmdId;
  165. Store/* default */.A.set(option.name, JSON.stringify(option));
  166. }
  167.  
  168. /**
  169. * 注册(不可用)所有选项
  170. * @param url 设置页面 URL
  171. * @param options
  172. */
  173. }, {
  174. key: "registerAll",
  175. value: function registerAll(url, options) {
  176. MenuCmd.register('更多设置', function () {
  177. window.open(url, '_blank');
  178. });
  179. var _iterator = _createForOfIteratorHelper(options),
  180. _step;
  181. try {
  182. for (_iterator.s(); !(_step = _iterator.n()).done;) {
  183. var option = _step.value;
  184. // TODO 【调试】不保留选项的值,每次都从 Store 中获取
  185. // Store.set(option.name, null);
  186.  
  187. var storeOption = Store/* default */.A.get(option.name) ? JSON.parse(Store/* default */.A.get(option.name)) : null;
  188. // 如果选项不存在 || 版本不一致 时重置选项
  189. if (storeOption === null || !storeOption['version'] || storeOption['version'] < option.version) {
  190. Store/* default */.A.set(option.name, JSON.stringify(option));
  191. storeOption = option;
  192. }
  193. this.registerBoolOption(storeOption);
  194. }
  195. } catch (err) {
  196. _iterator.e(err);
  197. } finally {
  198. _iterator.f();
  199. }
  200. }
  201.  
  202. /**
  203. * 在页面中加载选项
  204. */
  205. }, {
  206. key: "loadInGreasyfork",
  207. value: function loadInGreasyfork(scriptId, loadOptionContentFn) {
  208. if (location.host !== 'gf.qytechs.cn' || location.href.indexOf('/scripts/' + scriptId) == -1) {
  209. return;
  210. }
  211. var selector = {
  212. scriptLinks: '#script-links',
  213. scriptOptions: '#script-options',
  214. scriptContent: '#script-content'
  215. };
  216. var $body = $(document.body),
  217. $scriptLinks = $(selector.scriptLinks),
  218. $scriptContent = $(selector.scriptContent);
  219.  
  220. // 添加脚本设置的选项卡
  221. $scriptLinks.children('li:eq(0)').after("<li><a href=\"javascript:;\" id=\"script-options\">\u811A\u672C\u8BBE\u7F6E</a></li>");
  222. // 脚本设置选项点击事件
  223. $body.on('click', selector.scriptOptions, function () {
  224. // 移除已选中选项的样式
  225. var $currentLi = $scriptLinks.children('li.current');
  226. $currentLi.html("<a href=\"".concat(location.href, "\">").concat($currentLi.text(), "</a>"));
  227. $currentLi.removeClass('current');
  228.  
  229. // 添加选中选项的样式
  230. var $scriptOptions = $(selector.scriptOptions);
  231. $scriptOptions.parent().addClass('current');
  232. loadOptionContentFn($scriptContent);
  233. });
  234. }
  235. }]);
  236. }();
  237.  
  238. ;// CONCATENATED MODULE: ./v2ex-replies-pro/src/Options.ts
  239. var _Options;
  240. function Options_typeof(o) { "@babel/helpers - typeof"; return Options_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, Options_typeof(o); }
  241. function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  242. function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  243. function Options_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  244. function Options_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, Options_toPropertyKey(descriptor.key), descriptor); } }
  245. function Options_createClass(Constructor, protoProps, staticProps) { if (protoProps) Options_defineProperties(Constructor.prototype, protoProps); if (staticProps) Options_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
  246. function _defineProperty(obj, key, value) { key = Options_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  247. function Options_toPropertyKey(t) { var i = Options_toPrimitive(t, "string"); return "symbol" == Options_typeof(i) ? i : i + ""; }
  248. function Options_toPrimitive(t, r) { if ("object" != Options_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != Options_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
  249.  
  250.  
  251. var Options = /*#__PURE__*/function () {
  252. function Options() {
  253. Options_classCallCheck(this, Options);
  254. }
  255. return Options_createClass(Options, null, [{
  256. key: "registerAll",
  257. value:
  258. /**
  259. * 注册(不可用)所有选项
  260. */
  261. function registerAll() {
  262. CommonOptions.registerAll('https://www.v2ex.com/settings', this.options);
  263. }
  264.  
  265. /**
  266. * 在页面中加载选项
  267. */
  268. }, {
  269. key: "loadInV2ex",
  270. value: function loadInV2ex() {
  271. var _this = this;
  272. if (location.href.indexOf('v2ex.com/settings') == -1) {
  273. return;
  274. }
  275. var selector = {
  276. menuTab: 'a.tab',
  277. currentMenuTab: 'a.tab_current',
  278. scriptOptions: '#script-options',
  279. scriptContent: '#Main .box',
  280. v2exTokenInput: 'input[name="v2exToken"]',
  281. saveOptionsBtn: '#save-options'
  282. },
  283. $body = $(document.body),
  284. $menuTab = $(selector.menuTab);
  285.  
  286. // 添加脚本设置的选项卡
  287. $menuTab.parent().append("<a id=\"script-options\" class=\"tab\" href=\"javascript:void(0);\">\u811A\u672C\u8BBE\u7F6E</a>");
  288. // 脚本设置选项点击事件
  289. $body.on('click', selector.scriptOptions, function () {
  290. // 移除已选中选项的样式
  291. var $currentMenuTab = $(selector.currentMenuTab);
  292. $currentMenuTab.removeClass('tab_current');
  293. $currentMenuTab.addClass('tab');
  294.  
  295. // 添加选中选项的样式
  296. var $scriptOptions = $(selector.scriptOptions);
  297. $scriptOptions.removeClass('tab');
  298. $scriptOptions.addClass('tab_current');
  299.  
  300. // 添加脚本设置的内容
  301. $(selector.scriptContent + ' div:gt(1)').remove();
  302. $(selector.scriptContent).append("\n <form>\n <div class=\"inner\">\n <div class=\"topic_content markdown_body\">\n <!--<p><a href=\"https://www.v2ex.com/settings/tokens\" target=\"_blank\">\u83B7\u53D6 V2EX Token</a></p> -->\n </div>\n <div class=\"sep20\"></div>\n <div class=\"social-settings-form\">\n <div>\n <div><a href=\"https://www.v2ex.com/settings/tokens\" target=\"_blank\">V2EX Token</a>\uFF1A</div>\n <input type=\"password\" class=\"sl\" name=\"v2exToken\" value=\"".concat(JSON.parse(Store/* default */.A.get(_this.Keys.v2exToken)).value, "\">\n </div>\n </div>\n </div>\n <div class=\"cell_ops\">\n <input id=\"save-options\" type=\"submit\" class=\"super normal button\" value=\"Save\">\n </div>\n </form>\n "));
  303. $body.on('click', selector.saveOptionsBtn, function () {
  304. var token = $(selector.v2exTokenInput).val();
  305. Store/* default */.A.set(_this.Keys.v2exToken, JSON.stringify(_objectSpread(_objectSpread({}, JSON.parse(Store/* default */.A.get(_this.Keys.v2exToken))), {
  306. value: token
  307. })));
  308. layer.msg('保存成功');
  309. return false;
  310. });
  311. });
  312. }
  313. }]);
  314. }();
  315. _Options = Options;
  316. /**
  317. * 选项 Key
  318. */
  319. _defineProperty(Options, "Keys", {
  320. v2exToken: 'v2exToken'
  321. });
  322. /**
  323. * 选项
  324. * @private
  325. */
  326. _defineProperty(Options, "options", [{
  327. label: 'V2EX Token',
  328. name: _Options.Keys.v2exToken,
  329. version: 1,
  330. value: '',
  331. menuCmdId: null
  332. }]);
  333.  
  334.  
  335. /***/ }),
  336.  
  337. /***/ 179:
  338. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  339.  
  340.  
  341. // EXPORTS
  342. __webpack_require__.d(__webpack_exports__, {
  343. A: () => (/* binding */ Reply)
  344. });
  345.  
  346. ;// CONCATENATED MODULE: ./utils/src/gm/enum/HttpDataType.ts
  347. var HttpDataType = /*#__PURE__*/function (HttpDataType) {
  348. HttpDataType["JSON"] = "JSON";
  349. return HttpDataType;
  350. }({});
  351. ;// CONCATENATED MODULE: ./utils/src/gm/Request.ts
  352. function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
  353. function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
  354. function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  355. function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  356. function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  357. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
  358. function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
  359. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  360. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
  361. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
  362. function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
  363. function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
  364.  
  365. var Request = /*#__PURE__*/function () {
  366. function Request() {
  367. _classCallCheck(this, Request);
  368. }
  369. return _createClass(Request, null, [{
  370. key: "get",
  371. value: function () {
  372. var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(option) {
  373. var onload1;
  374. return _regeneratorRuntime().wrap(function _callee$(_context) {
  375. while (1) switch (_context.prev = _context.next) {
  376. case 0:
  377. option['method'] = 'GET';
  378.  
  379. // 同步时返回 Promise
  380. if (!option.synchronous) {
  381. _context.next = 5;
  382. break;
  383. }
  384. return _context.abrupt("return", new Promise(function (resolve, reject) {
  385. GM_xmlhttpRequest(_objectSpread(_objectSpread({}, option), {}, {
  386. onload: function onload(response) {
  387. resolve(option.dataType === HttpDataType.JSON ? JSON.parse(response.responseText) : response.responseText);
  388. },
  389. onerror: function onerror(error) {
  390. reject(error);
  391. }
  392. }));
  393. }));
  394. case 5:
  395. onload1 = function onload1(details) {
  396. var response;
  397. if (option.dataType === HttpDataType.JSON) {
  398. response = JSON.parse(details.responseText);
  399. } else {
  400. response = details.response;
  401. }
  402. option.onload(response);
  403. };
  404. GM_xmlhttpRequest(_objectSpread(_objectSpread({}, option), {}, {
  405. onload: onload1
  406. }));
  407. case 7:
  408. case "end":
  409. return _context.stop();
  410. }
  411. }, _callee);
  412. }));
  413. function get(_x) {
  414. return _get.apply(this, arguments);
  415. }
  416. return get;
  417. }()
  418. }]);
  419. }();
  420.  
  421. ;// CONCATENATED MODULE: ./utils/src/gm/Info.ts
  422. function Info_typeof(o) { "@babel/helpers - typeof"; return Info_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, Info_typeof(o); }
  423. function Info_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  424. function Info_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, Info_toPropertyKey(descriptor.key), descriptor); } }
  425. function Info_createClass(Constructor, protoProps, staticProps) { if (protoProps) Info_defineProperties(Constructor.prototype, protoProps); if (staticProps) Info_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
  426. function Info_toPropertyKey(t) { var i = Info_toPrimitive(t, "string"); return "symbol" == Info_typeof(i) ? i : i + ""; }
  427. function Info_toPrimitive(t, r) { if ("object" != Info_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != Info_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
  428. /**
  429. * 获取脚本信息
  430. */
  431. var Info = /*#__PURE__*/function () {
  432. function Info() {
  433. Info_classCallCheck(this, Info);
  434. }
  435. return Info_createClass(Info, null, [{
  436. key: "get",
  437. value: function get() {
  438. return GM_info.script;
  439. }
  440. }, {
  441. key: "getName",
  442. value: function getName() {
  443. return this.get().name;
  444. }
  445. }, {
  446. key: "getVersion",
  447. value: function getVersion() {
  448. return this.get().version;
  449. }
  450. }]);
  451. }();
  452.  
  453. // EXTERNAL MODULE: ./utils/src/gm/Store.ts
  454. var Store = __webpack_require__(915);
  455. // EXTERNAL MODULE: ./v2ex-replies-pro/src/Options.ts + 2 modules
  456. var Options = __webpack_require__(952);
  457. ;// CONCATENATED MODULE: ./v2ex-replies-pro/src/api/V2ex.ts
  458. function V2ex_typeof(o) { "@babel/helpers - typeof"; return V2ex_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, V2ex_typeof(o); }
  459. function V2ex_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ V2ex_regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == V2ex_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(V2ex_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
  460. function V2ex_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
  461. function V2ex_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { V2ex_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { V2ex_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
  462. function V2ex_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  463. function V2ex_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, V2ex_toPropertyKey(descriptor.key), descriptor); } }
  464. function V2ex_createClass(Constructor, protoProps, staticProps) { if (protoProps) V2ex_defineProperties(Constructor.prototype, protoProps); if (staticProps) V2ex_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
  465. function V2ex_defineProperty(obj, key, value) { key = V2ex_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  466. function V2ex_toPropertyKey(t) { var i = V2ex_toPrimitive(t, "string"); return "symbol" == V2ex_typeof(i) ? i : i + ""; }
  467. function V2ex_toPrimitive(t, r) { if ("object" != V2ex_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != V2ex_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
  468.  
  469.  
  470.  
  471.  
  472.  
  473. var V2ex = /*#__PURE__*/function () {
  474. function V2ex() {
  475. V2ex_classCallCheck(this, V2ex);
  476. }
  477. return V2ex_createClass(V2ex, null, [{
  478. key: "checkToken",
  479. value: (
  480. /**
  481. * 检查 Token 是否有效
  482. */
  483. function () {
  484. var _checkToken = V2ex_asyncToGenerator( /*#__PURE__*/V2ex_regeneratorRuntime().mark(function _callee() {
  485. var token, result;
  486. return V2ex_regeneratorRuntime().wrap(function _callee$(_context) {
  487. while (1) switch (_context.prev = _context.next) {
  488. case 0:
  489. token = JSON.parse(Store/* default */.A.get(Options/* default */.A.Keys.v2exToken)).value;
  490. if (!(!token && location.href.indexOf('v2ex.com/settings') == -1)) {
  491. _context.next = 4;
  492. break;
  493. }
  494. layer.msg('请先在“脚本设置”中填写 Token!', {
  495. icon: 4,
  496. offset: 'rb'
  497. }, function () {
  498. window.open('https://www.v2ex.com/settings', '_blank');
  499. });
  500. return _context.abrupt("return", false);
  501. case 4:
  502. _context.next = 6;
  503. return Request.get({
  504. url: this.BASE_URL + 'token',
  505. dataType: HttpDataType.JSON,
  506. synchronous: true,
  507. headers: {
  508. 'Authorization': 'Bearer ' + token
  509. }
  510. });
  511. case 6:
  512. result = _context.sent;
  513. if (result['success']) {
  514. _context.next = 10;
  515. break;
  516. }
  517. layer.msg(Info.getName() + ":" + result['message'], {
  518. icon: 2,
  519. offset: 'rb',
  520. time: 5000
  521. });
  522. return _context.abrupt("return", false);
  523. case 10:
  524. return _context.abrupt("return", true);
  525. case 11:
  526. case "end":
  527. return _context.stop();
  528. }
  529. }, _callee, this);
  530. }));
  531. function checkToken() {
  532. return _checkToken.apply(this, arguments);
  533. }
  534. return checkToken;
  535. }()
  536. /**
  537. * 获取主题回复
  538. * @param topicId 主题 ID
  539. * @param page 页码
  540. */
  541. )
  542. }, {
  543. key: "getReplies",
  544. value: (function () {
  545. var _getReplies = V2ex_asyncToGenerator( /*#__PURE__*/V2ex_regeneratorRuntime().mark(function _callee2(topicId, page) {
  546. var result;
  547. return V2ex_regeneratorRuntime().wrap(function _callee2$(_context2) {
  548. while (1) switch (_context2.prev = _context2.next) {
  549. case 0:
  550. _context2.next = 2;
  551. return Request.get({
  552. url: this.BASE_URL + 'topics/' + topicId + '/replies' + (page ? '?p=' + page : ''),
  553. dataType: HttpDataType.JSON,
  554. synchronous: true,
  555. headers: {
  556. 'Authorization': 'Bearer ' + JSON.parse(Store/* default */.A.get(Options/* default */.A.Keys.v2exToken)).value
  557. }
  558. });
  559. case 2:
  560. result = _context2.sent;
  561. if (result['success']) {
  562. _context2.next = 6;
  563. break;
  564. }
  565. console.warn(Info.getName() + ":" + result['message']);
  566. return _context2.abrupt("return");
  567. case 6:
  568. return _context2.abrupt("return", result['result']);
  569. case 7:
  570. case "end":
  571. return _context2.stop();
  572. }
  573. }, _callee2, this);
  574. }));
  575. function getReplies(_x, _x2) {
  576. return _getReplies.apply(this, arguments);
  577. }
  578. return getReplies;
  579. }())
  580. }]);
  581. }();
  582. V2ex_defineProperty(V2ex, "BASE_URL", 'https://www.v2ex.com/api/v2/');
  583.  
  584. ;// CONCATENATED MODULE: ./v2ex-replies-pro/src/Reply.ts
  585. function Reply_typeof(o) { "@babel/helpers - typeof"; return Reply_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, Reply_typeof(o); }
  586. function Reply_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ Reply_regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == Reply_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(Reply_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
  587. function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  588. function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
  589. function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  590. function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  591. function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
  592. function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
  593. function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
  594. function Reply_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
  595. function Reply_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { Reply_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { Reply_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
  596. function Reply_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  597. function Reply_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, Reply_toPropertyKey(descriptor.key), descriptor); } }
  598. function Reply_createClass(Constructor, protoProps, staticProps) { if (protoProps) Reply_defineProperties(Constructor.prototype, protoProps); if (staticProps) Reply_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
  599. function Reply_toPropertyKey(t) { var i = Reply_toPrimitive(t, "string"); return "symbol" == Reply_typeof(i) ? i : i + ""; }
  600. function Reply_toPrimitive(t, r) { if ("object" != Reply_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != Reply_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
  601.  
  602. var Reply = /*#__PURE__*/function () {
  603. function Reply() {
  604. Reply_classCallCheck(this, Reply);
  605. }
  606. return Reply_createClass(Reply, null, [{
  607. key: "run",
  608. value: function () {
  609. var _run = Reply_asyncToGenerator( /*#__PURE__*/Reply_regeneratorRuntime().mark(function _callee() {
  610. var selector, $body, $head, $repliesNumber, $atLinks, atLinkReg, atLinkMatcher, atLinkAllMatcher, repliesNumber, replies, i, userAndAtUserReplyHtml, _iterator, _step, _loop, _iterator2, _step2, _loop2;
  611. return Reply_regeneratorRuntime().wrap(function _callee$(_context3) {
  612. while (1) switch (_context3.prev = _context3.next) {
  613. case 0:
  614. if (!(location.href.indexOf('v2ex.com/t/') === -1)) {
  615. _context3.next = 2;
  616. break;
  617. }
  618. return _context3.abrupt("return");
  619. case 2:
  620. _context3.next = 4;
  621. return V2ex.checkToken();
  622. case 4:
  623. if (_context3.sent) {
  624. _context3.next = 6;
  625. break;
  626. }
  627. return _context3.abrupt("return");
  628. case 6:
  629. selector = {
  630. // 回复数
  631. repliesNumber: '#Main > .box:eq(1) .gray',
  632. // 回复
  633. repliesDiv: '#Main > .box:eq(1) div[id^="r_"]',
  634. // @ 链接
  635. atLinks: '.reply_content a[href^="/member/"]',
  636. // 点击的回复
  637. clickedReply: '.clicked-reply',
  638. // 讨论弹窗
  639. taSay: '.ta-say',
  640. // 讨论弹窗的标题
  641. taSayDrag: '.ta-say .wb-drag',
  642. // 讨论弹窗的内容
  643. taSayBody: '.ta-say .wb-body',
  644. // 讨论弹窗的回复
  645. taSayRepliesDiv: '.ta-say .wb-body div[id^="r_"]'
  646. }, $body = $(document.body), $head = $(document.head), $repliesNumber = $(selector.repliesNumber), $atLinks = $(selector.atLinks), atLinkReg = '@<a href="\\/member\\/.+?">(.+?)<\\/a>', atLinkMatcher = new RegExp(atLinkReg), atLinkAllMatcher = new RegExp(atLinkReg, 'g'); // 根据回复数获取所有回复
  647. repliesNumber = $repliesNumber.text().substring(0, $repliesNumber.text().indexOf('条'));
  648. replies = [];
  649. i = 1;
  650. case 10:
  651. if (!(i <= Math.ceil(Number(repliesNumber) / 20))) {
  652. _context3.next = 22;
  653. break;
  654. }
  655. _context3.t0 = replies.push;
  656. _context3.t1 = replies;
  657. _context3.t2 = _toConsumableArray;
  658. _context3.next = 16;
  659. return V2ex.getReplies(topicId, i);
  660. case 16:
  661. _context3.t3 = _context3.sent;
  662. _context3.t4 = (0, _context3.t2)(_context3.t3);
  663. _context3.t0.apply.call(_context3.t0, _context3.t1, _context3.t4);
  664. case 19:
  665. i++;
  666. _context3.next = 10;
  667. break;
  668. case 22:
  669. // 最后一个回复加上底边框
  670. $(selector.repliesDiv + ':eq(-1)').css('border-bottom', $(selector.repliesDiv + ':eq(-2)').css('border-bottom'));
  671.  
  672. // 用户和 @用户的回复的 HTML:{'用户名': ['用户的回复 HTML', '@用户的回复 HTML']}
  673. userAndAtUserReplyHtml = {}; // 循环 @用户名,获取他的回复和艾特他的回复
  674. _iterator = _createForOfIteratorHelper($atLinks.toArray());
  675. _context3.prev = 25;
  676. _loop = /*#__PURE__*/Reply_regeneratorRuntime().mark(function _loop() {
  677. var atLink, username, _i, _replies, _reply$content_render, reply, replyId, replyHtml, $replyHtml;
  678. return Reply_regeneratorRuntime().wrap(function _loop$(_context) {
  679. while (1) switch (_context.prev = _context.next) {
  680. case 0:
  681. atLink = _step.value;
  682. username = $(atLink).text();
  683. userAndAtUserReplyHtml[username] = [];
  684. _i = 0, _replies = replies;
  685. case 4:
  686. if (!(_i < _replies.length)) {
  687. _context.next = 16;
  688. break;
  689. }
  690. reply = _replies[_i];
  691. if (!(reply.member.username != username && !((_reply$content_render = reply.content_rendered.match(atLinkAllMatcher)) !== null && _reply$content_render !== void 0 && _reply$content_render.some(function (item) {
  692. var _item$match;
  693. return ((_item$match = item.match(atLinkMatcher)) === null || _item$match === void 0 ? void 0 : _item$match[1]) == username;
  694. })))) {
  695. _context.next = 8;
  696. break;
  697. }
  698. return _context.abrupt("continue", 13);
  699. case 8:
  700. replyId = reply.id;
  701. replyHtml = $('#r_' + replyId).prop('outerHTML'), $replyHtml = $(replyHtml); // 修改 html 的 id,追加 _1
  702. $replyHtml.attr('id', $replyHtml.attr('id') + '_1');
  703. // 如果 html 中的 a 链接没有 target 属性或 target 属性不为 _blank,则添加 target="_blank"
  704. $replyHtml.find('a').each(function (i, a) {
  705. if (!a.target || a.target !== '_blank') {
  706. a.target = '_blank';
  707. }
  708. });
  709. userAndAtUserReplyHtml[username].push($replyHtml.prop('outerHTML'));
  710. case 13:
  711. _i++;
  712. _context.next = 4;
  713. break;
  714. case 16:
  715. case "end":
  716. return _context.stop();
  717. }
  718. }, _loop);
  719. });
  720. _iterator.s();
  721. case 28:
  722. if ((_step = _iterator.n()).done) {
  723. _context3.next = 32;
  724. break;
  725. }
  726. return _context3.delegateYield(_loop(), "t5", 30);
  727. case 30:
  728. _context3.next = 28;
  729. break;
  730. case 32:
  731. _context3.next = 37;
  732. break;
  733. case 34:
  734. _context3.prev = 34;
  735. _context3.t6 = _context3["catch"](25);
  736. _iterator.e(_context3.t6);
  737. case 37:
  738. _context3.prev = 37;
  739. _iterator.f();
  740. return _context3.finish(37);
  741. case 40:
  742. // 添加弹窗样式
  743. $head.append("<style>\n ".concat(selector.clickedReply, " {\n border: 2px solid !important; \n }\n ").concat(selector.taSay, " {\n border-shadow: 0 14px 12px rgb(0 0 0 / 25%), 0 10px 10px rgb(0 0 0 / 22%) !important\n }\n ").concat(selector.taSayDrag, " {\n background-color: #e2e2e2 !important;\n color: #666\n }\n ").concat(selector.taSayBody, " {\n padding-bottom: 10px\n }\n </style>"));
  744.  
  745. // 循环 @用户名
  746. _iterator2 = _createForOfIteratorHelper($atLinks.toArray());
  747. _context3.prev = 42;
  748. _loop2 = /*#__PURE__*/Reply_regeneratorRuntime().mark(function _loop2() {
  749. var atLink, $atLink;
  750. return Reply_regeneratorRuntime().wrap(function _loop2$(_context2) {
  751. while (1) switch (_context2.prev = _context2.next) {
  752. case 0:
  753. atLink = _step2.value;
  754. $atLink = $(atLink); // @用户名点击时显示讨论弹窗
  755. $atLink.on('click', function (e) {
  756. e.preventDefault();
  757.  
  758. // TODO 如果已经打开了讨论弹窗,跳过
  759.  
  760. // 移除之前加粗的回复的边框
  761. $(selector.clickedReply).removeClass(selector.clickedReply.substring(1));
  762. // 加粗点击 @用户名的那条回复的边框
  763. var $cell = $atLink.parents('.cell');
  764. $cell.addClass(selector.clickedReply.substring(1));
  765. // 跳转到那条回复
  766. $('html,body').animate({
  767. scrollTop: $cell.offset().top - $(window).height() / 2
  768. }, 500);
  769. var username = $atLink.text();
  770. if (Reply.winbox) {
  771. Reply.winbox.close();
  772. }
  773. Reply.winbox = new WinBox({
  774. "class": selector.taSay.substring(1),
  775. title: "".concat(username, " \u5728\u8BA8\u8BBA\u2026\u2026"),
  776. x: localStorage.getItem('ta_say_x') || 'right',
  777. y: localStorage.getItem('ta_say_y') || 'bottom',
  778. width: localStorage.getItem('ta_say_width') || '540px',
  779. height: localStorage.getItem('ta_say_height') || '70%',
  780. html: "".concat(userAndAtUserReplyHtml[username].join('')),
  781. onresize: function onresize(width, height) {
  782. // 改变窗口大小时记录窗口大小
  783. localStorage.setItem('ta_say_width', width + 'px');
  784. localStorage.setItem('ta_say_height', height + 'px');
  785. },
  786. onmove: function onmove(x, y) {
  787. // 移动窗口时记录窗口位置
  788. localStorage.setItem('ta_say_x', x);
  789. localStorage.setItem('ta_say_y', y);
  790. }
  791. });
  792.  
  793. // 弹窗中加粗点击 @用户名的那条回复的边框
  794. var $cell1 = $("#".concat($cell.attr('id'), "_1"));
  795. $cell1.addClass(selector.clickedReply.substring(1));
  796. // 跳转到那条回复
  797. $(selector.taSayBody).animate({
  798. scrollTop: $cell1.offset().top - $(selector.taSayBody).offset().top - $(selector.taSayBody).height() / 2
  799. }, 500);
  800. });
  801. case 3:
  802. case "end":
  803. return _context2.stop();
  804. }
  805. }, _loop2);
  806. });
  807. _iterator2.s();
  808. case 45:
  809. if ((_step2 = _iterator2.n()).done) {
  810. _context3.next = 49;
  811. break;
  812. }
  813. return _context3.delegateYield(_loop2(), "t7", 47);
  814. case 47:
  815. _context3.next = 45;
  816. break;
  817. case 49:
  818. _context3.next = 54;
  819. break;
  820. case 51:
  821. _context3.prev = 51;
  822. _context3.t8 = _context3["catch"](42);
  823. _iterator2.e(_context3.t8);
  824. case 54:
  825. _context3.prev = 54;
  826. _iterator2.f();
  827. return _context3.finish(54);
  828. case 57:
  829. layer.msg('回复增强成功', {
  830. icon: 1 /*, offset: 'rb'*/
  831. });
  832. case 58:
  833. case "end":
  834. return _context3.stop();
  835. }
  836. }, _callee, null, [[25, 34, 37, 40], [42, 51, 54, 57]]);
  837. }));
  838. function run() {
  839. return _run.apply(this, arguments);
  840. }
  841. return run;
  842. }()
  843. }]);
  844. }();
  845.  
  846.  
  847. /***/ }),
  848.  
  849. /***/ 423:
  850. /***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => {
  851.  
  852. /* harmony import */ var _Reply__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(179);
  853. /* harmony import */ var _Options__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(952);
  854. function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
  855. function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
  856. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
  857. function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
  858. // ==UserScript==
  859. // @name V2EX 主题回复增强
  860. // @namespace http://tampermonkey.net/
  861. // @version 0.1.1
  862. // @description 增强 V2EX 主题的回复。
  863. // @author duanluan
  864. // @copyright 2022, duanluan (https://github.com/duanluan)
  865. // @license Apache-2.0; https://www.apache.org/licenses/LICENSE-2.0.txt
  866. // @match *://*.v2ex.com/*
  867. // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js
  868. // @require https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.4/moment-with-locales.min.js
  869. // @require https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.4/locale/zh-cn.min.js
  870. // @require https://cdn.jsdelivr.net/npm/winbox@0.2.82/dist/winbox.bundle.min.js
  871. // @resource css https://cdn.bootcdn.net/ajax/libs/layer/3.5.1/theme/default/layer.min.css
  872. // @require https://cdn.bootcdn.net/ajax/libs/layer/3.5.1/layer.min.js
  873. // @grant GM_xmlhttpRequest
  874. // @grant GM_getValue
  875. // @grant GM_setValue
  876. // @grant GM_registerMenuCommand
  877. // @grant GM_unregisterMenuCommand
  878. // @grant GM_getResourceText
  879. // @grant GM_addStyle
  880. // ==/UserScript==
  881.  
  882. // ==OpenUserJS==
  883. // @author duanluan
  884. // @updateURL https://raw.kkgithub.com/duanluan/tampermonkey-scripts/main/v2ex-replies-pro/dist/core-socialist-values.user.js
  885. // ==/OpenUserJS==
  886.  
  887.  
  888.  
  889. _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
  890. 'use strict';
  891.  
  892. // 加载 CSS
  893. return _regeneratorRuntime().wrap(function _callee$(_context) {
  894. while (1) switch (_context.prev = _context.next) {
  895. case 0:
  896. GM_addStyle(GM_getResourceText('css'));
  897. // layer 图标未知原因失效,手动添加样式
  898. $(document.head).append("<style>\n .layui-layer-ico{background:url('https://cdn.bootcdn.net/ajax/libs/layer/3.5.1/theme/default/icon.png') no-repeat}\n .layui-layer-ico1{background-position:-30px 0}\n .layui-layer-ico2{background-position:-60px 0}\n .layui-layer-ico3{background-position:-90px 0}\n .layui-layer-ico4{background-position:-120px 0}\n .layui-layer-ico5{background-position:-150px 0}\n .layui-layer-ico6{background-position:-180px 0}\n </style>");
  899. _Options__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.registerAll();
  900. _Options__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.loadInV2ex();
  901. _Reply__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.run();
  902. case 5:
  903. case "end":
  904. return _context.stop();
  905. }
  906. }, _callee);
  907. }))();
  908.  
  909. /***/ })
  910.  
  911. /******/ });
  912. /************************************************************************/
  913. /******/ // The module cache
  914. /******/ var __webpack_module_cache__ = {};
  915. /******/
  916. /******/ // The require function
  917. /******/ function __webpack_require__(moduleId) {
  918. /******/ // Check if module is in cache
  919. /******/ var cachedModule = __webpack_module_cache__[moduleId];
  920. /******/ if (cachedModule !== undefined) {
  921. /******/ return cachedModule.exports;
  922. /******/ }
  923. /******/ // Create a new module (and put it into the cache)
  924. /******/ var module = __webpack_module_cache__[moduleId] = {
  925. /******/ // no module.id needed
  926. /******/ // no module.loaded needed
  927. /******/ exports: {}
  928. /******/ };
  929. /******/
  930. /******/ // Execute the module function
  931. /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
  932. /******/
  933. /******/ // Return the exports of the module
  934. /******/ return module.exports;
  935. /******/ }
  936. /******/
  937. /************************************************************************/
  938. /******/ /* webpack/runtime/define property getters */
  939. /******/ (() => {
  940. /******/ // define getter functions for harmony exports
  941. /******/ __webpack_require__.d = (exports, definition) => {
  942. /******/ for(var key in definition) {
  943. /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
  944. /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
  945. /******/ }
  946. /******/ }
  947. /******/ };
  948. /******/ })();
  949. /******/
  950. /******/ /* webpack/runtime/hasOwnProperty shorthand */
  951. /******/ (() => {
  952. /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
  953. /******/ })();
  954. /******/
  955. /************************************************************************/
  956. /******/
  957. /******/ // startup
  958. /******/ // Load entry module and return exports
  959. /******/ // This entry module is referenced by other modules so it can't be inlined
  960. /******/ __webpack_require__(179);
  961. /******/ __webpack_require__(952);
  962. /******/ var __webpack_exports__ = __webpack_require__(423);
  963. /******/
  964. /******/ })()
  965. ;
  966. //# sourceMappingURL=v2ex-replies-pro.user.js.map

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址