Download extensions/sd-model-organizer/javascript/tinymce/plugins/charmap/plugin.js from dikdimon/ext: direct link, hf CLI and curl.
- Browser
- Download file 35.5 kB
-
https://huggingface.co/dikdimon/ext/resolve/main/extensions/sd-model-organizer/javascript/tinymce/plugins/charmap/plugin.js
- Command line
-
hf download hf://dikdimon/ext/extensions/sd-model-organizer/javascript/tinymce/plugins/charmap/plugin.js
-
curl -L -o plugin.js https://huggingface.co/dikdimon/ext/resolve/main/extensions/sd-model-organizer/javascript/tinymce/plugins/charmap/plugin.js
35.5 kB
| /** | |
| * TinyMCE version 6.4.1 (2023-03-29) | |
| */ | |
| (function () { | |
| 'use strict'; | |
| var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); | |
| const fireInsertCustomChar = (editor, chr) => { | |
| return editor.dispatch('insertCustomChar', { chr }); | |
| }; | |
| const insertChar = (editor, chr) => { | |
| const evtChr = fireInsertCustomChar(editor, chr).chr; | |
| editor.execCommand('mceInsertContent', false, evtChr); | |
| }; | |
| const hasProto = (v, constructor, predicate) => { | |
| var _a; | |
| if (predicate(v, constructor.prototype)) { | |
| return true; | |
| } else { | |
| return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name; | |
| } | |
| }; | |
| const typeOf = x => { | |
| const t = typeof x; | |
| if (x === null) { | |
| return 'null'; | |
| } else if (t === 'object' && Array.isArray(x)) { | |
| return 'array'; | |
| } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) { | |
| return 'string'; | |
| } else { | |
| return t; | |
| } | |
| }; | |
| const isType = type => value => typeOf(value) === type; | |
| const isSimpleType = type => value => typeof value === type; | |
| const eq = t => a => t === a; | |
| const isArray$1 = isType('array'); | |
| const isNull = eq(null); | |
| const isUndefined = eq(undefined); | |
| const isNullable = a => a === null || a === undefined; | |
| const isNonNullable = a => !isNullable(a); | |
| const isFunction = isSimpleType('function'); | |
| const constant = value => { | |
| return () => { | |
| return value; | |
| }; | |
| }; | |
| const never = constant(false); | |
| class Optional { | |
| constructor(tag, value) { | |
| this.tag = tag; | |
| this.value = value; | |
| } | |
| static some(value) { | |
| return new Optional(true, value); | |
| } | |
| static none() { | |
| return Optional.singletonNone; | |
| } | |
| fold(onNone, onSome) { | |
| if (this.tag) { | |
| return onSome(this.value); | |
| } else { | |
| return onNone(); | |
| } | |
| } | |
| isSome() { | |
| return this.tag; | |
| } | |
| isNone() { | |
| return !this.tag; | |
| } | |
| map(mapper) { | |
| if (this.tag) { | |
| return Optional.some(mapper(this.value)); | |
| } else { | |
| return Optional.none(); | |
| } | |
| } | |
| bind(binder) { | |
| if (this.tag) { | |
| return binder(this.value); | |
| } else { | |
| return Optional.none(); | |
| } | |
| } | |
| exists(predicate) { | |
| return this.tag && predicate(this.value); | |
| } | |
| forall(predicate) { | |
| return !this.tag || predicate(this.value); | |
| } | |
| filter(predicate) { | |
| if (!this.tag || predicate(this.value)) { | |
| return this; | |
| } else { | |
| return Optional.none(); | |
| } | |
| } | |
| getOr(replacement) { | |
| return this.tag ? this.value : replacement; | |
| } | |
| or(replacement) { | |
| return this.tag ? this : replacement; | |
| } | |
| getOrThunk(thunk) { | |
| return this.tag ? this.value : thunk(); | |
| } | |
| orThunk(thunk) { | |
| return this.tag ? this : thunk(); | |
| } | |
| getOrDie(message) { | |
| if (!this.tag) { | |
| throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None'); | |
| } else { | |
| return this.value; | |
| } | |
| } | |
| static from(value) { | |
| return isNonNullable(value) ? Optional.some(value) : Optional.none(); | |
| } | |
| getOrNull() { | |
| return this.tag ? this.value : null; | |
| } | |
| getOrUndefined() { | |
| return this.value; | |
| } | |
| each(worker) { | |
| if (this.tag) { | |
| worker(this.value); | |
| } | |
| } | |
| toArray() { | |
| return this.tag ? [this.value] : []; | |
| } | |
| toString() { | |
| return this.tag ? `some(${ this.value })` : 'none()'; | |
| } | |
| } | |
| Optional.singletonNone = new Optional(false); | |
| const nativePush = Array.prototype.push; | |
| const map = (xs, f) => { | |
| const len = xs.length; | |
| const r = new Array(len); | |
| for (let i = 0; i < len; i++) { | |
| const x = xs[i]; | |
| r[i] = f(x, i); | |
| } | |
| return r; | |
| }; | |
| const each = (xs, f) => { | |
| for (let i = 0, len = xs.length; i < len; i++) { | |
| const x = xs[i]; | |
| f(x, i); | |
| } | |
| }; | |
| const findUntil = (xs, pred, until) => { | |
| for (let i = 0, len = xs.length; i < len; i++) { | |
| const x = xs[i]; | |
| if (pred(x, i)) { | |
| return Optional.some(x); | |
| } else if (until(x, i)) { | |
| break; | |
| } | |
| } | |
| return Optional.none(); | |
| }; | |
| const find = (xs, pred) => { | |
| return findUntil(xs, pred, never); | |
| }; | |
| const flatten = xs => { | |
| const r = []; | |
| for (let i = 0, len = xs.length; i < len; ++i) { | |
| if (!isArray$1(xs[i])) { | |
| throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); | |
| } | |
| nativePush.apply(r, xs[i]); | |
| } | |
| return r; | |
| }; | |
| const bind = (xs, f) => flatten(map(xs, f)); | |
| var global = tinymce.util.Tools.resolve('tinymce.util.Tools'); | |
| const option = name => editor => editor.options.get(name); | |
| const register$2 = editor => { | |
| const registerOption = editor.options.register; | |
| const charMapProcessor = value => isFunction(value) || isArray$1(value); | |
| registerOption('charmap', { processor: charMapProcessor }); | |
| registerOption('charmap_append', { processor: charMapProcessor }); | |
| }; | |
| const getCharMap$1 = option('charmap'); | |
| const getCharMapAppend = option('charmap_append'); | |
| const isArray = global.isArray; | |
| const UserDefined = 'User Defined'; | |
| const getDefaultCharMap = () => { | |
| return [ | |
| { | |
| name: 'Currency', | |
| characters: [ | |
| [ | |
| 36, | |
| 'dollar sign' | |
| ], | |
| [ | |
| 162, | |
| 'cent sign' | |
| ], | |
| [ | |
| 8364, | |
| 'euro sign' | |
| ], | |
| [ | |
| 163, | |
| 'pound sign' | |
| ], | |
| [ | |
| 165, | |
| 'yen sign' | |
| ], | |
| [ | |
| 164, | |
| 'currency sign' | |
| ], | |
| [ | |
| 8352, | |
| 'euro-currency sign' | |
| ], | |
| [ | |
| 8353, | |
| 'colon sign' | |
| ], | |
| [ | |
| 8354, | |
| 'cruzeiro sign' | |
| ], | |
| [ | |
| 8355, | |
| 'french franc sign' | |
| ], | |
| [ | |
| 8356, | |
| 'lira sign' | |
| ], | |
| [ | |
| 8357, | |
| 'mill sign' | |
| ], | |
| [ | |
| 8358, | |
| 'naira sign' | |
| ], | |
| [ | |
| 8359, | |
| 'peseta sign' | |
| ], | |
| [ | |
| 8360, | |
| 'rupee sign' | |
| ], | |
| [ | |
| 8361, | |
| 'won sign' | |
| ], | |
| [ | |
| 8362, | |
| 'new sheqel sign' | |
| ], | |
| [ | |
| 8363, | |
| 'dong sign' | |
| ], | |
| [ | |
| 8365, | |
| 'kip sign' | |
| ], | |
| [ | |
| 8366, | |
| 'tugrik sign' | |
| ], | |
| [ | |
| 8367, | |
| 'drachma sign' | |
| ], | |
| [ | |
| 8368, | |
| 'german penny symbol' | |
| ], | |
| [ | |
| 8369, | |
| 'peso sign' | |
| ], | |
| [ | |
| 8370, | |
| 'guarani sign' | |
| ], | |
| [ | |
| 8371, | |
| 'austral sign' | |
| ], | |
| [ | |
| 8372, | |
| 'hryvnia sign' | |
| ], | |
| [ | |
| 8373, | |
| 'cedi sign' | |
| ], | |
| [ | |
| 8374, | |
| 'livre tournois sign' | |
| ], | |
| [ | |
| 8375, | |
| 'spesmilo sign' | |
| ], | |
| [ | |
| 8376, | |
| 'tenge sign' | |
| ], | |
| [ | |
| 8377, | |
| 'indian rupee sign' | |
| ], | |
| [ | |
| 8378, | |
| 'turkish lira sign' | |
| ], | |
| [ | |
| 8379, | |
| 'nordic mark sign' | |
| ], | |
| [ | |
| 8380, | |
| 'manat sign' | |
| ], | |
| [ | |
| 8381, | |
| 'ruble sign' | |
| ], | |
| [ | |
| 20870, | |
| 'yen character' | |
| ], | |
| [ | |
| 20803, | |
| 'yuan character' | |
| ], | |
| [ | |
| 22291, | |
| 'yuan character, in hong kong and taiwan' | |
| ], | |
| [ | |
| 22278, | |
| 'yen/yuan character variant one' | |
| ] | |
| ] | |
| }, | |
| { | |
| name: 'Text', | |
| characters: [ | |
| [ | |
| 169, | |
| 'copyright sign' | |
| ], | |
| [ | |
| 174, | |
| 'registered sign' | |
| ], | |
| [ | |
| 8482, | |
| 'trade mark sign' | |
| ], | |
| [ | |
| 8240, | |
| 'per mille sign' | |
| ], | |
| [ | |
| 181, | |
| 'micro sign' | |
| ], | |
| [ | |
| 183, | |
| 'middle dot' | |
| ], | |
| [ | |
| 8226, | |
| 'bullet' | |
| ], | |
| [ | |
| 8230, | |
| 'three dot leader' | |
| ], | |
| [ | |
| 8242, | |
| 'minutes / feet' | |
| ], | |
| [ | |
| 8243, | |
| 'seconds / inches' | |
| ], | |
| [ | |
| 167, | |
| 'section sign' | |
| ], | |
| [ | |
| 182, | |
| 'paragraph sign' | |
| ], | |
| [ | |
| 223, | |
| 'sharp s / ess-zed' | |
| ] | |
| ] | |
| }, | |
| { | |
| name: 'Quotations', | |
| characters: [ | |
| [ | |
| 8249, | |
| 'single left-pointing angle quotation mark' | |
| ], | |
| [ | |
| 8250, | |
| 'single right-pointing angle quotation mark' | |
| ], | |
| [ | |
| 171, | |
| 'left pointing guillemet' | |
| ], | |
| [ | |
| 187, | |
| 'right pointing guillemet' | |
| ], | |
| [ | |
| 8216, | |
| 'left single quotation mark' | |
| ], | |
| [ | |
| 8217, | |
| 'right single quotation mark' | |
| ], | |
| [ | |
| 8220, | |
| 'left double quotation mark' | |
| ], | |
| [ | |
| 8221, | |
| 'right double quotation mark' | |
| ], | |
| [ | |
| 8218, | |
| 'single low-9 quotation mark' | |
| ], | |
| [ | |
| 8222, | |
| 'double low-9 quotation mark' | |
| ], | |
| [ | |
| 60, | |
| 'less-than sign' | |
| ], | |
| [ | |
| 62, | |
| 'greater-than sign' | |
| ], | |
| [ | |
| 8804, | |
| 'less-than or equal to' | |
| ], | |
| [ | |
| 8805, | |
| 'greater-than or equal to' | |
| ], | |
| [ | |
| 8211, | |
| 'en dash' | |
| ], | |
| [ | |
| 8212, | |
| 'em dash' | |
| ], | |
| [ | |
| 175, | |
| 'macron' | |
| ], | |
| [ | |
| 8254, | |
| 'overline' | |
| ], | |
| [ | |
| 164, | |
| 'currency sign' | |
| ], | |
| [ | |
| 166, | |
| 'broken bar' | |
| ], | |
| [ | |
| 168, | |
| 'diaeresis' | |
| ], | |
| [ | |
| 161, | |
| 'inverted exclamation mark' | |
| ], | |
| [ | |
| 191, | |
| 'turned question mark' | |
| ], | |
| [ | |
| 710, | |
| 'circumflex accent' | |
| ], | |
| [ | |
| 732, | |
| 'small tilde' | |
| ], | |
| [ | |
| 176, | |
| 'degree sign' | |
| ], | |
| [ | |
| 8722, | |
| 'minus sign' | |
| ], | |
| [ | |
| 177, | |
| 'plus-minus sign' | |
| ], | |
| [ | |
| 247, | |
| 'division sign' | |
| ], | |
| [ | |
| 8260, | |
| 'fraction slash' | |
| ], | |
| [ | |
| 215, | |
| 'multiplication sign' | |
| ], | |
| [ | |
| 185, | |
| 'superscript one' | |
| ], | |
| [ | |
| 178, | |
| 'superscript two' | |
| ], | |
| [ | |
| 179, | |
| 'superscript three' | |
| ], | |
| [ | |
| 188, | |
| 'fraction one quarter' | |
| ], | |
| [ | |
| 189, | |
| 'fraction one half' | |
| ], | |
| [ | |
| 190, | |
| 'fraction three quarters' | |
| ] | |
| ] | |
| }, | |
| { | |
| name: 'Mathematical', | |
| characters: [ | |
| [ | |
| 402, | |
| 'function / florin' | |
| ], | |
| [ | |
| 8747, | |
| 'integral' | |
| ], | |
| [ | |
| 8721, | |
| 'n-ary sumation' | |
| ], | |
| [ | |
| 8734, | |
| 'infinity' | |
| ], | |
| [ | |
| 8730, | |
| 'square root' | |
| ], | |
| [ | |
| 8764, | |
| 'similar to' | |
| ], | |
| [ | |
| 8773, | |
| 'approximately equal to' | |
| ], | |
| [ | |
| 8776, | |
| 'almost equal to' | |
| ], | |
| [ | |
| 8800, | |
| 'not equal to' | |
| ], | |
| [ | |
| 8801, | |
| 'identical to' | |
| ], | |
| [ | |
| 8712, | |
| 'element of' | |
| ], | |
| [ | |
| 8713, | |
| 'not an element of' | |
| ], | |
| [ | |
| 8715, | |
| 'contains as member' | |
| ], | |
| [ | |
| 8719, | |
| 'n-ary product' | |
| ], | |
| [ | |
| 8743, | |
| 'logical and' | |
| ], | |
| [ | |
| 8744, | |
| 'logical or' | |
| ], | |
| [ | |
| 172, | |
| 'not sign' | |
| ], | |
| [ | |
| 8745, | |
| 'intersection' | |
| ], | |
| [ | |
| 8746, | |
| 'union' | |
| ], | |
| [ | |
| 8706, | |
| 'partial differential' | |
| ], | |
| [ | |
| 8704, | |
| 'for all' | |
| ], | |
| [ | |
| 8707, | |
| 'there exists' | |
| ], | |
| [ | |
| 8709, | |
| 'diameter' | |
| ], | |
| [ | |
| 8711, | |
| 'backward difference' | |
| ], | |
| [ | |
| 8727, | |
| 'asterisk operator' | |
| ], | |
| [ | |
| 8733, | |
| 'proportional to' | |
| ], | |
| [ | |
| 8736, | |
| 'angle' | |
| ] | |
| ] | |
| }, | |
| { | |
| name: 'Extended Latin', | |
| characters: [ | |
| [ | |
| 192, | |
| 'A - grave' | |
| ], | |
| [ | |
| 193, | |
| 'A - acute' | |
| ], | |
| [ | |
| 194, | |
| 'A - circumflex' | |
| ], | |
| [ | |
| 195, | |
| 'A - tilde' | |
| ], | |
| [ | |
| 196, | |
| 'A - diaeresis' | |
| ], | |
| [ | |
| 197, | |
| 'A - ring above' | |
| ], | |
| [ | |
| 256, | |
| 'A - macron' | |
| ], | |
| [ | |
| 198, | |
| 'ligature AE' | |
| ], | |
| [ | |
| 199, | |
| 'C - cedilla' | |
| ], | |
| [ | |
| 200, | |
| 'E - grave' | |
| ], | |
| [ | |
| 201, | |
| 'E - acute' | |
| ], | |
| [ | |
| 202, | |
| 'E - circumflex' | |
| ], | |
| [ | |
| 203, | |
| 'E - diaeresis' | |
| ], | |
| [ | |
| 274, | |
| 'E - macron' | |
| ], | |
| [ | |
| 204, | |
| 'I - grave' | |
| ], | |
| [ | |
| 205, | |
| 'I - acute' | |
| ], | |
| [ | |
| 206, | |
| 'I - circumflex' | |
| ], | |
| [ | |
| 207, | |
| 'I - diaeresis' | |
| ], | |
| [ | |
| 298, | |
| 'I - macron' | |
| ], | |
| [ | |
| 208, | |
| 'ETH' | |
| ], | |
| [ | |
| 209, | |
| 'N - tilde' | |
| ], | |
| [ | |
| 210, | |
| 'O - grave' | |
| ], | |
| [ | |
| 211, | |
| 'O - acute' | |
| ], | |
| [ | |
| 212, | |
| 'O - circumflex' | |
| ], | |
| [ | |
| 213, | |
| 'O - tilde' | |
| ], | |
| [ | |
| 214, | |
| 'O - diaeresis' | |
| ], | |
| [ | |
| 216, | |
| 'O - slash' | |
| ], | |
| [ | |
| 332, | |
| 'O - macron' | |
| ], | |
| [ | |
| 338, | |
| 'ligature OE' | |
| ], | |
| [ | |
| 352, | |
| 'S - caron' | |
| ], | |
| [ | |
| 217, | |
| 'U - grave' | |
| ], | |
| [ | |
| 218, | |
| 'U - acute' | |
| ], | |
| [ | |
| 219, | |
| 'U - circumflex' | |
| ], | |
| [ | |
| 220, | |
| 'U - diaeresis' | |
| ], | |
| [ | |
| 362, | |
| 'U - macron' | |
| ], | |
| [ | |
| 221, | |
| 'Y - acute' | |
| ], | |
| [ | |
| 376, | |
| 'Y - diaeresis' | |
| ], | |
| [ | |
| 562, | |
| 'Y - macron' | |
| ], | |
| [ | |
| 222, | |
| 'THORN' | |
| ], | |
| [ | |
| 224, | |
| 'a - grave' | |
| ], | |
| [ | |
| 225, | |
| 'a - acute' | |
| ], | |
| [ | |
| 226, | |
| 'a - circumflex' | |
| ], | |
| [ | |
| 227, | |
| 'a - tilde' | |
| ], | |
| [ | |
| 228, | |
| 'a - diaeresis' | |
| ], | |
| [ | |
| 229, | |
| 'a - ring above' | |
| ], | |
| [ | |
| 257, | |
| 'a - macron' | |
| ], | |
| [ | |
| 230, | |
| 'ligature ae' | |
| ], | |
| [ | |
| 231, | |
| 'c - cedilla' | |
| ], | |
| [ | |
| 232, | |
| 'e - grave' | |
| ], | |
| [ | |
| 233, | |
| 'e - acute' | |
| ], | |
| [ | |
| 234, | |
| 'e - circumflex' | |
| ], | |
| [ | |
| 235, | |
| 'e - diaeresis' | |
| ], | |
| [ | |
| 275, | |
| 'e - macron' | |
| ], | |
| [ | |
| 236, | |
| 'i - grave' | |
| ], | |
| [ | |
| 237, | |
| 'i - acute' | |
| ], | |
| [ | |
| 238, | |
| 'i - circumflex' | |
| ], | |
| [ | |
| 239, | |
| 'i - diaeresis' | |
| ], | |
| [ | |
| 299, | |
| 'i - macron' | |
| ], | |
| [ | |
| 240, | |
| 'eth' | |
| ], | |
| [ | |
| 241, | |
| 'n - tilde' | |
| ], | |
| [ | |
| 242, | |
| 'o - grave' | |
| ], | |
| [ | |
| 243, | |
| 'o - acute' | |
| ], | |
| [ | |
| 244, | |
| 'o - circumflex' | |
| ], | |
| [ | |
| 245, | |
| 'o - tilde' | |
| ], | |
| [ | |
| 246, | |
| 'o - diaeresis' | |
| ], | |
| [ | |
| 248, | |
| 'o slash' | |
| ], | |
| [ | |
| 333, | |
| 'o macron' | |
| ], | |
| [ | |
| 339, | |
| 'ligature oe' | |
| ], | |
| [ | |
| 353, | |
| 's - caron' | |
| ], | |
| [ | |
| 249, | |
| 'u - grave' | |
| ], | |
| [ | |
| 250, | |
| 'u - acute' | |
| ], | |
| [ | |
| 251, | |
| 'u - circumflex' | |
| ], | |
| [ | |
| 252, | |
| 'u - diaeresis' | |
| ], | |
| [ | |
| 363, | |
| 'u - macron' | |
| ], | |
| [ | |
| 253, | |
| 'y - acute' | |
| ], | |
| [ | |
| 254, | |
| 'thorn' | |
| ], | |
| [ | |
| 255, | |
| 'y - diaeresis' | |
| ], | |
| [ | |
| 563, | |
| 'y - macron' | |
| ], | |
| [ | |
| 913, | |
| 'Alpha' | |
| ], | |
| [ | |
| 914, | |
| 'Beta' | |
| ], | |
| [ | |
| 915, | |
| 'Gamma' | |
| ], | |
| [ | |
| 916, | |
| 'Delta' | |
| ], | |
| [ | |
| 917, | |
| 'Epsilon' | |
| ], | |
| [ | |
| 918, | |
| 'Zeta' | |
| ], | |
| [ | |
| 919, | |
| 'Eta' | |
| ], | |
| [ | |
| 920, | |
| 'Theta' | |
| ], | |
| [ | |
| 921, | |
| 'Iota' | |
| ], | |
| [ | |
| 922, | |
| 'Kappa' | |
| ], | |
| [ | |
| 923, | |
| 'Lambda' | |
| ], | |
| [ | |
| 924, | |
| 'Mu' | |
| ], | |
| [ | |
| 925, | |
| 'Nu' | |
| ], | |
| [ | |
| 926, | |
| 'Xi' | |
| ], | |
| [ | |
| 927, | |
| 'Omicron' | |
| ], | |
| [ | |
| 928, | |
| 'Pi' | |
| ], | |
| [ | |
| 929, | |
| 'Rho' | |
| ], | |
| [ | |
| 931, | |
| 'Sigma' | |
| ], | |
| [ | |
| 932, | |
| 'Tau' | |
| ], | |
| [ | |
| 933, | |
| 'Upsilon' | |
| ], | |
| [ | |
| 934, | |
| 'Phi' | |
| ], | |
| [ | |
| 935, | |
| 'Chi' | |
| ], | |
| [ | |
| 936, | |
| 'Psi' | |
| ], | |
| [ | |
| 937, | |
| 'Omega' | |
| ], | |
| [ | |
| 945, | |
| 'alpha' | |
| ], | |
| [ | |
| 946, | |
| 'beta' | |
| ], | |
| [ | |
| 947, | |
| 'gamma' | |
| ], | |
| [ | |
| 948, | |
| 'delta' | |
| ], | |
| [ | |
| 949, | |
| 'epsilon' | |
| ], | |
| [ | |
| 950, | |
| 'zeta' | |
| ], | |
| [ | |
| 951, | |
| 'eta' | |
| ], | |
| [ | |
| 952, | |
| 'theta' | |
| ], | |
| [ | |
| 953, | |
| 'iota' | |
| ], | |
| [ | |
| 954, | |
| 'kappa' | |
| ], | |
| [ | |
| 955, | |
| 'lambda' | |
| ], | |
| [ | |
| 956, | |
| 'mu' | |
| ], | |
| [ | |
| 957, | |
| 'nu' | |
| ], | |
| [ | |
| 958, | |
| 'xi' | |
| ], | |
| [ | |
| 959, | |
| 'omicron' | |
| ], | |
| [ | |
| 960, | |
| 'pi' | |
| ], | |
| [ | |
| 961, | |
| 'rho' | |
| ], | |
| [ | |
| 962, | |
| 'final sigma' | |
| ], | |
| [ | |
| 963, | |
| 'sigma' | |
| ], | |
| [ | |
| 964, | |
| 'tau' | |
| ], | |
| [ | |
| 965, | |
| 'upsilon' | |
| ], | |
| [ | |
| 966, | |
| 'phi' | |
| ], | |
| [ | |
| 967, | |
| 'chi' | |
| ], | |
| [ | |
| 968, | |
| 'psi' | |
| ], | |
| [ | |
| 969, | |
| 'omega' | |
| ] | |
| ] | |
| }, | |
| { | |
| name: 'Symbols', | |
| characters: [ | |
| [ | |
| 8501, | |
| 'alef symbol' | |
| ], | |
| [ | |
| 982, | |
| 'pi symbol' | |
| ], | |
| [ | |
| 8476, | |
| 'real part symbol' | |
| ], | |
| [ | |
| 978, | |
| 'upsilon - hook symbol' | |
| ], | |
| [ | |
| 8472, | |
| 'Weierstrass p' | |
| ], | |
| [ | |
| 8465, | |
| 'imaginary part' | |
| ] | |
| ] | |
| }, | |
| { | |
| name: 'Arrows', | |
| characters: [ | |
| [ | |
| 8592, | |
| 'leftwards arrow' | |
| ], | |
| [ | |
| 8593, | |
| 'upwards arrow' | |
| ], | |
| [ | |
| 8594, | |
| 'rightwards arrow' | |
| ], | |
| [ | |
| 8595, | |
| 'downwards arrow' | |
| ], | |
| [ | |
| 8596, | |
| 'left right arrow' | |
| ], | |
| [ | |
| 8629, | |
| 'carriage return' | |
| ], | |
| [ | |
| 8656, | |
| 'leftwards double arrow' | |
| ], | |
| [ | |
| 8657, | |
| 'upwards double arrow' | |
| ], | |
| [ | |
| 8658, | |
| 'rightwards double arrow' | |
| ], | |
| [ | |
| 8659, | |
| 'downwards double arrow' | |
| ], | |
| [ | |
| 8660, | |
| 'left right double arrow' | |
| ], | |
| [ | |
| 8756, | |
| 'therefore' | |
| ], | |
| [ | |
| 8834, | |
| 'subset of' | |
| ], | |
| [ | |
| 8835, | |
| 'superset of' | |
| ], | |
| [ | |
| 8836, | |
| 'not a subset of' | |
| ], | |
| [ | |
| 8838, | |
| 'subset of or equal to' | |
| ], | |
| [ | |
| 8839, | |
| 'superset of or equal to' | |
| ], | |
| [ | |
| 8853, | |
| 'circled plus' | |
| ], | |
| [ | |
| 8855, | |
| 'circled times' | |
| ], | |
| [ | |
| 8869, | |
| 'perpendicular' | |
| ], | |
| [ | |
| 8901, | |
| 'dot operator' | |
| ], | |
| [ | |
| 8968, | |
| 'left ceiling' | |
| ], | |
| [ | |
| 8969, | |
| 'right ceiling' | |
| ], | |
| [ | |
| 8970, | |
| 'left floor' | |
| ], | |
| [ | |
| 8971, | |
| 'right floor' | |
| ], | |
| [ | |
| 9001, | |
| 'left-pointing angle bracket' | |
| ], | |
| [ | |
| 9002, | |
| 'right-pointing angle bracket' | |
| ], | |
| [ | |
| 9674, | |
| 'lozenge' | |
| ], | |
| [ | |
| 9824, | |
| 'black spade suit' | |
| ], | |
| [ | |
| 9827, | |
| 'black club suit' | |
| ], | |
| [ | |
| 9829, | |
| 'black heart suit' | |
| ], | |
| [ | |
| 9830, | |
| 'black diamond suit' | |
| ], | |
| [ | |
| 8194, | |
| 'en space' | |
| ], | |
| [ | |
| 8195, | |
| 'em space' | |
| ], | |
| [ | |
| 8201, | |
| 'thin space' | |
| ], | |
| [ | |
| 8204, | |
| 'zero width non-joiner' | |
| ], | |
| [ | |
| 8205, | |
| 'zero width joiner' | |
| ], | |
| [ | |
| 8206, | |
| 'left-to-right mark' | |
| ], | |
| [ | |
| 8207, | |
| 'right-to-left mark' | |
| ] | |
| ] | |
| } | |
| ]; | |
| }; | |
| const charmapFilter = charmap => { | |
| return global.grep(charmap, item => { | |
| return isArray(item) && item.length === 2; | |
| }); | |
| }; | |
| const getCharsFromOption = optionValue => { | |
| if (isArray(optionValue)) { | |
| return charmapFilter(optionValue); | |
| } | |
| if (typeof optionValue === 'function') { | |
| return optionValue(); | |
| } | |
| return []; | |
| }; | |
| const extendCharMap = (editor, charmap) => { | |
| const userCharMap = getCharMap$1(editor); | |
| if (userCharMap) { | |
| charmap = [{ | |
| name: UserDefined, | |
| characters: getCharsFromOption(userCharMap) | |
| }]; | |
| } | |
| const userCharMapAppend = getCharMapAppend(editor); | |
| if (userCharMapAppend) { | |
| const userDefinedGroup = global.grep(charmap, cg => cg.name === UserDefined); | |
| if (userDefinedGroup.length) { | |
| userDefinedGroup[0].characters = [ | |
| ...userDefinedGroup[0].characters, | |
| ...getCharsFromOption(userCharMapAppend) | |
| ]; | |
| return charmap; | |
| } | |
| return charmap.concat({ | |
| name: UserDefined, | |
| characters: getCharsFromOption(userCharMapAppend) | |
| }); | |
| } | |
| return charmap; | |
| }; | |
| const getCharMap = editor => { | |
| const groups = extendCharMap(editor, getDefaultCharMap()); | |
| return groups.length > 1 ? [{ | |
| name: 'All', | |
| characters: bind(groups, g => g.characters) | |
| }].concat(groups) : groups; | |
| }; | |
| const get = editor => { | |
| const getCharMap$1 = () => { | |
| return getCharMap(editor); | |
| }; | |
| const insertChar$1 = chr => { | |
| insertChar(editor, chr); | |
| }; | |
| return { | |
| getCharMap: getCharMap$1, | |
| insertChar: insertChar$1 | |
| }; | |
| }; | |
| const Cell = initial => { | |
| let value = initial; | |
| const get = () => { | |
| return value; | |
| }; | |
| const set = v => { | |
| value = v; | |
| }; | |
| return { | |
| get, | |
| set | |
| }; | |
| }; | |
| const last = (fn, rate) => { | |
| let timer = null; | |
| const cancel = () => { | |
| if (!isNull(timer)) { | |
| clearTimeout(timer); | |
| timer = null; | |
| } | |
| }; | |
| const throttle = (...args) => { | |
| cancel(); | |
| timer = setTimeout(() => { | |
| timer = null; | |
| fn.apply(null, args); | |
| }, rate); | |
| }; | |
| return { | |
| cancel, | |
| throttle | |
| }; | |
| }; | |
| const contains = (str, substr, start = 0, end) => { | |
| const idx = str.indexOf(substr, start); | |
| if (idx !== -1) { | |
| return isUndefined(end) ? true : idx + substr.length <= end; | |
| } else { | |
| return false; | |
| } | |
| }; | |
| const fromCodePoint = String.fromCodePoint; | |
| const charMatches = (charCode, name, lowerCasePattern) => { | |
| if (contains(fromCodePoint(charCode).toLowerCase(), lowerCasePattern)) { | |
| return true; | |
| } else { | |
| return contains(name.toLowerCase(), lowerCasePattern) || contains(name.toLowerCase().replace(/\s+/g, ''), lowerCasePattern); | |
| } | |
| }; | |
| const scan = (group, pattern) => { | |
| const matches = []; | |
| const lowerCasePattern = pattern.toLowerCase(); | |
| each(group.characters, g => { | |
| if (charMatches(g[0], g[1], lowerCasePattern)) { | |
| matches.push(g); | |
| } | |
| }); | |
| return map(matches, m => ({ | |
| text: m[1], | |
| value: fromCodePoint(m[0]), | |
| icon: fromCodePoint(m[0]) | |
| })); | |
| }; | |
| const patternName = 'pattern'; | |
| const open = (editor, charMap) => { | |
| const makeGroupItems = () => [ | |
| { | |
| label: 'Search', | |
| type: 'input', | |
| name: patternName | |
| }, | |
| { | |
| type: 'collection', | |
| name: 'results' | |
| } | |
| ]; | |
| const makeTabs = () => map(charMap, charGroup => ({ | |
| title: charGroup.name, | |
| name: charGroup.name, | |
| items: makeGroupItems() | |
| })); | |
| const makePanel = () => ({ | |
| type: 'panel', | |
| items: makeGroupItems() | |
| }); | |
| const makeTabPanel = () => ({ | |
| type: 'tabpanel', | |
| tabs: makeTabs() | |
| }); | |
| const currentTab = charMap.length === 1 ? Cell(UserDefined) : Cell('All'); | |
| const scanAndSet = (dialogApi, pattern) => { | |
| find(charMap, group => group.name === currentTab.get()).each(f => { | |
| const items = scan(f, pattern); | |
| dialogApi.setData({ results: items }); | |
| }); | |
| }; | |
| const SEARCH_DELAY = 40; | |
| const updateFilter = last(dialogApi => { | |
| const pattern = dialogApi.getData().pattern; | |
| scanAndSet(dialogApi, pattern); | |
| }, SEARCH_DELAY); | |
| const body = charMap.length === 1 ? makePanel() : makeTabPanel(); | |
| const initialData = { | |
| pattern: '', | |
| results: scan(charMap[0], '') | |
| }; | |
| const bridgeSpec = { | |
| title: 'Special Character', | |
| size: 'normal', | |
| body, | |
| buttons: [{ | |
| type: 'cancel', | |
| name: 'close', | |
| text: 'Close', | |
| primary: true | |
| }], | |
| initialData, | |
| onAction: (api, details) => { | |
| if (details.name === 'results') { | |
| insertChar(editor, details.value); | |
| api.close(); | |
| } | |
| }, | |
| onTabChange: (dialogApi, details) => { | |
| currentTab.set(details.newTabName); | |
| updateFilter.throttle(dialogApi); | |
| }, | |
| onChange: (dialogApi, changeData) => { | |
| if (changeData.name === patternName) { | |
| updateFilter.throttle(dialogApi); | |
| } | |
| } | |
| }; | |
| const dialogApi = editor.windowManager.open(bridgeSpec); | |
| dialogApi.focus(patternName); | |
| }; | |
| const register$1 = (editor, charMap) => { | |
| editor.addCommand('mceShowCharmap', () => { | |
| open(editor, charMap); | |
| }); | |
| }; | |
| const init = (editor, all) => { | |
| editor.ui.registry.addAutocompleter('charmap', { | |
| trigger: ':', | |
| columns: 'auto', | |
| minChars: 2, | |
| fetch: (pattern, _maxResults) => new Promise((resolve, _reject) => { | |
| resolve(scan(all, pattern)); | |
| }), | |
| onAction: (autocompleteApi, rng, value) => { | |
| editor.selection.setRng(rng); | |
| editor.insertContent(value); | |
| autocompleteApi.hide(); | |
| } | |
| }); | |
| }; | |
| const register = editor => { | |
| const onAction = () => editor.execCommand('mceShowCharmap'); | |
| editor.ui.registry.addButton('charmap', { | |
| icon: 'insert-character', | |
| tooltip: 'Special character', | |
| onAction | |
| }); | |
| editor.ui.registry.addMenuItem('charmap', { | |
| icon: 'insert-character', | |
| text: 'Special character...', | |
| onAction | |
| }); | |
| }; | |
| var Plugin = () => { | |
| global$1.add('charmap', editor => { | |
| register$2(editor); | |
| const charMap = getCharMap(editor); | |
| register$1(editor, charMap); | |
| register(editor); | |
| init(editor, charMap[0]); | |
| return get(editor); | |
| }); | |
| }; | |
| Plugin(); | |
| })(); | |