Bez popisu

plugin.js 23KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276
  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. })();