plugin.js 36 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706
  1. /**
  2. * Copyright (c) Tiny Technologies, Inc. All rights reserved.
  3. * Licensed under the LGPL or a commercial license.
  4. * For LGPL see License.txt in the project root for license information.
  5. * For commercial licenses see https://www.tiny.cloud/
  6. *
  7. * Version: 5.3.0 (2020-05-21)
  8. */
  9. (function (domGlobals) {
  10. 'use strict';
  11. var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
  12. var fireInsertCustomChar = function (editor, chr) {
  13. return editor.fire('insertCustomChar', { chr: chr });
  14. };
  15. var insertChar = function (editor, chr) {
  16. var evtChr = fireInsertCustomChar(editor, chr).chr;
  17. editor.execCommand('mceInsertContent', false, evtChr);
  18. };
  19. var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
  20. var getCharMap = function (editor) {
  21. return editor.settings.charmap;
  22. };
  23. var getCharMapAppend = function (editor) {
  24. return editor.settings.charmap_append;
  25. };
  26. var noop = function () {
  27. };
  28. var constant = function (value) {
  29. return function () {
  30. return value;
  31. };
  32. };
  33. var never = constant(false);
  34. var always = constant(true);
  35. var none = function () {
  36. return NONE;
  37. };
  38. var NONE = function () {
  39. var eq = function (o) {
  40. return o.isNone();
  41. };
  42. var call = function (thunk) {
  43. return thunk();
  44. };
  45. var id = function (n) {
  46. return n;
  47. };
  48. var me = {
  49. fold: function (n, _s) {
  50. return n();
  51. },
  52. is: never,
  53. isSome: never,
  54. isNone: always,
  55. getOr: id,
  56. getOrThunk: call,
  57. getOrDie: function (msg) {
  58. throw new Error(msg || 'error: getOrDie called on none.');
  59. },
  60. getOrNull: constant(null),
  61. getOrUndefined: constant(undefined),
  62. or: id,
  63. orThunk: call,
  64. map: none,
  65. each: noop,
  66. bind: none,
  67. exists: never,
  68. forall: always,
  69. filter: none,
  70. equals: eq,
  71. equals_: eq,
  72. toArray: function () {
  73. return [];
  74. },
  75. toString: constant('none()')
  76. };
  77. return me;
  78. }();
  79. var some = function (a) {
  80. var constant_a = constant(a);
  81. var self = function () {
  82. return me;
  83. };
  84. var bind = function (f) {
  85. return f(a);
  86. };
  87. var me = {
  88. fold: function (n, s) {
  89. return s(a);
  90. },
  91. is: function (v) {
  92. return a === v;
  93. },
  94. isSome: always,
  95. isNone: never,
  96. getOr: constant_a,
  97. getOrThunk: constant_a,
  98. getOrDie: constant_a,
  99. getOrNull: constant_a,
  100. getOrUndefined: constant_a,
  101. or: self,
  102. orThunk: self,
  103. map: function (f) {
  104. return some(f(a));
  105. },
  106. each: function (f) {
  107. f(a);
  108. },
  109. bind: bind,
  110. exists: bind,
  111. forall: bind,
  112. filter: function (f) {
  113. return f(a) ? me : NONE;
  114. },
  115. toArray: function () {
  116. return [a];
  117. },
  118. toString: function () {
  119. return 'some(' + a + ')';
  120. },
  121. equals: function (o) {
  122. return o.is(a);
  123. },
  124. equals_: function (o, elementEq) {
  125. return o.fold(never, function (b) {
  126. return elementEq(a, b);
  127. });
  128. }
  129. };
  130. return me;
  131. };
  132. var from = function (value) {
  133. return value === null || value === undefined ? NONE : some(value);
  134. };
  135. var Option = {
  136. some: some,
  137. none: none,
  138. from: from
  139. };
  140. var typeOf = function (x) {
  141. var t = typeof x;
  142. if (x === null) {
  143. return 'null';
  144. } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {
  145. return 'array';
  146. } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {
  147. return 'string';
  148. } else {
  149. return t;
  150. }
  151. };
  152. var isType = function (type) {
  153. return function (value) {
  154. return typeOf(value) === type;
  155. };
  156. };
  157. var isArray = isType('array');
  158. var nativePush = Array.prototype.push;
  159. var map = function (xs, f) {
  160. var len = xs.length;
  161. var r = new Array(len);
  162. for (var i = 0; i < len; i++) {
  163. var x = xs[i];
  164. r[i] = f(x, i);
  165. }
  166. return r;
  167. };
  168. var each = function (xs, f) {
  169. for (var i = 0, len = xs.length; i < len; i++) {
  170. var x = xs[i];
  171. f(x, i);
  172. }
  173. };
  174. var findUntil = function (xs, pred, until) {
  175. for (var i = 0, len = xs.length; i < len; i++) {
  176. var x = xs[i];
  177. if (pred(x, i)) {
  178. return Option.some(x);
  179. } else if (until(x, i)) {
  180. break;
  181. }
  182. }
  183. return Option.none();
  184. };
  185. var find = function (xs, pred) {
  186. return findUntil(xs, pred, never);
  187. };
  188. var flatten = function (xs) {
  189. var r = [];
  190. for (var i = 0, len = xs.length; i < len; ++i) {
  191. if (!isArray(xs[i])) {
  192. throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);
  193. }
  194. nativePush.apply(r, xs[i]);
  195. }
  196. return r;
  197. };
  198. var bind = function (xs, f) {
  199. return flatten(map(xs, f));
  200. };
  201. var isArray$1 = global$1.isArray;
  202. var UserDefined = 'User Defined';
  203. var getDefaultCharMap = function () {
  204. return [
  205. {
  206. name: 'Currency',
  207. characters: [
  208. [
  209. 36,
  210. 'dollar sign'
  211. ],
  212. [
  213. 162,
  214. 'cent sign'
  215. ],
  216. [
  217. 8364,
  218. 'euro sign'
  219. ],
  220. [
  221. 163,
  222. 'pound sign'
  223. ],
  224. [
  225. 165,
  226. 'yen sign'
  227. ],
  228. [
  229. 164,
  230. 'currency sign'
  231. ],
  232. [
  233. 8352,
  234. 'euro-currency sign'
  235. ],
  236. [
  237. 8353,
  238. 'colon sign'
  239. ],
  240. [
  241. 8354,
  242. 'cruzeiro sign'
  243. ],
  244. [
  245. 8355,
  246. 'french franc sign'
  247. ],
  248. [
  249. 8356,
  250. 'lira sign'
  251. ],
  252. [
  253. 8357,
  254. 'mill sign'
  255. ],
  256. [
  257. 8358,
  258. 'naira sign'
  259. ],
  260. [
  261. 8359,
  262. 'peseta sign'
  263. ],
  264. [
  265. 8360,
  266. 'rupee sign'
  267. ],
  268. [
  269. 8361,
  270. 'won sign'
  271. ],
  272. [
  273. 8362,
  274. 'new sheqel sign'
  275. ],
  276. [
  277. 8363,
  278. 'dong sign'
  279. ],
  280. [
  281. 8365,
  282. 'kip sign'
  283. ],
  284. [
  285. 8366,
  286. 'tugrik sign'
  287. ],
  288. [
  289. 8367,
  290. 'drachma sign'
  291. ],
  292. [
  293. 8368,
  294. 'german penny symbol'
  295. ],
  296. [
  297. 8369,
  298. 'peso sign'
  299. ],
  300. [
  301. 8370,
  302. 'guarani sign'
  303. ],
  304. [
  305. 8371,
  306. 'austral sign'
  307. ],
  308. [
  309. 8372,
  310. 'hryvnia sign'
  311. ],
  312. [
  313. 8373,
  314. 'cedi sign'
  315. ],
  316. [
  317. 8374,
  318. 'livre tournois sign'
  319. ],
  320. [
  321. 8375,
  322. 'spesmilo sign'
  323. ],
  324. [
  325. 8376,
  326. 'tenge sign'
  327. ],
  328. [
  329. 8377,
  330. 'indian rupee sign'
  331. ],
  332. [
  333. 8378,
  334. 'turkish lira sign'
  335. ],
  336. [
  337. 8379,
  338. 'nordic mark sign'
  339. ],
  340. [
  341. 8380,
  342. 'manat sign'
  343. ],
  344. [
  345. 8381,
  346. 'ruble sign'
  347. ],
  348. [
  349. 20870,
  350. 'yen character'
  351. ],
  352. [
  353. 20803,
  354. 'yuan character'
  355. ],
  356. [
  357. 22291,
  358. 'yuan character, in hong kong and taiwan'
  359. ],
  360. [
  361. 22278,
  362. 'yen/yuan character variant one'
  363. ]
  364. ]
  365. },
  366. {
  367. name: 'Text',
  368. characters: [
  369. [
  370. 169,
  371. 'copyright sign'
  372. ],
  373. [
  374. 174,
  375. 'registered sign'
  376. ],
  377. [
  378. 8482,
  379. 'trade mark sign'
  380. ],
  381. [
  382. 8240,
  383. 'per mille sign'
  384. ],
  385. [
  386. 181,
  387. 'micro sign'
  388. ],
  389. [
  390. 183,
  391. 'middle dot'
  392. ],
  393. [
  394. 8226,
  395. 'bullet'
  396. ],
  397. [
  398. 8230,
  399. 'three dot leader'
  400. ],
  401. [
  402. 8242,
  403. 'minutes / feet'
  404. ],
  405. [
  406. 8243,
  407. 'seconds / inches'
  408. ],
  409. [
  410. 167,
  411. 'section sign'
  412. ],
  413. [
  414. 182,
  415. 'paragraph sign'
  416. ],
  417. [
  418. 223,
  419. 'sharp s / ess-zed'
  420. ]
  421. ]
  422. },
  423. {
  424. name: 'Quotations',
  425. characters: [
  426. [
  427. 8249,
  428. 'single left-pointing angle quotation mark'
  429. ],
  430. [
  431. 8250,
  432. 'single right-pointing angle quotation mark'
  433. ],
  434. [
  435. 171,
  436. 'left pointing guillemet'
  437. ],
  438. [
  439. 187,
  440. 'right pointing guillemet'
  441. ],
  442. [
  443. 8216,
  444. 'left single quotation mark'
  445. ],
  446. [
  447. 8217,
  448. 'right single quotation mark'
  449. ],
  450. [
  451. 8220,
  452. 'left double quotation mark'
  453. ],
  454. [
  455. 8221,
  456. 'right double quotation mark'
  457. ],
  458. [
  459. 8218,
  460. 'single low-9 quotation mark'
  461. ],
  462. [
  463. 8222,
  464. 'double low-9 quotation mark'
  465. ],
  466. [
  467. 60,
  468. 'less-than sign'
  469. ],
  470. [
  471. 62,
  472. 'greater-than sign'
  473. ],
  474. [
  475. 8804,
  476. 'less-than or equal to'
  477. ],
  478. [
  479. 8805,
  480. 'greater-than or equal to'
  481. ],
  482. [
  483. 8211,
  484. 'en dash'
  485. ],
  486. [
  487. 8212,
  488. 'em dash'
  489. ],
  490. [
  491. 175,
  492. 'macron'
  493. ],
  494. [
  495. 8254,
  496. 'overline'
  497. ],
  498. [
  499. 164,
  500. 'currency sign'
  501. ],
  502. [
  503. 166,
  504. 'broken bar'
  505. ],
  506. [
  507. 168,
  508. 'diaeresis'
  509. ],
  510. [
  511. 161,
  512. 'inverted exclamation mark'
  513. ],
  514. [
  515. 191,
  516. 'turned question mark'
  517. ],
  518. [
  519. 710,
  520. 'circumflex accent'
  521. ],
  522. [
  523. 732,
  524. 'small tilde'
  525. ],
  526. [
  527. 176,
  528. 'degree sign'
  529. ],
  530. [
  531. 8722,
  532. 'minus sign'
  533. ],
  534. [
  535. 177,
  536. 'plus-minus sign'
  537. ],
  538. [
  539. 247,
  540. 'division sign'
  541. ],
  542. [
  543. 8260,
  544. 'fraction slash'
  545. ],
  546. [
  547. 215,
  548. 'multiplication sign'
  549. ],
  550. [
  551. 185,
  552. 'superscript one'
  553. ],
  554. [
  555. 178,
  556. 'superscript two'
  557. ],
  558. [
  559. 179,
  560. 'superscript three'
  561. ],
  562. [
  563. 188,
  564. 'fraction one quarter'
  565. ],
  566. [
  567. 189,
  568. 'fraction one half'
  569. ],
  570. [
  571. 190,
  572. 'fraction three quarters'
  573. ]
  574. ]
  575. },
  576. {
  577. name: 'Mathematical',
  578. characters: [
  579. [
  580. 402,
  581. 'function / florin'
  582. ],
  583. [
  584. 8747,
  585. 'integral'
  586. ],
  587. [
  588. 8721,
  589. 'n-ary sumation'
  590. ],
  591. [
  592. 8734,
  593. 'infinity'
  594. ],
  595. [
  596. 8730,
  597. 'square root'
  598. ],
  599. [
  600. 8764,
  601. 'similar to'
  602. ],
  603. [
  604. 8773,
  605. 'approximately equal to'
  606. ],
  607. [
  608. 8776,
  609. 'almost equal to'
  610. ],
  611. [
  612. 8800,
  613. 'not equal to'
  614. ],
  615. [
  616. 8801,
  617. 'identical to'
  618. ],
  619. [
  620. 8712,
  621. 'element of'
  622. ],
  623. [
  624. 8713,
  625. 'not an element of'
  626. ],
  627. [
  628. 8715,
  629. 'contains as member'
  630. ],
  631. [
  632. 8719,
  633. 'n-ary product'
  634. ],
  635. [
  636. 8743,
  637. 'logical and'
  638. ],
  639. [
  640. 8744,
  641. 'logical or'
  642. ],
  643. [
  644. 172,
  645. 'not sign'
  646. ],
  647. [
  648. 8745,
  649. 'intersection'
  650. ],
  651. [
  652. 8746,
  653. 'union'
  654. ],
  655. [
  656. 8706,
  657. 'partial differential'
  658. ],
  659. [
  660. 8704,
  661. 'for all'
  662. ],
  663. [
  664. 8707,
  665. 'there exists'
  666. ],
  667. [
  668. 8709,
  669. 'diameter'
  670. ],
  671. [
  672. 8711,
  673. 'backward difference'
  674. ],
  675. [
  676. 8727,
  677. 'asterisk operator'
  678. ],
  679. [
  680. 8733,
  681. 'proportional to'
  682. ],
  683. [
  684. 8736,
  685. 'angle'
  686. ]
  687. ]
  688. },
  689. {
  690. name: 'Extended Latin',
  691. characters: [
  692. [
  693. 192,
  694. 'A - grave'
  695. ],
  696. [
  697. 193,
  698. 'A - acute'
  699. ],
  700. [
  701. 194,
  702. 'A - circumflex'
  703. ],
  704. [
  705. 195,
  706. 'A - tilde'
  707. ],
  708. [
  709. 196,
  710. 'A - diaeresis'
  711. ],
  712. [
  713. 197,
  714. 'A - ring above'
  715. ],
  716. [
  717. 256,
  718. 'A - macron'
  719. ],
  720. [
  721. 198,
  722. 'ligature AE'
  723. ],
  724. [
  725. 199,
  726. 'C - cedilla'
  727. ],
  728. [
  729. 200,
  730. 'E - grave'
  731. ],
  732. [
  733. 201,
  734. 'E - acute'
  735. ],
  736. [
  737. 202,
  738. 'E - circumflex'
  739. ],
  740. [
  741. 203,
  742. 'E - diaeresis'
  743. ],
  744. [
  745. 274,
  746. 'E - macron'
  747. ],
  748. [
  749. 204,
  750. 'I - grave'
  751. ],
  752. [
  753. 205,
  754. 'I - acute'
  755. ],
  756. [
  757. 206,
  758. 'I - circumflex'
  759. ],
  760. [
  761. 207,
  762. 'I - diaeresis'
  763. ],
  764. [
  765. 298,
  766. 'I - macron'
  767. ],
  768. [
  769. 208,
  770. 'ETH'
  771. ],
  772. [
  773. 209,
  774. 'N - tilde'
  775. ],
  776. [
  777. 210,
  778. 'O - grave'
  779. ],
  780. [
  781. 211,
  782. 'O - acute'
  783. ],
  784. [
  785. 212,
  786. 'O - circumflex'
  787. ],
  788. [
  789. 213,
  790. 'O - tilde'
  791. ],
  792. [
  793. 214,
  794. 'O - diaeresis'
  795. ],
  796. [
  797. 216,
  798. 'O - slash'
  799. ],
  800. [
  801. 332,
  802. 'O - macron'
  803. ],
  804. [
  805. 338,
  806. 'ligature OE'
  807. ],
  808. [
  809. 352,
  810. 'S - caron'
  811. ],
  812. [
  813. 217,
  814. 'U - grave'
  815. ],
  816. [
  817. 218,
  818. 'U - acute'
  819. ],
  820. [
  821. 219,
  822. 'U - circumflex'
  823. ],
  824. [
  825. 220,
  826. 'U - diaeresis'
  827. ],
  828. [
  829. 362,
  830. 'U - macron'
  831. ],
  832. [
  833. 221,
  834. 'Y - acute'
  835. ],
  836. [
  837. 376,
  838. 'Y - diaeresis'
  839. ],
  840. [
  841. 562,
  842. 'Y - macron'
  843. ],
  844. [
  845. 222,
  846. 'THORN'
  847. ],
  848. [
  849. 224,
  850. 'a - grave'
  851. ],
  852. [
  853. 225,
  854. 'a - acute'
  855. ],
  856. [
  857. 226,
  858. 'a - circumflex'
  859. ],
  860. [
  861. 227,
  862. 'a - tilde'
  863. ],
  864. [
  865. 228,
  866. 'a - diaeresis'
  867. ],
  868. [
  869. 229,
  870. 'a - ring above'
  871. ],
  872. [
  873. 257,
  874. 'a - macron'
  875. ],
  876. [
  877. 230,
  878. 'ligature ae'
  879. ],
  880. [
  881. 231,
  882. 'c - cedilla'
  883. ],
  884. [
  885. 232,
  886. 'e - grave'
  887. ],
  888. [
  889. 233,
  890. 'e - acute'
  891. ],
  892. [
  893. 234,
  894. 'e - circumflex'
  895. ],
  896. [
  897. 235,
  898. 'e - diaeresis'
  899. ],
  900. [
  901. 275,
  902. 'e - macron'
  903. ],
  904. [
  905. 236,
  906. 'i - grave'
  907. ],
  908. [
  909. 237,
  910. 'i - acute'
  911. ],
  912. [
  913. 238,
  914. 'i - circumflex'
  915. ],
  916. [
  917. 239,
  918. 'i - diaeresis'
  919. ],
  920. [
  921. 299,
  922. 'i - macron'
  923. ],
  924. [
  925. 240,
  926. 'eth'
  927. ],
  928. [
  929. 241,
  930. 'n - tilde'
  931. ],
  932. [
  933. 242,
  934. 'o - grave'
  935. ],
  936. [
  937. 243,
  938. 'o - acute'
  939. ],
  940. [
  941. 244,
  942. 'o - circumflex'
  943. ],
  944. [
  945. 245,
  946. 'o - tilde'
  947. ],
  948. [
  949. 246,
  950. 'o - diaeresis'
  951. ],
  952. [
  953. 248,
  954. 'o slash'
  955. ],
  956. [
  957. 333,
  958. 'o macron'
  959. ],
  960. [
  961. 339,
  962. 'ligature oe'
  963. ],
  964. [
  965. 353,
  966. 's - caron'
  967. ],
  968. [
  969. 249,
  970. 'u - grave'
  971. ],
  972. [
  973. 250,
  974. 'u - acute'
  975. ],
  976. [
  977. 251,
  978. 'u - circumflex'
  979. ],
  980. [
  981. 252,
  982. 'u - diaeresis'
  983. ],
  984. [
  985. 363,
  986. 'u - macron'
  987. ],
  988. [
  989. 253,
  990. 'y - acute'
  991. ],
  992. [
  993. 254,
  994. 'thorn'
  995. ],
  996. [
  997. 255,
  998. 'y - diaeresis'
  999. ],
  1000. [
  1001. 563,
  1002. 'y - macron'
  1003. ],
  1004. [
  1005. 913,
  1006. 'Alpha'
  1007. ],
  1008. [
  1009. 914,
  1010. 'Beta'
  1011. ],
  1012. [
  1013. 915,
  1014. 'Gamma'
  1015. ],
  1016. [
  1017. 916,
  1018. 'Delta'
  1019. ],
  1020. [
  1021. 917,
  1022. 'Epsilon'
  1023. ],
  1024. [
  1025. 918,
  1026. 'Zeta'
  1027. ],
  1028. [
  1029. 919,
  1030. 'Eta'
  1031. ],
  1032. [
  1033. 920,
  1034. 'Theta'
  1035. ],
  1036. [
  1037. 921,
  1038. 'Iota'
  1039. ],
  1040. [
  1041. 922,
  1042. 'Kappa'
  1043. ],
  1044. [
  1045. 923,
  1046. 'Lambda'
  1047. ],
  1048. [
  1049. 924,
  1050. 'Mu'
  1051. ],
  1052. [
  1053. 925,
  1054. 'Nu'
  1055. ],
  1056. [
  1057. 926,
  1058. 'Xi'
  1059. ],
  1060. [
  1061. 927,
  1062. 'Omicron'
  1063. ],
  1064. [
  1065. 928,
  1066. 'Pi'
  1067. ],
  1068. [
  1069. 929,
  1070. 'Rho'
  1071. ],
  1072. [
  1073. 931,
  1074. 'Sigma'
  1075. ],
  1076. [
  1077. 932,
  1078. 'Tau'
  1079. ],
  1080. [
  1081. 933,
  1082. 'Upsilon'
  1083. ],
  1084. [
  1085. 934,
  1086. 'Phi'
  1087. ],
  1088. [
  1089. 935,
  1090. 'Chi'
  1091. ],
  1092. [
  1093. 936,
  1094. 'Psi'
  1095. ],
  1096. [
  1097. 937,
  1098. 'Omega'
  1099. ],
  1100. [
  1101. 945,
  1102. 'alpha'
  1103. ],
  1104. [
  1105. 946,
  1106. 'beta'
  1107. ],
  1108. [
  1109. 947,
  1110. 'gamma'
  1111. ],
  1112. [
  1113. 948,
  1114. 'delta'
  1115. ],
  1116. [
  1117. 949,
  1118. 'epsilon'
  1119. ],
  1120. [
  1121. 950,
  1122. 'zeta'
  1123. ],
  1124. [
  1125. 951,
  1126. 'eta'
  1127. ],
  1128. [
  1129. 952,
  1130. 'theta'
  1131. ],
  1132. [
  1133. 953,
  1134. 'iota'
  1135. ],
  1136. [
  1137. 954,
  1138. 'kappa'
  1139. ],
  1140. [
  1141. 955,
  1142. 'lambda'
  1143. ],
  1144. [
  1145. 956,
  1146. 'mu'
  1147. ],
  1148. [
  1149. 957,
  1150. 'nu'
  1151. ],
  1152. [
  1153. 958,
  1154. 'xi'
  1155. ],
  1156. [
  1157. 959,
  1158. 'omicron'
  1159. ],
  1160. [
  1161. 960,
  1162. 'pi'
  1163. ],
  1164. [
  1165. 961,
  1166. 'rho'
  1167. ],
  1168. [
  1169. 962,
  1170. 'final sigma'
  1171. ],
  1172. [
  1173. 963,
  1174. 'sigma'
  1175. ],
  1176. [
  1177. 964,
  1178. 'tau'
  1179. ],
  1180. [
  1181. 965,
  1182. 'upsilon'
  1183. ],
  1184. [
  1185. 966,
  1186. 'phi'
  1187. ],
  1188. [
  1189. 967,
  1190. 'chi'
  1191. ],
  1192. [
  1193. 968,
  1194. 'psi'
  1195. ],
  1196. [
  1197. 969,
  1198. 'omega'
  1199. ]
  1200. ]
  1201. },
  1202. {
  1203. name: 'Symbols',
  1204. characters: [
  1205. [
  1206. 8501,
  1207. 'alef symbol'
  1208. ],
  1209. [
  1210. 982,
  1211. 'pi symbol'
  1212. ],
  1213. [
  1214. 8476,
  1215. 'real part symbol'
  1216. ],
  1217. [
  1218. 978,
  1219. 'upsilon - hook symbol'
  1220. ],
  1221. [
  1222. 8472,
  1223. 'Weierstrass p'
  1224. ],
  1225. [
  1226. 8465,
  1227. 'imaginary part'
  1228. ]
  1229. ]
  1230. },
  1231. {
  1232. name: 'Arrows',
  1233. characters: [
  1234. [
  1235. 8592,
  1236. 'leftwards arrow'
  1237. ],
  1238. [
  1239. 8593,
  1240. 'upwards arrow'
  1241. ],
  1242. [
  1243. 8594,
  1244. 'rightwards arrow'
  1245. ],
  1246. [
  1247. 8595,
  1248. 'downwards arrow'
  1249. ],
  1250. [
  1251. 8596,
  1252. 'left right arrow'
  1253. ],
  1254. [
  1255. 8629,
  1256. 'carriage return'
  1257. ],
  1258. [
  1259. 8656,
  1260. 'leftwards double arrow'
  1261. ],
  1262. [
  1263. 8657,
  1264. 'upwards double arrow'
  1265. ],
  1266. [
  1267. 8658,
  1268. 'rightwards double arrow'
  1269. ],
  1270. [
  1271. 8659,
  1272. 'downwards double arrow'
  1273. ],
  1274. [
  1275. 8660,
  1276. 'left right double arrow'
  1277. ],
  1278. [
  1279. 8756,
  1280. 'therefore'
  1281. ],
  1282. [
  1283. 8834,
  1284. 'subset of'
  1285. ],
  1286. [
  1287. 8835,
  1288. 'superset of'
  1289. ],
  1290. [
  1291. 8836,
  1292. 'not a subset of'
  1293. ],
  1294. [
  1295. 8838,
  1296. 'subset of or equal to'
  1297. ],
  1298. [
  1299. 8839,
  1300. 'superset of or equal to'
  1301. ],
  1302. [
  1303. 8853,
  1304. 'circled plus'
  1305. ],
  1306. [
  1307. 8855,
  1308. 'circled times'
  1309. ],
  1310. [
  1311. 8869,
  1312. 'perpendicular'
  1313. ],
  1314. [
  1315. 8901,
  1316. 'dot operator'
  1317. ],
  1318. [
  1319. 8968,
  1320. 'left ceiling'
  1321. ],
  1322. [
  1323. 8969,
  1324. 'right ceiling'
  1325. ],
  1326. [
  1327. 8970,
  1328. 'left floor'
  1329. ],
  1330. [
  1331. 8971,
  1332. 'right floor'
  1333. ],
  1334. [
  1335. 9001,
  1336. 'left-pointing angle bracket'
  1337. ],
  1338. [
  1339. 9002,
  1340. 'right-pointing angle bracket'
  1341. ],
  1342. [
  1343. 9674,
  1344. 'lozenge'
  1345. ],
  1346. [
  1347. 9824,
  1348. 'black spade suit'
  1349. ],
  1350. [
  1351. 9827,
  1352. 'black club suit'
  1353. ],
  1354. [
  1355. 9829,
  1356. 'black heart suit'
  1357. ],
  1358. [
  1359. 9830,
  1360. 'black diamond suit'
  1361. ],
  1362. [
  1363. 8194,
  1364. 'en space'
  1365. ],
  1366. [
  1367. 8195,
  1368. 'em space'
  1369. ],
  1370. [
  1371. 8201,
  1372. 'thin space'
  1373. ],
  1374. [
  1375. 8204,
  1376. 'zero width non-joiner'
  1377. ],
  1378. [
  1379. 8205,
  1380. 'zero width joiner'
  1381. ],
  1382. [
  1383. 8206,
  1384. 'left-to-right mark'
  1385. ],
  1386. [
  1387. 8207,
  1388. 'right-to-left mark'
  1389. ]
  1390. ]
  1391. }
  1392. ];
  1393. };
  1394. var charmapFilter = function (charmap) {
  1395. return global$1.grep(charmap, function (item) {
  1396. return isArray$1(item) && item.length === 2;
  1397. });
  1398. };
  1399. var getCharsFromSetting = function (settingValue) {
  1400. if (isArray$1(settingValue)) {
  1401. return [].concat(charmapFilter(settingValue));
  1402. }
  1403. if (typeof settingValue === 'function') {
  1404. return settingValue();
  1405. }
  1406. return [];
  1407. };
  1408. var extendCharMap = function (editor, charmap) {
  1409. var userCharMap = getCharMap(editor);
  1410. if (userCharMap) {
  1411. charmap = [{
  1412. name: UserDefined,
  1413. characters: getCharsFromSetting(userCharMap)
  1414. }];
  1415. }
  1416. var userCharMapAppend = getCharMapAppend(editor);
  1417. if (userCharMapAppend) {
  1418. var userDefinedGroup = global$1.grep(charmap, function (cg) {
  1419. return cg.name === UserDefined;
  1420. });
  1421. if (userDefinedGroup.length) {
  1422. userDefinedGroup[0].characters = [].concat(userDefinedGroup[0].characters).concat(getCharsFromSetting(userCharMapAppend));
  1423. return charmap;
  1424. }
  1425. return [].concat(charmap).concat({
  1426. name: UserDefined,
  1427. characters: getCharsFromSetting(userCharMapAppend)
  1428. });
  1429. }
  1430. return charmap;
  1431. };
  1432. var getCharMap$1 = function (editor) {
  1433. var groups = extendCharMap(editor, getDefaultCharMap());
  1434. return groups.length > 1 ? [{
  1435. name: 'All',
  1436. characters: bind(groups, function (g) {
  1437. return g.characters;
  1438. })
  1439. }].concat(groups) : groups;
  1440. };
  1441. var get = function (editor) {
  1442. var getCharMap = function () {
  1443. return getCharMap$1(editor);
  1444. };
  1445. var insertChar$1 = function (chr) {
  1446. insertChar(editor, chr);
  1447. };
  1448. return {
  1449. getCharMap: getCharMap,
  1450. insertChar: insertChar$1
  1451. };
  1452. };
  1453. var Cell = function (initial) {
  1454. var value = initial;
  1455. var get = function () {
  1456. return value;
  1457. };
  1458. var set = function (v) {
  1459. value = v;
  1460. };
  1461. return {
  1462. get: get,
  1463. set: set
  1464. };
  1465. };
  1466. var last = function (fn, rate) {
  1467. var timer = null;
  1468. var cancel = function () {
  1469. if (timer !== null) {
  1470. domGlobals.clearTimeout(timer);
  1471. timer = null;
  1472. }
  1473. };
  1474. var throttle = function () {
  1475. var args = [];
  1476. for (var _i = 0; _i < arguments.length; _i++) {
  1477. args[_i] = arguments[_i];
  1478. }
  1479. if (timer !== null) {
  1480. domGlobals.clearTimeout(timer);
  1481. }
  1482. timer = domGlobals.setTimeout(function () {
  1483. fn.apply(null, args);
  1484. timer = null;
  1485. }, rate);
  1486. };
  1487. return {
  1488. cancel: cancel,
  1489. throttle: throttle
  1490. };
  1491. };
  1492. var nativeFromCodePoint = String.fromCodePoint;
  1493. var contains = function (str, substr) {
  1494. return str.indexOf(substr) !== -1;
  1495. };
  1496. var fromCodePoint = function () {
  1497. var codePoints = [];
  1498. for (var _i = 0; _i < arguments.length; _i++) {
  1499. codePoints[_i] = arguments[_i];
  1500. }
  1501. if (nativeFromCodePoint) {
  1502. return nativeFromCodePoint.apply(void 0, codePoints);
  1503. } else {
  1504. var codeUnits = [];
  1505. var codeLen = 0;
  1506. var result = '';
  1507. for (var index = 0, len = codePoints.length; index !== len; ++index) {
  1508. var codePoint = +codePoints[index];
  1509. if (!(codePoint < 1114111 && codePoint >>> 0 === codePoint)) {
  1510. throw RangeError('Invalid code point: ' + codePoint);
  1511. }
  1512. if (codePoint <= 65535) {
  1513. codeLen = codeUnits.push(codePoint);
  1514. } else {
  1515. codePoint -= 65536;
  1516. codeLen = codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
  1517. }
  1518. if (codeLen >= 16383) {
  1519. result += String.fromCharCode.apply(null, codeUnits);
  1520. codeUnits.length = 0;
  1521. }
  1522. }
  1523. return result + String.fromCharCode.apply(null, codeUnits);
  1524. }
  1525. };
  1526. var charMatches = function (charCode, name, lowerCasePattern) {
  1527. if (contains(fromCodePoint(charCode).toLowerCase(), lowerCasePattern)) {
  1528. return true;
  1529. } else {
  1530. return contains(name.toLowerCase(), lowerCasePattern) || contains(name.toLowerCase().replace(/\s+/g, ''), lowerCasePattern);
  1531. }
  1532. };
  1533. var scan = function (group, pattern) {
  1534. var matches = [];
  1535. var lowerCasePattern = pattern.toLowerCase();
  1536. each(group.characters, function (g) {
  1537. if (charMatches(g[0], g[1], lowerCasePattern)) {
  1538. matches.push(g);
  1539. }
  1540. });
  1541. return map(matches, function (m) {
  1542. return {
  1543. text: m[1],
  1544. value: fromCodePoint(m[0]),
  1545. icon: fromCodePoint(m[0])
  1546. };
  1547. });
  1548. };
  1549. var patternName = 'pattern';
  1550. var open = function (editor, charMap) {
  1551. var makeGroupItems = function () {
  1552. return [
  1553. {
  1554. label: 'Search',
  1555. type: 'input',
  1556. name: patternName
  1557. },
  1558. {
  1559. type: 'collection',
  1560. name: 'results'
  1561. }
  1562. ];
  1563. };
  1564. var makeTabs = function () {
  1565. return map(charMap, function (charGroup) {
  1566. return {
  1567. title: charGroup.name,
  1568. name: charGroup.name,
  1569. items: makeGroupItems()
  1570. };
  1571. });
  1572. };
  1573. var makePanel = function () {
  1574. return {
  1575. type: 'panel',
  1576. items: makeGroupItems()
  1577. };
  1578. };
  1579. var makeTabPanel = function () {
  1580. return {
  1581. type: 'tabpanel',
  1582. tabs: makeTabs()
  1583. };
  1584. };
  1585. var currentTab = charMap.length === 1 ? Cell(UserDefined) : Cell('All');
  1586. var scanAndSet = function (dialogApi, pattern) {
  1587. find(charMap, function (group) {
  1588. return group.name === currentTab.get();
  1589. }).each(function (f) {
  1590. var items = scan(f, pattern);
  1591. dialogApi.setData({ results: items });
  1592. });
  1593. };
  1594. var SEARCH_DELAY = 40;
  1595. var updateFilter = last(function (dialogApi) {
  1596. var pattern = dialogApi.getData().pattern;
  1597. scanAndSet(dialogApi, pattern);
  1598. }, SEARCH_DELAY);
  1599. var body = charMap.length === 1 ? makePanel() : makeTabPanel();
  1600. var initialData = {
  1601. pattern: '',
  1602. results: scan(charMap[0], '')
  1603. };
  1604. var bridgeSpec = {
  1605. title: 'Special Character',
  1606. size: 'normal',
  1607. body: body,
  1608. buttons: [{
  1609. type: 'cancel',
  1610. name: 'close',
  1611. text: 'Close',
  1612. primary: true
  1613. }],
  1614. initialData: initialData,
  1615. onAction: function (api, details) {
  1616. if (details.name === 'results') {
  1617. insertChar(editor, details.value);
  1618. api.close();
  1619. }
  1620. },
  1621. onTabChange: function (dialogApi, details) {
  1622. currentTab.set(details.newTabName);
  1623. updateFilter.throttle(dialogApi);
  1624. },
  1625. onChange: function (dialogApi, changeData) {
  1626. if (changeData.name === patternName) {
  1627. updateFilter.throttle(dialogApi);
  1628. }
  1629. }
  1630. };
  1631. var dialogApi = editor.windowManager.open(bridgeSpec);
  1632. dialogApi.focus(patternName);
  1633. };
  1634. var register = function (editor, charMap) {
  1635. editor.addCommand('mceShowCharmap', function () {
  1636. open(editor, charMap);
  1637. });
  1638. };
  1639. var global$2 = tinymce.util.Tools.resolve('tinymce.util.Promise');
  1640. var init = function (editor, all) {
  1641. editor.ui.registry.addAutocompleter('charmap', {
  1642. ch: ':',
  1643. columns: 'auto',
  1644. minChars: 2,
  1645. fetch: function (pattern, _maxResults) {
  1646. return new global$2(function (resolve, _reject) {
  1647. resolve(scan(all, pattern));
  1648. });
  1649. },
  1650. onAction: function (autocompleteApi, rng, value) {
  1651. editor.selection.setRng(rng);
  1652. editor.insertContent(value);
  1653. autocompleteApi.hide();
  1654. }
  1655. });
  1656. };
  1657. var register$1 = function (editor) {
  1658. editor.ui.registry.addButton('charmap', {
  1659. icon: 'insert-character',
  1660. tooltip: 'Special character',
  1661. onAction: function () {
  1662. return editor.execCommand('mceShowCharmap');
  1663. }
  1664. });
  1665. editor.ui.registry.addMenuItem('charmap', {
  1666. icon: 'insert-character',
  1667. text: 'Special character...',
  1668. onAction: function () {
  1669. return editor.execCommand('mceShowCharmap');
  1670. }
  1671. });
  1672. };
  1673. function Plugin () {
  1674. global.add('charmap', function (editor) {
  1675. var charMap = getCharMap$1(editor);
  1676. register(editor, charMap);
  1677. register$1(editor);
  1678. init(editor, charMap[0]);
  1679. return get(editor);
  1680. });
  1681. }
  1682. Plugin();
  1683. }(window));