wangEditor.min.js 106 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481
  1. !function(e, t) {
  2. "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.wangEditor = t()
  3. }(this, function() {
  4. "use strict";
  5. function e(e) {
  6. var t = void 0;
  7. return t = document.createElement("div"),
  8. t.innerHTML = e,
  9. t.children
  10. }
  11. function t(e) {
  12. return !!e && (e instanceof HTMLCollection || e instanceof NodeList)
  13. }
  14. function n(e) {
  15. var n = document.querySelectorAll(e);
  16. return t(n) ? n : [n]
  17. }
  18. function i(o) {
  19. if (o) {
  20. if (o instanceof i)
  21. return o;
  22. this.selector = o;
  23. var A = o.nodeType
  24. , r = [];
  25. 9 === A ? r = [o] : 1 === A ? r = [o] : t(o) || o instanceof Array ? r = o : "string" == typeof o && (o = o.replace("/\n/mg", "").trim(),
  26. r = 0 === o.indexOf("<") ? e(o) : n(o));
  27. var c = r.length;
  28. if (!c)
  29. return this;
  30. var a = void 0;
  31. for (a = 0; a < c; a++)
  32. this[a] = r[a];
  33. this.length = c
  34. }
  35. }
  36. function o(e) {
  37. return new i(e)
  38. }
  39. function A(e, t) {
  40. var n = void 0;
  41. for (n in e)
  42. if (e.hasOwnProperty(n) && !1 === t.call(e, n, e[n]))
  43. break
  44. }
  45. function r(e, t) {
  46. var n = void 0
  47. , i = void 0
  48. , o = e.length || 0;
  49. for (n = 0; n < o && (i = e[n],
  50. !1 !== t.call(e, i, n)); n++)
  51. ;
  52. }
  53. function c(e) {
  54. return e + Math.random().toString().slice(2)
  55. }
  56. function a(e) {
  57. return null == e ? "" : e.replace(/</gm, "&lt;").replace(/>/gm, "&gt;").replace(/"/gm, "&quot;")
  58. }
  59. function s(e) {
  60. return "function" == typeof e
  61. }
  62. function l(e) {
  63. this.editor = e,
  64. this.$elem = o('<div class="w-e-menu">\n <i class="w-e-icon-bold"><i/>\n </div>'),
  65. this.type = "click",
  66. this._active = !1
  67. }
  68. function d(e, t) {
  69. var n = this
  70. , i = e.editor;
  71. this.menu = e,
  72. this.opt = t;
  73. var A = o('<div class="w-e-droplist"></div>')
  74. , r = t.$title
  75. , c = void 0;
  76. r && (c = r.html(),
  77. c = O(i, c),
  78. r.html(c),
  79. r.addClass("w-e-dp-title"),
  80. A.append(r));
  81. var a = t.list || []
  82. , s = t.type || "list"
  83. , l = t.onClick || $
  84. , d = o('<ul class="' + ("list" === s ? "w-e-list" : "w-e-block") + '"></ul>');
  85. A.append(d),
  86. a.forEach(function(e) {
  87. var t = e.$elem
  88. , A = t.html();
  89. A = O(i, A),
  90. t.html(A);
  91. var r = e.value
  92. , c = o('<li class="w-e-item"></li>');
  93. t && (c.append(t),
  94. d.append(c),
  95. c.on("click", function(e) {
  96. l(r),
  97. n.hideTimeoutId = setTimeout(function() {
  98. n.hide()
  99. }, 0)
  100. }))
  101. }),
  102. A.on("mouseleave", function(e) {
  103. n.hideTimeoutId = setTimeout(function() {
  104. n.hide()
  105. }, 0)
  106. }),
  107. this.$container = A,
  108. this._rendered = !1,
  109. this._show = !1
  110. }
  111. function u(e) {
  112. var t = this;
  113. this.editor = e,
  114. this.$elem = o('<div class="w-e-menu"><i class="w-e-icon-header"><i/></div>'),
  115. this.type = "droplist",
  116. this._active = !1,
  117. this.droplist = new d(this,{
  118. width: 100,
  119. $title: o("<p>设置标题</p>"),
  120. type: "list",
  121. list: [{
  122. $elem: o("<h1>H1</h1>"),
  123. value: "<h1>"
  124. }, {
  125. $elem: o("<h2>H2</h2>"),
  126. value: "<h2>"
  127. }, {
  128. $elem: o("<h3>H3</h3>"),
  129. value: "<h3>"
  130. }, {
  131. $elem: o("<h4>H4</h4>"),
  132. value: "<h4>"
  133. }, {
  134. $elem: o("<h5>H5</h5>"),
  135. value: "<h5>"
  136. }, {
  137. $elem: o("<p>正文</p>"),
  138. value: "<p>"
  139. }],
  140. onClick: function(e) {
  141. t._command(e)
  142. }
  143. })
  144. }
  145. function h(e) {
  146. var t = this;
  147. this.editor = e,
  148. this.$elem = o('<div class="w-e-menu"><i class="w-e-icon-text-heigh"><i/></div>'),
  149. this.type = "droplist",
  150. this._active = !1,
  151. this.droplist = new d(this,{
  152. width: 160,
  153. $title: o("<p>字号</p>"),
  154. type: "list",
  155. list: [{
  156. $elem: o('<span style="font-size: x-small;">x-small</span>'),
  157. value: "1"
  158. }, {
  159. $elem: o('<span style="font-size: small;">small</span>'),
  160. value: "2"
  161. }, {
  162. $elem: o("<span>normal</span>"),
  163. value: "3"
  164. }, {
  165. $elem: o('<span style="font-size: large;">large</span>'),
  166. value: "4"
  167. }, {
  168. $elem: o('<span style="font-size: x-large;">x-large</span>'),
  169. value: "5"
  170. }, {
  171. $elem: o('<span style="font-size: xx-large;">xx-large</span>'),
  172. value: "6"
  173. }],
  174. onClick: function(e) {
  175. t._command(e)
  176. }
  177. })
  178. }
  179. function p(e) {
  180. var t = this;
  181. this.editor = e,
  182. this.$elem = o('<div class="w-e-menu"><i class="w-e-icon-font"><i/></div>'),
  183. this.type = "droplist",
  184. this._active = !1;
  185. var n = e.config
  186. , i = n.fontNames || [];
  187. this.droplist = new d(this,{
  188. width: 100,
  189. $title: o("<p>字体</p>"),
  190. type: "list",
  191. list: i.map(function(e) {
  192. return {
  193. $elem: o('<span style="font-family: ' + e + ';">' + e + "</span>"),
  194. value: e
  195. }
  196. }),
  197. onClick: function(e) {
  198. t._command(e)
  199. }
  200. })
  201. }
  202. function f(e, t) {
  203. this.menu = e,
  204. this.opt = t
  205. }
  206. function m(e) {
  207. this.editor = e,
  208. this.$elem = o('<div class="w-e-menu"><i class="w-e-icon-link"><i/></div>'),
  209. this.type = "panel",
  210. this._active = !1
  211. }
  212. function g(e) {
  213. this.editor = e,
  214. this.$elem = o('<div class="w-e-menu">\n <i class="w-e-icon-italic"><i/>\n </div>'),
  215. this.type = "click",
  216. this._active = !1
  217. }
  218. function w(e) {
  219. this.editor = e,
  220. this.$elem = o('<div class="w-e-menu">\n <i class="w-e-icon-redo"><i/>\n </div>'),
  221. this.type = "click",
  222. this._active = !1
  223. }
  224. function v(e) {
  225. this.editor = e,
  226. this.$elem = o('<div class="w-e-menu">\n <i class="w-e-icon-strikethrough"><i/>\n </div>'),
  227. this.type = "click",
  228. this._active = !1
  229. }
  230. function E(e) {
  231. this.editor = e,
  232. this.$elem = o('<div class="w-e-menu">\n <i class="w-e-icon-underline"><i/>\n </div>'),
  233. this.type = "click",
  234. this._active = !1
  235. }
  236. function b(e) {
  237. this.editor = e,
  238. this.$elem = o('<div class="w-e-menu">\n <i class="w-e-icon-undo"><i/>\n </div>'),
  239. this.type = "click",
  240. this._active = !1
  241. }
  242. function B(e) {
  243. var t = this;
  244. this.editor = e,
  245. this.$elem = o('<div class="w-e-menu"><i class="w-e-icon-list2"><i/></div>'),
  246. this.type = "droplist",
  247. this._active = !1,
  248. this.droplist = new d(this,{
  249. width: 120,
  250. $title: o("<p>设置列表</p>"),
  251. type: "list",
  252. list: [{
  253. $elem: o('<span><i class="w-e-icon-list-numbered"></i> 有序列表</span>'),
  254. value: "insertOrderedList"
  255. }, {
  256. $elem: o('<span><i class="w-e-icon-list2"></i> 无序列表</span>'),
  257. value: "insertUnorderedList"
  258. }],
  259. onClick: function(e) {
  260. t._command(e)
  261. }
  262. })
  263. }
  264. function y(e) {
  265. var t = this;
  266. this.editor = e,
  267. this.$elem = o('<div class="w-e-menu"><i class="w-e-icon-paragraph-left"><i/></div>'),
  268. this.type = "droplist",
  269. this._active = !1,
  270. this.droplist = new d(this,{
  271. width: 100,
  272. $title: o("<p>对齐方式</p>"),
  273. type: "list",
  274. list: [{
  275. $elem: o('<span><i class="w-e-icon-paragraph-left"></i> 靠左</span>'),
  276. value: "justifyLeft"
  277. }, {
  278. $elem: o('<span><i class="w-e-icon-paragraph-center"></i> 居中</span>'),
  279. value: "justifyCenter"
  280. }, {
  281. $elem: o('<span><i class="w-e-icon-paragraph-right"></i> 靠右</span>'),
  282. value: "justifyRight"
  283. }],
  284. onClick: function(e) {
  285. t._command(e)
  286. }
  287. })
  288. }
  289. function C(e) {
  290. var t = this;
  291. this.editor = e,
  292. this.$elem = o('<div class="w-e-menu"><i class="w-e-icon-pencil2"><i/></div>'),
  293. this.type = "droplist";
  294. var n = e.config
  295. , i = n.colors || [];
  296. this._active = !1,
  297. this.droplist = new d(this,{
  298. width: 120,
  299. $title: o("<p>文字颜色</p>"),
  300. type: "inline-block",
  301. list: i.map(function(e) {
  302. return {
  303. $elem: o('<i style="color:' + e + ';" class="w-e-icon-pencil2"></i>'),
  304. value: e
  305. }
  306. }),
  307. onClick: function(e) {
  308. t._command(e)
  309. }
  310. })
  311. }
  312. function x(e) {
  313. var t = this;
  314. this.editor = e,
  315. this.$elem = o('<div class="w-e-menu"><i class="w-e-icon-paint-brush"><i/></div>'),
  316. this.type = "droplist";
  317. var n = e.config
  318. , i = n.colors || [];
  319. this._active = !1,
  320. this.droplist = new d(this,{
  321. width: 120,
  322. $title: o("<p>背景色</p>"),
  323. type: "inline-block",
  324. list: i.map(function(e) {
  325. return {
  326. $elem: o('<i style="color:' + e + ';" class="w-e-icon-paint-brush"></i>'),
  327. value: e
  328. }
  329. }),
  330. onClick: function(e) {
  331. t._command(e)
  332. }
  333. })
  334. }
  335. function I(e) {
  336. this.editor = e,
  337. this.$elem = o('<div class="w-e-menu">\n <i class="w-e-icon-quotes-left"><i/>\n </div>'),
  338. this.type = "click",
  339. this._active = !1
  340. }
  341. function Q(e) {
  342. this.editor = e,
  343. this.$elem = o('<div class="w-e-menu">\n <i class="w-e-icon-terminal"><i/>\n </div>'),
  344. this.type = "panel",
  345. this._active = !1
  346. }
  347. function M(e) {
  348. this.editor = e,
  349. this.$elem = o('<div class="w-e-menu">\n <i class="w-e-icon-happy"><i/>\n </div>'),
  350. this.type = "panel",
  351. this._active = !1
  352. }
  353. function S(e) {
  354. this.editor = e,
  355. this.$elem = o('<div class="w-e-menu"><i class="w-e-icon-table2"><i/></div>'),
  356. this.type = "panel",
  357. this._active = !1
  358. }
  359. function k(e) {
  360. this.editor = e,
  361. this.$elem = o('<div class="w-e-menu"><i class="w-e-icon-play"><i/></div>'),
  362. this.type = "panel",
  363. this._active = !1
  364. }
  365. function D(e) {
  366. this.editor = e;
  367. var t = c("w-e-img");
  368. this.$elem = o('<div class="w-e-menu" id="' + t + '"><i class="w-e-icon-image"><i/></div>'),
  369. e.imgMenuId = t,
  370. this.type = "panel",
  371. this._active = !1
  372. }
  373. function _(e) {
  374. this.editor = e,
  375. this.menus = {}
  376. }
  377. function N(e) {
  378. var t = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData
  379. , n = void 0;
  380. return n = null == t ? window.clipboardData && window.clipboardData.getData("text") : t.getData("text/plain"),
  381. a(n)
  382. }
  383. function F(e, t, n) {
  384. var i = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData
  385. , o = void 0
  386. , A = void 0;
  387. if (null == i ? o = window.clipboardData && window.clipboardData.getData("text") : (o = i.getData("text/plain"),
  388. A = i.getData("text/html")),
  389. !A && o && (A = "<p>" + a(o) + "</p>"),
  390. A) {
  391. var r = A.split("</html>");
  392. return 2 === r.length && (A = r[0]),
  393. A = A.replace(/<(meta|script|link).+?>/gim, ""),
  394. A = A.replace(/<!--.*?-->/gm, ""),
  395. A = A.replace(/\s?data-.+?=('|").+?('|")/gim, ""),
  396. n && (A = A.replace(/<img.+?>/gim, "")),
  397. A = t ? A.replace(/\s?(class|style)=('|").+?('|")/gim, "") : A.replace(/\s?class=('|").+?('|")/gim, "")
  398. }
  399. }
  400. function R(e) {
  401. var t = [];
  402. if (N(e))
  403. return t;
  404. var n = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData || {}
  405. , i = n.items;
  406. return i ? (A(i, function(e, n) {
  407. var i = n.type;
  408. /image/i.test(i) && t.push(n.getAsFile())
  409. }),
  410. t) : t
  411. }
  412. function T(e) {
  413. var t = [];
  414. return (e.childNodes() || []).forEach(function(e) {
  415. var n = void 0
  416. , i = e.nodeType;
  417. if (3 === i && (n = e.textContent),
  418. 1 === i) {
  419. n = {},
  420. n.tag = e.nodeName.toLowerCase();
  421. for (var A = [], r = e.attributes || {}, c = r.length || 0, a = 0; a < c; a++) {
  422. var s = r[a];
  423. A.push({
  424. name: s.name,
  425. value: s.value
  426. })
  427. }
  428. n.attrs = A,
  429. n.children = T(o(e))
  430. }
  431. t.push(n)
  432. }),
  433. t
  434. }
  435. function U(e) {
  436. this.editor = e
  437. }
  438. function Y(e) {
  439. this.editor = e
  440. }
  441. function P(e) {
  442. this.editor = e,
  443. this._currentRange = null
  444. }
  445. function H(e) {
  446. this.editor = e,
  447. this._time = 0,
  448. this._isShow = !1,
  449. this._isRender = !1,
  450. this._timeoutId = 0,
  451. this.$textContainer = e.$textContainerElem,
  452. this.$bar = o('<div class="w-e-progress"></div>')
  453. }
  454. function L(e) {
  455. this.editor = e
  456. }
  457. function j(e, t) {
  458. if (null == e)
  459. throw new Error("错误:初始化编辑器时候未传入任何参数,请查阅文档");
  460. this.id = "wangEditor-" + W++,
  461. this.toolbarSelector = e,
  462. this.textSelector = t,
  463. this.customConfig = {}
  464. }
  465. var G = [];
  466. i.prototype = {
  467. constructor: i,
  468. forEach: function(e) {
  469. var t = void 0;
  470. for (t = 0; t < this.length; t++) {
  471. var n = this[t];
  472. if (!1 === e.call(n, n, t))
  473. break
  474. }
  475. return this
  476. },
  477. clone: function(e) {
  478. var t = [];
  479. return this.forEach(function(n) {
  480. t.push(n.cloneNode(!!e))
  481. }),
  482. o(t)
  483. },
  484. get: function(e) {
  485. var t = this.length;
  486. return e >= t && (e %= t),
  487. o(this[e])
  488. },
  489. first: function() {
  490. return this.get(0)
  491. },
  492. last: function() {
  493. var e = this.length;
  494. return this.get(e - 1)
  495. },
  496. on: function(e, t, n) {
  497. n || (n = t,
  498. t = null);
  499. var i = [];
  500. return i = e.split(/\s+/),
  501. this.forEach(function(e) {
  502. i.forEach(function(i) {
  503. if (i) {
  504. if (G.push({
  505. elem: e,
  506. type: i,
  507. fn: n
  508. }),
  509. !t)
  510. return void e.addEventListener(i, n);
  511. e.addEventListener(i, function(e) {
  512. var i = e.target;
  513. i.matches(t) && n.call(i, e)
  514. })
  515. }
  516. })
  517. })
  518. },
  519. off: function(e, t) {
  520. return this.forEach(function(n) {
  521. n.removeEventListener(e, t)
  522. })
  523. },
  524. attr: function(e, t) {
  525. return null == t ? this[0].getAttribute(e) : this.forEach(function(n) {
  526. n.setAttribute(e, t)
  527. })
  528. },
  529. addClass: function(e) {
  530. return e ? this.forEach(function(t) {
  531. var n = void 0;
  532. t.className ? (n = t.className.split(/\s/),
  533. n = n.filter(function(e) {
  534. return !!e.trim()
  535. }),
  536. n.indexOf(e) < 0 && n.push(e),
  537. t.className = n.join(" ")) : t.className = e
  538. }) : this
  539. },
  540. removeClass: function(e) {
  541. return e ? this.forEach(function(t) {
  542. var n = void 0;
  543. t.className && (n = t.className.split(/\s/),
  544. n = n.filter(function(t) {
  545. return !(!(t = t.trim()) || t === e)
  546. }),
  547. t.className = n.join(" "))
  548. }) : this
  549. },
  550. css: function(e, t) {
  551. var n = e + ":" + t + ";";
  552. return this.forEach(function(t) {
  553. var i = (t.getAttribute("style") || "").trim()
  554. , o = void 0
  555. , A = [];
  556. i ? (o = i.split(";"),
  557. o.forEach(function(e) {
  558. var t = e.split(":").map(function(e) {
  559. return e.trim()
  560. });
  561. 2 === t.length && A.push(t[0] + ":" + t[1])
  562. }),
  563. A = A.map(function(t) {
  564. return 0 === t.indexOf(e) ? n : t
  565. }),
  566. A.indexOf(n) < 0 && A.push(n),
  567. t.setAttribute("style", A.join("; "))) : t.setAttribute("style", n)
  568. })
  569. },
  570. show: function() {
  571. return this.css("display", "block")
  572. },
  573. hide: function() {
  574. return this.css("display", "none")
  575. },
  576. children: function() {
  577. var e = this[0];
  578. return e ? o(e.children) : null
  579. },
  580. childNodes: function() {
  581. var e = this[0];
  582. return e ? o(e.childNodes) : null
  583. },
  584. append: function(e) {
  585. return this.forEach(function(t) {
  586. e.forEach(function(e) {
  587. t.appendChild(e)
  588. })
  589. })
  590. },
  591. remove: function() {
  592. return this.forEach(function(e) {
  593. if (e.remove)
  594. e.remove();
  595. else {
  596. var t = e.parentElement;
  597. t && t.removeChild(e)
  598. }
  599. })
  600. },
  601. isContain: function(e) {
  602. var t = this[0]
  603. , n = e[0];
  604. return t.contains(n)
  605. },
  606. getSizeData: function() {
  607. return this[0].getBoundingClientRect()
  608. },
  609. getNodeName: function() {
  610. return this[0].nodeName
  611. },
  612. find: function(e) {
  613. return o(this[0].querySelectorAll(e))
  614. },
  615. text: function(e) {
  616. return e ? this.forEach(function(t) {
  617. t.innerHTML = e
  618. }) : this[0].innerHTML.replace(/<.*?>/g, function() {
  619. return ""
  620. })
  621. },
  622. html: function(e) {
  623. var t = this[0];
  624. return null == e ? t.innerHTML : (t.innerHTML = e,
  625. this)
  626. },
  627. val: function() {
  628. return this[0].value.trim()
  629. },
  630. focus: function() {
  631. return this.forEach(function(e) {
  632. e.focus()
  633. })
  634. },
  635. parent: function() {
  636. return o(this[0].parentElement)
  637. },
  638. parentUntil: function(e, t) {
  639. var n = document.querySelectorAll(e)
  640. , i = n.length;
  641. if (!i)
  642. return null;
  643. var A = t || this[0];
  644. if ("BODY" === A.nodeName)
  645. return null;
  646. var r = A.parentElement
  647. , c = void 0;
  648. for (c = 0; c < i; c++)
  649. if (r === n[c])
  650. return o(r);
  651. return this.parentUntil(e, r)
  652. },
  653. equal: function(e) {
  654. return 1 === e.nodeType ? this[0] === e : this[0] === e[0]
  655. },
  656. insertBefore: function(e) {
  657. var t = o(e)
  658. , n = t[0];
  659. return n ? this.forEach(function(e) {
  660. n.parentNode.insertBefore(e, n)
  661. }) : this
  662. },
  663. insertAfter: function(e) {
  664. var t = o(e)
  665. , n = t[0];
  666. return n ? this.forEach(function(e) {
  667. var t = n.parentNode;
  668. t.lastChild === n ? t.appendChild(e) : t.insertBefore(e, n.nextSibling)
  669. }) : this
  670. }
  671. },
  672. o.offAll = function() {
  673. G.forEach(function(e) {
  674. var t = e.elem
  675. , n = e.type
  676. , i = e.fn;
  677. t.removeEventListener(n, i)
  678. })
  679. }
  680. ;
  681. var z = {
  682. menus: ["head", "bold", "fontSize", "fontName", "italic", "underline", "strikeThrough", "foreColor", "backColor", "link", "list", "justify", "quote", "emoticon", "image", "table", "video", "code", "undo", "redo"],
  683. fontNames: ["宋体", "微软雅黑", "Arial", "Tahoma", "Verdana"],
  684. colors: ["#000000", "#eeece0", "#1c487f", "#4d80bf", "#c24f4a", "#8baa4a", "#7b5ba1", "#46acc8", "#f9963b", "#ffffff"],
  685. emotions: [{
  686. title: "默认",
  687. type: "image",
  688. content: [{
  689. alt: "[坏笑]",
  690. src: "http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/50/pcmoren_huaixiao_org.png"
  691. }, {
  692. alt: "[舔屏]",
  693. src: "http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/pcmoren_tian_org.png"
  694. }, {
  695. alt: "[污]",
  696. src: "http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/pcmoren_wu_org.png"
  697. }]
  698. }, {
  699. title: "新浪",
  700. type: "image",
  701. content: [{
  702. src: "http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/7a/shenshou_thumb.gif",
  703. alt: "[草泥马]"
  704. }, {
  705. src: "http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/60/horse2_thumb.gif",
  706. alt: "[神马]"
  707. }, {
  708. src: "http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/bc/fuyun_thumb.gif",
  709. alt: "[浮云]"
  710. }]
  711. }, {
  712. title: "emoji",
  713. type: "emoji",
  714. content: "😀 😃 😄 😁 😆 😅 😂 😊 😇 🙂 🙃 😉 😓 😪 😴 🙄 🤔 😬 🤐".split(/\s/)
  715. }],
  716. zIndex: 1e4,
  717. debug: !1,
  718. linkCheck: function(e, t) {
  719. return !0
  720. },
  721. linkImgCheck: function(e) {
  722. return !0
  723. },
  724. pasteFilterStyle: !0,
  725. pasteIgnoreImg: !1,
  726. pasteTextHandle: function(e) {
  727. return e
  728. },
  729. showLinkImg: !0,
  730. linkImgCallback: function(e) {},
  731. uploadImgMaxSize: 5242880,
  732. uploadImgShowBase64: !1,
  733. uploadFileName: "",
  734. uploadImgParams: {},
  735. uploadImgHeaders: {},
  736. withCredentials: !1,
  737. uploadImgTimeout: 1e4,
  738. uploadImgHooks: {
  739. before: function(e, t, n) {},
  740. success: function(e, t, n) {},
  741. fail: function(e, t, n) {},
  742. error: function(e, t) {},
  743. timeout: function(e, t) {}
  744. },
  745. qiniu: !1
  746. }
  747. , J = {
  748. _ua: navigator.userAgent,
  749. isWebkit: function() {
  750. return /webkit/i.test(this._ua)
  751. },
  752. isIE: function() {
  753. return "ActiveXObject"in window
  754. }
  755. };
  756. l.prototype = {
  757. constructor: l,
  758. onClick: function(e) {
  759. var t = this.editor
  760. , n = t.selection.isSelectionEmpty();
  761. n && t.selection.createEmptyRange(),
  762. t.cmd.do("bold"),
  763. n && (t.selection.collapseRange(),
  764. t.selection.restoreSelection())
  765. },
  766. tryChangeActive: function(e) {
  767. var t = this.editor
  768. , n = this.$elem;
  769. t.cmd.queryCommandState("bold") ? (this._active = !0,
  770. n.addClass("w-e-active")) : (this._active = !1,
  771. n.removeClass("w-e-active"))
  772. }
  773. };
  774. var O = function(e, t) {
  775. var n = e.config.langArgs || []
  776. , i = t;
  777. return n.forEach(function(e) {
  778. var t = e.reg
  779. , n = e.val;
  780. t.test(i) && (i = i.replace(t, function() {
  781. return n
  782. }))
  783. }),
  784. i
  785. }
  786. , $ = function() {};
  787. d.prototype = {
  788. constructor: d,
  789. show: function() {
  790. this.hideTimeoutId && clearTimeout(this.hideTimeoutId);
  791. var e = this.menu
  792. , t = e.$elem
  793. , n = this.$container;
  794. if (!this._show) {
  795. if (this._rendered)
  796. n.show();
  797. else {
  798. var i = t.getSizeData().height || 0
  799. , o = this.opt.width || 100;
  800. n.css("margin-top", i + "px").css("width", o + "px"),
  801. t.append(n),
  802. this._rendered = !0
  803. }
  804. this._show = !0
  805. }
  806. },
  807. hide: function() {
  808. this.showTimeoutId && clearTimeout(this.showTimeoutId);
  809. var e = this.$container;
  810. this._show && (e.hide(),
  811. this._show = !1)
  812. }
  813. },
  814. u.prototype = {
  815. constructor: u,
  816. _command: function(e) {
  817. var t = this.editor
  818. , n = t.selection.getSelectionContainerElem();
  819. t.$textElem.equal(n) || t.cmd.do("formatBlock", e)
  820. },
  821. tryChangeActive: function(e) {
  822. var t = this.editor
  823. , n = this.$elem
  824. , i = /^h/i
  825. , o = t.cmd.queryCommandValue("formatBlock");
  826. i.test(o) ? (this._active = !0,
  827. n.addClass("w-e-active")) : (this._active = !1,
  828. n.removeClass("w-e-active"))
  829. }
  830. },
  831. h.prototype = {
  832. constructor: h,
  833. _command: function(e) {
  834. this.editor.cmd.do("fontSize", e)
  835. }
  836. },
  837. p.prototype = {
  838. constructor: p,
  839. _command: function(e) {
  840. this.editor.cmd.do("fontName", e)
  841. }
  842. };
  843. var V = function() {}
  844. , K = [];
  845. f.prototype = {
  846. constructor: f,
  847. show: function() {
  848. var e = this
  849. , t = this.menu;
  850. if (!(K.indexOf(t) >= 0)) {
  851. var n = t.editor
  852. , i = o("body")
  853. , A = n.$textContainerElem
  854. , r = this.opt
  855. , c = o('<div class="w-e-panel-container"></div>')
  856. , a = r.width || 300;
  857. c.css("width", a + "px").css("margin-left", (0 - a) / 2 + "px");
  858. var s = o('<i class="w-e-icon-close w-e-panel-close"></i>');
  859. var cancel = o('<div class="close_linkDiv"></div>');
  860. c.append(cancel),
  861. cancel.on("click", function() {
  862. e.hide()
  863. });
  864. c.append(s),
  865. s.on("click", function() {
  866. e.hide()
  867. });
  868. var l = o('<ul class="w-e-panel-tab-title"></ul>')
  869. , d = o('<div class="w-e-panel-tab-content"></div>');
  870. c.append(l).append(d);
  871. var u = r.height;
  872. u && d.css("height", u + "px").css("overflow-y", "auto");
  873. var h = r.tabs || []
  874. , p = []
  875. , f = [];
  876. h.forEach(function(e, t) {
  877. if (e) {
  878. var i = e.title || ""
  879. , A = e.tpl || "";
  880. i = O(n, i),
  881. A = O(n, A);
  882. var r = o('<li class="w-e-item">' + i + "</li>");
  883. l.append(r);
  884. var c = o(A);
  885. d.append(c),
  886. r._index = t,
  887. p.push(r),
  888. f.push(c),
  889. 0 === t ? (r._active = !0,
  890. r.addClass("w-e-active")) : c.hide(),
  891. r.on("click", function(e) {
  892. r._active || (p.forEach(function(e) {
  893. e._active = !1,
  894. e.removeClass("w-e-active")
  895. }),
  896. f.forEach(function(e) {
  897. e.hide()
  898. }),
  899. r._active = !0,
  900. r.addClass("w-e-active"),
  901. c.show())
  902. })
  903. }
  904. }),
  905. c.on("click", function(e) {
  906. e.stopPropagation()
  907. }),
  908. i.on("click", function(t) {
  909. e.hide()
  910. }),
  911. A.append(c),
  912. h.forEach(function(t, n) {
  913. if (t) {
  914. (t.events || []).forEach(function(t) {
  915. var i = t.selector
  916. , o = t.type
  917. , A = t.fn || V;
  918. f[n].find(i).on(o, function(t) {
  919. t.stopPropagation();
  920. if(A(t))
  921. {
  922. if(document.getElementsByClassName("addLink-content")[0].children[1].value.trim()!=''&&document.getElementsByClassName("addLink-content")[0].children[3].value.trim()!='')
  923. {
  924. e.hide();
  925. }
  926. }
  927. })
  928. })
  929. }
  930. });
  931. var m = c.find("input[type=text],textarea");
  932. m.length && m.get(0).focus(),
  933. this.$container = c,
  934. this._hideOtherPanels(),
  935. K.push(t)
  936. //xzw add: for keydown not flying
  937. window.keyCon = false;
  938. c.find('input').on("focus", function(){window.keyCon = false;} )
  939. c.find('input').on("blur", function(){window.keyCon = true;} )
  940. c.find('input').on("keydown", function(e){
  941. if(e.which == 33||e.which == 34){e.preventDefault();} //pageup pagedown
  942. e.stopPropagation();
  943. })
  944. }
  945. },
  946. hide: function() {
  947. var e = this.menu
  948. , t = this.$container;
  949. t && t.remove(),
  950. K = K.filter(function(t) {
  951. return t !== e
  952. })
  953. },
  954. _hideOtherPanels: function() {
  955. K.length && K.forEach(function(e) {
  956. var t = e.panel || {};
  957. t.hide && t.hide()
  958. })
  959. }
  960. },
  961. m.prototype = {
  962. constructor: m,
  963. onClick: function(e) {
  964. var t = this.editor
  965. , n = void 0;
  966. if (this._active) {
  967. if (!(n = t.selection.getSelectionContainerElem()))
  968. return;
  969. t.selection.createRangeByElem(n),
  970. t.selection.restoreSelection(),
  971. this._createPanel(n.text(), n.attr("href"))
  972. } else
  973. t.selection.isSelectionEmpty() ? this._createPanel("", "") : this._createPanel(t.selection.getSelectionText(), "")
  974. },
  975. _createPanel: function(e, t) {
  976. var n = this
  977. , i = c("input-link")
  978. , A = c("input-text")
  979. , r = c("btn-ok")
  980. , a = c("btn-del")
  981. , s = this._active ? "inline-block" : "none"
  982. , l = new f(this,{
  983. width: 262,
  984. tabs: [{
  985. title: "增加链接",
  986. tpl: '<div class="addLink-content">\n <div class="addLink-content-row"><p>链接文本</p> <span id="addLink-maxSize">40</span> </div>\n <input id="' + A + '" type="text" class="block addLink_input" value="' + e + '" maxlength="40"/></td>\n <div class="addLink-content-row"><p>链接地址</p> <span></span> </div> \n <input id="' + i + '" type="text" class="block" value="' + t + '" /> <h5>请填写正确、合法的链接地址</h5> </td>\n <div class="w-e-button-container">\n <button id="' + r + '" class="right">确认</button> <button class="addLink-cancel">取消</button>\n </div>\n </div>',
  987. events: [{
  988. selector: "#" + r,
  989. type: "click",
  990. fn: function() {
  991. var e = o("#" + i)
  992. , t = o("#" + A)
  993. , r = e.val()
  994. , c = t.val();
  995. return n._insertLink(c, r),
  996. !0
  997. }
  998. }, {
  999. selector: "#" + a,
  1000. type: "click",
  1001. fn: function() {
  1002. return n._delLink(),
  1003. !0
  1004. }
  1005. }]
  1006. }]
  1007. });
  1008. setTimeout(function(){
  1009. var val = document.getElementsByClassName("addLink-content")[0].children[1].value;
  1010. var len = 40 - val.length;
  1011. document.getElementById('addLink-maxSize').innerText = len;
  1012. },0),
  1013. l.show(),
  1014. this.panel = l
  1015. },
  1016. _delLink: function() {
  1017. if (this._active) {
  1018. var e = this.editor;
  1019. if (e.selection.getSelectionContainerElem()) {
  1020. var t = e.selection.getSelectionText();
  1021. e.cmd.do("insertHTML", "<span>" + t + "</span>")
  1022. }
  1023. }
  1024. },
  1025. _insertLink: function(e, t) {
  1026. if(e && t){
  1027. var n = this.editor
  1028. , i = n.config
  1029. , o = i.linkCheck
  1030. , A = !0
  1031. , fox = '';
  1032. if( t.indexOf("http") == -1 ){ t = 'http://'+t+'' };
  1033. if (navigator.userAgent.indexOf('Firefox') >= 0) { fox = '&nbsp;' };
  1034. o && "function" == typeof o && (A = o(e, t)),
  1035. !0 === A ? n.cmd.do("insertHTML", ''+ fox +'<a href="' + t + '" target="_blank">' + e + "</a> " + fox + "") : alert(A)
  1036. }
  1037. else{var $input1 = document.getElementsByClassName("addLink-content")[0].children[1],$input2 = document.getElementsByClassName("addLink-content")[0].children[3];e ? $input1.classList.remove('warning-border') : $input1.classList.add('warning-border');t ? $input2.classList.remove('warning-border') : $input2.classList.add('warning-border');$input1.addEventListener('focus',function(){ $input1.classList.remove('warning-border') }),$input2.addEventListener('focus',function(){ $input2.classList.remove('warning-border') })}
  1038. },
  1039. tryChangeActive: function(e) {
  1040. var t = this.editor
  1041. , n = this.$elem
  1042. , i = t.selection.getSelectionContainerElem();
  1043. i && ("A" === i.getNodeName() ? (this._active = !0,
  1044. n.addClass("w-e-active")) : (this._active = !1,
  1045. n.removeClass("w-e-active")))
  1046. }
  1047. },
  1048. g.prototype = {
  1049. constructor: g,
  1050. onClick: function(e) {
  1051. var t = this.editor
  1052. , n = t.selection.isSelectionEmpty();
  1053. n && t.selection.createEmptyRange(),
  1054. t.cmd.do("italic"),
  1055. n && (t.selection.collapseRange(),
  1056. t.selection.restoreSelection())
  1057. },
  1058. tryChangeActive: function(e) {
  1059. var t = this.editor
  1060. , n = this.$elem;
  1061. t.cmd.queryCommandState("italic") ? (this._active = !0,
  1062. n.addClass("w-e-active")) : (this._active = !1,
  1063. n.removeClass("w-e-active"))
  1064. }
  1065. },
  1066. w.prototype = {
  1067. constructor: w,
  1068. onClick: function(e) {
  1069. this.editor.cmd.do("redo")
  1070. }
  1071. },
  1072. v.prototype = {
  1073. constructor: v,
  1074. onClick: function(e) {
  1075. var t = this.editor
  1076. , n = t.selection.isSelectionEmpty();
  1077. n && t.selection.createEmptyRange(),
  1078. t.cmd.do("strikeThrough"),
  1079. n && (t.selection.collapseRange(),
  1080. t.selection.restoreSelection())
  1081. },
  1082. tryChangeActive: function(e) {
  1083. var t = this.editor
  1084. , n = this.$elem;
  1085. t.cmd.queryCommandState("strikeThrough") ? (this._active = !0,
  1086. n.addClass("w-e-active")) : (this._active = !1,
  1087. n.removeClass("w-e-active"))
  1088. }
  1089. },
  1090. E.prototype = {
  1091. constructor: E,
  1092. onClick: function(e) {
  1093. var t = this.editor
  1094. , n = t.selection.isSelectionEmpty();
  1095. n && t.selection.createEmptyRange(),
  1096. t.cmd.do("underline"),
  1097. n && (t.selection.collapseRange(),
  1098. t.selection.restoreSelection())
  1099. },
  1100. tryChangeActive: function(e) {
  1101. var t = this.editor
  1102. , n = this.$elem;
  1103. t.cmd.queryCommandState("underline") ? (this._active = !0,
  1104. n.addClass("w-e-active")) : (this._active = !1,
  1105. n.removeClass("w-e-active"))
  1106. }
  1107. },
  1108. b.prototype = {
  1109. constructor: b,
  1110. onClick: function(e) {
  1111. this.editor.cmd.do("undo")
  1112. }
  1113. },
  1114. B.prototype = {
  1115. constructor: B,
  1116. _command: function(e) {
  1117. var t = this.editor
  1118. , n = t.$textElem;
  1119. if (t.selection.restoreSelection(),
  1120. !t.cmd.queryCommandState(e)) {
  1121. t.cmd.do(e);
  1122. var i = t.selection.getSelectionContainerElem();
  1123. if ("LI" === i.getNodeName() && (i = i.parent()),
  1124. !1 !== /^ol|ul$/i.test(i.getNodeName()) && !i.equal(n)) {
  1125. var o = i.parent();
  1126. o.equal(n) || (i.insertAfter(o),
  1127. o.remove())
  1128. }
  1129. }
  1130. },
  1131. tryChangeActive: function(e) {
  1132. var t = this.editor
  1133. , n = this.$elem;
  1134. t.cmd.queryCommandState("insertUnOrderedList") || t.cmd.queryCommandState("insertOrderedList") ? (this._active = !0,
  1135. n.addClass("w-e-active")) : (this._active = !1,
  1136. n.removeClass("w-e-active"))
  1137. }
  1138. },
  1139. y.prototype = {
  1140. constructor: y,
  1141. _command: function(e) {
  1142. this.editor.cmd.do(e)
  1143. }
  1144. },
  1145. C.prototype = {
  1146. constructor: C,
  1147. _command: function(e) {
  1148. this.editor.cmd.do("foreColor", e)
  1149. }
  1150. },
  1151. x.prototype = {
  1152. constructor: x,
  1153. _command: function(e) {
  1154. this.editor.cmd.do("backColor", e)
  1155. }
  1156. },
  1157. I.prototype = {
  1158. constructor: I,
  1159. onClick: function(e) {
  1160. var t = this.editor
  1161. , n = t.selection.getSelectionContainerElem()
  1162. , i = n.getNodeName();
  1163. if (!J.isIE())
  1164. return void ("BLOCKQUOTE" === i ? t.cmd.do("formatBlock", "<P>") : t.cmd.do("formatBlock", "<BLOCKQUOTE>"));
  1165. var A = void 0
  1166. , r = void 0;
  1167. if ("P" === i)
  1168. return A = n.text(),
  1169. r = o("<blockquote>" + A + "</blockquote>"),
  1170. r.insertAfter(n),
  1171. void n.remove();
  1172. "BLOCKQUOTE" === i && (A = n.text(),
  1173. r = o("<p>" + A + "</p>"),
  1174. r.insertAfter(n),
  1175. n.remove())
  1176. },
  1177. tryChangeActive: function(e) {
  1178. var t = this.editor
  1179. , n = this.$elem
  1180. , i = /^BLOCKQUOTE$/i
  1181. , o = t.cmd.queryCommandValue("formatBlock");
  1182. i.test(o) ? (this._active = !0,
  1183. n.addClass("w-e-active")) : (this._active = !1,
  1184. n.removeClass("w-e-active"))
  1185. }
  1186. },
  1187. Q.prototype = {
  1188. constructor: Q,
  1189. onClick: function(e) {
  1190. var t = this.editor
  1191. , n = t.selection.getSelectionStartElem()
  1192. , i = t.selection.getSelectionEndElem()
  1193. , A = t.selection.isSelectionEmpty()
  1194. , r = t.selection.getSelectionText()
  1195. , c = void 0;
  1196. return n.equal(i) ? A ? void (this._active ? this._createPanel(n.html()) : this._createPanel()) : (c = o("<code>" + r + "</code>"),
  1197. t.cmd.do("insertElem", c),
  1198. t.selection.createRangeByElem(c, !1),
  1199. void t.selection.restoreSelection()) : void t.selection.restoreSelection()
  1200. },
  1201. _createPanel: function(e) {
  1202. var t = this;
  1203. e = e || "";
  1204. var n = e ? "edit" : "new"
  1205. , i = c("texxt")
  1206. , A = c("btn")
  1207. , r = new f(this,{
  1208. width: 500,
  1209. tabs: [{
  1210. title: "插入代码",
  1211. tpl: '<div>\n <textarea id="' + i + '" style="height:145px;;">' + e + '</textarea>\n <div class="w-e-button-container">\n <button id="' + A + '" class="right">插入</button>\n </div>\n <div>',
  1212. events: [{
  1213. selector: "#" + A,
  1214. type: "click",
  1215. fn: function() {
  1216. var e = o("#" + i)
  1217. , A = e.val() || e.html();
  1218. return A = a(A),
  1219. "new" === n ? t._insertCode(A) : t._updateCode(A),
  1220. !0
  1221. }
  1222. }]
  1223. }]
  1224. });
  1225. r.show(),
  1226. this.panel = r
  1227. },
  1228. _insertCode: function(e) {
  1229. this.editor.cmd.do("insertHTML", "<pre><code>" + e + "</code></pre><p><br></p>")
  1230. },
  1231. _updateCode: function(e) {
  1232. var t = this.editor
  1233. , n = t.selection.getSelectionContainerElem();
  1234. n && (n.html(e),
  1235. t.selection.restoreSelection())
  1236. },
  1237. tryChangeActive: function(e) {
  1238. var t = this.editor
  1239. , n = this.$elem
  1240. , i = t.selection.getSelectionContainerElem();
  1241. if (i) {
  1242. var o = i.parent();
  1243. "CODE" === i.getNodeName() && "PRE" === o.getNodeName() ? (this._active = !0,
  1244. n.addClass("w-e-active")) : (this._active = !1,
  1245. n.removeClass("w-e-active"))
  1246. }
  1247. }
  1248. },
  1249. M.prototype = {
  1250. constructor: M,
  1251. onClick: function() {
  1252. this._createPanel()
  1253. },
  1254. _createPanel: function() {
  1255. var e = this
  1256. , t = this.editor
  1257. , n = t.config
  1258. , i = n.emotions || []
  1259. , A = [];
  1260. i.forEach(function(t) {
  1261. var n = t.type
  1262. , i = t.content || []
  1263. , r = "";
  1264. "emoji" === n && i.forEach(function(e) {
  1265. e && (r += '<span class="w-e-item">' + e + "</span>")
  1266. }),
  1267. "image" === n && i.forEach(function(e) {
  1268. var t = e.src
  1269. , n = e.alt;
  1270. t && (r += '<span class="w-e-item"><img src="' + t + '" alt="' + n + '" data-w-e="1"/></span>')
  1271. }),
  1272. A.push({
  1273. title: t.title,
  1274. tpl: '<div class="w-e-emoticon-container">' + r + "</div>",
  1275. events: [{
  1276. selector: "span.w-e-item",
  1277. type: "click",
  1278. fn: function(t) {
  1279. var n = t.target
  1280. , i = o(n)
  1281. , A = i.getNodeName()
  1282. , r = void 0;
  1283. return r = "IMG" === A ? i.parent().html() : "<span>" + i.html() + "</span>",
  1284. e._insert(r),
  1285. !0
  1286. }
  1287. }]
  1288. })
  1289. });
  1290. var r = new f(this,{
  1291. width: 300,
  1292. height: 200,
  1293. tabs: A
  1294. });
  1295. r.show(),
  1296. this.panel = r
  1297. },
  1298. _insert: function(e) {
  1299. this.editor.cmd.do("insertHTML", e)
  1300. }
  1301. },
  1302. S.prototype = {
  1303. constructor: S,
  1304. onClick: function() {
  1305. this._active ? this._createEditPanel() : this._createInsertPanel()
  1306. },
  1307. _createInsertPanel: function() {
  1308. var e = this
  1309. , t = c("btn")
  1310. , n = c("row")
  1311. , i = c("col")
  1312. , A = new f(this,{
  1313. width: 250,
  1314. tabs: [{
  1315. title: "插入表格",
  1316. tpl: '<div>\n <p style="text-align:left; padding:5px 0;">\n 创建\n <input id="' + n + '" type="text" value="5" style="width:40px;text-align:center;"/>\n 行\n <input id="' + i + '" type="text" value="5" style="width:40px;text-align:center;"/>\n 列的表格\n </p>\n <div class="w-e-button-container">\n <button id="' + t + '" class="right">插入</button>\n </div>\n </div>',
  1317. events: [{
  1318. selector: "#" + t,
  1319. type: "click",
  1320. fn: function() {
  1321. var t = parseInt(o("#" + n).val())
  1322. , A = parseInt(o("#" + i).val());
  1323. return t && A && t > 0 && A > 0 && e._insert(t, A),
  1324. !0
  1325. }
  1326. }]
  1327. }]
  1328. });
  1329. A.show(),
  1330. this.panel = A
  1331. },
  1332. _insert: function(e, t) {
  1333. var n = void 0
  1334. , i = void 0
  1335. , o = '<table border="0" width="100%" cellpadding="0" cellspacing="0">';
  1336. for (n = 0; n < e; n++) {
  1337. if (o += "<tr>",
  1338. 0 === n)
  1339. for (i = 0; i < t; i++)
  1340. o += "<th>&nbsp;</th>";
  1341. else
  1342. for (i = 0; i < t; i++)
  1343. o += "<td>&nbsp;</td>";
  1344. o += "</tr>"
  1345. }
  1346. o += "</table><p><br></p>";
  1347. var A = this.editor;
  1348. A.cmd.do("insertHTML", o),
  1349. A.cmd.do("enableObjectResizing", !1),
  1350. A.cmd.do("enableInlineTableEditing", !1)
  1351. },
  1352. _createEditPanel: function() {
  1353. var e = this
  1354. , t = c("add-row")
  1355. , n = c("add-col")
  1356. , i = c("del-row")
  1357. , o = c("del-col")
  1358. , A = c("del-table");
  1359. new f(this,{
  1360. width: 320,
  1361. tabs: [{
  1362. title: "编辑表格",
  1363. tpl: '<div>\n <div class="w-e-button-container" style="border-bottom:1px solid #f1f1f1;padding-bottom:5px;margin-bottom:5px;">\n <button id="' + t + '" class="left">增加行</button>\n <button id="' + i + '" class="red left">删除行</button>\n <button id="' + n + '" class="left">增加列</button>\n <button id="' + o + '" class="red left">删除列</button>\n </div>\n <div class="w-e-button-container">\n <button id="' + A + '" class="gray left">删除表格</button>\n </dv>\n </div>',
  1364. events: [{
  1365. selector: "#" + t,
  1366. type: "click",
  1367. fn: function() {
  1368. return e._addRow(),
  1369. !0
  1370. }
  1371. }, {
  1372. selector: "#" + n,
  1373. type: "click",
  1374. fn: function() {
  1375. return e._addCol(),
  1376. !0
  1377. }
  1378. }, {
  1379. selector: "#" + i,
  1380. type: "click",
  1381. fn: function() {
  1382. return e._delRow(),
  1383. !0
  1384. }
  1385. }, {
  1386. selector: "#" + o,
  1387. type: "click",
  1388. fn: function() {
  1389. return e._delCol(),
  1390. !0
  1391. }
  1392. }, {
  1393. selector: "#" + A,
  1394. type: "click",
  1395. fn: function() {
  1396. return e._delTable(),
  1397. !0
  1398. }
  1399. }]
  1400. }]
  1401. }).show()
  1402. },
  1403. _getLocationData: function() {
  1404. var e = {}
  1405. , t = this.editor
  1406. , n = t.selection.getSelectionContainerElem();
  1407. if (n) {
  1408. var i = n.getNodeName();
  1409. if ("TD" === i || "TH" === i) {
  1410. var o = n.parent()
  1411. , A = o.children()
  1412. , r = A.length;
  1413. A.forEach(function(t, i) {
  1414. if (t === n[0])
  1415. return e.td = {
  1416. index: i,
  1417. elem: t,
  1418. length: r
  1419. },
  1420. !1
  1421. });
  1422. var c = o.parent()
  1423. , a = c.children()
  1424. , s = a.length;
  1425. return a.forEach(function(t, n) {
  1426. if (t === o[0])
  1427. return e.tr = {
  1428. index: n,
  1429. elem: t,
  1430. length: s
  1431. },
  1432. !1
  1433. }),
  1434. e
  1435. }
  1436. }
  1437. },
  1438. _addRow: function() {
  1439. var e = this._getLocationData();
  1440. if (e) {
  1441. var t = e.tr
  1442. , n = o(t.elem)
  1443. , i = e.td
  1444. , A = i.length
  1445. , r = document.createElement("tr")
  1446. , c = ""
  1447. , a = void 0;
  1448. for (a = 0; a < A; a++)
  1449. c += "<td>&nbsp;</td>";
  1450. r.innerHTML = c,
  1451. o(r).insertAfter(n)
  1452. }
  1453. },
  1454. _addCol: function() {
  1455. var e = this._getLocationData();
  1456. if (e) {
  1457. var t = e.tr
  1458. , n = e.td
  1459. , i = n.index;
  1460. o(t.elem).parent().children().forEach(function(e) {
  1461. var t = o(e)
  1462. , n = t.children()
  1463. , A = n.get(i)
  1464. , r = A.getNodeName().toLowerCase();
  1465. o(document.createElement(r)).insertAfter(A)
  1466. })
  1467. }
  1468. },
  1469. _delRow: function() {
  1470. var e = this._getLocationData();
  1471. if (e) {
  1472. o(e.tr.elem).remove()
  1473. }
  1474. },
  1475. _delCol: function() {
  1476. var e = this._getLocationData();
  1477. if (e) {
  1478. var t = e.tr
  1479. , n = e.td
  1480. , i = n.index;
  1481. o(t.elem).parent().children().forEach(function(e) {
  1482. o(e).children().get(i).remove()
  1483. })
  1484. }
  1485. },
  1486. _delTable: function() {
  1487. var e = this.editor
  1488. , t = e.selection.getSelectionContainerElem();
  1489. if (t) {
  1490. var n = t.parentUntil("table");
  1491. n && n.remove()
  1492. }
  1493. },
  1494. tryChangeActive: function(e) {
  1495. var t = this.editor
  1496. , n = this.$elem
  1497. , i = t.selection.getSelectionContainerElem();
  1498. if (i) {
  1499. var o = i.getNodeName();
  1500. "TD" === o || "TH" === o ? (this._active = !0,
  1501. n.addClass("w-e-active")) : (this._active = !1,
  1502. n.removeClass("w-e-active"))
  1503. }
  1504. }
  1505. },
  1506. k.prototype = {
  1507. constructor: k,
  1508. onClick: function() {
  1509. this._createPanel()
  1510. },
  1511. _createPanel: function() {
  1512. var e = this
  1513. , t = c("text-val")
  1514. , n = c("btn")
  1515. , i = new f(this,{
  1516. width: 350,
  1517. tabs: [{
  1518. title: "插入视频",
  1519. tpl: '<div>\n <input id="' + t + '" type="text" class="block" placeholder="格式如:<iframe src=... ></iframe>"/>\n <div class="w-e-button-container">\n <button id="' + n + '" class="right">插入</button>\n </div>\n </div>',
  1520. events: [{
  1521. selector: "#" + n,
  1522. type: "click",
  1523. fn: function() {
  1524. var n = o("#" + t)
  1525. , i = n.val().trim();
  1526. return i && e._insert(i),
  1527. !0
  1528. }
  1529. }]
  1530. }]
  1531. });
  1532. i.show(),
  1533. this.panel = i
  1534. },
  1535. _insert: function(e) {
  1536. this.editor.cmd.do("insertHTML", e + "<p><br></p>")
  1537. }
  1538. },
  1539. D.prototype = {
  1540. constructor: D,
  1541. onClick: function() {
  1542. this.editor.config.qiniu || (this._active ? this._createEditPanel() : this._createInsertPanel())
  1543. },
  1544. _createEditPanel: function() {
  1545. var e = this.editor
  1546. , t = c("width-30")
  1547. , n = c("width-50")
  1548. , i = c("width-100")
  1549. , o = c("del-btn")
  1550. , A = [{
  1551. title: "编辑图片",
  1552. tpl: '<div>\n <div class="w-e-button-container" style="border-bottom:1px solid #f1f1f1;padding-bottom:5px;margin-bottom:5px;">\n <span style="float:left;font-size:14px;margin:4px 5px 0 5px;color:#333;">最大宽度:</span>\n <button id="' + t + '" class="left">30%</button>\n <button id="' + n + '" class="left">50%</button>\n <button id="' + i + '" class="left">100%</button>\n </div>\n <div class="w-e-button-container">\n <button id="' + o + '" class="gray left">删除图片</button>\n </dv>\n </div>',
  1553. events: [{
  1554. selector: "#" + t,
  1555. type: "click",
  1556. fn: function() {
  1557. var t = e._selectedImg;
  1558. return t && t.css("max-width", "30%"),
  1559. !0
  1560. }
  1561. }, {
  1562. selector: "#" + n,
  1563. type: "click",
  1564. fn: function() {
  1565. var t = e._selectedImg;
  1566. return t && t.css("max-width", "50%"),
  1567. !0
  1568. }
  1569. }, {
  1570. selector: "#" + i,
  1571. type: "click",
  1572. fn: function() {
  1573. var t = e._selectedImg;
  1574. return t && t.css("max-width", "100%"),
  1575. !0
  1576. }
  1577. }, {
  1578. selector: "#" + o,
  1579. type: "click",
  1580. fn: function() {
  1581. var t = e._selectedImg;
  1582. return t && t.remove(),
  1583. !0
  1584. }
  1585. }]
  1586. }]
  1587. , r = new f(this,{
  1588. width: 300,
  1589. tabs: A
  1590. });
  1591. r.show(),
  1592. this.panel = r
  1593. },
  1594. _createInsertPanel: function() {
  1595. var e = this.editor
  1596. , t = e.uploadImg
  1597. , n = e.config
  1598. , i = c("up-trigger")
  1599. , A = c("up-file")
  1600. , r = c("link-url")
  1601. , a = c("link-btn")
  1602. , s = [{
  1603. title: "上传图片",
  1604. tpl: '<div class="w-e-up-img-container">\n <div id="' + i + '" class="w-e-up-btn">\n <i class="w-e-icon-upload2"></i>\n </div>\n <div style="display:none;">\n <input id="' + A + '" type="file" multiple="multiple" accept="image/jpg,image/jpeg,image/png,image/gif,image/bmp"/>\n </div>\n </div>',
  1605. events: [{
  1606. selector: "#" + i,
  1607. type: "click",
  1608. fn: function() {
  1609. var e = o("#" + A)
  1610. , t = e[0];
  1611. if (!t)
  1612. return !0;
  1613. t.click()
  1614. }
  1615. }, {
  1616. selector: "#" + A,
  1617. type: "change",
  1618. fn: function() {
  1619. var e = o("#" + A)
  1620. , n = e[0];
  1621. if (!n)
  1622. return !0;
  1623. var i = n.files;
  1624. return i.length && t.uploadImg(i),
  1625. !0
  1626. }
  1627. }]
  1628. }, {
  1629. title: "网络图片",
  1630. tpl: '<div>\n <input id="' + r + '" type="text" class="block" placeholder="图片链接"/></td>\n <div class="w-e-button-container">\n <button id="' + a + '" class="right">插入</button>\n </div>\n </div>',
  1631. events: [{
  1632. selector: "#" + a,
  1633. type: "click",
  1634. fn: function() {
  1635. var e = o("#" + r)
  1636. , n = e.val().trim();
  1637. return n && t.insertLinkImg(n),
  1638. !0
  1639. }
  1640. }]
  1641. }]
  1642. , l = [];
  1643. (n.uploadImgShowBase64 || n.uploadImgServer || n.customUploadImg) && window.FileReader && l.push(s[0]),
  1644. n.showLinkImg && l.push(s[1]);
  1645. var d = new f(this,{
  1646. width: 300,
  1647. tabs: l
  1648. });
  1649. d.show(),
  1650. this.panel = d
  1651. },
  1652. tryChangeActive: function(e) {
  1653. var t = this.editor
  1654. , n = this.$elem;
  1655. t._selectedImg ? (this._active = !0,
  1656. n.addClass("w-e-active")) : (this._active = !1,
  1657. n.removeClass("w-e-active"))
  1658. }
  1659. };
  1660. var q = {};
  1661. q.bold = l,
  1662. q.head = u,
  1663. q.fontSize = h,
  1664. q.fontName = p,
  1665. q.link = m,
  1666. q.italic = g,
  1667. q.redo = w,
  1668. q.strikeThrough = v,
  1669. q.underline = E,
  1670. q.undo = b,
  1671. q.list = B,
  1672. q.justify = y,
  1673. q.foreColor = C,
  1674. q.backColor = x,
  1675. q.quote = I,
  1676. q.code = Q,
  1677. q.emoticon = M,
  1678. q.table = S,
  1679. q.video = k,
  1680. q.image = D,
  1681. _.prototype = {
  1682. constructor: _,
  1683. init: function() {
  1684. var e = this
  1685. , t = this.editor;
  1686. ((t.config || {}).menus || []).forEach(function(n) {
  1687. var i = q[n];
  1688. i && "function" == typeof i && (e.menus[n] = new i(t))
  1689. }),
  1690. this._addToToolbar(),
  1691. this._bindEvent()
  1692. },
  1693. _addToToolbar: function() {
  1694. var e = this.editor
  1695. , t = e.$toolbarElem
  1696. , n = this.menus
  1697. , i = e.config
  1698. , o = i.zIndex + 1;
  1699. A(n, function(e, n) {
  1700. var i = n.$elem;
  1701. i && (i.css("z-index", o),
  1702. t.append(i))
  1703. })
  1704. },
  1705. _bindEvent: function() {
  1706. var e = this.menus
  1707. , t = this.editor;
  1708. A(e, function(e, n) {
  1709. var i = n.type;
  1710. if (i) {
  1711. var o = n.$elem
  1712. , A = n.droplist;
  1713. n.panel;
  1714. "click" === i && n.onClick && o.on("click", function(e) {
  1715. null != t.selection.getRange() && n.onClick(e)
  1716. }),
  1717. "droplist" === i && A && o.on("mouseenter", function(e) {
  1718. null != t.selection.getRange() && (A.showTimeoutId = setTimeout(function() {
  1719. A.show()
  1720. }, 200))
  1721. }).on("mouseleave", function(e) {
  1722. A.hideTimeoutId = setTimeout(function() {
  1723. A.hide()
  1724. }, 0)
  1725. }),
  1726. "panel" === i && n.onClick && o.on("click", function(e) {
  1727. e.stopPropagation(),
  1728. null != t.selection.getRange() && n.onClick(e)
  1729. })
  1730. }
  1731. })
  1732. },
  1733. changeActive: function() {
  1734. A(this.menus, function(e, t) {
  1735. t.tryChangeActive && setTimeout(function() {
  1736. t.tryChangeActive()
  1737. }, 100)
  1738. })
  1739. }
  1740. },
  1741. U.prototype = {
  1742. constructor: U,
  1743. init: function() {
  1744. this._bindEvent()
  1745. },
  1746. clear: function() {
  1747. this.html("<p><br></p>")
  1748. },
  1749. html: function(e) {
  1750. var t = this.editor
  1751. , n = t.$textElem
  1752. , i = void 0;
  1753. if (null == e)
  1754. return i = n.html(),
  1755. i = i.replace(/\u200b/gm, ""),
  1756. i;
  1757. n.html(e),
  1758. t.initSelection()
  1759. },
  1760. getJSON: function() {
  1761. return T(this.editor.$textElem)
  1762. },
  1763. text: function(e) {
  1764. var t = this.editor
  1765. , n = t.$textElem
  1766. , i = void 0;
  1767. if (null == e)
  1768. return i = n.text(),
  1769. i = i.replace(/\u200b/gm, ""),
  1770. i;
  1771. n.text("<p>" + e + "</p>"),
  1772. t.initSelection()
  1773. },
  1774. append: function(e) {
  1775. var t = this.editor;
  1776. t.$textElem.append(o(e)),
  1777. t.initSelection()
  1778. },
  1779. _bindEvent: function() {
  1780. this._saveRangeRealTime(),
  1781. this._enterKeyHandle(),
  1782. this._clearHandle(),
  1783. this._pasteHandle(),
  1784. this._tabHandle(),
  1785. this._imgHandle(),
  1786. this._dragHandle()
  1787. },
  1788. _saveRangeRealTime: function() {
  1789. function e(e) {
  1790. t.selection.saveRange(),
  1791. t.menus.changeActive()
  1792. }
  1793. var t = this.editor
  1794. , n = t.$textElem;
  1795. n.on("keyup", e),
  1796. n.on("mousedown", function(t) {
  1797. n.on("mouseleave", e)
  1798. }),
  1799. n.on("mouseup", function(t) {
  1800. e(),
  1801. n.off("mouseleave", e)
  1802. })
  1803. },
  1804. _enterKeyHandle: function() {
  1805. function e(e) {
  1806. var t = o("<p><br></p>");
  1807. t.insertBefore(e),
  1808. i.selection.createRangeByElem(t, !0),
  1809. i.selection.restoreSelection(),
  1810. e.remove()
  1811. }
  1812. function t(t) {
  1813. var n = i.selection.getSelectionContainerElem()
  1814. , o = n.parent();
  1815. if ("<code><br></code>" === o.html())
  1816. return void e(n);
  1817. if (o.equal(A)) {
  1818. "P" !== n.getNodeName() && (n.text() || e(n))
  1819. }
  1820. }
  1821. function n(e) {
  1822. var t = i.selection.getSelectionContainerElem();
  1823. if (t) {
  1824. var n = t.parent()
  1825. , A = t.getNodeName()
  1826. , r = n.getNodeName();
  1827. if ("CODE" === A && "PRE" === r && i.cmd.queryCommandSupported("insertHTML")) {
  1828. if (!0 === i._willBreakCode) {
  1829. var c = o("<p><br></p>");
  1830. return c.insertAfter(n),
  1831. i.selection.createRangeByElem(c, !0),
  1832. i.selection.restoreSelection(),
  1833. i._willBreakCode = !1,
  1834. void e.preventDefault()
  1835. }
  1836. var a = i.selection.getRange().startOffset;
  1837. i.cmd.do("insertHTML", "\n"),
  1838. i.selection.saveRange(),
  1839. i.selection.getRange().startOffset === a && i.cmd.do("insertHTML", "\n");
  1840. var s = t.html().length;
  1841. i.selection.getRange().startOffset + 1 === s && (i._willBreakCode = !0),
  1842. e.preventDefault()
  1843. }
  1844. }
  1845. }
  1846. var i = this.editor
  1847. , A = i.$textElem;
  1848. A.on("keyup", function(e) {
  1849. 13 === e.keyCode && t(e)
  1850. }),
  1851. A.on("keydown", function(e) {
  1852. if (13 !== e.keyCode)
  1853. return void (i._willBreakCode = !1);
  1854. n(e)
  1855. })
  1856. },
  1857. _clearHandle: function() {
  1858. var e = this.editor
  1859. , t = e.$textElem;
  1860. t.on("keydown", function(e) {
  1861. if (8 === e.keyCode) {
  1862. return "<p><br></p>" === t.html().toLowerCase().trim() ? void e.preventDefault() : void 0
  1863. }
  1864. }),
  1865. t.on("keyup", function(n) {
  1866. if (8 === n.keyCode) {
  1867. var i = void 0
  1868. , A = t.html().toLowerCase().trim();
  1869. A && "<br>" !== A || (i = o("<p><br/></p>"),
  1870. t.html(""),
  1871. t.append(i),
  1872. e.selection.createRangeByElem(i, !1, !0),
  1873. e.selection.restoreSelection())
  1874. }
  1875. })
  1876. },
  1877. _pasteHandle: function() {
  1878. function e() {
  1879. var e = Date.now()
  1880. , t = !1;
  1881. return e - a >= 500 && (t = !0),
  1882. a = e,
  1883. t
  1884. }
  1885. function t() {
  1886. a = 0
  1887. }
  1888. var n = this.editor
  1889. , i = n.config
  1890. , o = i.pasteFilterStyle
  1891. , A = i.pasteTextHandle
  1892. , r = i.pasteIgnoreImg
  1893. , c = n.$textElem
  1894. , a = 0;
  1895. c.on("paste", function(i) {
  1896. if (!J.isIE() && (i.preventDefault(),
  1897. e())) {
  1898. var c = F(i, o, r)
  1899. , a = N(i);
  1900. a = a.replace(/\n/gm, "<br>");
  1901. var l = n.selection.getSelectionContainerElem();
  1902. if (l) {
  1903. var d = l.getNodeName();
  1904. if ("CODE" === d || "PRE" === d)
  1905. return A && s(A) && (a = "" + (A(a) || "")),
  1906. void n.cmd.do("insertHTML", "<p>" + a + "</p>");
  1907. if (!c)
  1908. return void t();
  1909. try {
  1910. A && s(A) && (c = "" + (A(c) || "")),
  1911. n.cmd.do("insertHTML", c)
  1912. } catch (e) {
  1913. A && s(A) && (a = "" + (A(a) || "")),
  1914. n.cmd.do("insertHTML", "<p>" + a + "</p>")
  1915. }
  1916. }
  1917. }
  1918. }),
  1919. c.on("paste", function(t) {
  1920. if (!J.isIE() && (t.preventDefault(),
  1921. e())) {
  1922. var i = R(t);
  1923. if (i && i.length) {
  1924. var o = n.selection.getSelectionContainerElem();
  1925. if (o) {
  1926. var A = o.getNodeName();
  1927. if ("CODE" !== A && "PRE" !== A) {
  1928. n.uploadImg.uploadImg(i)
  1929. }
  1930. }
  1931. }
  1932. }
  1933. })
  1934. },
  1935. _tabHandle: function() {
  1936. var e = this.editor;
  1937. e.$textElem.on("keydown", function(t) {
  1938. if (9 === t.keyCode && e.cmd.queryCommandSupported("insertHTML")) {
  1939. var n = e.selection.getSelectionContainerElem();
  1940. if (n) {
  1941. var i = n.parent()
  1942. , o = n.getNodeName()
  1943. , A = i.getNodeName();
  1944. "CODE" === o && "PRE" === A ? e.cmd.do("insertHTML", " ") : e.cmd.do("insertHTML", "&nbsp;&nbsp;&nbsp;&nbsp;"),
  1945. t.preventDefault()
  1946. }
  1947. }
  1948. })
  1949. },
  1950. _imgHandle: function() {
  1951. var e = this.editor
  1952. , t = e.$textElem;
  1953. t.on("click", "img", function(t) {
  1954. var n = this
  1955. , i = o(n);
  1956. "1" !== i.attr("data-w-e") && (e._selectedImg = i,
  1957. e.selection.createRangeByElem(i),
  1958. e.selection.restoreSelection())
  1959. }),
  1960. t.on("click keyup", function(t) {
  1961. t.target.matches("img") || (e._selectedImg = null)
  1962. })
  1963. },
  1964. _dragHandle: function() {
  1965. var e = this.editor;
  1966. o(document).on("dragleave drop dragenter dragover", function(e) {
  1967. e.preventDefault()
  1968. }),
  1969. e.$textElem.on("drop", function(t) {
  1970. t.preventDefault();
  1971. var n = t.dataTransfer && t.dataTransfer.files;
  1972. n && n.length && e.uploadImg.uploadImg(n)
  1973. })
  1974. }
  1975. },
  1976. Y.prototype = {
  1977. constructor: Y,
  1978. do: function(e, t) {
  1979. var n = this.editor;
  1980. if (n._useStyleWithCSS || (document.execCommand("styleWithCSS", null, !0),
  1981. n._useStyleWithCSS = !0),
  1982. n.selection.getRange()) {
  1983. n.selection.restoreSelection();
  1984. var i = "_" + e;
  1985. this[i] ? this[i](t) : this._execCommand(e, t),
  1986. n.menus.changeActive(),
  1987. n.selection.saveRange(),
  1988. n.selection.restoreSelection(),
  1989. n.change && n.change()
  1990. }
  1991. },
  1992. _insertHTML: function(e) {
  1993. var t = this.editor
  1994. , n = t.selection.getRange();
  1995. this.queryCommandSupported("insertHTML") ? this._execCommand("insertHTML", e) : n.insertNode ? (n.deleteContents(),
  1996. n.insertNode(o(e)[0])) : n.pasteHTML && n.pasteHTML(e)
  1997. },
  1998. _insertElem: function(e) {
  1999. var t = this.editor
  2000. , n = t.selection.getRange();
  2001. n.insertNode && (n.deleteContents(),
  2002. n.insertNode(e[0]))
  2003. },
  2004. _execCommand: function(e, t) {
  2005. document.execCommand(e, !1, t)
  2006. },
  2007. queryCommandValue: function(e) {
  2008. return document.queryCommandValue(e)
  2009. },
  2010. queryCommandState: function(e) {
  2011. return document.queryCommandState(e)
  2012. },
  2013. queryCommandSupported: function(e) {
  2014. return document.queryCommandSupported(e)
  2015. }
  2016. },
  2017. P.prototype = {
  2018. constructor: P,
  2019. getRange: function() {
  2020. return this._currentRange
  2021. },
  2022. saveRange: function(e) {
  2023. if (e)
  2024. return void (this._currentRange = e);
  2025. var t = window.getSelection();
  2026. if (0 !== t.rangeCount) {
  2027. var n = t.getRangeAt(0)
  2028. , i = this.getSelectionContainerElem(n);
  2029. if (i && "false" !== i.attr("contenteditable") && !i.parentUntil("[contenteditable=false]")) {
  2030. this.editor.$textElem.isContain(i) && (this._currentRange = n)
  2031. }
  2032. }
  2033. },
  2034. collapseRange: function(e) {
  2035. null == e && (e = !1);
  2036. var t = this._currentRange;
  2037. t && t.collapse(e)
  2038. },
  2039. getSelectionText: function() {
  2040. return this._currentRange ? this._currentRange.toString() : ""
  2041. },
  2042. getSelectionContainerElem: function(e) {
  2043. e = e || this._currentRange;
  2044. var t = void 0;
  2045. if (e)
  2046. return t = e.commonAncestorContainer,
  2047. o(1 === t.nodeType ? t : t.parentNode)
  2048. },
  2049. getSelectionStartElem: function(e) {
  2050. e = e || this._currentRange;
  2051. var t = void 0;
  2052. if (e)
  2053. return t = e.startContainer,
  2054. o(1 === t.nodeType ? t : t.parentNode)
  2055. },
  2056. getSelectionEndElem: function(e) {
  2057. e = e || this._currentRange;
  2058. var t = void 0;
  2059. if (e)
  2060. return t = e.endContainer,
  2061. o(1 === t.nodeType ? t : t.parentNode)
  2062. },
  2063. isSelectionEmpty: function() {
  2064. var e = this._currentRange;
  2065. return !(!e || !e.startContainer || e.startContainer !== e.endContainer || e.startOffset !== e.endOffset)
  2066. },
  2067. restoreSelection: function() {
  2068. var e = window.getSelection();
  2069. e.removeAllRanges(),
  2070. e.addRange(this._currentRange)
  2071. },
  2072. createEmptyRange: function() {
  2073. var e = this.editor
  2074. , t = this.getRange()
  2075. , n = void 0;
  2076. if (t && this.isSelectionEmpty())
  2077. try {
  2078. J.isWebkit() ? (e.cmd.do("insertHTML", "&#8203;"),
  2079. t.setEnd(t.endContainer, t.endOffset + 1),
  2080. this.saveRange(t)) : (n = o("<strong>&#8203;</strong>"),
  2081. e.cmd.do("insertElem", n),
  2082. this.createRangeByElem(n, !0))
  2083. } catch (e) {}
  2084. },
  2085. createRangeByElem: function(e, t, n) {
  2086. if (e.length) {
  2087. var i = e[0]
  2088. , o = document.createRange();
  2089. n ? o.selectNodeContents(i) : o.selectNode(i),
  2090. "boolean" == typeof t && o.collapse(t),
  2091. this.saveRange(o)
  2092. }
  2093. }
  2094. },
  2095. H.prototype = {
  2096. constructor: H,
  2097. show: function(e) {
  2098. var t = this;
  2099. if (!this._isShow) {
  2100. this._isShow = !0;
  2101. var n = this.$bar;
  2102. if (this._isRender)
  2103. this._isRender = !0;
  2104. else {
  2105. this.$textContainer.append(n)
  2106. }
  2107. Date.now() - this._time > 100 && e <= 1 && (n.css("width", 100 * e + "%"),
  2108. this._time = Date.now());
  2109. var i = this._timeoutId;
  2110. i && clearTimeout(i),
  2111. i = setTimeout(function() {
  2112. t._hide()
  2113. }, 500)
  2114. }
  2115. },
  2116. _hide: function() {
  2117. this.$bar.remove(),
  2118. this._time = 0,
  2119. this._isShow = !1,
  2120. this._isRender = !1
  2121. }
  2122. };
  2123. var X = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
  2124. return typeof e
  2125. }
  2126. : function(e) {
  2127. return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
  2128. }
  2129. ;
  2130. L.prototype = {
  2131. constructor: L,
  2132. _alert: function(e, t) {
  2133. var n = this.editor
  2134. , i = n.config.debug
  2135. , o = n.config.customAlert;
  2136. if (i)
  2137. throw new Error("wangEditor: " + (t || e));
  2138. o && "function" == typeof o ? o(e) : alert(e)
  2139. },
  2140. insertLinkImg: function(e) {
  2141. var t = this;
  2142. if (e) {
  2143. var n = this.editor
  2144. , i = n.config
  2145. , o = i.linkImgCheck
  2146. , A = void 0;
  2147. if (o && "function" == typeof o && "string" == typeof (A = o(e)))
  2148. return void alert(A);
  2149. n.cmd.do("insertHTML", '<img src="' + e + '" style="max-width:100%;"/>');
  2150. var r = document.createElement("img");
  2151. r.onload = function() {
  2152. var t = i.linkImgCallback;
  2153. t && "function" == typeof t && t(e),
  2154. r = null
  2155. }
  2156. ,
  2157. r.onerror = function() {
  2158. r = null,
  2159. t._alert("插入图片错误", 'wangEditor: 插入图片出错,图片链接是 "' + e + '",下载该链接失败')
  2160. }
  2161. ,
  2162. r.onabort = function() {
  2163. r = null
  2164. }
  2165. ,
  2166. r.src = e
  2167. }
  2168. },
  2169. uploadImg: function(e) {
  2170. var t = this;
  2171. if (e && e.length) {
  2172. var n = this.editor
  2173. , i = n.config
  2174. , o = i.uploadImgServer
  2175. , c = i.uploadImgShowBase64
  2176. , a = i.uploadImgMaxSize
  2177. , s = a / 1024 / 1024
  2178. , l = i.uploadImgMaxLength || 1e4
  2179. , d = i.uploadFileName || ""
  2180. , u = i.uploadImgParams || {}
  2181. , h = i.uploadImgParamsWithUrl
  2182. , p = i.uploadImgHeaders || {}
  2183. , f = i.uploadImgHooks || {}
  2184. , m = i.uploadImgTimeout || 3e3
  2185. , g = i.withCredentials;
  2186. null == g && (g = !1);
  2187. var w = i.customUploadImg;
  2188. if (w || o || c) {
  2189. var v = []
  2190. , E = [];
  2191. if (r(e, function(e) {
  2192. var t = e.name
  2193. , n = e.size;
  2194. if (t && n)
  2195. return !1 === /\.(jpg|jpeg|png|bmp|gif)$/i.test(t) ? void E.push("【" + t + "】不是图片") : a < n ? void E.push("【" + t + "】大于 " + s + "M") : void v.push(e)
  2196. }),
  2197. E.length)
  2198. return void this._alert("图片验证未通过: \n" + E.join("\n"));
  2199. if (v.length > l)
  2200. return void this._alert("一次最多上传" + l + "张图片");
  2201. if (w && "function" == typeof w)
  2202. return void w(v, this.insertLinkImg.bind(this));
  2203. var b = new FormData;
  2204. if (r(v, function(e) {
  2205. var t = d || e.name;
  2206. b.append(t, e)
  2207. }),
  2208. o && "string" == typeof o) {
  2209. var B = o.split("#");
  2210. o = B[0];
  2211. var y = B[1] || "";
  2212. A(u, function(e, t) {
  2213. t = encodeURIComponent(t),
  2214. h && (o.indexOf("?") > 0 ? o += "&" : o += "?",
  2215. o = o + e + "=" + t),
  2216. b.append(e, t)
  2217. }),
  2218. y && (o += "#" + y);
  2219. var C = new XMLHttpRequest;
  2220. if (C.open("POST", o),
  2221. C.timeout = m,
  2222. C.ontimeout = function() {
  2223. f.timeout && "function" == typeof f.timeout && f.timeout(C, n),
  2224. t._alert("上传图片超时")
  2225. }
  2226. ,
  2227. C.upload && (C.upload.onprogress = function(e) {
  2228. var t = void 0
  2229. , i = new H(n);
  2230. e.lengthComputable && (t = e.loaded / e.total,
  2231. i.show(t))
  2232. }
  2233. ),
  2234. C.onreadystatechange = function() {
  2235. var e = void 0;
  2236. if (4 === C.readyState) {
  2237. if (C.status < 200 || C.status >= 300)
  2238. return f.error && "function" == typeof f.error && f.error(C, n),
  2239. void t._alert("上传图片发生错误", "上传图片发生错误,服务器返回状态是 " + C.status);
  2240. if (e = C.responseText,
  2241. "object" !== (void 0 === e ? "undefined" : X(e)))
  2242. try {
  2243. e = JSON.parse(e)
  2244. } catch (i) {
  2245. return f.fail && "function" == typeof f.fail && f.fail(C, n, e),
  2246. void t._alert("上传图片失败", "上传图片返回结果错误,返回结果是: " + e)
  2247. }
  2248. if (f.customInsert || "0" == e.errno) {
  2249. if (f.customInsert && "function" == typeof f.customInsert)
  2250. f.customInsert(t.insertLinkImg.bind(t), e, n);
  2251. else {
  2252. (e.data || []).forEach(function(e) {
  2253. t.insertLinkImg(e)
  2254. })
  2255. }
  2256. f.success && "function" == typeof f.success && f.success(C, n, e)
  2257. } else
  2258. f.fail && "function" == typeof f.fail && f.fail(C, n, e),
  2259. t._alert("上传图片失败", "上传图片返回结果错误,返回结果 errno=" + e.errno)
  2260. }
  2261. }
  2262. ,
  2263. f.before && "function" == typeof f.before) {
  2264. var x = f.before(C, n, v);
  2265. if (x && "object" === (void 0 === x ? "undefined" : X(x)) && x.prevent)
  2266. return void this._alert(x.msg)
  2267. }
  2268. return A(p, function(e, t) {
  2269. C.setRequestHeader(e, t)
  2270. }),
  2271. C.withCredentials = g,
  2272. void C.send(b)
  2273. }
  2274. c && r(e, function(e) {
  2275. var n = t
  2276. , i = new FileReader;
  2277. i.readAsDataURL(e),
  2278. i.onload = function() {
  2279. n.insertLinkImg(this.result)
  2280. }
  2281. })
  2282. }
  2283. }
  2284. }
  2285. };
  2286. var W = 1;
  2287. j.prototype = {
  2288. constructor: j,
  2289. _initConfig: function() {
  2290. var e = {};
  2291. this.config = Object.assign(e, z, this.customConfig);
  2292. var t = this.config.lang || {}
  2293. , n = [];
  2294. A(t, function(e, t) {
  2295. n.push({
  2296. reg: new RegExp(e,"img"),
  2297. val: t
  2298. })
  2299. }),
  2300. this.config.langArgs = n
  2301. },
  2302. _initDom: function() {
  2303. var e = this
  2304. , t = this.toolbarSelector
  2305. , n = o(t)
  2306. , i = this.textSelector
  2307. , A = this.config
  2308. , r = A.zIndex
  2309. , a = void 0
  2310. , s = void 0
  2311. , l = void 0
  2312. , d = void 0;
  2313. null == i ? (a = o("<div></div>"),
  2314. s = o("<div></div>"),
  2315. d = n.children(),
  2316. n.append(a).append(s),
  2317. a.css("background-color", "#f1f1f1").css("border", "1px solid #ccc"),
  2318. s.css("border", "1px solid #ccc").css("border-top", "none").css("height", "300px")) : (a = n,
  2319. s = o(i),
  2320. d = s.children()),
  2321. l = o("<div></div>"),
  2322. l.attr("contenteditable", "true").css("width", "100%").css("height", "100%"),
  2323. d && d.length ? l.append(d) : l.append(o("<p><br></p>")),
  2324. s.append(l),
  2325. a.addClass("w-e-toolbar"),
  2326. s.addClass("w-e-text-container"),
  2327. s.css("z-index", r),
  2328. l.addClass("w-e-text");
  2329. var u = c("toolbar-elem");
  2330. a.attr("id", u);
  2331. var h = c("text-elem");
  2332. l.attr("id", h),
  2333. this.$toolbarElem = a,
  2334. this.$textContainerElem = s,
  2335. this.$textElem = l,
  2336. this.toolbarElemId = u,
  2337. this.textElemId = h;
  2338. var p = !0;
  2339. s.on("compositionstart", function() {
  2340. p = !1
  2341. }),
  2342. s.on("compositionend", function() {
  2343. p = !0
  2344. }),
  2345. s.on("click keyup", function() {
  2346. p && e.change && e.change()
  2347. }),
  2348. a.on("click", function() {
  2349. this.change && this.change()
  2350. }),
  2351. (A.onfocus || A.onblur) && (this.isFocus = !1,
  2352. o(document).on("click", function(t) {
  2353. var n = l.isContain(o(t.target))
  2354. , i = a.isContain(o(t.target))
  2355. , A = a[0] == t.target;
  2356. if (n)
  2357. e.isFocus || e.onfocus && e.onfocus(),
  2358. e.isFocus = !0;
  2359. else {
  2360. if (i && !A)
  2361. return;
  2362. e.isFocus && e.onblur && e.onblur(),
  2363. e.isFocus = !1
  2364. }
  2365. }))
  2366. },
  2367. _initCommand: function() {
  2368. this.cmd = new Y(this)
  2369. },
  2370. _initSelectionAPI: function() {
  2371. this.selection = new P(this)
  2372. },
  2373. _initUploadImg: function() {
  2374. this.uploadImg = new L(this)
  2375. },
  2376. _initMenus: function() {
  2377. this.menus = new _(this),
  2378. this.menus.init()
  2379. },
  2380. _initText: function() {
  2381. this.txt = new U(this),
  2382. this.txt.init()
  2383. },
  2384. initSelection: function(e) {
  2385. var t = this.$textElem
  2386. , n = t.children();
  2387. if (!n.length)
  2388. return t.append(o("<p><br></p>")),
  2389. void this.initSelection();
  2390. var i = n.last();
  2391. if (e) {
  2392. var A = i.html().toLowerCase()
  2393. , r = i.getNodeName();
  2394. if ("<br>" !== A && "<br/>" !== A || "P" !== r)
  2395. return t.append(o("<p><br></p>")),
  2396. void this.initSelection()
  2397. }
  2398. this.selection.createRangeByElem(i, !1, !0),
  2399. this.selection.restoreSelection()
  2400. },
  2401. _bindEvent: function() {
  2402. var e = 0
  2403. , t = this.txt.html()
  2404. , n = this.config
  2405. , i = n.onchangeTimeout;
  2406. (!(i = parseInt(i, 10)) || i <= 0) && (i = 200);
  2407. var o = n.onchange;
  2408. o && "function" == typeof o && (this.change = function() {
  2409. var n = this.txt.html();
  2410. n.length === t.length && n === t || (e && clearTimeout(e),
  2411. e = setTimeout(function() {
  2412. o(n),
  2413. t = n
  2414. }, i))
  2415. }
  2416. );
  2417. var A = n.onblur;
  2418. A && "function" == typeof A && (this.onblur = function() {
  2419. var e = this.txt.html();
  2420. A(e)
  2421. }
  2422. );
  2423. var r = n.onfocus;
  2424. r && "function" == typeof r && (this.onfocus = function() {
  2425. r()
  2426. }
  2427. )
  2428. },
  2429. create: function() {
  2430. this._initConfig(),
  2431. this._initDom(),
  2432. this._initCommand(),
  2433. this._initSelectionAPI(),
  2434. this._initText(),
  2435. this._initMenus(),
  2436. this._initUploadImg(),
  2437. this.initSelection(!0),
  2438. this._bindEvent()
  2439. },
  2440. _offAllEvent: function() {
  2441. o.offAll()
  2442. }
  2443. };
  2444. try {
  2445. document
  2446. } catch (e) {
  2447. throw new Error("请在浏览器环境下运行")
  2448. }
  2449. !function() {
  2450. "function" != typeof Object.assign && (Object.assign = function(e, t) {
  2451. if (null == e)
  2452. throw new TypeError("Cannot convert undefined or null to object");
  2453. for (var n = Object(e), i = 1; i < arguments.length; i++) {
  2454. var o = arguments[i];
  2455. if (null != o)
  2456. for (var A in o)
  2457. Object.prototype.hasOwnProperty.call(o, A) && (n[A] = o[A])
  2458. }
  2459. return n
  2460. }
  2461. ),
  2462. Element.prototype.matches || (Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(e) {
  2463. for (var t = (this.document || this.ownerDocument).querySelectorAll(e), n = t.length; --n >= 0 && t.item(n) !== this; )
  2464. ;
  2465. return n > -1
  2466. }
  2467. )
  2468. }();
  2469. var Z = document.createElement("style");
  2470. return Z.type = "text/css",
  2471. Z.innerHTML = '.w-e-toolbar,.w-e-text-container,.w-e-menu-panel { padding: 0; margin: 0; box-sizing: border-box;}.w-e-toolbar *,.w-e-text-container *,.w-e-menu-panel * { padding: 0; margin: 0; box-sizing: border-box;}.w-e-clear-fix:after { content: ""; display: table; clear: both;}.w-e-toolbar .w-e-droplist { position: absolute; left: 0; top: 0; background-color: #fff; border: 1px solid #f1f1f1; border-right-color: #ccc; border-bottom-color: #ccc;}.w-e-toolbar .w-e-droplist .w-e-dp-title { text-align: center; color: #999; line-height: 2; border-bottom: 1px solid #f1f1f1; font-size: 13px;}.w-e-toolbar .w-e-droplist ul.w-e-list { list-style: none; line-height: 1;}.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item { color: #333; padding: 5px 0;}.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item:hover { background-color: #f1f1f1;}.w-e-toolbar .w-e-droplist ul.w-e-block { list-style: none; text-align: left; padding: 5px;}.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item { display: inline-block; *display: inline; *zoom: 1; padding: 3px 5px;}.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item:hover { background-color: #f1f1f1;}@font-face { font-family: \'w-e-icon\'; src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAABhQAAsAAAAAGAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIPBGNtYXAAAAFoAAABBAAAAQQrSf4BZ2FzcAAAAmwAAAAIAAAACAAAABBnbHlmAAACdAAAEvAAABLwfpUWUWhlYWQAABVkAAAANgAAADYQp00kaGhlYQAAFZwAAAAkAAAAJAfEA+FobXR4AAAVwAAAAIQAAACEeAcD7GxvY2EAABZEAAAARAAAAERBSEX+bWF4cAAAFogAAAAgAAAAIAAsALZuYW1lAAAWqAAAAYYAAAGGmUoJ+3Bvc3QAABgwAAAAIAAAACAAAwAAAAMD3gGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA8fwDwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEAOgAAAA2ACAABAAWAAEAIOkG6Q3pEulH6Wbpd+m56bvpxunL6d/qDepc6l/qZepo6nHqefAN8BTxIPHc8fz//f//AAAAAAAg6QbpDekS6UfpZel36bnpu+nG6cvp3+oN6lzqX+pi6mjqcep38A3wFPEg8dzx/P/9//8AAf/jFv4W+Bb0FsAWoxaTFlIWURZHFkMWMBYDFbUVsxWxFa8VpxWiEA8QCQ7+DkMOJAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACAAD/wAQAA8AABAATAAABNwEnAQMuAScTNwEjAQMlATUBBwGAgAHAQP5Anxc7MmOAAYDA/oDAAoABgP6ATgFAQAHAQP5A/p0yOxcBEU4BgP6A/YDAAYDA/oCAAAQAAAAABAADgAAQACEALQA0AAABOAExETgBMSE4ATEROAExITUhIgYVERQWMyEyNjURNCYjBxQGIyImNTQ2MzIWEyE1EwEzNwPA/IADgPyAGiYmGgOAGiYmGoA4KCg4OCgoOED9AOABAEDgA0D9AAMAQCYa/QAaJiYaAwAaJuAoODgoKDg4/biAAYD+wMAAAAIAAABABAADQAA4ADwAAAEmJy4BJyYjIgcOAQcGBwYHDgEHBhUUFx4BFxYXFhceARcWMzI3PgE3Njc2Nz4BNzY1NCcuAScmJwERDQED1TY4OXY8PT8/PTx2OTg2CwcICwMDAwMLCAcLNjg5djw9Pz89PHY5ODYLBwgLAwMDAwsIBwv9qwFA/sADIAgGBggCAgICCAYGCCkqKlktLi8vLi1ZKiopCAYGCAICAgIIBgYIKSoqWS0uLy8uLVkqKin94AGAwMAAAAAAAgDA/8ADQAPAABsAJwAAASIHDgEHBhUUFx4BFxYxMDc+ATc2NTQnLgEnJgMiJjU0NjMyFhUUBgIAQjs6VxkZMjJ4MjIyMngyMhkZVzo7QlBwcFBQcHADwBkZVzo7Qnh9fcxBQUFBzH19eEI7OlcZGf4AcFBQcHBQUHAAAAEAAAAABAADgAArAAABIgcOAQcGBycRISc+ATMyFx4BFxYVFAcOAQcGBxc2Nz4BNzY1NCcuAScmIwIANTIyXCkpI5YBgJA1i1BQRUZpHh4JCSIYGB5VKCAgLQwMKCiLXl1qA4AKCycbHCOW/oCQNDweHmlGRVArKClJICEaYCMrK2I2NjlqXV6LKCgAAQAAAAAEAAOAACoAABMUFx4BFxYXNyYnLgEnJjU0Nz4BNzYzMhYXByERByYnLgEnJiMiBw4BBwYADAwtICAoVR4YGCIJCR4eaUZFUFCLNZABgJYjKSlcMjI1al1eiygoAYA5NjZiKysjYBohIEkpKCtQRUZpHh48NJABgJYjHBsnCwooKIteXQAAAAACAAAAQAQBAwAAJgBNAAATMhceARcWFRQHDgEHBiMiJy4BJyY1JzQ3PgE3NjMVIgYHDgEHPgEhMhceARcWFRQHDgEHBiMiJy4BJyY1JzQ3PgE3NjMVIgYHDgEHPgHhLikpPRESEhE9KSkuLikpPRESASMjelJRXUB1LQkQBwgSAkkuKSk9ERISET0pKS4uKSk9ERIBIyN6UlFdQHUtCRAHCBICABIRPSkpLi4pKT0REhIRPSkpLiBdUVJ6IyOAMC4IEwoCARIRPSkpLi4pKT0REhIRPSkpLiBdUVJ6IyOAMC4IEwoCAQAABgBA/8AEAAPAAAMABwALABEAHQApAAAlIRUhESEVIREhFSEnESM1IzUTFTMVIzU3NSM1MxUVESM1MzUjNTM1IzUBgAKA/YACgP2AAoD9gMBAQECAwICAwMCAgICAgIACAIACAIDA/wDAQP3yMkCSPDJAku7+wEBAQEBAAAYAAP/ABAADwAADAAcACwAXACMALwAAASEVIREhFSERIRUhATQ2MzIWFRQGIyImETQ2MzIWFRQGIyImETQ2MzIWFRQGIyImAYACgP2AAoD9gAKA/YD+gEs1NUtLNTVLSzU1S0s1NUtLNTVLSzU1SwOAgP8AgP8AgANANUtLNTVLS/61NUtLNTVLS/61NUtLNTVLSwADAAAAAAQAA6AAAwANABQAADchFSElFSE1EyEVITUhJQkBIxEjEQAEAPwABAD8AIABAAEAAQD9YAEgASDggEBAwEBAAQCAgMABIP7g/wABAAAAAAACAB7/zAPiA7QAMwBkAAABIiYnJicmNDc2PwE+ATMyFhcWFxYUBwYPAQYiJyY0PwE2NCcuASMiBg8BBhQXFhQHDgEjAyImJyYnJjQ3Nj8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFxYUBwYPAQ4BIwG4ChMIIxISEhIjwCNZMTFZIyMSEhISI1gPLA8PD1gpKRQzHBwzFMApKQ8PCBMKuDFZIyMSEhISI1gPLA8PD1gpKRQzHBwzFMApKQ8PDysQIxISEhIjwCNZMQFECAckLS1eLS0kwCIlJSIkLS1eLS0kVxAQDysPWCl0KRQVFRTAKXQpDysQBwj+iCUiJC0tXi0tJFcQEA8rD1gpdCkUFRUUwCl0KQ8rEA8PJC0tXi0tJMAiJQAAAAAFAAD/wAQAA8AAGwA3AFMAXwBrAAAFMjc+ATc2NTQnLgEnJiMiBw4BBwYVFBceARcWEzIXHgEXFhUUBw4BBwYjIicuAScmNTQ3PgE3NhMyNz4BNzY3BgcOAQcGIyInLgEnJicWFx4BFxYnNDYzMhYVFAYjIiYlNDYzMhYVFAYjIiYCAGpdXosoKCgoi15dampdXosoKCgoi15dalZMTHEgISEgcUxMVlZMTHEgISEgcUxMVisrKlEmJiMFHBtWODc/Pzc4VhscBSMmJlEqK9UlGxslJRsbJQGAJRsbJSUbGyVAKCiLXl1qal1eiygoKCiLXl1qal1eiygoA6AhIHFMTFZWTExxICEhIHFMTFZWTExxICH+CQYGFRAQFEM6OlYYGRkYVjo6QxQQEBUGBvcoODgoKDg4KCg4OCgoODgAAAMAAP/ABAADwAAbADcAQwAAASIHDgEHBhUUFx4BFxYzMjc+ATc2NTQnLgEnJgMiJy4BJyY1NDc+ATc2MzIXHgEXFhUUBw4BBwYTBycHFwcXNxc3JzcCAGpdXosoKCgoi15dampdXosoKCgoi15dalZMTHEgISEgcUxMVlZMTHEgISEgcUxMSqCgYKCgYKCgYKCgA8AoKIteXWpqXV6LKCgoKIteXWpqXV6LKCj8YCEgcUxMVlZMTHEgISEgcUxMVlZMTHEgIQKgoKBgoKBgoKBgoKAAAQBl/8ADmwPAACkAAAEiJiMiBw4BBwYVFBYzLgE1NDY3MAcGAgcGBxUhEzM3IzceATMyNjcOAQMgRGhGcVNUbRobSUgGDWVKEBBLPDxZAT1sxizXNC1VJi5QGB09A7AQHh1hPj9BTTsLJjeZbwN9fv7Fj5AjGQIAgPYJDzdrCQcAAAAAAgAAAAAEAAOAAAkAFwAAJTMHJzMRIzcXIyURJyMRMxUhNTMRIwcRA4CAoKCAgKCggP8AQMCA/oCAwEDAwMACAMDAwP8AgP1AQEACwIABAAADAMAAAANAA4AAFgAfACgAAAE+ATU0Jy4BJyYjIREhMjc+ATc2NTQmATMyFhUUBisBEyMRMzIWFRQGAsQcIBQURi4vNf7AAYA1Ly5GFBRE/oRlKjw8KWafn58sPj4B2yJULzUvLkYUFPyAFBRGLi81RnQBRks1NUv+gAEASzU1SwAAAAACAMAAAANAA4AAHwAjAAABMxEUBw4BBwYjIicuAScmNREzERQWFx4BMzI2Nz4BNQEhFSECwIAZGVc6O0JCOzpXGRmAGxgcSSgoSRwYG/4AAoD9gAOA/mA8NDVOFhcXFk41NDwBoP5gHjgXGBsbGBc4Hv6ggAAAAAABAIAAAAOAA4AACwAAARUjATMVITUzASM1A4CA/sCA/kCAAUCAA4BA/QBAQAMAQAABAAAAAAQAA4AAPQAAARUjHgEVFAYHDgEjIiYnLgE1MxQWMzI2NTQmIyE1IS4BJy4BNTQ2Nz4BMzIWFx4BFSM0JiMiBhUUFjMyFhcEAOsVFjUwLHE+PnEsMDWAck5OcnJO/gABLAIEATA1NTAscT4+cSwwNYByTk5yck47bisBwEAdQSI1YiQhJCQhJGI1NExMNDRMQAEDASRiNTViJCEkJCEkYjU0TEw0NEwhHwAAAAcAAP/ABAADwAADAAcACwAPABMAGwAjAAATMxUjNzMVIyUzFSM3MxUjJTMVIwMTIRMzEyETAQMhAyMDIQMAgIDAwMABAICAwMDAAQCAgBAQ/QAQIBACgBD9QBADABAgEP2AEAHAQEBAQEBAQEBAAkD+QAHA/oABgPwAAYD+gAFA/sAAAAoAAAAABAADgAADAAcACwAPABMAFwAbAB8AIwAnAAATESERATUhFR0BITUBFSE1IxUhNREhFSElIRUhETUhFQEhFSEhNSEVAAQA/YABAP8AAQD/AED/AAEA/wACgAEA/wABAPyAAQD/AAKAAQADgPyAA4D9wMDAQMDAAgDAwMDA/wDAwMABAMDA/sDAwMAAAAUAAAAABAADgAADAAcACwAPABMAABMhFSEVIRUhESEVIREhFSERIRUhAAQA/AACgP2AAoD9gAQA/AAEAPwAA4CAQID/AIABQID/AIAAAAAABQAAAAAEAAOAAAMABwALAA8AEwAAEyEVIRchFSERIRUhAyEVIREhFSEABAD8AMACgP2AAoD9gMAEAPwABAD8AAOAgECA/wCAAUCA/wCAAAAFAAAAAAQAA4AAAwAHAAsADwATAAATIRUhBSEVIREhFSEBIRUhESEVIQAEAPwAAYACgP2AAoD9gP6ABAD8AAQA/AADgIBAgP8AgAFAgP8AgAAAAAABAD8APwLmAuYALAAAJRQPAQYjIi8BBwYjIi8BJjU0PwEnJjU0PwE2MzIfATc2MzIfARYVFA8BFxYVAuYQThAXFxCoqBAXFhBOEBCoqBAQThAWFxCoqBAXFxBOEBCoqBDDFhBOEBCoqBAQThAWFxCoqBAXFxBOEBCoqBAQThAXFxCoqBAXAAAABgAAAAADJQNuABQAKAA8AE0AVQCCAAABERQHBisBIicmNRE0NzY7ATIXFhUzERQHBisBIicmNRE0NzY7ATIXFhcRFAcGKwEiJyY1ETQ3NjsBMhcWExEhERQXFhcWMyEyNzY3NjUBIScmJyMGBwUVFAcGKwERFAcGIyEiJyY1ESMiJyY9ATQ3NjsBNzY3NjsBMhcWHwEzMhcWFQElBgUIJAgFBgYFCCQIBQaSBQUIJQgFBQUFCCUIBQWSBQUIJQgFBQUFCCUIBQVJ/gAEBAUEAgHbAgQEBAT+gAEAGwQGtQYEAfcGBQg3Ghsm/iUmGxs3CAUFBQUIsSgIFxYXtxcWFgkosAgFBgIS/rcIBQUFBQgBSQgFBgYFCP63CAUFBQUIAUkIBQYGBQj+twgFBQUFCAFJCAUGBgX+WwId/eMNCwoFBQUFCgsNAmZDBQICBVUkCAYF/eMwIiMhIi8CIAUGCCQIBQVgFQ8PDw8VYAUFCAACAAcASQO3Aq8AGgAuAAAJAQYjIi8BJjU0PwEnJjU0PwE2MzIXARYVFAcBFRQHBiMhIicmPQE0NzYzITIXFgFO/vYGBwgFHQYG4eEGBh0FCAcGAQoGBgJpBQUI/dsIBQUFBQgCJQgFBQGF/vYGBhwGCAcG4OEGBwcGHQUF/vUFCAcG/vslCAUFBQUIJQgFBQUFAAAAAQAjAAAD3QNuALMAACUiJyYjIgcGIyInJjU0NzY3Njc2NzY9ATQnJiMhIgcGHQEUFxYXFjMWFxYVFAcGIyInJiMiBwYjIicmNTQ3Njc2NzY3Nj0BETQ1NDU0JzQnJicmJyYnJicmIyInJjU0NzYzMhcWMzI3NjMyFxYVFAcGIwYHBgcGHQEUFxYzITI3Nj0BNCcmJyYnJjU0NzYzMhcWMzI3NjMyFxYVFAcGByIHBgcGFREUFxYXFhcyFxYVFAcGIwPBGTMyGhkyMxkNCAcJCg0MERAKEgEHFf5+FgcBFQkSEw4ODAsHBw4bNTUaGDExGA0HBwkJCwwQDwkSAQIBAgMEBAUIEhENDQoLBwcOGjU1GhgwMRgOBwcJCgwNEBAIFAEHDwGQDgcBFAoXFw8OBwcOGTMyGRkxMRkOBwcKCg0NEBEIFBQJEREODQoLBwcOAAICAgIMCw8RCQkBAQMDBQxE4AwFAwMFDNRRDQYBAgEICBIPDA0CAgICDAwOEQgJAQIDAwUNRSEB0AINDQgIDg4KCgsLBwcDBgEBCAgSDwwNAgICAg0MDxEICAECAQYMULYMBwEBBwy2UAwGAQEGBxYPDA0CAgICDQwPEQgIAQECBg1P/eZEDAYCAgEJCBEPDA0AAAIAAP+3A/8DtwATADkAAAEyFxYVFAcCBwYjIicmNTQ3ATYzARYXFh8BFgcGIyInJicmJyY1FhcWFxYXFjMyNzY3Njc2NzY3NjcDmygeHhq+TDdFSDQ0NQFtISn9+BcmJy8BAkxMe0c2NiEhEBEEExQQEBIRCRcIDxITFRUdHR4eKQO3GxooJDP+mUY0NTRJSTABSx/9sSsfHw0oek1MGhsuLzo6RAMPDgsLCgoWJRsaEREKCwQEAgABAAAAAAAA9evv618PPPUACwQAAAAAANbEBFgAAAAA1sQEWAAA/7cEAQPAAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAD//wQBAAEAAAAAAAAAAAAAAAAAAAAhBAAAAAAAAAAAAAAAAgAAAAQAAAAEAAAABAAAAAQAAMAEAAAABAAAAAQAAAAEAABABAAAAAQAAAAEAAAeBAAAAAQAAAAEAABlBAAAAAQAAMAEAADABAAAgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMlAD8DJQAAA74ABwQAACMD/wAAAAAAAAAKABQAHgBMAJQA+AE2AXwBwgI2AnQCvgLoA34EHgSIBMoE8gU0BXAFiAXgBiIGagaSBroG5AcoB+AIKgkcCXgAAQAAACEAtAAKAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGljb21vb24AaQBjAG8AbQBvAG8AblZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGljb21vb24AaQBjAG8AbQBvAG8Abmljb21vb24AaQBjAG8AbQBvAG8AblJlZ3VsYXIAUgBlAGcAdQBsAGEAcmljb21vb24AaQBjAG8AbQBvAG8AbkZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format(\'truetype\'); font-weight: normal; font-style: normal;}[class^="w-e-icon-"],[class*=" w-e-icon-"] { /* use !important to prevent issues with browser extensions that change fonts */ font-family: \'w-e-icon\' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}.w-e-icon-close:before { content: "";}.w-e-icon-upload2:before { content: "\\e9c6";}.w-e-icon-trash-o:before { content: "\\f014";}.w-e-icon-header:before { content: "\\f1dc";}.w-e-icon-pencil2:before { content: "\\e906";}.w-e-icon-paint-brush:before { content: "\\f1fc";}.w-e-icon-image:before { content: "\\e90d";}.w-e-icon-play:before { content: "\\e912";}.w-e-icon-location:before { content: "\\e947";}.w-e-icon-undo:before { content: "\\e965";}.w-e-icon-redo:before { content: "\\e966";}.w-e-icon-quotes-left:before { content: "\\e977";}.w-e-icon-list-numbered:before { content: "\\e9b9";}.w-e-icon-list2:before { content: "\\e9bb";}.w-e-icon-link:before { content: "";}.w-e-icon-happy:before { content: "\\e9df";}.w-e-icon-bold:before { content: "\\ea62";}.w-e-icon-underline:before { content: "\\ea63";}.w-e-icon-italic:before { content: "\\ea64";}.w-e-icon-strikethrough:before { content: "\\ea65";}.w-e-icon-table2:before { content: "\\ea71";}.w-e-icon-paragraph-left:before { content: "\\ea77";}.w-e-icon-paragraph-center:before { content: "\\ea78";}.w-e-icon-paragraph-right:before { content: "\\ea79";}.w-e-icon-terminal:before { content: "\\f120";}.w-e-icon-page-break:before { content: "\\ea68";}.w-e-icon-cancel-circle:before { content: "\\ea0d";}.w-e-icon-font:before { content: "\\ea5c";}.w-e-icon-text-heigh:before { content: "\\ea5f";}.w-e-toolbar { display: -webkit-box; display: -ms-flexbox; display: flex; padding: 0 5px; /* flex-wrap: wrap; */ /* 单个菜单 */}.w-e-toolbar .w-e-menu { position: relative; text-align: center; padding: 5px 10px; cursor: pointer;}.w-e-toolbar .w-e-menu i { color: #999;}.w-e-toolbar .w-e-menu:hover i { color: #333;}.w-e-toolbar .w-e-active i { color: #1e88e5;}.w-e-toolbar .w-e-active:hover i { color: #1e88e5;}.w-e-text-container .w-e-panel-container { position: absolute; top: 0; left: 50%; border: 1px solid #ccc; border-top: 0; box-shadow: 1px 1px 2px #ccc; color: #333; background-color: #fff; /* 为 emotion panel 定制的样式 */ /* 上传图片的 panel 定制样式 */}.w-e-text-container .w-e-panel-container .w-e-panel-close { position: absolute; right: 10px; top: 8px; cursor: pointer; width: 20px; height: 20px;background: url("../images/icon/close.png") no-repeat center; background-size: 12px;color: #999;}.w-e-text-container .w-e-panel-container .w-e-panel-close:hover { color: #333;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title { list-style: none; display: -webkit-box; display: -ms-flexbox; display: flex; display: -webkit-flex; font-size: 14px; background:#777;height:36px;align-items:center;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-item { color: #ccc; cursor: pointer; margin: 0 10px; position: relative; }.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-active { color: white; cursor: default; }.w-e-text-container .w-e-panel-container .w-e-panel-tab-content { position:relative;padding: 20px 10px 10px ; font-size: 16px; /* 输入框的样式 */ /* 按钮的样式 */}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input:focus,.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus,.w-e-text-container .w-e-panel-container .w-e-panel-tab-content button:focus { outline: none;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea { width: 100%; border: 1px solid #ccc; padding: 5px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus { border-color: #1e88e5;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text] { border: none; border-bottom: 1px solid #ccc; font-size: 14px; height: 20px; color: #333; text-align: left;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].small { width: 30px; text-align: center;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].block { display: block; width: 100% !important; margin: 10px 0;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text]:focus { border-bottom: 2px solid #1e88e5;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button { font-size: 14px; color: #1e88e5; border: none; padding: 5px 10px; background-color: #fff; cursor: pointer; border-radius: 3px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.left { float: left; margin-right: 10px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.right { width: 75px !important;height:28px;background:#09e1c0;border-radius:0px;color:white;padding:0px; }.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.gray { color: #999;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.red { color: #c24f4a;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button:hover { background-color: #14ebca;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container:after { content: ""; display: table; clear: both;}.w-e-text-container .w-e-panel-container .w-e-emoticon-container .w-e-item { cursor: pointer; font-size: 18px; padding: 0 3px; display: inline-block; *display: inline; *zoom: 1;}.w-e-text-container .w-e-panel-container .w-e-up-img-container { text-align: center;}.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn { display: inline-block; *display: inline; *zoom: 1; color: #999; cursor: pointer; font-size: 60px; line-height: 1;}.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn:hover { color: #333;}.w-e-text-container { position: relative;}.w-e-text-container .w-e-progress { position: absolute; background-color: #1e88e5; bottom: 0; left: 0; height: 1px;}.w-e-text { padding: 0 10px; overflow-y: scroll;}.w-e-text p,.w-e-text h1,.w-e-text h2,.w-e-text h3,.w-e-text h4,.w-e-text h5,.w-e-text table,.w-e-text pre { margin: 10px 0; line-height: 1.5;}.w-e-text ul,.w-e-text ol { margin: 10px 0 10px 20px;}.w-e-text blockquote { display: block; border-left: 8px solid #d0e5f2; padding: 5px 10px; margin: 10px 0; line-height: 1.4; font-size: 100%; background-color: #f1f1f1;}.w-e-text code { display: inline-block; *display: inline; *zoom: 1; background-color: #f1f1f1; border-radius: 3px; padding: 3px 5px; margin: 0 3px;}.w-e-text pre code { display: block;}.w-e-text table { border-top: 1px solid #ccc; border-left: 1px solid #ccc;}.w-e-text table td,.w-e-text table th { border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; padding: 3px 5px;}.w-e-text table th { border-bottom: 2px solid #ccc; text-align: center;}.w-e-text:focus { outline: none;}.w-e-text img { cursor: pointer;}.w-e-text img:hover { box-shadow: 0 0 5px #333;}',
  2472. document.getElementsByTagName("HEAD").item(0).appendChild(Z),
  2473. window.wangEditor || j
  2474. });
  2475. //# sourceMappingURL=wangEditor.min.js.map