Subversion Repositories oidplus

Rev

Rev 1042 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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