Block somebody

在贴吧屏蔽某人,眼不见心不烦

  1. // ==UserScript==
  2. // @name Block somebody
  3. // @author burningall
  4. // @description 在贴吧屏蔽某人,眼不见心不烦
  5. // @version 2016.6.4
  6. // @include *tieba.baidu.com/p/*
  7. // @include *tieba.baidu.com/*
  8. // @include *tieba.baidu.com/f?*
  9. // @grant GM_addStyle
  10. // @grant GM_getValue
  11. // @grant GM_setValue
  12. // @grant GM_listValues
  13. // @grant GM_deleteValue
  14. // @grant GM_registerMenuCommand
  15. // @run-at document-start
  16. // @compatible chrome 两个字,破费
  17. // @compatible firefox 两个字,破费
  18. // @license The MIT License (MIT); http://opensource.org/licenses/MIT
  19. // @supportURL http://www.burningall.com
  20. // @contributionURL troy450409405@gmail.com|alipay.com
  21. // @namespace https://gf.qytechs.cn/zh-CN/users/3400-axetroy
  22. // ==/UserScript==
  23.  
  24. /*
  25.  
  26. Github源码:https://github.com/axetroy/GMscript
  27.  
  28. */
  29. /******/ (function(modules) { // webpackBootstrap
  30. /******/ // The module cache
  31. /******/ var installedModules = {};
  32.  
  33. /******/ // The require function
  34. /******/ function __webpack_require__(moduleId) {
  35.  
  36. /******/ // Check if module is in cache
  37. /******/ if(installedModules[moduleId])
  38. /******/ return installedModules[moduleId].exports;
  39.  
  40. /******/ // Create a new module (and put it into the cache)
  41. /******/ var module = installedModules[moduleId] = {
  42. /******/ exports: {},
  43. /******/ id: moduleId,
  44. /******/ loaded: false
  45. /******/ };
  46.  
  47. /******/ // Execute the module function
  48. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  49.  
  50. /******/ // Flag the module as loaded
  51. /******/ module.loaded = true;
  52.  
  53. /******/ // Return the exports of the module
  54. /******/ return module.exports;
  55. /******/ }
  56.  
  57.  
  58. /******/ // expose the modules object (__webpack_modules__)
  59. /******/ __webpack_require__.m = modules;
  60.  
  61. /******/ // expose the module cache
  62. /******/ __webpack_require__.c = installedModules;
  63.  
  64. /******/ // __webpack_public_path__
  65. /******/ __webpack_require__.p = "";
  66.  
  67. /******/ // Load entry module and return exports
  68. /******/ return __webpack_require__(0);
  69. /******/ })
  70. /************************************************************************/
  71. /******/ ([
  72. /* 0 */
  73. /***/ function(module, exports, __webpack_require__) {
  74.  
  75. 'use strict';
  76.  
  77. var _jqLite = __webpack_require__(1);
  78.  
  79. var _jqLite2 = _interopRequireDefault(_jqLite);
  80.  
  81. var _icon = __webpack_require__(33);
  82.  
  83. var _icon2 = _interopRequireDefault(_icon);
  84.  
  85. var _panel = __webpack_require__(34);
  86.  
  87. var _panel2 = _interopRequireDefault(_panel);
  88.  
  89. var _common = __webpack_require__(36);
  90.  
  91. var _common2 = _interopRequireDefault(_common);
  92.  
  93. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  94.  
  95. var panel = new _panel2.default();
  96. var POSITION = _common2.default.getPosition();
  97.  
  98. var initCount = 0;
  99. var $icon = (0, _jqLite2.default)(document.createElement("a")).addClass('block-icon').html(_icon2.default);
  100. var init = function init() {
  101. if (POSITION === 'post') {
  102. initCount++;
  103. (0, _jqLite2.default)('.p_postlist .l_post').each(function (post) {
  104. var $name = (0, _jqLite2.default)(post).find('.d_author ul.p_author li.d_name');
  105. if (!$name[0]) return;
  106.  
  107. var id = $name.find('a[data-field].p_author_name').text().trim();
  108.  
  109. if (!id) return;
  110.  
  111. var icon = $icon[0].cloneNode(true);
  112.  
  113. if (GM_listValues().indexOf(id) > -1) return post.remove();
  114.  
  115. if ($name.find('svg').length) return;
  116.  
  117. (0, _jqLite2.default)(icon).click(function () {
  118. var bar = _common2.default.getBarName();
  119.  
  120. var reason = '在帖子中选择';
  121.  
  122.  
  123. GM_setValue(id, { id: id, bar: bar, reason: reason, date: new Date() });
  124. (0, _jqLite2.default)('.p_postlist .l_post').each(function (ele) {
  125. var username = (0, _jqLite2.default)(ele).attr('data-field').replace(/\'/g, '"');
  126. if (!username) return;
  127. username = JSON.parse(username).author.user_name || JSON.parse(username).author.name_u;
  128. username = username.replace(/\&ie\=.*$/ig, '');
  129. username = decodeURI(username);
  130. if (username === id) ele.remove();
  131. });
  132. });
  133.  
  134. $name[0].appendChild(icon);
  135. });
  136. } else if (POSITION === 'list') {
  137. (function () {
  138. var interval = setInterval(function () {
  139. var postList = (0, _jqLite2.default)('ul#thread_list li[data-field].j_thread_list');
  140. if (!postList.length) return;
  141.  
  142. clearInterval(interval);
  143. initCount++;
  144. postList.each(function (post) {
  145. var $name = (0, _jqLite2.default)(post).find('.j_threadlist_li_right .tb_icon_author');
  146. if (!$name[0]) return;
  147.  
  148. var id = $name.find('a[data-field].frs-author-name').text().trim();
  149. var icon = $icon[0].cloneNode(true);
  150.  
  151. if (GM_listValues().indexOf(id) > -1) return post.remove();
  152.  
  153. (0, _jqLite2.default)(icon).click(function () {
  154. var bar = _common2.default.getBarName();
  155.  
  156. var reason = '贴吧首页选择';
  157.  
  158. if (!id) return;
  159. GM_setValue(id, { id: id, bar: bar, reason: reason, date: new Date() });
  160.  
  161. (0, _jqLite2.default)('ul#thread_list li[data-field].j_thread_list').each(function (_post) {
  162. var username = (0, _jqLite2.default)(_post).find('a[data-field].frs-author-name').text().trim();
  163. if (!username) return;
  164. if (username === id) _post.remove();
  165. });
  166. });
  167.  
  168. $name[0].appendChild(icon);
  169. });
  170. }, 100);
  171. })();
  172. }
  173. };
  174.  
  175. (0, _jqLite2.default)(function () {
  176.  
  177. GM_registerMenuCommand("控制面板", panel.create);
  178. GM_addStyle(__webpack_require__(38));
  179.  
  180. (0, _jqLite2.default)(document).bind('keyup', function (e) {
  181. if (e.keyCode === 120) panel.create();
  182. });
  183.  
  184. init();
  185.  
  186. (0, _jqLite2.default)(document).observe(function (target) {
  187. var addedNodes = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
  188. var removedNodes = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
  189.  
  190.  
  191. addedNodes = Array.from(addedNodes);
  192.  
  193. // if (!addedNodes || !addedNodes.length || removedNodes.length) return;
  194.  
  195. addedNodes.forEach(function (node) {
  196. // 翻页
  197. if (node.id === 'content_leftList' || node.id === 'j_p_postlist') {
  198. initCount > 0 && init();
  199. }
  200. });
  201.  
  202. // 楼中楼翻页
  203. if (target && (0, _jqLite2.default)(target).hasClass('j_lzl_m_w')) {
  204. (function () {
  205.  
  206. var $lzlList = (0, _jqLite2.default)(target).find('li.lzl_single_post');
  207.  
  208. $lzlList.each(function (lzl) {
  209. var $lzl = (0, _jqLite2.default)(lzl);
  210. if ($lzl.attr('filter')) return;
  211.  
  212. $lzl.attr('filter', true);
  213. var id = JSON.parse($lzl.attr('data-field').replace(/\'/g, '"')).user_name;
  214. id = decodeURI(id);
  215.  
  216. if (!id) return;
  217.  
  218. if (GM_listValues().indexOf(id) > -1) return lzl.remove();
  219.  
  220. var $name = $lzl.find('.lzl_cnt');
  221.  
  222. if ($name.find('svg').length) return;
  223.  
  224. var icon = $icon[0].cloneNode(true);
  225.  
  226. (0, _jqLite2.default)(icon).click(function (e) {
  227. var bar = _common2.default.getBarName();
  228.  
  229. var reason = '楼中楼选择';
  230.  
  231.  
  232. GM_setValue(id, { id: id, bar: bar, reason: reason, date: new Date() });
  233.  
  234. $lzlList.each(function (_lzl) {
  235. var username = (0, _jqLite2.default)(_lzl).find('div.lzl_cnt a.j_user_card').text().trim();
  236. if (!username) return;
  237. if (username === id) _lzl.remove();
  238. });
  239. });
  240. $lzl.find('.lzl_content_reply')[0].appendChild(icon);
  241. // $name[0].insertBefore(icon, $name[0].childNodes[0]);
  242. });
  243. })();
  244. }
  245.  
  246. //
  247. var $lzlList = (0, _jqLite2.default)('ul.j_lzl_m_w');
  248. if (!$lzlList.length) return;
  249.  
  250. $lzlList.each(function (lzls) {
  251. if ((0, _jqLite2.default)(lzls).attr('filter')) return;
  252.  
  253. (0, _jqLite2.default)(lzls).attr('filter', true);
  254.  
  255. (0, _jqLite2.default)(lzls).find('li.lzl_single_post').each(function (lzl) {
  256. var $lzl = (0, _jqLite2.default)(lzl);
  257. var $name = $lzl.find('.lzl_cnt');
  258.  
  259. if ($name.find('svg').length) return;
  260.  
  261. var icon = $icon[0].cloneNode(true);
  262.  
  263. var id = JSON.parse($lzl.attr('data-field').replace(/\'/g, '"')).user_name;
  264.  
  265. if (GM_listValues().indexOf(id) > -1) return lzl.remove();
  266.  
  267. if (!id) return;
  268.  
  269. (0, _jqLite2.default)(icon).click(function (e) {
  270. var bar = _common2.default.getBarName();
  271.  
  272. var reason = '楼中楼选择';
  273.  
  274. GM_setValue(id, { id: id, bar: bar, reason: reason, date: new Date() });
  275. // 删除当前楼中楼的
  276. $lzlList.each(function (_lzl) {
  277. var $floor = (0, _jqLite2.default)(_lzl).find('div.lzl_cnt');
  278. $floor.each(function (_post) {
  279. var username = (0, _jqLite2.default)(_post).find('a.j_user_card').text().trim();
  280. if (!username) return;
  281. if (username === id) _post.parentElement.remove();
  282. });
  283. });
  284. // 删除帖子里面楼层的
  285. init();
  286. });
  287. // $name[0].insertBefore(icon, $name[0].childNodes[0]);
  288. // $name[0].insertBefore(icon, $lzl.find('.lzl_content_reply'));
  289. // $lzl.find('.lzl_content_reply')[0].insertBefore(icon, $lzl.find('.lzl_content_reply')[0].childNodes[1])
  290. $lzl.find('.lzl_content_reply')[0].appendChild(icon);
  291. });
  292. });
  293. });
  294. });
  295.  
  296. /***/ },
  297. /* 1 */
  298. /***/ function(module, exports, __webpack_require__) {
  299.  
  300. 'use strict';
  301.  
  302. // es6 Array.from
  303.  
  304. Object.defineProperty(exports, "__esModule", {
  305. value: true
  306. });
  307.  
  308. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
  309.  
  310. var _createClass = function () { 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, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  311. // es6 Object.assign
  312.  
  313.  
  314. __webpack_require__(2);
  315.  
  316. __webpack_require__(30);
  317.  
  318. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  319.  
  320. var noop = function noop(x) {
  321. return x;
  322. };
  323.  
  324. var jqLite = function () {
  325. function jqLite() {
  326. var _this = this;
  327.  
  328. var selectors = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];
  329. var context = arguments.length <= 1 || arguments[1] === undefined ? document : arguments[1];
  330.  
  331. _classCallCheck(this, jqLite);
  332.  
  333. this.selectors = selectors;
  334. this.context = context;
  335. this.length = 0;
  336.  
  337. switch (typeof selectors === 'undefined' ? 'undefined' : _typeof(selectors)) {
  338. case 'undefined':
  339. break;
  340. case 'string':
  341. Array.from(context.querySelectorAll(selectors), function (ele, i) {
  342. _this[i] = ele;
  343. _this.length++;
  344. }, this);
  345. break;
  346. case 'object':
  347. if (selectors.length) {
  348. Array.from(selectors, function (ele, i) {
  349. _this[i] = ele;
  350. _this.length++;
  351. }, this);
  352. } else {
  353. this[0] = selectors;
  354. this.length = 1;
  355. }
  356. break;
  357. case 'function':
  358. this.ready(selectors);
  359. break;
  360. default:
  361.  
  362. }
  363. }
  364.  
  365. _createClass(jqLite, [{
  366. key: 'eq',
  367. value: function eq() {
  368. var n = arguments.length <= 0 || arguments[0] === undefined ? 0 : arguments[0];
  369.  
  370. return new jqLite(this[n]);
  371. }
  372. }, {
  373. key: 'find',
  374. value: function find(selectors) {
  375. return new jqLite(selectors, this[0]);
  376. }
  377. }, {
  378. key: 'each',
  379. value: function each() {
  380. var fn = arguments.length <= 0 || arguments[0] === undefined ? noop : arguments[0];
  381.  
  382. for (var i = 0; i < this.length; i++) {
  383. fn.call(this, this[i], i);
  384. }
  385. return this;
  386. }
  387. }, {
  388. key: 'bind',
  389. value: function bind() {
  390. var types = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];
  391. var fn = arguments.length <= 1 || arguments[1] === undefined ? noop : arguments[1];
  392.  
  393. this.each(function (ele) {
  394. types.trim().split(/\s{1,}/).forEach(function (type) {
  395. ele.addEventListener(type, function (e) {
  396. var target = e.target || e.srcElement;
  397. if (fn.call(target, e) === false) {
  398. e.returnValue = true;
  399. e.cancelBubble = true;
  400. e.preventDefault && e.preventDefault();
  401. e.stopPropagation && e.stopPropagation();
  402. return false;
  403. }
  404. }, false);
  405. });
  406. });
  407. }
  408. }, {
  409. key: 'click',
  410. value: function click() {
  411. var fn = arguments.length <= 0 || arguments[0] === undefined ? noop : arguments[0];
  412.  
  413. this.bind('click', fn);
  414. return this;
  415. }
  416. }, {
  417. key: 'ready',
  418. value: function ready() {
  419. var _this2 = this;
  420.  
  421. var fn = arguments.length <= 0 || arguments[0] === undefined ? noop : arguments[0];
  422.  
  423. window.addEventListener('DOMContentLoaded', function (e) {
  424. fn.call(_this2, e);
  425. }, false);
  426. }
  427. }, {
  428. key: 'observe',
  429. value: function observe() {
  430. var _this3 = this;
  431.  
  432. var fn = arguments.length <= 0 || arguments[0] === undefined ? noop : arguments[0];
  433. var config = arguments.length <= 1 || arguments[1] === undefined ? { childList: true, subtree: true } : arguments[1];
  434.  
  435. this.each(function (ele) {
  436. var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
  437. var observer = new MutationObserver(function (mutations) {
  438. mutations.forEach(function (mutation) {
  439. fn.call(_this3, mutation.target, mutation.addedNodes, mutation.removedNodes);
  440. });
  441. });
  442. observer.observe(ele, config);
  443. });
  444. return this;
  445. }
  446. }, {
  447. key: 'attr',
  448. value: function (_attr) {
  449. function attr(_x, _x2) {
  450. return _attr.apply(this, arguments);
  451. }
  452.  
  453. attr.toString = function () {
  454. return _attr.toString();
  455. };
  456.  
  457. return attr;
  458. }(function (attr, value) {
  459. // one agm
  460. if (arguments.length === 1) {
  461. // get attr value
  462. if (typeof attr === 'string') {
  463. return this[0].getAttribute(attr);
  464. }
  465. // set attr with a json
  466. else if ((typeof attr === 'undefined' ? 'undefined' : _typeof(attr)) === 'object') {
  467. this.each(function (ele) {
  468. for (var at in attr) {
  469. if (attr.hasOwnProperty(at)) {
  470. ele.setAttribute(at, value);
  471. }
  472. }
  473. });
  474. return value;
  475. }
  476. }
  477. // set
  478. else if (arguments.length === 2) {
  479. this.each(function (ele) {
  480. ele.setAttribute(attr, value);
  481. });
  482. return this;
  483. } else {
  484. return this;
  485. }
  486. })
  487. }, {
  488. key: 'removeAttr',
  489. value: function removeAttr(attr) {
  490. if (arguments.length === 1) {
  491. this.each(function (ele) {
  492. ele.removeAttribute(attr);
  493. });
  494. }
  495. return this;
  496. }
  497. }, {
  498. key: 'remove',
  499. value: function remove() {
  500. this.each(function (ele) {
  501. ele.remove();
  502. });
  503. this.length = 0;
  504. return this;
  505. }
  506.  
  507. // get the element style
  508.  
  509. }, {
  510. key: 'style',
  511. value: function style(attr) {
  512. return this[0].currentStyle ? this[0].currentStyle[attr] : getComputedStyle(this[0])[attr];
  513. }
  514.  
  515. // (attr,value) || 'string' || {}
  516.  
  517. }, {
  518. key: 'css',
  519. value: function css() {
  520. for (var _len = arguments.length, agm = Array(_len), _key = 0; _key < _len; _key++) {
  521. agm[_key] = arguments[_key];
  522. }
  523.  
  524. if (agm.length === 1) {
  525. // get style
  526. if (typeof agm[0] === 'string') {
  527. // set style as a long text
  528. if (/:/ig.test(agm[0])) {
  529. this.each(function (ele) {
  530. ele.style.cssText = attr;
  531. });
  532. } else {
  533. return this[0].currentStyle ? this[0].currentStyle[agm[0]] : getComputedStyle(this[0])[agm[0]];
  534. }
  535. }
  536. // set style as a object
  537. else {
  538. this.each(function (ele) {
  539. for (var _attr2 in agm[0]) {
  540. if (agm[0].hasOwnProperty(_attr2)) {
  541. ele.style[_attr2] = agm[0][_attr2];
  542. }
  543. }
  544. });
  545. }
  546. }
  547. // set as (key,value)
  548. else if (agm.length === 2) {
  549. this.each(function (ele) {
  550. ele.style[agm[0]] = agm[1];
  551. });
  552. }
  553. return this;
  554. }
  555. }, {
  556. key: 'width',
  557. value: function width(value) {
  558. var element = this[0];
  559. // window or document
  560. if (element.window === element || element.body) {
  561. return document.body.scrollWidth > document.documentElement.scrollWidth ? document.body.scrollWidth : document.documentElement.scrollWidth;
  562. }
  563. // set width
  564. else if (value) {
  565. this.each(function (ele) {
  566. ele.style.width = value + 'px';
  567. });
  568. return this;
  569. }
  570. // get width
  571. else {
  572. return this[0].offsetWidth || parseFloat(this.style('width'));
  573. }
  574. }
  575. }, {
  576. key: 'height',
  577. value: function height(value) {
  578. var ele = this[0];
  579. // window or document
  580. if (ele.window === ele || ele.body) {
  581. return document.body.scrollHeight > document.documentElement.scrollHeight ? document.body.scrollHeight : document.documentElement.scrollHeight;
  582. }
  583. // set height
  584. else if (value) {
  585. this.each(function (ele) {
  586. ele.style.height = value + 'px';
  587. });
  588. return this;
  589. }
  590. // get height
  591. else {
  592. return this[0].offsetHeight || parseFloat(this.style('height'));
  593. }
  594. }
  595. }, {
  596. key: 'html',
  597. value: function html(value) {
  598. if (value !== undefined) {
  599. this.each(function (ele) {
  600. ele.innerHTML = typeof value === 'function' ? value(ele) : value;
  601. });
  602. } else {
  603. return this[0].innerHTML;
  604. }
  605. return this;
  606. }
  607. }, {
  608. key: 'text',
  609. value: function text(value) {
  610. if (value === undefined) return this[0].innerText || this[0].textContent;
  611.  
  612. this.each(function (ele) {
  613. ele.innerText = ele.textContent = value;
  614. });
  615. return this;
  616. }
  617. }, {
  618. key: 'val',
  619. value: function val(value) {
  620. if (value === undefined) return this[0].value;
  621. this.each(function (ele) {
  622. ele.value = value;
  623. });
  624. return this;
  625. }
  626. }, {
  627. key: 'show',
  628. value: function show() {
  629. this.each(function (ele) {
  630. ele.style.display = '';
  631. });
  632. return this;
  633. }
  634. }, {
  635. key: 'hide',
  636. value: function hide() {
  637. this.each(function (ele) {
  638. ele.style.display = 'none';
  639. });
  640. return this;
  641. }
  642.  
  643. // content str || jqLite Object || DOM
  644. // here is jqLite Object
  645.  
  646. }, {
  647. key: 'append',
  648. value: function append(content) {
  649. this.each(function (ele) {
  650. ele.appendChild(content[0]);
  651. });
  652. return this;
  653. }
  654. }, {
  655. key: 'prepend',
  656.  
  657.  
  658. // content str || jqLite Object || DOM
  659. // here is jqLite Object
  660. value: function prepend(content) {
  661. this.each(function (ele) {
  662. ele.insertBefore(content[0], ele.children[0]);
  663. });
  664. return this;
  665. }
  666. }, {
  667. key: 'hasClass',
  668. value: function hasClass(className) {
  669. if (!this[0]) return false;
  670. return this[0].classList.contains(className);
  671. }
  672. }, {
  673. key: 'addClass',
  674. value: function addClass(className) {
  675. this.each(function (ele) {
  676. ele.classList.add(className);
  677. });
  678. return this;
  679. }
  680. }, {
  681. key: 'removeClass',
  682. value: function removeClass(className) {
  683. this.each(function (ele) {
  684. ele.classList.remove(className);
  685. });
  686. return this;
  687. }
  688. }, {
  689. key: 'index',
  690. get: function get() {
  691. var index = 0;
  692. var brothers = this[0].parentNode.children;
  693. for (var i = 0; i < brothers.length; i++) {
  694. if (brothers[i] == this[0]) {
  695. index = i;
  696. break;
  697. }
  698. }
  699. return index;
  700. }
  701. }], [{
  702. key: 'fn',
  703. get: function get() {
  704. var visible = function visible(ele) {
  705. var pos = ele.getBoundingClientRect();
  706. var w = void 0;
  707. var h = void 0;
  708. var inViewPort = void 0;
  709. var docEle = document.documentElement;
  710. var docBody = document.body;
  711. if (docEle.getBoundingClientRect) {
  712. w = docEle.clientWidth || docBody.clientWidth;
  713. h = docEle.clientHeight || docBody.clientHeight;
  714. inViewPort = pos.top > h || pos.bottom < 0 || pos.left > w || pos.right < 0;
  715. return inViewPort ? false : true;
  716. }
  717. };
  718. var merge = function merge() {
  719. for (var _len2 = arguments.length, sources = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
  720. sources[_key2] = arguments[_key2];
  721. }
  722.  
  723. return Object.assign.apply(Object, [{}].concat(sources));
  724. };
  725. return {
  726. visible: visible,
  727. merge: merge
  728. };
  729. }
  730. }]);
  731.  
  732. return jqLite;
  733. }();
  734.  
  735. var $ = function $() {
  736. var selectors = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];
  737. var context = arguments.length <= 1 || arguments[1] === undefined ? document : arguments[1];
  738.  
  739. return new jqLite(selectors, context);
  740. };
  741. $.fn = jqLite.fn;
  742.  
  743. exports.default = $;
  744.  
  745. /***/ },
  746. /* 2 */
  747. /***/ function(module, exports, __webpack_require__) {
  748.  
  749. 'use strict';
  750. var ctx = __webpack_require__(3)
  751. , $export = __webpack_require__(5)
  752. , toObject = __webpack_require__(15)
  753. , call = __webpack_require__(17)
  754. , isArrayIter = __webpack_require__(20)
  755. , toLength = __webpack_require__(24)
  756. , getIterFn = __webpack_require__(26);
  757. $export($export.S + $export.F * !__webpack_require__(29)(function(iter){ Array.from(iter); }), 'Array', {
  758. // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  759. from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
  760. var O = toObject(arrayLike)
  761. , C = typeof this == 'function' ? this : Array
  762. , $$ = arguments
  763. , $$len = $$.length
  764. , mapfn = $$len > 1 ? $$[1] : undefined
  765. , mapping = mapfn !== undefined
  766. , index = 0
  767. , iterFn = getIterFn(O)
  768. , length, result, step, iterator;
  769. if(mapping)mapfn = ctx(mapfn, $$len > 2 ? $$[2] : undefined, 2);
  770. // if object isn't iterable or it's array with default iterator - use simple case
  771. if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){
  772. for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){
  773. result[index] = mapping ? call(iterator, mapfn, [step.value, index], true) : step.value;
  774. }
  775. } else {
  776. length = toLength(O.length);
  777. for(result = new C(length); length > index; index++){
  778. result[index] = mapping ? mapfn(O[index], index) : O[index];
  779. }
  780. }
  781. result.length = index;
  782. return result;
  783. }
  784. });
  785.  
  786.  
  787. /***/ },
  788. /* 3 */
  789. /***/ function(module, exports, __webpack_require__) {
  790.  
  791. // optional / simple context binding
  792. var aFunction = __webpack_require__(4);
  793. module.exports = function(fn, that, length){
  794. aFunction(fn);
  795. if(that === undefined)return fn;
  796. switch(length){
  797. case 1: return function(a){
  798. return fn.call(that, a);
  799. };
  800. case 2: return function(a, b){
  801. return fn.call(that, a, b);
  802. };
  803. case 3: return function(a, b, c){
  804. return fn.call(that, a, b, c);
  805. };
  806. }
  807. return function(/* ...args */){
  808. return fn.apply(that, arguments);
  809. };
  810. };
  811.  
  812. /***/ },
  813. /* 4 */
  814. /***/ function(module, exports) {
  815.  
  816. module.exports = function(it){
  817. if(typeof it != 'function')throw TypeError(it + ' is not a function!');
  818. return it;
  819. };
  820.  
  821. /***/ },
  822. /* 5 */
  823. /***/ function(module, exports, __webpack_require__) {
  824.  
  825. var global = __webpack_require__(6)
  826. , core = __webpack_require__(7)
  827. , hide = __webpack_require__(8)
  828. , redefine = __webpack_require__(13)
  829. , ctx = __webpack_require__(3)
  830. , PROTOTYPE = 'prototype';
  831.  
  832. var $export = function(type, name, source){
  833. var IS_FORCED = type & $export.F
  834. , IS_GLOBAL = type & $export.G
  835. , IS_STATIC = type & $export.S
  836. , IS_PROTO = type & $export.P
  837. , IS_BIND = type & $export.B
  838. , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]
  839. , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
  840. , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {})
  841. , key, own, out, exp;
  842. if(IS_GLOBAL)source = name;
  843. for(key in source){
  844. // contains in native
  845. own = !IS_FORCED && target && key in target;
  846. // export native or passed
  847. out = (own ? target : source)[key];
  848. // bind timers to global for call from export context
  849. exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
  850. // extend global
  851. if(target && !own)redefine(target, key, out);
  852. // export
  853. if(exports[key] != out)hide(exports, key, exp);
  854. if(IS_PROTO && expProto[key] != out)expProto[key] = out;
  855. }
  856. };
  857. global.core = core;
  858. // type bitmap
  859. $export.F = 1; // forced
  860. $export.G = 2; // global
  861. $export.S = 4; // static
  862. $export.P = 8; // proto
  863. $export.B = 16; // bind
  864. $export.W = 32; // wrap
  865. module.exports = $export;
  866.  
  867. /***/ },
  868. /* 6 */
  869. /***/ function(module, exports) {
  870.  
  871. // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
  872. var global = module.exports = typeof window != 'undefined' && window.Math == Math
  873. ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
  874. if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
  875.  
  876. /***/ },
  877. /* 7 */
  878. /***/ function(module, exports) {
  879.  
  880. var core = module.exports = {version: '1.2.6'};
  881. if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
  882.  
  883. /***/ },
  884. /* 8 */
  885. /***/ function(module, exports, __webpack_require__) {
  886.  
  887. var $ = __webpack_require__(9)
  888. , createDesc = __webpack_require__(10);
  889. module.exports = __webpack_require__(11) ? function(object, key, value){
  890. return $.setDesc(object, key, createDesc(1, value));
  891. } : function(object, key, value){
  892. object[key] = value;
  893. return object;
  894. };
  895.  
  896. /***/ },
  897. /* 9 */
  898. /***/ function(module, exports) {
  899.  
  900. var $Object = Object;
  901. module.exports = {
  902. create: $Object.create,
  903. getProto: $Object.getPrototypeOf,
  904. isEnum: {}.propertyIsEnumerable,
  905. getDesc: $Object.getOwnPropertyDescriptor,
  906. setDesc: $Object.defineProperty,
  907. setDescs: $Object.defineProperties,
  908. getKeys: $Object.keys,
  909. getNames: $Object.getOwnPropertyNames,
  910. getSymbols: $Object.getOwnPropertySymbols,
  911. each: [].forEach
  912. };
  913.  
  914. /***/ },
  915. /* 10 */
  916. /***/ function(module, exports) {
  917.  
  918. module.exports = function(bitmap, value){
  919. return {
  920. enumerable : !(bitmap & 1),
  921. configurable: !(bitmap & 2),
  922. writable : !(bitmap & 4),
  923. value : value
  924. };
  925. };
  926.  
  927. /***/ },
  928. /* 11 */
  929. /***/ function(module, exports, __webpack_require__) {
  930.  
  931. // Thank's IE8 for his funny defineProperty
  932. module.exports = !__webpack_require__(12)(function(){
  933. return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
  934. });
  935.  
  936. /***/ },
  937. /* 12 */
  938. /***/ function(module, exports) {
  939.  
  940. module.exports = function(exec){
  941. try {
  942. return !!exec();
  943. } catch(e){
  944. return true;
  945. }
  946. };
  947.  
  948. /***/ },
  949. /* 13 */
  950. /***/ function(module, exports, __webpack_require__) {
  951.  
  952. // add fake Function#toString
  953. // for correct work wrapped methods / constructors with methods like LoDash isNative
  954. var global = __webpack_require__(6)
  955. , hide = __webpack_require__(8)
  956. , SRC = __webpack_require__(14)('src')
  957. , TO_STRING = 'toString'
  958. , $toString = Function[TO_STRING]
  959. , TPL = ('' + $toString).split(TO_STRING);
  960.  
  961. __webpack_require__(7).inspectSource = function(it){
  962. return $toString.call(it);
  963. };
  964.  
  965. (module.exports = function(O, key, val, safe){
  966. if(typeof val == 'function'){
  967. val.hasOwnProperty(SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  968. val.hasOwnProperty('name') || hide(val, 'name', key);
  969. }
  970. if(O === global){
  971. O[key] = val;
  972. } else {
  973. if(!safe)delete O[key];
  974. hide(O, key, val);
  975. }
  976. })(Function.prototype, TO_STRING, function toString(){
  977. return typeof this == 'function' && this[SRC] || $toString.call(this);
  978. });
  979.  
  980. /***/ },
  981. /* 14 */
  982. /***/ function(module, exports) {
  983.  
  984. var id = 0
  985. , px = Math.random();
  986. module.exports = function(key){
  987. return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
  988. };
  989.  
  990. /***/ },
  991. /* 15 */
  992. /***/ function(module, exports, __webpack_require__) {
  993.  
  994. // 7.1.13 ToObject(argument)
  995. var defined = __webpack_require__(16);
  996. module.exports = function(it){
  997. return Object(defined(it));
  998. };
  999.  
  1000. /***/ },
  1001. /* 16 */
  1002. /***/ function(module, exports) {
  1003.  
  1004. // 7.2.1 RequireObjectCoercible(argument)
  1005. module.exports = function(it){
  1006. if(it == undefined)throw TypeError("Can't call method on " + it);
  1007. return it;
  1008. };
  1009.  
  1010. /***/ },
  1011. /* 17 */
  1012. /***/ function(module, exports, __webpack_require__) {
  1013.  
  1014. // call something on iterator step with safe closing on error
  1015. var anObject = __webpack_require__(18);
  1016. module.exports = function(iterator, fn, value, entries){
  1017. try {
  1018. return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  1019. // 7.4.6 IteratorClose(iterator, completion)
  1020. } catch(e){
  1021. var ret = iterator['return'];
  1022. if(ret !== undefined)anObject(ret.call(iterator));
  1023. throw e;
  1024. }
  1025. };
  1026.  
  1027. /***/ },
  1028. /* 18 */
  1029. /***/ function(module, exports, __webpack_require__) {
  1030.  
  1031. var isObject = __webpack_require__(19);
  1032. module.exports = function(it){
  1033. if(!isObject(it))throw TypeError(it + ' is not an object!');
  1034. return it;
  1035. };
  1036.  
  1037. /***/ },
  1038. /* 19 */
  1039. /***/ function(module, exports) {
  1040.  
  1041. module.exports = function(it){
  1042. return typeof it === 'object' ? it !== null : typeof it === 'function';
  1043. };
  1044.  
  1045. /***/ },
  1046. /* 20 */
  1047. /***/ function(module, exports, __webpack_require__) {
  1048.  
  1049. // check on default Array iterator
  1050. var Iterators = __webpack_require__(21)
  1051. , ITERATOR = __webpack_require__(22)('iterator')
  1052. , ArrayProto = Array.prototype;
  1053.  
  1054. module.exports = function(it){
  1055. return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
  1056. };
  1057.  
  1058. /***/ },
  1059. /* 21 */
  1060. /***/ function(module, exports) {
  1061.  
  1062. module.exports = {};
  1063.  
  1064. /***/ },
  1065. /* 22 */
  1066. /***/ function(module, exports, __webpack_require__) {
  1067.  
  1068. var store = __webpack_require__(23)('wks')
  1069. , uid = __webpack_require__(14)
  1070. , Symbol = __webpack_require__(6).Symbol;
  1071. module.exports = function(name){
  1072. return store[name] || (store[name] =
  1073. Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));
  1074. };
  1075.  
  1076. /***/ },
  1077. /* 23 */
  1078. /***/ function(module, exports, __webpack_require__) {
  1079.  
  1080. var global = __webpack_require__(6)
  1081. , SHARED = '__core-js_shared__'
  1082. , store = global[SHARED] || (global[SHARED] = {});
  1083. module.exports = function(key){
  1084. return store[key] || (store[key] = {});
  1085. };
  1086.  
  1087. /***/ },
  1088. /* 24 */
  1089. /***/ function(module, exports, __webpack_require__) {
  1090.  
  1091. // 7.1.15 ToLength
  1092. var toInteger = __webpack_require__(25)
  1093. , min = Math.min;
  1094. module.exports = function(it){
  1095. return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
  1096. };
  1097.  
  1098. /***/ },
  1099. /* 25 */
  1100. /***/ function(module, exports) {
  1101.  
  1102. // 7.1.4 ToInteger
  1103. var ceil = Math.ceil
  1104. , floor = Math.floor;
  1105. module.exports = function(it){
  1106. return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
  1107. };
  1108.  
  1109. /***/ },
  1110. /* 26 */
  1111. /***/ function(module, exports, __webpack_require__) {
  1112.  
  1113. var classof = __webpack_require__(27)
  1114. , ITERATOR = __webpack_require__(22)('iterator')
  1115. , Iterators = __webpack_require__(21);
  1116. module.exports = __webpack_require__(7).getIteratorMethod = function(it){
  1117. if(it != undefined)return it[ITERATOR]
  1118. || it['@@iterator']
  1119. || Iterators[classof(it)];
  1120. };
  1121.  
  1122. /***/ },
  1123. /* 27 */
  1124. /***/ function(module, exports, __webpack_require__) {
  1125.  
  1126. // getting tag from 19.1.3.6 Object.prototype.toString()
  1127. var cof = __webpack_require__(28)
  1128. , TAG = __webpack_require__(22)('toStringTag')
  1129. // ES3 wrong here
  1130. , ARG = cof(function(){ return arguments; }()) == 'Arguments';
  1131.  
  1132. module.exports = function(it){
  1133. var O, T, B;
  1134. return it === undefined ? 'Undefined' : it === null ? 'Null'
  1135. // @@toStringTag case
  1136. : typeof (T = (O = Object(it))[TAG]) == 'string' ? T
  1137. // builtinTag case
  1138. : ARG ? cof(O)
  1139. // ES3 arguments fallback
  1140. : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
  1141. };
  1142.  
  1143. /***/ },
  1144. /* 28 */
  1145. /***/ function(module, exports) {
  1146.  
  1147. var toString = {}.toString;
  1148.  
  1149. module.exports = function(it){
  1150. return toString.call(it).slice(8, -1);
  1151. };
  1152.  
  1153. /***/ },
  1154. /* 29 */
  1155. /***/ function(module, exports, __webpack_require__) {
  1156.  
  1157. var ITERATOR = __webpack_require__(22)('iterator')
  1158. , SAFE_CLOSING = false;
  1159.  
  1160. try {
  1161. var riter = [7][ITERATOR]();
  1162. riter['return'] = function(){ SAFE_CLOSING = true; };
  1163. Array.from(riter, function(){ throw 2; });
  1164. } catch(e){ /* empty */ }
  1165.  
  1166. module.exports = function(exec, skipClosing){
  1167. if(!skipClosing && !SAFE_CLOSING)return false;
  1168. var safe = false;
  1169. try {
  1170. var arr = [7]
  1171. , iter = arr[ITERATOR]();
  1172. iter.next = function(){ safe = true; };
  1173. arr[ITERATOR] = function(){ return iter; };
  1174. exec(arr);
  1175. } catch(e){ /* empty */ }
  1176. return safe;
  1177. };
  1178.  
  1179. /***/ },
  1180. /* 30 */
  1181. /***/ function(module, exports, __webpack_require__) {
  1182.  
  1183. // 19.1.3.1 Object.assign(target, source)
  1184. var $export = __webpack_require__(5);
  1185.  
  1186. $export($export.S + $export.F, 'Object', {assign: __webpack_require__(31)});
  1187.  
  1188. /***/ },
  1189. /* 31 */
  1190. /***/ function(module, exports, __webpack_require__) {
  1191.  
  1192. // 19.1.2.1 Object.assign(target, source, ...)
  1193. var $ = __webpack_require__(9)
  1194. , toObject = __webpack_require__(15)
  1195. , IObject = __webpack_require__(32);
  1196.  
  1197. // should work with symbols and should have deterministic property order (V8 bug)
  1198. module.exports = __webpack_require__(12)(function(){
  1199. var a = Object.assign
  1200. , A = {}
  1201. , B = {}
  1202. , S = Symbol()
  1203. , K = 'abcdefghijklmnopqrst';
  1204. A[S] = 7;
  1205. K.split('').forEach(function(k){ B[k] = k; });
  1206. return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K;
  1207. }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
  1208. var T = toObject(target)
  1209. , $$ = arguments
  1210. , $$len = $$.length
  1211. , index = 1
  1212. , getKeys = $.getKeys
  1213. , getSymbols = $.getSymbols
  1214. , isEnum = $.isEnum;
  1215. while($$len > index){
  1216. var S = IObject($$[index++])
  1217. , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
  1218. , length = keys.length
  1219. , j = 0
  1220. , key;
  1221. while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
  1222. }
  1223. return T;
  1224. } : Object.assign;
  1225.  
  1226. /***/ },
  1227. /* 32 */
  1228. /***/ function(module, exports, __webpack_require__) {
  1229.  
  1230. // fallback for non-array-like ES3 and non-enumerable old V8 strings
  1231. var cof = __webpack_require__(28);
  1232. module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
  1233. return cof(it) == 'String' ? it.split('') : Object(it);
  1234. };
  1235.  
  1236. /***/ },
  1237. /* 33 */
  1238. /***/ function(module, exports) {
  1239.  
  1240. "use strict";
  1241.  
  1242. Object.defineProperty(exports, "__esModule", {
  1243. value: true
  1244. });
  1245. /**
  1246. * Created by axetroy on 5/8/16.
  1247. */
  1248. var svg = "\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"14\" height=\"14\" viewBox=\"0 0 200 200\" version=\"1.1\" style=\"\n vertical-align: sub;\n\">\n<g class=\"transform-group\">\n <g transform=\"scale(0.1953125, 0.1953125)\">\n <path d=\"M822.809088 510.318592q0-91.994112-49.711104-168.56064l-430.829568 430.258176q78.280704 50.853888 169.703424 50.853888 63.424512 0 120.849408-24.855552t99.136512-66.567168 66.281472-99.707904 24.569856-121.4208zm-570.820608 170.846208l431.40096-430.829568q-77.13792-51.996672-171.4176-51.996672-84.566016 0-155.990016 41.711616t-113.135616 113.707008-41.711616 156.561408q0 92.565504 50.853888 170.846208zm698.812416-170.846208q0 89.708544-34.854912 171.4176t-93.422592 140.562432-139.99104 93.708288-170.560512 34.854912-170.560512-34.854912-139.99104-93.708288-93.422592-140.562432-34.854912-171.4176 34.854912-171.131904 93.422592-140.276736 139.99104-93.708288 170.560512-34.854912 170.560512 34.854912 139.99104 93.708288 93.422592 140.276736 34.854912 171.131904z\" fill=\"#272636\"></path>\n </g>\n </g>\n</svg>\n";
  1249.  
  1250. exports.default = svg;
  1251.  
  1252. /***/ },
  1253. /* 34 */
  1254. /***/ function(module, exports, __webpack_require__) {
  1255.  
  1256. 'use strict';
  1257.  
  1258. Object.defineProperty(exports, "__esModule", {
  1259. value: true
  1260. });
  1261.  
  1262. var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
  1263.  
  1264. var _createClass = function () { 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, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**
  1265. * Created by axetroy on 5/10/16.
  1266. */
  1267.  
  1268. var _jqLite = __webpack_require__(1);
  1269.  
  1270. var _jqLite2 = _interopRequireDefault(_jqLite);
  1271.  
  1272. var _formatDate = __webpack_require__(35);
  1273.  
  1274. var _formatDate2 = _interopRequireDefault(_formatDate);
  1275.  
  1276. var _common = __webpack_require__(36);
  1277.  
  1278. var _common2 = _interopRequireDefault(_common);
  1279.  
  1280. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  1281.  
  1282. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1283.  
  1284. var Panel = function () {
  1285. function Panel() {
  1286. _classCallCheck(this, Panel);
  1287. }
  1288.  
  1289. _createClass(Panel, [{
  1290. key: 'create',
  1291. value: function create() {
  1292. if ((0, _jqLite2.default)('#block-mask').length) return;
  1293. var root = document.createElement('div');
  1294.  
  1295. this.$mask = (0, _jqLite2.default)(root.cloneNode(false)).attr('id', 'block-mask');
  1296. this.$panel = (0, _jqLite2.default)(root.cloneNode(false)).attr('id', 'block-panel').html(__webpack_require__(37));
  1297.  
  1298. this.$mask.append(this.$panel);
  1299.  
  1300. this.$menu = this.$panel.find('.block-menu ul li');
  1301. this.$session = this.$panel.find('.block-content .session');
  1302. this.$config = this.$session.eq(0);
  1303. this.$block = this.$session.eq(1);
  1304. this.$list = this.$session.eq(2);
  1305.  
  1306. this.init();
  1307. this.link();
  1308.  
  1309. document.documentElement.appendChild(this.$mask[0]);
  1310. return this;
  1311. }
  1312. }, {
  1313. key: 'remove',
  1314. value: function remove() {
  1315. this.$mask.remove();
  1316. }
  1317. }, {
  1318. key: 'link',
  1319. value: function link() {
  1320. var _this2 = this;
  1321.  
  1322. var _this = this;
  1323.  
  1324. // 屏蔽列表的点击事件
  1325. this.$list.click(function (e) {
  1326. var $target = (0, _jqLite2.default)(e.target);
  1327. var index = +$target.attr('list-index');
  1328. var blockID = $target.attr('block-id');
  1329.  
  1330. _this2.$list.find('table>tbody>tr').each(function (ele) {
  1331. if ((0, _jqLite2.default)(ele).find('.block-remove').attr('block-id') === blockID) {
  1332. ele.remove();
  1333. GM_deleteValue(blockID);
  1334. }
  1335. });
  1336. });
  1337.  
  1338. // 控制面板的切换
  1339. this.$menu.click(function (e) {
  1340. var index = (0, _jqLite2.default)(e.target).index;
  1341. _this2.$menu.removeClass('active').eq(index).addClass('active');
  1342. _this2.$session.hide().eq(index).show();
  1343. return false;
  1344. });
  1345.  
  1346. // 点击屏蔽按钮
  1347. // block someone
  1348. this.$block.find('.block-block-submit').click(function (e) {
  1349. var _map = ['id', 'bar', 'reason'].map(function (name) {
  1350. return _this2.$block.find('.block-' + name);
  1351. });
  1352.  
  1353. var _map2 = _slicedToArray(_map, 3);
  1354.  
  1355. var $id = _map2[0];
  1356. var $bar = _map2[1];
  1357. var $reason = _map2[2];
  1358.  
  1359. var _map3 = [$id, $bar, $reason].map(function (input) {
  1360. return input.val();
  1361. });
  1362.  
  1363. var _map4 = _slicedToArray(_map3, 3);
  1364.  
  1365. var id = _map4[0];
  1366. var bar = _map4[1];
  1367. var reason = _map4[2];
  1368.  
  1369.  
  1370. if (!id) return;
  1371. GM_setValue(id, { id: id, bar: bar, reason: reason, date: new Date() });
  1372. $id.val('');
  1373. $reason.val('');
  1374. });
  1375.  
  1376. // 关掉控制面板
  1377. this.$mask.click(function (e) {
  1378. if ((0, _jqLite2.default)(e.target).attr('id') === 'block-mask') _this2.remove();
  1379. });
  1380. }
  1381. }, {
  1382. key: 'init',
  1383. value: function init() {
  1384. this.$menu.eq(0).addClass('active');
  1385. this.$session.hide().eq(0).show();
  1386. this.$panel.find('.block-bar').val(_common2.default.getBarName());
  1387.  
  1388. this.$list.html(function () {
  1389. var GMList = GM_listValues();
  1390. var list = [];
  1391.  
  1392. for (var i = 0; i < GMList.length; i++) {
  1393. list[i] = GM_getValue(GMList[i]);
  1394. }
  1395.  
  1396. var tableStr = '';
  1397.  
  1398. list.forEach(function (v, i) {
  1399. var time = '';
  1400. if (v.date) {
  1401. var date = new Date(v.date);
  1402. time = (0, _formatDate2.default)(date, 'yyyy-MM-dd');
  1403. }
  1404. tableStr += '\n <tr>\n <td>' + v.id + '</td>\n <td>' + v.bar + '</td>\n <td>' + v.reason + '</td>\n <td>' + time + '</td>\n <td>\n <a class="block-remove btn" href="javascript:void(0)" block-id="' + v.id + '" list-index="' + i + '">移除</a>\n </td>\n </tr>\n ';
  1405. });
  1406.  
  1407. return '\n <table>\n <thead>\n <tr>\n <th><b>贴吧ID</b></th>\n <th><b>所在贴吧</b></th>\n <th><b>屏蔽理由</b></th>\n <th><b>屏蔽时间</b></th>\n <th><b>操作</b></th>\n </tr>\n </thead>\n <tbody>\n ' + tableStr + '\n </tbody>\n </table>\n ';
  1408. });
  1409. }
  1410. }]);
  1411.  
  1412. return Panel;
  1413. }();
  1414.  
  1415. exports.default = Panel;
  1416.  
  1417. /***/ },
  1418. /* 35 */
  1419. /***/ function(module, exports) {
  1420.  
  1421. "use strict";
  1422.  
  1423. Object.defineProperty(exports, "__esModule", {
  1424. value: true
  1425. });
  1426. exports.default = formatDate;
  1427. function formatDate(date, fmt) {
  1428. var o = {
  1429. "M+": date.getMonth() + 1, //月份
  1430. "d+": date.getDate(), //日
  1431. "h+": date.getHours(), //小时
  1432. "m+": date.getMinutes(), //分
  1433. "s+": date.getSeconds(), //秒
  1434. "q+": Math.floor((date.getMonth() + 3) / 3), //季度
  1435. "S": date.getMilliseconds() //毫秒
  1436. };
  1437. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  1438. for (var k in o) {
  1439. if (new RegExp("(" + k + ")").test(fmt)) {
  1440. fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
  1441. }
  1442. }
  1443. return fmt;
  1444. };
  1445.  
  1446. /***/ },
  1447. /* 36 */
  1448. /***/ function(module, exports) {
  1449.  
  1450. 'use strict';
  1451.  
  1452. Object.defineProperty(exports, "__esModule", {
  1453. value: true
  1454. });
  1455.  
  1456. var common = {
  1457. // 获取当前所在的位置,是贴吧列表,还是贴吧内容页
  1458.  
  1459. getPosition: function getPosition() {
  1460. var url = location.href;
  1461. var postInside = /.*tieba.baidu.com\/p\/.*/ig;
  1462. var postList = /.*tieba.baidu.com\/(f\?.*|[^p])/ig;
  1463. return postInside.test(url) ? 'post' : postList.test(url) ? 'list' : null;
  1464. },
  1465.  
  1466. // 获取当前页的贴吧名
  1467. getBarName: function getBarName() {
  1468. return $(".card_title_fname").text().trim();
  1469. }
  1470. };
  1471.  
  1472. exports.default = common;
  1473.  
  1474. /***/ },
  1475. /* 37 */
  1476. /***/ function(module, exports) {
  1477.  
  1478. module.exports = "<h2 class=\"block-title\">控制面板</h2>\n<div class=\"block-container\">\n\n <div class=\"block-menu\">\n <ul>\n <li>配置</li>\n <li>屏蔽</li>\n <li>名单</li>\n </ul>\n </div>\n\n <div class=\"block-content\">\n\n <div class=\"session block-config\">\n <h2>暂时没什么可配置的...</h2>\n </div>\n\n <div class=\"session block-block\">\n\n <form style=\"margin: 0 auto;\">\n <div>\n <label>\n *贴吧ID\n </label>\n <input class=\"block-id form-control\" type=\"text\" placeholder=\"贴吧ID\"/>\n </div>\n\n <div>\n <label>\n 屏蔽原因\n </label>\n <input class=\"block-reason form-control\" type=\"text\" placeholder=\"屏蔽原因\"/>\n </div>\n\n <div>\n <label>\n 所在贴吧\n </label>\n <input class=\"block-bar form-control\" type=\"text\" placeholder=\"所在贴吧\" value=\"\"/>\n </div>\n\n <input class=\"block-block-submit btn\" type=\"button\" value=\"提交\"/>\n </form>\n\n </div>\n\n <div class=\"session block-list\">\n </div>\n </div>\n\n <div class=\"block-clear\"></div>\n\n</div>";
  1479.  
  1480. /***/ },
  1481. /* 38 */
  1482. /***/ function(module, exports, __webpack_require__) {
  1483.  
  1484. // style-loader: Adds some css to the DOM by adding a <style> tag
  1485.  
  1486. // load the styles
  1487. var content = __webpack_require__(39);
  1488. if(typeof content === 'string') content = [[module.id, content, '']];
  1489. // add the styles to the DOM
  1490. var update = __webpack_require__(41)(content, {});
  1491. if(content.locals) module.exports = content.locals;
  1492. // Hot Module Replacement
  1493. if(false) {
  1494. // When the styles change, update the <style> tags
  1495. if(!content.locals) {
  1496. module.hot.accept("!!./../../node_modules/css-loader/index.js!./../../node_modules/sass-loader/index.js!./style.scss", function() {
  1497. var newContent = require("!!./../../node_modules/css-loader/index.js!./../../node_modules/sass-loader/index.js!./style.scss");
  1498. if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
  1499. update(newContent);
  1500. });
  1501. }
  1502. // When the module is disposed, remove the <style> tags
  1503. module.hot.dispose(function() { update(); });
  1504. }
  1505.  
  1506. /***/ },
  1507. /* 39 */
  1508. /***/ function(module, exports, __webpack_require__) {
  1509.  
  1510. exports = module.exports = __webpack_require__(40)();
  1511. // imports
  1512.  
  1513.  
  1514. // module
  1515. exports.push([module.id, "@charset \"UTF-8\";\n/** 公共部分 **/\n@font-face {\n font-family: ifont;\n src: url(\"http://at.alicdn.com/t/font_1442373896_4754455.eot?#iefix\") format(\"embedded-opentype\"), url(\"http://at.alicdn.com/t/font_1442373896_4754455.woff\") format(\"woff\"), url(\"http://at.alicdn.com/t/font_1442373896_4754455.ttf\") format(\"truetype\"), url(\"http://at.alicdn.com/t/font_1442373896_4754455.svg#ifont\") format(\"svg\"); }\n\n#block-mask {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 9999999;\n width: 100%;\n height: 100%;\n background: rgba(45, 45, 45, 0.6);\n margin: 0;\n padding: 0;\n overflow: hidden;\n font-size: 14px;\n line-height: 1.42857143em;\n /** 非公共部分 **/ }\n #block-mask * {\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n #block-mask label {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: 700; }\n #block-mask .btn {\n display: inline-block;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n margin-top: 5px;\n margin-bottom: 5px;\n color: #333;\n background-color: #fff;\n border-color: #333; }\n #block-mask .form-group {\n margin-bottom: 15px; }\n #block-mask .form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; }\n #block-mask .form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }\n #block-mask p {\n color: #fff;\n line-height: 3em; }\n #block-mask a {\n color: #555;\n text-decoration: none; }\n #block-mask .block-clear {\n visibility: hidden;\n font-size: 0;\n width: 0;\n height: 0;\n clear: both; }\n #block-mask ul {\n list-style: none; }\n #block-mask ul li {\n color: #555; }\n #block-mask #block-panel {\n position: relative;\n top: 100px;\n width: 800px;\n height: auto;\n margin: 0 auto;\n background: #fff;\n z-index: inherit; }\n #block-mask #block-panel .block-title {\n text-align: center;\n line-height: 36px;\n font-size: 1.6em;\n border-bottom: 1px solid #ccc; }\n #block-mask #block-panel .block-container {\n margin-top: 10px;\n padding-bottom: 10px; }\n #block-mask #block-panel .block-menu {\n width: 10%;\n float: left; }\n #block-mask #block-panel .block-menu ul {\n text-align: center; }\n #block-mask #block-panel .block-menu ul li {\n line-height: 4em;\n cursor: pointer; }\n #block-mask #block-panel .block-menu ul li.active {\n background: #6B6B6B;\n color: #fff; }\n #block-mask #block-panel .block-content {\n width: 90%;\n padding-left: 20px;\n float: left;\n max-height: 400px;\n overflow-y: auto; }\n #block-mask #block-panel .block-content .block-list table {\n width: 100%; }\n #block-mask #block-panel .block-content .block-list table tr {\n text-align: center;\n line-height: 24px; }\n\na.block-icon {\n display: inline; }\n", ""]);
  1516.  
  1517. // exports
  1518.  
  1519.  
  1520. /***/ },
  1521. /* 40 */
  1522. /***/ function(module, exports) {
  1523.  
  1524. /*
  1525. MIT License http://www.opensource.org/licenses/mit-license.php
  1526. Author Tobias Koppers @sokra
  1527. */
  1528. // css base code, injected by the css-loader
  1529. module.exports = function() {
  1530. var list = [];
  1531.  
  1532. // return the list of modules as css string
  1533. list.toString = function toString() {
  1534. var result = [];
  1535. for(var i = 0; i < this.length; i++) {
  1536. var item = this[i];
  1537. if(item[2]) {
  1538. result.push("@media " + item[2] + "{" + item[1] + "}");
  1539. } else {
  1540. result.push(item[1]);
  1541. }
  1542. }
  1543. return result.join("");
  1544. };
  1545.  
  1546. // import a list of modules into the list
  1547. list.i = function(modules, mediaQuery) {
  1548. if(typeof modules === "string")
  1549. modules = [[null, modules, ""]];
  1550. var alreadyImportedModules = {};
  1551. for(var i = 0; i < this.length; i++) {
  1552. var id = this[i][0];
  1553. if(typeof id === "number")
  1554. alreadyImportedModules[id] = true;
  1555. }
  1556. for(i = 0; i < modules.length; i++) {
  1557. var item = modules[i];
  1558. // skip already imported module
  1559. // this implementation is not 100% perfect for weird media query combinations
  1560. // when a module is imported multiple times with different media queries.
  1561. // I hope this will never occur (Hey this way we have smaller bundles)
  1562. if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
  1563. if(mediaQuery && !item[2]) {
  1564. item[2] = mediaQuery;
  1565. } else if(mediaQuery) {
  1566. item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
  1567. }
  1568. list.push(item);
  1569. }
  1570. }
  1571. };
  1572. return list;
  1573. };
  1574.  
  1575.  
  1576. /***/ },
  1577. /* 41 */
  1578. /***/ function(module, exports, __webpack_require__) {
  1579.  
  1580. /*
  1581. MIT License http://www.opensource.org/licenses/mit-license.php
  1582. Author Tobias Koppers @sokra
  1583. */
  1584. var stylesInDom = {},
  1585. memoize = function(fn) {
  1586. var memo;
  1587. return function () {
  1588. if (typeof memo === "undefined") memo = fn.apply(this, arguments);
  1589. return memo;
  1590. };
  1591. },
  1592. isOldIE = memoize(function() {
  1593. return /msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase());
  1594. }),
  1595. getHeadElement = memoize(function () {
  1596. return document.head || document.getElementsByTagName("head")[0];
  1597. }),
  1598. singletonElement = null,
  1599. singletonCounter = 0,
  1600. styleElementsInsertedAtTop = [];
  1601.  
  1602. module.exports = function(list, options) {
  1603. if(false) {
  1604. if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
  1605. }
  1606.  
  1607. options = options || {};
  1608. // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
  1609. // tags it will allow on a page
  1610. if (typeof options.singleton === "undefined") options.singleton = isOldIE();
  1611.  
  1612. // By default, add <style> tags to the bottom of <head>.
  1613. if (typeof options.insertAt === "undefined") options.insertAt = "bottom";
  1614.  
  1615. var styles = listToStyles(list);
  1616. addStylesToDom(styles, options);
  1617.  
  1618. return function update(newList) {
  1619. var mayRemove = [];
  1620. for(var i = 0; i < styles.length; i++) {
  1621. var item = styles[i];
  1622. var domStyle = stylesInDom[item.id];
  1623. domStyle.refs--;
  1624. mayRemove.push(domStyle);
  1625. }
  1626. if(newList) {
  1627. var newStyles = listToStyles(newList);
  1628. addStylesToDom(newStyles, options);
  1629. }
  1630. for(var i = 0; i < mayRemove.length; i++) {
  1631. var domStyle = mayRemove[i];
  1632. if(domStyle.refs === 0) {
  1633. for(var j = 0; j < domStyle.parts.length; j++)
  1634. domStyle.parts[j]();
  1635. delete stylesInDom[domStyle.id];
  1636. }
  1637. }
  1638. };
  1639. }
  1640.  
  1641. function addStylesToDom(styles, options) {
  1642. for(var i = 0; i < styles.length; i++) {
  1643. var item = styles[i];
  1644. var domStyle = stylesInDom[item.id];
  1645. if(domStyle) {
  1646. domStyle.refs++;
  1647. for(var j = 0; j < domStyle.parts.length; j++) {
  1648. domStyle.parts[j](item.parts[j]);
  1649. }
  1650. for(; j < item.parts.length; j++) {
  1651. domStyle.parts.push(addStyle(item.parts[j], options));
  1652. }
  1653. } else {
  1654. var parts = [];
  1655. for(var j = 0; j < item.parts.length; j++) {
  1656. parts.push(addStyle(item.parts[j], options));
  1657. }
  1658. stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
  1659. }
  1660. }
  1661. }
  1662.  
  1663. function listToStyles(list) {
  1664. var styles = [];
  1665. var newStyles = {};
  1666. for(var i = 0; i < list.length; i++) {
  1667. var item = list[i];
  1668. var id = item[0];
  1669. var css = item[1];
  1670. var media = item[2];
  1671. var sourceMap = item[3];
  1672. var part = {css: css, media: media, sourceMap: sourceMap};
  1673. if(!newStyles[id])
  1674. styles.push(newStyles[id] = {id: id, parts: [part]});
  1675. else
  1676. newStyles[id].parts.push(part);
  1677. }
  1678. return styles;
  1679. }
  1680.  
  1681. function insertStyleElement(options, styleElement) {
  1682. var head = getHeadElement();
  1683. var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];
  1684. if (options.insertAt === "top") {
  1685. if(!lastStyleElementInsertedAtTop) {
  1686. head.insertBefore(styleElement, head.firstChild);
  1687. } else if(lastStyleElementInsertedAtTop.nextSibling) {
  1688. head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);
  1689. } else {
  1690. head.appendChild(styleElement);
  1691. }
  1692. styleElementsInsertedAtTop.push(styleElement);
  1693. } else if (options.insertAt === "bottom") {
  1694. head.appendChild(styleElement);
  1695. } else {
  1696. throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
  1697. }
  1698. }
  1699.  
  1700. function removeStyleElement(styleElement) {
  1701. styleElement.parentNode.removeChild(styleElement);
  1702. var idx = styleElementsInsertedAtTop.indexOf(styleElement);
  1703. if(idx >= 0) {
  1704. styleElementsInsertedAtTop.splice(idx, 1);
  1705. }
  1706. }
  1707.  
  1708. function createStyleElement(options) {
  1709. var styleElement = document.createElement("style");
  1710. styleElement.type = "text/css";
  1711. insertStyleElement(options, styleElement);
  1712. return styleElement;
  1713. }
  1714.  
  1715. function createLinkElement(options) {
  1716. var linkElement = document.createElement("link");
  1717. linkElement.rel = "stylesheet";
  1718. insertStyleElement(options, linkElement);
  1719. return linkElement;
  1720. }
  1721.  
  1722. function addStyle(obj, options) {
  1723. var styleElement, update, remove;
  1724.  
  1725. if (options.singleton) {
  1726. var styleIndex = singletonCounter++;
  1727. styleElement = singletonElement || (singletonElement = createStyleElement(options));
  1728. update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);
  1729. remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);
  1730. } else if(obj.sourceMap &&
  1731. typeof URL === "function" &&
  1732. typeof URL.createObjectURL === "function" &&
  1733. typeof URL.revokeObjectURL === "function" &&
  1734. typeof Blob === "function" &&
  1735. typeof btoa === "function") {
  1736. styleElement = createLinkElement(options);
  1737. update = updateLink.bind(null, styleElement);
  1738. remove = function() {
  1739. removeStyleElement(styleElement);
  1740. if(styleElement.href)
  1741. URL.revokeObjectURL(styleElement.href);
  1742. };
  1743. } else {
  1744. styleElement = createStyleElement(options);
  1745. update = applyToTag.bind(null, styleElement);
  1746. remove = function() {
  1747. removeStyleElement(styleElement);
  1748. };
  1749. }
  1750.  
  1751. update(obj);
  1752.  
  1753. return function updateStyle(newObj) {
  1754. if(newObj) {
  1755. if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)
  1756. return;
  1757. update(obj = newObj);
  1758. } else {
  1759. remove();
  1760. }
  1761. };
  1762. }
  1763.  
  1764. var replaceText = (function () {
  1765. var textStore = [];
  1766.  
  1767. return function (index, replacement) {
  1768. textStore[index] = replacement;
  1769. return textStore.filter(Boolean).join('\n');
  1770. };
  1771. })();
  1772.  
  1773. function applyToSingletonTag(styleElement, index, remove, obj) {
  1774. var css = remove ? "" : obj.css;
  1775.  
  1776. if (styleElement.styleSheet) {
  1777. styleElement.styleSheet.cssText = replaceText(index, css);
  1778. } else {
  1779. var cssNode = document.createTextNode(css);
  1780. var childNodes = styleElement.childNodes;
  1781. if (childNodes[index]) styleElement.removeChild(childNodes[index]);
  1782. if (childNodes.length) {
  1783. styleElement.insertBefore(cssNode, childNodes[index]);
  1784. } else {
  1785. styleElement.appendChild(cssNode);
  1786. }
  1787. }
  1788. }
  1789.  
  1790. function applyToTag(styleElement, obj) {
  1791. var css = obj.css;
  1792. var media = obj.media;
  1793.  
  1794. if(media) {
  1795. styleElement.setAttribute("media", media)
  1796. }
  1797.  
  1798. if(styleElement.styleSheet) {
  1799. styleElement.styleSheet.cssText = css;
  1800. } else {
  1801. while(styleElement.firstChild) {
  1802. styleElement.removeChild(styleElement.firstChild);
  1803. }
  1804. styleElement.appendChild(document.createTextNode(css));
  1805. }
  1806. }
  1807.  
  1808. function updateLink(linkElement, obj) {
  1809. var css = obj.css;
  1810. var sourceMap = obj.sourceMap;
  1811.  
  1812. if(sourceMap) {
  1813. // http://stackoverflow.com/a/26603875
  1814. css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
  1815. }
  1816.  
  1817. var blob = new Blob([css], { type: "text/css" });
  1818.  
  1819. var oldSrc = linkElement.href;
  1820.  
  1821. linkElement.href = URL.createObjectURL(blob);
  1822.  
  1823. if(oldSrc)
  1824. URL.revokeObjectURL(oldSrc);
  1825. }
  1826.  
  1827.  
  1828. /***/ }
  1829. /******/ ]);

QingJ © 2025

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