forked from QianJianTech/LaTeXLive
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmessageboard.bundle.min.js
381 lines (302 loc) · 102 KB
/
messageboard.bundle.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./js/messageboard/main.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./css/footer.css":
/*!************************!*\
!*** ./css/footer.css ***!
\************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var api = __webpack_require__(/*! ../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../node_modules/css-loader/dist/cjs.js!./footer.css */ \"./node_modules/css-loader/dist/cjs.js!./css/footer.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack:///./css/footer.css?");
/***/ }),
/***/ "./css/log.css":
/*!*********************!*\
!*** ./css/log.css ***!
\*********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var api = __webpack_require__(/*! ../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../node_modules/css-loader/dist/cjs.js!./log.css */ \"./node_modules/css-loader/dist/cjs.js!./css/log.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack:///./css/log.css?");
/***/ }),
/***/ "./css/messageboard.css":
/*!******************************!*\
!*** ./css/messageboard.css ***!
\******************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var api = __webpack_require__(/*! ../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../node_modules/css-loader/dist/cjs.js!./messageboard.css */ \"./node_modules/css-loader/dist/cjs.js!./css/messageboard.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack:///./css/messageboard.css?");
/***/ }),
/***/ "./css/navbar.css":
/*!************************!*\
!*** ./css/navbar.css ***!
\************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var api = __webpack_require__(/*! ../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../node_modules/css-loader/dist/cjs.js!./navbar.css */ \"./node_modules/css-loader/dist/cjs.js!./css/navbar.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack:///./css/navbar.css?");
/***/ }),
/***/ "./css/style.css":
/*!***********************!*\
!*** ./css/style.css ***!
\***********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var api = __webpack_require__(/*! ../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../node_modules/css-loader/dist/cjs.js!./style.css */ \"./node_modules/css-loader/dist/cjs.js!./css/style.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack:///./css/style.css?");
/***/ }),
/***/ "./js/common/item.js":
/*!***************************!*\
!*** ./js/common/item.js ***!
\***************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar setStyle = exports.setStyle = {\n buttongroup_primary: function buttongroup_primary(btn) {\n $(btn).click(function () {\n $(\".btn-filter\").attr(\"class\", \"btn btn-outline-primary btn-filter\");\n $(this).attr(\"class\", \"btn btn-outline-primary btn-filter myactive\");\n });\n }\n};\n\nvar UrlParams = exports.UrlParams = {\n get: function get(key) {\n var query = window.location.search.substring(1);\n var vars = query.split(\"&\");\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split(\"=\");\n if (pair[0] == key) {\n return pair[1];\n }\n }\n return false;\n }\n};\n\nvar StringDeal = exports.StringDeal = {\n dealHide_Mail: function dealHide_Mail(mail) {\n if (mail == \"\") {\n return \"未绑定\";\n }\n // var reg = /^(.*).{4}$/;\n // mail = mail.replace(reg, \"$1****\");\n // return mail;\n if (String(mail).indexOf(\"@\") > 0) {\n var str = mail.split(\"@\"),\n _s = \"\";\n if (str[0].length > 3) {\n for (var i = 0; i < str[0].length - 3; i++) {\n _s += \"*\";\n }\n }\n var new_email = str[0].substr(0, 3) + _s + \"@\" + str[1];\n return new_email;\n }\n },\n dealHide_Tel: function dealHide_Tel(tel) {\n if (tel == \"\") {\n return \"未绑定\";\n }\n tel = tel.replace(/(\\d{3})\\d{4}(\\d{4})/, \"$1****$2\");\n return tel;\n },\n toMD5: function toMD5(str) {\n return hex_md5(str);\n }\n};\n\nvar LoadComplete = exports.LoadComplete = {\n closeLoadingMask: function closeLoadingMask() {\n setTimeout(function () {\n document.getElementById(\"loading\").style.display = \"none\";\n }, 200);\n }\n};\n\nvar Mask = exports.Mask = {\n init: function init() {\n //定义等待遮罩的样式\n var styleNode = document.createElement(\"style\");\n styleNode.id = \"style_ajaxCircleMask\";\n styleNode.setAttribute(\"type\", \"text/css\");\n styleNode.innerHTML = \"#back_ajaxCircleMask{background-color: #000;height: 100%;width: 100%;position: fixed;z-index: 1059;margin-top: 0;top: 0;opacity: 0.1;} #ajaxCircleMask{width:160px;height:200px;position: absolute;top:40%;left:50%;line-height:56px;color:#fff;font-size:15px;background: #000 url(../img/ajaxCircle.gif) no-repeat center center;background-size: 90px;opacity: 0.5;z-index:1060;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);}\";\n var headNode = document.querySelector(\"head\");\n headNode.appendChild(styleNode);\n\n var mask = document.createElement(\"div\");\n mask.id = \"ajaxCircleMask\";\n mask.innerHTML = \"<div style='text-align:center;margin-top:140px;color:#ccc;font-size:16px;'>正在处理</div>\";\n var back = document.createElement(\"div\");\n back.id = \"back_ajaxCircleMask\";\n var bodyNode = document.querySelector(\"body\");\n bodyNode.appendChild(back);\n bodyNode.appendChild(mask);\n },\n show: function show() {\n var mask = document.getElementById(\"ajaxCircleMask\");\n var back = document.getElementById(\"back_ajaxCircleMask\");\n if (mask) {\n mask.style.display = \"block\";\n back.style.display = \"block\";\n } else {\n Mask.init();\n document.getElementById(\"ajaxCircleMask\").style.display = \"block\";\n document.getElementById(\"back_ajaxCircleMask\").style.display = \"block\";\n }\n },\n hide: function hide() {\n var mask = document.getElementById(\"ajaxCircleMask\");\n var back = document.getElementById(\"back_ajaxCircleMask\");\n if (mask) {\n mask.style.display = \"none\";\n back.style.display = \"none\";\n }\n }\n};\n\nvar MaskOpacity = exports.MaskOpacity = {\n init: function init() {\n //定义等待遮罩的样式\n var styleNode = document.createElement(\"style\");\n styleNode.id = \"style_ajaxOpacityMask\";\n styleNode.setAttribute(\"type\", \"text/css\");\n styleNode.innerHTML = \"#back_ajaxOpacityMask{background-color: #fff;height: 100%;width: 100%;position: fixed;z-index: 1058;margin-top: 0;top: 0;opacity: 0.01;}\";\n var headNode = document.querySelector(\"head\");\n headNode.appendChild(styleNode);\n\n var back = document.createElement(\"div\");\n back.id = \"back_ajaxOpacityMask\";\n var bodyNode = document.querySelector(\"body\");\n bodyNode.appendChild(back);\n },\n show: function show() {\n var back = document.getElementById(\"back_ajaxOpacityMask\");\n if (back) {\n back.style.display = \"block\";\n } else {\n MaskOpacity.init();\n document.getElementById(\"back_ajaxOpacityMask\").style.display = \"block\";\n }\n },\n hide: function hide() {\n var back = document.getElementById(\"back_ajaxOpacityMask\");\n if (back) {\n back.style.display = \"none\";\n }\n }\n};\n\nvar Performance = exports.Performance = {\n timer_debounce: \"\",\n /**\r\n * 防抖-延迟执行回调函数\r\n * @param {*} fun 回调函数\r\n * @param {*} delay 延迟回调时间间隔(毫秒)\r\n * @returns {Function}\r\n */\n debounce: function debounce(fun, delay) {\n return function () {\n clearTimeout(Performance.timer_debounce);\n Performance.timer_debounce = setTimeout(function () {\n fun();\n }, delay);\n };\n },\n /**\r\n * 防抖-延迟执行回调函数(异步)\r\n * @param {*} fun 回调函数\r\n * @param {*} delay 延迟回调时间间隔(毫秒)\r\n * @returns {Function}\r\n */\n debounceAsync: function debounceAsync(fun, delay) {\n return new Promise(function (resolve, reject) {\n clearTimeout(Performance.timer_debounce);\n Performance.timer_debounce = setTimeout(function () {\n fun().then(resolve, reject);\n }, delay);\n });\n }\n};\n\n//# sourceURL=webpack:///./js/common/item.js?");
/***/ }),
/***/ "./js/common/navbar.js":
/*!*****************************!*\
!*** ./js/common/navbar.js ***!
\*****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar navbar = exports.navbar = {\n obj_api: {},\n pageType: \"home\",\n currentTheme: \"default\",\n init: function init(opt) {\n navbar.obj_api = opt.obj_api;\n navbar.pageType = opt.pageType;\n navbar.init_background();\n navbar.init_navLink();\n navbar.bindEvent();\n },\n\n /** 初始化导航栏背景 */\n init_background: function init_background() {\n $(\".navbar\").css(\"background-color\", \"rgba(0,0,0,0.05)\");\n $(\".nav-link\").css(\"color\", \"#000000\");\n },\n\n /** 初始化选中链接样式 */\n init_navLink: function init_navLink() {\n if (navbar.pageType != \"home\") {\n var el = navbar.getNavLinkElement();\n $(el).css(\"background-color\", \"#ddd\");\n }\n },\n\n /** 绑定事件 */\n bindEvent: function bindEvent() {\n $(\"#a-logout\").click(function () {\n navbar.obj_api.removeMyTokenFromLocal();\n window.location.href = \"../home\";\n });\n },\n\n /** 获取当前导航栏选中链接元素 */\n getNavLinkElement: function getNavLinkElement() {\n switch (navbar.pageType) {\n case \"readme\":\n return document.getElementById(\"btn_help\");\n case \"update\":\n return document.getElementById(\"btn_update\");\n case \"login\":\n return document.getElementById(\"btn_href_login\");\n case \"personal\":\n return document.getElementById(\"a-login-ed\");\n }\n },\n\n /** 获取当前导航栏选中链接样式 */\n getStyleOfNavLink: function getStyleOfNavLink() {\n if (navbar.pageType != \"home\") {\n return [{ key: \"background-color\", val: \"#ddd\" }, { key: \"border\", val: \"none\" }];\n }\n switch (navbar.currentTheme) {\n case \"default\":\n return [{ key: \"background-color\", val: \"#ddd\" }, { key: \"border\", val: \"none\" }];\n case \"dark\":\n return [{ key: \"background-color\", val: \"#363636\" }, { key: \"border\", val: \"none\" }];\n case \"blue\":\n return [{ key: \"background-color\", val: \"#9cc2e2\" }, { key: \"border\", val: \"none\" }];\n case \"pink\":\n return [{ key: \"background-color\", val: \"#ddb9dd\" }, { key: \"border\", val: \"none\" }];\n case \"simple\":\n return [{ key: \"background-color\", val: \"#fff\" }, { key: \"border\", val: \"1px solid #000\" }, { key: \"border-radius\", val: \"2px\" }];\n }\n },\n\n /** 获取当前主题 */\n getCurrentTheme: function getCurrentTheme() {\n var keyname = \"setting\";\n if (localStorage.hasOwnProperty(keyname)) {\n var localdata_str = localStorage.getItem(keyname);\n var localdata_obj = JSON.parse(localdata_str);\n navbar.currentTheme = localdata_obj.theme;\n }\n }\n};\n\n//# sourceURL=webpack:///./js/common/navbar.js?");
/***/ }),
/***/ "./js/login/verify.js":
/*!****************************!*\
!*** ./js/login/verify.js ***!
\****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar LoginVerify = exports.LoginVerify = {\n loginPath: \"../login\",\n obj_api: {},\n /** 初始化\r\n * @param {*} opt\r\n */\n init: function init(opt) {\n LoginVerify.obj_api = opt.obj_api;\n },\n\n /** 验证是否已经登录\r\n * @param {*} isRedirect 是否重定向至登录界面\r\n * @returns\r\n */\n isLogined: function isLogined(isRedirect) {\n var pro = new Promise(function (resolve, reject) {\n if (isRedirect == undefined || isRedirect == \"undefined\") {\n isRedirect = false;\n }\n var _mytoken = LoginVerify.obj_api.getMyTokenFromLocal();\n if (_mytoken == false) {\n if (isRedirect) {\n window.location.href = LoginVerify.loginPath;\n reject();\n } else {\n LoginVerify.showNavLogin();\n reject();\n }\n } else {\n LoginVerify.obj_api.loginByMyToken().then(function (re) {\n if (re.result == 0) {\n LoginVerify.showNavPersonal();\n var userinfo = JSON.parse(re.detail.userinfo);\n LoginVerify.setNicknameAndPortrait(userinfo.Portrait, userinfo.Nickname);\n resolve(re.detail);\n } else {\n if (isRedirect) {\n window.location.href = LoginVerify.loginPath;\n reject(re);\n } else {\n LoginVerify.showNavLogin();\n reject(re);\n }\n }\n });\n }\n });\n return pro;\n },\n\n /** 获得地址栏携带的参数\r\n * @param {*} key\r\n * @returns\r\n */\n getUrlParm: function getUrlParm(key) {\n var query = window.location.search.substring(1);\n var vars = query.split(\"&\");\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split(\"=\");\n if (pair[0] == key) {\n return pair[1];\n }\n }\n return false;\n },\n\n /** 使导航栏登陆区域呈现[待登录]状态 */\n showNavLogin: function showNavLogin() {\n $(\"#wrap_btn_href_login\").css(\"display\", \"block\");\n $(\"#wrap_btn_href_personal\").css(\"display\", \"none\");\n },\n\n /** 使导航栏登陆区域呈现[已登录-个人信息]状态 */\n showNavPersonal: function showNavPersonal() {\n $(\"#wrap_btn_href_login\").css(\"display\", \"none\");\n $(\"#wrap_btn_href_personal\").css(\"display\", \"block\");\n },\n\n /** 根据后台数据渲染头像和昵称\r\n * @param {*} src\r\n * @param {*} nick\r\n */\n setNicknameAndPortrait: function setNicknameAndPortrait(src, nick) {\n document.getElementById(\"img-nav-portrait\").src = src;\n document.getElementById(\"span-nav-portrait\").innerHTML = nick;\n }\n};\n\n//# sourceURL=webpack:///./js/login/verify.js?");
/***/ }),
/***/ "./js/messageboard/main.js":
/*!*********************************!*\
!*** ./js/messageboard/main.js ***!
\*********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\n__webpack_require__(/*! ../../css/style.css */ \"./css/style.css\");\n\n__webpack_require__(/*! ../../css/navbar.css */ \"./css/navbar.css\");\n\n__webpack_require__(/*! ../../css/messageboard.css */ \"./css/messageboard.css\");\n\n__webpack_require__(/*! ../../css/log.css */ \"./css/log.css\");\n\n__webpack_require__(/*! ../../css/footer.css */ \"./css/footer.css\");\n\nvar _navbar = __webpack_require__(/*! ../common/navbar.js */ \"./js/common/navbar.js\");\n\nvar _item = __webpack_require__(/*! ../common/item.js */ \"./js/common/item.js\");\n\nvar _verify = __webpack_require__(/*! ../login/verify.js */ \"./js/login/verify.js\");\n\nvar xss = __webpack_require__(/*! xss */ \"./node_modules/xss/lib/index.js\");\n\n$(function () {\n messageboard.init();\n _verify.LoginVerify.isLogined();\n _item.setStyle.buttongroup_primary(\".btn-filter\");\n $(\"#btn_writemessage\").click(function () {});\n});\n\nvar messageboard = {\n init: function init() {\n messageboard.init_wangeditor();\n // theme_except_latex.init_navLink(\"#btn_messageboard\");\n },\n init_wangeditor: function init_wangeditor() {\n var E = window.wangEditor;\n var editor = new E(\"#wrap_writemessage\");\n editor.config.height = 150;\n editor.config.menus = [\"head\", \"bold\", \"fontSize\", \"fontName\", \"italic\", \"underline\", \"strikeThrough\", \"indent\", \"lineHeight\", \"foreColor\", \"backColor\",\n // 'link',\n \"list\",\n // 'todo',\n \"justify\", \"quote\",\n // \"emoticon\",\n // \"image\",\n // 'video',\n // 'table',\n // 'code',\n \"splitLine\", \"undo\", \"redo\"];\n editor.config.showLinkImg = false;\n editor.config.placeholder = \"请输入您的留言\";\n editor.config.uploadImgShowBase64 = true;\n\n editor.create();\n },\n getWangeditorHtml: function getWangeditorHtml(edit) {\n var html = xss(edit.txt.html());\n console.log(html);\n edit.txt.append(html);\n },\n Messges: {\n getMessageFromAPI: function getMessageFromAPI() {}\n }\n};\n\n//# sourceURL=webpack:///./js/messageboard/main.js?");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./css/footer.css":
/*!**************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js!./css/footer.css ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"\\r\\n#footer {\\r\\n margin-top: 2rem;\\r\\n padding: 1rem;\\r\\n background-color: rgba(0, 0, 0, 0.05);\\r\\n min-width: 278px;\\r\\n }\\r\\n #footer .contractme a {\\r\\n color: #000;\\r\\n font-size: 1.2rem;\\r\\n text-decoration: none;\\r\\n margin: auto 1rem auto 1rem;\\r\\n opacity: 0.4;\\r\\n }\\r\\n #footer .contractme a img {\\r\\n width: 1.2rem;\\r\\n height: 1.2rem;\\r\\n }\\r\\n #wrap_wechat {\\r\\n display: inline-block;\\r\\n position: relative;\\r\\n }\\r\\n #eqcode_wechat {\\r\\n visibility: hidden;\\r\\n position: absolute;\\r\\n top: -10rem;\\r\\n left: -3.2rem;\\r\\n background-color: #fff;\\r\\n border: 1px solid rgba(0, 0, 0, 0.15);\\r\\n border-radius: 0.25rem;\\r\\n }\\r\\n #eqcode_wechat img {\\r\\n width: 10rem;\\r\\n height: 10rem;\\r\\n -webkit-user-select: auto;\\r\\n -moz-user-select: auto;\\r\\n -khtml-user-select: auto;\\r\\n -ms-user-select: auto;\\r\\n }\\r\\n #footer .copyright {\\r\\n opacity: 0.5;\\r\\n margin-top: 1rem;\\r\\n }\\r\\n #footer .copyright p,\\r\\n #footer .copyright span {\\r\\n font-size: 0.8rem;\\r\\n margin-bottom: 0.2rem;\\r\\n }\\r\\n #footer .copyright a {\\r\\n color: black;\\r\\n }\\r\\n #footer .copyright a img {\\r\\n width: 1rem;\\r\\n height: 1rem;\\r\\n }\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./css/footer.css?./node_modules/css-loader/dist/cjs.js");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./css/log.css":
/*!***********************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js!./css/log.css ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".log{\\r\\n margin-top: 2rem;\\r\\n}\\r\\n.log-ver{\\r\\n float: left;\\r\\n}\\r\\n.log-date{\\r\\n float: right;\\r\\n display: inline;\\r\\n position: relative;\\r\\n /* top:0.5rem; */\\r\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./css/log.css?./node_modules/css-loader/dist/cjs.js");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./css/messageboard.css":
/*!********************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js!./css/messageboard.css ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"#wrap_message_filter {\\r\\n float: right;\\r\\n}\\r\\n\\r\\n.wrap_messages{\\r\\n margin-top: 2rem;\\r\\n}\\r\\n\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./css/messageboard.css?./node_modules/css-loader/dist/cjs.js");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./css/navbar.css":
/*!**************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js!./css/navbar.css ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"#navbar-header {\\r\\n position: sticky;\\r\\n top: 0;\\r\\n}\\r\\n\\r\\n#img-nav-portrait {\\r\\n width: 20px;\\r\\n border-radius: 50%;\\r\\n margin-right: 6px;\\r\\n}\\r\\n#ver_h1 {\\r\\n padding: 0px 4px;\\r\\n font-size: 0.1rem;\\r\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./css/navbar.css?./node_modules/css-loader/dist/cjs.js");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./css/style.css":
/*!*************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js!./css/style.css ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"@charset \\\"UTF-8\\\";\\r\\n/**\\r\\n * @Copyright: Copyright © 2019\\r\\n * @Created on 2019-12-22\\r\\n * @Author:Panda_YueTao\\r\\n * @Version 1.15\\r\\n * @Title: 妈叔出品-LaTeX公式编辑器样式表\\r\\n */\\r\\n\\r\\n/* #region textarea禁止拖动改变大小 */\\r\\ntextarea {\\r\\n resize: none;\\r\\n cursor: text;\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/* #region 图片不可圈选、宽度100% */\\r\\nimg {\\r\\n width: 100%;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -khtml-user-select: none;\\r\\n -ms-user-select: none;\\r\\n}\\r\\n.card {\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -khtml-user-select: none;\\r\\n -ms-user-select: none;\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/* #region 禁用bootstrap点击按钮时边框高亮样式 */\\r\\n.btn:focus,\\r\\n.btn:active:focus,\\r\\n.btn.active:focus,\\r\\n.btn.focus,\\r\\n.btn:active.focus,\\r\\n.btn.active.focus {\\r\\n outline: none;\\r\\n box-shadow: none;\\r\\n}\\r\\n\\r\\n.btn-group .btn-outline-primary.myactive {\\r\\n background-color: #007bff;\\r\\n color: #fff;\\r\\n outline: none;\\r\\n box-shadow: none;\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/* #region placeholder字体颜色 */\\r\\n.form-control::-webkit-input-placeholder {\\r\\n color: #ddd;\\r\\n opacity: 1;\\r\\n}\\r\\n\\r\\n.form-control::-moz-placeholder {\\r\\n color: #ddd;\\r\\n opacity: 1;\\r\\n}\\r\\n\\r\\n.form-control:-ms-input-placeholder {\\r\\n color: #ddd;\\r\\n opacity: 1;\\r\\n}\\r\\n\\r\\n.form-control::-ms-input-placeholder {\\r\\n color: #ddd;\\r\\n opacity: 1;\\r\\n}\\r\\n\\r\\n.form-control::placeholder {\\r\\n color: #ddd;\\r\\n opacity: 1;\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/* #region 字体图标向左偏移 */\\r\\ni {\\r\\n margin: auto 0.4rem auto 0.1rem;\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/* #region 禁用bootstrap焦点时边框高亮样式 */\\r\\n.form-control:focus {\\r\\n color: #495057;\\r\\n background-color: #fff;\\r\\n border-color: #ced4da;\\r\\n outline: 0;\\r\\n box-shadow: 0 0 0 0rem rgba(0, 123, 255, 0.25);\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/* #region 对齐 */\\r\\n.c {\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n.l {\\r\\n text-align: left;\\r\\n}\\r\\n\\r\\n.r {\\r\\n text-align: right;\\r\\n}\\r\\n\\r\\n.fleft {\\r\\n float: left;\\r\\n}\\r\\n\\r\\n.fright {\\r\\n float: right;\\r\\n}\\r\\n\\r\\n/* #endregion */\\r\\n\\r\\n/* #region tooltip泡泡 */\\r\\n.tippy-box[data-theme~=\\\"mythem\\\"] {\\r\\n background-color: #000;\\r\\n color: #fff;\\r\\n background-color: rgba(0, 0, 0, 0.7);\\r\\n}\\r\\n.tippy-box[data-theme~=\\\"mythem\\\"][data-placement^=\\\"top\\\"] > .tippy-arrow::before {\\r\\n border-right-color: #000;\\r\\n opacity: 0.7;\\r\\n}\\r\\n.tippy-box[data-theme~=\\\"mythem\\\"][data-placement^=\\\"right\\\"] > .tippy-arrow::before {\\r\\n border-right-color: #000;\\r\\n opacity: 0.7;\\r\\n}\\r\\n.tippy-box[data-theme~=\\\"mythem\\\"][data-placement^=\\\"bottom\\\"] > .tippy-arrow::before {\\r\\n border-right-color: #000;\\r\\n opacity: 0.7;\\r\\n}\\r\\n.tippy-box[data-theme~=\\\"mythem\\\"][data-placement^=\\\"left\\\"] > .tippy-arrow::before {\\r\\n border-right-color: #000;\\r\\n opacity: 0.7;\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/* #region 弹出框 */\\r\\n.qback {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n background: rgba(0, 0, 0, 0);\\r\\n position: fixed;\\r\\n top: 0;\\r\\n left: 0;\\r\\n z-index: 9999999999999999999999;\\r\\n}\\r\\n.alertBox {\\r\\n width: 452px;\\r\\n height: auto;\\r\\n padding: 0 15px 20px 15px;\\r\\n box-sizing: border-box;\\r\\n background: #fff;\\r\\n border-radius: 8px;\\r\\n position: relative;\\r\\n top: 50%;\\r\\n left: 50%;\\r\\n margin: -167px 0 0 -226px;\\r\\n box-shadow: 4px 4px 4px 1px rgba(0, 0, 0, 0.2);\\r\\n border: 1px solid rgba(0, 0, 0, 0.05);\\r\\n}\\r\\n.alertHead {\\r\\n width: 100%;\\r\\n height: 45px;\\r\\n border-bottom: 1px solid #99bafa;\\r\\n font-size: 18px;\\r\\n color: #333;\\r\\n line-height: 45px;\\r\\n text-align: left;\\r\\n}\\r\\n.alertMes {\\r\\n width: 100%;\\r\\n height: auto;\\r\\n overflow: hidden;\\r\\n padding: 25px 40px 35px;\\r\\n text-align: center;\\r\\n font-size: 16px;\\r\\n color: #333;\\r\\n box-sizing: border-box;\\r\\n line-height: 28px;\\r\\n}\\r\\n.alertBtn {\\r\\n display: block;\\r\\n width: 100px;\\r\\n height: 34px;\\r\\n line-height: 34px;\\r\\n background-color: #007bff;\\r\\n cursor: pointer;\\r\\n font-size: 14px;\\r\\n color: #fff;\\r\\n border-radius: 4px;\\r\\n border: 1px solid transparent;\\r\\n margin: 0 auto;\\r\\n text-align: center;\\r\\n}\\r\\n.ConBtn {\\r\\n display: inline-block;\\r\\n width: 100px;\\r\\n height: 34px;\\r\\n font-size: 15px;\\r\\n text-align: center;\\r\\n margin-left: 84px;\\r\\n margin-right: 47px;\\r\\n padding-bottom: 0.2rem auto;\\r\\n}\\r\\n.cancel {\\r\\n display: inline-block;\\r\\n width: 100px;\\r\\n height: 34px;\\r\\n font-size: 15px;\\r\\n text-align: center;\\r\\n padding-bottom: 0.2rem auto;\\r\\n}\\r\\n.ToastBox {\\r\\n width: 452px;\\r\\n height: auto;\\r\\n padding: 15px 20px;\\r\\n text-align: center;\\r\\n /* background: rgba(0, 0, 0, 0.4); */\\r\\n /* color: #fff; */\\r\\n font-size: 16px;\\r\\n border-radius: 8px;\\r\\n line-height: 24px;\\r\\n position: relative;\\r\\n top: 50%;\\r\\n left: 50%;\\r\\n margin: 0px 0px 0px -226px;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -khtml-user-select: none;\\r\\n -ms-user-select: none;\\r\\n}\\r\\n.ToastBox-success {\\r\\n color: #155724;\\r\\n background-color: #d4edda;\\r\\n border-color: #c3e6cb;\\r\\n}\\r\\n.ToastBox-danger {\\r\\n color: #721c24;\\r\\n background-color: #f8d7da;\\r\\n border-color: #f5c6cb;\\r\\n}\\r\\n.ToastBox-warning {\\r\\n color: #856404;\\r\\n background-color: #fff3cd;\\r\\n border-color: #ffeeba;\\r\\n}\\r\\n.ToastBox-info {\\r\\n color: #0c5460;\\r\\n background-color: #d1ecf1;\\r\\n border-color: #bee5eb;\\r\\n}\\r\\n\\r\\n/* #endregion */\\r\\n\\r\\n/* #region 输入框垂直居中 */\\r\\ninput {\\r\\n vertical-align: middle;\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/* #region 去除type=number的选择按钮 */\\r\\ninput::-webkit-outer-spin-button,\\r\\ninput::-webkit-inner-spin-button {\\r\\n -webkit-appearance: none;\\r\\n}\\r\\ninput[type=\\\"number\\\"] {\\r\\n -moz-appearance: textfield;\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/* #region 去除bootstrap按钮按下不弹起的特效 */\\r\\n.btn-default:focus,\\r\\nbtn-default.focus {\\r\\n color: #333;\\r\\n background-color: #fff;\\r\\n border-color: #ccc;\\r\\n}\\r\\n.btn-default:hover {\\r\\n color: #333;\\r\\n background-color: #e6e6e6;\\r\\n border-color: #adadad;\\r\\n}\\r\\n.btn-primary:focus,\\r\\n.btn-primary.focus {\\r\\n color: #fff;\\r\\n background-color: #337ab7;\\r\\n border-color: #2e6da4;\\r\\n}\\r\\n.btn-primary:hover {\\r\\n color: #fff;\\r\\n background-color: #286090;\\r\\n border-color: #204d74;\\r\\n}\\r\\n.btn-success:focus,\\r\\n.btn-success.focus {\\r\\n color: #fff;\\r\\n background-color: #5cb85c;\\r\\n border-color: #4cae4c;\\r\\n}\\r\\n.btn-success:hover {\\r\\n color: #fff;\\r\\n background-color: #449d44;\\r\\n border-color: #398439;\\r\\n}\\r\\n.btn-info:focus,\\r\\n.btn-info.focus {\\r\\n color: #fff;\\r\\n background-color: #5bc0de;\\r\\n border-color: #46b8da;\\r\\n}\\r\\n.btn-info:hover {\\r\\n color: #fff;\\r\\n background-color: #31b0d5;\\r\\n border-color: #269abc;\\r\\n}\\r\\n.btn-warning:focus,\\r\\n.btn-warning.focus {\\r\\n color: #fff;\\r\\n background-color: #f0ad4e;\\r\\n border-color: #eea236;\\r\\n}\\r\\n.btn-warning:hover {\\r\\n color: #fff;\\r\\n background-color: #ec971f;\\r\\n border-color: #d58512;\\r\\n}\\r\\n.btn-danger:focus,\\r\\n.btn-danger.focus {\\r\\n color: #fff;\\r\\n background-color: #d9534f;\\r\\n border-color: #d43f3a;\\r\\n}\\r\\n.btn-danger:hover {\\r\\n color: #fff;\\r\\n background-color: #c9302c;\\r\\n border-color: #ac2925;\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/* #region 改变bootstrap默认card-header高度 */\\r\\n.card-header {\\r\\n height: 3rem;\\r\\n}\\r\\n/* #endregion */\\r\\n\\r\\n/*TODO:特事特办:解决右上角菜单被遮挡的问题*/\\r\\n#navbar-header {\\r\\n z-index: 9;\\r\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./css/style.css?./node_modules/css-loader/dist/cjs.js");
/***/ }),
/***/ "./node_modules/css-loader/dist/runtime/api.js":
/*!*****************************************************!*\
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}\n\n//# sourceURL=webpack:///./node_modules/css-loader/dist/runtime/api.js?");
/***/ }),
/***/ "./node_modules/cssfilter/lib/css.js":
/*!*******************************************!*\
!*** ./node_modules/cssfilter/lib/css.js ***!
\*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("/**\n * cssfilter\n *\n * @author 老雷<[email protected]>\n */\n\nvar DEFAULT = __webpack_require__(/*! ./default */ \"./node_modules/cssfilter/lib/default.js\");\nvar parseStyle = __webpack_require__(/*! ./parser */ \"./node_modules/cssfilter/lib/parser.js\");\nvar _ = __webpack_require__(/*! ./util */ \"./node_modules/cssfilter/lib/util.js\");\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n\n\n//# sourceURL=webpack:///./node_modules/cssfilter/lib/css.js?");
/***/ }),
/***/ "./node_modules/cssfilter/lib/default.js":
/*!***********************************************!*\
!*** ./node_modules/cssfilter/lib/default.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("/**\n * cssfilter\n *\n * @author 老雷<[email protected]>\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\n whiteList['align-content'] = false; // default: auto\n whiteList['align-items'] = false; // default: auto\n whiteList['align-self'] = false; // default: auto\n whiteList['alignment-adjust'] = false; // default: auto\n whiteList['alignment-baseline'] = false; // default: baseline\n whiteList['all'] = false; // default: depending on individual properties\n whiteList['anchor-point'] = false; // default: none\n whiteList['animation'] = false; // default: depending on individual properties\n whiteList['animation-delay'] = false; // default: 0\n whiteList['animation-direction'] = false; // default: normal\n whiteList['animation-duration'] = false; // default: 0\n whiteList['animation-fill-mode'] = false; // default: none\n whiteList['animation-iteration-count'] = false; // default: 1\n whiteList['animation-name'] = false; // default: none\n whiteList['animation-play-state'] = false; // default: running\n whiteList['animation-timing-function'] = false; // default: ease\n whiteList['azimuth'] = false; // default: center\n whiteList['backface-visibility'] = false; // default: visible\n whiteList['background'] = true; // default: depending on individual properties\n whiteList['background-attachment'] = true; // default: scroll\n whiteList['background-clip'] = true; // default: border-box\n whiteList['background-color'] = true; // default: transparent\n whiteList['background-image'] = true; // default: none\n whiteList['background-origin'] = true; // default: padding-box\n whiteList['background-position'] = true; // default: 0% 0%\n whiteList['background-repeat'] = true; // default: repeat\n whiteList['background-size'] = true; // default: auto\n whiteList['baseline-shift'] = false; // default: baseline\n whiteList['binding'] = false; // default: none\n whiteList['bleed'] = false; // default: 6pt\n whiteList['bookmark-label'] = false; // default: content()\n whiteList['bookmark-level'] = false; // default: none\n whiteList['bookmark-state'] = false; // default: open\n whiteList['border'] = true; // default: depending on individual properties\n whiteList['border-bottom'] = true; // default: depending on individual properties\n whiteList['border-bottom-color'] = true; // default: current color\n whiteList['border-bottom-left-radius'] = true; // default: 0\n whiteList['border-bottom-right-radius'] = true; // default: 0\n whiteList['border-bottom-style'] = true; // default: none\n whiteList['border-bottom-width'] = true; // default: medium\n whiteList['border-collapse'] = true; // default: separate\n whiteList['border-color'] = true; // default: depending on individual properties\n whiteList['border-image'] = true; // default: none\n whiteList['border-image-outset'] = true; // default: 0\n whiteList['border-image-repeat'] = true; // default: stretch\n whiteList['border-image-slice'] = true; // default: 100%\n whiteList['border-image-source'] = true; // default: none\n whiteList['border-image-width'] = true; // default: 1\n whiteList['border-left'] = true; // default: depending on individual properties\n whiteList['border-left-color'] = true; // default: current color\n whiteList['border-left-style'] = true; // default: none\n whiteList['border-left-width'] = true; // default: medium\n whiteList['border-radius'] = true; // default: 0\n whiteList['border-right'] = true; // default: depending on individual properties\n whiteList['border-right-color'] = true; // default: current color\n whiteList['border-right-style'] = true; // default: none\n whiteList['border-right-width'] = true; // default: medium\n whiteList['border-spacing'] = true; // default: 0\n whiteList['border-style'] = true; // default: depending on individual properties\n whiteList['border-top'] = true; // default: depending on individual properties\n whiteList['border-top-color'] = true; // default: current color\n whiteList['border-top-left-radius'] = true; // default: 0\n whiteList['border-top-right-radius'] = true; // default: 0\n whiteList['border-top-style'] = true; // default: none\n whiteList['border-top-width'] = true; // default: medium\n whiteList['border-width'] = true; // default: depending on individual properties\n whiteList['bottom'] = false; // default: auto\n whiteList['box-decoration-break'] = true; // default: slice\n whiteList['box-shadow'] = true; // default: none\n whiteList['box-sizing'] = true; // default: content-box\n whiteList['box-snap'] = true; // default: none\n whiteList['box-suppress'] = true; // default: show\n whiteList['break-after'] = true; // default: auto\n whiteList['break-before'] = true; // default: auto\n whiteList['break-inside'] = true; // default: auto\n whiteList['caption-side'] = false; // default: top\n whiteList['chains'] = false; // default: none\n whiteList['clear'] = true; // default: none\n whiteList['clip'] = false; // default: auto\n whiteList['clip-path'] = false; // default: none\n whiteList['clip-rule'] = false; // default: nonzero\n whiteList['color'] = true; // default: implementation dependent\n whiteList['color-interpolation-filters'] = true; // default: auto\n whiteList['column-count'] = false; // default: auto\n whiteList['column-fill'] = false; // default: balance\n whiteList['column-gap'] = false; // default: normal\n whiteList['column-rule'] = false; // default: depending on individual properties\n whiteList['column-rule-color'] = false; // default: current color\n whiteList['column-rule-style'] = false; // default: medium\n whiteList['column-rule-width'] = false; // default: medium\n whiteList['column-span'] = false; // default: none\n whiteList['column-width'] = false; // default: auto\n whiteList['columns'] = false; // default: depending on individual properties\n whiteList['contain'] = false; // default: none\n whiteList['content'] = false; // default: normal\n whiteList['counter-increment'] = false; // default: none\n whiteList['counter-reset'] = false; // default: none\n whiteList['counter-set'] = false; // default: none\n whiteList['crop'] = false; // default: auto\n whiteList['cue'] = false; // default: depending on individual properties\n whiteList['cue-after'] = false; // default: none\n whiteList['cue-before'] = false; // default: none\n whiteList['cursor'] = false; // default: auto\n whiteList['direction'] = false; // default: ltr\n whiteList['display'] = true; // default: depending on individual properties\n whiteList['display-inside'] = true; // default: auto\n whiteList['display-list'] = true; // default: none\n whiteList['display-outside'] = true; // default: inline-level\n whiteList['dominant-baseline'] = false; // default: auto\n whiteList['elevation'] = false; // default: level\n whiteList['empty-cells'] = false; // default: show\n whiteList['filter'] = false; // default: none\n whiteList['flex'] = false; // default: depending on individual properties\n whiteList['flex-basis'] = false; // default: auto\n whiteList['flex-direction'] = false; // default: row\n whiteList['flex-flow'] = false; // default: depending on individual properties\n whiteList['flex-grow'] = false; // default: 0\n whiteList['flex-shrink'] = false; // default: 1\n whiteList['flex-wrap'] = false; // default: nowrap\n whiteList['float'] = false; // default: none\n whiteList['float-offset'] = false; // default: 0 0\n whiteList['flood-color'] = false; // default: black\n whiteList['flood-opacity'] = false; // default: 1\n whiteList['flow-from'] = false; // default: none\n whiteList['flow-into'] = false; // default: none\n whiteList['font'] = true; // default: depending on individual properties\n whiteList['font-family'] = true; // default: implementation dependent\n whiteList['font-feature-settings'] = true; // default: normal\n whiteList['font-kerning'] = true; // default: auto\n whiteList['font-language-override'] = true; // default: normal\n whiteList['font-size'] = true; // default: medium\n whiteList['font-size-adjust'] = true; // default: none\n whiteList['font-stretch'] = true; // default: normal\n whiteList['font-style'] = true; // default: normal\n whiteList['font-synthesis'] = true; // default: weight style\n whiteList['font-variant'] = true; // default: normal\n whiteList['font-variant-alternates'] = true; // default: normal\n whiteList['font-variant-caps'] = true; // default: normal\n whiteList['font-variant-east-asian'] = true; // default: normal\n whiteList['font-variant-ligatures'] = true; // default: normal\n whiteList['font-variant-numeric'] = true; // default: normal\n whiteList['font-variant-position'] = true; // default: normal\n whiteList['font-weight'] = true; // default: normal\n whiteList['grid'] = false; // default: depending on individual properties\n whiteList['grid-area'] = false; // default: depending on individual properties\n whiteList['grid-auto-columns'] = false; // default: auto\n whiteList['grid-auto-flow'] = false; // default: none\n whiteList['grid-auto-rows'] = false; // default: auto\n whiteList['grid-column'] = false; // default: depending on individual properties\n whiteList['grid-column-end'] = false; // default: auto\n whiteList['grid-column-start'] = false; // default: auto\n whiteList['grid-row'] = false; // default: depending on individual properties\n whiteList['grid-row-end'] = false; // default: auto\n whiteList['grid-row-start'] = false; // default: auto\n whiteList['grid-template'] = false; // default: depending on individual properties\n whiteList['grid-template-areas'] = false; // default: none\n whiteList['grid-template-columns'] = false; // default: none\n whiteList['grid-template-rows'] = false; // default: none\n whiteList['hanging-punctuation'] = false; // default: none\n whiteList['height'] = true; // default: auto\n whiteList['hyphens'] = false; // default: manual\n whiteList['icon'] = false; // default: auto\n whiteList['image-orientation'] = false; // default: auto\n whiteList['image-resolution'] = false; // default: normal\n whiteList['ime-mode'] = false; // default: auto\n whiteList['initial-letters'] = false; // default: normal\n whiteList['inline-box-align'] = false; // default: last\n whiteList['justify-content'] = false; // default: auto\n whiteList['justify-items'] = false; // default: auto\n whiteList['justify-self'] = false; // default: auto\n whiteList['left'] = false; // default: auto\n whiteList['letter-spacing'] = true; // default: normal\n whiteList['lighting-color'] = true; // default: white\n whiteList['line-box-contain'] = false; // default: block inline replaced\n whiteList['line-break'] = false; // default: auto\n whiteList['line-grid'] = false; // default: match-parent\n whiteList['line-height'] = false; // default: normal\n whiteList['line-snap'] = false; // default: none\n whiteList['line-stacking'] = false; // default: depending on individual properties\n whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n whiteList['line-stacking-shift'] = false; // default: consider-shifts\n whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n whiteList['list-style'] = true; // default: depending on individual properties\n whiteList['list-style-image'] = true; // default: none\n whiteList['list-style-position'] = true; // default: outside\n whiteList['list-style-type'] = true; // default: disc\n whiteList['margin'] = true; // default: depending on individual properties\n whiteList['margin-bottom'] = true; // default: 0\n whiteList['margin-left'] = true; // default: 0\n whiteList['margin-right'] = true; // default: 0\n whiteList['margin-top'] = true; // default: 0\n whiteList['marker-offset'] = false; // default: auto\n whiteList['marker-side'] = false; // default: list-item\n whiteList['marks'] = false; // default: none\n whiteList['mask'] = false; // default: border-box\n whiteList['mask-box'] = false; // default: see individual properties\n whiteList['mask-box-outset'] = false; // default: 0\n whiteList['mask-box-repeat'] = false; // default: stretch\n whiteList['mask-box-slice'] = false; // default: 0 fill\n whiteList['mask-box-source'] = false; // default: none\n whiteList['mask-box-width'] = false; // default: auto\n whiteList['mask-clip'] = false; // default: border-box\n whiteList['mask-image'] = false; // default: none\n whiteList['mask-origin'] = false; // default: border-box\n whiteList['mask-position'] = false; // default: center\n whiteList['mask-repeat'] = false; // default: no-repeat\n whiteList['mask-size'] = false; // default: border-box\n whiteList['mask-source-type'] = false; // default: auto\n whiteList['mask-type'] = false; // default: luminance\n whiteList['max-height'] = true; // default: none\n whiteList['max-lines'] = false; // default: none\n whiteList['max-width'] = true; // default: none\n whiteList['min-height'] = true; // default: 0\n whiteList['min-width'] = true; // default: 0\n whiteList['move-to'] = false; // default: normal\n whiteList['nav-down'] = false; // default: auto\n whiteList['nav-index'] = false; // default: auto\n whiteList['nav-left'] = false; // default: auto\n whiteList['nav-right'] = false; // default: auto\n whiteList['nav-up'] = false; // default: auto\n whiteList['object-fit'] = false; // default: fill\n whiteList['object-position'] = false; // default: 50% 50%\n whiteList['opacity'] = false; // default: 1\n whiteList['order'] = false; // default: 0\n whiteList['orphans'] = false; // default: 2\n whiteList['outline'] = false; // default: depending on individual properties\n whiteList['outline-color'] = false; // default: invert\n whiteList['outline-offset'] = false; // default: 0\n whiteList['outline-style'] = false; // default: none\n whiteList['outline-width'] = false; // default: medium\n whiteList['overflow'] = false; // default: depending on individual properties\n whiteList['overflow-wrap'] = false; // default: normal\n whiteList['overflow-x'] = false; // default: visible\n whiteList['overflow-y'] = false; // default: visible\n whiteList['padding'] = true; // default: depending on individual properties\n whiteList['padding-bottom'] = true; // default: 0\n whiteList['padding-left'] = true; // default: 0\n whiteList['padding-right'] = true; // default: 0\n whiteList['padding-top'] = true; // default: 0\n whiteList['page'] = false; // default: auto\n whiteList['page-break-after'] = false; // default: auto\n whiteList['page-break-before'] = false; // default: auto\n whiteList['page-break-inside'] = false; // default: auto\n whiteList['page-policy'] = false; // default: start\n whiteList['pause'] = false; // default: implementation dependent\n whiteList['pause-after'] = false; // default: implementation dependent\n whiteList['pause-before'] = false; // default: implementation dependent\n whiteList['perspective'] = false; // default: none\n whiteList['perspective-origin'] = false; // default: 50% 50%\n whiteList['pitch'] = false; // default: medium\n whiteList['pitch-range'] = false; // default: 50\n whiteList['play-during'] = false; // default: auto\n whiteList['position'] = false; // default: static\n whiteList['presentation-level'] = false; // default: 0\n whiteList['quotes'] = false; // default: text\n whiteList['region-fragment'] = false; // default: auto\n whiteList['resize'] = false; // default: none\n whiteList['rest'] = false; // default: depending on individual properties\n whiteList['rest-after'] = false; // default: none\n whiteList['rest-before'] = false; // default: none\n whiteList['richness'] = false; // default: 50\n whiteList['right'] = false; // default: auto\n whiteList['rotation'] = false; // default: 0\n whiteList['rotation-point'] = false; // default: 50% 50%\n whiteList['ruby-align'] = false; // default: auto\n whiteList['ruby-merge'] = false; // default: separate\n whiteList['ruby-position'] = false; // default: before\n whiteList['shape-image-threshold'] = false; // default: 0.0\n whiteList['shape-outside'] = false; // default: none\n whiteList['shape-margin'] = false; // default: 0\n whiteList['size'] = false; // default: auto\n whiteList['speak'] = false; // default: auto\n whiteList['speak-as'] = false; // default: normal\n whiteList['speak-header'] = false; // default: once\n whiteList['speak-numeral'] = false; // default: continuous\n whiteList['speak-punctuation'] = false; // default: none\n whiteList['speech-rate'] = false; // default: medium\n whiteList['stress'] = false; // default: 50\n whiteList['string-set'] = false; // default: none\n whiteList['tab-size'] = false; // default: 8\n whiteList['table-layout'] = false; // default: auto\n whiteList['text-align'] = true; // default: start\n whiteList['text-align-last'] = true; // default: auto\n whiteList['text-combine-upright'] = true; // default: none\n whiteList['text-decoration'] = true; // default: none\n whiteList['text-decoration-color'] = true; // default: currentColor\n whiteList['text-decoration-line'] = true; // default: none\n whiteList['text-decoration-skip'] = true; // default: objects\n whiteList['text-decoration-style'] = true; // default: solid\n whiteList['text-emphasis'] = true; // default: depending on individual properties\n whiteList['text-emphasis-color'] = true; // default: currentColor\n whiteList['text-emphasis-position'] = true; // default: over right\n whiteList['text-emphasis-style'] = true; // default: none\n whiteList['text-height'] = true; // default: auto\n whiteList['text-indent'] = true; // default: 0\n whiteList['text-justify'] = true; // default: auto\n whiteList['text-orientation'] = true; // default: mixed\n whiteList['text-overflow'] = true; // default: clip\n whiteList['text-shadow'] = true; // default: none\n whiteList['text-space-collapse'] = true; // default: collapse\n whiteList['text-transform'] = true; // default: none\n whiteList['text-underline-position'] = true; // default: auto\n whiteList['text-wrap'] = true; // default: normal\n whiteList['top'] = false; // default: auto\n whiteList['transform'] = false; // default: none\n whiteList['transform-origin'] = false; // default: 50% 50% 0\n whiteList['transform-style'] = false; // default: flat\n whiteList['transition'] = false; // default: depending on individual properties\n whiteList['transition-delay'] = false; // default: 0s\n whiteList['transition-duration'] = false; // default: 0s\n whiteList['transition-property'] = false; // default: all\n whiteList['transition-timing-function'] = false; // default: ease\n whiteList['unicode-bidi'] = false; // default: normal\n whiteList['vertical-align'] = false; // default: baseline\n whiteList['visibility'] = false; // default: visible\n whiteList['voice-balance'] = false; // default: center\n whiteList['voice-duration'] = false; // default: auto\n whiteList['voice-family'] = false; // default: implementation dependent\n whiteList['voice-pitch'] = false; // default: medium\n whiteList['voice-range'] = false; // default: medium\n whiteList['voice-rate'] = false; // default: normal\n whiteList['voice-stress'] = false; // default: normal\n whiteList['voice-volume'] = false; // default: medium\n whiteList['volume'] = false; // default: medium\n whiteList['white-space'] = false; // default: normal\n whiteList['widows'] = false; // default: 2\n whiteList['width'] = true; // default: auto\n whiteList['will-change'] = false; // default: auto\n whiteList['word-break'] = true; // default: normal\n whiteList['word-spacing'] = true; // default: normal\n whiteList['word-wrap'] = true; // default: normal\n whiteList['wrap-flow'] = false; // default: auto\n whiteList['wrap-through'] = false; // default: wrap\n whiteList['writing-mode'] = false; // default: horizontal-tb\n whiteList['z-index'] = false; // default: auto\n\n return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n\n\n//# sourceURL=webpack:///./node_modules/cssfilter/lib/default.js?");
/***/ }),
/***/ "./node_modules/cssfilter/lib/index.js":
/*!*********************************************!*\
!*** ./node_modules/cssfilter/lib/index.js ***!
\*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("/**\n * cssfilter\n *\n * @author 老雷<[email protected]>\n */\n\nvar DEFAULT = __webpack_require__(/*! ./default */ \"./node_modules/cssfilter/lib/default.js\");\nvar FilterCSS = __webpack_require__(/*! ./css */ \"./node_modules/cssfilter/lib/css.js\");\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n\n\n//# sourceURL=webpack:///./node_modules/cssfilter/lib/index.js?");
/***/ }),
/***/ "./node_modules/cssfilter/lib/parser.js":
/*!**********************************************!*\
!*** ./node_modules/cssfilter/lib/parser.js ***!
\**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("/**\n * cssfilter\n *\n * @author 老雷<[email protected]>\n */\n\nvar _ = __webpack_require__(/*! ./util */ \"./node_modules/cssfilter/lib/util.js\");\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n\n\n//# sourceURL=webpack:///./node_modules/cssfilter/lib/parser.js?");
/***/ }),
/***/ "./node_modules/cssfilter/lib/util.js":
/*!********************************************!*\
!*** ./node_modules/cssfilter/lib/util.js ***!
\********************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n },\n trimRight: function (str) {\n if (String.prototype.trimRight) {\n return str.trimRight();\n }\n return str.replace(/(\\s*$)/g, '');\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/cssfilter/lib/util.js?");
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
/*!****************************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
\****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?");
/***/ }),
/***/ "./node_modules/xss/lib/default.js":
/*!*****************************************!*\
!*** ./node_modules/xss/lib/default.js ***!
\*****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("/**\n * default settings\n *\n * @author Zongmin Lei<[email protected]>\n */\n\nvar FilterCSS = __webpack_require__(/*! cssfilter */ \"./node_modules/cssfilter/lib/index.js\").FilterCSS;\nvar getDefaultCSSWhiteList = __webpack_require__(/*! cssfilter */ \"./node_modules/cssfilter/lib/index.js\").getDefaultWhiteList;\nvar _ = __webpack_require__(/*! ./util */ \"./node_modules/xss/lib/util.js\");\n\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\"],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n ins: [\"datetime\"],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\", \"height\", \"width\"]\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"<\").replace(REGEXP_GT, \">\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value.substr(0, 11) === \"data:image/\" ||\n value.substr(0, 6) === \"ftp://\" ||\n value.substr(0, 2) === \"./\" ||\n value.substr(0, 3) === \"../\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = /</g;\nvar REGEXP_GT = />/g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /"/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /:?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 = /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 = /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape doube quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \""\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function() {};\n }\n\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\n return {\n onIgnoreTag: function(tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([\n posStart !== false ? posStart : options.position,\n end\n ]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function(html) {\n var rethtml = \"\";\n var lastPos = 0;\n _.forEach(removeList, function(pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n }\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n return html.replace(STRIP_COMMENT_TAG_REGEXP, \"\");\n}\nvar STRIP_COMMENT_TAG_REGEXP = /<!--[\\s\\S]*?-->/g;\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function(char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n\n\n//# sourceURL=webpack:///./node_modules/xss/lib/default.js?");
/***/ }),
/***/ "./node_modules/xss/lib/index.js":
/*!***************************************!*\
!*** ./node_modules/xss/lib/index.js ***!
\***************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("/**\n * xss\n *\n * @author Zongmin Lei<[email protected]>\n */\n\nvar DEFAULT = __webpack_require__(/*! ./default */ \"./node_modules/xss/lib/default.js\");\nvar parser = __webpack_require__(/*! ./parser */ \"./node_modules/xss/lib/parser.js\");\nvar FilterXSS = __webpack_require__(/*! ./xss */ \"./node_modules/xss/lib/xss.js\");\n\n/**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\nfunction filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\nfor (var i in parser) exports[i] = parser[i];\n\n// using `xss` on the browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n return typeof self !== 'undefined' && typeof DedicatedWorkerGlobalScope !== 'undefined' && self instanceof DedicatedWorkerGlobalScope;\n}\nif (isWorkerEnv()) {\n self.filterXSS = module.exports;\n}\n\n\n//# sourceURL=webpack:///./node_modules/xss/lib/index.js?");
/***/ }),
/***/ "./node_modules/xss/lib/parser.js":
/*!****************************************!*\
!*** ./node_modules/xss/lib/parser.js ***!
\****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei<[email protected]>\n */\n\nvar _ = __webpack_require__(/*! ./util */ \"./node_modules/xss/lib/util.js\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. '<a hef=\"#\">'\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n var tagName = html.slice(1, -1);\n } else {\n var tagName = html.slice(1, i + 1);\n }\n tagName = _.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:'<a hef=\"#\">'\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"</\";\n}\n\n/**\n * parse input html and returns processed html\n *\n * @param {String} html\n * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)\n * @param {Function} escapeHtml\n * @return {String}\n */\nfunction parseTag(html, onTag, escapeHtml) {\n \"use strict\";\n\n var rethtml = \"\";\n var lastPos = 0;\n var tagStart = false;\n var quoteStart = false;\n var currentPos = 0;\n var len = html.length;\n var currentTagName = \"\";\n var currentHtml = \"\";\n\n chariterator: for (currentPos = 0; currentPos < len; currentPos++) {\n var c = html.charAt(currentPos);\n if (tagStart === false) {\n if (c === \"<\") {\n tagStart = currentPos;\n continue;\n }\n } else {\n if (quoteStart === false) {\n if (c === \"<\") {\n rethtml += escapeHtml(html.slice(lastPos, currentPos));\n tagStart = currentPos;\n lastPos = currentPos;\n continue;\n }\n if (c === \">\") {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if ((c === '\"' || c === \"'\")) {\n var i = 1;\n var ic = html.charAt(currentPos - i);\n\n while ((ic === \" \") || (ic === \"=\")) {\n if (ic === \"=\") {\n quoteStart = c;\n continue chariterator;\n }\n ic = html.charAt(currentPos - ++i);\n }\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < html.length) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9_:\\.\\-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n \"use strict\";\n\n var lastPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n continue;\n }\n if (tmpName !== false) {\n if (\n i === lastPos &&\n (c === '\"' || c === \"'\") &&\n html.charAt(i - 1) === \"=\"\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.trim(html.slice(lastPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n\n\n//# sourceURL=webpack:///./node_modules/xss/lib/parser.js?");
/***/ }),
/***/ "./node_modules/xss/lib/util.js":
/*!**************************************!*\
!*** ./node_modules/xss/lib/util.js ***!
\**************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = {\n indexOf: function(arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function(arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function(str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function(str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/xss/lib/util.js?");
/***/ }),
/***/ "./node_modules/xss/lib/xss.js":
/*!*************************************!*\
!*** ./node_modules/xss/lib/xss.js ***!
\*************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("/**\n * filter xss\n *\n * @author Zongmin Lei<[email protected]>\n */\n\nvar FilterCSS = __webpack_require__(/*! cssfilter */ \"./node_modules/cssfilter/lib/index.js\").FilterCSS;\nvar DEFAULT = __webpack_require__(/*! ./default */ \"./node_modules/xss/lib/default.js\");\nvar parser = __webpack_require__(/*! ./parser */ \"./node_modules/xss/lib/parser.js\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = __webpack_require__(/*! ./util */ \"./node_modules/xss/lib/util.js\");\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n * - {String} html\n * - {Boolean} closing\n */\nfunction getAttrs(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n return {\n html: \"\",\n closing: html[html.length - 2] === \"/\"\n };\n }\n html = _.trim(html.slice(i + 1, -1));\n var isClosing = html[html.length - 1] === \"/\";\n if (isClosing) html = _.trim(html.slice(0, -1));\n return {\n html: html,\n closing: isClosing\n };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n * whiteList, onTag, onTagAttr, onIgnoreTag,\n * onIgnoreTagAttr, safeAttrValue, escapeHtml\n * stripIgnoreTagBody, allowCommentTag, stripBlankChar\n * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`\n */\nfunction FilterXSS(options) {\n options = shallowCopyObject(options || {});\n\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error(\n 'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n );\n }\n options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n }\n\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onTag = options.onTag || DEFAULT.onTag;\n options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n this.options = options;\n\n if (options.css === false) {\n this.cssFilter = false;\n } else {\n options.css = options.css || {};\n this.cssFilter = new FilterCSS(options.css);\n }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function(html) {\n // compatible with the input\n html = html || \"\";\n html = html.toString();\n if (!html) return \"\";\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onTag = options.onTag;\n var onIgnoreTag = options.onIgnoreTag;\n var onTagAttr = options.onTagAttr;\n var onIgnoreTagAttr = options.onIgnoreTagAttr;\n var safeAttrValue = options.safeAttrValue;\n var escapeHtml = options.escapeHtml;\n var cssFilter = me.cssFilter;\n\n // remove invisible characters\n if (options.stripBlankChar) {\n html = DEFAULT.stripBlankChar(html);\n }\n\n // remove html comments\n if (!options.allowCommentTag) {\n html = DEFAULT.stripCommentTag(html);\n }\n\n // if enable stripIgnoreTagBody\n var stripIgnoreTagBody = false;\n if (options.stripIgnoreTagBody) {\n var stripIgnoreTagBody = DEFAULT.StripTagBody(\n options.stripIgnoreTagBody,\n onIgnoreTag\n );\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n\n var retHtml = parseTag(\n html,\n function(sourcePosition, position, tag, html, isClosing) {\n var info = {\n sourcePosition: sourcePosition,\n position: position,\n isClosing: isClosing,\n isWhite: whiteList.hasOwnProperty(tag)\n };\n\n // call `onTag()`\n var ret = onTag(tag, html, info);\n if (!isNull(ret)) return ret;\n\n if (info.isWhite) {\n if (info.isClosing) {\n return \"</\" + tag + \">\";\n }\n\n var attrs = getAttrs(html);\n var whiteAttrList = whiteList[tag];\n var attrsHtml = parseAttr(attrs.html, function(name, value) {\n // call `onTagAttr()`\n var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n var ret = onTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=\"' + value + '\"';\n } else {\n return name;\n }\n } else {\n // call `onIgnoreTagAttr()`\n var ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n return;\n }\n });\n\n // build new tag html\n var html = \"<\" + tag;\n if (attrsHtml) html += \" \" + attrsHtml;\n if (attrs.closing) html += \" /\";\n html += \">\";\n return html;\n } else {\n // call `onIgnoreTag()`\n var ret = onIgnoreTag(tag, html, info);\n if (!isNull(ret)) return ret;\n return escapeHtml(html);\n }\n },\n escapeHtml\n );\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n\n return retHtml;\n};\n\nmodule.exports = FilterXSS;\n\n\n//# sourceURL=webpack:///./node_modules/xss/lib/xss.js?");
/***/ })
/******/ });