(function () {
var charmap = (function () {
'use strict';
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
var fireInsertCustomChar = function (editor, chr) {
return editor.fire('insertCustomChar', { chr: chr });
};
var Events = { fireInsertCustomChar: fireInsertCustomChar };
var insertChar = function (editor, chr) {
var evtChr = Events.fireInsertCustomChar(editor, chr).chr;
editor.execCommand('mceInsertContent', false, evtChr);
};
var Actions = { insertChar: insertChar };
var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
var getCharMap = function (editor) {
return editor.settings.charmap;
};
var getCharMapAppend = function (editor) {
return editor.settings.charmap_append;
};
var Settings = {
getCharMap: getCharMap,
getCharMapAppend: getCharMapAppend
};
var isArray = global$1.isArray;
var getDefaultCharMap = function () {
return [
[
'160',
'no-break space'
],
[
'173',
'soft hyphen'
],
[
'34',
'quotation mark'
],
[
'162',
'cent sign'
],
[
'8364',
'euro sign'
],
[
'163',
'pound sign'
],
[
'165',
'yen sign'
],
[
'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'
],
[
'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'
],
[
'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'
],
[
'180',
'acute accent'
],
[
'184',
'cedilla'
],
[
'170',
'feminine ordinal indicator'
],
[
'186',
'masculine ordinal indicator'
],
[
'8224',
'dagger'
],
[
'8225',
'double dagger'
],
[
'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'
],
[
'8501',
'alef symbol'
],
[
'982',
'pi symbol'
],
[
'8476',
'real part symbol'
],
[
'978',
'upsilon - hook symbol'
],
[
'8472',
'Weierstrass p'
],
[
'8465',
'imaginary part'
],
[
'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'
]
];
};
var charmapFilter = function (charmap) {
return global$1.grep(charmap, function (item) {
return isArray(item) && item.length === 2;
});
};
var getCharsFromSetting = function (settingValue) {
if (isArray(settingValue)) {
return [].concat(charmapFilter(settingValue));
}
if (typeof settingValue === 'function') {
return settingValue();
}
return [];
};
var extendCharMap = function (editor, charmap) {
var userCharMap = Settings.getCharMap(editor);
if (userCharMap) {
charmap = getCharsFromSetting(userCharMap);
}
var userCharMapAppend = Settings.getCharMapAppend(editor);
if (userCharMapAppend) {
return [].concat(charmap).concat(getCharsFromSetting(userCharMapAppend));
}
return charmap;
};
var getCharMap$1 = function (editor) {
return extendCharMap(editor, getDefaultCharMap());
};
var CharMap = { getCharMap: getCharMap$1 };
var get = function (editor) {
var getCharMap = function () {
return CharMap.getCharMap(editor);
};
var insertChar = function (chr) {
Actions.insertChar(editor, chr);
};
return {
getCharMap: getCharMap,
insertChar: insertChar
};
};
var Api = { get: get };
var getHtml = function (charmap) {
var gridHtml, x, y;
var width = Math.min(charmap.length, 25);
var height = Math.ceil(charmap.length / width);
gridHtml = '<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';
for (y = 0; y < height; y++) {
gridHtml += '<tr>';
for (x = 0; x < width; x++) {
var index = y * width + x;
if (index < charmap.length) {
var chr = charmap[index];
var charCode = parseInt(chr[0], 10);
var chrText = chr ? String.fromCharCode(charCode) : ' ';
gridHtml += '<td title="' + chr[1] + '">' + '<div tabindex="-1" title="' + chr[1] + '" role="button" data-chr="' + charCode + '">' + chrText + '</div>' + '</td>';
} else {
gridHtml += '<td />';
}
}
gridHtml += '</tr>';
}
gridHtml += '</tbody></table>';
return gridHtml;
};
var GridHtml = { getHtml: getHtml };
var getParentTd = function (elm) {
while (elm) {
if (elm.nodeName === 'TD') {
return elm;
}
elm = elm.parentNode;
}
};
var open = function (editor) {
var win;
var charMapPanel = {
type: 'container',
html: GridHtml.getHtml(CharMap.getCharMap(editor)),
onclick: function (e) {
var target = e.target;
if (/^(TD|DIV)$/.test(target.nodeName)) {
var charDiv = getParentTd(target).firstChild;
if (charDiv && charDiv.hasAttribute('data-chr')) {
var charCodeString = charDiv.getAttribute('data-chr');
var charCode = parseInt(charCodeString, 10);
if (!isNaN(charCode)) {
Actions.insertChar(editor, String.fromCharCode(charCode));
}
if (!e.ctrlKey) {
win.close();
}
}
}
},
onmouseover: function (e) {
var td = getParentTd(e.target);
if (td && td.firstChild) {
win.find('#preview').text(td.firstChild.firstChild.data);
win.find('#previewTitle').text(td.title);
} else {
win.find('#preview').text(' ');
win.find('#previewTitle').text(' ');
}
}
};
win = editor.windowManager.open({
title: 'Special character',
spacing: 10,
padding: 10,
items: [
charMapPanel,
{
type: 'container',
layout: 'flex',
direction: 'column',
align: 'center',
spacing: 5,
minWidth: 160,
minHeight: 160,
items: [
{
type: 'label',
name: 'preview',
text: ' ',
style: 'font-size: 40px; text-align: center',
border: 1,
minWidth: 140,
minHeight: 80
},
{
type: 'spacer',
minHeight: 20
},
{
type: 'label',
name: 'previewTitle',
text: ' ',
style: 'white-space: pre-wrap;',
border: 1,
minWidth: 140
}
]
}
],
buttons: [{
text: 'Close',
onclick: function () {
win.close();
}
}]
});
};
var Dialog = { open: open };
var register = function (editor) {
editor.addCommand('mceShowCharmap', function () {
Dialog.open(editor);
});
};
var Commands = { register: register };
var register$1 = function (editor) {
editor.addButton('charmap', {
icon: 'charmap',
tooltip: 'Special character',
cmd: 'mceShowCharmap'
});
editor.addMenuItem('charmap', {
icon: 'charmap',
text: 'Special character',
cmd: 'mceShowCharmap',
context: 'insert'
});
};
var Buttons = { register: register$1 };
global.add('charmap', function (editor) {
Commands.register(editor);
Buttons.register(editor);
return Api.get(editor);
});
function Plugin () {
}
return Plugin;
}());
})();
|