TinyMce for Evernote

Adds TinyMce in Evernote with custom options including source code. A new button is added to Evernote top toolbar section.

  1. // ==UserScript==
  2. // @name TinyMce for Evernote
  3. // @namespace https://github.com/Amourspirit/TinyMce-for-Evernote
  4. // @version 3.3.4
  5. // @description Adds TinyMce in Evernote with custom options including source code. A new button is added to Evernote top toolbar section.
  6. // @author Paul Moss
  7. // @run-at document-end
  8. // @include /^https?:\/\/www\.evernote\.com\/home\.action.*n=.*$/
  9. // @include /^https?:\/\/www\.evernote\.com\/u\/0/Home\.action.*n=.*$/
  10. // @include /^https?:\/\/app\.yinxiang\.com\/Home\.action.*n=.*$/
  11. // @include /^https?:\/\/app\.yinxiang\.com\/u\/0/Home\.action.*n=.*$/
  12. // @match https://www.evernote.com/Home.action*
  13. // @match https://www.evernote.com/u/0/Home.action*
  14. // @match https://app.yinxiang.com/Home.action*
  15. // @match https://app.yinxiang.com/u/0/Home.action*
  16. // @noframes
  17. // @license MIT
  18. // @homepageURL https://amourspirit.github.io/TinyMce-for-Evernote/
  19. // @update https://github.com/Amourspirit/TinyMce-for-Evernote/raw/master/dist/TinyMce_for_Evernote.user.js
  20. // @contributionURL https://amourspirit.github.io/TinyMce-for-Evernote/#donate
  21. // @require https://openuserjs.org/src/libs/sizzle/GM_config.min.js
  22. // @require https://cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js
  23. // @require https://cdn.jsdelivr.net/npm/jquery-xpath@0.3.1/jquery.xpath.js
  24. // @grant GM_registerMenuCommand
  25. // @grant GM_addStyle
  26. // @grant GM_setValue
  27. // @grant GM_getValue
  28. // ==/UserScript==
  29. (function ($, tinymce) {
  30. 'use strict';
  31.  
  32. $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
  33. var tinymce__default = 'default' in tinymce ? tinymce['default'] : tinymce;
  34.  
  35. var PriorityLevel;
  36. (function (PriorityLevel) {
  37. PriorityLevel[PriorityLevel["none"] = 0] = "none";
  38. PriorityLevel[PriorityLevel["now"] = 1] = "now";
  39. PriorityLevel[PriorityLevel["med"] = 2] = "med";
  40. PriorityLevel[PriorityLevel["high"] = 3] = "high";
  41. })(PriorityLevel || (PriorityLevel = {}));
  42. var DebugLevel;
  43. (function (DebugLevel) {
  44. DebugLevel[DebugLevel["debug"] = 0] = "debug";
  45. DebugLevel[DebugLevel["error"] = 1] = "error";
  46. DebugLevel[DebugLevel["warn"] = 2] = "warn";
  47. DebugLevel[DebugLevel["info"] = 3] = "info";
  48. DebugLevel[DebugLevel["none"] = 4] = "none";
  49. })(DebugLevel || (DebugLevel = {}));
  50. var ElementLocation;
  51. (function (ElementLocation) {
  52. ElementLocation[ElementLocation["head"] = 0] = "head";
  53. ElementLocation[ElementLocation["body"] = 1] = "body";
  54. ElementLocation[ElementLocation["other"] = 2] = "other";
  55. })(ElementLocation || (ElementLocation = {}));
  56.  
  57. var appSettings = {
  58. tinyId: 'gminput',
  59. shortName: 'TMCEE',
  60. preKey: 'tmceen_',
  61. debugLevel: DebugLevel.none,
  62. menuName: 'TinyMce Options',
  63. tinyMceVersion: '4.1.0',
  64. fullScreenRealId: 'tinymce-real-fs'
  65. };
  66. var updateAppSetting = function (key, value) {
  67. if (appSettings.hasOwnProperty(key)) {
  68. appSettings[key] = value;
  69. }
  70. };
  71.  
  72. var Log = (function () {
  73. function Log() {
  74. }
  75. Log.message = function (msg, optionalParams) {
  76. if (appSettings.debugLevel > DebugLevel.info) {
  77. return;
  78. }
  79. var params = [];
  80. if (optionalParams) {
  81. for (var i = 0; i < optionalParams.length; i++) {
  82. params[i] = optionalParams[i];
  83. }
  84. }
  85. console.log.apply(console, [msg].concat(params));
  86. };
  87. Log.warn = function (msg, optionalParams) {
  88. if (appSettings.debugLevel > DebugLevel.warn) {
  89. return;
  90. }
  91. var params = [];
  92. if (optionalParams) {
  93. for (var i = 0; i < optionalParams.length; i++) {
  94. params[i] = optionalParams[i];
  95. }
  96. }
  97. console.warn.apply(console, [msg].concat(params));
  98. };
  99. Log.error = function (msg, optionalParams) {
  100. if (appSettings.debugLevel > DebugLevel.error) {
  101. return;
  102. }
  103. var params = [];
  104. if (optionalParams) {
  105. for (var i = 0; i < optionalParams.length; i++) {
  106. params[i] = optionalParams[i];
  107. }
  108. }
  109. console.error.apply(console, [msg].concat(params));
  110. };
  111. Log.debug = function (msg, optionalParams) {
  112. if (appSettings.debugLevel > DebugLevel.debug) {
  113. return;
  114. }
  115. var params = [];
  116. if (optionalParams) {
  117. for (var i = 0; i < optionalParams.length; i++) {
  118. params[i] = optionalParams[i];
  119. }
  120. }
  121. console.log.apply(console, [appSettings.shortName + ": Debug: " + msg].concat(params));
  122. };
  123. Log.debugWarn = function (msg, optionalParams) {
  124. if (appSettings.debugLevel > DebugLevel.debug) {
  125. return;
  126. }
  127. var params = [];
  128. if (optionalParams) {
  129. for (var i = 0; i < optionalParams.length; i++) {
  130. params[i] = optionalParams[i];
  131. }
  132. }
  133. console.warn.apply(console, [appSettings.shortName + ": Debug: " + msg].concat(params));
  134. };
  135. return Log;
  136. }());
  137.  
  138. var GmConfig = (function () {
  139. function GmConfig() {
  140. this.gmConfig = GM_config;
  141. }
  142. Object.defineProperty(GmConfig.prototype, "tinymceConfirmNoSaveExit", {
  143. get: function () {
  144. return this.gmConfig.get('tinymceConfirmNoSaveExit');
  145. },
  146. enumerable: true,
  147. configurable: true
  148. });
  149. Object.defineProperty(GmConfig.prototype, "tinymceWidth", {
  150. get: function () {
  151. return parseInt(this.gmConfig.get('tinymceWidth'), 10);
  152. },
  153. enumerable: true,
  154. configurable: true
  155. });
  156. Object.defineProperty(GmConfig.prototype, "tinymceTheme", {
  157. get: function () {
  158. return this.gmConfig.get('tinymceTheme');
  159. },
  160. enumerable: true,
  161. configurable: true
  162. });
  163. Object.defineProperty(GmConfig.prototype, "tinymcePluginFullscreen", {
  164. get: function () {
  165. return this.gmConfig.get('tinymcePluginFullscreen');
  166. },
  167. enumerable: true,
  168. configurable: true
  169. });
  170. Object.defineProperty(GmConfig.prototype, "tinymceToolbars", {
  171. get: function () {
  172. return this.gmConfig.get('tinymceToolbars');
  173. },
  174. enumerable: true,
  175. configurable: true
  176. });
  177. Object.defineProperty(GmConfig.prototype, "tinymceFontsDisplay", {
  178. get: function () {
  179. return this.gmConfig.get('tinymceFontsDisplay');
  180. },
  181. enumerable: true,
  182. configurable: true
  183. });
  184. Object.defineProperty(GmConfig.prototype, "tinymcePluginTable", {
  185. get: function () {
  186. return this.gmConfig.get('tinymcePluginTable');
  187. },
  188. enumerable: true,
  189. configurable: true
  190. });
  191. Object.defineProperty(GmConfig.prototype, "tinymcePluginCharmap", {
  192. get: function () {
  193. return this.gmConfig.get('tinymcePluginCharmap');
  194. },
  195. enumerable: true,
  196. configurable: true
  197. });
  198. Object.defineProperty(GmConfig.prototype, "tinymcePluginCode", {
  199. get: function () {
  200. return this.gmConfig.get('tinymcePluginCode');
  201. },
  202. enumerable: true,
  203. configurable: true
  204. });
  205. Object.defineProperty(GmConfig.prototype, "tinymcePluginCodeWidth", {
  206. get: function () {
  207. return parseInt(this.gmConfig.get('tinymcePluginCodeWidth'), 10);
  208. },
  209. enumerable: true,
  210. configurable: true
  211. });
  212. Object.defineProperty(GmConfig.prototype, "tinymcePluginCodeHeight", {
  213. get: function () {
  214. return parseInt(this.gmConfig.get('tinymcePluginCodeHeight'), 10);
  215. },
  216. enumerable: true,
  217. configurable: true
  218. });
  219. Object.defineProperty(GmConfig.prototype, "tinymcePluginPreview", {
  220. get: function () {
  221. return this.gmConfig.get('tinymcePluginPreview');
  222. },
  223. enumerable: true,
  224. configurable: true
  225. });
  226. Object.defineProperty(GmConfig.prototype, "tinymcePluginPrint", {
  227. get: function () {
  228. return this.gmConfig.get('tinymcePluginPrint');
  229. },
  230. enumerable: true,
  231. configurable: true
  232. });
  233. Object.defineProperty(GmConfig.prototype, "tinymcePluginInsertdatetime", {
  234. get: function () {
  235. return this.gmConfig.get('tinymcePluginInsertdatetime');
  236. },
  237. enumerable: true,
  238. configurable: true
  239. });
  240. Object.defineProperty(GmConfig.prototype, "tinymcePluginImage", {
  241. get: function () {
  242. return this.gmConfig.get('tinymcePluginImage');
  243. },
  244. enumerable: true,
  245. configurable: true
  246. });
  247. Object.defineProperty(GmConfig.prototype, "tinymcePluginSearchreplace", {
  248. get: function () {
  249. return this.gmConfig.get('tinymcePluginSearchreplace');
  250. },
  251. enumerable: true,
  252. configurable: true
  253. });
  254. Object.defineProperty(GmConfig.prototype, "tinymcePluginEmoticons", {
  255. get: function () {
  256. return this.gmConfig.get('tinymcePluginEmoticons');
  257. },
  258. enumerable: true,
  259. configurable: true
  260. });
  261. Object.defineProperty(GmConfig.prototype, "tinymcePluginAdvlist", {
  262. get: function () {
  263. return this.gmConfig.get('tinymcePluginAdvlist');
  264. },
  265. enumerable: true,
  266. configurable: true
  267. });
  268. Object.defineProperty(GmConfig.prototype, "tinymcePluginVisualblocks", {
  269. get: function () {
  270. return this.gmConfig.get('tinymcePluginVisualblocks');
  271. },
  272. enumerable: true,
  273. configurable: true
  274. });
  275. Object.defineProperty(GmConfig.prototype, "tinymcePluginVisualchars", {
  276. get: function () {
  277. return this.gmConfig.get('tinymcePluginVisualchars');
  278. },
  279. enumerable: true,
  280. configurable: true
  281. });
  282. Object.defineProperty(GmConfig.prototype, "tinymcePluginBbcode", {
  283. get: function () {
  284. return this.gmConfig.get('tinymcePluginBbcode');
  285. },
  286. enumerable: true,
  287. configurable: true
  288. });
  289. Object.defineProperty(GmConfig.prototype, "tinymcePluginWordcount", {
  290. get: function () {
  291. return this.gmConfig.get('tinymcePluginWordcount');
  292. },
  293. enumerable: true,
  294. configurable: true
  295. });
  296. Object.defineProperty(GmConfig.prototype, "tinymcePluginHilite", {
  297. get: function () {
  298. return this.gmConfig.get('tinymcePluginHilite');
  299. },
  300. enumerable: true,
  301. configurable: true
  302. });
  303. GmConfig.prototype.init = function () {
  304. var strTitle = appSettings.menuName;
  305. if (GM_info && GM_info.script && GM_info.script.version) {
  306. strTitle = appSettings.menuName + ": Version: " + GM_info.script.version;
  307. }
  308. var initValues = {
  309. id: appSettings.preKey + 'Config',
  310. title: strTitle,
  311. fields:
  312. {
  313. tinymceConfirmNoSaveExit: {
  314. section: ['TinyMce editor section'],
  315. type: 'checkbox',
  316. label: 'Ask for confirmation before closing without saving?',
  317. default: true
  318. },
  319. tinymceWidth: {
  320. label: 'Width in pixels of editor when not full screen.',
  321. type: 'int',
  322. min: 400,
  323. max: 4000,
  324. default: 660
  325. },
  326. tinymceTheme: {
  327. section: ['TinyMce Themes', 'Choose Theme'],
  328. label: 'Theme',
  329. type: 'select',
  330. options: ['Defalut Theme', 'Modern White', 'Modern two', 'Charcoal', 'SS4'],
  331. default: 'Modern White'
  332. },
  333. tinymceToolbars: {
  334. section: ['Toolbar Options', 'Selecting one will combine all the toolbars'],
  335. label: 'Select Number of Toolbars',
  336. type: 'select',
  337. options: ['one', 'two'],
  338. default: ['one']
  339. },
  340. tinymceFontsDisplay: {
  341. section: ['Font Display'],
  342. type: 'checkbox',
  343. label: 'Display Font List?',
  344. default: true
  345. },
  346. tinymcePluginFullscreen: {
  347. section: ['TinyMce plugins section', 'Plugin Options'],
  348. type: 'checkbox',
  349. label: 'Load Plugin Full Screen?',
  350. default: true
  351. },
  352. tinymcePluginTable: {
  353. type: 'checkbox',
  354. label: 'Load Plugin Table?',
  355. default: true
  356. },
  357. tinymcePluginCharmap: {
  358. type: 'checkbox',
  359. label: 'Load Plugin Special Characters?',
  360. default: true
  361. },
  362. tinymcePluginCode: {
  363. type: 'checkbox',
  364. label: 'Load Plugin Html Code?',
  365. default: true
  366. },
  367. tinymcePluginCodeWidth: {
  368. label: 'Width in pixels of HTML code editor.',
  369. type: 'int',
  370. min: 200,
  371. max: 4000,
  372. default: 400
  373. },
  374. tinymcePluginCodeHeight: {
  375. label: 'Height in pixels of HTML code editor.',
  376. type: 'int',
  377. min: 200,
  378. max: 4000,
  379. default: 300
  380. },
  381. tinymcePluginPreview: {
  382. type: 'checkbox',
  383. label: 'Load Plugin Preview?',
  384. default: true
  385. },
  386. tinymcePluginPrint: {
  387. type: 'checkbox',
  388. label: 'Load Plugin Print?',
  389. default: true
  390. },
  391. tinymcePluginInsertdatetime: {
  392. type: 'checkbox',
  393. label: 'Load Plugin Insert Date Time?',
  394. default: true
  395. },
  396. tinymcePluginImage: {
  397. type: 'checkbox',
  398. label: 'Load Plugin Image?',
  399. default: true
  400. },
  401. tinymcePluginSearchreplace: {
  402. type: 'checkbox',
  403. label: 'Load Plugin Find & Replace?',
  404. default: true
  405. },
  406. tinymcePluginEmoticons: {
  407. type: 'checkbox',
  408. label: 'Load Plugin Emoticons?',
  409. default: true
  410. },
  411. tinymcePluginAdvlist: {
  412. type: 'checkbox',
  413. label: 'Load Plugin Advanced List?',
  414. default: false
  415. },
  416. tinymcePluginVisualblocks: {
  417. type: 'checkbox',
  418. label: 'Load Plugin Visual Blocks?',
  419. default: true
  420. },
  421. tinymcePluginVisualchars: {
  422. type: 'checkbox',
  423. label: 'Load Plugin Visual Characters?',
  424. default: false
  425. },
  426. tinymcePluginBbcode: {
  427. type: 'checkbox',
  428. label: 'Load Plugin BBCode?',
  429. default: false
  430. },
  431. tinymcePluginWordcount: {
  432. type: 'checkbox',
  433. label: 'Load Plugin Word Count?',
  434. default: true
  435. },
  436. tinymcePluginHilite: {
  437. type: 'checkbox',
  438. label: 'Load Plugin Hilite?',
  439. default: true
  440. }
  441. },
  442. };
  443. GM_config.init(initValues);
  444. };
  445. return GmConfig;
  446. }());
  447. var TinymceWork = (function () {
  448. function TinymceWork() {
  449. var _this = this;
  450. this.fullscreen = false;
  451. this.gmConfig = GM_config;
  452. this.init = function () {
  453. var gmSet = new GmConfig();
  454. var ver = appSettings.tinyMceVersion;
  455. var id = appSettings.tinyId;
  456. tinymce.PluginManager.load('lists', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/lists/plugin.min.js');
  457. var loadTable = gmSet.tinymcePluginTable;
  458. if (gmSet.tinymcePluginTable) {
  459. tinymce.PluginManager.load('table', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/table/plugin.min.js');
  460. }
  461. var loadCharmap = gmSet.tinymcePluginCharmap;
  462. if (loadCharmap) {
  463. tinymce.PluginManager.load('charmap', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/charmap/plugin.min.js');
  464. }
  465. var loadCode = gmSet.tinymcePluginCode;
  466. if (loadCode) {
  467. tinymce.PluginManager.load('code', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/code/plugin.min.js');
  468. }
  469. var loadFullscreen = gmSet.tinymcePluginFullscreen;
  470. if (loadFullscreen) {
  471. tinymce.PluginManager.load('fullscreen', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/fullscreen/plugin.min.js');
  472. }
  473. var loadEmoticons = gmSet.tinymcePluginEmoticons;
  474. if (loadEmoticons) {
  475. tinymce.PluginManager.load('emoticons', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/emoticons/plugin.min.js');
  476. }
  477. var loadWordcount = gmSet.tinymcePluginWordcount;
  478. if (loadEmoticons) {
  479. tinymce.PluginManager.load('wordcount', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/wordcount/plugin.min.js');
  480. }
  481. var loadPrint = gmSet.tinymcePluginPrint;
  482. if (loadPrint) {
  483. tinymce.PluginManager.load('print', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/print/plugin.min.js');
  484. }
  485. var loadPreview = gmSet.tinymcePluginPreview;
  486. if (loadPreview) {
  487. tinymce.PluginManager.load('preview', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/preview/plugin.min.js');
  488. }
  489. var loadInsertdatetime = gmSet.tinymcePluginInsertdatetime;
  490. if (loadInsertdatetime) {
  491. tinymce.PluginManager.load('insertdatetime', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/insertdatetime/plugin.min.js');
  492. }
  493. var loadImage = gmSet.tinymcePluginImage;
  494. if (loadImage) {
  495. tinymce.PluginManager.load('image', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/image/plugin.min.js');
  496. }
  497. var loadSearchreplace = gmSet.tinymcePluginSearchreplace;
  498. if (loadSearchreplace) {
  499. tinymce.PluginManager.load('searchreplace', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/searchreplace/plugin.min.js');
  500. }
  501. var loadAdvlist = gmSet.tinymcePluginAdvlist;
  502. if (loadAdvlist) {
  503. tinymce.PluginManager.load('advlist', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/advlist/plugin.min.js');
  504. }
  505. var loadBbcode = gmSet.tinymcePluginBbcode;
  506. if (loadBbcode) {
  507. tinymce.PluginManager.load('bbcode', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/bbcode/plugin.min.js');
  508. }
  509. var loadVisualblocks = gmSet.tinymcePluginVisualblocks;
  510. if (loadVisualblocks) {
  511. tinymce.PluginManager.load('visualblocks', 'https://cdn.tinymce.com/4/plugins/visualblocks/plugin.min.js');
  512. }
  513. var loadVisualchars = gmSet.tinymcePluginVisualchars;
  514. if (loadVisualchars) {
  515. tinymce.PluginManager.load('visualchars', 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/visualchars/plugin.min.js');
  516. }
  517. var loadHilite = gmSet.tinymcePluginHilite;
  518. if (loadHilite) {
  519. tinymce.PluginManager.load('hilite', 'https://cdn.jsdelivr.net/gh/Amourspirit/TinyMCE-Plugin-hilite@9b2a96752b5162187315e07047a7c0efd706145c/js/plugin.min.js');
  520. }
  521. var tinyMceExternalPlugins = {
  522. textcolor: 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/textcolor/plugin.min.js',
  523. colorpicker: 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/colorpicker/plugin.min.js',
  524. nonbreaking: 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/nonbreaking/plugin.min.js',
  525. hr: 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/hr/plugin.min.js',
  526. link: 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/link/plugin.min.js'
  527. };
  528. var loadFont = gmSet.tinymceFontsDisplay;
  529. var toolbar1 = 'mysave myexit | ';
  530. if (loadFont) {
  531. toolbar1 += 'fontselect fontsizeselect | ';
  532. }
  533. toolbar1 += 'insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent';
  534. var toolbar2 = (loadFullscreen ? 'fullscreen ' : '');
  535. toolbar2 += (loadPrint ? 'print ' : '');
  536. toolbar2 += (loadPreview ? 'preview ' : '');
  537. toolbar2 += '| forecolor backcolor | ';
  538. toolbar2 += (loadPreview ? 'insertdatetime ' : '');
  539. toolbar2 += (loadTable ? 'table ' : '');
  540. toolbar2 += (loadSearchreplace ? 'searchreplace ' : '');
  541. toolbar2 += '| link ' + (loadImage ? 'image ' : '');
  542. toolbar2 += (loadEmoticons ? ' emoticons' : '');
  543. toolbar2 += (loadCharmap ? ' | charmap' : '');
  544. toolbar2 += (loadCode ? ' | code' : '');
  545. toolbar2 += (loadVisualchars ? ' | visualchars' : '');
  546. toolbar2 += (loadVisualblocks ? ' | visualblocks' : '');
  547. toolbar2 += (loadHilite ? ' | hilite' : '');
  548. var toolbars = [];
  549. if (gmSet.tinymceToolbars === 'one') {
  550. toolbar1 += ' | ' + toolbar2;
  551. toolbars.push(toolbar1);
  552. }
  553. else {
  554. toolbars.push(toolbar1, toolbar2);
  555. }
  556. var tinyMceInit = {
  557. selector: 'textarea#' + id,
  558. init_instance_callback: function () {
  559. $('.mce-i-mysave').addClass('save-s');
  560. $('.mce-i-myexit').addClass('exit-x');
  561. $(document).trigger('tinymceInit', {
  562. type: 'tinymceInit',
  563. message: 'init',
  564. time: new Date(),
  565. tinyMceId: id
  566. });
  567. },
  568. height: 260,
  569. inline: false,
  570. browser_spellcheck: true,
  571. plugins: '',
  572. menubar: 'edit insert format view tools' + (loadTable ? ' table' : ''),
  573. toolbar: toolbars,
  574. content_css: '',
  575. content_style: "a,blockquote,body,code,dd,del,dfn,div,dl,dt,em,h1,h2,h3,h4,h5,h6,html,iframe,img,li,ol,p,pre,q,ul{border:0;padding:0;margin:0}a,abbr,acronym,address,area,b,bdo,big,blockquote,caption,center,cite,code,col,colgroup,dd,del,dfn,div,dl,dt,em,font,h3,h4,h5,h6,hr,i,ins,kbd,li,map,ol,p,pre,q,s,samp,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,tt,u,ul{line-height:1.57143em}a,body{margin:0}body,h1,h2{font-family:gotham,helvetica,arial,sans-serif}a,img[name=en-crypt]{cursor:pointer}h3,p{margin-bottom:.714285em}del{text-decoration:line-through}dfn{font-style:italic}body{box-sizing:border-box;color:#383838;font-size:14px;padding-right:1px;word-wrap:break-word}a:link,a:visited{color:#047ac6}a:active,a:hover{color:#2596de}h1{font-size:1.5em;font-weight:700;line-height:1.04762em;margin-bottom:.4761em;margin-top:.9523em}h2{font-size:1.286em;font-weight:700;line-height:1.22222em;margin-bottom:.5556em;margin-top:1.111em}h3,h4,h5,h6{font-size:1em;font-weight:700;font-family:gotham,helvetica,arial,sans-serif}h3{margin-top:1.4285em}div{font-family:gotham,helvetica,arial,sans-serif;font-size:14px}img.en-media{height:auto;margin-bottom:1.286em;max-width:100%}img.en-media[height='1']{height:1px}p+div img,p+img{margin-top:.714285em}div+div img,div+img{margin-top:.857412em}div+div img+img,img+img,li ol,li ul{margin-top:0}ol,ul{list-style-position:outside;margin-bottom:.714285em;margin-left:2em;margin-top:.2857em;padding-left:0}li ol,li ul{margin-bottom:0}h1+ol,h1+ul,h2+ol,h2+ul,p+ol,p+ul{margin-top:-.428571em}blockquote{border-left:2px solid #bfbfbf;margin-bottom:1.4285em;margin-left:1.4285em;margin-top:1.4285em;padding-left:.714285em}code,pre{font-family:Monaco,Courier,monospace}cite{font-style:italic}table{font-size:1em}td,th{padding:.2em 2em .2em 0;text-align:left;vertical-align:top}button.en-ignore{margin-bottom:1em}.highlight{background:#c9f2d0;border:1px solid #62eb92}.Decrypted{background-color:#f7f7f7;padding:5px}.Decrypted .Header{color:#404040;font-family:gotham,helvetica,arial,sans-serif;font-size:11px;padding-bottom:5px}.Decrypted .Body{background-color:#fff;padding:5px}.canvas-container{background:url(/redesign/global/img/loading-spinner.gif) center center no-repeat #fff;border:1px solid #cacaca;margin-bottom:10px}",
  576. keep_styles: false,
  577. setup: function (ed) {
  578. ed.on('FullscreenStateChanged', function (e) {
  579. _this.fullscreen = e.state;
  580. $(document).trigger('tinymceFullScreen', {
  581. type: 'tinymceFullScreen',
  582. message: 'fullscreen toogle',
  583. time: new Date(),
  584. state: e.state,
  585. tinyMceId: id
  586. });
  587. });
  588. ed.addButton('mysave', {
  589. title: 'Save',
  590. onclick: function () {
  591. $(document).trigger('tinymceSave', {
  592. type: 'tinymceSave',
  593. message: 'save',
  594. time: new Date(),
  595. tinyMceId: id
  596. });
  597. }
  598. });
  599. ed.addButton('myexit', {
  600. title: 'Close',
  601. onclick: function () {
  602. $(document).trigger('tinymceCancel', {
  603. type: 'tinymceCancel',
  604. message: 'cancel',
  605. time: new Date(),
  606. tinyMceId: id
  607. });
  608. }
  609. });
  610. }
  611. };
  612. if (loadFont) {
  613. tinyMceInit.font_formats = 'Gotham=gotham,helvetica,sans-serif;Georgia=georgia,palatina,serif;Helvetica=helvetica,arial,sans-serif;Courier New=courier new,courier,monospace;';
  614. tinyMceInit.font_formats += 'Times New Roman=times new roman,times,serif;Trebuchet=trebuchet ms,geneva,sans-serif;Verdena=verdana,helvetica,sans-serif;';
  615. tinyMceInit.fontsize_formats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
  616. }
  617. var themeOpt = _this.gmConfig.get('tinymceTheme') + '';
  618. switch (themeOpt) {
  619. case 'Modern White':
  620. tinyMceInit.skin_url = 'https://cdn.jsdelivr.net/gh/rbecheras/tinymce-skin-modern-light-flat@dd311f2e26b2d23f15caeecca364bfcd1c40f500/light';
  621. break;
  622. case 'Modern two':
  623. tinyMceInit.skin_url = 'https://cdn.jsdelivr.net/gh/Vodzo/tinymce_theme@b1f6cc5afd13d939cb81844b8cf2edde151de998';
  624. break;
  625. case 'Charcoal':
  626. tinyMceInit.skin_url = 'https://cdn.jsdelivr.net/gh/Vodzo/tinymce_charcoal_theme@8d5f045120f09011d8d4c19dcebeed93932edb13';
  627. break;
  628. case 'SS4':
  629. tinyMceInit.skin_url = 'https://cdn.jsdelivr.net/gh/DrMartinGonzo/tinymce-ss4-theme@5442568702bf1b03453e4f161d1bd5d4e79d45e0/client/dist/TinyMCE_ss4';
  630. break;
  631. default:
  632. tinyMceInit.skin_url = '';
  633. break;
  634. }
  635. tinyMceInit.plugins = (tinyMceInit.plugins + ' -lists').trim();
  636. if (loadTable) {
  637. tinyMceInit.plugins = (tinyMceInit.plugins + ' -table').trim();
  638. }
  639. if (loadCharmap) {
  640. tinyMceInit.plugins = (tinyMceInit.plugins + ' -charmap').trim();
  641. }
  642. if (loadCode) {
  643. tinyMceInit.plugins = (tinyMceInit.plugins + ' -code').trim();
  644. tinyMceInit.code_dialog_width = parseInt(GM_config.get('tinymcePluginCodeWidth'), 10);
  645. tinyMceInit.code_dialog_height = parseInt(GM_config.get('tinymcePluginCodeHeight'), 10);
  646. }
  647. if (loadFullscreen) {
  648. tinyMceInit.plugins = (tinyMceInit.plugins + ' -fullscreen').trim();
  649. }
  650. if (loadEmoticons) {
  651. tinyMceInit.plugins = (tinyMceInit.plugins + ' -emoticons').trim();
  652. }
  653. if (loadWordcount) {
  654. tinyMceInit.plugins = (tinyMceInit.plugins + ' -wordcount').trim();
  655. }
  656. if (loadPrint) {
  657. tinyMceInit.plugins = (tinyMceInit.plugins + ' -print').trim();
  658. }
  659. if (loadPreview) {
  660. tinyMceInit.plugins = (tinyMceInit.plugins + ' -preview').trim();
  661. }
  662. if (loadInsertdatetime) {
  663. tinyMceInit.plugins = (tinyMceInit.plugins + ' -insertdatetime').trim();
  664. }
  665. if (loadImage) {
  666. tinyMceInit.plugins = (tinyMceInit.plugins + ' -image').trim();
  667. }
  668. if (loadSearchreplace) {
  669. tinyMceInit.plugins = (tinyMceInit.plugins + ' -searchreplace').trim();
  670. }
  671. if (loadAdvlist) {
  672. tinyMceInit.plugins = (tinyMceInit.plugins + ' -advlist').trim();
  673. }
  674. if (loadBbcode) {
  675. tinyMceInit.plugins = (tinyMceInit.plugins + ' -bbcode').trim();
  676. }
  677. if (loadVisualblocks) {
  678. tinyMceInit.plugins = (tinyMceInit.plugins + ' -visualblocks').trim();
  679. }
  680. if (loadVisualchars) {
  681. tinyMceInit.plugins = (tinyMceInit.plugins + ' -visualchars').trim();
  682. }
  683. if (loadHilite) {
  684. tinyMceInit.plugins = (tinyMceInit.plugins + ' -hilite').trim();
  685. }
  686. tinyMceInit.external_plugins = tinyMceExternalPlugins;
  687. tinyMceInit.style_formats_merge = true;
  688. tinyMceInit.style_formats = _this.getStyleFormats();
  689. tinymce.init(tinyMceInit);
  690. };
  691. }
  692. TinymceWork.prototype.getStyleFormats = function () {
  693. var sFmt = [];
  694. sFmt.push(this.getBlockContainers());
  695. sFmt.push(this.getFormatBlocks());
  696. return sFmt;
  697. };
  698. TinymceWork.prototype.getBlockContainers = function () {
  699. var c = { title: 'Containers', items: [
  700. { title: 'section', block: 'section', wrapper: true, merge_siblings: false },
  701. { title: 'article', block: 'article', wrapper: true, merge_siblings: false },
  702. { title: 'blockquote', block: 'blockquote', wrapper: true },
  703. { title: 'hgroup', block: 'hgroup', wrapper: true },
  704. { title: 'aside', block: 'aside', wrapper: true },
  705. { title: 'figure', block: 'figure', wrapper: true }
  706. ] };
  707. return c;
  708. };
  709. TinymceWork.prototype.getFormatBlocks = function () {
  710. var containers = {
  711. title: 'Formated Blocks'
  712. };
  713. containers.items = [];
  714. containers.items.push(this.getFormatCodeBlock());
  715. return containers;
  716. };
  717. TinymceWork.prototype.getFormatCodeBlock = function () {
  718. var codeBlock = {
  719. title: 'Code Block', block: 'div', wrapper: true, merge_siblings: true,
  720. styles: {
  721. 'box-sizing': 'border-box',
  722. 'padding': '8px',
  723. 'font-family': 'Monaco, Menlo, Consolas, \'Courier New\', monospace',
  724. 'font-size': '12px',
  725. 'color': '#333333',
  726. 'border-radius': '4px',
  727. 'background-color': '#fbfaf8',
  728. 'border': '1px solid rgba(0, 0, 0, 0.15)',
  729. '-en-codeblock': 'true'
  730. }
  731. };
  732. return codeBlock;
  733. };
  734. return TinymceWork;
  735. }());
  736.  
  737.  
  738. var extendStatics = function(d, b) {
  739. extendStatics = Object.setPrototypeOf ||
  740. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  741. function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
  742. return extendStatics(d, b);
  743. };
  744.  
  745. function __extends(d, b) {
  746. extendStatics(d, b);
  747. function __() { this.constructor = d; }
  748. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  749. }
  750.  
  751. var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
  752.  
  753. function unwrapExports (x) {
  754. return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;
  755. }
  756.  
  757. function createCommonjsModule(fn, module) {
  758. return module = { exports: {} }, fn(module, module.exports), module.exports;
  759. }
  760.  
  761. var management = createCommonjsModule(function (module, exports) {
  762. Object.defineProperty(exports, "__esModule", { value: true });
  763. var EventManagement = (function () {
  764. function EventManagement(unsub) {
  765. this.unsub = unsub;
  766. this.propagationStopped = false;
  767. }
  768. EventManagement.prototype.stopPropagation = function () {
  769. this.propagationStopped = true;
  770. };
  771. return EventManagement;
  772. }());
  773. exports.EventManagement = EventManagement;
  774. });
  775.  
  776. unwrapExports(management);
  777. var management_1 = management.EventManagement;
  778.  
  779. var subscription = createCommonjsModule(function (module, exports) {
  780. Object.defineProperty(exports, "__esModule", { value: true });
  781. var Subscription = (function () {
  782. function Subscription(handler, isOnce) {
  783. this.handler = handler;
  784. this.isOnce = isOnce;
  785. this.isExecuted = false;
  786. }
  787. Subscription.prototype.execute = function (executeAsync, scope, args) {
  788. if (!this.isOnce || !this.isExecuted) {
  789. this.isExecuted = true;
  790. var fn = this.handler;
  791. if (executeAsync) {
  792. setTimeout(function () {
  793. fn.apply(scope, args);
  794. }, 1);
  795. }
  796. else {
  797. fn.apply(scope, args);
  798. }
  799. }
  800. };
  801. return Subscription;
  802. }());
  803. exports.Subscription = Subscription;
  804. });
  805.  
  806. unwrapExports(subscription);
  807. var subscription_1 = subscription.Subscription;
  808.  
  809. var dispatching = createCommonjsModule(function (module, exports) {
  810. Object.defineProperty(exports, "__esModule", { value: true });
  811. var DispatcherBase = (function () {
  812. function DispatcherBase() {
  813. this._wrap = new DispatcherWrapper(this);
  814. this._subscriptions = new Array();
  815. }
  816. DispatcherBase.prototype.subscribe = function (fn) {
  817. var _this = this;
  818. if (fn) {
  819. this._subscriptions.push(new subscription.Subscription(fn, false));
  820. }
  821. return function () {
  822. _this.unsubscribe(fn);
  823. };
  824. };
  825. DispatcherBase.prototype.sub = function (fn) {
  826. return this.subscribe(fn);
  827. };
  828. DispatcherBase.prototype.one = function (fn) {
  829. var _this = this;
  830. if (fn) {
  831. this._subscriptions.push(new subscription.Subscription(fn, true));
  832. }
  833. return function () {
  834. _this.unsubscribe(fn);
  835. };
  836. };
  837. DispatcherBase.prototype.has = function (fn) {
  838. if (!fn)
  839. return false;
  840. return this._subscriptions.some(function (sub) { return sub.handler == fn; });
  841. };
  842. DispatcherBase.prototype.unsubscribe = function (fn) {
  843. if (!fn)
  844. return;
  845. for (var i = 0; i < this._subscriptions.length; i++) {
  846. if (this._subscriptions[i].handler == fn) {
  847. this._subscriptions.splice(i, 1);
  848. break;
  849. }
  850. }
  851. };
  852. DispatcherBase.prototype.unsub = function (fn) {
  853. this.unsubscribe(fn);
  854. };
  855. DispatcherBase.prototype._dispatch = function (executeAsync, scope, args) {
  856. var _this = this;
  857. var _loop_1 = function (sub) {
  858. var ev = new management.EventManagement(function () { return _this.unsub(sub.handler); });
  859. var nargs = Array.prototype.slice.call(args);
  860. nargs.push(ev);
  861. sub.execute(executeAsync, scope, nargs);
  862. this_1.cleanup(sub);
  863. if (!executeAsync && ev.propagationStopped) {
  864. return "break";
  865. }
  866. };
  867. var this_1 = this;
  868. for (var _i = 0, _a = this._subscriptions.slice(); _i < _a.length; _i++) {
  869. var sub = _a[_i];
  870. var state_1 = _loop_1(sub);
  871. if (state_1 === "break")
  872. break;
  873. }
  874. };
  875. DispatcherBase.prototype.cleanup = function (sub) {
  876. if (sub.isOnce && sub.isExecuted) {
  877. var i = this._subscriptions.indexOf(sub);
  878. if (i > -1) {
  879. this._subscriptions.splice(i, 1);
  880. }
  881. }
  882. };
  883. DispatcherBase.prototype.asEvent = function () {
  884. return this._wrap;
  885. };
  886. DispatcherBase.prototype.clear = function () {
  887. this._subscriptions.splice(0, this._subscriptions.length);
  888. };
  889. return DispatcherBase;
  890. }());
  891. exports.DispatcherBase = DispatcherBase;
  892. var EventListBase = (function () {
  893. function EventListBase() {
  894. this._events = {};
  895. }
  896. EventListBase.prototype.get = function (name) {
  897. var event = this._events[name];
  898. if (event) {
  899. return event;
  900. }
  901. event = this.createDispatcher();
  902. this._events[name] = event;
  903. return event;
  904. };
  905. EventListBase.prototype.remove = function (name) {
  906. delete this._events[name];
  907. };
  908. return EventListBase;
  909. }());
  910. exports.EventListBase = EventListBase;
  911. var DispatcherWrapper = (function () {
  912. function DispatcherWrapper(dispatcher) {
  913. this._subscribe = function (fn) { return dispatcher.subscribe(fn); };
  914. this._unsubscribe = function (fn) { return dispatcher.unsubscribe(fn); };
  915. this._one = function (fn) { return dispatcher.one(fn); };
  916. this._has = function (fn) { return dispatcher.has(fn); };
  917. this._clear = function () { return dispatcher.clear(); };
  918. }
  919. DispatcherWrapper.prototype.subscribe = function (fn) {
  920. return this._subscribe(fn);
  921. };
  922. DispatcherWrapper.prototype.sub = function (fn) {
  923. return this.subscribe(fn);
  924. };
  925. DispatcherWrapper.prototype.unsubscribe = function (fn) {
  926. this._unsubscribe(fn);
  927. };
  928. DispatcherWrapper.prototype.unsub = function (fn) {
  929. this.unsubscribe(fn);
  930. };
  931. DispatcherWrapper.prototype.one = function (fn) {
  932. return this._one(fn);
  933. };
  934. DispatcherWrapper.prototype.has = function (fn) {
  935. return this._has(fn);
  936. };
  937. DispatcherWrapper.prototype.clear = function () {
  938. this._clear();
  939. };
  940. return DispatcherWrapper;
  941. }());
  942. exports.DispatcherWrapper = DispatcherWrapper;
  943. });
  944.  
  945. unwrapExports(dispatching);
  946. var dispatching_1 = dispatching.DispatcherBase;
  947. var dispatching_2 = dispatching.EventListBase;
  948. var dispatching_3 = dispatching.DispatcherWrapper;
  949.  
  950. var dist = createCommonjsModule(function (module, exports) {
  951.  
  952. Object.defineProperty(exports, "__esModule", { value: true });
  953.  
  954. exports.DispatcherBase = dispatching.DispatcherBase;
  955. exports.DispatcherWrapper = dispatching.DispatcherWrapper;
  956. exports.EventListBase = dispatching.EventListBase;
  957.  
  958. exports.Subscription = subscription.Subscription;
  959. });
  960.  
  961. unwrapExports(dist);
  962. var dist_1 = dist.DispatcherBase;
  963. var dist_2 = dist.DispatcherWrapper;
  964. var dist_3 = dist.EventListBase;
  965. var dist_4 = dist.Subscription;
  966.  
  967. var events = createCommonjsModule(function (module, exports) {
  968. var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
  969. var extendStatics = Object.setPrototypeOf ||
  970. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  971. function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
  972. return function (d, b) {
  973. extendStatics(d, b);
  974. function __() { this.constructor = d; }
  975. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  976. };
  977. })();
  978. Object.defineProperty(exports, "__esModule", { value: true });
  979. var EventDispatcher = (function (_super) {
  980. __extends(EventDispatcher, _super);
  981. function EventDispatcher() {
  982. return _super.call(this) || this;
  983. }
  984. EventDispatcher.prototype.dispatch = function (sender, args) {
  985. this._dispatch(false, this, arguments);
  986. };
  987. EventDispatcher.prototype.dispatchAsync = function (sender, args) {
  988. this._dispatch(true, this, arguments);
  989. };
  990. EventDispatcher.prototype.asEvent = function () {
  991. return _super.prototype.asEvent.call(this);
  992. };
  993. return EventDispatcher;
  994. }(dist.DispatcherBase));
  995. exports.EventDispatcher = EventDispatcher;
  996. var EventList = (function (_super) {
  997. __extends(EventList, _super);
  998. function EventList() {
  999. return _super.call(this) || this;
  1000. }
  1001. EventList.prototype.createDispatcher = function () {
  1002. return new EventDispatcher();
  1003. };
  1004. return EventList;
  1005. }(dist.EventListBase));
  1006. exports.EventList = EventList;
  1007. var EventHandlingBase = (function () {
  1008. function EventHandlingBase() {
  1009. this._events = new EventList();
  1010. }
  1011. Object.defineProperty(EventHandlingBase.prototype, "events", {
  1012. get: function () {
  1013. return this._events;
  1014. },
  1015. enumerable: true,
  1016. configurable: true
  1017. });
  1018. EventHandlingBase.prototype.subscribe = function (name, fn) {
  1019. this._events.get(name).subscribe(fn);
  1020. };
  1021. EventHandlingBase.prototype.sub = function (name, fn) {
  1022. this.subscribe(name, fn);
  1023. };
  1024. EventHandlingBase.prototype.unsubscribe = function (name, fn) {
  1025. this._events.get(name).unsubscribe(fn);
  1026. };
  1027. EventHandlingBase.prototype.unsub = function (name, fn) {
  1028. this.unsubscribe(name, fn);
  1029. };
  1030. EventHandlingBase.prototype.one = function (name, fn) {
  1031. this._events.get(name).one(fn);
  1032. };
  1033. EventHandlingBase.prototype.has = function (name, fn) {
  1034. return this._events.get(name).has(fn);
  1035. };
  1036. return EventHandlingBase;
  1037. }());
  1038. exports.EventHandlingBase = EventHandlingBase;
  1039. });
  1040.  
  1041. unwrapExports(events);
  1042. var events_1 = events.EventDispatcher;
  1043. var events_2 = events.EventList;
  1044. var events_3 = events.EventHandlingBase;
  1045.  
  1046. var dist$1 = createCommonjsModule(function (module, exports) {
  1047. Object.defineProperty(exports, "__esModule", { value: true });
  1048.  
  1049. exports.EventDispatcher = events.EventDispatcher;
  1050. exports.EventHandlingBase = events.EventHandlingBase;
  1051. exports.EventList = events.EventList;
  1052. });
  1053.  
  1054. unwrapExports(dist$1);
  1055. var dist_1$1 = dist$1.EventDispatcher;
  1056. var dist_2$1 = dist$1.EventHandlingBase;
  1057. var dist_3$1 = dist$1.EventList;
  1058.  
  1059. var simpleEvents = createCommonjsModule(function (module, exports) {
  1060. var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
  1061. var extendStatics = Object.setPrototypeOf ||
  1062. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  1063. function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
  1064. return function (d, b) {
  1065. extendStatics(d, b);
  1066. function __() { this.constructor = d; }
  1067. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  1068. };
  1069. })();
  1070. Object.defineProperty(exports, "__esModule", { value: true });
  1071. var SimpleEventDispatcher = (function (_super) {
  1072. __extends(SimpleEventDispatcher, _super);
  1073. function SimpleEventDispatcher() {
  1074. return _super.call(this) || this;
  1075. }
  1076. SimpleEventDispatcher.prototype.dispatch = function (args) {
  1077. this._dispatch(false, this, arguments);
  1078. };
  1079. SimpleEventDispatcher.prototype.dispatchAsync = function (args) {
  1080. this._dispatch(true, this, arguments);
  1081. };
  1082. SimpleEventDispatcher.prototype.asEvent = function () {
  1083. return _super.prototype.asEvent.call(this);
  1084. };
  1085. return SimpleEventDispatcher;
  1086. }(dist.DispatcherBase));
  1087. exports.SimpleEventDispatcher = SimpleEventDispatcher;
  1088. var SimpleEventList = (function (_super) {
  1089. __extends(SimpleEventList, _super);
  1090. function SimpleEventList() {
  1091. return _super.call(this) || this;
  1092. }
  1093. SimpleEventList.prototype.createDispatcher = function () {
  1094. return new SimpleEventDispatcher();
  1095. };
  1096. return SimpleEventList;
  1097. }(dist.EventListBase));
  1098. exports.SimpleEventList = SimpleEventList;
  1099. var SimpleEventHandlingBase = (function () {
  1100. function SimpleEventHandlingBase() {
  1101. this._events = new SimpleEventList();
  1102. }
  1103. Object.defineProperty(SimpleEventHandlingBase.prototype, "events", {
  1104. get: function () {
  1105. return this._events;
  1106. },
  1107. enumerable: true,
  1108. configurable: true
  1109. });
  1110. SimpleEventHandlingBase.prototype.subscribe = function (name, fn) {
  1111. this._events.get(name).subscribe(fn);
  1112. };
  1113. SimpleEventHandlingBase.prototype.sub = function (name, fn) {
  1114. this.subscribe(name, fn);
  1115. };
  1116. SimpleEventHandlingBase.prototype.one = function (name, fn) {
  1117. this._events.get(name).one(fn);
  1118. };
  1119. SimpleEventHandlingBase.prototype.has = function (name, fn) {
  1120. return this._events.get(name).has(fn);
  1121. };
  1122. SimpleEventHandlingBase.prototype.unsubscribe = function (name, fn) {
  1123. this._events.get(name).unsubscribe(fn);
  1124. };
  1125. SimpleEventHandlingBase.prototype.unsub = function (name, fn) {
  1126. this.unsubscribe(name, fn);
  1127. };
  1128. return SimpleEventHandlingBase;
  1129. }());
  1130. exports.SimpleEventHandlingBase = SimpleEventHandlingBase;
  1131. });
  1132.  
  1133. unwrapExports(simpleEvents);
  1134. var simpleEvents_1 = simpleEvents.SimpleEventDispatcher;
  1135. var simpleEvents_2 = simpleEvents.SimpleEventList;
  1136. var simpleEvents_3 = simpleEvents.SimpleEventHandlingBase;
  1137.  
  1138. var dist$2 = createCommonjsModule(function (module, exports) {
  1139. Object.defineProperty(exports, "__esModule", { value: true });
  1140.  
  1141. exports.SimpleEventDispatcher = simpleEvents.SimpleEventDispatcher;
  1142. exports.SimpleEventHandlingBase = simpleEvents.SimpleEventHandlingBase;
  1143. exports.SimpleEventList = simpleEvents.SimpleEventList;
  1144. });
  1145.  
  1146. unwrapExports(dist$2);
  1147. var dist_1$2 = dist$2.SimpleEventDispatcher;
  1148. var dist_2$2 = dist$2.SimpleEventHandlingBase;
  1149. var dist_3$2 = dist$2.SimpleEventList;
  1150.  
  1151. var signals = createCommonjsModule(function (module, exports) {
  1152. var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
  1153. var extendStatics = Object.setPrototypeOf ||
  1154. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  1155. function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
  1156. return function (d, b) {
  1157. extendStatics(d, b);
  1158. function __() { this.constructor = d; }
  1159. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  1160. };
  1161. })();
  1162. Object.defineProperty(exports, "__esModule", { value: true });
  1163. var SignalDispatcher = (function (_super) {
  1164. __extends(SignalDispatcher, _super);
  1165. function SignalDispatcher() {
  1166. return _super.call(this) || this;
  1167. }
  1168. SignalDispatcher.prototype.dispatch = function () {
  1169. this._dispatch(false, this, arguments);
  1170. };
  1171. SignalDispatcher.prototype.dispatchAsync = function () {
  1172. this._dispatch(true, this, arguments);
  1173. };
  1174. SignalDispatcher.prototype.asEvent = function () {
  1175. return _super.prototype.asEvent.call(this);
  1176. };
  1177. return SignalDispatcher;
  1178. }(dist.DispatcherBase));
  1179. exports.SignalDispatcher = SignalDispatcher;
  1180. var SignalList = (function (_super) {
  1181. __extends(SignalList, _super);
  1182. function SignalList() {
  1183. return _super.call(this) || this;
  1184. }
  1185. SignalList.prototype.createDispatcher = function () {
  1186. return new SignalDispatcher();
  1187. };
  1188. return SignalList;
  1189. }(dist.EventListBase));
  1190. exports.SignalList = SignalList;
  1191. var SignalHandlingBase = (function () {
  1192. function SignalHandlingBase() {
  1193. this._events = new SignalList();
  1194. }
  1195. Object.defineProperty(SignalHandlingBase.prototype, "events", {
  1196. get: function () {
  1197. return this._events;
  1198. },
  1199. enumerable: true,
  1200. configurable: true
  1201. });
  1202. SignalHandlingBase.prototype.one = function (name, fn) {
  1203. this._events.get(name).one(fn);
  1204. };
  1205. SignalHandlingBase.prototype.has = function (name, fn) {
  1206. return this._events.get(name).has(fn);
  1207. };
  1208. SignalHandlingBase.prototype.subscribe = function (name, fn) {
  1209. this._events.get(name).subscribe(fn);
  1210. };
  1211. SignalHandlingBase.prototype.sub = function (name, fn) {
  1212. this.subscribe(name, fn);
  1213. };
  1214. SignalHandlingBase.prototype.unsubscribe = function (name, fn) {
  1215. this._events.get(name).unsubscribe(fn);
  1216. };
  1217. SignalHandlingBase.prototype.unsub = function (name, fn) {
  1218. this.unsubscribe(name, fn);
  1219. };
  1220. return SignalHandlingBase;
  1221. }());
  1222. exports.SignalHandlingBase = SignalHandlingBase;
  1223. });
  1224.  
  1225. unwrapExports(signals);
  1226. var signals_1 = signals.SignalDispatcher;
  1227. var signals_2 = signals.SignalList;
  1228. var signals_3 = signals.SignalHandlingBase;
  1229.  
  1230. var dist$3 = createCommonjsModule(function (module, exports) {
  1231. Object.defineProperty(exports, "__esModule", { value: true });
  1232.  
  1233. exports.SignalDispatcher = signals.SignalDispatcher;
  1234. exports.SignalHandlingBase = signals.SignalHandlingBase;
  1235. exports.SignalList = signals.SignalList;
  1236. });
  1237.  
  1238. unwrapExports(dist$3);
  1239. var dist_1$3 = dist$3.SignalDispatcher;
  1240. var dist_2$3 = dist$3.SignalHandlingBase;
  1241. var dist_3$3 = dist$3.SignalList;
  1242.  
  1243. var dist$4 = createCommonjsModule(function (module, exports) {
  1244.  
  1245. Object.defineProperty(exports, "__esModule", { value: true });
  1246.  
  1247. exports.DispatcherBase = dist.DispatcherBase;
  1248. exports.DispatcherWrapper = dist.DispatcherWrapper;
  1249. exports.EventListBase = dist.EventListBase;
  1250. exports.Subscription = dist.Subscription;
  1251.  
  1252. exports.EventDispatcher = dist$1.EventDispatcher;
  1253. exports.EventHandlingBase = dist$1.EventHandlingBase;
  1254. exports.EventList = dist$1.EventList;
  1255.  
  1256. exports.SimpleEventDispatcher = dist$2.SimpleEventDispatcher;
  1257. exports.SimpleEventHandlingBase = dist$2.SimpleEventHandlingBase;
  1258. exports.SimpleEventList = dist$2.SimpleEventList;
  1259.  
  1260. exports.SignalDispatcher = dist$3.SignalDispatcher;
  1261. exports.SignalHandlingBase = dist$3.SignalHandlingBase;
  1262. exports.SignalList = dist$3.SignalList;
  1263. });
  1264.  
  1265. unwrapExports(dist$4);
  1266. var dist_1$4 = dist$4.DispatcherBase;
  1267. var dist_2$4 = dist$4.DispatcherWrapper;
  1268. var dist_3$4 = dist$4.EventListBase;
  1269. var dist_4$1 = dist$4.Subscription;
  1270. var dist_5 = dist$4.EventDispatcher;
  1271. var dist_6 = dist$4.EventHandlingBase;
  1272. var dist_7 = dist$4.EventList;
  1273. var dist_8 = dist$4.SimpleEventDispatcher;
  1274. var dist_9 = dist$4.SimpleEventHandlingBase;
  1275. var dist_10 = dist$4.SimpleEventList;
  1276. var dist_11 = dist$4.SignalDispatcher;
  1277. var dist_12 = dist$4.SignalHandlingBase;
  1278. var dist_13 = dist$4.SignalList;
  1279. var EventArgs = (function () {
  1280. function EventArgs() {
  1281. this.cancel = false;
  1282. }
  1283. return EventArgs;
  1284. }());
  1285.  
  1286. var IntervalEventArgs = (function (_super) {
  1287. __extends(IntervalEventArgs, _super);
  1288. function IntervalEventArgs(ticks, interval) {
  1289. if (interval === void 0) { interval = 0; }
  1290. var _this = _super.call(this) || this;
  1291. _this.lCount = ticks;
  1292. _this.lInterval = interval;
  1293. return _this;
  1294. }
  1295. Object.defineProperty(IntervalEventArgs.prototype, "count", {
  1296. get: function () {
  1297. return this.lCount;
  1298. },
  1299. enumerable: true,
  1300. configurable: true
  1301. });
  1302. Object.defineProperty(IntervalEventArgs.prototype, "interval", {
  1303. get: function () {
  1304. return this.lInterval;
  1305. },
  1306. enumerable: true,
  1307. configurable: true
  1308. });
  1309. return IntervalEventArgs;
  1310. }(EventArgs));
  1311. var exceptionMessages = {
  1312. argLessThenZero: 'Argument "{0}" must to be zero or greater',
  1313. argLessThenOne: 'Argument "{0}" must be one or greater',
  1314. argEmptyString: 'Argument "{0}" is not allowed to be an empty string',
  1315. argKeyExist: 'Argument "{0}" invalid key. Key "{1}" already exist.'
  1316. };
  1317.  
  1318. Number.prototype.thousandsSeperator = function () {
  1319. return Number(this).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
  1320. };
  1321. String.Format = function (str) {
  1322. var args = [];
  1323. for (var _i = 1; _i < arguments.length; _i++) {
  1324. args[_i - 1] = arguments[_i];
  1325. }
  1326. return str.replace(/{(\d+)}/g, function (match, index) { return args[index] || ''; });
  1327. };
  1328. var Interval = (function () {
  1329. function Interval(interval, maxCount) {
  1330. var _this = this;
  1331. this.edOnTick = new dist_5();
  1332. this.edOnTickExpired = new dist_5();
  1333. this.lTick = 0;
  1334. this.lIsDisposed = false;
  1335. this.isAtInterval = function () {
  1336. return _this.lTick > _this.lMaxTick;
  1337. };
  1338. this.lMaxTick = maxCount;
  1339. this.lIntervalTime = interval;
  1340. if (this.lIntervalTime < 0) {
  1341. throw new RangeError(String.Format(exceptionMessages.argLessThenZero, 'interval'));
  1342. }
  1343. if (this.lMaxTick < 1) {
  1344. return;
  1345. }
  1346. this.startInterval();
  1347. }
  1348. Interval.prototype.onTick = function () {
  1349. return this.edOnTick.asEvent();
  1350. };
  1351. Interval.prototype.onExpired = function () {
  1352. return this.edOnTickExpired.asEvent();
  1353. };
  1354. Interval.prototype.dispose = function () {
  1355. if (this.lIsDisposed === true) {
  1356. return;
  1357. }
  1358. try {
  1359. if (this.lInterval) {
  1360. clearInterval(this.lInterval);
  1361. }
  1362. }
  1363. finally {
  1364. this.lMaxTick = 0;
  1365. this.lIntervalTime = 0;
  1366. this.lMaxTick = 0;
  1367. this.lIsDisposed = true;
  1368. }
  1369. };
  1370. Object.defineProperty(Interval.prototype, "isDisposed", {
  1371. get: function () {
  1372. return this.lIsDisposed;
  1373. },
  1374. enumerable: true,
  1375. configurable: true
  1376. });
  1377. Object.defineProperty(Interval.prototype, "count", {
  1378. get: function () {
  1379. return this.lTick;
  1380. },
  1381. enumerable: true,
  1382. configurable: true
  1383. });
  1384. Interval.prototype.startInterval = function () {
  1385. var _this = this;
  1386. this.lInterval = setInterval(function () {
  1387. _this.tick();
  1388. }, this.lIntervalTime);
  1389. };
  1390. Interval.prototype.onTickTock = function (eventArgs) {
  1391. if (eventArgs.cancel === true) {
  1392. return;
  1393. }
  1394. return;
  1395. };
  1396. Interval.prototype.onTicks = function (eventArgs) {
  1397. if (eventArgs.cancel === true) {
  1398. return;
  1399. }
  1400. return;
  1401. };
  1402. Interval.prototype.onTickExpired = function (eventArgs) {
  1403. if (eventArgs.cancel === true) {
  1404. return;
  1405. }
  1406. return;
  1407. };
  1408. Interval.prototype.tick = function () {
  1409. this.lTick += 1;
  1410. var eventArgs = new IntervalEventArgs(this.lTick, this.lIntervalTime);
  1411. this.onTicks(eventArgs);
  1412. if (this.isAtInterval()) {
  1413. if (this.lInterval) {
  1414. clearInterval(this.lInterval);
  1415. }
  1416. this.onTickExpired(eventArgs);
  1417. if (eventArgs.cancel === true) {
  1418. return;
  1419. }
  1420. this.edOnTickExpired.dispatch(this, eventArgs);
  1421. }
  1422. else {
  1423. this.onTickTock(eventArgs);
  1424. if (eventArgs.cancel === true) {
  1425. return;
  1426. }
  1427. this.edOnTick.dispatch(this, eventArgs);
  1428. }
  1429. };
  1430. return Interval;
  1431. }());
  1432. var IntervalManual = (function (_super) {
  1433. __extends(IntervalManual, _super);
  1434. function IntervalManual(interval, maxCount) {
  1435. var _this = _super.call(this, interval, maxCount) || this;
  1436. _this.lIsStarted = false;
  1437. return _this;
  1438. }
  1439. IntervalManual.prototype.start = function () {
  1440. if (this.isStarted === true) {
  1441. return;
  1442. }
  1443. this.lIsStarted = true;
  1444. _super.prototype.startInterval.call(this);
  1445. };
  1446. IntervalManual.prototype.dispose = function () {
  1447. this.lIsStarted = false;
  1448. _super.prototype.dispose.call(this);
  1449. };
  1450. Object.defineProperty(IntervalManual.prototype, "isStarted", {
  1451. get: function () {
  1452. return this.lIsStarted;
  1453. },
  1454. enumerable: true,
  1455. configurable: true
  1456. });
  1457. IntervalManual.prototype.startInterval = function () {
  1458. };
  1459. return IntervalManual;
  1460. }(Interval));
  1461. var Evernote = (function () {
  1462. function Evernote() {
  1463. var _this = this;
  1464. this.btnSelector = '';
  1465. this.iframeSelector = '';
  1466. this.noteSelector = '';
  1467. this.tinymceDivId = '';
  1468. this.fullScreen = false;
  1469. this.TMCE = new TinymceWork();
  1470. this.init = function () {
  1471. _this.allScriptsLoaded();
  1472. };
  1473. this.onTinymceInit = function (e) {
  1474. Log.message(appSettings.shortName + ': Tiny Mce Init was triggered');
  1475. };
  1476. this.onTinymceSave = function (e, data) {
  1477. if (data.tinyMceId === appSettings.tinyId) {
  1478. _this.save();
  1479. _this.lightBoxReset();
  1480. var ed = tinymce__default.EditorManager.editors[data.tinyMceId];
  1481. if (!ed) {
  1482. Log.error(methodName + ": Editor was not found and is null. Param e, data", [e, data]);
  1483. }
  1484. ed.setContent('');
  1485. }
  1486. };
  1487. this.onTinymceCancel = function (e, data) {
  1488. if (data.tinyMceId === appSettings.tinyId) {
  1489. var ed = tinymce__default.EditorManager.editors[data.tinyMceId];
  1490. if (!ed) {
  1491. Log.error(methodName + ": Editor was not found and is null. Params e, data", [e, data]);
  1492. }
  1493. var confirm_1 = GM_config.get('tinymceConfirmNoSaveExit');
  1494. if (confirm_1) {
  1495. if (_this.confirmExit()) {
  1496. _this.lightBoxReset();
  1497. ed.setContent('');
  1498. }
  1499. }
  1500. else {
  1501. _this.lightBoxReset();
  1502. ed.setContent('');
  1503. }
  1504. }
  1505. };
  1506. this.onTinyMceFulllscreen = function (e, data) {
  1507. if (data.tinyMceId === appSettings.tinyId) {
  1508. _this.getTinymceDivId();
  1509. _this.fullScreen = e.state;
  1510. if (data.state) {
  1511. if ($('#tinybox').hasClass('gmbox-window')) {
  1512. $('#tinybox').removeClass('gmbox-window');
  1513. }
  1514. }
  1515. else {
  1516. if (!$('#tinybox').hasClass('gmbox-window')) {
  1517. $('#tinybox').addClass('gmbox-window');
  1518. }
  1519. }
  1520. }
  1521. };
  1522. this.confirmExit = function () {
  1523. return confirm('Are you sure you want to close this editor?');
  1524. };
  1525. this.save = function () {
  1526. var k = appSettings.tinyId;
  1527. var ed = tinymce__default.EditorManager.editors[k];
  1528. var e = ed.getContent();
  1529. $('.gmbackdrop, .gmbox').animate({
  1530. opacity: '0'
  1531. }, 300, 'linear', function () {
  1532. $('.gmbackdrop, .gmbox').css('display', 'none');
  1533. });
  1534. var content = $(_this.iframeSelector).contents().find(_this.noteSelector);
  1535. content.html(e);
  1536. $('textarea#gminput').val(''), ed.setContent('');
  1537. };
  1538. }
  1539. Evernote.prototype.allScriptsLoaded = function () {
  1540. Log.message(appSettings.shortName + ': all scripts have been loaded.');
  1541. this.btnSelector = '//*[@id="gwt-debug-NoteAttributesView-root"]/div[1]/div[1]';
  1542. if (/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())) {
  1543. this.iframeSelector = '.RichTextArea-entinymce';
  1544. this.noteSelector = 'body';
  1545. }
  1546. else {
  1547. this.iframeSelector = '.RichTextArea-entinymce';
  1548. this.noteSelector = 'body';
  1549. }
  1550. this.ensurePlugins();
  1551. this.addToolbarButton();
  1552. $(document).on('editBtnAdded', this.onEditBtnAdded);
  1553. $(document).on('tinymceInit', this.onTinymceInit);
  1554. $(document).on('tinymceSave', this.onTinymceSave);
  1555. $(document).on('tinymceCancel', this.onTinymceCancel);
  1556. $(document).on('tinymceFullScreen', this.onTinyMceFulllscreen);
  1557. this.TMCE.init();
  1558. var intGmboxPadLeft = parseInt($('.gmbox').css('padding-left'), 10);
  1559. var intGmboxPadRight = parseInt($('.gmbox').css('padding-right'), 10);
  1560. var intTinymceWidth = parseInt(GM_config.get('tinymceWidth'), 10);
  1561. intTinymceWidth = intTinymceWidth - (intGmboxPadLeft + intGmboxPadRight);
  1562. $('.gmbox-window').width(intTinymceWidth);
  1563. $('.gmclose').click(function () {
  1564. $(document).trigger('tinymceCancel', {
  1565. message: 'cancel',
  1566. tinyMceId: appSettings.tinyId
  1567. });
  1568. });
  1569. };
  1570. Evernote.prototype.onEditBtnAdded = function () {
  1571. Log.message(appSettings.shortName + ': onEditBtnAdded event fired');
  1572. this.addButtonClick();
  1573. };
  1574. Evernote.prototype.addButtonClick = function () {
  1575. var _this = this;
  1576. if ($('#gm-edit-btn').length) {
  1577. $('#gm-edit-btn').click(function () {
  1578. var k = appSettings.tinyId;
  1579. var ed = tinymce__default.EditorManager.editors[k];
  1580. if (_this.fullScreen) {
  1581. ed.execCommand('mceFullScreen');
  1582. }
  1583. ed.setContent($(_this.iframeSelector).contents().find(_this.noteSelector).html());
  1584. $('.gmbackdrop, .gmbox').animate({
  1585. opacity: '.50'
  1586. }, 300, 'linear');
  1587. $('.gmbox').animate({
  1588. opacity: '1.00'
  1589. }, 300, 'linear');
  1590. $('.gmbackdrop, .gmbox').css('display', 'block');
  1591. });
  1592. Log.message(appSettings.shortName + ": Edit Button Click added");
  1593. }
  1594. else {
  1595. Log.error(appSettings.shortName + ": addButtonClick: #gm-edit-btn was not found");
  1596. }
  1597. };
  1598. Evernote.prototype.addToolbarButton = function () {
  1599. var _this = this;
  1600. var ivm = new IntervalManual(500, 20);
  1601. var tickCount = 0;
  1602. ivm.onTick().subscribe(function (sender, args) {
  1603. tickCount++;
  1604. Log.message(appSettings.shortName + ": try no. " + tickCount + " to find element for button pacement");
  1605. var objElement = $(document.body).xpath(_this.btnSelector);
  1606. if (objElement.length) {
  1607. ivm.dispose();
  1608. Log.message(appSettings.shortName + ": Found element for button placement on " + tickCount + " try");
  1609. objElement.append(_this.createToolbarHtml());
  1610. _this.onEditBtnAdded();
  1611. }
  1612. });
  1613. ivm.onExpired().subscribe(function (sender, args) {
  1614. Log.error(methodName + ": unable to located selector for main button after " + args.count + " attempts");
  1615. });
  1616. ivm.start();
  1617. };
  1618. Evernote.prototype.lightBoxReset = function () {
  1619. $('.gmbackdrop, .gmbox').animate({
  1620. opacity: '0'
  1621. }, 300, 'linear', function () {
  1622. $('.gmbackdrop, .gmbox').css('display', 'none');
  1623. });
  1624. $('textarea#gminput').val('');
  1625. };
  1626. Evernote.prototype.ensurePlugins = function () {
  1627. if (typeof ($.fn.tagName) === 'undefined') {
  1628. $.fn.tagName = function (toLower) {
  1629. var tn = this.prop('tagName');
  1630. if (toLower) {
  1631. tn = tn.toLowerCase();
  1632. }
  1633. return tn;
  1634. };
  1635. }
  1636. };
  1637. Evernote.prototype.createToolbarHtml = function () {
  1638. var css = '';
  1639. var btnHtml = "<div tabindex=\"0\" id=\"gm-edit-btn\" style=\"display:inline-block;\" name=\"gm-edit-btn\" class=\"gm-btn\"></div>";
  1640. var html = '';
  1641. html += "<div tabindex=\"0\" id=\"gm-tb\" title=\"Edit with TinyMCE\" style=\"" + css + "\">" + btnHtml + "</div>";
  1642. return html;
  1643. };
  1644. Evernote.prototype.getTinymceDivId = function () {
  1645. if (this.tinymceDivId.length > 0) {
  1646. return this.tinymceDivId;
  1647. }
  1648. var div = $("div#" + appSettings.fullScreenRealId + " :first-child");
  1649. if (div.length > 0) {
  1650. this.tinymceDivId = div.attr('id') + '';
  1651. }
  1652. return this.tinymceDivId;
  1653. };
  1654. return Evernote;
  1655. }());
  1656.  
  1657. var ElementLoaderEventArgs = (function (_super) {
  1658. __extends(ElementLoaderEventArgs, _super);
  1659. function ElementLoaderEventArgs(key, elmArgs) {
  1660. var _this = _super.call(this) || this;
  1661. _this.loadFailed = false;
  1662. _this.lInterval = 0;
  1663. _this.lCount = 0;
  1664. _this.lkey = key;
  1665. _this.elementArgs = elmArgs;
  1666. _this.lCount = elmArgs.count;
  1667. _this.lInterval = elmArgs.interval;
  1668. return _this;
  1669. }
  1670. Object.defineProperty(ElementLoaderEventArgs.prototype, "count", {
  1671. get: function () {
  1672. return this.lCount;
  1673. },
  1674. enumerable: true,
  1675. configurable: true
  1676. });
  1677. Object.defineProperty(ElementLoaderEventArgs.prototype, "key", {
  1678. get: function () {
  1679. return this.lkey;
  1680. },
  1681. enumerable: true,
  1682. configurable: true
  1683. });
  1684. Object.defineProperty(ElementLoaderEventArgs.prototype, "interval", {
  1685. get: function () {
  1686. return this.lInterval;
  1687. },
  1688. enumerable: true,
  1689. configurable: true
  1690. });
  1691. return ElementLoaderEventArgs;
  1692. }(EventArgs));
  1693. var ElementsLoadedArgs = (function (_super) {
  1694. __extends(ElementsLoadedArgs, _super);
  1695. function ElementsLoadedArgs(numOfScripts) {
  1696. var _this = _super.call(this) || this;
  1697. _this.lTotalScripts = 0;
  1698. _this.lTotalScripts = numOfScripts;
  1699. return _this;
  1700. }
  1701. Object.defineProperty(ElementsLoadedArgs.prototype, "totalNumberOfScripts", {
  1702. get: function () {
  1703. return this.lTotalScripts;
  1704. },
  1705. enumerable: true,
  1706. configurable: true
  1707. });
  1708. return ElementsLoadedArgs;
  1709. }(EventArgs));
  1710. var ElementsLoadFailArgs = (function (_super) {
  1711. __extends(ElementsLoadFailArgs, _super);
  1712. function ElementsLoadFailArgs(numOfScripts, remainingScripts) {
  1713. var _this = _super.call(this, numOfScripts) || this;
  1714. _this.lRemainingEvents = remainingScripts;
  1715. return _this;
  1716. }
  1717. Object.defineProperty(ElementsLoadFailArgs.prototype, "remainingEvents", {
  1718. get: function () {
  1719. return this.lRemainingEvents;
  1720. },
  1721. enumerable: true,
  1722. configurable: true
  1723. });
  1724. return ElementsLoadFailArgs;
  1725. }(ElementsLoadedArgs));
  1726.  
  1727. var ElementLoader = (function () {
  1728. function ElementLoader() {
  1729. this.lTotalScripts = 0;
  1730. this.lEventsFailed = [];
  1731. this.lOnElementLoaded = new dist_5();
  1732. this.lOnAllElementLoaded = new dist_5();
  1733. this.lOnElementLoadFail = new dist_5();
  1734. this.lOnTick = new dist_5();
  1735. this.lOnTickExpired = new dist_5();
  1736. this.lEvents = {};
  1737. }
  1738. ElementLoader.prototype.addElement = function (key, e) {
  1739. if (key.length === 0) {
  1740. Log.error(appSettings.shortName + ": addElement: key argument can not be an empty string");
  1741. return;
  1742. }
  1743. if (this.lEvents.hasOwnProperty(key)) {
  1744. Log.error(appSettings.shortName + ": addElement: key " + key + " is already in the list of elemets and can not be added again");
  1745. return;
  1746. }
  1747. this.lEvents[key] = e;
  1748. this.lTotalScripts++;
  1749. };
  1750. ElementLoader.prototype.hasElement = function (key) {
  1751. if (key.length === 0) {
  1752. Log.debugWarn(appSettings.shortName + ": addElement: key is empty");
  1753. return false;
  1754. }
  1755. var reslut = this.lEvents.hasOwnProperty(key);
  1756. return reslut;
  1757. };
  1758. ElementLoader.prototype.onAllElementsLoaded = function () {
  1759. return this.lOnAllElementLoaded.asEvent();
  1760. };
  1761. ElementLoader.prototype.onElementsLoadFail = function () {
  1762. return this.lOnElementLoadFail.asEvent();
  1763. };
  1764. ElementLoader.prototype.onElementLoaded = function () {
  1765. return this.lOnElementLoaded.asEvent();
  1766. };
  1767. ElementLoader.prototype.onTick = function () {
  1768. return this.lOnTick.asEvent();
  1769. };
  1770. ElementLoader.prototype.onTickExpired = function () {
  1771. return this.lOnTickExpired.asEvent();
  1772. };
  1773. ElementLoader.prototype.start = function () {
  1774. var _this = this;
  1775. var onBeforeStartEventArgs = new EventArgs();
  1776. this.onBeforeStart(onBeforeStartEventArgs);
  1777. if (onBeforeStartEventArgs.cancel === true) {
  1778. return;
  1779. }
  1780. var _loop_1 = function (key) {
  1781. if (this_1.lEvents.hasOwnProperty(key)) {
  1782. var element = this_1.lEvents[key];
  1783. element.onTick().subscribe(function (sender, args) {
  1784. var eArgs = new ElementLoaderEventArgs(key, args);
  1785. _this.tick(eArgs);
  1786. if (eArgs.cancel === true) {
  1787. return;
  1788. }
  1789. _this.lOnTick.dispatch(_this, eArgs);
  1790. });
  1791. element.onExpired().subscribe(function (sender, args) {
  1792. var eArgs = new ElementLoaderEventArgs(key, args);
  1793. sender.dispose();
  1794. _this.tickExpired(eArgs);
  1795. if (eArgs.cancel === true) {
  1796. return;
  1797. }
  1798. _this.lOnTickExpired.dispatch(_this, eArgs);
  1799. });
  1800. element.onElementLoaded().subscribe(function (sender, args) {
  1801. var eArgs = new ElementLoaderEventArgs(key, args);
  1802. sender.dispose();
  1803. _this.elementLoaded(eArgs);
  1804. if (eArgs.cancel === true) {
  1805. return;
  1806. }
  1807. _this.lOnElementLoaded.dispatch(_this, eArgs);
  1808. });
  1809. element.start();
  1810. }
  1811. };
  1812. var this_1 = this;
  1813. for (var key in this.lEvents) {
  1814. _loop_1(key);
  1815. }
  1816. this.onAfterStart(new EventArgs());
  1817. };
  1818. ElementLoader.prototype.dispose = function () {
  1819. for (var key in this.lEvents) {
  1820. if (this.lEvents.hasOwnProperty(key)) {
  1821. var el = this.lEvents[key];
  1822. if (el.isDisposed === false) {
  1823. el.dispose();
  1824. }
  1825. }
  1826. }
  1827. this.lEvents = {};
  1828. };
  1829. ElementLoader.prototype.onBeforeStart = function (args) {
  1830. return;
  1831. };
  1832. ElementLoader.prototype.onAfterStart = function (args) {
  1833. return;
  1834. };
  1835. ElementLoader.prototype.elementLoaded = function (args) {
  1836. if (this.lEvents.hasOwnProperty(args.key) === false) {
  1837. Log.error(appSettings.shortName + ": elementLoaded: key " + args.key + " was not found to delete. This may be a serious error");
  1838. return;
  1839. }
  1840. else {
  1841. delete this.lEvents[args.key];
  1842. }
  1843. this.goForFinish();
  1844. };
  1845. ElementLoader.prototype.tick = function (args) {
  1846. return;
  1847. };
  1848. ElementLoader.prototype.tickExpired = function (args) {
  1849. args.loadFailed = true;
  1850. this.lEventsFailed.push(args.key);
  1851. if (this.lEvents.hasOwnProperty(args.key) === false) {
  1852. Log.error(appSettings.shortName + ": tickExpired: key " + args.key + " was not found to delete. This may be a serious error");
  1853. return;
  1854. }
  1855. else {
  1856. delete this.lEvents[args.key];
  1857. }
  1858. this.goForFinish();
  1859. return;
  1860. };
  1861. ElementLoader.prototype.allElementsLoaded = function (args) {
  1862. if (this.lEventsFailed.length > 0) {
  1863. args.cancel = true;
  1864. var eArgs = new ElementsLoadFailArgs(this.lTotalScripts, this.lEventsFailed);
  1865. this.lOnElementLoadFail.dispatch(this, eArgs);
  1866. }
  1867. return;
  1868. };
  1869. ElementLoader.prototype.goForFinish = function () {
  1870. var done = this.isElementsLoaded();
  1871. if (done) {
  1872. var eArgs = new ElementsLoadedArgs(this.lTotalScripts);
  1873. this.allElementsLoaded(eArgs);
  1874. if (eArgs.cancel === false) {
  1875. this.lOnAllElementLoaded.dispatch(this, eArgs);
  1876. }
  1877. }
  1878. else {
  1879. }
  1880. };
  1881. ElementLoader.prototype.isElementsLoaded = function () {
  1882. for (var key in this.lEvents) {
  1883. if (this.lEvents[key]) {
  1884. return false;
  1885. }
  1886. }
  1887. return true;
  1888. };
  1889. return ElementLoader;
  1890. }());
  1891. var utilFnAsStringExist = function (fnstring) {
  1892. var fn = window[fnstring];
  1893. if (typeof fn === 'function') {
  1894. return true;
  1895. }
  1896. else {
  1897. return false;
  1898. }
  1899. };
  1900. var utilFnArrayExist = function (fnArray) {
  1901. if (fnArray.length === 0) {
  1902. return true;
  1903. }
  1904. var result = true;
  1905. for (var fn in fnArray) {
  1906. if (fnArray.hasOwnProperty(fn)) {
  1907. var testFn = fnArray[fn];
  1908. result = result && utilFnAsStringExist(testFn);
  1909. }
  1910. }
  1911. return result;
  1912. };
  1913. var utilCreateElement = function (tag) {
  1914. var D = document;
  1915. var node = D.createElement(tag);
  1916. return node;
  1917. };
  1918. var BaseElementLoad = (function (_super) {
  1919. __extends(BaseElementLoad, _super);
  1920. function BaseElementLoad(interval, maxCount) {
  1921. if (interval === void 0) { interval = 500; }
  1922. if (maxCount === void 0) { maxCount = 30; }
  1923. var _this = _super.call(this, interval, maxCount) || this;
  1924. _this.ptIsLoaded = false;
  1925. _this.elementLoaded = new dist_1$1();
  1926. return _this;
  1927. }
  1928. BaseElementLoad.prototype.onElementLoaded = function () {
  1929. return this.elementLoaded.asEvent();
  1930. };
  1931. BaseElementLoad.prototype.fnAsStringExist = function (fnstring) {
  1932. return utilFnAsStringExist(fnstring);
  1933. };
  1934. BaseElementLoad.prototype.fnArrayExist = function (fnArray) {
  1935. return utilFnArrayExist(fnArray);
  1936. };
  1937. return BaseElementLoad;
  1938. }(IntervalManual));
  1939.  
  1940. var elementAddToDoc = function (e, nodeLocation) {
  1941. var D = document;
  1942. var targ;
  1943. switch (nodeLocation) {
  1944. case ElementLocation.body:
  1945. targ = D.getElementsByTagName('body')[0] || D.body;
  1946. break;
  1947. case ElementLocation.head:
  1948. targ = D.getElementsByTagName('head')[0] || D.head;
  1949. break;
  1950. default:
  1951. targ = D.getElementsByTagName('body')[0] || D.body || D.documentElement;
  1952. break;
  1953. }
  1954. targ.appendChild(e);
  1955. };
  1956. var elementCreate = function (args) {
  1957. var htmlNode = utilCreateElement(args.elementTag);
  1958. if (args.elementAttributes) {
  1959. for (var key in args.elementAttributes) {
  1960. if (args.elementAttributes.hasOwnProperty(key)) {
  1961. var value = args.elementAttributes[key];
  1962. htmlNode.setAttribute(key, value);
  1963. }
  1964. }
  1965. }
  1966. if (args.elementHtml && args.elementHtml.length > 0) {
  1967. htmlNode.innerHTML = args.elementHtml;
  1968. }
  1969. if (args.elementText && args.elementText.length > 0) {
  1970. htmlNode.textContent = args.elementText;
  1971. }
  1972. return htmlNode;
  1973. };
  1974. var elementsCreate = function (args) {
  1975. var parentEl = elementCreate(args);
  1976. if (args.childElements) {
  1977. addElementRecursive(parentEl, args.childElements);
  1978. }
  1979. return parentEl;
  1980. };
  1981. var addElementRecursive = function (parentElement, args) {
  1982. if (args && args.length > 0) {
  1983. for (var i = 0; i < args.length; i++) {
  1984. var el = args[i];
  1985. var childEl = elementCreate(el);
  1986. parentElement.appendChild(childEl);
  1987. if (el.childElements) {
  1988. addElementRecursive(childEl, args[i].childElements);
  1989. }
  1990. }
  1991. }
  1992. };
  1993. var ElementLoadJs = (function (_super) {
  1994. __extends(ElementLoadJs, _super);
  1995. function ElementLoadJs(args) {
  1996. var _this = _super.call(this) || this;
  1997. var textContent = args && args.textContent || '';
  1998. var src = args && args.src || '';
  1999. _this.lTestFuncton = args && args.tyepName || [];
  2000. if (textContent.length + src.length === 0) {
  2001. throw new Error('src or textContent muse included in the args');
  2002. }
  2003. var eArgs = {
  2004. elementTag: 'script',
  2005. elementText: args.textContent,
  2006. elementAttributes: {
  2007. src: (args.src || ''),
  2008. type: 'text/javascript'
  2009. }
  2010. };
  2011. var eHtml = elementCreate(eArgs);
  2012. var functionToRun = args && args.functionToRun || '';
  2013. if (functionToRun.length > 0) {
  2014. eHtml.addEventListener('load', function () {
  2015. var functionHtml = elementCreate({
  2016. elementTag: 'script',
  2017. elementText: functionToRun,
  2018. elementAttributes: {
  2019. type: 'text/javascript'
  2020. }
  2021. });
  2022. elementAddToDoc(functionHtml, args.scriptLocation);
  2023. });
  2024. }
  2025. elementAddToDoc(eHtml, args.scriptLocation);
  2026. return _this;
  2027. }
  2028. ElementLoadJs.prototype.onTickTock = function (eventArgs) {
  2029. if (this.lTestFuncton.length > 0) {
  2030. if (this.fnArrayExist(this.lTestFuncton) === true) {
  2031. this.elementLoaded.dispatch(this, eventArgs);
  2032. this.dispose();
  2033. }
  2034. else {
  2035. this.elementLoaded.dispatch(this, eventArgs);
  2036. this.dispose();
  2037. }
  2038. }
  2039. else {
  2040. this.elementLoaded.dispatch(this, eventArgs);
  2041. this.dispose();
  2042. }
  2043. };
  2044. ElementLoadJs.prototype.onTickExpired = function (eventArgs) {
  2045. return;
  2046. };
  2047. return ElementLoadJs;
  2048. }(BaseElementLoad));
  2049. var ElementLoad = (function (_super) {
  2050. __extends(ElementLoad, _super);
  2051. function ElementLoad(args) {
  2052. var _this = _super.call(this, 0, 1) || this;
  2053. _this.lArgs = args;
  2054. return _this;
  2055. }
  2056. ElementLoad.prototype.onTickTock = function (eventArgs) {
  2057. if (eventArgs.count > 1) {
  2058. eventArgs.cancel = true;
  2059. return;
  2060. }
  2061. if (this.lArgs.elementCreate.childElements) {
  2062. var multiHtml = elementsCreate(this.lArgs.elementCreate);
  2063. elementAddToDoc(multiHtml, this.lArgs.scriptLocation);
  2064. }
  2065. else {
  2066. var eHtml = elementCreate(this.lArgs.elementCreate);
  2067. elementAddToDoc(eHtml, this.lArgs.scriptLocation);
  2068. }
  2069. this.elementLoaded.dispatch(this, eventArgs);
  2070. this.dispose();
  2071. };
  2072. ElementLoad.prototype.onTickExpired = function (eventArgs) {
  2073. return;
  2074. };
  2075. return ElementLoad;
  2076. }(BaseElementLoad));
  2077.  
  2078. var ResourceTest = (function (_super) {
  2079. __extends(ResourceTest, _super);
  2080. function ResourceTest(timing, attempts) {
  2081. if (timing === void 0) { timing = 500; }
  2082. if (attempts === void 0) { attempts = 30; }
  2083. var globalRes = [];
  2084. for (var _i = 2; _i < arguments.length; _i++) {
  2085. globalRes[_i - 2] = arguments[_i];
  2086. }
  2087. var _this = this;
  2088. if (globalRes.length === 0) {
  2089. throw new RangeError(String.Format(exceptionMessages.argEmptyString, 'globalRes'));
  2090. }
  2091. if (timing < 0) {
  2092. throw new RangeError(String.Format(exceptionMessages.argLessThenZero, 'timing'));
  2093. }
  2094. if (attempts < 1) {
  2095. throw new RangeError(String.Format(exceptionMessages.argLessThenOne, 'attempts'));
  2096. }
  2097. _this = _super.call(this, timing, attempts) || this;
  2098. _this.lTestFuncton = globalRes;
  2099. return _this;
  2100. }
  2101. ResourceTest.prototype.onTickTock = function (eventArgs) {
  2102. if (this.lTestFuncton.length > 0) {
  2103. if (this.fnArrayExist(this.lTestFuncton) === true) {
  2104. this.elementLoaded.dispatch(this, eventArgs);
  2105. this.dispose();
  2106. }
  2107. else {
  2108. this.elementLoaded.dispatch(this, eventArgs);
  2109. this.dispose();
  2110. }
  2111. }
  2112. else {
  2113. this.elementLoaded.dispatch(this, eventArgs);
  2114. this.dispose();
  2115. }
  2116. };
  2117. ResourceTest.prototype.onTickExpired = function (eventArgs) {
  2118. return;
  2119. };
  2120. return ResourceTest;
  2121. }(BaseElementLoad));
  2122.  
  2123. var EvernoteElementLoader = (function (_super) {
  2124. __extends(EvernoteElementLoader, _super);
  2125. function EvernoteElementLoader() {
  2126. return _super !== null && _super.apply(this, arguments) || this;
  2127. }
  2128. EvernoteElementLoader.prototype.onBeforeStart = function (args) {
  2129. if (args.cancel === true) {
  2130. return;
  2131. }
  2132. this.testForResource('resTinyMce', 300, 30, 'tinymce');
  2133. this.addLightbox();
  2134. this.addTinyMce();
  2135. this.addLightBoxCss();
  2136. this.addTinyMceCss();
  2137. };
  2138. EvernoteElementLoader.prototype.testForResource = function (key, timing, attempts) {
  2139. if (timing === void 0) { timing = 500; }
  2140. if (attempts === void 0) { attempts = 30; }
  2141. var globalRes = [];
  2142. for (var _i = 3; _i < arguments.length; _i++) {
  2143. globalRes[_i - 3] = arguments[_i];
  2144. }
  2145. if (this.hasElement(key)) {
  2146. this.dispose();
  2147. throw new Error(String.Format(exceptionMessages.argKeyExist, 'key', key));
  2148. }
  2149. var lt = new (ResourceTest.bind.apply(ResourceTest, [void 0, timing, attempts].concat(globalRes)))();
  2150. this.addElement(key, lt);
  2151. };
  2152. EvernoteElementLoader.prototype.addTinyMceCss = function () {
  2153. var srcLink = "//cdnjs.cloudflare.com/ajax/libs/tinymce/" + appSettings.tinyMceVersion + "/skins/lightgray/skin.min.css";
  2154. var key = 'tinyMceCss';
  2155. this.addStyleLink(key, srcLink, ElementLocation.head);
  2156. };
  2157. EvernoteElementLoader.prototype.addTinyMce = function () {
  2158. if (typeof (tinymce__default) === 'undefined') {
  2159. var pluginSrc = "//cdnjs.cloudflare.com/ajax/libs/tinymce/" + appSettings.tinyMceVersion + "/tinymce.min.js";
  2160. var elJs = new ElementLoadJs({
  2161. scriptLocation: ElementLocation.head,
  2162. tyepName: ['jQuery'],
  2163. src: pluginSrc
  2164. });
  2165. this.addElement('tinyMceJs', elJs);
  2166. }
  2167. else {
  2168. }
  2169. };
  2170. EvernoteElementLoader.prototype.addLightBoxCss = function () {
  2171. this.addStyle('LigthboxCss', this.getLigthboxCss(), ElementLocation.body);
  2172. };
  2173. EvernoteElementLoader.prototype.getLigthboxCss = function () {
  2174. var css = '.gmbackdrop,.gmbox{position:absolute;display:none}.gmbackdrop{top:0;left:0;width:100%;height:100%;background:#000;opacity:0;z-index:201}.gmbox{background:#fff;z-index:202;padding:10px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-moz-box-shadow:0 0 5px #444;-webkit-box-shadow:0 0 5px #444;box-shadow:0 0 5px #444}.gmclose{float:right;margin-right:6px;cursor:pointer;width:16px;height:16px;line-height:16px;color:#000}.gmclose:hover{cursor:pointer}.gmclose::after,.mce-i-myexit.exit-x::after{content:"";background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACpklEQVR42nWSS0wTURSGzxQIUBi0A6WFAaxIJQ0gVUGR8FjUgIg8FEgQMbAwcWPc+GAhQUmIj4SlC01UMqlsjCi0SJVHlACFKFCJqFSkGkLkNUQjDCuS42nTIhQ4yZe595z7/zn33AHYEKMN98ptBcV62CE+19829J6tytm2WAFQOdFkXLPX3hQ7GNhiYmLA4Ki/Iw1cr10tBdhsEgpMpel0+drytTpcqbmFY0Ul4qsNJk6xvfSctEL15at1aDx1ZjXQY3IxIy/dcqNhbTG/DOePF7pYyi/FEX2q2CIDfTOJPx3JkMSc4vX6Qm4xPsorWa1KztJCAa9T5Gi05qGUdJziNfid3+NiOjYeJ6suLH09lin9jIldzzvoTG+cDg+HKIWT6v2sq4sAAO4EpzT3R2lwiGHQ6mY8IRlHubD1vbP2ht2Nh3z9BD+AkE1zSCOTajlr7lRH4UsAfOFFK9EiD8YymY+Q6i32xHkyeaxL6rNXVmMzCZ4SRvd3UJ+KjVx4a8VOYmc0AhhMEdFSi68fNpFIcPOEeB7E4jM1L94F2P4/eUDi1ypeapPJXO22E91Ep3vtvFYHXaFNFSne9zZpYhhDj1ItdTIy7KGDA8QwMZ+WjnMH9PiB1v1EF9ETIMeOMJX40GMymFt4cOpKjfSWxE7hR2KSWIiMQvsu1viN49rFaA3aKWcj+oheMhnJPi52J6dooE9/VPVOGW61KdX4hYozxB8+Gu1BcsHGQMgYAxyZmH/HaHCaauPEqFKFXcHBFrOaV7i6oDvywyxrXdAl4kpCEjoC/YUJn//TnpAB51AoTH/37sPZCB6t/v6WNgbCNs1hmAF+/tJl62JhkfDDZ+tTOXyBm8vKNs9kZlney7zEnviVmBQ+q43b8Z1n4+MVM1pt6MbcPy2eNzi8WXoxAAAAAElFTkSuQmCC);background-size:cover;opacity:.7;position:absolute;height:16px;width:16px;-webkit-filter:grayscale(1);filter:grayscale(1)}.gmclose:hover::after{content:"";cursor:pointer;opacity:1;filter:grayscale(0);-webkit-filter:grayscale(0)}.gmclose .gm-close-tooltip{visibility:hidden;width:160px;background-color:#08ab33;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:relative;z-index:201;float:right;margin-right:-72px;top:115%;opacity:0;transition:opacity 1s}.gmclose:hover .gm-close-tooltip{visibility:visible;opacity:1}.gmclose .gm-close-tooltip::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent #08ab33 transparent}.mce-i-myexit.exit-x{color:transparent}.mce-i-mysave.save-s::after{content:"";background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAxklEQVR42u3TOwrCQBRA0RGCpdoJVnb2yQbckxtI7xaCjS7AUrGxEgWXEBE7QRCFQPyA4x15RokZGEjrwGmSvEt+o4IgCJHigSWGBUZijCMiNJRZMqxxQUflFscqElmghTluGLwiMqwl1LQE1u/zmMr1JhKVCRj3sgH9Hbiiiyq8nB76aGNlC5ivcMAGscVOnv0nYIYTnB0lMpMF9vBRc+TLTBYwt+cpxyXvJf4HPgHzh22z3eUWqMtMqmQ7nzCzbOUiE5kJnxY94Zf0eWaOAAAAAElFTkSuQmCC);background-size:cover;opacity:1;position:absolute;height:16px;width:16px}.mce-panel{border:none}div.gmbox .mce-panel{border:0 solid rgba(0,0,0,.2)}div.mce-tinymce.mce-container.mce-panel{margin-top:2em}div.mce-tinymce.mce-container.mce-panel.mce-fullscreen{margin-top:0}div.mce-fullscreen{width:100vw!important;height:auto!important}#gm-edit-btn{display:inline-block;box-sizing:border-box;position:absolute;width:24px;height:24px;background-size:24px 24px;user-select:none;-o-user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;z-index:1}#gm-edit-btn::after{content:"";background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAEAklEQVR42pWWa2iTVxjHT7/s227CVv0ycYMxP+3LoC4w2IfuS0GQOWQXGBtzw83qYOA2mNOuH6yTwKT1Ute6XrSLJia9SG3oJbaJbUPS2MY2TaJJt8SkubRN0ubWN2nPf+e8icGZvL0c+JEH8jz//3mec/K+IeTZ9VX5XlK750tS9/rXm1L1YjnZzio7+8bx32vqMuNqHUy39QWM3cPQa3TQKvrQ0aTCmboL+K1WjvflH02Vfbhj59bUP3/ltZqaGiGZTMMfDOOxP5QnCK8viDmvH3bXvzBZ7egZuIf+ESPcptmcSdVLW+iketcB7dUuBEKLXIxywTxi7Pb48XDOS2eccxi3zGBsYpqGFiOwj1pRee6QdXOT6l0H+9t7RAMv33UJPL4A5jy5TqyzLrHTf7zzcJptqDx7yEp+3f0NObLzbUkDbVsPQgsRVrggiS8QZkZBPLC7EWYdsK7ETqfu3EPD95/h8OX9Ajm1++OSBn2t3VhYiiIYXqIM5CmKeZdOt5d6WFfcxGG20bvvncQMOQnnntN0f8sHMVL5/AtFBndaurAUXRZNNoML83Pp7tej99MzsJCfMcsMjOQEPmmuEsjBl8uLDHpbOhFdXhFNIrEcG8VjE1YouvoxfXcCtr210JKjkFd/i7L6N5tKjuj2VQ2WV+KILccpA3lKxrb5IdqoO4YZh5sfPtX3GdDVoEDDuUbKtUoa9DSrsRJP5kjkKRHPBnSQje7Dq492QOu/BN2YGdc1WvGGXau/BkmD7uZbSCRTG+IID0Nm3AfiJCA+xshzUJvl4rnw8SovK6QNOtljIJFKI5VepQzkKcTOhRFaYXoHxMGEPYSS0TL8NfUTkqmkmBNnG1BfuSk9Is0VpSi0KghFPFzSQ2Z5F8TGxN2McYI/TT9gMbKIdL6G13INSQPmjvTqKoRM5n+4IgbI7stApkluNGaCi6PH4Ha7EAyGEI8nxDxeyzUkDVSNN1iSgGw2S7PZNXBc0VFaMVkBYiV895RYylA/fASW+xPU4XDAPz/PO2D5WbGWaUiPiB8Qb3VtbY2xLn422L8DmWTiDxhTBH8MHMbQ0ACMRiN8fj8ymWwhn9dueMg3Lv0NQchgfX1dREjE2BhuoWLyLdFA3vcFNJ1qGAwGRKPRQl4hn9VyDUkDxcWOJwaUF8TDXsQejVNz7ymcv3kU7e2t1Gq1sl3nctgC50nMa5mG9Ig6LlwXD4snp1IpdCo70Ktqg0qlxODgIEKhEPsOeWhRzGu5hpTBgbbzbeJN4IsX5XeKrS5+XbkG1yr5yjxe86PgeRxg9zlNn/oNbCnmvwFeyzW4luRL/8TpXzLKJiU0rZptoWJPAV7LNTZ+dW7nb8vT8Bpe+8z6D187Su44+n2mAAAAAElFTkSuQmCC);background-size:cover;opacity:.7;top:0;left:0;bottom:0;right:0;position:absolute;-webkit-filter:grayscale(1);filter:grayscale(1)}#gm-edit-btn:hover{cursor:pointer;opacity:1;filter:grayscale(0);-webkit-filter:grayscale(0)}#gm-edit-btn:hover::after{content:"";cursor:pointer;opacity:1;filter:grayscale(0);-webkit-filter:grayscale(0)}.gmbox-window{top:50%;left:50%;transform:translate(-50%,-50%);position:absolute}#gm-tb{display:inline-block;box-sizing:border-box;position:absolute;width:24px;height:24px;background-size:24px 24px;margin:0;opacity:1;overflow-x:hidden;overflow-y:hidden;padding:0;user-select:none;-o-user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;z-index:200}';
  2175. return css;
  2176. };
  2177. EvernoteElementLoader.prototype.addLightbox = function () {
  2178. var elDivGmbackDrop = new ElementLoad({
  2179. scriptLocation: ElementLocation.body,
  2180. elementCreate: {
  2181. elementTag: 'div',
  2182. elementAttributes: {
  2183. class: 'gmbackdrop'
  2184. }
  2185. }
  2186. });
  2187. this.addElement('div.gmbackdrop', elDivGmbackDrop);
  2188. var elMulti = new ElementLoad({
  2189. scriptLocation: ElementLocation.body,
  2190. elementCreate: {
  2191. elementTag: 'div',
  2192. elementAttributes: {
  2193. id: 'tinybox',
  2194. class: 'gmbox gmbox-window'
  2195. },
  2196. childElements: [{
  2197. elementTag: 'div',
  2198. elementAttributes: {
  2199. class: 'gmclose'
  2200. },
  2201. childElements: [{
  2202. elementTag: 'span',
  2203. elementAttributes: {
  2204. class: 'gm-close-tooltip'
  2205. },
  2206. elementHtml: 'Click to close this editor. <br /><br />Changes will not be saved.'
  2207. }]
  2208. },
  2209. {
  2210. elementTag: 'div',
  2211. elementAttributes: {
  2212. id: appSettings.fullScreenRealId,
  2213. },
  2214. childElements: [{
  2215. elementTag: 'textarea',
  2216. elementAttributes: {
  2217. id: appSettings.tinyId,
  2218. rows: '18',
  2219. cols: '66'
  2220. }
  2221. }]
  2222. }]
  2223. }
  2224. });
  2225. this.addElement('lightBoxHtml', elMulti);
  2226. };
  2227. EvernoteElementLoader.prototype.addStyleLink = function (key, srcLink, elementLocation) {
  2228. if (elementLocation === void 0) { elementLocation = ElementLocation.head; }
  2229. var elCss = new ElementLoad({
  2230. scriptLocation: elementLocation,
  2231. elementCreate: {
  2232. elementTag: 'link',
  2233. elementAttributes: {
  2234. type: 'text/css',
  2235. href: srcLink,
  2236. rel: 'stylesheet'
  2237. }
  2238. }
  2239. });
  2240. this.addElement(key, elCss);
  2241. };
  2242. EvernoteElementLoader.prototype.addStyle = function (key, styelcontent, elementLocation) {
  2243. if (elementLocation === void 0) { elementLocation = ElementLocation.head; }
  2244. var elCss = new ElementLoad({
  2245. scriptLocation: elementLocation,
  2246. elementCreate: {
  2247. elementTag: 'style',
  2248. elementText: styelcontent,
  2249. elementAttributes: {
  2250. type: 'text/css'
  2251. }
  2252. }
  2253. });
  2254. this.addElement(key, elCss);
  2255. };
  2256. return EvernoteElementLoader;
  2257. }(ElementLoader));
  2258.  
  2259. var validateIfTop = function () {
  2260. return window.top === window.self;
  2261. };
  2262. var main = function () {
  2263. var en = new Evernote();
  2264. en.init();
  2265. };
  2266. if (validateIfTop()) {
  2267. Log.message(appSettings.shortName + ': Entry Script: Start loading...');
  2268. if (typeof (tinymce__default) !== 'undefined') {
  2269. updateAppSetting('tinyMceVersion', tinymce__default.EditorManager.majorVersion + "." + tinymce__default.EditorManager.minorVersion);
  2270. }
  2271. var loader = new EvernoteElementLoader();
  2272. loader.onAllElementsLoaded().subscribe(function (sender, args) {
  2273. Log.message(appSettings.shortName + ": Entry Script: All Scripts loaded. Total count: " + args.totalNumberOfScripts);
  2274. main();
  2275. });
  2276. loader.onElementsLoadFail().subscribe(function (sender, args) {
  2277. Log.error(appSettings.shortName + ": Entry Script: The neceassary elements were note loaded. Failed:", args.remainingEvents);
  2278. });
  2279. loader.onElementLoaded().subscribe(function (sender, args) {
  2280. Log.message(appSettings.shortName + ": Entry Script: Element with Key value of '" + args.key + "' has loaded");
  2281. });
  2282. loader.onTickExpired().subscribe(function (sender, args) {
  2283. Log.warn(appSettings.shortName + ": Entry Script: Element with Key value of '" + args.key + "' has failed to load");
  2284. });
  2285. loader.start();
  2286. var gConfig = new GmConfig();
  2287. gConfig.init();
  2288. if (typeof GM_registerMenuCommand === 'function') {
  2289. Log.message(appSettings.shortName + ': Entry Script: Registering: Open ' + appSettings.shortName + ' Options Menu');
  2290. GM_registerMenuCommand(appSettings.menuName, function () {
  2291. GM_config.open();
  2292. Log.message(appSettings.shortName + ': Entry Script: Registered: Open ' + appSettings.shortName + ' Options Menu');
  2293. });
  2294. }
  2295. else {
  2296. Log.error(appSettings.shortName + ': Entry Script: Unable to Register: Open ' + appSettings.shortName + ' Options Menu');
  2297. }
  2298. Log.message(appSettings.shortName + ': Entry Script: End loading...');
  2299. }
  2300.  
  2301. }($, tinymce));

QingJ © 2025

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