plugin.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275
  1. (function () {
  2. var charmap = (function () {
  3. 'use strict';
  4. var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
  5. var fireInsertCustomChar = function (editor, chr) {
  6. return editor.fire('insertCustomChar', { chr: chr });
  7. };
  8. var Events = { fireInsertCustomChar: fireInsertCustomChar };
  9. var insertChar = function (editor, chr) {
  10. var evtChr = Events.fireInsertCustomChar(editor, chr).chr;
  11. editor.execCommand('mceInsertContent', false, evtChr);
  12. };
  13. var Actions = { insertChar: insertChar };
  14. var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
  15. var getCharMap = function (editor) {
  16. return editor.settings.charmap;
  17. };
  18. var getCharMapAppend = function (editor) {
  19. return editor.settings.charmap_append;
  20. };
  21. var Settings = {
  22. getCharMap: getCharMap,
  23. getCharMapAppend: getCharMapAppend
  24. };
  25. var isArray = global$1.isArray;
  26. var getDefaultCharMap = function () {
  27. return [
  28. [
  29. '160',
  30. 'no-break space'
  31. ],
  32. [
  33. '173',
  34. 'soft hyphen'
  35. ],
  36. [
  37. '34',
  38. 'quotation mark'
  39. ],
  40. [
  41. '162',
  42. 'cent sign'
  43. ],
  44. [
  45. '8364',
  46. 'euro sign'
  47. ],
  48. [
  49. '163',
  50. 'pound sign'
  51. ],
  52. [
  53. '165',
  54. 'yen sign'
  55. ],
  56. [
  57. '169',
  58. 'copyright sign'
  59. ],
  60. [
  61. '174',
  62. 'registered sign'
  63. ],
  64. [
  65. '8482',
  66. 'trade mark sign'
  67. ],
  68. [
  69. '8240',
  70. 'per mille sign'
  71. ],
  72. [
  73. '181',
  74. 'micro sign'
  75. ],
  76. [
  77. '183',
  78. 'middle dot'
  79. ],
  80. [
  81. '8226',
  82. 'bullet'
  83. ],
  84. [
  85. '8230',
  86. 'three dot leader'
  87. ],
  88. [
  89. '8242',
  90. 'minutes / feet'
  91. ],
  92. [
  93. '8243',
  94. 'seconds / inches'
  95. ],
  96. [
  97. '167',
  98. 'section sign'
  99. ],
  100. [
  101. '182',
  102. 'paragraph sign'
  103. ],
  104. [
  105. '223',
  106. 'sharp s / ess-zed'
  107. ],
  108. [
  109. '8249',
  110. 'single left-pointing angle quotation mark'
  111. ],
  112. [
  113. '8250',
  114. 'single right-pointing angle quotation mark'
  115. ],
  116. [
  117. '171',
  118. 'left pointing guillemet'
  119. ],
  120. [
  121. '187',
  122. 'right pointing guillemet'
  123. ],
  124. [
  125. '8216',
  126. 'left single quotation mark'
  127. ],
  128. [
  129. '8217',
  130. 'right single quotation mark'
  131. ],
  132. [
  133. '8220',
  134. 'left double quotation mark'
  135. ],
  136. [
  137. '8221',
  138. 'right double quotation mark'
  139. ],
  140. [
  141. '8218',
  142. 'single low-9 quotation mark'
  143. ],
  144. [
  145. '8222',
  146. 'double low-9 quotation mark'
  147. ],
  148. [
  149. '60',
  150. 'less-than sign'
  151. ],
  152. [
  153. '62',
  154. 'greater-than sign'
  155. ],
  156. [
  157. '8804',
  158. 'less-than or equal to'
  159. ],
  160. [
  161. '8805',
  162. 'greater-than or equal to'
  163. ],
  164. [
  165. '8211',
  166. 'en dash'
  167. ],
  168. [
  169. '8212',
  170. 'em dash'
  171. ],
  172. [
  173. '175',
  174. 'macron'
  175. ],
  176. [
  177. '8254',
  178. 'overline'
  179. ],
  180. [
  181. '164',
  182. 'currency sign'
  183. ],
  184. [
  185. '166',
  186. 'broken bar'
  187. ],
  188. [
  189. '168',
  190. 'diaeresis'
  191. ],
  192. [
  193. '161',
  194. 'inverted exclamation mark'
  195. ],
  196. [
  197. '191',
  198. 'turned question mark'
  199. ],
  200. [
  201. '710',
  202. 'circumflex accent'
  203. ],
  204. [
  205. '732',
  206. 'small tilde'
  207. ],
  208. [
  209. '176',
  210. 'degree sign'
  211. ],
  212. [
  213. '8722',
  214. 'minus sign'
  215. ],
  216. [
  217. '177',
  218. 'plus-minus sign'
  219. ],
  220. [
  221. '247',
  222. 'division sign'
  223. ],
  224. [
  225. '8260',
  226. 'fraction slash'
  227. ],
  228. [
  229. '215',
  230. 'multiplication sign'
  231. ],
  232. [
  233. '185',
  234. 'superscript one'
  235. ],
  236. [
  237. '178',
  238. 'superscript two'
  239. ],
  240. [
  241. '179',
  242. 'superscript three'
  243. ],
  244. [
  245. '188',
  246. 'fraction one quarter'
  247. ],
  248. [
  249. '189',
  250. 'fraction one half'
  251. ],
  252. [
  253. '190',
  254. 'fraction three quarters'
  255. ],
  256. [
  257. '402',
  258. 'function / florin'
  259. ],
  260. [
  261. '8747',
  262. 'integral'
  263. ],
  264. [
  265. '8721',
  266. 'n-ary sumation'
  267. ],
  268. [
  269. '8734',
  270. 'infinity'
  271. ],
  272. [
  273. '8730',
  274. 'square root'
  275. ],
  276. [
  277. '8764',
  278. 'similar to'
  279. ],
  280. [
  281. '8773',
  282. 'approximately equal to'
  283. ],
  284. [
  285. '8776',
  286. 'almost equal to'
  287. ],
  288. [
  289. '8800',
  290. 'not equal to'
  291. ],
  292. [
  293. '8801',
  294. 'identical to'
  295. ],
  296. [
  297. '8712',
  298. 'element of'
  299. ],
  300. [
  301. '8713',
  302. 'not an element of'
  303. ],
  304. [
  305. '8715',
  306. 'contains as member'
  307. ],
  308. [
  309. '8719',
  310. 'n-ary product'
  311. ],
  312. [
  313. '8743',
  314. 'logical and'
  315. ],
  316. [
  317. '8744',
  318. 'logical or'
  319. ],
  320. [
  321. '172',
  322. 'not sign'
  323. ],
  324. [
  325. '8745',
  326. 'intersection'
  327. ],
  328. [
  329. '8746',
  330. 'union'
  331. ],
  332. [
  333. '8706',
  334. 'partial differential'
  335. ],
  336. [
  337. '8704',
  338. 'for all'
  339. ],
  340. [
  341. '8707',
  342. 'there exists'
  343. ],
  344. [
  345. '8709',
  346. 'diameter'
  347. ],
  348. [
  349. '8711',
  350. 'backward difference'
  351. ],
  352. [
  353. '8727',
  354. 'asterisk operator'
  355. ],
  356. [
  357. '8733',
  358. 'proportional to'
  359. ],
  360. [
  361. '8736',
  362. 'angle'
  363. ],
  364. [
  365. '180',
  366. 'acute accent'
  367. ],
  368. [
  369. '184',
  370. 'cedilla'
  371. ],
  372. [
  373. '170',
  374. 'feminine ordinal indicator'
  375. ],
  376. [
  377. '186',
  378. 'masculine ordinal indicator'
  379. ],
  380. [
  381. '8224',
  382. 'dagger'
  383. ],
  384. [
  385. '8225',
  386. 'double dagger'
  387. ],
  388. [
  389. '192',
  390. 'A - grave'
  391. ],
  392. [
  393. '193',
  394. 'A - acute'
  395. ],
  396. [
  397. '194',
  398. 'A - circumflex'
  399. ],
  400. [
  401. '195',
  402. 'A - tilde'
  403. ],
  404. [
  405. '196',
  406. 'A - diaeresis'
  407. ],
  408. [
  409. '197',
  410. 'A - ring above'
  411. ],
  412. [
  413. '256',
  414. 'A - macron'
  415. ],
  416. [
  417. '198',
  418. 'ligature AE'
  419. ],
  420. [
  421. '199',
  422. 'C - cedilla'
  423. ],
  424. [
  425. '200',
  426. 'E - grave'
  427. ],
  428. [
  429. '201',
  430. 'E - acute'
  431. ],
  432. [
  433. '202',
  434. 'E - circumflex'
  435. ],
  436. [
  437. '203',
  438. 'E - diaeresis'
  439. ],
  440. [
  441. '274',
  442. 'E - macron'
  443. ],
  444. [
  445. '204',
  446. 'I - grave'
  447. ],
  448. [
  449. '205',
  450. 'I - acute'
  451. ],
  452. [
  453. '206',
  454. 'I - circumflex'
  455. ],
  456. [
  457. '207',
  458. 'I - diaeresis'
  459. ],
  460. [
  461. '298',
  462. 'I - macron'
  463. ],
  464. [
  465. '208',
  466. 'ETH'
  467. ],
  468. [
  469. '209',
  470. 'N - tilde'
  471. ],
  472. [
  473. '210',
  474. 'O - grave'
  475. ],
  476. [
  477. '211',
  478. 'O - acute'
  479. ],
  480. [
  481. '212',
  482. 'O - circumflex'
  483. ],
  484. [
  485. '213',
  486. 'O - tilde'
  487. ],
  488. [
  489. '214',
  490. 'O - diaeresis'
  491. ],
  492. [
  493. '216',
  494. 'O - slash'
  495. ],
  496. [
  497. '332',
  498. 'O - macron'
  499. ],
  500. [
  501. '338',
  502. 'ligature OE'
  503. ],
  504. [
  505. '352',
  506. 'S - caron'
  507. ],
  508. [
  509. '217',
  510. 'U - grave'
  511. ],
  512. [
  513. '218',
  514. 'U - acute'
  515. ],
  516. [
  517. '219',
  518. 'U - circumflex'
  519. ],
  520. [
  521. '220',
  522. 'U - diaeresis'
  523. ],
  524. [
  525. '362',
  526. 'U - macron'
  527. ],
  528. [
  529. '221',
  530. 'Y - acute'
  531. ],
  532. [
  533. '376',
  534. 'Y - diaeresis'
  535. ],
  536. [
  537. '562',
  538. 'Y - macron'
  539. ],
  540. [
  541. '222',
  542. 'THORN'
  543. ],
  544. [
  545. '224',
  546. 'a - grave'
  547. ],
  548. [
  549. '225',
  550. 'a - acute'
  551. ],
  552. [
  553. '226',
  554. 'a - circumflex'
  555. ],
  556. [
  557. '227',
  558. 'a - tilde'
  559. ],
  560. [
  561. '228',
  562. 'a - diaeresis'
  563. ],
  564. [
  565. '229',
  566. 'a - ring above'
  567. ],
  568. [
  569. '257',
  570. 'a - macron'
  571. ],
  572. [
  573. '230',
  574. 'ligature ae'
  575. ],
  576. [
  577. '231',
  578. 'c - cedilla'
  579. ],
  580. [
  581. '232',
  582. 'e - grave'
  583. ],
  584. [
  585. '233',
  586. 'e - acute'
  587. ],
  588. [
  589. '234',
  590. 'e - circumflex'
  591. ],
  592. [
  593. '235',
  594. 'e - diaeresis'
  595. ],
  596. [
  597. '275',
  598. 'e - macron'
  599. ],
  600. [
  601. '236',
  602. 'i - grave'
  603. ],
  604. [
  605. '237',
  606. 'i - acute'
  607. ],
  608. [
  609. '238',
  610. 'i - circumflex'
  611. ],
  612. [
  613. '239',
  614. 'i - diaeresis'
  615. ],
  616. [
  617. '299',
  618. 'i - macron'
  619. ],
  620. [
  621. '240',
  622. 'eth'
  623. ],
  624. [
  625. '241',
  626. 'n - tilde'
  627. ],
  628. [
  629. '242',
  630. 'o - grave'
  631. ],
  632. [
  633. '243',
  634. 'o - acute'
  635. ],
  636. [
  637. '244',
  638. 'o - circumflex'
  639. ],
  640. [
  641. '245',
  642. 'o - tilde'
  643. ],
  644. [
  645. '246',
  646. 'o - diaeresis'
  647. ],
  648. [
  649. '248',
  650. 'o slash'
  651. ],
  652. [
  653. '333',
  654. 'o macron'
  655. ],
  656. [
  657. '339',
  658. 'ligature oe'
  659. ],
  660. [
  661. '353',
  662. 's - caron'
  663. ],
  664. [
  665. '249',
  666. 'u - grave'
  667. ],
  668. [
  669. '250',
  670. 'u - acute'
  671. ],
  672. [
  673. '251',
  674. 'u - circumflex'
  675. ],
  676. [
  677. '252',
  678. 'u - diaeresis'
  679. ],
  680. [
  681. '363',
  682. 'u - macron'
  683. ],
  684. [
  685. '253',
  686. 'y - acute'
  687. ],
  688. [
  689. '254',
  690. 'thorn'
  691. ],
  692. [
  693. '255',
  694. 'y - diaeresis'
  695. ],
  696. [
  697. '563',
  698. 'y - macron'
  699. ],
  700. [
  701. '913',
  702. 'Alpha'
  703. ],
  704. [
  705. '914',
  706. 'Beta'
  707. ],
  708. [
  709. '915',
  710. 'Gamma'
  711. ],
  712. [
  713. '916',
  714. 'Delta'
  715. ],
  716. [
  717. '917',
  718. 'Epsilon'
  719. ],
  720. [
  721. '918',
  722. 'Zeta'
  723. ],
  724. [
  725. '919',
  726. 'Eta'
  727. ],
  728. [
  729. '920',
  730. 'Theta'
  731. ],
  732. [
  733. '921',
  734. 'Iota'
  735. ],
  736. [
  737. '922',
  738. 'Kappa'
  739. ],
  740. [
  741. '923',
  742. 'Lambda'
  743. ],
  744. [
  745. '924',
  746. 'Mu'
  747. ],
  748. [
  749. '925',
  750. 'Nu'
  751. ],
  752. [
  753. '926',
  754. 'Xi'
  755. ],
  756. [
  757. '927',
  758. 'Omicron'
  759. ],
  760. [
  761. '928',
  762. 'Pi'
  763. ],
  764. [
  765. '929',
  766. 'Rho'
  767. ],
  768. [
  769. '931',
  770. 'Sigma'
  771. ],
  772. [
  773. '932',
  774. 'Tau'
  775. ],
  776. [
  777. '933',
  778. 'Upsilon'
  779. ],
  780. [
  781. '934',
  782. 'Phi'
  783. ],
  784. [
  785. '935',
  786. 'Chi'
  787. ],
  788. [
  789. '936',
  790. 'Psi'
  791. ],
  792. [
  793. '937',
  794. 'Omega'
  795. ],
  796. [
  797. '945',
  798. 'alpha'
  799. ],
  800. [
  801. '946',
  802. 'beta'
  803. ],
  804. [
  805. '947',
  806. 'gamma'
  807. ],
  808. [
  809. '948',
  810. 'delta'
  811. ],
  812. [
  813. '949',
  814. 'epsilon'
  815. ],
  816. [
  817. '950',
  818. 'zeta'
  819. ],
  820. [
  821. '951',
  822. 'eta'
  823. ],
  824. [
  825. '952',
  826. 'theta'
  827. ],
  828. [
  829. '953',
  830. 'iota'
  831. ],
  832. [
  833. '954',
  834. 'kappa'
  835. ],
  836. [
  837. '955',
  838. 'lambda'
  839. ],
  840. [
  841. '956',
  842. 'mu'
  843. ],
  844. [
  845. '957',
  846. 'nu'
  847. ],
  848. [
  849. '958',
  850. 'xi'
  851. ],
  852. [
  853. '959',
  854. 'omicron'
  855. ],
  856. [
  857. '960',
  858. 'pi'
  859. ],
  860. [
  861. '961',
  862. 'rho'
  863. ],
  864. [
  865. '962',
  866. 'final sigma'
  867. ],
  868. [
  869. '963',
  870. 'sigma'
  871. ],
  872. [
  873. '964',
  874. 'tau'
  875. ],
  876. [
  877. '965',
  878. 'upsilon'
  879. ],
  880. [
  881. '966',
  882. 'phi'
  883. ],
  884. [
  885. '967',
  886. 'chi'
  887. ],
  888. [
  889. '968',
  890. 'psi'
  891. ],
  892. [
  893. '969',
  894. 'omega'
  895. ],
  896. [
  897. '8501',
  898. 'alef symbol'
  899. ],
  900. [
  901. '982',
  902. 'pi symbol'
  903. ],
  904. [
  905. '8476',
  906. 'real part symbol'
  907. ],
  908. [
  909. '978',
  910. 'upsilon - hook symbol'
  911. ],
  912. [
  913. '8472',
  914. 'Weierstrass p'
  915. ],
  916. [
  917. '8465',
  918. 'imaginary part'
  919. ],
  920. [
  921. '8592',
  922. 'leftwards arrow'
  923. ],
  924. [
  925. '8593',
  926. 'upwards arrow'
  927. ],
  928. [
  929. '8594',
  930. 'rightwards arrow'
  931. ],
  932. [
  933. '8595',
  934. 'downwards arrow'
  935. ],
  936. [
  937. '8596',
  938. 'left right arrow'
  939. ],
  940. [
  941. '8629',
  942. 'carriage return'
  943. ],
  944. [
  945. '8656',
  946. 'leftwards double arrow'
  947. ],
  948. [
  949. '8657',
  950. 'upwards double arrow'
  951. ],
  952. [
  953. '8658',
  954. 'rightwards double arrow'
  955. ],
  956. [
  957. '8659',
  958. 'downwards double arrow'
  959. ],
  960. [
  961. '8660',
  962. 'left right double arrow'
  963. ],
  964. [
  965. '8756',
  966. 'therefore'
  967. ],
  968. [
  969. '8834',
  970. 'subset of'
  971. ],
  972. [
  973. '8835',
  974. 'superset of'
  975. ],
  976. [
  977. '8836',
  978. 'not a subset of'
  979. ],
  980. [
  981. '8838',
  982. 'subset of or equal to'
  983. ],
  984. [
  985. '8839',
  986. 'superset of or equal to'
  987. ],
  988. [
  989. '8853',
  990. 'circled plus'
  991. ],
  992. [
  993. '8855',
  994. 'circled times'
  995. ],
  996. [
  997. '8869',
  998. 'perpendicular'
  999. ],
  1000. [
  1001. '8901',
  1002. 'dot operator'
  1003. ],
  1004. [
  1005. '8968',
  1006. 'left ceiling'
  1007. ],
  1008. [
  1009. '8969',
  1010. 'right ceiling'
  1011. ],
  1012. [
  1013. '8970',
  1014. 'left floor'
  1015. ],
  1016. [
  1017. '8971',
  1018. 'right floor'
  1019. ],
  1020. [
  1021. '9001',
  1022. 'left-pointing angle bracket'
  1023. ],
  1024. [
  1025. '9002',
  1026. 'right-pointing angle bracket'
  1027. ],
  1028. [
  1029. '9674',
  1030. 'lozenge'
  1031. ],
  1032. [
  1033. '9824',
  1034. 'black spade suit'
  1035. ],
  1036. [
  1037. '9827',
  1038. 'black club suit'
  1039. ],
  1040. [
  1041. '9829',
  1042. 'black heart suit'
  1043. ],
  1044. [
  1045. '9830',
  1046. 'black diamond suit'
  1047. ],
  1048. [
  1049. '8194',
  1050. 'en space'
  1051. ],
  1052. [
  1053. '8195',
  1054. 'em space'
  1055. ],
  1056. [
  1057. '8201',
  1058. 'thin space'
  1059. ],
  1060. [
  1061. '8204',
  1062. 'zero width non-joiner'
  1063. ],
  1064. [
  1065. '8205',
  1066. 'zero width joiner'
  1067. ],
  1068. [
  1069. '8206',
  1070. 'left-to-right mark'
  1071. ],
  1072. [
  1073. '8207',
  1074. 'right-to-left mark'
  1075. ]
  1076. ];
  1077. };
  1078. var charmapFilter = function (charmap) {
  1079. return global$1.grep(charmap, function (item) {
  1080. return isArray(item) && item.length === 2;
  1081. });
  1082. };
  1083. var getCharsFromSetting = function (settingValue) {
  1084. if (isArray(settingValue)) {
  1085. return [].concat(charmapFilter(settingValue));
  1086. }
  1087. if (typeof settingValue === 'function') {
  1088. return settingValue();
  1089. }
  1090. return [];
  1091. };
  1092. var extendCharMap = function (editor, charmap) {
  1093. var userCharMap = Settings.getCharMap(editor);
  1094. if (userCharMap) {
  1095. charmap = getCharsFromSetting(userCharMap);
  1096. }
  1097. var userCharMapAppend = Settings.getCharMapAppend(editor);
  1098. if (userCharMapAppend) {
  1099. return [].concat(charmap).concat(getCharsFromSetting(userCharMapAppend));
  1100. }
  1101. return charmap;
  1102. };
  1103. var getCharMap$1 = function (editor) {
  1104. return extendCharMap(editor, getDefaultCharMap());
  1105. };
  1106. var CharMap = { getCharMap: getCharMap$1 };
  1107. var get = function (editor) {
  1108. var getCharMap = function () {
  1109. return CharMap.getCharMap(editor);
  1110. };
  1111. var insertChar = function (chr) {
  1112. Actions.insertChar(editor, chr);
  1113. };
  1114. return {
  1115. getCharMap: getCharMap,
  1116. insertChar: insertChar
  1117. };
  1118. };
  1119. var Api = { get: get };
  1120. var getHtml = function (charmap) {
  1121. var gridHtml, x, y;
  1122. var width = Math.min(charmap.length, 25);
  1123. var height = Math.ceil(charmap.length / width);
  1124. gridHtml = '<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';
  1125. for (y = 0; y < height; y++) {
  1126. gridHtml += '<tr>';
  1127. for (x = 0; x < width; x++) {
  1128. var index = y * width + x;
  1129. if (index < charmap.length) {
  1130. var chr = charmap[index];
  1131. var charCode = parseInt(chr[0], 10);
  1132. var chrText = chr ? String.fromCharCode(charCode) : '&nbsp;';
  1133. gridHtml += '<td title="' + chr[1] + '">' + '<div tabindex="-1" title="' + chr[1] + '" role="button" data-chr="' + charCode + '">' + chrText + '</div>' + '</td>';
  1134. } else {
  1135. gridHtml += '<td />';
  1136. }
  1137. }
  1138. gridHtml += '</tr>';
  1139. }
  1140. gridHtml += '</tbody></table>';
  1141. return gridHtml;
  1142. };
  1143. var GridHtml = { getHtml: getHtml };
  1144. var getParentTd = function (elm) {
  1145. while (elm) {
  1146. if (elm.nodeName === 'TD') {
  1147. return elm;
  1148. }
  1149. elm = elm.parentNode;
  1150. }
  1151. };
  1152. var open = function (editor) {
  1153. var win;
  1154. var charMapPanel = {
  1155. type: 'container',
  1156. html: GridHtml.getHtml(CharMap.getCharMap(editor)),
  1157. onclick: function (e) {
  1158. var target = e.target;
  1159. if (/^(TD|DIV)$/.test(target.nodeName)) {
  1160. var charDiv = getParentTd(target).firstChild;
  1161. if (charDiv && charDiv.hasAttribute('data-chr')) {
  1162. var charCodeString = charDiv.getAttribute('data-chr');
  1163. var charCode = parseInt(charCodeString, 10);
  1164. if (!isNaN(charCode)) {
  1165. Actions.insertChar(editor, String.fromCharCode(charCode));
  1166. }
  1167. if (!e.ctrlKey) {
  1168. win.close();
  1169. }
  1170. }
  1171. }
  1172. },
  1173. onmouseover: function (e) {
  1174. var td = getParentTd(e.target);
  1175. if (td && td.firstChild) {
  1176. win.find('#preview').text(td.firstChild.firstChild.data);
  1177. win.find('#previewTitle').text(td.title);
  1178. } else {
  1179. win.find('#preview').text(' ');
  1180. win.find('#previewTitle').text(' ');
  1181. }
  1182. }
  1183. };
  1184. win = editor.windowManager.open({
  1185. title: 'Special character',
  1186. spacing: 10,
  1187. padding: 10,
  1188. items: [
  1189. charMapPanel,
  1190. {
  1191. type: 'container',
  1192. layout: 'flex',
  1193. direction: 'column',
  1194. align: 'center',
  1195. spacing: 5,
  1196. minWidth: 160,
  1197. minHeight: 160,
  1198. items: [
  1199. {
  1200. type: 'label',
  1201. name: 'preview',
  1202. text: ' ',
  1203. style: 'font-size: 40px; text-align: center',
  1204. border: 1,
  1205. minWidth: 140,
  1206. minHeight: 80
  1207. },
  1208. {
  1209. type: 'spacer',
  1210. minHeight: 20
  1211. },
  1212. {
  1213. type: 'label',
  1214. name: 'previewTitle',
  1215. text: ' ',
  1216. style: 'white-space: pre-wrap;',
  1217. border: 1,
  1218. minWidth: 140
  1219. }
  1220. ]
  1221. }
  1222. ],
  1223. buttons: [{
  1224. text: 'Close',
  1225. onclick: function () {
  1226. win.close();
  1227. }
  1228. }]
  1229. });
  1230. };
  1231. var Dialog = { open: open };
  1232. var register = function (editor) {
  1233. editor.addCommand('mceShowCharmap', function () {
  1234. Dialog.open(editor);
  1235. });
  1236. };
  1237. var Commands = { register: register };
  1238. var register$1 = function (editor) {
  1239. editor.addButton('charmap', {
  1240. icon: 'charmap',
  1241. tooltip: 'Special character',
  1242. cmd: 'mceShowCharmap'
  1243. });
  1244. editor.addMenuItem('charmap', {
  1245. icon: 'charmap',
  1246. text: 'Special character',
  1247. cmd: 'mceShowCharmap',
  1248. context: 'insert'
  1249. });
  1250. };
  1251. var Buttons = { register: register$1 };
  1252. global.add('charmap', function (editor) {
  1253. Commands.register(editor);
  1254. Buttons.register(editor);
  1255. return Api.get(editor);
  1256. });
  1257. function Plugin () {
  1258. }
  1259. return Plugin;
  1260. }());
  1261. })();