WordPress.org

Make WordPress Core

Ticket #31551: 31551.patch

File 31551.patch, 920.8 KB (added by iseulde, 6 years ago)
  • src/wp-includes/js/tinymce/plugins/charmap/plugin.js

     
    1313tinymce.PluginManager.add('charmap', function(editor) {
    1414        var charmap = [
    1515                ['160', 'no-break space'],
    16                 ['38', 'ampersand'],
     16                ['173', 'soft hyphen'],
    1717                ['34', 'quotation mark'],
    1818        // finance
    1919                ['162', 'cent sign'],
     
    225225                ['969', 'omega'],
    226226        // symbols
    227227                ['8501', 'alef symbol'],
    228                 ['982',  'pi symbol'],
     228                ['982', 'pi symbol'],
    229229                ['8476', 'real part symbol'],
    230                 ['978',  'upsilon - hook symbol'],
     230                ['978', 'upsilon - hook symbol'],
    231231                ['8472', 'Weierstrass p'],
    232232                ['8465', 'imaginary part'],
    233233        // arrows
     
    269269                ['8204', 'zero width non-joiner'],
    270270                ['8205', 'zero width joiner'],
    271271                ['8206', 'left-to-right mark'],
    272                 ['8207', 'right-to-left mark'],
    273                 ['173',  'soft hyphen']
     272                ['8207', 'right-to-left mark']
    274273        ];
    275274
    276275        function showDialog() {
     
    289288                gridHtml = '<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';
    290289
    291290                var width = 25;
    292                 for (y = 0; y < 10; y++) {
     291                var height = Math.ceil(charmap.length / width);
     292                for (y = 0; y < height; y++) {
    293293                        gridHtml += '<tr>';
    294294
    295295                        for (x = 0; x < width; x++) {
    296                                 var chr = charmap[y * width + x];
    297 
    298                                 gridHtml += '<td title="' + chr[1] + '"><div tabindex="-1" title="' + chr[1] + '" role="button">' +
    299                                         (chr ? String.fromCharCode(parseInt(chr[0], 10)) : '&nbsp;') + '</div></td>';
     296                                var index = y * width + x;
     297                                if (index < charmap.length) {
     298                                        var chr = charmap[index];
     299
     300                                        gridHtml += '<td title="' + chr[1] + '"><div tabindex="-1" title="' + chr[1] + '" role="button">' +
     301                                                (chr ? String.fromCharCode(parseInt(chr[0], 10)) : '&nbsp;') + '</div></td>';
     302                                } else {
     303                                        gridHtml += '<td />';
     304                                }
    300305                        }
    301306
    302307                        gridHtml += '</tr>';
     
    309314                        html: gridHtml,
    310315                        onclick: function(e) {
    311316                                var target = e.target;
    312 
    313                                 if (target.tagName == 'TD') {
    314                                         target = target.firstChild;
    315                                 }
    316 
    317                                 if (target.tagName == 'DIV') {
    318                                         editor.execCommand('mceInsertContent', false, target.firstChild.data);
    319 
    320                                         if (!e.ctrlKey) {
    321                                                 win.close();
     317                                if (/^(TD|DIV)$/.test(target.nodeName)) {
     318                                        if (getParentTd(target).firstChild) {
     319                                                editor.execCommand('mceInsertContent', false, tinymce.trim(target.innerText || target.textContent));
     320
     321                                                if (!e.ctrlKey) {
     322                                                        win.close();
     323                                                }
    322324                                        }
    323325                                }
    324326                        },
    325327                        onmouseover: function(e) {
    326328                                var td = getParentTd(e.target);
    327329
    328                                 if (td) {
     330                                if (td && td.firstChild) {
    329331                                        win.find('#preview').text(td.firstChild.firstChild.data);
     332                                        win.find('#previewTitle').text(td.title);
     333                                } else {
     334                                        win.find('#preview').text(' ');
     335                                        win.find('#previewTitle').text(' ');
    330336                                }
    331337                        }
    332338                };
     
    338344                        items: [
    339345                                charMapPanel,
    340346                                {
    341                                         type: 'label',
    342                                         name: 'preview',
    343                                         text: ' ',
    344                                         style: 'font-size: 40px; text-align: center',
    345                                         border: 1,
    346                                         minWidth: 100,
    347                                         minHeight: 80
     347                                        type: 'container',
     348                                        layout: 'flex',
     349                                        direction: 'column',
     350                                        align: 'center',
     351                                        spacing: 5,
     352                                        minWidth: 160,
     353                                        minHeight: 160,
     354                                        items: [
     355                                                {
     356                                                        type: 'label',
     357                                                        name: 'preview',
     358                                                        text: ' ',
     359                                                        style: 'font-size: 40px; text-align: center',
     360                                                        border: 1,
     361                                                        minWidth: 140,
     362                                                        minHeight: 80
     363                                                },
     364                                                {
     365                                                        type: 'label',
     366                                                        name: 'previewTitle',
     367                                                        text: ' ',
     368                                                        style: 'text-align: center',
     369                                                        border: 1,
     370                                                        minWidth: 140,
     371                                                        minHeight: 80
     372                                                }
     373                                        ]
    348374                                }
    349375                        ],
    350376                        buttons: [
  • src/wp-includes/js/tinymce/plugins/charmap/plugin.min.js

     
    1 tinymce.PluginManager.add("charmap",function(a){function b(){function b(a){for(;a;){if("TD"==a.nodeName)return a;a=a.parentNode}}var d,e,f,g;d='<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';var h=25;for(f=0;10>f;f++){for(d+="<tr>",e=0;h>e;e++){var i=c[f*h+e];d+='<td title="'+i[1]+'"><div tabindex="-1" title="'+i[1]+'" role="button">'+(i?String.fromCharCode(parseInt(i[0],10)):"&nbsp;")+"</div></td>"}d+="</tr>"}d+="</tbody></table>";var j={type:"container",html:d,onclick:function(b){var c=b.target;"TD"==c.tagName&&(c=c.firstChild),"DIV"==c.tagName&&(a.execCommand("mceInsertContent",!1,c.firstChild.data),b.ctrlKey||g.close())},onmouseover:function(a){var c=b(a.target);c&&g.find("#preview").text(c.firstChild.firstChild.data)}};g=a.windowManager.open({title:"Special character",spacing:10,padding:10,items:[j,{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:100,minHeight:80}],buttons:[{text:"Close",onclick:function(){g.close()}}]})}var c=[["160","no-break space"],["38","ampersand"],["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"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["221","Y - acute"],["376","Y - diaeresis"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["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"],["173","soft hyphen"]];a.addButton("charmap",{icon:"charmap",tooltip:"Special character",onclick:b}),a.addMenuItem("charmap",{icon:"charmap",text:"Special character",onclick:b,context:"insert"})});
    2  No newline at end of file
     1tinymce.PluginManager.add("charmap",function(a){function b(){function b(a){for(;a;){if("TD"==a.nodeName)return a;a=a.parentNode}}var d,e,f,g;d='<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';var h=25,i=Math.ceil(c.length/h);for(f=0;i>f;f++){for(d+="<tr>",e=0;h>e;e++){var j=f*h+e;if(j<c.length){var k=c[j];d+='<td title="'+k[1]+'"><div tabindex="-1" title="'+k[1]+'" role="button">'+(k?String.fromCharCode(parseInt(k[0],10)):"&nbsp;")+"</div></td>"}else d+="<td />"}d+="</tr>"}d+="</tbody></table>";var l={type:"container",html:d,onclick:function(c){var d=c.target;/^(TD|DIV)$/.test(d.nodeName)&&b(d).firstChild&&(a.execCommand("mceInsertContent",!1,tinymce.trim(d.innerText||d.textContent)),c.ctrlKey||g.close())},onmouseover:function(a){var c=b(a.target);c&&c.firstChild?(g.find("#preview").text(c.firstChild.firstChild.data),g.find("#previewTitle").text(c.title)):(g.find("#preview").text(" "),g.find("#previewTitle").text(" "))}};g=a.windowManager.open({title:"Special character",spacing:10,padding:10,items:[l,{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:"label",name:"previewTitle",text:" ",style:"text-align: center",border:1,minWidth:140,minHeight:80}]}],buttons:[{text:"Close",onclick:function(){g.close()}}]})}var c=[["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"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["221","Y - acute"],["376","Y - diaeresis"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["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"]];a.addButton("charmap",{icon:"charmap",tooltip:"Special character",onclick:b}),a.addMenuItem("charmap",{icon:"charmap",text:"Special character",onclick:b,context:"insert"})});
     2 No newline at end of file
  • src/wp-includes/js/tinymce/plugins/compat3x/css/dialog.css

     
    1 @import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600&subset=latin-ext,latin);
    2 
    3 /* Generic */
    4 body {
    5 font-family: "Open Sans", sans-serif;
    6 font-size:13px;
    7 background:#fcfcfc;
    8 padding:0;
    9 margin:8px 8px 0 8px;
    10 }
    11 
    12 textarea {resize:none;outline:none;}
    13 
    14 a:link, a:hover {
    15         color: #2B6FB6;
    16 }
    17 
    18 a:visited {
    19         color: #3C2BB6;
    20 }
    21 
    22 .nowrap {white-space: nowrap}
    23 
    24 /* Forms */
    25 form {margin: 0;}
    26 fieldset {margin:0; padding:4px; border:1px solid #dfdfdf; font-family:Verdana, Arial; font-size:10px;}
    27 legend {color:#2B6FB6; font-weight:bold;}
    28 label.msg {display:none;}
    29 label.invalid {color:#EE0000; display:inline;}
    30 input.invalid {border:1px solid #EE0000;}
    31 input {background:#FFF; border:1px solid #dfdfdf;}
    32 input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
    33 input, select, textarea {border:1px solid #dfdfdf;}
    34 input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
    35 input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
    36 .input_noborder {border:0;}
    37 
    38 /* Buttons */
    39 #insert,
    40 #cancel,
    41 #apply,
    42 .mceActionPanel .button,
    43 input.mceButton,
    44 .updateButton {
    45         display: inline-block;
    46         text-decoration: none;
    47         border: 1px solid #adadad;
    48         margin: 0;
    49         padding: 0 10px 1px;
    50         font-size: 13px;
    51         height: 24px;
    52         line-height: 22px;
    53         color: #333;
    54         cursor: pointer;
    55         -webkit-border-radius: 3px;
    56         -webkit-appearance: none;
    57         border-radius: 3px;
    58         white-space: nowrap;
    59         -webkit-box-sizing: border-box;
    60         -moz-box-sizing: border-box;
    61         box-sizing: border-box;
    62         background: #fafafa;
    63         background-image: -webkit-gradient(linear, left top, left bottom, from(#fafafa), to(#e9e9e9));
    64         background-image: -webkit-linear-gradient(top, #fafafa, #e9e9e9);
    65         background-image: -moz-linear-gradient(top, #fafafa, #e9e9e9);
    66         background-image: -o-linear-gradient(top, #fafafa, #e9e9e9);
    67         background-image: linear-gradient(to bottom, #fafafa, #e9e9e9);
    68        
    69         text-shadow: 0 1px 0 #fff;
    70         -webkit-box-shadow: inset 0 1px 0 #fff;
    71         -moz-box-shadow: inset 0 1px 0 #fff;
    72         box-shadow: inset 0 1px 0 #fff;
    73 }
    74 
    75 #insert {
    76         background: #2ea2cc;
    77         background: -webkit-gradient(linear, left top, left bottom, from(#2ea2cc), to(#1e8cbe));
    78         background: -webkit-linear-gradient(top, #2ea2cc 0%,#1e8cbe 100%);
    79         background: linear-gradient(top, #2ea2cc 0%,#1e8cbe 100%);
    80         filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2ea2cc', endColorstr='#1e8cbe',GradientType=0 );
    81         border-color: #0074a2;
    82         -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
    83         box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
    84         color: #fff;
    85         text-decoration: none;
    86         text-shadow: 0 1px 0 rgba(0,86,132,0.7);
    87 }
    88 
    89 #cancel:hover,
    90 input.mceButton:hover,
    91 .updateButton:hover,
    92 #cancel:focus,
    93 input.mceButton:focus,
    94 .updateButton:focus {
    95         background: #f3f3f3;
    96         background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f3f3f3));
    97         background-image: -webkit-linear-gradient(top, #fff, #f3f3f3);
    98         background-image: -moz-linear-gradient(top, #fff, #f3f3f3);
    99         background-image: -ms-linear-gradient(top, #fff, #f3f3f3);
    100         background-image: -o-linear-gradient(top, #fff, #f3f3f3);
    101         background-image: linear-gradient(to bottom, #fff, #f3f3f3);
    102         border-color: #999;
    103         color: #222;
    104 }
    105 
    106 #insert:hover,
    107 #insert:focus {
    108         background: #1e8cbe;
    109         background: -webkit-gradient(linear, left top, left bottom, from(#1e8cbe), to(#0074a2));
    110         background: -webkit-linear-gradient(top, #1e8cbe 0%,#0074a2 100%);
    111         background: linear-gradient(top, #1e8cbe 0%,#0074a2 100%);
    112         filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e8cbe', endColorstr='#0074a2',GradientType=0 );
    113         border-color: #0074a2;
    114         -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
    115         box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
    116         color: #fff;
    117 }
    118 
    119 .mceActionPanel #insert {
    120         float: right;
    121 }
    122 
    123 /* Browse */
    124 a.pickcolor, a.browse {text-decoration:none}
    125 a.browse span {display:block; width:20px; height:18px; border:1px solid #FFF; margin-left:1px;}
    126 .mceOldBoxModel a.browse span {width:22px; height:20px;}
    127 a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
    128 a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}
    129 a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
    130 a.pickcolor span {display:block; width:20px; height:16px; margin-left:2px;}
    131 .mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
    132 a.pickcolor:hover span {background-color:#B2BBD0;}
    133 div.iframecontainer {background: #fff;}
    134 
    135 /* Charmap */
    136 table.charmap {border:1px solid #AAA; text-align:center}
    137 td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
    138 #charmap a {display:block; color:#000; text-decoration:none; border:0}
    139 #charmap a:hover {background:#CCC;color:#2B6FB6}
    140 #charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
    141 #charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
    142 #charmap #charmapView {background-color:#fff;}
    143 
    144 /* Source */
    145 .wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
    146 .mceActionPanel {margin-top:5px;}
    147 
    148 /* Tabs classes */
    149 .tabs {width:100%; height:19px; line-height:normal; border-bottom: 1px solid #aaa;}
    150 .tabs ul {margin:0; padding:0; list-style:none;}
    151 .tabs li {float:left; border: 1px solid #aaa; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
    152 .tabs li.current {border-bottom: 1px solid #fff; margin-right:2px;}
    153 .tabs span {float:left; display:block; padding:0px 10px 0 0;}
    154 .tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
    155 .tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
    156 
    157 .wp-core-ui #tabs {
    158         padding-bottom: 5px;
    159         background-color: transparent;
    160 }
    161 
    162 .wp-core-ui #tabs a {
    163         padding: 6px 10px;
    164         margin: 0 2px;
    165 }
    166 
    167 /* Panels */
    168 .panel_wrapper div.panel {display:none;}
    169 .panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
    170 .panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
    171 
    172 /* Columns */
    173 .column {float:left;}
    174 .properties {width:100%;}
    175 .properties .column1 {}
    176 .properties .column2 {text-align:left;}
    177 
    178 /* Titles */
    179 h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
    180 h3 {font-size:14px;}
    181 .title {font-size:12px; font-weight:bold; color:#2B6FB6;}
    182 
    183 /* Dialog specific */
    184 #link .panel_wrapper, #link div.current {height:125px;}
    185 #image .panel_wrapper, #image div.current {height:200px;}
    186 #plugintable thead {font-weight:bold; background:#DDD;}
    187 #plugintable, #about #plugintable td {border:1px solid #919B9C;}
    188 #plugintable {width:96%; margin-top:10px;}
    189 #pluginscontainer {height:290px; overflow:auto;}
    190 #colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
    191 #colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
    192 #colorpicker #preview_wrapper {text-align:center; padding-top:4px; white-space: nowrap; float: right;}
    193 #colorpicker #insert, #colorpicker #cancel {width: 90px}
    194 #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
    195 #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
    196 #colorpicker #light div {overflow:hidden;}
    197 #colorpicker .panel_wrapper div.current {height:175px;}
    198 #colorpicker #namedcolors {width:150px;}
    199 #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
    200 #colorpicker #colornamecontainer {margin-top:5px;}
    201 #colorpicker #picker_panel fieldset {margin:auto;width:325px;}
    202 
    203 
    204 /* Localization */
    205 
    206 body[dir="rtl"],
    207 body[dir="rtl"] fieldset,
    208 body[dir="rtl"] input, body[dir="rtl"] select, body[dir="rtl"]  textarea,
    209 body[dir="rtl"]  #charmap #codeN,
    210 body[dir="rtl"] .tabs a {
    211         font-family: Tahoma, sans-serif;
    212 }
     1/* Generic */
     2body {
     3font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
     4scrollbar-3dlight-color:#F0F0EE;
     5scrollbar-arrow-color:#676662;
     6scrollbar-base-color:#F0F0EE;
     7scrollbar-darkshadow-color:#DDDDDD;
     8scrollbar-face-color:#E0E0DD;
     9scrollbar-highlight-color:#F0F0EE;
     10scrollbar-shadow-color:#F0F0EE;
     11scrollbar-track-color:#F5F5F5;
     12background:#F0F0EE;
     13padding:0;
     14margin:8px 8px 0 8px;
     15}
     16
     17html {background:#F0F0EE;}
     18td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
     19textarea {resize:none;outline:none;}
     20a:link, a:visited {color:black;}
     21a:hover {color:#2B6FB6;}
     22.nowrap {white-space: nowrap}
     23
     24/* Forms */
     25fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
     26legend {color:#2B6FB6; font-weight:bold;}
     27label.msg {display:none;}
     28label.invalid {color:#EE0000; display:inline;}
     29input.invalid {border:1px solid #EE0000;}
     30input {background:#FFF; border:1px solid #CCC;}
     31input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
     32input, select, textarea {border:1px solid #808080;}
     33input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
     34input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
     35.input_noborder {border:0;}
     36
     37/* Buttons */
     38#insert, #cancel, input.button, .updateButton {
     39border:0; margin:0; padding:0;
     40font-weight:bold;
     41width:94px; height:26px;
     42background:url(../img/buttons.png) 0 -26px;
     43cursor:pointer;
     44padding-bottom:2px;
     45float:left;
     46}
     47
     48#insert {background:url(../img/buttons.png) 0 -52px}
     49#cancel {background:url(../img/buttons.png) 0 0; float:right}
     50
     51/* Browse */
     52a.pickcolor, a.browse {text-decoration:none}
     53a.browse span {display:block; width:20px; height:18px; background:url(../img/icons.gif) -20px 0 no-repeat; border:1px solid #FFF; margin-left:1px;}
     54.mceOldBoxModel a.browse span {width:22px; height:20px;}
     55a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
     56a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
     57a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
     58a.pickcolor span {display:block; width:20px; height:16px; background:url(../img/icons.gif) -840px 0; margin-left:2px;}
     59.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
     60a.pickcolor:hover span {background-color:#B2BBD0;}
     61a.pickcolor:hover span.disabled {}
     62
     63/* Charmap */
     64table.charmap {border:1px solid #AAA; text-align:center}
     65td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
     66#charmap a {display:block; color:#000; text-decoration:none; border:0}
     67#charmap a:hover {background:#CCC;color:#2B6FB6}
     68#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
     69#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
     70
     71/* Source */
     72.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
     73.mceActionPanel {margin-top:5px;}
     74
     75/* Tabs classes */
     76.tabs {width:100%; height:18px; line-height:normal; background:url(../img/tabs.gif) repeat-x 0 -72px;}
     77.tabs ul {margin:0; padding:0; list-style:none;}
     78.tabs li {float:left; background:url(../img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
     79.tabs li.current {background:url(../img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
     80.tabs span {float:left; display:block; background:url(../img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
     81.tabs .current span {background:url(../img/tabs.gif) no-repeat right -54px;}
     82.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
     83.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
     84
     85/* Panels */
     86.panel_wrapper div.panel {display:none;}
     87.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
     88.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
     89
     90/* Columns */
     91.column {float:left;}
     92.properties {width:100%;}
     93.properties .column1 {}
     94.properties .column2 {text-align:left;}
     95
     96/* Titles */
     97h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
     98h3 {font-size:14px;}
     99.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
     100
     101/* Dialog specific */
     102#link .panel_wrapper, #link div.current {height:125px;}
     103#image .panel_wrapper, #image div.current {height:200px;}
     104#plugintable thead {font-weight:bold; background:#DDD;}
     105#plugintable, #about #plugintable td {border:1px solid #919B9C;}
     106#plugintable {width:96%; margin-top:10px;}
     107#pluginscontainer {height:290px; overflow:auto;}
     108#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
     109#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
     110#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
     111#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
     112#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
     113#colorpicker #light div {overflow:hidden;}
     114#colorpicker .panel_wrapper div.current {height:175px;}
     115#colorpicker #namedcolors {width:150px;}
     116#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
     117#colorpicker #colornamecontainer {margin-top:5px;}
     118#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
  • src/wp-includes/js/tinymce/plugins/compat3x/plugin.js

     
    209209
    210210                var originalAddButton = editor.addButton;
    211211                editor.addButton = function(name, settings) {
    212                         var originalOnPostRender, string, translated;
     212                        var originalOnPostRender;
    213213
    214214                        function patchedPostRender() {
    215215                                editor.controlManager.buttons[name] = this;
     
    230230                                settings.onPostRender = patchedPostRender;
    231231                        }
    232232
    233                         if ( settings.title ) {
    234                                 // WP
    235                                 string = (editor.settings.language || "en") + "." + settings.title;
    236                                 translated = tinymce.i18n.translate(string);
    237 
    238                                 if ( string !== translated ) {
    239                                         settings.title = translated;
    240                                 }
    241                                 // WP end
     233                        if (settings.title) {
     234                                settings.title = tinymce.i18n.translate((editor.settings.language || "en") + "." + settings.title);
    242235                        }
    243236
    244237                        return originalAddButton.call(this, name, settings);
     
    278271        tinymce.addI18n = function(prefix, o) {
    279272                var I18n = tinymce.util.I18n, each = tinymce.each;
    280273
    281                 if (typeof(prefix) == "string" && prefix.indexOf('.') === -1) {
     274                if (typeof prefix == "string" && prefix.indexOf('.') === -1) {
    282275                        I18n.add(prefix, o);
    283276                        return;
    284277                }
  • src/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js

     
    1 !function(a){function b(){}function c(a){!f&&window&&window.console&&(f=!0,console.log("Deprecated TinyMCE API call: "+a))}function d(a,d,e,f){return a=a||this,d?(this.add=function(b,g,h){function i(c){var h=[];if("string"==typeof e&&(e=e.split(" ")),e&&"function"!=typeof e)for(var i=0;i<e.length;i++)h.push(c[e[i]]);("function"!=typeof e||(h=e(d,c,a)))&&(e||(h=[c]),h.unshift(f||a),b.apply(g||f||a,h)===!1&&c.stopImmediatePropagation())}return c("<target>.on"+d+".add(..)"),a.on(d,i,h),i},this.addToTop=function(a,b){this.add(a,b,!0)},this.remove=function(b){return a.off(d,b)},void(this.dispatch=function(){return a.fire(d),!0})):void(this.add=this.addToTop=this.remove=this.dispatch=b)}function e(e){function f(b,c){a.each(b.split(" "),function(a){e["on"+a]=new d(e,a,c)})}function g(a,b,c){return[b.level,c]}function h(a){return function(b,c){return!c.selection&&!a||c.selection==a?[c]:void 0}}function i(){function b(){return i()}var d={},e="add addMenu addSeparator collapse createMenu destroy displayColor expand focus getLength hasMenus hideMenu isActive isCollapsed isDisabled isRendered isSelected mark postRender remove removeAll renderHTML renderMenu renderNode renderTo select selectByIndex setActive setAriaProperty setColor setDisabled setSelected setState showMenu update";return c("editor.controlManager.*"),a.each(e.split(" "),function(a){d[a]=b}),d}if(!e.controlManager){e.controlManager={buttons:{},setDisabled:function(a,b){c("controlManager.setDisabled(..)"),this.buttons[a]&&this.buttons[a].disabled(b)},setActive:function(a,b){c("controlManager.setActive(..)"),this.buttons[a]&&this.buttons[a].active(b)},onAdd:new d,onPostRender:new d,add:function(a){return a},createButton:i,createColorSplitButton:i,createControl:i,createDropMenu:i,createListBox:i,createMenuButton:i,createSeparator:i,createSplitButton:i,createToolbar:i,createToolbarGroup:i,destroy:b,get:b,setControlType:i},f("PreInit BeforeRenderUI PostRender Load Init Remove Activate Deactivate","editor"),f("Click MouseUp MouseDown DblClick KeyDown KeyUp KeyPress ContextMenu Paste Submit Reset"),f("BeforeExecCommand ExecCommand","command ui value args"),f("PreProcess PostProcess LoadContent SaveContent Change"),f("BeforeSetContent BeforeGetContent SetContent GetContent",h(!1)),f("SetProgressState","state time"),f("VisualAid","element hasVisual"),f("Undo Redo",g),f("NodeChange",function(a,b){return[e.controlManager,b.element,e.selection.isCollapsed(),b]});var j=e.addButton;e.addButton=function(b,c){function d(){return e.controlManager.buttons[b]=this,f?f.call(this):void 0}var f,g,h;for(var i in c)"onpostrender"===i.toLowerCase()&&(f=c[i],c.onPostRender=d);return f||(c.onPostRender=d),c.title&&(g=(e.settings.language||"en")+"."+c.title,h=a.i18n.translate(g),g!==h&&(c.title=h)),j.call(this,b,c)},e.on("init",function(){var a=e.undoManager,b=e.selection;a.onUndo=new d(e,"Undo",g,null,a),a.onRedo=new d(e,"Redo",g,null,a),a.onBeforeAdd=new d(e,"BeforeAddUndo",null,a),a.onAdd=new d(e,"AddUndo",null,a),b.onBeforeGetContent=new d(e,"BeforeGetContent",h(!0),b),b.onGetContent=new d(e,"GetContent",h(!0),b),b.onBeforeSetContent=new d(e,"BeforeSetContent",h(!0),b),b.onSetContent=new d(e,"SetContent",h(!0),b)}),e.on("BeforeRenderUI",function(){var b=e.windowManager;b.onOpen=new d,b.onClose=new d,b.createInstance=function(b,d,e,f,g,h){c("windowManager.createInstance(..)");var i=a.resolve(b);return new i(d,e,f,g,h)}})}}var f;a.util.Dispatcher=d,a.onBeforeUnload=new d(a,"BeforeUnload"),a.onAddEditor=new d(a,"AddEditor","editor"),a.onRemoveEditor=new d(a,"RemoveEditor","editor"),a.util.Cookie={get:b,getHash:b,remove:b,set:b,setHash:b},a.on("SetupEditor",e),a.PluginManager.add("compat3x",e),a.addI18n=function(b,c){var d=a.util.I18n,e=a.each;return"string"==typeof b&&-1===b.indexOf(".")?void d.add(b,c):void(a.is(b,"string")?e(c,function(a,c){d.data[b+"."+c]=a}):e(b,function(a,b){e(a,function(a,c){e(a,function(a,e){"common"===c?d.data[b+"."+e]=a:d.data[b+"."+c+"."+e]=a})})}))}}(tinymce);
    2  No newline at end of file
     1!function(a){function b(){}function c(a){!f&&window&&window.console&&(f=!0,console.log("Deprecated TinyMCE API call: "+a))}function d(a,d,e,f){return a=a||this,d?(this.add=function(b,g,h){function i(c){var h=[];if("string"==typeof e&&(e=e.split(" ")),e&&"function"!=typeof e)for(var i=0;i<e.length;i++)h.push(c[e[i]]);("function"!=typeof e||(h=e(d,c,a)))&&(e||(h=[c]),h.unshift(f||a),b.apply(g||f||a,h)===!1&&c.stopImmediatePropagation())}return c("<target>.on"+d+".add(..)"),a.on(d,i,h),i},this.addToTop=function(a,b){this.add(a,b,!0)},this.remove=function(b){return a.off(d,b)},void(this.dispatch=function(){return a.fire(d),!0})):void(this.add=this.addToTop=this.remove=this.dispatch=b)}function e(e){function f(b,c){a.each(b.split(" "),function(a){e["on"+a]=new d(e,a,c)})}function g(a,b,c){return[b.level,c]}function h(a){return function(b,c){return!c.selection&&!a||c.selection==a?[c]:void 0}}function i(){function b(){return i()}var d={},e="add addMenu addSeparator collapse createMenu destroy displayColor expand focus getLength hasMenus hideMenu isActive isCollapsed isDisabled isRendered isSelected mark postRender remove removeAll renderHTML renderMenu renderNode renderTo select selectByIndex setActive setAriaProperty setColor setDisabled setSelected setState showMenu update";return c("editor.controlManager.*"),a.each(e.split(" "),function(a){d[a]=b}),d}if(!e.controlManager){e.controlManager={buttons:{},setDisabled:function(a,b){c("controlManager.setDisabled(..)"),this.buttons[a]&&this.buttons[a].disabled(b)},setActive:function(a,b){c("controlManager.setActive(..)"),this.buttons[a]&&this.buttons[a].active(b)},onAdd:new d,onPostRender:new d,add:function(a){return a},createButton:i,createColorSplitButton:i,createControl:i,createDropMenu:i,createListBox:i,createMenuButton:i,createSeparator:i,createSplitButton:i,createToolbar:i,createToolbarGroup:i,destroy:b,get:b,setControlType:i},f("PreInit BeforeRenderUI PostRender Load Init Remove Activate Deactivate","editor"),f("Click MouseUp MouseDown DblClick KeyDown KeyUp KeyPress ContextMenu Paste Submit Reset"),f("BeforeExecCommand ExecCommand","command ui value args"),f("PreProcess PostProcess LoadContent SaveContent Change"),f("BeforeSetContent BeforeGetContent SetContent GetContent",h(!1)),f("SetProgressState","state time"),f("VisualAid","element hasVisual"),f("Undo Redo",g),f("NodeChange",function(a,b){return[e.controlManager,b.element,e.selection.isCollapsed(),b]});var j=e.addButton;e.addButton=function(b,c){function d(){return e.controlManager.buttons[b]=this,f?f.call(this):void 0}var f;for(var g in c)"onpostrender"===g.toLowerCase()&&(f=c[g],c.onPostRender=d);return f||(c.onPostRender=d),c.title&&(c.title=a.i18n.translate((e.settings.language||"en")+"."+c.title)),j.call(this,b,c)},e.on("init",function(){var a=e.undoManager,b=e.selection;a.onUndo=new d(e,"Undo",g,null,a),a.onRedo=new d(e,"Redo",g,null,a),a.onBeforeAdd=new d(e,"BeforeAddUndo",null,a),a.onAdd=new d(e,"AddUndo",null,a),b.onBeforeGetContent=new d(e,"BeforeGetContent",h(!0),b),b.onGetContent=new d(e,"GetContent",h(!0),b),b.onBeforeSetContent=new d(e,"BeforeSetContent",h(!0),b),b.onSetContent=new d(e,"SetContent",h(!0),b)}),e.on("BeforeRenderUI",function(){var b=e.windowManager;b.onOpen=new d,b.onClose=new d,b.createInstance=function(b,d,e,f,g,h){c("windowManager.createInstance(..)");var i=a.resolve(b);return new i(d,e,f,g,h)}})}}var f;a.util.Dispatcher=d,a.onBeforeUnload=new d(a,"BeforeUnload"),a.onAddEditor=new d(a,"AddEditor","editor"),a.onRemoveEditor=new d(a,"RemoveEditor","editor"),a.util.Cookie={get:b,getHash:b,remove:b,set:b,setHash:b},a.on("SetupEditor",e),a.PluginManager.add("compat3x",e),a.addI18n=function(b,c){var d=a.util.I18n,e=a.each;return"string"==typeof b&&-1===b.indexOf(".")?void d.add(b,c):void(a.is(b,"string")?e(c,function(a,c){d.data[b+"."+c]=a}):e(b,function(a,b){e(a,function(a,c){e(a,function(a,e){"common"===c?d.data[b+"."+e]=a:d.data[b+"."+c+"."+e]=a})})}))}}(tinymce);
     2 No newline at end of file
  • src/wp-includes/js/tinymce/plugins/fullscreen/plugin.js

     
    8989        }
    9090
    9191        editor.on('init', function() {
    92                 editor.addShortcut('Ctrl+Alt+F', '', toggleFullscreen);
     92                editor.addShortcut('Meta+Alt+F', '', toggleFullscreen);
    9393        });
    9494
    9595        editor.on('remove', function() {
     
    102102
    103103        editor.addMenuItem('fullscreen', {
    104104                text: 'Fullscreen',
    105                 shortcut: 'Ctrl+Alt+F',
     105                shortcut: 'Meta+Alt+F',
    106106                selectable: true,
    107107                onClick: toggleFullscreen,
    108108                onPostRender: function() {
     
    117117
    118118        editor.addButton('fullscreen', {
    119119                tooltip: 'Fullscreen',
    120                 shortcut: 'Ctrl+Alt+F',
     120                shortcut: 'Meta+Alt+F',
    121121                onClick: toggleFullscreen,
    122122                onPostRender: function() {
    123123                        var self = this;
  • src/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js

     
    1 tinymce.PluginManager.add("fullscreen",function(a){function b(){var a,b,c=window,d=document,e=d.body;return e.offsetWidth&&(a=e.offsetWidth,b=e.offsetHeight),c.innerWidth&&c.innerHeight&&(a=c.innerWidth,b=c.innerHeight),{w:a,h:b}}function c(){function c(){j.setStyle(m,"height",b().h-(l.clientHeight-m.clientHeight))}var k,l,m,n,o=document.body,p=document.documentElement;i=!i,l=a.getContainer(),k=l.style,m=a.getContentAreaContainer().firstChild,n=m.style,i?(d=n.width,e=n.height,n.width=n.height="100%",g=k.width,h=k.height,k.width=k.height="",j.addClass(o,"mce-fullscreen"),j.addClass(p,"mce-fullscreen"),j.addClass(l,"mce-fullscreen"),j.bind(window,"resize",c),c(),f=c):(n.width=d,n.height=e,g&&(k.width=g),h&&(k.height=h),j.removeClass(o,"mce-fullscreen"),j.removeClass(p,"mce-fullscreen"),j.removeClass(l,"mce-fullscreen"),j.unbind(window,"resize",f)),a.fire("FullscreenStateChanged",{state:i})}var d,e,f,g,h,i=!1,j=tinymce.DOM;return a.settings.inline?void 0:(a.on("init",function(){a.addShortcut("Ctrl+Alt+F","",c)}),a.on("remove",function(){f&&j.unbind(window,"resize",f)}),a.addCommand("mceFullScreen",c),a.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Alt+F",selectable:!0,onClick:c,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})},context:"view"}),a.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Alt+F",onClick:c,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})}}),{isFullscreen:function(){return i}})});
    2  No newline at end of file
     1tinymce.PluginManager.add("fullscreen",function(a){function b(){var a,b,c=window,d=document,e=d.body;return e.offsetWidth&&(a=e.offsetWidth,b=e.offsetHeight),c.innerWidth&&c.innerHeight&&(a=c.innerWidth,b=c.innerHeight),{w:a,h:b}}function c(){function c(){j.setStyle(m,"height",b().h-(l.clientHeight-m.clientHeight))}var k,l,m,n,o=document.body,p=document.documentElement;i=!i,l=a.getContainer(),k=l.style,m=a.getContentAreaContainer().firstChild,n=m.style,i?(d=n.width,e=n.height,n.width=n.height="100%",g=k.width,h=k.height,k.width=k.height="",j.addClass(o,"mce-fullscreen"),j.addClass(p,"mce-fullscreen"),j.addClass(l,"mce-fullscreen"),j.bind(window,"resize",c),c(),f=c):(n.width=d,n.height=e,g&&(k.width=g),h&&(k.height=h),j.removeClass(o,"mce-fullscreen"),j.removeClass(p,"mce-fullscreen"),j.removeClass(l,"mce-fullscreen"),j.unbind(window,"resize",f)),a.fire("FullscreenStateChanged",{state:i})}var d,e,f,g,h,i=!1,j=tinymce.DOM;return a.settings.inline?void 0:(a.on("init",function(){a.addShortcut("Meta+Alt+F","",c)}),a.on("remove",function(){f&&j.unbind(window,"resize",f)}),a.addCommand("mceFullScreen",c),a.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Meta+Alt+F",selectable:!0,onClick:c,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})},context:"view"}),a.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Meta+Alt+F",onClick:c,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})}}),{isFullscreen:function(){return i}})});
     2 No newline at end of file
  • src/wp-includes/js/tinymce/plugins/image/plugin.js

     
    6767                return function() {
    6868                        var imageList = editor.settings.image_list;
    6969
    70                         if (typeof(imageList) == "string") {
     70                        if (typeof imageList == "string") {
    7171                                tinymce.util.XHR.send({
    7272                                        url: imageList,
    7373                                        success: function(text) {
    7474                                                callback(tinymce.util.JSON.parse(text));
    7575                                        }
    7676                                });
    77                         } else if (typeof(imageList) == "function") {
     77                        } else if (typeof imageList == "function") {
    7878                                imageList(callback);
    7979                        } else {
    8080                                callback(imageList);
     
    102102                        if (win.find('#constrain')[0].checked() && width && height && newWidth && newHeight) {
    103103                                if (width != newWidth) {
    104104                                        newHeight = Math.round((newWidth / width) * newHeight);
    105                                         heightCtrl.value(newHeight);
     105
     106                                        if (!isNaN(newHeight)) {
     107                                                heightCtrl.value(newHeight);
     108                                        }
    106109                                } else {
    107110                                        newWidth = Math.round((newHeight / height) * newWidth);
    108                                         widthCtrl.value(newWidth);
     111
     112                                        if (!isNaN(newWidth)) {
     113                                                widthCtrl.value(newWidth);
     114                                        }
    109115                                }
    110116                        }
    111117
     
    130136                                                        width: imgElm.clientWidth,
    131137                                                        height: imgElm.clientHeight
    132138                                                });
    133                                                 //WP
    134                                                 editor.fire( 'wpNewImageRefresh', { node: imgElm } );
    135139                                        }
    136140
    137141                                        selectImage();
     
    144148                        recalcSize();
    145149
    146150                        data = tinymce.extend(data, win.toJSON());
    147                         var caption = data.caption; // WP
    148151
    149152                        if (!data.alt) {
    150153                                data.alt = '';
    151154                        }
    152155
     156                        if (!data.title) {
     157                                data.title = '';
     158                        }
     159
    153160                        if (data.width === '') {
    154161                                data.width = null;
    155162                        }
     
    163170                        }
    164171
    165172                        // Setup new data excluding style properties
     173                        /*eslint dot-notation: 0*/
    166174                        data = {
    167175                                src: data.src,
    168176                                alt: data.alt,
     177                                title: data.title,
    169178                                width: data.width,
    170179                                height: data.height,
    171180                                style: data.style,
     
    173182                        };
    174183
    175184                        editor.undoManager.transact(function() {
    176                                 // WP
    177                                 var eventData = { node: imgElm, data: data, caption: caption };
    178 
    179                                 editor.fire( 'wpImageFormSubmit', { imgData: eventData } );
    180 
    181                                 if ( eventData.cancel ) {
    182                                         waitLoad( eventData.node );
    183                                         return;
    184                                 }
    185                                 // WP end
    186 
    187185                                if (!data.src) {
    188186                                        if (imgElm) {
    189187                                                dom.remove(imgElm);
     
    194192                                        return;
    195193                                }
    196194
     195                                if (data.title === "") {
     196                                        data.title = null;
     197                                }
     198
    197199                                if (!imgElm) {
    198200                                        data.id = '__mcenew';
    199201                                        editor.focus();
     
    217219                }
    218220
    219221                function srcChange(e) {
    220                         var meta = e.meta || {};
     222                        var srcURL, prependURL, absoluteURLPattern, meta = e.meta || {};
    221223
    222224                        if (imageListCtrl) {
    223225                                imageListCtrl.value(editor.convertURL(this.value(), 'src'));
     
    228230                        });
    229231
    230232                        if (!meta.width && !meta.height) {
    231                                 var srcURL = this.value(),
    232                                 absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i'),
    233                                 baseURL = editor.settings.document_base_url;
     233                                srcURL = editor.convertURL(this.value(), 'src');
    234234
    235                                 //Pattern test the src url and make sure we haven't already prepended the url
    236                                 if (baseURL && !absoluteURLPattern.test(srcURL) && srcURL.substring(0, baseURL.length) !== baseURL) {
    237                                         this.value(baseURL + srcURL);
     235                                // Pattern test the src url and make sure we haven't already prepended the url
     236                                prependURL = editor.settings.image_prepend_url;
     237                                absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i');
     238                                if (prependURL && !absoluteURLPattern.test(srcURL) && srcURL.substring(0, prependURL.length) !== prependURL) {
     239                                        srcURL = prependURL + srcURL;
    238240                                }
    239241
    240                                 getImageSize(this.value(), function(data) {
     242                                this.value(srcURL);
     243
     244                                getImageSize(editor.documentBaseURI.toAbsolute(this.value()), function(data) {
    241245                                        if (data.width && data.height && imageDimensions) {
    242246                                                width = data.width;
    243247                                                height = data.height;
     
    256260                        data = {
    257261                                src: dom.getAttrib(imgElm, 'src'),
    258262                                alt: dom.getAttrib(imgElm, 'alt'),
     263                                title: dom.getAttrib(imgElm, 'title'),
    259264                                "class": dom.getAttrib(imgElm, 'class'),
    260265                                width: width,
    261266                                height: height
    262267                        };
    263 
    264                         // WP
    265                         editor.fire( 'wpLoadImageData', { imgData: { data: data, node: imgElm } } );
    266268                } else {
    267269                        imgElm = null;
    268270                }
     
    329331                        generalFormItems.push({name: 'alt', type: 'textbox', label: 'Image description'});
    330332                }
    331333
     334                if (editor.settings.image_title) {
     335                        generalFormItems.push({name: 'title', type: 'textbox', label: 'Image Title'});
     336                }
     337
    332338                if (imageDimensions) {
    333339                        generalFormItems.push({
    334340                                type: 'container',
     
    348354
    349355                generalFormItems.push(classListCtrl);
    350356
    351                 // WP
    352                 editor.fire( 'wpLoadImageForm', { data: generalFormItems } );
     357                function mergeMargins(css) {
     358                        if (css.margin) {
     359
     360                                var splitMargin = css.margin.split(" ");
     361
     362                                switch (splitMargin.length) {
     363                                        case 1: //margin: toprightbottomleft;
     364                                                css['margin-top'] = css['margin-top'] || splitMargin[0];
     365                                                css['margin-right'] = css['margin-right'] || splitMargin[0];
     366                                                css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];
     367                                                css['margin-left'] = css['margin-left'] || splitMargin[0];
     368                                                break;
     369                                        case 2: //margin: topbottom rightleft;
     370                                                css['margin-top'] = css['margin-top'] || splitMargin[0];
     371                                                css['margin-right'] = css['margin-right'] || splitMargin[1];
     372                                                css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];
     373                                                css['margin-left'] = css['margin-left'] || splitMargin[1];
     374                                                break;
     375                                        case 3: //margin: top rightleft bottom;
     376                                                css['margin-top'] = css['margin-top'] || splitMargin[0];
     377                                                css['margin-right'] = css['margin-right'] || splitMargin[1];
     378                                                css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];
     379                                                css['margin-left'] = css['margin-left'] || splitMargin[1];
     380                                                break;
     381                                        case 4: //margin: top right bottom left;
     382                                                css['margin-top'] = css['margin-top'] || splitMargin[0];
     383                                                css['margin-right'] = css['margin-right'] || splitMargin[1];
     384                                                css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];
     385                                                css['margin-left'] = css['margin-left'] || splitMargin[3];
     386                                }
     387                                delete css.margin;
     388                        }
     389                        return css;
     390                }
    353391
    354392                function updateStyle() {
    355393                        function addPixelSuffix(value) {
     
    364402                                return;
    365403                        }
    366404
    367                         var data = win.toJSON();
    368                         var css = dom.parseStyle(data.style);
     405                        var data = win.toJSON(),
     406                                css = dom.parseStyle(data.style);
    369407
    370                         delete css.margin;
    371                         css['margin-top'] = css['margin-bottom'] = addPixelSuffix(data.vspace);
    372                         css['margin-left'] = css['margin-right'] = addPixelSuffix(data.hspace);
    373                         css['border-width'] = addPixelSuffix(data.border);
     408                        css = mergeMargins(css);
     409
     410                        if (data.vspace) {
     411                                css['margin-top'] = css['margin-bottom'] = addPixelSuffix(data.vspace);
     412                        }
     413                        if (data.hspace) {
     414                                css['margin-left'] = css['margin-right'] = addPixelSuffix(data.hspace);
     415                        }
     416                        if (data.border) {
     417                                css['border-width'] = addPixelSuffix(data.border);
     418                        }
     419
     420                        win.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
     421                }
     422
     423                function updateVSpaceHSpaceBorder() {
     424                        if (!editor.settings.image_advtab) {
     425                                return;
     426                        }
     427
     428                        var data = win.toJSON(),
     429                                css = dom.parseStyle(data.style);
     430
     431                        win.find('#vspace').value("");
     432                        win.find('#hspace').value("");
     433
     434                        css = mergeMargins(css);
     435
     436                        //Move opposite equal margins to vspace/hspace field
     437                        if ((css['margin-top'] && css['margin-bottom']) || (css['margin-right'] && css['margin-left'])) {
     438                                if (css['margin-top'] === css['margin-bottom']) {
     439                                        win.find('#vspace').value(removePixelSuffix(css['margin-top']));
     440                                } else {
     441                                        win.find('#vspace').value('');
     442                                }
     443                                if (css['margin-right'] === css['margin-left']) {
     444                                        win.find('#hspace').value(removePixelSuffix(css['margin-right']));
     445                                } else {
     446                                        win.find('#hspace').value('');
     447                                }
     448                        }
     449
     450                        //Move border-width
     451                        if (css['border-width']) {
     452                                win.find('#border').value(removePixelSuffix(css['border-width']));
     453                        }
    374454
    375455                        win.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
     456
    376457                }
    377458
    378459                if (editor.settings.image_advtab) {
    379460                        // Parse styles from img
    380461                        if (imgElm) {
    381                                 data.hspace = removePixelSuffix(imgElm.style.marginLeft || imgElm.style.marginRight);
    382                                 data.vspace = removePixelSuffix(imgElm.style.marginTop || imgElm.style.marginBottom);
    383                                 data.border = removePixelSuffix(imgElm.style.borderWidth);
     462                                if (imgElm.style.marginLeft && imgElm.style.marginRight && imgElm.style.marginLeft === imgElm.style.marginRight) {
     463                                        data.hspace = removePixelSuffix(imgElm.style.marginLeft);
     464                                }
     465                                if (imgElm.style.marginTop && imgElm.style.marginBottom && imgElm.style.marginTop === imgElm.style.marginBottom) {
     466                                        data.vspace = removePixelSuffix(imgElm.style.marginTop);
     467                                }
     468                                if (imgElm.style.borderWidth) {
     469                                        data.border = removePixelSuffix(imgElm.style.borderWidth);
     470                                }
     471
    384472                                data.style = editor.dom.serializeStyle(editor.dom.parseStyle(editor.dom.getAttrib(imgElm, 'style')));
    385473                        }
    386474
     
    404492                                                        {
    405493                                                                label: 'Style',
    406494                                                                name: 'style',
    407                                                                 type: 'textbox'
     495                                                                type: 'textbox',
     496                                                                onchange: updateVSpaceHSpaceBorder
    408497                                                        },
    409498                                                        {
    410499                                                                type: 'form',
     
    449538
    450539        editor.addMenuItem('image', {
    451540                icon: 'image',
    452                 text: 'Insert image',
     541                text: 'Insert/edit image',
    453542                onclick: createImageList(showDialog),
    454543                context: 'insert',
    455544                prependToContext: true
  • src/wp-includes/js/tinymce/plugins/image/plugin.min.js

     
    1 tinymce.PluginManager.add("image",function(a){function b(a,b){function c(a,c){d.parentNode&&d.parentNode.removeChild(d),b({width:a,height:c})}var d=document.createElement("img");d.onload=function(){c(d.clientWidth,d.clientHeight)},d.onerror=function(){c()};var e=d.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left=0,e.width=e.height="auto",document.body.appendChild(d),d.src=a}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){return function(){var c=a.settings.image_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function e(d){function e(){var a,b,c,d;a=j.find("#width")[0],b=j.find("#height")[0],a&&b&&(c=a.value(),d=b.value(),j.find("#constrain")[0].checked()&&k&&l&&c&&d&&(k!=c?(d=Math.round(c/k*d),b.value(d)):(c=Math.round(d/l*c),a.value(c))),k=c,l=d)}function f(){function b(b){function c(){b.onload=b.onerror=null,a.selection&&(a.selection.select(b),a.nodeChanged())}b.onload=function(){o.width||o.height||!r||(p.setAttribs(b,{width:b.clientWidth,height:b.clientHeight}),a.fire("wpNewImageRefresh",{node:b})),c()},b.onerror=c}i(),e(),o=tinymce.extend(o,j.toJSON());var c=o.caption;o.alt||(o.alt=""),""===o.width&&(o.width=null),""===o.height&&(o.height=null),o.style||(o.style=null),o={src:o.src,alt:o.alt,width:o.width,height:o.height,style:o.style,"class":o["class"]},a.undoManager.transact(function(){var d={node:q,data:o,caption:c};return a.fire("wpImageFormSubmit",{imgData:d}),d.cancel?void b(d.node):o.src?(q?p.setAttribs(q,o):(o.id="__mcenew",a.focus(),a.selection.setContent(p.createHTML("img",o)),q=p.get("__mcenew"),p.setAttrib(q,"id",null)),void b(q)):void(q&&(p.remove(q),a.focus(),a.nodeChanged()))})}function g(a){return a&&(a=a.replace(/px$/,"")),a}function h(c){var d=c.meta||{};if(m&&m.value(a.convertURL(this.value(),"src")),tinymce.each(d,function(a,b){j.find("#"+b).value(a)}),!d.width&&!d.height){var e=this.value(),f=new RegExp("^(?:[a-z]+:)?//","i"),g=a.settings.document_base_url;g&&!f.test(e)&&e.substring(0,g.length)!==g&&this.value(g+e),b(this.value(),function(a){a.width&&a.height&&r&&(k=a.width,l=a.height,j.find("#width").value(k),j.find("#height").value(l))})}}function i(){function b(a){return a.length>0&&/^[0-9]+$/.test(a)&&(a+="px"),a}if(a.settings.image_advtab){var c=j.toJSON(),d=p.parseStyle(c.style);delete d.margin,d["margin-top"]=d["margin-bottom"]=b(c.vspace),d["margin-left"]=d["margin-right"]=b(c.hspace),d["border-width"]=b(c.border),j.find("#style").value(p.serializeStyle(p.parseStyle(p.serializeStyle(d))))}}var j,k,l,m,n,o={},p=a.dom,q=a.selection.getNode(),r=a.settings.image_dimensions!==!1;k=p.getAttrib(q,"width"),l=p.getAttrib(q,"height"),"IMG"!=q.nodeName||q.getAttribute("data-mce-object")||q.getAttribute("data-mce-placeholder")?q=null:(o={src:p.getAttrib(q,"src"),alt:p.getAttrib(q,"alt"),"class":p.getAttrib(q,"class"),width:k,height:l},a.fire("wpLoadImageData",{imgData:{data:o,node:q}})),d&&(m={type:"listbox",label:"Image list",values:c(d,function(b){b.value=a.convertURL(b.value||b.url,"src")},[{text:"None",value:""}]),value:o.src&&a.convertURL(o.src,"src"),onselect:function(a){var b=j.find("#alt");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),j.find("#src").value(a.control.value()).fire("change")},onPostRender:function(){m=this}}),a.settings.image_class_list&&(n={name:"class",type:"listbox",label:"Class",values:c(a.settings.image_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"img",classes:[b.value]})})})});var s=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:h},m];a.settings.image_description!==!1&&s.push({name:"alt",type:"textbox",label:"Image description"}),r&&s.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),s.push(n),a.fire("wpLoadImageForm",{data:s}),a.settings.image_advtab?(q&&(o.hspace=g(q.style.marginLeft||q.style.marginRight),o.vspace=g(q.style.marginTop||q.style.marginBottom),o.border=g(q.style.borderWidth),o.style=a.dom.serializeStyle(a.dom.parseStyle(a.dom.getAttrib(q,"style")))),j=a.windowManager.open({title:"Insert/edit image",data:o,bodyType:"tabpanel",body:[{title:"General",type:"form",items:s},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox"},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:i},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:f})):j=a.windowManager.open({title:"Insert/edit image",data:o,body:s,onSubmit:f})}a.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:d(e),stateSelector:"img:not([data-mce-object],[data-mce-placeholder])"}),a.addMenuItem("image",{icon:"image",text:"Insert image",onclick:d(e),context:"insert",prependToContext:!0}),a.addCommand("mceImage",d(e))});
    2  No newline at end of file
     1tinymce.PluginManager.add("image",function(a){function b(a,b){function c(a,c){d.parentNode&&d.parentNode.removeChild(d),b({width:a,height:c})}var d=document.createElement("img");d.onload=function(){c(d.clientWidth,d.clientHeight)},d.onerror=function(){c()};var e=d.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left=0,e.width=e.height="auto",document.body.appendChild(d),d.src=a}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){return function(){var c=a.settings.image_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function e(d){function e(){var a,b,c,d;a=l.find("#width")[0],b=l.find("#height")[0],a&&b&&(c=a.value(),d=b.value(),l.find("#constrain")[0].checked()&&m&&n&&c&&d&&(m!=c?(d=Math.round(c/m*d),isNaN(d)||b.value(d)):(c=Math.round(d/n*c),isNaN(c)||a.value(c))),m=c,n=d)}function f(){function b(b){function c(){b.onload=b.onerror=null,a.selection&&(a.selection.select(b),a.nodeChanged())}b.onload=function(){q.width||q.height||!t||r.setAttribs(b,{width:b.clientWidth,height:b.clientHeight}),c()},b.onerror=c}j(),e(),q=tinymce.extend(q,l.toJSON()),q.alt||(q.alt=""),q.title||(q.title=""),""===q.width&&(q.width=null),""===q.height&&(q.height=null),q.style||(q.style=null),q={src:q.src,alt:q.alt,title:q.title,width:q.width,height:q.height,style:q.style,"class":q["class"]},a.undoManager.transact(function(){return q.src?(""===q.title&&(q.title=null),s?r.setAttribs(s,q):(q.id="__mcenew",a.focus(),a.selection.setContent(r.createHTML("img",q)),s=r.get("__mcenew"),r.setAttrib(s,"id",null)),void b(s)):void(s&&(r.remove(s),a.focus(),a.nodeChanged()))})}function g(a){return a&&(a=a.replace(/px$/,"")),a}function h(c){var d,e,f,g=c.meta||{};o&&o.value(a.convertURL(this.value(),"src")),tinymce.each(g,function(a,b){l.find("#"+b).value(a)}),g.width||g.height||(d=a.convertURL(this.value(),"src"),e=a.settings.image_prepend_url,f=new RegExp("^(?:[a-z]+:)?//","i"),e&&!f.test(d)&&d.substring(0,e.length)!==e&&(d=e+d),this.value(d),b(a.documentBaseURI.toAbsolute(this.value()),function(a){a.width&&a.height&&t&&(m=a.width,n=a.height,l.find("#width").value(m),l.find("#height").value(n))}))}function i(a){if(a.margin){var b=a.margin.split(" ");switch(b.length){case 1:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[0],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[0];break;case 2:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[1];break;case 3:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[1];break;case 4:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[3]}delete a.margin}return a}function j(){function b(a){return a.length>0&&/^[0-9]+$/.test(a)&&(a+="px"),a}if(a.settings.image_advtab){var c=l.toJSON(),d=r.parseStyle(c.style);d=i(d),c.vspace&&(d["margin-top"]=d["margin-bottom"]=b(c.vspace)),c.hspace&&(d["margin-left"]=d["margin-right"]=b(c.hspace)),c.border&&(d["border-width"]=b(c.border)),l.find("#style").value(r.serializeStyle(r.parseStyle(r.serializeStyle(d))))}}function k(){if(a.settings.image_advtab){var b=l.toJSON(),c=r.parseStyle(b.style);l.find("#vspace").value(""),l.find("#hspace").value(""),c=i(c),(c["margin-top"]&&c["margin-bottom"]||c["margin-right"]&&c["margin-left"])&&(l.find("#vspace").value(c["margin-top"]===c["margin-bottom"]?g(c["margin-top"]):""),l.find("#hspace").value(c["margin-right"]===c["margin-left"]?g(c["margin-right"]):"")),c["border-width"]&&l.find("#border").value(g(c["border-width"])),l.find("#style").value(r.serializeStyle(r.parseStyle(r.serializeStyle(c))))}}var l,m,n,o,p,q={},r=a.dom,s=a.selection.getNode(),t=a.settings.image_dimensions!==!1;m=r.getAttrib(s,"width"),n=r.getAttrib(s,"height"),"IMG"!=s.nodeName||s.getAttribute("data-mce-object")||s.getAttribute("data-mce-placeholder")?s=null:q={src:r.getAttrib(s,"src"),alt:r.getAttrib(s,"alt"),title:r.getAttrib(s,"title"),"class":r.getAttrib(s,"class"),width:m,height:n},d&&(o={type:"listbox",label:"Image list",values:c(d,function(b){b.value=a.convertURL(b.value||b.url,"src")},[{text:"None",value:""}]),value:q.src&&a.convertURL(q.src,"src"),onselect:function(a){var b=l.find("#alt");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),l.find("#src").value(a.control.value()).fire("change")},onPostRender:function(){o=this}}),a.settings.image_class_list&&(p={name:"class",type:"listbox",label:"Class",values:c(a.settings.image_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"img",classes:[b.value]})})})});var u=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:h},o];a.settings.image_description!==!1&&u.push({name:"alt",type:"textbox",label:"Image description"}),a.settings.image_title&&u.push({name:"title",type:"textbox",label:"Image Title"}),t&&u.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),u.push(p),a.settings.image_advtab?(s&&(s.style.marginLeft&&s.style.marginRight&&s.style.marginLeft===s.style.marginRight&&(q.hspace=g(s.style.marginLeft)),s.style.marginTop&&s.style.marginBottom&&s.style.marginTop===s.style.marginBottom&&(q.vspace=g(s.style.marginTop)),s.style.borderWidth&&(q.border=g(s.style.borderWidth)),q.style=a.dom.serializeStyle(a.dom.parseStyle(a.dom.getAttrib(s,"style")))),l=a.windowManager.open({title:"Insert/edit image",data:q,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:k},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:j},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:f})):l=a.windowManager.open({title:"Insert/edit image",data:q,body:u,onSubmit:f})}a.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:d(e),stateSelector:"img:not([data-mce-object],[data-mce-placeholder])"}),a.addMenuItem("image",{icon:"image",text:"Insert/edit image",onclick:d(e),context:"insert",prependToContext:!0}),a.addCommand("mceImage",d(e))});
     2 No newline at end of file
  • src/wp-includes/js/tinymce/plugins/lists/plugin.js

     
    207207                }
    208208
    209209                function splitList(ul, li, newBlock) {
    210                         var tmpRng, fragment;
     210                        var tmpRng, fragment, bookmarks, node;
    211211
    212                         var bookmarks = dom.select('span[data-mce-type="bookmark"]', ul);
     212                        function removeAndKeepBookmarks(targetNode) {
     213                                tinymce.each(bookmarks, function(node) {
     214                                        targetNode.parentNode.insertBefore(node, li.parentNode);
     215                                });
    213216
     217                                dom.remove(targetNode);
     218                        }
     219
     220                        bookmarks = dom.select('span[data-mce-type="bookmark"]', ul);
    214221                        newBlock = newBlock || createNewTextBlock(li);
    215222                        tmpRng = dom.createRng();
    216223                        tmpRng.setStartAfter(li);
    217224                        tmpRng.setEndAfter(ul);
    218225                        fragment = tmpRng.extractContents();
    219226
     227                        for (node = fragment.firstChild; node; node = node.firstChild) {
     228                                if (node.nodeName == 'LI' && dom.isEmpty(node)) {
     229                                        dom.remove(node);
     230                                        break;
     231                                }
     232                        }
     233
    220234                        if (!dom.isEmpty(fragment)) {
    221235                                dom.insertAfter(fragment, ul);
    222236                        }
     
    224238                        dom.insertAfter(newBlock, ul);
    225239
    226240                        if (dom.isEmpty(li.parentNode)) {
    227                                 tinymce.each(bookmarks, function(node) {
    228                                         li.parentNode.parentNode.insertBefore(node, li.parentNode);
    229                                 });
    230 
    231                                 dom.remove(li.parentNode);
     241                                removeAndKeepBookmarks(li.parentNode);
    232242                        }
    233243
    234244                        dom.remove(li);
     245
     246                        if (dom.isEmpty(ul)) {
     247                                dom.remove(ul);
     248                        }
    235249                }
    236250
    237251                function mergeWithAdjacentLists(listBlock) {
     
    709723                        }
    710724                };
    711725
    712                 editor.addCommand('Indent', function() {
    713                         if (!indentSelection()) {
    714                                 return true;
     726                editor.on('BeforeExecCommand', function(e) {
     727                        var cmd = e.command.toLowerCase(), isHandled;
     728
     729                        if (cmd == "indent") {
     730                                if (indentSelection()) {
     731                                        isHandled = true;
     732                                }
     733                        } else if (cmd == "outdent") {
     734                                if (outdentSelection()) {
     735                                        isHandled = true;
     736                                }
    715737                        }
    716                 });
    717738
    718                 editor.addCommand('Outdent', function() {
    719                         if (!outdentSelection()) {
     739                        if (isHandled) {
     740                                editor.fire('ExecCommand', {command: e.command});
     741                                e.preventDefault();
    720742                                return true;
    721743                        }
    722744                });
  • src/wp-includes/js/tinymce/plugins/lists/plugin.min.js

     
    1 tinymce.PluginManager.add("lists",function(a){function b(a){return a&&/^(OL|UL|DL)$/.test(a.nodeName)}function c(a){return a.parentNode.firstChild==a}function d(a){return a.parentNode.lastChild==a}function e(b){return b&&!!a.schema.getTextBlockElements()[b.nodeName]}var f=this;a.on("init",function(){function g(a){function b(b){var d,e,f;e=a[b?"startContainer":"endContainer"],f=a[b?"startOffset":"endOffset"],1==e.nodeType&&(d=v.create("span",{"data-mce-type":"bookmark"}),e.hasChildNodes()?(f=Math.min(f,e.childNodes.length-1),b?e.insertBefore(d,e.childNodes[f]):v.insertAfter(d,e.childNodes[f])):e.appendChild(d),e=d,f=0),c[b?"startContainer":"endContainer"]=e,c[b?"startOffset":"endOffset"]=f}var c={};return b(!0),a.collapsed||b(),c}function h(a){function b(b){function c(a){for(var b=a.parentNode.firstChild,c=0;b;){if(b==a)return c;(1!=b.nodeType||"bookmark"!=b.getAttribute("data-mce-type"))&&c++,b=b.nextSibling}return-1}var d,e,f;d=f=a[b?"startContainer":"endContainer"],e=a[b?"startOffset":"endOffset"],d&&(1==d.nodeType&&(e=c(d),d=d.parentNode,v.remove(f)),a[b?"startContainer":"endContainer"]=d,a[b?"startOffset":"endOffset"]=e)}b(!0),b();var c=v.createRng();c.setStart(a.startContainer,a.startOffset),a.endContainer&&c.setEnd(a.endContainer,a.endOffset),w.setRng(c)}function i(b,c){var d,e,f,g=v.createFragment(),h=a.schema.getBlockElements();if(a.settings.forced_root_block&&(c=c||a.settings.forced_root_block),c&&(e=v.create(c),e.tagName===a.settings.forced_root_block&&v.setAttribs(e,a.settings.forced_root_block_attrs),g.appendChild(e)),b)for(;d=b.firstChild;){var i=d.nodeName;f||"SPAN"==i&&"bookmark"==d.getAttribute("data-mce-type")||(f=!0),h[i]?(g.appendChild(d),e=null):c?(e||(e=v.create(c),g.appendChild(e)),e.appendChild(d)):g.appendChild(d)}return a.settings.forced_root_block?f||tinymce.Env.ie&&!(tinymce.Env.ie>10)||e.appendChild(v.create("br",{"data-mce-bogus":"1"})):g.appendChild(v.create("br")),g}function j(){return tinymce.grep(w.getSelectedBlocks(),function(a){return/^(LI|DT|DD)$/.test(a.nodeName)})}function k(a,b,c){var d,e,f=v.select('span[data-mce-type="bookmark"]',a);c=c||i(b),d=v.createRng(),d.setStartAfter(b),d.setEndAfter(a),e=d.extractContents(),v.isEmpty(e)||v.insertAfter(e,a),v.insertAfter(c,a),v.isEmpty(b.parentNode)&&(tinymce.each(f,function(a){b.parentNode.parentNode.insertBefore(a,b.parentNode)}),v.remove(b.parentNode)),v.remove(b)}function l(a){var c,d;if(c=a.nextSibling,c&&b(c)&&c.nodeName==a.nodeName){for(;d=c.firstChild;)a.appendChild(d);v.remove(c)}if(c=a.previousSibling,c&&b(c)&&c.nodeName==a.nodeName){for(;d=c.firstChild;)a.insertBefore(d,a.firstChild);v.remove(c)}}function m(a){tinymce.each(tinymce.grep(v.select("ol,ul",a)),function(a){var c,d=a.parentNode;"LI"==d.nodeName&&d.firstChild==a&&(c=d.previousSibling,c&&"LI"==c.nodeName&&(c.appendChild(a),v.isEmpty(d)&&v.remove(d))),b(d)&&(c=d.previousSibling,c&&"LI"==c.nodeName&&c.appendChild(a))})}function n(a){function e(a){v.isEmpty(a)&&v.remove(a)}var f,g=a.parentNode,h=g.parentNode;return"DD"==a.nodeName?(v.rename(a,"DT"),!0):c(a)&&d(a)?("LI"==h.nodeName?(v.insertAfter(a,h),e(h),v.remove(g)):b(h)?v.remove(g,!0):(h.insertBefore(i(a),g),v.remove(g)),!0):c(a)?("LI"==h.nodeName?(v.insertAfter(a,h),a.appendChild(g),e(h)):b(h)?h.insertBefore(a,g):(h.insertBefore(i(a),g),v.remove(a)),!0):d(a)?("LI"==h.nodeName?v.insertAfter(a,h):b(h)?v.insertAfter(a,g):(v.insertAfter(i(a),g),v.remove(a)),!0):("LI"==h.nodeName?(g=h,f=i(a,"LI")):f=b(h)?i(a,"LI"):i(a),k(g,a,f),m(g.parentNode),!0)}function o(a){function c(c,d){var e;if(b(c)){for(;e=a.lastChild.firstChild;)d.appendChild(e);v.remove(c)}}var d,e;return"DT"==a.nodeName?(v.rename(a,"DD"),!0):(d=a.previousSibling,d&&b(d)?(d.appendChild(a),!0):d&&"LI"==d.nodeName&&b(d.lastChild)?(d.lastChild.appendChild(a),c(a.lastChild,d.lastChild),!0):(d=a.nextSibling,d&&b(d)?(d.insertBefore(a,d.firstChild),!0):d&&"LI"==d.nodeName&&b(a.lastChild)?!1:(d=a.previousSibling,d&&"LI"==d.nodeName?(e=v.create(a.parentNode.nodeName),d.appendChild(e),e.appendChild(a),c(a.lastChild,e),!0):!1)))}function p(){var b=j();if(b.length){for(var c=g(w.getRng(!0)),d=0;d<b.length&&(o(b[d])||0!==d);d++);return h(c),a.nodeChanged(),!0}}function q(){var b=j();if(b.length){var c,d,e=g(w.getRng(!0)),f=a.getBody();for(c=b.length;c--;)for(var i=b[c].parentNode;i&&i!=f;){for(d=b.length;d--;)if(b[d]===i){b.splice(c,1);break}i=i.parentNode}for(c=0;c<b.length&&(n(b[c])||0!==c);c++);return h(e),a.nodeChanged(),!0}}function r(c){function d(){function b(a){var b,c;for(b=f[a?"startContainer":"endContainer"],c=f[a?"startOffset":"endOffset"],1==b.nodeType&&(b=b.childNodes[Math.min(c,b.childNodes.length-1)]||b);b.parentNode!=g;){if(e(b))return b;if(/^(TD|TH)$/.test(b.parentNode.nodeName))return b;b=b.parentNode}return b}for(var c,d=[],g=a.getBody(),h=b(!0),i=b(),j=[],k=h;k&&(j.push(k),k!=i);k=k.nextSibling);return tinymce.each(j,function(a){if(e(a))return d.push(a),void(c=null);if(v.isBlock(a)||"BR"==a.nodeName)return"BR"==a.nodeName&&v.remove(a),void(c=null);var b=a.nextSibling;return tinymce.dom.BookmarkManager.isBookmarkNode(a)&&(e(b)||!b&&a.parentNode==g)?void(c=null):(c||(c=v.create("p"),a.parentNode.insertBefore(c,a),d.push(c)),void c.appendChild(a))}),d}var f=w.getRng(!0),i=g(f),j="LI";c=c.toUpperCase(),"DL"==c&&(j="DT"),tinymce.each(d(),function(a){var d,e;e=a.previousSibling,e&&b(e)&&e.nodeName==c?(d=e,a=v.rename(a,j),e.appendChild(a)):(d=v.create(c),a.parentNode.insertBefore(d,a),d.appendChild(a),a=v.rename(a,j)),l(d)}),h(i)}function s(){var c=g(w.getRng(!0)),d=a.getBody();tinymce.each(j(),function(a){var c,e;if(v.isEmpty(a))return void n(a);for(c=a;c&&c!=d;c=c.parentNode)b(c)&&(e=c);k(e,a)}),h(c)}function t(a){var b=v.getParent(w.getStart(),"OL,UL,DL");if(b)if(b.nodeName==a)s(a);else{var c=g(w.getRng(!0));l(v.rename(b,a)),h(c)}else r(a)}function u(b){return function(){var c=v.getParent(a.selection.getStart(),"UL,OL,DL");return c&&c.nodeName==b}}var v=a.dom,w=a.selection;f.backspaceDelete=function(c){function d(b,c){var d,e,f=b.startContainer,g=b.startOffset;if(3==f.nodeType&&(c?g<f.data.length:g>0))return f;for(d=a.schema.getNonEmptyElements(),e=new tinymce.dom.TreeWalker(b.startContainer);f=e[c?"next":"prev"]();){if("LI"==f.nodeName&&!f.hasChildNodes())return f;if(d[f.nodeName])return f;if(3==f.nodeType&&f.data.length>0)return f}}function e(a,c){var d,e,f=a.parentNode;if(b(c.lastChild)&&(e=c.lastChild),d=c.lastChild,d&&"BR"==d.nodeName&&a.hasChildNodes()&&v.remove(d),v.isEmpty(c)&&v.$(c).empty(),!v.isEmpty(a))for(;d=a.firstChild;)c.appendChild(d);e&&c.appendChild(e),v.remove(a),v.isEmpty(f)&&v.remove(f)}if(w.isCollapsed()){var f=v.getParent(w.getStart(),"LI");if(f){var i=w.getRng(!0),j=v.getParent(d(i,c),"LI");if(j&&j!=f){var k=g(i);return c?e(j,f):e(f,j),h(k),!0}if(!j&&!c&&s(f.parentNode.nodeName))return!0}}},a.addCommand("Indent",function(){return p()?void 0:!0}),a.addCommand("Outdent",function(){return q()?void 0:!0}),a.addCommand("InsertUnorderedList",function(){t("UL")}),a.addCommand("InsertOrderedList",function(){t("OL")}),a.addCommand("InsertDefinitionList",function(){t("DL")}),a.addQueryStateHandler("InsertUnorderedList",u("UL")),a.addQueryStateHandler("InsertOrderedList",u("OL")),a.addQueryStateHandler("InsertDefinitionList",u("DL")),a.on("keydown",function(b){9!=b.keyCode||tinymce.util.VK.metaKeyPressed(b)||a.dom.getParent(a.selection.getStart(),"LI,DT,DD")&&(b.preventDefault(),b.shiftKey?q():p())})}),a.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(){var b=this;a.on("nodechange",function(){for(var d=a.selection.getSelectedBlocks(),e=!1,f=0,g=d.length;!e&&g>f;f++){var h=d[f].nodeName;e="LI"==h&&c(d[f])||"UL"==h||"OL"==h||"DD"==h}b.disabled(e)})}}),a.on("keydown",function(a){a.keyCode==tinymce.util.VK.BACKSPACE?f.backspaceDelete()&&a.preventDefault():a.keyCode==tinymce.util.VK.DELETE&&f.backspaceDelete(!0)&&a.preventDefault()})});
    2  No newline at end of file
     1tinymce.PluginManager.add("lists",function(a){function b(a){return a&&/^(OL|UL|DL)$/.test(a.nodeName)}function c(a){return a.parentNode.firstChild==a}function d(a){return a.parentNode.lastChild==a}function e(b){return b&&!!a.schema.getTextBlockElements()[b.nodeName]}var f=this;a.on("init",function(){function g(a){function b(b){var d,e,f;e=a[b?"startContainer":"endContainer"],f=a[b?"startOffset":"endOffset"],1==e.nodeType&&(d=v.create("span",{"data-mce-type":"bookmark"}),e.hasChildNodes()?(f=Math.min(f,e.childNodes.length-1),b?e.insertBefore(d,e.childNodes[f]):v.insertAfter(d,e.childNodes[f])):e.appendChild(d),e=d,f=0),c[b?"startContainer":"endContainer"]=e,c[b?"startOffset":"endOffset"]=f}var c={};return b(!0),a.collapsed||b(),c}function h(a){function b(b){function c(a){for(var b=a.parentNode.firstChild,c=0;b;){if(b==a)return c;(1!=b.nodeType||"bookmark"!=b.getAttribute("data-mce-type"))&&c++,b=b.nextSibling}return-1}var d,e,f;d=f=a[b?"startContainer":"endContainer"],e=a[b?"startOffset":"endOffset"],d&&(1==d.nodeType&&(e=c(d),d=d.parentNode,v.remove(f)),a[b?"startContainer":"endContainer"]=d,a[b?"startOffset":"endOffset"]=e)}b(!0),b();var c=v.createRng();c.setStart(a.startContainer,a.startOffset),a.endContainer&&c.setEnd(a.endContainer,a.endOffset),w.setRng(c)}function i(b,c){var d,e,f,g=v.createFragment(),h=a.schema.getBlockElements();if(a.settings.forced_root_block&&(c=c||a.settings.forced_root_block),c&&(e=v.create(c),e.tagName===a.settings.forced_root_block&&v.setAttribs(e,a.settings.forced_root_block_attrs),g.appendChild(e)),b)for(;d=b.firstChild;){var i=d.nodeName;f||"SPAN"==i&&"bookmark"==d.getAttribute("data-mce-type")||(f=!0),h[i]?(g.appendChild(d),e=null):c?(e||(e=v.create(c),g.appendChild(e)),e.appendChild(d)):g.appendChild(d)}return a.settings.forced_root_block?f||tinymce.Env.ie&&!(tinymce.Env.ie>10)||e.appendChild(v.create("br",{"data-mce-bogus":"1"})):g.appendChild(v.create("br")),g}function j(){return tinymce.grep(w.getSelectedBlocks(),function(a){return/^(LI|DT|DD)$/.test(a.nodeName)})}function k(a,b,c){function d(a){tinymce.each(g,function(c){a.parentNode.insertBefore(c,b.parentNode)}),v.remove(a)}var e,f,g,h;for(g=v.select('span[data-mce-type="bookmark"]',a),c=c||i(b),e=v.createRng(),e.setStartAfter(b),e.setEndAfter(a),f=e.extractContents(),h=f.firstChild;h;h=h.firstChild)if("LI"==h.nodeName&&v.isEmpty(h)){v.remove(h);break}v.isEmpty(f)||v.insertAfter(f,a),v.insertAfter(c,a),v.isEmpty(b.parentNode)&&d(b.parentNode),v.remove(b),v.isEmpty(a)&&v.remove(a)}function l(a){var c,d;if(c=a.nextSibling,c&&b(c)&&c.nodeName==a.nodeName){for(;d=c.firstChild;)a.appendChild(d);v.remove(c)}if(c=a.previousSibling,c&&b(c)&&c.nodeName==a.nodeName){for(;d=c.firstChild;)a.insertBefore(d,a.firstChild);v.remove(c)}}function m(a){tinymce.each(tinymce.grep(v.select("ol,ul",a)),function(a){var c,d=a.parentNode;"LI"==d.nodeName&&d.firstChild==a&&(c=d.previousSibling,c&&"LI"==c.nodeName&&(c.appendChild(a),v.isEmpty(d)&&v.remove(d))),b(d)&&(c=d.previousSibling,c&&"LI"==c.nodeName&&c.appendChild(a))})}function n(a){function e(a){v.isEmpty(a)&&v.remove(a)}var f,g=a.parentNode,h=g.parentNode;return"DD"==a.nodeName?(v.rename(a,"DT"),!0):c(a)&&d(a)?("LI"==h.nodeName?(v.insertAfter(a,h),e(h),v.remove(g)):b(h)?v.remove(g,!0):(h.insertBefore(i(a),g),v.remove(g)),!0):c(a)?("LI"==h.nodeName?(v.insertAfter(a,h),a.appendChild(g),e(h)):b(h)?h.insertBefore(a,g):(h.insertBefore(i(a),g),v.remove(a)),!0):d(a)?("LI"==h.nodeName?v.insertAfter(a,h):b(h)?v.insertAfter(a,g):(v.insertAfter(i(a),g),v.remove(a)),!0):("LI"==h.nodeName?(g=h,f=i(a,"LI")):f=b(h)?i(a,"LI"):i(a),k(g,a,f),m(g.parentNode),!0)}function o(a){function c(c,d){var e;if(b(c)){for(;e=a.lastChild.firstChild;)d.appendChild(e);v.remove(c)}}var d,e;return"DT"==a.nodeName?(v.rename(a,"DD"),!0):(d=a.previousSibling,d&&b(d)?(d.appendChild(a),!0):d&&"LI"==d.nodeName&&b(d.lastChild)?(d.lastChild.appendChild(a),c(a.lastChild,d.lastChild),!0):(d=a.nextSibling,d&&b(d)?(d.insertBefore(a,d.firstChild),!0):d&&"LI"==d.nodeName&&b(a.lastChild)?!1:(d=a.previousSibling,d&&"LI"==d.nodeName?(e=v.create(a.parentNode.nodeName),d.appendChild(e),e.appendChild(a),c(a.lastChild,e),!0):!1)))}function p(){var b=j();if(b.length){for(var c=g(w.getRng(!0)),d=0;d<b.length&&(o(b[d])||0!==d);d++);return h(c),a.nodeChanged(),!0}}function q(){var b=j();if(b.length){var c,d,e=g(w.getRng(!0)),f=a.getBody();for(c=b.length;c--;)for(var i=b[c].parentNode;i&&i!=f;){for(d=b.length;d--;)if(b[d]===i){b.splice(c,1);break}i=i.parentNode}for(c=0;c<b.length&&(n(b[c])||0!==c);c++);return h(e),a.nodeChanged(),!0}}function r(c){function d(){function b(a){var b,c;for(b=f[a?"startContainer":"endContainer"],c=f[a?"startOffset":"endOffset"],1==b.nodeType&&(b=b.childNodes[Math.min(c,b.childNodes.length-1)]||b);b.parentNode!=g;){if(e(b))return b;if(/^(TD|TH)$/.test(b.parentNode.nodeName))return b;b=b.parentNode}return b}for(var c,d=[],g=a.getBody(),h=b(!0),i=b(),j=[],k=h;k&&(j.push(k),k!=i);k=k.nextSibling);return tinymce.each(j,function(a){if(e(a))return d.push(a),void(c=null);if(v.isBlock(a)||"BR"==a.nodeName)return"BR"==a.nodeName&&v.remove(a),void(c=null);var b=a.nextSibling;return tinymce.dom.BookmarkManager.isBookmarkNode(a)&&(e(b)||!b&&a.parentNode==g)?void(c=null):(c||(c=v.create("p"),a.parentNode.insertBefore(c,a),d.push(c)),void c.appendChild(a))}),d}var f=w.getRng(!0),i=g(f),j="LI";c=c.toUpperCase(),"DL"==c&&(j="DT"),tinymce.each(d(),function(a){var d,e;e=a.previousSibling,e&&b(e)&&e.nodeName==c?(d=e,a=v.rename(a,j),e.appendChild(a)):(d=v.create(c),a.parentNode.insertBefore(d,a),d.appendChild(a),a=v.rename(a,j)),l(d)}),h(i)}function s(){var c=g(w.getRng(!0)),d=a.getBody();tinymce.each(j(),function(a){var c,e;if(v.isEmpty(a))return void n(a);for(c=a;c&&c!=d;c=c.parentNode)b(c)&&(e=c);k(e,a)}),h(c)}function t(a){var b=v.getParent(w.getStart(),"OL,UL,DL");if(b)if(b.nodeName==a)s(a);else{var c=g(w.getRng(!0));l(v.rename(b,a)),h(c)}else r(a)}function u(b){return function(){var c=v.getParent(a.selection.getStart(),"UL,OL,DL");return c&&c.nodeName==b}}var v=a.dom,w=a.selection;f.backspaceDelete=function(c){function d(b,c){var d,e,f=b.startContainer,g=b.startOffset;if(3==f.nodeType&&(c?g<f.data.length:g>0))return f;for(d=a.schema.getNonEmptyElements(),e=new tinymce.dom.TreeWalker(b.startContainer);f=e[c?"next":"prev"]();){if("LI"==f.nodeName&&!f.hasChildNodes())return f;if(d[f.nodeName])return f;if(3==f.nodeType&&f.data.length>0)return f}}function e(a,c){var d,e,f=a.parentNode;if(b(c.lastChild)&&(e=c.lastChild),d=c.lastChild,d&&"BR"==d.nodeName&&a.hasChildNodes()&&v.remove(d),v.isEmpty(c)&&v.$(c).empty(),!v.isEmpty(a))for(;d=a.firstChild;)c.appendChild(d);e&&c.appendChild(e),v.remove(a),v.isEmpty(f)&&v.remove(f)}if(w.isCollapsed()){var f=v.getParent(w.getStart(),"LI");if(f){var i=w.getRng(!0),j=v.getParent(d(i,c),"LI");if(j&&j!=f){var k=g(i);return c?e(j,f):e(f,j),h(k),!0}if(!j&&!c&&s(f.parentNode.nodeName))return!0}}},a.on("BeforeExecCommand",function(b){var c,d=b.command.toLowerCase();return"indent"==d?p()&&(c=!0):"outdent"==d&&q()&&(c=!0),c?(a.fire("ExecCommand",{command:b.command}),b.preventDefault(),!0):void 0}),a.addCommand("InsertUnorderedList",function(){t("UL")}),a.addCommand("InsertOrderedList",function(){t("OL")}),a.addCommand("InsertDefinitionList",function(){t("DL")}),a.addQueryStateHandler("InsertUnorderedList",u("UL")),a.addQueryStateHandler("InsertOrderedList",u("OL")),a.addQueryStateHandler("InsertDefinitionList",u("DL")),a.on("keydown",function(b){9!=b.keyCode||tinymce.util.VK.metaKeyPressed(b)||a.dom.getParent(a.selection.getStart(),"LI,DT,DD")&&(b.preventDefault(),b.shiftKey?q():p())})}),a.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(){var b=this;a.on("nodechange",function(){for(var d=a.selection.getSelectedBlocks(),e=!1,f=0,g=d.length;!e&&g>f;f++){var h=d[f].nodeName;e="LI"==h&&c(d[f])||"UL"==h||"OL"==h||"DD"==h}b.disabled(e)})}}),a.on("keydown",function(a){a.keyCode==tinymce.util.VK.BACKSPACE?f.backspaceDelete()&&a.preventDefault():a.keyCode==tinymce.util.VK.DELETE&&f.backspaceDelete(!0)&&a.preventDefault()})});
     2 No newline at end of file
  • src/wp-includes/js/tinymce/plugins/media/plugin.js

     
    2424        var embedChange = (tinymce.Env.ie && tinymce.Env.ie <= 8) ? 'onChange' : 'onInput';
    2525
    2626        function guessMime(url) {
     27                url = url.toLowerCase();
     28
    2729                if (url.indexOf('.mp3') != -1) {
    2830                        return 'audio/mpeg';
    2931                }
     
    9496                        if (win.find('#constrain')[0].checked() && width && height && newWidth && newHeight) {
    9597                                if (e.control == widthCtrl) {
    9698                                        newHeight = Math.round((newWidth / width) * newHeight);
    97                                         heightCtrl.value(newHeight);
     99
     100                                        if (!isNaN(newHeight)) {
     101                                                heightCtrl.value(newHeight);
     102                                        }
    98103                                } else {
    99104                                        newWidth = Math.round((newHeight / height) * newWidth);
    100                                         widthCtrl.value(newWidth);
     105
     106                                        if (!isNaN(newWidth)) {
     107                                                widthCtrl.value(newWidth);
     108                                        }
    101109                                }
    102110                        }
    103111
     
    121129                                align: 'center',
    122130                                spacing: 5,
    123131                                items: [
    124                                         {name: 'width', type: 'textbox', maxLength: 3, size: 3, onchange: recalcSize},
     132                                        {name: 'width', type: 'textbox', maxLength: 5, size: 3, onchange: recalcSize, ariaLabel: 'Width'},
    125133                                        {type: 'label', text: 'x'},
    126                                         {name: 'height', type: 'textbox', maxLength: 3, size: 3, onchange: recalcSize},
     134                                        {name: 'height', type: 'textbox', maxLength: 5, size: 3, onchange: recalcSize, ariaLabel: 'Height'},
    127135                                        {name: 'constrain', type: 'checkbox', checked: true, text: 'Constrain proportions'}
    128136                                ]
    129137                        });
     
    766774
    767775        editor.addMenuItem('media', {
    768776                icon: 'media',
    769                 text: 'Insert video',
     777                text: 'Insert/edit video',
    770778                onclick: showDialog,
    771779                context: 'insert',
    772780                prependToContext: true
  • src/wp-includes/js/tinymce/plugins/media/plugin.min.js

     
    1 tinymce.PluginManager.add("media",function(a,b){function c(a){return-1!=a.indexOf(".mp3")?"audio/mpeg":-1!=a.indexOf(".wav")?"audio/wav":-1!=a.indexOf(".mp4")?"video/mp4":-1!=a.indexOf(".webm")?"video/webm":-1!=a.indexOf(".ogg")?"video/ogg":-1!=a.indexOf(".swf")?"application/x-shockwave-flash":""}function d(b){var c=a.settings.media_scripts;if(c)for(var d=0;d<c.length;d++)if(-1!==b.indexOf(c[d].filter))return c[d]}function e(){function b(a){var b,c,f,g;b=d.find("#width")[0],c=d.find("#height")[0],f=b.value(),g=c.value(),d.find("#constrain")[0].checked()&&e&&j&&f&&g&&(a.control==b?(g=Math.round(f/e*g),c.value(g)):(f=Math.round(g/j*f),b.value(f))),e=f,j=g}function c(){k=h(this.value()),this.parent().parent().fromJSON(k)}var d,e,j,k,l=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onchange:function(a){tinymce.each(a.meta,function(a,b){d.find("#"+b).value(a)})}}];a.settings.media_alt_source!==!1&&l.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"}),a.settings.media_poster!==!1&&l.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),a.settings.media_dimensions!==!1&&l.push({type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:3,size:3,onchange:b},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:3,size:3,onchange:b},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),k=i(a.selection.getNode()),e=k.width,j=k.height;var n={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:f(),multiline:!0,label:"Source"};n[m]=c,d=a.windowManager.open({title:"Insert/edit video",data:k,bodyType:"tabpanel",body:[{title:"General",type:"form",onShowTab:function(){k=h(this.next().find("#embed").value()),this.fromJSON(k)},items:l},{title:"Embed",type:"panel",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,onShowTab:function(){this.find("#embed").value(g(this.parent().toJSON()))},items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},n]}],onSubmit:function(){var b,c,d,e;for(b=a.dom.select("img[data-mce-object]"),a.insertContent(g(this.toJSON())),c=a.dom.select("img[data-mce-object]"),d=0;d<b.length;d++)for(e=c.length-1;e>=0;e--)b[d]==c[e]&&c.splice(e,1);a.selection.select(c[0]),a.nodeChanged()}})}function f(){var b=a.selection.getNode();return b.getAttribute("data-mce-object")?a.selection.getContent():void 0}function g(e){var f="";if(!e.source1&&(tinymce.extend(e,h(e.embed)),!e.source1))return"";if(e.source2||(e.source2=""),e.poster||(e.poster=""),e.source1=a.convertURL(e.source1,"source"),e.source2=a.convertURL(e.source2,"source"),e.source1mime=c(e.source1),e.source2mime=c(e.source2),e.poster=a.convertURL(e.poster,"poster"),e.flashPlayerUrl=a.convertURL(b+"/moxieplayer.swf","movie"),tinymce.each(l,function(a){var b,c,d;if(b=a.regex.exec(e.source1)){for(d=a.url,c=0;b[c];c++)d=d.replace("$"+c,function(){return b[c]});e.source1=d,e.type=a.type,e.width=e.width||a.w,e.height=e.height||a.h}}),e.embed)f=k(e.embed,e,!0);else{var g=d(e.source1);g&&(e.type="script",e.width=g.width,e.height=g.height),e.width=e.width||300,e.height=e.height||150,tinymce.each(e,function(b,c){e[c]=a.dom.encode(b)}),"iframe"==e.type?f+='<iframe src="'+e.source1+'" width="'+e.width+'" height="'+e.height+'"></iframe>':"application/x-shockwave-flash"==e.source1mime?(f+='<object data="'+e.source1+'" width="'+e.width+'" height="'+e.height+'" type="application/x-shockwave-flash">',e.poster&&(f+='<img src="'+e.poster+'" width="'+e.width+'" height="'+e.height+'" />'),f+="</object>"):-1!=e.source1mime.indexOf("audio")?a.settings.audio_template_callback?f=a.settings.audio_template_callback(e):f+='<audio controls="controls" src="'+e.source1+'">'+(e.source2?'\n<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</audio>":"script"==e.type?f+='<script src="'+e.source1+'"></script>':f=a.settings.video_template_callback?a.settings.video_template_callback(e):'<video width="'+e.width+'" height="'+e.height+'"'+(e.poster?' poster="'+e.poster+'"':"")+' controls="controls">\n<source src="'+e.source1+'"'+(e.source1mime?' type="'+e.source1mime+'"':"")+" />\n"+(e.source2?'<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</video>"}return f}function h(a){var b={};return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(a,c){if(b.source1||"param"!=a||(b.source1=c.map.movie),("iframe"==a||"object"==a||"embed"==a||"video"==a||"audio"==a)&&(b.type||(b.type=a),b=tinymce.extend(c.map,b)),"script"==a){var e=d(c.map.src);if(!e)return;b={type:"script",source1:c.map.src,width:e.width,height:e.height}}"source"==a&&(b.source1?b.source2||(b.source2=c.map.src):b.source1=c.map.src),"img"!=a||b.poster||(b.poster=c.map.src)}}).parse(a),b.source1=b.source1||b.src||b.data,b.source2=b.source2||"",b.poster=b.poster||"",b}function i(b){return b.getAttribute("data-mce-object")?h(a.serializer.serialize(b,{selection:!0})):{}}function j(b){if(a.settings.media_filter_html===!1)return b;var c=new tinymce.html.Writer;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!1,special:"script,noscript",comment:function(a){c.comment(a)},cdata:function(a){c.cdata(a)},text:function(a,b){c.text(a,b)},start:function(a,b,d){if("script"!=a&&"noscript"!=a){for(var e=0;e<b.length;e++)if(0===b[e].name.indexOf("on"))return;c.start(a,b,d)}},end:function(a){"script"!=a&&"noscript"!=a&&c.end(a)}},new tinymce.html.Schema({})).parse(b),c.getContent()}function k(a,b,c){function d(a,b){var c,d,e,f;for(c in b)if(e=""+b[c],a.map[c])for(d=a.length;d--;)f=a[d],f.name==c&&(e?(a.map[c]=e,f.value=e):(delete a.map[c],a.splice(d,1)));else e&&(a.push({name:c,value:e}),a.map[c]=e)}var e,f=new tinymce.html.Writer,g=0;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(a){f.comment(a)},cdata:function(a){f.cdata(a)},text:function(a,b){f.text(a,b)},start:function(a,h,i){switch(a){case"video":case"object":case"embed":case"img":case"iframe":d(h,{width:b.width,height:b.height})}if(c)switch(a){case"video":d(h,{poster:b.poster,src:""}),b.source2&&d(h,{src:""});break;case"iframe":d(h,{src:b.source1});break;case"source":if(g++,2>=g&&(d(h,{src:b["source"+g],type:b["source"+g+"mime"]}),!b["source"+g]))return;break;case"img":if(!b.poster)return;e=!0}f.start(a,h,i)},end:function(a){if("video"==a&&c)for(var h=1;2>=h;h++)if(b["source"+h]){var i=[];i.map={},h>g&&(d(i,{src:b["source"+h],type:b["source"+h+"mime"]}),f.start("source",i,!0))}if(b.poster&&"object"==a&&c&&!e){var j=[];j.map={},d(j,{src:b.poster,width:b.width,height:b.height}),f.start("img",j,!0)}f.end(a)}},new tinymce.html.Schema({})).parse(a),f.getContent()}var l=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$1"},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$2"},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc"},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0"},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"'}],m=tinymce.Env.ie&&tinymce.Env.ie<=8?"onChange":"onInput";a.on("ResolveName",function(a){var b;1==a.target.nodeType&&(b=a.target.getAttribute("data-mce-object"))&&(a.name=b)}),a.on("preInit",function(){var b=a.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(a){b[a]=new RegExp("</"+a+"[^>]*>","gi")});var c=a.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(a){c[a]={}}),a.parser.addNodeFilter("iframe,video,audio,object,embed,script",function(b,c){for(var e,f,g,h,i,j,k,l,m=b.length;m--;)if(f=b[m],f.parent&&("script"!=f.name||(l=d(f.attr("src"))))){for(g=new tinymce.html.Node("img",1),g.shortEnded=!0,l&&(l.width&&f.attr("width",l.width.toString()),l.height&&f.attr("height",l.height.toString())),j=f.attributes,e=j.length;e--;)h=j[e].name,i=j[e].value,"width"!==h&&"height"!==h&&"style"!==h&&(("data"==h||"src"==h)&&(i=a.convertURL(i,h)),g.attr("data-mce-p-"+h,i));k=f.firstChild&&f.firstChild.value,k&&(g.attr("data-mce-html",escape(k)),g.firstChild=null),g.attr({width:f.attr("width")||"300",height:f.attr("height")||("audio"==c?"30":"150"),style:f.attr("style"),src:tinymce.Env.transparentSrc,"data-mce-object":c,"class":"mce-object mce-object-"+c}),f.replace(g)}}),a.serializer.addAttributeFilter("data-mce-object",function(a,b){for(var c,d,e,f,g,h,i,k=a.length;k--;)if(c=a[k],c.parent){for(i=c.attr(b),d=new tinymce.html.Node(i,1),"audio"!=i&&"script"!=i&&d.attr({width:c.attr("width"),height:c.attr("height")}),d.attr({style:c.attr("style")}),f=c.attributes,e=f.length;e--;){var l=f[e].name;0===l.indexOf("data-mce-p-")&&d.attr(l.substr(11),f[e].value)}"script"==i&&d.attr("type","text/javascript"),g=c.attr("data-mce-html"),g&&(h=new tinymce.html.Node("#text",3),h.raw=!0,h.value=j(unescape(g)),d.append(h)),c.replace(d)}})}),a.on("ObjectSelected",function(a){var b=a.target.getAttribute("data-mce-object");("audio"==b||"script"==b)&&a.preventDefault()}),a.on("objectResized",function(a){var b,c=a.target;c.getAttribute("data-mce-object")&&(b=c.getAttribute("data-mce-html"),b&&(b=unescape(b),c.setAttribute("data-mce-html",escape(k(b,{width:a.width,height:a.height})))))}),a.addButton("media",{tooltip:"Insert/edit video",onclick:e,stateSelector:["img[data-mce-object=video]","img[data-mce-object=iframe]"]}),a.addMenuItem("media",{icon:"media",text:"Insert video",onclick:e,context:"insert",prependToContext:!0})});
    2  No newline at end of file
     1tinymce.PluginManager.add("media",function(a,b){function c(a){return a=a.toLowerCase(),-1!=a.indexOf(".mp3")?"audio/mpeg":-1!=a.indexOf(".wav")?"audio/wav":-1!=a.indexOf(".mp4")?"video/mp4":-1!=a.indexOf(".webm")?"video/webm":-1!=a.indexOf(".ogg")?"video/ogg":-1!=a.indexOf(".swf")?"application/x-shockwave-flash":""}function d(b){var c=a.settings.media_scripts;if(c)for(var d=0;d<c.length;d++)if(-1!==b.indexOf(c[d].filter))return c[d]}function e(){function b(a){var b,c,f,g;b=d.find("#width")[0],c=d.find("#height")[0],f=b.value(),g=c.value(),d.find("#constrain")[0].checked()&&e&&j&&f&&g&&(a.control==b?(g=Math.round(f/e*g),isNaN(g)||c.value(g)):(f=Math.round(g/j*f),isNaN(f)||b.value(f))),e=f,j=g}function c(){k=h(this.value()),this.parent().parent().fromJSON(k)}var d,e,j,k,l=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onchange:function(a){tinymce.each(a.meta,function(a,b){d.find("#"+b).value(a)})}}];a.settings.media_alt_source!==!1&&l.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"}),a.settings.media_poster!==!1&&l.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),a.settings.media_dimensions!==!1&&l.push({type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:b,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:b,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),k=i(a.selection.getNode()),e=k.width,j=k.height;var n={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:f(),multiline:!0,label:"Source"};n[m]=c,d=a.windowManager.open({title:"Insert/edit video",data:k,bodyType:"tabpanel",body:[{title:"General",type:"form",onShowTab:function(){k=h(this.next().find("#embed").value()),this.fromJSON(k)},items:l},{title:"Embed",type:"panel",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,onShowTab:function(){this.find("#embed").value(g(this.parent().toJSON()))},items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},n]}],onSubmit:function(){var b,c,d,e;for(b=a.dom.select("img[data-mce-object]"),a.insertContent(g(this.toJSON())),c=a.dom.select("img[data-mce-object]"),d=0;d<b.length;d++)for(e=c.length-1;e>=0;e--)b[d]==c[e]&&c.splice(e,1);a.selection.select(c[0]),a.nodeChanged()}})}function f(){var b=a.selection.getNode();return b.getAttribute("data-mce-object")?a.selection.getContent():void 0}function g(e){var f="";if(!e.source1&&(tinymce.extend(e,h(e.embed)),!e.source1))return"";if(e.source2||(e.source2=""),e.poster||(e.poster=""),e.source1=a.convertURL(e.source1,"source"),e.source2=a.convertURL(e.source2,"source"),e.source1mime=c(e.source1),e.source2mime=c(e.source2),e.poster=a.convertURL(e.poster,"poster"),e.flashPlayerUrl=a.convertURL(b+"/moxieplayer.swf","movie"),tinymce.each(l,function(a){var b,c,d;if(b=a.regex.exec(e.source1)){for(d=a.url,c=0;b[c];c++)d=d.replace("$"+c,function(){return b[c]});e.source1=d,e.type=a.type,e.width=e.width||a.w,e.height=e.height||a.h}}),e.embed)f=k(e.embed,e,!0);else{var g=d(e.source1);g&&(e.type="script",e.width=g.width,e.height=g.height),e.width=e.width||300,e.height=e.height||150,tinymce.each(e,function(b,c){e[c]=a.dom.encode(b)}),"iframe"==e.type?f+='<iframe src="'+e.source1+'" width="'+e.width+'" height="'+e.height+'"></iframe>':"application/x-shockwave-flash"==e.source1mime?(f+='<object data="'+e.source1+'" width="'+e.width+'" height="'+e.height+'" type="application/x-shockwave-flash">',e.poster&&(f+='<img src="'+e.poster+'" width="'+e.width+'" height="'+e.height+'" />'),f+="</object>"):-1!=e.source1mime.indexOf("audio")?a.settings.audio_template_callback?f=a.settings.audio_template_callback(e):f+='<audio controls="controls" src="'+e.source1+'">'+(e.source2?'\n<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</audio>":"script"==e.type?f+='<script src="'+e.source1+'"></script>':f=a.settings.video_template_callback?a.settings.video_template_callback(e):'<video width="'+e.width+'" height="'+e.height+'"'+(e.poster?' poster="'+e.poster+'"':"")+' controls="controls">\n<source src="'+e.source1+'"'+(e.source1mime?' type="'+e.source1mime+'"':"")+" />\n"+(e.source2?'<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</video>"}return f}function h(a){var b={};return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(a,c){if(b.source1||"param"!=a||(b.source1=c.map.movie),("iframe"==a||"object"==a||"embed"==a||"video"==a||"audio"==a)&&(b.type||(b.type=a),b=tinymce.extend(c.map,b)),"script"==a){var e=d(c.map.src);if(!e)return;b={type:"script",source1:c.map.src,width:e.width,height:e.height}}"source"==a&&(b.source1?b.source2||(b.source2=c.map.src):b.source1=c.map.src),"img"!=a||b.poster||(b.poster=c.map.src)}}).parse(a),b.source1=b.source1||b.src||b.data,b.source2=b.source2||"",b.poster=b.poster||"",b}function i(b){return b.getAttribute("data-mce-object")?h(a.serializer.serialize(b,{selection:!0})):{}}function j(b){if(a.settings.media_filter_html===!1)return b;var c=new tinymce.html.Writer;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!1,special:"script,noscript",comment:function(a){c.comment(a)},cdata:function(a){c.cdata(a)},text:function(a,b){c.text(a,b)},start:function(a,b,d){if("script"!=a&&"noscript"!=a){for(var e=0;e<b.length;e++)if(0===b[e].name.indexOf("on"))return;c.start(a,b,d)}},end:function(a){"script"!=a&&"noscript"!=a&&c.end(a)}},new tinymce.html.Schema({})).parse(b),c.getContent()}function k(a,b,c){function d(a,b){var c,d,e,f;for(c in b)if(e=""+b[c],a.map[c])for(d=a.length;d--;)f=a[d],f.name==c&&(e?(a.map[c]=e,f.value=e):(delete a.map[c],a.splice(d,1)));else e&&(a.push({name:c,value:e}),a.map[c]=e)}var e,f=new tinymce.html.Writer,g=0;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(a){f.comment(a)},cdata:function(a){f.cdata(a)},text:function(a,b){f.text(a,b)},start:function(a,h,i){switch(a){case"video":case"object":case"embed":case"img":case"iframe":d(h,{width:b.width,height:b.height})}if(c)switch(a){case"video":d(h,{poster:b.poster,src:""}),b.source2&&d(h,{src:""});break;case"iframe":d(h,{src:b.source1});break;case"source":if(g++,2>=g&&(d(h,{src:b["source"+g],type:b["source"+g+"mime"]}),!b["source"+g]))return;break;case"img":if(!b.poster)return;e=!0}f.start(a,h,i)},end:function(a){if("video"==a&&c)for(var h=1;2>=h;h++)if(b["source"+h]){var i=[];i.map={},h>g&&(d(i,{src:b["source"+h],type:b["source"+h+"mime"]}),f.start("source",i,!0))}if(b.poster&&"object"==a&&c&&!e){var j=[];j.map={},d(j,{src:b.poster,width:b.width,height:b.height}),f.start("img",j,!0)}f.end(a)}},new tinymce.html.Schema({})).parse(a),f.getContent()}var l=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$1"},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$2"},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc"},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0"},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"'}],m=tinymce.Env.ie&&tinymce.Env.ie<=8?"onChange":"onInput";a.on("ResolveName",function(a){var b;1==a.target.nodeType&&(b=a.target.getAttribute("data-mce-object"))&&(a.name=b)}),a.on("preInit",function(){var b=a.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(a){b[a]=new RegExp("</"+a+"[^>]*>","gi")});var c=a.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(a){c[a]={}}),a.parser.addNodeFilter("iframe,video,audio,object,embed,script",function(b,c){for(var e,f,g,h,i,j,k,l,m=b.length;m--;)if(f=b[m],f.parent&&("script"!=f.name||(l=d(f.attr("src"))))){for(g=new tinymce.html.Node("img",1),g.shortEnded=!0,l&&(l.width&&f.attr("width",l.width.toString()),l.height&&f.attr("height",l.height.toString())),j=f.attributes,e=j.length;e--;)h=j[e].name,i=j[e].value,"width"!==h&&"height"!==h&&"style"!==h&&(("data"==h||"src"==h)&&(i=a.convertURL(i,h)),g.attr("data-mce-p-"+h,i));k=f.firstChild&&f.firstChild.value,k&&(g.attr("data-mce-html",escape(k)),g.firstChild=null),g.attr({width:f.attr("width")||"300",height:f.attr("height")||("audio"==c?"30":"150"),style:f.attr("style"),src:tinymce.Env.transparentSrc,"data-mce-object":c,"class":"mce-object mce-object-"+c}),f.replace(g)}}),a.serializer.addAttributeFilter("data-mce-object",function(a,b){for(var c,d,e,f,g,h,i,k=a.length;k--;)if(c=a[k],c.parent){for(i=c.attr(b),d=new tinymce.html.Node(i,1),"audio"!=i&&"script"!=i&&d.attr({width:c.attr("width"),height:c.attr("height")}),d.attr({style:c.attr("style")}),f=c.attributes,e=f.length;e--;){var l=f[e].name;0===l.indexOf("data-mce-p-")&&d.attr(l.substr(11),f[e].value)}"script"==i&&d.attr("type","text/javascript"),g=c.attr("data-mce-html"),g&&(h=new tinymce.html.Node("#text",3),h.raw=!0,h.value=j(unescape(g)),d.append(h)),c.replace(d)}})}),a.on("ObjectSelected",function(a){var b=a.target.getAttribute("data-mce-object");("audio"==b||"script"==b)&&a.preventDefault()}),a.on("objectResized",function(a){var b,c=a.target;c.getAttribute("data-mce-object")&&(b=c.getAttribute("data-mce-html"),b&&(b=unescape(b),c.setAttribute("data-mce-html",escape(k(b,{width:a.width,height:a.height})))))}),a.addButton("media",{tooltip:"Insert/edit video",onclick:e,stateSelector:["img[data-mce-object=video]","img[data-mce-object=iframe]"]}),a.addMenuItem("media",{icon:"media",text:"Insert/edit video",onclick:e,context:"insert",prependToContext:!0})});
     2 No newline at end of file
  • src/wp-includes/js/tinymce/plugins/paste/plugin.js

     
    9595/**
    9696 * This class contails various utility functions for the paste plugin.
    9797 *
    98  * @class tinymce.pasteplugin.Clipboard
    99  * @private
     98 * @class tinymce.pasteplugin.Utils
    10099 */
    101100define("tinymce/pasteplugin/Utils", [
    102101        "tinymce/util/Tools",
     
    246245 */
    247246define("tinymce/pasteplugin/Clipboard", [
    248247        "tinymce/Env",
     248        "tinymce/dom/RangeUtils",
    249249        "tinymce/util/VK",
    250250        "tinymce/pasteplugin/Utils"
    251 ], function(Env, VK, Utils) {
     251], function(Env, RangeUtils, VK, Utils) {
    252252        return function(editor) {
    253253                var self = this, pasteBinElm, lastRng, keyboardPasteTimeStamp = 0, draggingInternally = false;
    254254                var pasteBinDefaultContent = '%MCEPASTEBIN%', keyboardPastePlainTextState;
     255                var mceInternalUrlPrefix = 'data:text/mce-internal,';
    255256
    256257                /**
    257258                 * Pastes the specified HTML. This means that the HTML is filtered and then
     
    508509                                if (dataTransfer.getData) {
    509510                                        var legacyText = dataTransfer.getData('Text');
    510511                                        if (legacyText && legacyText.length > 0) {
    511                                                 data['text/plain'] = legacyText;
     512                                                if (legacyText.indexOf(mceInternalUrlPrefix) == -1) {
     513                                                        data['text/plain'] = legacyText;
     514                                                }
    512515                                        }
    513516                                }
    514517
     
    546549                        var dataTransfer = e.clipboardData || e.dataTransfer;
    547550
    548551                        function processItems(items) {
    549                                 var i, item, reader;
     552                                var i, item, reader, hadImage = false;
    550553
    551                                 function pasteImage() {
     554                                function pasteImage(reader) {
    552555                                        if (rng) {
    553556                                                editor.selection.setRng(rng);
    554557                                                rng = null;
     
    561564                                        for (i = 0; i < items.length; i++) {
    562565                                                item = items[i];
    563566
    564                                                 if (/^image\/(jpeg|png|gif)$/.test(item.type)) {
     567                                                if (/^image\/(jpeg|png|gif|bmp)$/.test(item.type)) {
    565568                                                        reader = new FileReader();
    566                                                         reader.onload = pasteImage;
     569                                                        reader.onload = pasteImage.bind(null, reader);
    567570                                                        reader.readAsDataURL(item.getAsFile ? item.getAsFile() : item);
    568571
    569572                                                        e.preventDefault();
    570                                                         return true;
     573                                                        hadImage = true;
    571574                                                }
    572575                                        }
    573576                                }
     577
     578                                return hadImage;
    574579                        }
    575580
    576581                        if (editor.settings.paste_data_images && dataTransfer) {
     
    591596                }
    592597
    593598                function getCaretRangeFromEvent(e) {
    594                         var doc = editor.getDoc(), rng, point;
    595 
    596                         if (doc.caretPositionFromPoint) {
    597                                 point = doc.caretPositionFromPoint(e.clientX, e.clientY);
    598                                 rng = doc.createRange();
    599                                 rng.setStart(point.offsetNode, point.offset);
    600                                 rng.collapse(true);
    601                         } else if (doc.caretRangeFromPoint) {
    602                                 rng = doc.caretRangeFromPoint(e.clientX, e.clientY);
    603                         } else if (doc.body.createTextRange) {
    604                                 rng = doc.body.createTextRange();
    605 
    606                                 try {
    607                                         rng.moveToPoint(e.clientX, e.clientY);
    608                                         rng.collapse(true);
    609                                 } catch (ex) {
    610                                         // Append to top or bottom depending on drop location
    611                                         rng.collapse(e.clientY < doc.body.clientHeight);
    612                                 }
    613                         }
    614 
    615                         return rng;
     599                        return RangeUtils.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());
    616600                }
    617601
    618602                function hasContentType(clipboardContent, mimeType) {
     
    807791                        });
    808792
    809793                        editor.on('dragover dragend', function(e) {
    810                                 var i, dataTransfer = e.dataTransfer;
    811 
    812                                 if (editor.settings.paste_data_images && dataTransfer) {
    813                                         for (i = 0; i < dataTransfer.types.length; i++) {
    814                                                 // Prevent default if we have files dragged into the editor since the pasteImageData handles that
    815                                                 if (dataTransfer.types[i] == "Files") {
    816                                                         e.preventDefault();
    817                                                         return false;
    818                                                 }
    819                                         }
     794                                if (editor.settings.paste_data_images) {
     795                                        e.preventDefault();
    820796                                }
    821797                        });
    822798                }
     
    865841/**
    866842 * This class parses word HTML into proper TinyMCE markup.
    867843 *
    868  * @class tinymce.pasteplugin.Quirks
     844 * @class tinymce.pasteplugin.WordFilter
    869845 * @private
    870846 */
    871847define("tinymce/pasteplugin/WordFilter", [
     
    916892        }
    917893
    918894        function isBulletList(text) {
    919                 return /^[\s\u00a0]*[\u2022\u00b7\u00a7\u00d8\u25CF]\s*/.test(text);
     895                return /^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(text);
    920896        }
    921897
    922898        function WordFilter(editor) {
     
    925901                editor.on('BeforePastePreProcess', function(e) {
    926902                        var content = e.content, retainStyleProperties, validStyles;
    927903
     904                        // Remove google docs internal guid markers
     905                        content = content.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi, '');
     906                        content = content.replace(/<br class="?Apple-interchange-newline"?>/gi, '');
     907
    928908                        retainStyleProperties = settings.paste_retain_style_properties;
    929909                        if (retainStyleProperties) {
    930910                                validStyles = Tools.makeMap(retainStyleProperties.split(/[, ]/));
     
    10281008                                        // Remove start of list item "1. " or "&middot; " etc
    10291009                                        removeIgnoredNodes(paragraphNode);
    10301010                                        trimListStart(paragraphNode, /^\u00a0+/);
    1031                                         trimListStart(paragraphNode, /^\s*([\u2022\u00b7\u00a7\u00d8\u25CF]|\w+\.)/);
     1011                                        trimListStart(paragraphNode, /^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/);
    10321012                                        trimListStart(paragraphNode, /^\u00a0+/);
    10331013                                }
    10341014
     
    12351215                                // Add style/class attribute to all element rules since the user might have removed them from
    12361216                                // paste_word_valid_elements config option and we need to check them for properties
    12371217                                Tools.each(schema.elements, function(rule) {
     1218                                        /*eslint dot-notation:0*/
    12381219                                        if (!rule.attributes["class"]) {
    12391220                                                rule.attributes["class"] = {};
    12401221                                                rule.attributesOrder.push("class");
     
    12721253                                                node = nodes[i];
    12731254
    12741255                                                className = node.attr('class');
    1275                                                 if (/^(MsoCommentReference|MsoCommentText|msoDel|MsoCaption)$/i.test(className)) {
     1256                                                if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {
    12761257                                                        node.remove();
    12771258                                                }
    12781259
     
    16211602        });
    16221603});
    16231604
    1624 expose(["tinymce/pasteplugin/Utils","tinymce/pasteplugin/WordFilter"]);
     1605expose(["tinymce/pasteplugin/Utils"]);
    16251606})(this);
     1607 No newline at end of file
  • src/wp-includes/js/tinymce/plugins/paste/plugin.min.js

     
    1 !function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;f<a.length;++f){if(c=g[a[f]]||e(a[f]),!c)throw"module definition dependecy not found: "+a[f];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){g[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}function f(c){for(var d=0;d<c.length;d++){for(var e=a,f=c[d],h=f.split(/[.\/]/),i=0;i<h.length-1;++i)e[h[i]]===b&&(e[h[i]]={}),e=e[h[i]];e[h[h.length-1]]=g[f]}}var g={};d("tinymce/pasteplugin/Utils",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema"],function(a,b,c){function d(b,c){return a.each(c,function(a){b=a.constructor==RegExp?b.replace(a,""):b.replace(a[0],a[1])}),b}function e(e){function f(a){var b=a.name,c=a;if("br"===b)return void(i+="\n");if(j[b]&&(i+=" "),k[b])return void(i+=" ");if(3==a.type&&(i+=a.value),!a.shortEnded&&(a=a.firstChild))do f(a);while(a=a.next);l[b]&&c.next&&(i+="\n","p"==b&&(i+="\n"))}var g=new c,h=new b({},g),i="",j=g.getShortEndedElements(),k=a.makeMap("script noscript style textarea video audio iframe object"," "),l=g.getBlockElements();return e=d(e,[/<!\[[^\]]+\]>/g]),f(h.parse(e)),i}function f(a){function b(a,b,c){return b||c?"\xa0":" "}return a=d(a,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,b],/<br>$/i])}return{filter:d,innerText:e,trimHtml:f}}),d("tinymce/pasteplugin/Clipboard",["tinymce/Env","tinymce/util/VK","tinymce/pasteplugin/Utils"],function(a,b,c){return function(d){function e(a){var b,c=d.dom;if(b=d.fire("BeforePastePreProcess",{content:a}),b=d.fire("PastePreProcess",b),a=b.content,!b.isDefaultPrevented()){if(d.hasEventListeners("PastePostProcess")&&!b.isDefaultPrevented()){var e=c.add(d.getBody(),"div",{style:"display:none"},a);b=d.fire("PastePostProcess",{node:e}),c.remove(e),a=b.node.innerHTML}b.isDefaultPrevented()||d.insertContent(a,{merge:d.settings.paste_merge_formats!==!1})}}function f(a){a=d.dom.encode(a).replace(/\r\n/g,"\n");var b,f=d.dom.getParent(d.selection.getStart(),d.dom.isBlock),g=d.settings.forced_root_block;g&&(b=d.dom.createHTML(g,d.settings.forced_root_block_attrs),b=b.substr(0,b.length-3)+">"),f&&/^(PRE|DIV)$/.test(f.nodeName)||!g?a=c.filter(a,[[/\n/g,"<br>"]]):(a=c.filter(a,[[/\n\n/g,"</p>"+b],[/^(.*<\/p>)(<p>)$/,b+"$1"],[/\n/g,"<br />"]]),-1!=a.indexOf("<p>")&&(a=b+a)),e(a)}function g(){function b(a){var b,c,d,f=a.startContainer;if(b=a.getClientRects(),b.length)return b[0];if(a.collapsed&&1==f.nodeType){for(d=f.childNodes[s.startOffset];d&&3==d.nodeType&&!d.data.length;)d=d.nextSibling;if(d)return"BR"==d.tagName&&(c=e.doc.createTextNode("\ufeff"),d.parentNode.insertBefore(c,d),a=e.createRng(),a.setStartBefore(c),a.setEndAfter(c),b=a.getClientRects(),e.remove(c)),b.length?b[0]:void 0}}var c,e=d.dom,f=d.getBody(),g=d.dom.getViewPort(d.getWin()),h=g.y,i=20;if(s=d.selection.getRng(),d.inline&&(c=d.selection.getScrollContainer(),c&&c.scrollTop>0&&(h=c.scrollTop)),s.getClientRects){var j=b(s);if(j)i=h+(j.top-e.getPos(f).y);else{i=h;var k=s.startContainer;k&&(3==k.nodeType&&k.parentNode!=f&&(k=k.parentNode),1==k.nodeType&&(i=e.getPos(k,c||f).y))}}r=e.add(d.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: absolute; top: "+i+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},x),(a.ie||a.gecko)&&e.setStyle(r,"left","rtl"==e.getStyle(f,"direction",!0)?65535:-65535),e.bind(r,"beforedeactivate focusin focusout",function(a){a.stopPropagation()}),r.focus(),d.selection.select(r,!0)}function h(){if(r){for(var a;a=d.dom.get("mcepastebin");)d.dom.remove(a),d.dom.unbind(a);s&&d.selection.setRng(s)}r=s=null}function i(){var a,b,c,e,f="";for(a=d.dom.select("div[id=mcepastebin]"),b=0;b<a.length;b++)c=a[b],c.firstChild&&"mcepastebin"==c.firstChild.id&&(c=c.firstChild),e=c.innerHTML,f!=x&&(f+=e);return f}function j(a){var b={};if(a){if(a.getData){var c=a.getData("Text");c&&c.length>0&&(b["text/plain"]=c)}if(a.types)for(var d=0;d<a.types.length;d++){var e=a.types[d];b[e]=a.getData(e)}}return b}function k(a){return j(a.clipboardData||d.getDoc().dataTransfer)}function l(a,b){function c(c){function f(){b&&(d.selection.setRng(b),b=null),e('<img src="'+i.result+'">')}var g,h,i;if(c)for(g=0;g<c.length;g++)if(h=c[g],/^image\/(jpeg|png|gif)$/.test(h.type))return i=new FileReader,i.onload=f,i.readAsDataURL(h.getAsFile?h.getAsFile():h),a.preventDefault(),!0}var f=a.clipboardData||a.dataTransfer;return d.settings.paste_data_images&&f?c(f.items)||c(f.files):void 0}function m(a){var b=a.clipboardData;return-1!=navigator.userAgent.indexOf("Android")&&b&&b.items&&0===b.items.length}function n(a){var b,c,e=d.getDoc();if(e.caretPositionFromPoint)c=e.caretPositionFromPoint(a.clientX,a.clientY),b=e.createRange(),b.setStart(c.offsetNode,c.offset),b.collapse(!0);else if(e.caretRangeFromPoint)b=e.caretRangeFromPoint(a.clientX,a.clientY);else if(e.body.createTextRange){b=e.body.createTextRange();try{b.moveToPoint(a.clientX,a.clientY),b.collapse(!0)}catch(f){b.collapse(a.clientY<e.body.clientHeight)}}return b}function o(a,b){return b in a&&a[b].length>0}function p(a){return b.metaKeyPressed(a)&&86==a.keyCode||a.shiftKey&&45==a.keyCode}function q(){d.on("keydown",function(b){function c(a){p(a)&&!a.isDefaultPrevented()&&h()}if(p(b)&&!b.isDefaultPrevented()){if(t=b.shiftKey&&86==b.keyCode,t&&a.webkit&&-1!=navigator.userAgent.indexOf("Version/"))return;if(b.stopImmediatePropagation(),v=(new Date).getTime(),a.ie&&t)return b.preventDefault(),void d.fire("paste",{ieFake:!0});h(),g(),d.once("keyup",c),d.once("paste",function(){d.off("keyup",c)})}}),d.on("paste",function(b){var j=(new Date).getTime(),n=k(b),p=(new Date).getTime()-j,q=(new Date).getTime()-v-p<1e3,s="text"==u.pasteFormat||t;return t=!1,b.isDefaultPrevented()||m(b)?void h():l(b)?void h():(q||b.preventDefault(),!a.ie||q&&!b.ieFake||(g(),d.dom.bind(r,"paste",function(a){a.stopPropagation()}),d.getDoc().execCommand("Paste",!1,null),n["text/html"]=i()),void setTimeout(function(){var a;return o(n,"text/html")?a=n["text/html"]:(a=i(),a==x&&(s=!0)),a=c.trimHtml(a),r&&r.firstChild&&"mcepastebin"===r.firstChild.id&&(s=!0),h(),a.length||(s=!0),s&&(a=o(n,"text/plain")&&-1==a.indexOf("</p>")?n["text/plain"]:c.innerText(a)),a==x?void(q||d.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")):void(s?f(a):e(a))},0))}),d.on("dragstart dragend",function(a){w="dragstart"==a.type}),d.on("drop",function(a){var b=n(a);if(!a.isDefaultPrevented()&&!w&&!l(a,b)&&b&&d.settings.paste_filter_drop!==!1){var g=j(a.dataTransfer),h=g["mce-internal"]||g["text/html"]||g["text/plain"];h&&(a.preventDefault(),d.undoManager.transact(function(){g["mce-internal"]&&d.execCommand("Delete"),d.selection.setRng(b),h=c.trimHtml(h),g["text/html"]?e(h):f(h)}))}}),d.on("dragover dragend",function(a){var b,c=a.dataTransfer;if(d.settings.paste_data_images&&c)for(b=0;b<c.types.length;b++)if("Files"==c.types[b])return a.preventDefault(),!1})}var r,s,t,u=this,v=0,w=!1,x="%MCEPASTEBIN%";u.pasteHtml=e,u.pasteText=f,d.on("preInit",function(){q(),d.parser.addNodeFilter("img",function(b){if(!d.settings.paste_data_images)for(var c=b.length;c--;){var e=b[c].attributes.map.src;e&&/^(data:image|webkit\-fake\-url)/.test(e)&&(b[c].attr("data-mce-object")||e===a.transparentSrc||b[c].remove())}})})}}),d("tinymce/pasteplugin/WordFilter",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema","tinymce/html/Serializer","tinymce/html/Node","tinymce/pasteplugin/Utils"],function(a,b,c,d,e,f){function g(a){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(a)||/class="OutlineElement/.test(a)||/id="?docs\-internal\-guid\-/.test(a)}function h(b){var c,d;return d=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],b=b.replace(/^[\u00a0 ]+/,""),a.each(d,function(a){return a.test(b)?(c=!0,!1):void 0}),c}function i(a){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u00d8\u25CF]\s*/.test(a)}function j(j){var k=j.settings;j.on("BeforePastePreProcess",function(l){function m(a){function b(a){var c="";if(3===a.type)return a.value;if(a=a.firstChild)do c+=b(a);while(a=a.next);return c}function c(a,b){if(3===a.type&&b.test(a.value))return a.value=a.value.replace(b,""),!1;if(a=a.firstChild)do if(!c(a,b))return!1;while(a=a.next);return!0}function d(a){if(a._listIgnore)return void a.remove();if(a=a.firstChild)do d(a);while(a=a.next)}function f(a,b,f){var h=a._listLevel||k;h!=k&&(k>h?g&&(g=g.parent.parent):(j=g,g=null)),g&&g.name==b?g.append(a):(j=j||g,g=new e(b,1),f>1&&g.attr("start",""+f),a.wrap(g)),a.name="li",h>k&&j&&j.lastChild.append(g),k=h,d(a),c(a,/^\u00a0+/),c(a,/^\s*([\u2022\u00b7\u00a7\u00d8\u25CF]|\w+\.)/),c(a,/^\u00a0+/)}for(var g,j,k=1,l=[],m=a.firstChild;"undefined"!=typeof m&&null!==m;)if(l.push(m),m=m.walk(),null!==m)for(;"undefined"!=typeof m&&m.parent!==a;)m=m.walk();for(var n=0;n<l.length;n++)if(a=l[n],"p"==a.name&&a.firstChild){var o=b(a);if(i(o)){f(a,"ul");continue}if(h(o)){var p=/([0-9]+)\./.exec(o),q=1;p&&(q=parseInt(p[1],10)),f(a,"ol",q);continue}if(a._listLevel){f(a,"ul",1);continue}g=null}else j=g,g=null}function n(b,c){var d,f={},g=j.dom.parseStyle(c);return a.each(g,function(a,e){switch(e){case"mso-list":d=/\w+ \w+([0-9]+)/i.exec(c),d&&(b._listLevel=parseInt(d[1],10)),/Ignore/i.test(a)&&b.firstChild&&(b._listIgnore=!0,b.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!=a&&(f[e]=a));case"mso-element":if(/^(comment|comment-list)$/i.test(a))return void b.remove()}return 0===e.indexOf("mso-comment")?void b.remove():void(0!==e.indexOf("mso-")&&("all"==o||p&&p[e])&&(f[e]=a))}),/(bold)/i.test(f["font-weight"])&&(delete f["font-weight"],b.wrap(new e("b",1))),/(italic)/i.test(f["font-style"])&&(delete f["font-style"],b.wrap(new e("i",1))),f=j.dom.serializeStyle(f,b.name),f?f:null}var o,p,q=l.content;if(o=k.paste_retain_style_properties,o&&(p=a.makeMap(o.split(/[, ]/))),k.paste_enable_default_filters!==!1&&g(l.content)){l.wordContent=!0,q=f.filter(q,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(a,b){return b.length>0?b.replace(/./," ").slice(Math.floor(b.length/2)).split("").join("\xa0"):""}]]);var r=k.paste_word_valid_elements;r||(r="-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody");var s=new c({valid_elements:r,valid_children:"-li[p]"});a.each(s.elements,function(a){a.attributes["class"]||(a.attributes["class"]={},a.attributesOrder.push("class")),a.attributes.style||(a.attributes.style={},a.attributesOrder.push("style"))});var t=new b({},s);t.addAttributeFilter("style",function(a){for(var b,c=a.length;c--;)b=a[c],b.attr("style",n(b,b.attr("style"))),"span"==b.name&&b.parent&&!b.attributes.length&&b.unwrap()}),t.addAttributeFilter("class",function(a){for(var b,c,d=a.length;d--;)b=a[d],c=b.attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel|MsoCaption)$/i.test(c)&&b.remove(),b.attr("class",null)}),t.addNodeFilter("del",function(a){for(var b=a.length;b--;)a[b].remove()}),t.addNodeFilter("a",function(a){for(var b,c,d,e=a.length;e--;)if(b=a[e],c=b.attr("href"),d=b.attr("name"),c&&-1!=c.indexOf("#_msocom_"))b.remove();else if(c&&0===c.indexOf("file://")&&(c=c.split("#")[1],c&&(c="#"+c)),c||d){if(d&&!/^_?(?:toc|edn|ftn)/i.test(d)){b.unwrap();continue}b.attr({href:c,name:d})}else b.unwrap()});var u=t.parse(q);k.paste_convert_word_fake_lists!==!1&&m(u),l.content=new d({},s).serialize(u)}})}return j.isWordContent=g,j}),d("tinymce/pasteplugin/Quirks",["tinymce/Env","tinymce/util/Tools","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Utils"],function(a,b,c,d){return function(e){function f(a){e.on("BeforePastePreProcess",function(b){b.content=a(b.content)})}function g(a){if(!c.isWordContent(a))return a;var f=[];b.each(e.schema.getBlockElements(),function(a,b){f.push(b)});var g=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+f.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return a=d.filter(a,[[g,"$1"]]),a=d.filter(a,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function h(a){if(c.isWordContent(a))return a;var b=e.settings.paste_webkit_styles;if(e.settings.paste_remove_styles_if_webkit===!1||"all"==b)return a;if(b&&(b=b.split(/[, ]/)),b){var d=e.dom,f=e.selection.getNode();a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(a,c,e,g){var h=d.parseStyle(e,"span"),i={};if("none"===b)return c+g;for(var j=0;j<b.length;j++){var k=h[b[j]],l=d.getStyle(f,b[j],!0);/color/.test(b[j])&&(k=d.toHex(k),l=d.toHex(l)),l!=k&&(i[b[j]]=k)}return i=d.serializeStyle(i,"span"),i?c+' style="'+i+'"'+g:c+g})}else a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return a=a.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(a,b,c,d){return b+' style="'+c+'"'+d})}a.webkit&&f(h),a.ie&&f(g)}}),d("tinymce/pasteplugin/Plugin",["tinymce/PluginManager","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks"],function(a,b,c,d){var e;a.add("paste",function(a){function f(){"text"==g.pasteFormat?(this.active(!1),g.pasteFormat="html"):(g.pasteFormat="text",this.active(!0),e||(a.windowManager.alert("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off."),e=!0))}var g,h=this,i=a.settings;h.clipboard=g=new b(a),h.quirks=new d(a),h.wordFilter=new c(a),a.settings.paste_as_text&&(h.clipboard.pasteFormat="text"),i.paste_preprocess&&a.on("PastePreProcess",function(a){i.paste_preprocess.call(h,h,a)}),i.paste_postprocess&&a.on("PastePostProcess",function(a){i.paste_postprocess.call(h,h,a)}),a.addCommand("mceInsertClipboardContent",function(a,b){b.content&&h.clipboard.pasteHtml(b.content),b.text&&h.clipboard.pasteText(b.text)}),a.paste_block_drop&&a.on("dragend dragover draggesture dragdrop drop drag",function(a){a.preventDefault(),a.stopPropagation()}),a.settings.paste_data_images||a.on("drop",function(a){var b=a.dataTransfer;b&&b.files&&b.files.length>0&&a.preventDefault()}),a.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:f,active:"text"==h.clipboard.pasteFormat}),a.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:g.pasteFormat,onclick:f})})}),f(["tinymce/pasteplugin/Utils","tinymce/pasteplugin/WordFilter"])}(this);
    2  No newline at end of file
     1!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;f<a.length;++f){if(c=g[a[f]]||e(a[f]),!c)throw"module definition dependecy not found: "+a[f];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){g[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}function f(c){for(var d=0;d<c.length;d++){for(var e=a,f=c[d],h=f.split(/[.\/]/),i=0;i<h.length-1;++i)e[h[i]]===b&&(e[h[i]]={}),e=e[h[i]];e[h[h.length-1]]=g[f]}}var g={};d("tinymce/pasteplugin/Utils",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema"],function(a,b,c){function d(b,c){return a.each(c,function(a){b=a.constructor==RegExp?b.replace(a,""):b.replace(a[0],a[1])}),b}function e(e){function f(a){var b=a.name,c=a;if("br"===b)return void(i+="\n");if(j[b]&&(i+=" "),k[b])return void(i+=" ");if(3==a.type&&(i+=a.value),!a.shortEnded&&(a=a.firstChild))do f(a);while(a=a.next);l[b]&&c.next&&(i+="\n","p"==b&&(i+="\n"))}var g=new c,h=new b({},g),i="",j=g.getShortEndedElements(),k=a.makeMap("script noscript style textarea video audio iframe object"," "),l=g.getBlockElements();return e=d(e,[/<!\[[^\]]+\]>/g]),f(h.parse(e)),i}function f(a){function b(a,b,c){return b||c?"\xa0":" "}return a=d(a,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,b],/<br>$/i])}return{filter:d,innerText:e,trimHtml:f}}),d("tinymce/pasteplugin/Clipboard",["tinymce/Env","tinymce/dom/RangeUtils","tinymce/util/VK","tinymce/pasteplugin/Utils"],function(a,b,c,d){return function(e){function f(a){var b,c=e.dom;if(b=e.fire("BeforePastePreProcess",{content:a}),b=e.fire("PastePreProcess",b),a=b.content,!b.isDefaultPrevented()){if(e.hasEventListeners("PastePostProcess")&&!b.isDefaultPrevented()){var d=c.add(e.getBody(),"div",{style:"display:none"},a);b=e.fire("PastePostProcess",{node:d}),c.remove(d),a=b.node.innerHTML}b.isDefaultPrevented()||e.insertContent(a,{merge:e.settings.paste_merge_formats!==!1})}}function g(a){a=e.dom.encode(a).replace(/\r\n/g,"\n");var b,c=e.dom.getParent(e.selection.getStart(),e.dom.isBlock),g=e.settings.forced_root_block;g&&(b=e.dom.createHTML(g,e.settings.forced_root_block_attrs),b=b.substr(0,b.length-3)+">"),c&&/^(PRE|DIV)$/.test(c.nodeName)||!g?a=d.filter(a,[[/\n/g,"<br>"]]):(a=d.filter(a,[[/\n\n/g,"</p>"+b],[/^(.*<\/p>)(<p>)$/,b+"$1"],[/\n/g,"<br />"]]),-1!=a.indexOf("<p>")&&(a=b+a)),f(a)}function h(){function b(a){var b,c,e,f=a.startContainer;if(b=a.getClientRects(),b.length)return b[0];if(a.collapsed&&1==f.nodeType){for(e=f.childNodes[t.startOffset];e&&3==e.nodeType&&!e.data.length;)e=e.nextSibling;if(e)return"BR"==e.tagName&&(c=d.doc.createTextNode("\ufeff"),e.parentNode.insertBefore(c,e),a=d.createRng(),a.setStartBefore(c),a.setEndAfter(c),b=a.getClientRects(),d.remove(c)),b.length?b[0]:void 0}}var c,d=e.dom,f=e.getBody(),g=e.dom.getViewPort(e.getWin()),h=g.y,i=20;if(t=e.selection.getRng(),e.inline&&(c=e.selection.getScrollContainer(),c&&c.scrollTop>0&&(h=c.scrollTop)),t.getClientRects){var j=b(t);if(j)i=h+(j.top-d.getPos(f).y);else{i=h;var k=t.startContainer;k&&(3==k.nodeType&&k.parentNode!=f&&(k=k.parentNode),1==k.nodeType&&(i=d.getPos(k,c||f).y))}}s=d.add(e.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: absolute; top: "+i+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},y),(a.ie||a.gecko)&&d.setStyle(s,"left","rtl"==d.getStyle(f,"direction",!0)?65535:-65535),d.bind(s,"beforedeactivate focusin focusout",function(a){a.stopPropagation()}),s.focus(),e.selection.select(s,!0)}function i(){if(s){for(var a;a=e.dom.get("mcepastebin");)e.dom.remove(a),e.dom.unbind(a);t&&e.selection.setRng(t)}s=t=null}function j(){var a,b,c,d,f="";for(a=e.dom.select("div[id=mcepastebin]"),b=0;b<a.length;b++)c=a[b],c.firstChild&&"mcepastebin"==c.firstChild.id&&(c=c.firstChild),d=c.innerHTML,f!=y&&(f+=d);return f}function k(a){var b={};if(a){if(a.getData){var c=a.getData("Text");c&&c.length>0&&-1==c.indexOf(z)&&(b["text/plain"]=c)}if(a.types)for(var d=0;d<a.types.length;d++){var e=a.types[d];b[e]=a.getData(e)}}return b}function l(a){return k(a.clipboardData||e.getDoc().dataTransfer)}function m(a,b){function c(c){function d(a){b&&(e.selection.setRng(b),b=null),f('<img src="'+a.result+'">')}var g,h,i,j=!1;if(c)for(g=0;g<c.length;g++)h=c[g],/^image\/(jpeg|png|gif|bmp)$/.test(h.type)&&(i=new FileReader,i.onload=d.bind(null,i),i.readAsDataURL(h.getAsFile?h.getAsFile():h),a.preventDefault(),j=!0);return j}var d=a.clipboardData||a.dataTransfer;return e.settings.paste_data_images&&d?c(d.items)||c(d.files):void 0}function n(a){var b=a.clipboardData;return-1!=navigator.userAgent.indexOf("Android")&&b&&b.items&&0===b.items.length}function o(a){return b.getCaretRangeFromPoint(a.clientX,a.clientY,e.getDoc())}function p(a,b){return b in a&&a[b].length>0}function q(a){return c.metaKeyPressed(a)&&86==a.keyCode||a.shiftKey&&45==a.keyCode}function r(){e.on("keydown",function(b){function c(a){q(a)&&!a.isDefaultPrevented()&&i()}if(q(b)&&!b.isDefaultPrevented()){if(u=b.shiftKey&&86==b.keyCode,u&&a.webkit&&-1!=navigator.userAgent.indexOf("Version/"))return;if(b.stopImmediatePropagation(),w=(new Date).getTime(),a.ie&&u)return b.preventDefault(),void e.fire("paste",{ieFake:!0});i(),h(),e.once("keyup",c),e.once("paste",function(){e.off("keyup",c)})}}),e.on("paste",function(b){var c=(new Date).getTime(),k=l(b),o=(new Date).getTime()-c,q=(new Date).getTime()-w-o<1e3,r="text"==v.pasteFormat||u;return u=!1,b.isDefaultPrevented()||n(b)?void i():m(b)?void i():(q||b.preventDefault(),!a.ie||q&&!b.ieFake||(h(),e.dom.bind(s,"paste",function(a){a.stopPropagation()}),e.getDoc().execCommand("Paste",!1,null),k["text/html"]=j()),void setTimeout(function(){var a;return p(k,"text/html")?a=k["text/html"]:(a=j(),a==y&&(r=!0)),a=d.trimHtml(a),s&&s.firstChild&&"mcepastebin"===s.firstChild.id&&(r=!0),i(),a.length||(r=!0),r&&(a=p(k,"text/plain")&&-1==a.indexOf("</p>")?k["text/plain"]:d.innerText(a)),a==y?void(q||e.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")):void(r?g(a):f(a))},0))}),e.on("dragstart dragend",function(a){x="dragstart"==a.type}),e.on("drop",function(a){var b=o(a);if(!a.isDefaultPrevented()&&!x&&!m(a,b)&&b&&e.settings.paste_filter_drop!==!1){var c=k(a.dataTransfer),h=c["mce-internal"]||c["text/html"]||c["text/plain"];h&&(a.preventDefault(),e.undoManager.transact(function(){c["mce-internal"]&&e.execCommand("Delete"),e.selection.setRng(b),h=d.trimHtml(h),c["text/html"]?f(h):g(h)}))}}),e.on("dragover dragend",function(a){e.settings.paste_data_images&&a.preventDefault()})}var s,t,u,v=this,w=0,x=!1,y="%MCEPASTEBIN%",z="data:text/mce-internal,";v.pasteHtml=f,v.pasteText=g,e.on("preInit",function(){r(),e.parser.addNodeFilter("img",function(b){if(!e.settings.paste_data_images)for(var c=b.length;c--;){var d=b[c].attributes.map.src;d&&/^(data:image|webkit\-fake\-url)/.test(d)&&(b[c].attr("data-mce-object")||d===a.transparentSrc||b[c].remove())}})})}}),d("tinymce/pasteplugin/WordFilter",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema","tinymce/html/Serializer","tinymce/html/Node","tinymce/pasteplugin/Utils"],function(a,b,c,d,e,f){function g(a){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(a)||/class="OutlineElement/.test(a)||/id="?docs\-internal\-guid\-/.test(a)}function h(b){var c,d;return d=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],b=b.replace(/^[\u00a0 ]+/,""),a.each(d,function(a){return a.test(b)?(c=!0,!1):void 0}),c}function i(a){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(a)}function j(j){var k=j.settings;j.on("BeforePastePreProcess",function(l){function m(a){function b(a){var c="";if(3===a.type)return a.value;if(a=a.firstChild)do c+=b(a);while(a=a.next);return c}function c(a,b){if(3===a.type&&b.test(a.value))return a.value=a.value.replace(b,""),!1;if(a=a.firstChild)do if(!c(a,b))return!1;while(a=a.next);return!0}function d(a){if(a._listIgnore)return void a.remove();if(a=a.firstChild)do d(a);while(a=a.next)}function f(a,b,f){var h=a._listLevel||k;h!=k&&(k>h?g&&(g=g.parent.parent):(j=g,g=null)),g&&g.name==b?g.append(a):(j=j||g,g=new e(b,1),f>1&&g.attr("start",""+f),a.wrap(g)),a.name="li",h>k&&j&&j.lastChild.append(g),k=h,d(a),c(a,/^\u00a0+/),c(a,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),c(a,/^\u00a0+/)}for(var g,j,k=1,l=[],m=a.firstChild;"undefined"!=typeof m&&null!==m;)if(l.push(m),m=m.walk(),null!==m)for(;"undefined"!=typeof m&&m.parent!==a;)m=m.walk();for(var n=0;n<l.length;n++)if(a=l[n],"p"==a.name&&a.firstChild){var o=b(a);if(i(o)){f(a,"ul");continue}if(h(o)){var p=/([0-9]+)\./.exec(o),q=1;p&&(q=parseInt(p[1],10)),f(a,"ol",q);continue}if(a._listLevel){f(a,"ul",1);continue}g=null}else j=g,g=null}function n(b,c){var d,f={},g=j.dom.parseStyle(c);return a.each(g,function(a,e){switch(e){case"mso-list":d=/\w+ \w+([0-9]+)/i.exec(c),d&&(b._listLevel=parseInt(d[1],10)),/Ignore/i.test(a)&&b.firstChild&&(b._listIgnore=!0,b.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!=a&&(f[e]=a));case"mso-element":if(/^(comment|comment-list)$/i.test(a))return void b.remove()}return 0===e.indexOf("mso-comment")?void b.remove():void(0!==e.indexOf("mso-")&&("all"==o||p&&p[e])&&(f[e]=a))}),/(bold)/i.test(f["font-weight"])&&(delete f["font-weight"],b.wrap(new e("b",1))),/(italic)/i.test(f["font-style"])&&(delete f["font-style"],b.wrap(new e("i",1))),f=j.dom.serializeStyle(f,b.name),f?f:null}var o,p,q=l.content;if(q=q.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi,""),q=q.replace(/<br class="?Apple-interchange-newline"?>/gi,""),o=k.paste_retain_style_properties,o&&(p=a.makeMap(o.split(/[, ]/))),k.paste_enable_default_filters!==!1&&g(l.content)){l.wordContent=!0,q=f.filter(q,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(a,b){return b.length>0?b.replace(/./," ").slice(Math.floor(b.length/2)).split("").join("\xa0"):""}]]);var r=k.paste_word_valid_elements;r||(r="-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody");var s=new c({valid_elements:r,valid_children:"-li[p]"});a.each(s.elements,function(a){a.attributes["class"]||(a.attributes["class"]={},a.attributesOrder.push("class")),a.attributes.style||(a.attributes.style={},a.attributesOrder.push("style"))});var t=new b({},s);t.addAttributeFilter("style",function(a){for(var b,c=a.length;c--;)b=a[c],b.attr("style",n(b,b.attr("style"))),"span"==b.name&&b.parent&&!b.attributes.length&&b.unwrap()}),t.addAttributeFilter("class",function(a){for(var b,c,d=a.length;d--;)b=a[d],c=b.attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(c)&&b.remove(),b.attr("class",null)}),t.addNodeFilter("del",function(a){for(var b=a.length;b--;)a[b].remove()}),t.addNodeFilter("a",function(a){for(var b,c,d,e=a.length;e--;)if(b=a[e],c=b.attr("href"),d=b.attr("name"),c&&-1!=c.indexOf("#_msocom_"))b.remove();else if(c&&0===c.indexOf("file://")&&(c=c.split("#")[1],c&&(c="#"+c)),c||d){if(d&&!/^_?(?:toc|edn|ftn)/i.test(d)){b.unwrap();continue}b.attr({href:c,name:d})}else b.unwrap()});var u=t.parse(q);k.paste_convert_word_fake_lists!==!1&&m(u),l.content=new d({},s).serialize(u)}})}return j.isWordContent=g,j}),d("tinymce/pasteplugin/Quirks",["tinymce/Env","tinymce/util/Tools","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Utils"],function(a,b,c,d){return function(e){function f(a){e.on("BeforePastePreProcess",function(b){b.content=a(b.content)})}function g(a){if(!c.isWordContent(a))return a;var f=[];b.each(e.schema.getBlockElements(),function(a,b){f.push(b)});var g=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+f.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return a=d.filter(a,[[g,"$1"]]),a=d.filter(a,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function h(a){if(c.isWordContent(a))return a;var b=e.settings.paste_webkit_styles;if(e.settings.paste_remove_styles_if_webkit===!1||"all"==b)return a;if(b&&(b=b.split(/[, ]/)),b){var d=e.dom,f=e.selection.getNode();a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(a,c,e,g){var h=d.parseStyle(e,"span"),i={};if("none"===b)return c+g;for(var j=0;j<b.length;j++){var k=h[b[j]],l=d.getStyle(f,b[j],!0);/color/.test(b[j])&&(k=d.toHex(k),l=d.toHex(l)),l!=k&&(i[b[j]]=k)}return i=d.serializeStyle(i,"span"),i?c+' style="'+i+'"'+g:c+g})}else a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return a=a.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(a,b,c,d){return b+' style="'+c+'"'+d})}a.webkit&&f(h),a.ie&&f(g)}}),d("tinymce/pasteplugin/Plugin",["tinymce/PluginManager","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks"],function(a,b,c,d){var e;a.add("paste",function(a){function f(){"text"==g.pasteFormat?(this.active(!1),g.pasteFormat="html"):(g.pasteFormat="text",this.active(!0),e||(a.windowManager.alert("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off."),e=!0))}var g,h=this,i=a.settings;h.clipboard=g=new b(a),h.quirks=new d(a),h.wordFilter=new c(a),a.settings.paste_as_text&&(h.clipboard.pasteFormat="text"),i.paste_preprocess&&a.on("PastePreProcess",function(a){i.paste_preprocess.call(h,h,a)}),i.paste_postprocess&&a.on("PastePostProcess",function(a){i.paste_postprocess.call(h,h,a)}),a.addCommand("mceInsertClipboardContent",function(a,b){b.content&&h.clipboard.pasteHtml(b.content),b.text&&h.clipboard.pasteText(b.text)}),a.paste_block_drop&&a.on("dragend dragover draggesture dragdrop drop drag",function(a){a.preventDefault(),a.stopPropagation()}),a.settings.paste_data_images||a.on("drop",function(a){var b=a.dataTransfer;b&&b.files&&b.files.length>0&&a.preventDefault()}),a.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:f,active:"text"==h.clipboard.pasteFormat}),a.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:g.pasteFormat,onclick:f})})}),f(["tinymce/pasteplugin/Utils"])}(this);
     2 No newline at end of file
  • src/wp-includes/js/tinymce/plugins/tabfocus/plugin.js

     
    3636                        }
    3737
    3838                        function canSelect(el) {
    39                                 return /INPUT|TEXTAREA|BUTTON/.test(el.tagName) && tinymce.get(e.id)  && el.tabIndex != -1 && canSelectRecursive(el);
     39                                return /INPUT|TEXTAREA|BUTTON/.test(el.tagName) && tinymce.get(e.id) && el.tabIndex != -1 && canSelectRecursive(el);
    4040                        }
    4141
    4242                        each(el, function(e, i) {
  • src/wp-includes/js/tinymce/plugins/textcolor/plugin.js

     
    159159        }
    160160
    161161        function applyFormat(format, value) {
    162                 editor.focus();
    163                 editor.formatter.apply(format, {value: value});
    164                 editor.nodeChanged();
     162                editor.undoManager.transact(function() {
     163                        editor.focus();
     164                        editor.formatter.apply(format, {value: value});
     165                        editor.nodeChanged();
     166                });
    165167        }
    166168
    167169        function removeFormat(format) {
    168                 editor.focus();
    169                 editor.formatter.remove(format, {value: null}, null, true);
    170                 editor.nodeChanged();
     170                editor.undoManager.transact(function() {
     171                        editor.focus();
     172                        editor.formatter.remove(format, {value: null}, null, true);
     173                        editor.nodeChanged();
     174                });
    171175        }
    172176
    173177        function onPanelClick(e) {
     
    179183                        applyFormat(buttonCtrl.settings.format, value);
    180184                }
    181185
     186                function resetColor() {
     187                        buttonCtrl.hidePanel();
     188                        buttonCtrl.resetColor();
     189                        removeFormat(buttonCtrl.settings.format);
     190                }
     191
    182192                function setDivColor(div, value) {
    183193                        div.style.background = value;
    184194                        div.setAttribute('data-mce-color', value);
     
    225235                        this.lastId = e.target.id;
    226236
    227237                        if (value == 'transparent') {
    228                                 removeFormat(buttonCtrl.settings.format);
    229                                 buttonCtrl.hidePanel();
    230                                 return;
     238                                resetColor();
     239                        } else {
     240                                selectColor(value);
    231241                        }
    232 
    233                         selectColor(value);
    234242                } else if (value !== null) {
    235243                        buttonCtrl.hidePanel();
    236244                }
     
    241249
    242250                if (self._color) {
    243251                        applyFormat(self.settings.format, self._color);
     252                } else {
     253                        removeFormat(self.settings.format);
    244254                }
    245255        }
    246256
  • src/wp-includes/js/tinymce/plugins/textcolor/plugin.min.js

     
    1 tinymce.PluginManager.add("textcolor",function(a){function b(b){var c;return a.dom.getParents(a.selection.getStart(),function(a){var d;(d=a.style["forecolor"==b?"color":"background-color"])&&(c=d)}),c}function c(){var b,c,d=[];for(c=a.settings.textcolor_map||["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],b=0;b<c.length;b+=2)d.push({text:c[b+1],color:"#"+c[b]});return d}function d(){function b(a,b){var c="transparent"==a;return'<td class="mce-grid-cell'+(c?" mce-colorbtn-trans":"")+'"><div id="'+n+"-"+o++ +'" data-mce-color="'+(a?a:"")+'" role="option" tabIndex="-1" style="'+(a?"background-color: "+a:"")+'" title="'+tinymce.translate(b)+'">'+(c?"&#215;":"")+"</div></td>"}var d,e,f,g,h,k,l,m=this,n=m._id,o=0;for(d=c(),d.push({text:tinymce.translate("No color"),color:"transparent"}),f='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',g=d.length-1,k=0;j>k;k++){for(f+="<tr>",h=0;i>h;h++)l=k*i+h,l>g?f+="<td></td>":(e=d[l],f+=b(e.color,e.text));f+="</tr>"}if(a.settings.color_picker_callback){for(f+='<tr><td colspan="'+i+'" class="mce-custom-color-btn"><div id="'+n+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+n+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+tinymce.translate("Custom...")+"</button></div></td></tr>",f+="<tr>",h=0;i>h;h++)f+=b("","Custom color");f+="</tr>"}return f+="</tbody></table>"}function e(b,c){a.focus(),a.formatter.apply(b,{value:c}),a.nodeChanged()}function f(b){a.focus(),a.formatter.remove(b,{value:null},null,!0),a.nodeChanged()}function g(c){function d(a){j.hidePanel(),j.color(a),e(j.settings.format,a)}function g(a,b){a.style.background=b,a.setAttribute("data-mce-color",b)}var h,j=this.parent();if(tinymce.DOM.getParent(c.target,".mce-custom-color-btn")&&(j.hidePanel(),a.settings.color_picker_callback.call(a,function(a){var b,c,e,f=j.panel.getEl().getElementsByTagName("table")[0];for(b=tinymce.map(f.rows[f.rows.length-1].childNodes,function(a){return a.firstChild}),e=0;e<b.length&&(c=b[e],c.getAttribute("data-mce-color"));e++);if(e==i)for(e=0;i-1>e;e++)g(b[e],b[e+1].getAttribute("data-mce-color"));g(c,a),d(a)},b(j.settings.format))),h=c.target.getAttribute("data-mce-color")){if(this.lastId&&document.getElementById(this.lastId).setAttribute("aria-selected",!1),c.target.setAttribute("aria-selected",!0),this.lastId=c.target.id,"transparent"==h)return f(j.settings.format),void j.hidePanel();d(h)}else null!==h&&j.hidePanel()}function h(){var a=this;a._color&&e(a.settings.format,a._color)}var i,j;j=a.settings.textcolor_rows||5,i=a.settings.textcolor_cols||8,a.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{role:"application",ariaRemember:!0,html:d,onclick:g},onclick:h}),a.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{role:"application",ariaRemember:!0,html:d,onclick:g},onclick:h})});
    2  No newline at end of file
     1tinymce.PluginManager.add("textcolor",function(a){function b(b){var c;return a.dom.getParents(a.selection.getStart(),function(a){var d;(d=a.style["forecolor"==b?"color":"background-color"])&&(c=d)}),c}function c(){var b,c,d=[];for(c=a.settings.textcolor_map||["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],b=0;b<c.length;b+=2)d.push({text:c[b+1],color:"#"+c[b]});return d}function d(){function b(a,b){var c="transparent"==a;return'<td class="mce-grid-cell'+(c?" mce-colorbtn-trans":"")+'"><div id="'+n+"-"+o++ +'" data-mce-color="'+(a?a:"")+'" role="option" tabIndex="-1" style="'+(a?"background-color: "+a:"")+'" title="'+tinymce.translate(b)+'">'+(c?"&#215;":"")+"</div></td>"}var d,e,f,g,h,k,l,m=this,n=m._id,o=0;for(d=c(),d.push({text:tinymce.translate("No color"),color:"transparent"}),f='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',g=d.length-1,k=0;j>k;k++){for(f+="<tr>",h=0;i>h;h++)l=k*i+h,l>g?f+="<td></td>":(e=d[l],f+=b(e.color,e.text));f+="</tr>"}if(a.settings.color_picker_callback){for(f+='<tr><td colspan="'+i+'" class="mce-custom-color-btn"><div id="'+n+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+n+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+tinymce.translate("Custom...")+"</button></div></td></tr>",f+="<tr>",h=0;i>h;h++)f+=b("","Custom color");f+="</tr>"}return f+="</tbody></table>"}function e(b,c){a.undoManager.transact(function(){a.focus(),a.formatter.apply(b,{value:c}),a.nodeChanged()})}function f(b){a.undoManager.transact(function(){a.focus(),a.formatter.remove(b,{value:null},null,!0),a.nodeChanged()})}function g(c){function d(a){k.hidePanel(),k.color(a),e(k.settings.format,a)}function g(){k.hidePanel(),k.resetColor(),f(k.settings.format)}function h(a,b){a.style.background=b,a.setAttribute("data-mce-color",b)}var j,k=this.parent();tinymce.DOM.getParent(c.target,".mce-custom-color-btn")&&(k.hidePanel(),a.settings.color_picker_callback.call(a,function(a){var b,c,e,f=k.panel.getEl().getElementsByTagName("table")[0];for(b=tinymce.map(f.rows[f.rows.length-1].childNodes,function(a){return a.firstChild}),e=0;e<b.length&&(c=b[e],c.getAttribute("data-mce-color"));e++);if(e==i)for(e=0;i-1>e;e++)h(b[e],b[e+1].getAttribute("data-mce-color"));h(c,a),d(a)},b(k.settings.format))),j=c.target.getAttribute("data-mce-color"),j?(this.lastId&&document.getElementById(this.lastId).setAttribute("aria-selected",!1),c.target.setAttribute("aria-selected",!0),this.lastId=c.target.id,"transparent"==j?g():d(j)):null!==j&&k.hidePanel()}function h(){var a=this;a._color?e(a.settings.format,a._color):f(a.settings.format)}var i,j;j=a.settings.textcolor_rows||5,i=a.settings.textcolor_cols||8,a.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{role:"application",ariaRemember:!0,html:d,onclick:g},onclick:h}),a.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{role:"application",ariaRemember:!0,html:d,onclick:g},onclick:h})});
     2 No newline at end of file
  • src/wp-includes/js/tinymce/skins/lightgray/content.inline.min.css

     
    1 .mce-object{border:1px dotted #3A3A3A;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3A3A3A;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp{background:#AAA}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid red;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid green;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333}
    2  No newline at end of file
     1.mce-object{border:1px dotted #3A3A3A;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3A3A3A;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid red;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid green;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333}
     2 No newline at end of file
  • src/wp-includes/js/tinymce/skins/lightgray/content.min.css

     
    1 body{background-color:#FFF;color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.mce-object{border:1px dotted #3A3A3A;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3A3A3A;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp{background:#AAA}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid red;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid green;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333}
    2  No newline at end of file
     1body{background-color:#FFF;color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.mce-object{border:1px dotted #3A3A3A;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3A3A3A;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid red;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid green;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333}
     2 No newline at end of file
  • src/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.svg

    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
     
    33<svg xmlns="http://www.w3.org/2000/svg">
    44<metadata>Generated by IcoMoon</metadata>
    55<defs>
    6 <font id="tinymce-small" horiz-adv-x="512">
    7 <font-face units-per-em="512" ascent="480" descent="-32" />
    8 <missing-glyph horiz-adv-x="512" />
    9 <glyph unicode="&#x20;" d="" horiz-adv-x="256" />
    10 <glyph unicode="&#xe000;" d="M480 40v295.969l-111.969 112.031h-296.031c-22.091 0-40-17.908-40-40v-368c0-22.092 17.909-40 40-40h368c22.092 0 40 17.908 40 40zM288 384h32v-96h-32v96zM352 64h-192v127.941c0.017 0.021 0.038 0.041 0.058 0.059h191.885c0.020-0.018 0.041-0.038 0.058-0.059l-0.001-127.941zM416 64h-32v128c0 17.6-14.4 32-32 32h-192c-17.6 0-32-14.4-32-32v-128h-32v320h32v-96c0-17.6 14.4-32 32-32h160c17.6 0 32 14.4 32 32v85.505l64-64.036v-245.469z" />
    11 <glyph unicode="&#xe001;" d="M425.373 358.627l-66.746 66.745c-12.444 12.446-37.027 22.628-54.627 22.628h-208c-17.6 0-32-14.4-32-32v-384c0-17.6 14.4-32 32-32h320c17.6 0 32 14.4 32 32v272c0 17.6-10.183 42.182-22.627 54.627zM402.745 336.001c3.396-3.398 6.896-9.581 9.447-16.001h-92.192v92.193c6.42-2.55 12.602-6.050 16-9.448l66.745-66.744zM415.942 32h-319.885c-0.020 0.017-0.041 0.038-0.057 0.058v383.885c0.017 0.020 0.038 0.041 0.057 0.057h191.943v-128h128v-255.942c-0.017-0.020-0.038-0.041-0.058-0.058z" />
    12 <glyph unicode="&#xe002;" d="M512 183.771v80.458l-79.572 7.957c-4.093 15.021-10.044 29.274-17.605 42.49l52.298 63.919-56.526 56.525-63.918-52.298c-13.217 7.562-27.471 13.513-42.491 17.604l-7.957 79.574h-80.458l-7.957-79.573c-15.021-4.093-29.274-10.043-42.49-17.604l-63.919 52.297-56.525-56.525 52.298-63.918c-7.562-13.216-13.513-27.47-17.605-42.49l-79.573-7.958v-80.458l79.573-7.957c4.093-15.021 10.043-29.274 17.605-42.491l-52.298-63.918 56.524-56.524 63.919 52.298c13.216-7.562 27.47-13.514 42.49-17.605l7.958-79.574h80.458l7.957 79.572c15.021 4.093 29.274 10.044 42.491 17.605l63.918-52.298 56.524 56.524-52.298 63.918c7.562 13.217 13.514 27.471 17.605 42.49l79.574 7.96zM352 192l-64-64h-64l-64 64v64l64 64h64l64-64v-64z" />
    13 <glyph unicode="&#xe003;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM32 288h288v-64h-288zM32 96h288v-64h-288z" />
    14 <glyph unicode="&#xe004;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM128 288h256v-64h-256zM128 96h256v-64h-256z" />
    15 <glyph unicode="&#xe005;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM192 288h288v-64h-288zM192 96h288v-64h-288z" />
    16 <glyph unicode="&#xe006;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM32 288h448v-64h-448zM32 96h448v-64h-448z" />
    17 <glyph unicode="&#xe007;" d="M432.204 144.934c-23.235 23.235-53.469 34.002-80.541 31.403l-31.663 31.663 96 96c0 0 64 64 0 128l-160-160-160 160c-64-64 0-128 0-128l96-96-31.663-31.663c-27.072 2.599-57.305-8.169-80.54-31.403-37.49-37.49-42.556-93.209-11.313-124.45 31.241-31.241 86.96-26.177 124.45 11.313 23.235 23.234 34.001 53.469 31.403 80.54l31.663 31.663 31.664-31.664c-2.598-27.072 8.168-57.305 31.403-80.539 37.489-37.49 93.209-42.556 124.449-11.313 31.244 31.241 26.178 86.959-11.312 124.45zM176.562 100.711c-1.106-12.166-7.51-24.913-17.57-34.973-11.106-11.107-25.54-17.738-38.609-17.738-5.262 0-12.649 1.114-17.958 6.424-10.703 10.702-8.688 36.566 11.313 56.568 11.106 11.107 25.54 17.738 38.609 17.738 5.262 0 12.649-1.114 17.958-6.424 6.556-6.555 6.735-16.344 6.257-21.595zM256 176c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM409.576 54.424c-5.31-5.31-12.696-6.424-17.958-6.424-13.069 0-27.503 6.631-38.609 17.738-10.061 10.060-16.464 22.807-17.569 34.973-0.479 5.251-0.3 15.040 6.257 21.596 5.309 5.311 12.695 6.424 17.958 6.424 13.068 0 27.503-6.631 38.608-17.737 20.002-20.004 22.016-45.868 11.313-56.57z" />
    18 <glyph unicode="&#xe008;" d="M352 288v80c0 8.8-7.2 16-16 16h-80v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-80c-8.801 0-16-7.2-16-16v-256c0-8.8 7.199-16 16-16h112v-96h192l96 96v192h-96zM160 415.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 320v32h192v-32h-192zM352 45.255v50.745h50.745l-50.745-50.745zM416 128h-96v-96h-128v224h224v-128z" />
    19 <glyph unicode="&#xe009;" d="M444 288h-28v128h32v32h-160v-32h32v-128h-128v128h32v32h-160v-32h32v-128h-28c-19.8 0-36-16.2-36-36v-216c0-19.8 16.2-36 36-36h120c19.8 0 36 16.2 36 36v156h64v-156c0-19.8 16.2-36 36-36h120c19.8 0 36 16.2 36 36v216c0 19.8-16.2 36-36 36zM174 32h-92c-9.9 0-18 7.2-18 16s8.1 16 18 16h92c9.9 0 18-7.2 18-16s-8.1-16-18-16zM272 224h-32c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16zM430 32h-92c-9.9 0-18 7.2-18 16s8.1 16 18 16h92c9.9 0 18-7.2 18-16s-8.1-16-18-16z" />
    20 <glyph unicode="&#xe00a;" d="M192 416h288v-64h-288zM192 256h288v-64h-288zM192 96h288v-64h-288zM64 384c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM64 224c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM64 64c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32z" />
    21 <glyph unicode="&#xe00b;" d="M192 416h288v-64h-288zM192 256h288v-64h-288zM192 96h288v-64h-288zM160 215v73h-32v160h-64v-32h32v-128h-32v-32h64v-25l-64-30v-73h64v-32h-64v-32h64v-32h-64v-32h96v160h-64v25z" />
    22 <glyph unicode="&#xe00c;" d="M32 384h448v-64h-448zM192 192h288v-64h-288zM192 288h288v-64h-288zM32 96h448v-64h-448zM32 288l112-80-112-80z" />
    23 <glyph unicode="&#xe00d;" d="M32 384h448v-64h-448zM32 192h288v-64h-288zM32 288h288v-64h-288zM32 96h448v-64h-448zM480 288l-112-80 112-80z" />
    24 <glyph unicode="&#xe00e;" d="M128.214 267.637c52.9 0 95.786-45.585 95.786-101.819 0-56.232-42.886-101.818-95.786-101.818-52.901 0-95.786 45.585-95.786 101.818l-0.428 14.546c0 112.465 85.77 203.636 191.572 203.636v-58.182c-36.55 0-70.913-15.13-96.758-42.602-4.977-5.289-9.517-10.917-13.612-16.828 4.892 0.82 9.903 1.249 15.012 1.249zM384.214 267.637c52.9 0 95.786-45.585 95.786-101.819 0-56.232-42.886-101.818-95.786-101.818-52.901 0-95.786 45.585-95.786 101.818l-0.428 14.546c0 112.465 85.77 203.636 191.572 203.636v-58.182c-36.55 0-70.913-15.13-96.758-42.602-4.978-5.289-9.518-10.917-13.612-16.828 4.892 0.82 9.903 1.249 15.012 1.249z" />
    25 <glyph unicode="&#xe00f;" d="M352 0c29.5 99.5 67.453 227.633-128 223.048v-111.048l-168.001 168 168.001 168v-108.663c234.046 6.1 272-179.337 128-339.337z" />
    26 <glyph unicode="&#xe010;" d="M288 339.337v108.663l168.001-168-168.001-168v111.048c-195.453 4.585-157.5-123.548-128-223.048-144 160-106.046 345.437 128 339.337z" />
    27 <glyph unicode="&#xe011;" d="M463.637 364.892l-66.745 66.744c-10.552 10.552-24.616 16.364-39.599 16.364s-29.047-5.812-39.598-16.363l-82.746-82.745c-21.834-21.834-21.834-57.362 0-79.196l1.373-1.373 33.941 33.941-1.373 1.373c-3.066 3.066-3.066 8.247 0 11.313l82.746 82.746c2.005 2.004 4.404 2.304 5.656 2.304s3.651-0.299 5.656-2.305l66.745-66.744c3.066-3.067 3.066-8.249 0.001-11.314l-82.747-82.747c-2.004-2.004-4.403-2.304-5.655-2.304s-3.651 0.3-5.656 2.306l-1.373 1.373-33.94-33.942 1.371-1.371c10.553-10.554 24.615-16.364 39.6-16.364s29.047 5.812 39.598 16.363l82.747 82.746c21.831 21.833 21.831 57.36-0.002 79.195zM275.678 179.678l-33.941-33.941 1.373-1.373c2.004-2.004 2.305-4.403 2.305-5.655 0-1.253-0.299-3.651-2.303-5.657l-82.747-82.745c-2.005-2.005-4.405-2.305-5.657-2.305s-3.652 0.3-5.657 2.305l-66.746 66.743c-2.005 2.005-2.305 4.405-2.305 5.657s0.299 3.65 2.305 5.656l82.745 82.744c2.005 2.006 4.405 2.306 5.657 2.306s3.652-0.3 5.657-2.306l1.373-1.371 33.941 33.94-1.373 1.373c-10.552 10.552-24.615 16.363-39.598 16.363s-29.046-5.812-39.598-16.363l-82.744-82.743c-10.553-10.552-16.365-24.617-16.365-39.599s5.812-29.047 16.363-39.599l66.745-66.745c10.553-10.551 24.616-16.363 39.599-16.363s29.046 5.812 39.598 16.363l82.747 82.746c10.552 10.552 16.361 24.615 16.361 39.598s-5.812 29.047-16.363 39.598l-1.372 1.373zM176 125c-4.862 0-9.725 1.855-13.435 5.564-7.42 7.42-7.42 19.449 0 26.869l160 160c7.42 7.42 19.448 7.42 26.868 0 7.422-7.42 7.422-19.45 0-26.87l-160-160c-3.708-3.708-8.571-5.563-13.433-5.563z" />
    28 <glyph unicode="&#xe012;" d="M463.637 364.892l-66.745 66.744c-10.552 10.552-24.616 16.364-39.599 16.364s-29.047-5.812-39.598-16.363l-82.746-82.745c-21.834-21.834-21.834-57.362 0-79.196l1.373-1.373 33.941 33.941-1.373 1.373c-3.066 3.066-3.066 8.247 0 11.313l82.746 82.746c2.005 2.004 4.404 2.304 5.656 2.304s3.651-0.299 5.656-2.305l66.745-66.744c3.066-3.067 3.066-8.249 0.001-11.314l-82.747-82.747c-2.004-2.004-4.403-2.304-5.655-2.304s-3.651 0.3-5.656 2.306l-1.373 1.373-33.94-33.942 1.371-1.371c10.553-10.554 24.615-16.364 39.6-16.364s29.047 5.812 39.598 16.363l82.747 82.746c21.831 21.833 21.831 57.36-0.002 79.195zM275.678 179.678l-33.941-33.941 1.373-1.373c2.004-2.004 2.305-4.403 2.305-5.655 0-1.253-0.299-3.651-2.303-5.657l-82.747-82.745c-2.005-2.005-4.405-2.305-5.657-2.305s-3.652 0.3-5.657 2.305l-66.746 66.743c-2.005 2.005-2.305 4.405-2.305 5.657s0.299 3.65 2.305 5.656l82.745 82.744c2.005 2.006 4.405 2.306 5.657 2.306s3.652-0.3 5.657-2.306l1.373-1.371 33.941 33.94-1.373 1.373c-10.552 10.552-24.615 16.363-39.598 16.363s-29.046-5.812-39.598-16.363l-82.744-82.743c-10.553-10.552-16.365-24.617-16.365-39.599s5.812-29.047 16.363-39.599l66.745-66.745c10.553-10.551 24.616-16.363 39.599-16.363s29.046 5.812 39.598 16.363l82.747 82.746c10.552 10.552 16.361 24.615 16.361 39.598s-5.812 29.047-16.363 39.598l-1.372 1.373zM400 61c-4.862 0-9.725 1.854-13.435 5.565l-64 63.999c-7.422 7.42-7.422 19.449 0 26.869 7.42 7.422 19.448 7.422 26.868 0l64-64c7.422-7.42 7.422-19.448 0-26.868-3.708-3.711-8.571-5.565-13.433-5.565zM304 0c-8.837 0-16 7.163-16 16v64c0 8.837 7.163 16 16 16s16-7.163 16-16v-64c0-8.837-7.163-16-16-16zM464 160h-64c-8.837 0-16 7.163-16 16s7.163 16 16 16h64c8.837 0 16-7.163 16-16s-7.163-16-16-16zM112 387c4.862 0 9.725-1.854 13.435-5.565l64-64c7.421-7.42 7.421-19.449 0-26.869-7.42-7.422-19.449-7.422-26.869 0l-64 64c-7.421 7.42-7.421 19.449 0 26.869 3.709 3.711 8.572 5.565 13.434 5.565zM208 448c8.837 0 16-7.163 16-16v-64c0-8.837-7.163-16-16-16s-16 7.163-16 16v64c0 8.837 7.163 16 16 16zM48 288h64c8.837 0 16-7.163 16-16s-7.163-16-16-16h-64c-8.837 0-16 7.163-16 16s7.163 16 16 16z" />
    29 <glyph unicode="&#xe013;" d="M128 448v-448l128 128 128-128v448h-256zM352 85.255l-96 96-96-96v330.745h192v-330.745z" />
    30 <glyph unicode="&#xe014;" d="M448 416h-384c-17.6 0-32-14.4-32-32v-320c0-17.6 14.4-32 32-32h384c17.6 0 32 14.4 32 32v320c0 17.6-14.4 32-32 32zM448 64.058c-0.006-0.007-0.015-0.014-0.021-0.021l-95.979 159.963-80-64-112 144-95.984-239.958c-0.005 0.005-0.011 0.011-0.016 0.016v319.885c0.017 0.020 0.038 0.041 0.057 0.057h383.885c0.020-0.017 0.041-0.038 0.058-0.058v-319.884zM320 304c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.51-21.49 48-48 48-26.51 0-48-21.49-48-48z" />
    31 <glyph unicode="&#xe015;" d="M448 416h-384c-17.6 0-32-14.4-32-32v-320c0-17.6 14.4-32 32-32h384c17.6 0 32 14.4 32 32v320c0 17.6-14.4 32-32 32zM128 64h-64v64h64v-64zM128 192h-64v64h64v-64zM128 320h-64v64h64v-64zM352 64h-192v320h192v-320zM448 64h-64v64h64v-64zM448 192h-64v64h64v-64zM448 320h-64v64h64v-64zM192 320v-192l144 96z" />
    32 <glyph unicode="&#xe016;" d="M224 128h64v-64h-64v64zM352 352c17.673 0 32-14.327 32-32v-83l-114-77h-46v32l96 64v32h-160v64h192zM256 448c-59.833 0-116.083-23.3-158.392-65.608-42.307-42.309-65.608-98.559-65.608-158.392 0-59.832 23.301-116.084 65.608-158.392 42.309-42.308 98.559-65.608 158.392-65.608 59.832 0 116.084 23.3 158.392 65.608 42.308 42.308 65.608 98.56 65.608 158.392 0 59.833-23.3 116.083-65.608 158.392-42.308 42.308-98.56 65.608-158.392 65.608z" />
    33 <glyph unicode="&#xe017;" d="M208 128l-96 96 96 96-32 32-128-128 128-128zM336 352l-32-32 96-96-96-96 32-32 128 128z" />
    34 <glyph unicode="&#xe018;" d="M38.899 327.688l40.707-25.441c25.401 40.557 64.394 71.727 110.604 87.123l-15.183 45.547c-56.874-18.949-104.864-57.313-136.128-107.229zM336.973 434.917l-15.183-45.547c46.211-15.396 85.202-46.566 110.604-87.124l40.706 25.441c-31.263 49.917-79.253 88.281-136.127 107.23zM303.987 127.996c-2.404 0-4.846 0.545-7.143 1.693l-72.844 36.422v105.889c0 8.836 7.164 16 16 16s16-7.164 16-16v-86.111l55.155-27.578c7.903-3.951 11.107-13.562 7.155-21.466-2.802-5.607-8.454-8.848-14.323-8.849zM256 384c-106.039 0-192-85.961-192-192s85.961-192 192-192c106.039 0 192 85.961 192 192 0 106.039-85.961 192-192 192zM256 48c-79.529 0-144 64.471-144 144s64.471 144 144 144c79.529 0 144-64.471 144-144 0-79.529-64.471-144-144-144z" />
    35 <glyph unicode="&#xe019;" d="M32 252.127c22.659 24.96 48.581 46.18 76.636 62.562 45.166 26.372 96.123 40.311 147.364 40.311 51.24 0 102.198-13.939 147.363-40.312 28.056-16.382 53.978-37.602 76.637-62.562v58.716c-16.505 14.059-34.062 26.57-52.434 37.297-52.503 30.657-111.829 46.861-171.566 46.861s-119.064-16.204-171.567-46.86c-18.371-10.727-35.928-23.239-52.433-37.298v-58.715zM256 320c-91.598 0-172.919-50.278-224-128 51.081-77.724 132.402-128 224-128 91.598 0 172.919 50.276 224 128-51.081 77.722-132.402 128-224 128zM256 224c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.674 14.327 32 32 32s32-14.326 32-32zM364.033 131.669c-33.717-19.687-70.064-29.669-108.033-29.669s-74.316 9.982-108.033 29.669c-25.777 15.052-49.308 35.655-69.057 60.331 19.749 24.675 43.28 45.279 69.058 60.33 6.638 3.876 13.379 7.37 20.213 10.491-5.256-11.871-8.181-25.004-8.181-38.821 0-53.020 42.981-96 96-96 53.020 0 96 42.98 96 96 0 13.817-2.925 26.95-8.18 38.821 6.834-3.122 13.575-6.615 20.213-10.491 25.777-15.051 49.308-35.655 69.058-60.33-19.749-24.676-43.28-45.279-69.058-60.331z" />
    36 <glyph unicode="&#xe01a;" d="M325.584 338.083c-12.306 40.981-14.438 45.917-53.584 45.917h-32c-39.809 0-41.332-5.076-54.209-48 0-0.001 0-0.001-0.001-0.002l-71.999-239.998h56.818l28.8 96h113.183l28.8-96h56.815l-72.623 242.083zM218.609 256l19.2 68c5.043 16.809 18.19 15 18.19 15s13.147 1.809 18.19-15h0.002l19.2-68h-74.782z" />
    37 <glyph unicode="&#xe01b;" d="M32 384v-352h448v352h-448zM192 160v64h128v-64h-128zM320 128v-64h-128v64h128zM320 320v-64h-128v64h128zM160 320v-64h-96v64h96zM64 224h96v-64h-96v64zM352 224h96v-64h-96v64zM352 256v64h96v-64h-96zM64 128h96v-64h-96v64zM352 64v64h96v-64h-96z" />
    38 <glyph unicode="&#xe01c;" d="M32 256h448v-64h-448z" />
    39 <glyph unicode="&#xe01d;" d="M32 96h256v-64h-256v64zM384 384h-110.279l-91.883-256h-66.144l91.881 256h-111.575v64h288v-64zM464.887 32l-64.887 64.887-64.887-64.887-31.113 31.113 64.887 64.887-64.887 64.887 31.113 31.113 64.887-64.887 64.887 64.887 31.113-31.113-64.887-64.887 64.887-64.887-31.113-31.113z" />
    40 <glyph unicode="&#xe01e;" d="M384 25v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
    41 <glyph unicode="&#xe01f;" d="M384 377v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
    42 <glyph unicode="&#xe020;" d="M352 64v18.502c75.674 30.814 128 96.91 128 173.498 0 106.039-100.288 192-224 192s-224-85.961-224-192c0-76.588 52.327-142.684 128-173.498v-18.502h-96l-32 48v-112h160v111.406c-50.45 25.681-85.333 80.77-85.333 144.594 0 88.366 66.859 160 149.333 160 82.474 0 149.333-71.634 149.333-160 0-63.824-34.883-118.913-85.333-144.594v-111.406h160v112l-32-48h-96z" />
    43 <glyph unicode="&#xe021;" d="M256 410c49.683 0 96.391-19.347 131.521-54.478s54.479-81.839 54.479-131.522-19.348-96.391-54.479-131.521-81.838-54.479-131.521-54.479-96.391 19.348-131.522 54.479-54.478 81.838-54.478 131.521 19.347 96.391 54.478 131.522 81.839 54.478 131.522 54.478zM256 448c-123.712 0-224-100.288-224-224s100.288-224 224-224 224 100.288 224 224-100.288 224-224 224v0zM160 288c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM288 288c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM256 152c-50.92 0-96.28 18.437-125.583 47.164 11.563-58.804 63.389-103.164 125.583-103.164 62.194 0 114.020 44.36 125.584 103.164-29.304-28.727-74.664-47.164-125.584-47.164z" />
    44 <glyph unicode="&#xe022;" d="M128 416h256v-64h-256v64zM448 320h-384c-17.6 0-32-14.4-32-32v-128c0-17.6 14.398-32 32-32h64v-96h256v96h64c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32zM352 64h-192v128h192v-128zM455.2 272c0-12.813-10.387-23.2-23.199-23.2s-23.201 10.387-23.201 23.2 10.389 23.2 23.201 23.2c12.813 0 23.199-10.387 23.199-23.2z" />
    45 <glyph unicode="&#xe023;" d="M240 288l-96 96 64 64h-176v-176l64 64 96-96zM320 240l96 96 64-64v176h-176l64-64-96-96zM272 160l96-96-64-64h176v176l-64-64-96 96zM192 208l-96-96-64 64v-176h176l-64 64 96 96z" />
    46 <glyph unicode="&#xe024;" d="M480 416v32h-96c-17.601 0-32-14.4-32-32v-160c0-7.928 2.929-15.201 7.748-20.807l-151.748-130.193-71 74-41-35 112-144 208 224h64v32h-96v160h96zM128 224h32v192c0 17.6-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32v-192h32v96h64v-96zM64 352v64h64v-64h-64zM320 256v48c0 17.6-4.4 32-22 32 17.6 0 22 14.4 22 32v48c0 17.6-14.4 32-32 32h-96v-224h96c17.6 0 32 14.4 32 32zM224 416h64v-64h-64v64zM224 320h64v-64h-64v64z" />
    47 <glyph unicode="&#xe025;" d="M224 224h-64v64h64v64h64v-64h64v-64h-64v-64h-64v64zM480 192v-160h-448v160h64v-96h320v96h64z" />
    48 <glyph unicode="&#xe026;" d="M256 288h64v-32h-64zM256 96h64v-32h-64zM288 192h64v-32h-64zM384 192v-96h-32v-32h64v128zM192 192h64v-32h-64zM160 96h64v-32h-64zM160 288h64v-32h-64zM96 384v-128h32v96h32v32zM352 256h64v128h-32v-96h-32zM32 448v-448h448v448h-448zM448 32h-384v384h384v-384zM96 192v-128h32v96h32v32zM288 384h64v-32h-64zM192 384h64v-32h-64z" />
    49 <glyph unicode="&#xe027;" d="M408 448l8-192h-320l8 192h16l8-160h256l8 160h16zM104 0l-8 160h320l-8-160h-16l-8 128h-256l-8-128h-16zM32 224h64v-32h-64zM128 224h64v-32h-64zM224 224h64v-32h-64zM320 224h64v-32h-64zM416 224h64v-32h-64z" />
    50 <glyph unicode="&#xe028;" d="M288 448c123.712 0 224-100.288 224-224s-100.288-224-224-224v48c47.012 0 91.209 18.307 124.451 51.549 33.242 33.242 51.549 77.439 51.549 124.451 0 47.011-18.307 91.209-51.549 124.451-33.242 33.242-77.439 51.549-124.451 51.549-47.011 0-91.209-18.307-124.451-51.549-25.57-25.569-42.291-57.623-48.653-92.451h93.104l-112-128-112 128h82.285c15.53 108.551 108.869 192 221.715 192zM384 256v-64h-128v160h64v-96z" />
    51 <glyph unicode="&#xe02a;" d="M312.721 232.909c24.037 19.075 39.279 47.428 39.279 79.091 0 57.438-50.145 104-112 104h-112v-384h144c61.856 0 112 46.562 112 104 0 44.098-29.559 81.781-71.279 96.909zM192 328c0 13.255 10.745 24 24 24h33.602c21.207 0 38.398-21.49 38.398-48s-17.191-48-38.398-48h-57.602v72zM273.6 96h-57.6c-13.255 0-24 10.745-24 24v72h81.6c21.209 0 38.4-21.49 38.4-48s-17.191-48-38.4-48z" />
    52 <glyph unicode="&#xe02b;" d="M416 416v-32h-72l-128-320h72v-32h-224v32h72l128 320h-72v32h224z" />
    53 <glyph unicode="&#xe02c;" d="M96 64h288v-32h-288v32zM320 416v-192c0-15.656-7.35-30.812-20.695-42.676-15.471-13.751-36.534-21.324-59.305-21.324-22.772 0-43.834 7.573-59.304 21.324-13.346 11.864-20.696 27.020-20.696 42.676v192h-64v-192c0-70.691 64.471-128 144-128s144 57.309 144 128v192h-64z" />
    54 <glyph unicode="&#xe02d;" d="M480 224h-132.938c-25.039 17.71-57.215 27.43-91.062 27.43-44.603 0-82.286 25.121-82.286 54.856 0 29.735 37.683 54.857 82.286 54.857 37.529 0 70.154-17.788 79.56-41.143h56.508c-3.965 25.322-18.79 48.984-42.029 66.413-25.44 19.080-58.838 29.587-94.039 29.587-35.202 0-68.598-10.507-94.037-29.587-27.394-20.545-43.106-49.751-43.106-80.127s15.712-59.582 43.106-80.127c0.978-0.733 1.971-1.449 2.973-2.158h-132.936v-32h256.266c29.104-8.553 50.021-28.135 50.021-50.286 0-29.734-37.684-54.855-82.286-54.855-37.53 0-70.154 17.787-79.559 41.143h-56.508c3.965-25.32 18.791-48.984 42.030-66.413 25.438-19.082 58.834-29.59 94.036-29.59 35.201 0 68.599 10.508 94.037 29.587 27.395 20.545 43.104 49.751 43.104 80.127 0 17.649-5.327 34.896-15.147 50.286h102.006v32z" />
    55 <glyph unicode="&#xe02e;" d="M192 416c-61.856 0-112-50.144-112-112s50.144-112 112-112v-160h64v320h32v-320h64v320h64v64h-224z" />
    56 <glyph unicode="&#xe02f;" d="M224 416c-61.856 0-112-50.144-112-112s50.144-112 112-112v-160h64v320h32v-320h64v320h64v64h-224zM32 32l112 96-112 96z" />
    57 <glyph unicode="&#xe030;" d="M160 416c-61.856 0-112-50.144-112-112s50.144-112 112-112v-160h64v320h32v-320h64v320h64v64h-224zM480 224l-112-96 112-96z" />
    58 <glyph unicode="&#xe031;" d="M416 320h-96v32l-96 96h-192v-352h192v-96h288v224l-96 96zM416 274.745l50.745-50.745h-50.745v50.745zM224 402.745l50.745-50.745h-50.745v50.745zM64 416h128v-96h96v-192h-224v288zM480 32h-224v64h64v192h64v-96h96v-160z" />
    59 <glyph unicode="&#xe032;" d="M384 352h32v-32h-32zM320 288h32v-32h-32zM320 224h32v-32h-32zM320 160h32v-32h-32zM256 224h32v-32h-32zM256 160h32v-32h-32zM192 160h32v-32h-32zM384 288h32v-32h-32zM384 224h32v-32h-32zM384 160h32v-32h-32zM384 96h32v-32h-32zM320 96h32v-32h-32zM256 96h32v-32h-32zM192 96h32v-32h-32zM128 96h32v-32h-32z" />
    60 <glyph unicode="&#xe034;" d="M464 416h-208l-16 32h-176l-32-64h448zM420.17 128h43.83l16 224h-448l32-320h178.040c-52.441 18.888-90.040 69.133-90.040 128 0 74.991 61.009 136 136 136 74.99 0 136-61.009 136-136 0-10.839-1.311-21.575-3.83-32zM437.498 55.125l-67.248 55.346c8.727 14.461 13.75 31.407 13.75 49.529 0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96c18.122 0 35.069 5.023 49.529 13.75l55.346-67.248c11.481-13.339 31.059-14.070 43.503-1.626l2.746 2.746c12.444 12.444 11.713 32.022-1.626 43.503zM288 98c-34.242 0-62 27.758-62 62s27.758 62 62 62 62-27.758 62-62-27.758-62-62-62z" />
    61 <glyph unicode="&#xe035;" d="M352 288v80c0 8.8-7.2 16-16 16h-80v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-80c-8.801 0-16-7.2-16-16v-256c0-8.8 7.199-16 16-16h112v-96h288v288h-96zM160 415.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 320v32h192v-32h-192zM416 32h-224v224h224v-224zM224 224v-64h16l16 32h32v-96h-24v-32h80v32h-24v96h32l16-32h16v64z" />
     6<font id="tinymce-small" horiz-adv-x="1024">
     7<font-face units-per-em="1024" ascent="960" descent="-64" />
     8<missing-glyph horiz-adv-x="1024" />
     9<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
     10<glyph unicode="&#xe000;" d="M960 80v591.938l-223.938 224.062h-592.062c-44.182 0-80-35.816-80-80v-736c0-44.184 35.818-80 80-80h736c44.184 0 80 35.816 80 80zM576 768h64v-192h-64v192zM704 128h-384v255.882c0.034 0.042 0.076 0.082 0.116 0.118h383.77c0.040-0.036 0.082-0.076 0.116-0.118l-0.002-255.882zM832 128h-64v256c0 35.2-28.8 64-64 64h-384c-35.2 0-64-28.8-64-64v-256h-64v640h64v-192c0-35.2 28.8-64 64-64h320c35.2 0 64 28.8 64 64v171.010l128-128.072v-490.938z" />
     11<glyph unicode="&#xe001;" d="M850.746 717.254l-133.492 133.49c-24.888 24.892-74.054 45.256-109.254 45.256h-416c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v544c0 35.2-20.366 84.364-45.254 109.254zM805.49 672.002c6.792-6.796 13.792-19.162 18.894-32.002h-184.384v184.386c12.84-5.1 25.204-12.1 32-18.896l133.49-133.488zM831.884 64h-639.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h383.886v-256h256v-511.884c-0.034-0.040-0.076-0.082-0.116-0.116z" />
     12<glyph unicode="&#xe002;" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" />
     13<glyph unicode="&#xe003;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h576v-128h-576zM64 192h576v-128h-576z" />
     14<glyph unicode="&#xe004;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM256 576h512v-128h-512zM256 192h512v-128h-512z" />
     15<glyph unicode="&#xe005;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM384 576h576v-128h-576zM384 192h576v-128h-576z" />
     16<glyph unicode="&#xe006;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h896v-128h-896zM64 192h896v-128h-896z" />
     17<glyph unicode="&#xe007;" d="M864.408 289.868c-46.47 46.47-106.938 68.004-161.082 62.806l-63.326 63.326 192 192c0 0 128 128 0 256l-320-320-320 320c-128-128 0-256 0-256l192-192-63.326-63.326c-54.144 5.198-114.61-16.338-161.080-62.806-74.98-74.98-85.112-186.418-22.626-248.9 62.482-62.482 173.92-52.354 248.9 22.626 46.47 46.468 68.002 106.938 62.806 161.080l63.326 63.326 63.328-63.328c-5.196-54.144 16.336-114.61 62.806-161.078 74.978-74.98 186.418-85.112 248.898-22.626 62.488 62.482 52.356 173.918-22.624 248.9zM353.124 201.422c-2.212-24.332-15.020-49.826-35.14-69.946-22.212-22.214-51.080-35.476-77.218-35.476-10.524 0-25.298 2.228-35.916 12.848-21.406 21.404-17.376 73.132 22.626 113.136 22.212 22.214 51.080 35.476 77.218 35.476 10.524 0 25.298-2.228 35.916-12.848 13.112-13.11 13.47-32.688 12.514-43.19zM512 352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM819.152 108.848c-10.62-10.62-25.392-12.848-35.916-12.848-26.138 0-55.006 13.262-77.218 35.476-20.122 20.12-32.928 45.614-35.138 69.946-0.958 10.502-0.6 30.080 12.514 43.192 10.618 10.622 25.39 12.848 35.916 12.848 26.136 0 55.006-13.262 77.216-35.474 40.004-40.008 44.032-91.736 22.626-113.14z" />
     18<glyph unicode="&#xe008;" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h384l192 192v384h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM704 90.51v101.49h101.49l-101.49-101.49zM832 256h-192v-192h-256v448h448v-256z" />
     19<glyph unicode="&#xe009;" d="M888 576h-56v256h64v64h-320v-64h64v-256h-256v256h64v64h-320v-64h64v-256h-56c-39.6 0-72-32.4-72-72v-432c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v312h128v-312c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v432c0 39.6-32.4 72-72 72zM348 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM860 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
     20<glyph unicode="&#xe00a;" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM128 768c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 448c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 128c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" />
     21<glyph unicode="&#xe00b;" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM320 430v146h-64v320h-128v-64h64v-256h-64v-64h128v-50l-128-60v-146h128v-64h-128v-64h128v-64h-128v-64h192v320h-128v50z" />
     22<glyph unicode="&#xe00c;" d="M64 768h896v-128h-896zM384 384h576v-128h-576zM384 576h576v-128h-576zM64 192h896v-128h-896zM64 576l224-160-224-160z" />
     23<glyph unicode="&#xe00d;" d="M64 768h896v-128h-896zM64 384h576v-128h-576zM64 576h576v-128h-576zM64 192h896v-128h-896zM960 576l-224-160 224-160z" />
     24<glyph unicode="&#xe00e;" d="M256.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.954-10.578-19.034-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498zM768.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.956-10.578-19.036-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498z" />
     25<glyph unicode="&#xe00f;" d="M704 0c59 199 134.906 455.266-256 446.096v-222.096l-336.002 336 336.002 336v-217.326c468.092 12.2 544-358.674 256-678.674z" />
     26<glyph unicode="&#xe010;" d="M576 678.674v217.326l336.002-336-336.002-336v222.096c-390.906 9.17-315-247.096-256-446.096-288 320-212.092 690.874 256 678.674z" />
     27<glyph unicode="&#xe011;" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM352 250c-9.724 0-19.45 3.71-26.87 11.128-14.84 14.84-14.84 38.898 0 53.738l320 320c14.84 14.84 38.896 14.84 53.736 0 14.844-14.84 14.844-38.9 0-53.74l-320-320c-7.416-7.416-17.142-11.126-26.866-11.126z" />
     28<glyph unicode="&#xe012;" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM800 122c-9.724 0-19.45 3.708-26.87 11.13l-128 127.998c-14.844 14.84-14.844 38.898 0 53.738 14.84 14.844 38.896 14.844 53.736 0l128-128c14.844-14.84 14.844-38.896 0-53.736-7.416-7.422-17.142-11.13-26.866-11.13zM608 0c-17.674 0-32 14.326-32 32v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-128c0-17.674-14.326-32-32-32zM928 320h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32h128c17.674 0 32-14.326 32-32s-14.326-32-32-32zM224 774c9.724 0 19.45-3.708 26.87-11.13l128-128c14.842-14.84 14.842-38.898 0-53.738-14.84-14.844-38.898-14.844-53.738 0l-128 128c-14.842 14.84-14.842 38.898 0 53.738 7.418 7.422 17.144 11.13 26.868 11.13zM416 896c17.674 0 32-14.326 32-32v-128c0-17.674-14.326-32-32-32s-32 14.326-32 32v128c0 17.674 14.326 32 32 32zM96 576h128c17.674 0 32-14.326 32-32s-14.326-32-32-32h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32z" />
     29<glyph unicode="&#xe013;" d="M256 896v-896l256 256 256-256v896h-512zM704 170.51l-192 192-192-192v661.49h384v-661.49z" />
     30<glyph unicode="&#xe014;" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM896 128.116c-0.012-0.014-0.030-0.028-0.042-0.042l-191.958 319.926-160-128-224 288-191.968-479.916c-0.010 0.010-0.022 0.022-0.032 0.032v639.77c0.034 0.040 0.076 0.082 0.114 0.114h767.77c0.040-0.034 0.082-0.076 0.116-0.116v-639.768zM640 608c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96z" />
     31<glyph unicode="&#xe015;" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM256 128h-128v128h128v-128zM256 384h-128v128h128v-128zM256 640h-128v128h128v-128zM704 128h-384v640h384v-640zM896 128h-128v128h128v-128zM896 384h-128v128h128v-128zM896 640h-128v128h128v-128zM384 640v-384l288 192z" />
     32<glyph unicode="&#xe016;" d="M448 256h128v-128h-128v128zM704 704c35.346 0 64-28.654 64-64v-166l-228-154h-92v64l192 128v64h-320v128h384zM512 896c-119.666 0-232.166-46.6-316.784-131.216-84.614-84.618-131.216-197.118-131.216-316.784 0-119.664 46.602-232.168 131.216-316.784 84.618-84.616 197.118-131.216 316.784-131.216 119.664 0 232.168 46.6 316.784 131.216s131.216 197.12 131.216 316.784c0 119.666-46.6 232.166-131.216 316.784-84.616 84.616-197.12 131.216-316.784 131.216z" />
     33<glyph unicode="&#xe017;" d="M416 256l-192 192 192 192-64 64-256-256 256-256zM672 704l-64-64 192-192-192-192 64-64 256 256z" />
     34<glyph unicode="&#xe018;" d="M77.798 655.376l81.414-50.882c50.802 81.114 128.788 143.454 221.208 174.246l-30.366 91.094c-113.748-37.898-209.728-114.626-272.256-214.458zM673.946 869.834l-30.366-91.094c92.422-30.792 170.404-93.132 221.208-174.248l81.412 50.882c-62.526 99.834-158.506 176.562-272.254 214.46zM607.974 255.992c-4.808 0-9.692 1.090-14.286 3.386l-145.688 72.844v211.778c0 17.672 14.328 32 32 32s32-14.328 32-32v-172.222l110.31-55.156c15.806-7.902 22.214-27.124 14.31-42.932-5.604-11.214-16.908-17.696-28.646-17.698zM512 768c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM512 96c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.058 0 288-128.942 288-288s-128.942-288-288-288z" />
     35<glyph unicode="&#xe019;" d="M64 504.254c45.318 49.92 97.162 92.36 153.272 125.124 90.332 52.744 192.246 80.622 294.728 80.622 102.48 0 204.396-27.878 294.726-80.624 56.112-32.764 107.956-75.204 153.274-125.124v117.432c-33.010 28.118-68.124 53.14-104.868 74.594-105.006 61.314-223.658 93.722-343.132 93.722s-238.128-32.408-343.134-93.72c-36.742-21.454-71.856-46.478-104.866-74.596v-117.43zM512 640c-183.196 0-345.838-100.556-448-256 102.162-155.448 264.804-256 448-256s345.838 100.552 448 256c-102.162 155.444-264.804 256-448 256zM512 448c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.348 28.654 64 64 64s64-28.652 64-64zM728.066 263.338c-67.434-39.374-140.128-59.338-216.066-59.338s-148.632 19.964-216.066 59.338c-51.554 30.104-98.616 71.31-138.114 120.662 39.498 49.35 86.56 90.558 138.116 120.66 13.276 7.752 26.758 14.74 40.426 20.982-10.512-23.742-16.362-50.008-16.362-77.642 0-106.040 85.962-192 192-192 106.040 0 192 85.96 192 192 0 27.634-5.85 53.9-16.36 77.642 13.668-6.244 27.15-13.23 40.426-20.982 51.554-30.102 98.616-71.31 138.116-120.66-39.498-49.352-86.56-90.558-138.116-120.662z" />
     36<glyph unicode="&#xe01a;" d="M651.168 676.166c-24.612 81.962-28.876 91.834-107.168 91.834h-64c-79.618 0-82.664-10.152-108.418-96 0-0.002 0-0.002-0.002-0.004l-143.998-479.996h113.636l57.6 192h226.366l57.6-192h113.63l-145.246 484.166zM437.218 512l38.4 136c10.086 33.618 36.38 30 36.38 30s26.294 3.618 36.38-30h0.004l38.4-136h-149.564z" />
     37<glyph unicode="&#xe01b;" d="M64 768v-704h896v704h-896zM384 320v128h256v-128h-256zM640 256v-128h-256v128h256zM640 640v-128h-256v128h256zM320 640v-128h-192v128h192zM128 448h192v-128h-192v128zM704 448h192v-128h-192v128zM704 512v128h192v-128h-192zM128 256h192v-128h-192v128zM704 128v128h192v-128h-192z" />
     38<glyph unicode="&#xe01c;" d="M64 512h896v-128h-896z" />
     39<glyph unicode="&#xe01d;" d="M64 192h512v-128h-512v128zM768 768h-220.558l-183.766-512h-132.288l183.762 512h-223.15v128h576v-128zM929.774 64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774-62.226-62.226z" />
     40<glyph unicode="&#xe01e;" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
     41<glyph unicode="&#xe01f;" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
     42<glyph unicode="&#xe020;" d="M704 128v37.004c151.348 61.628 256 193.82 256 346.996 0 212.078-200.576 384-448 384s-448-171.922-448-384c0-153.176 104.654-285.368 256-346.996v-37.004h-192l-64 96v-224h320v222.812c-100.9 51.362-170.666 161.54-170.666 289.188 0 176.732 133.718 320 298.666 320s298.666-143.268 298.666-320c0-127.648-69.766-237.826-170.666-289.188v-222.812h320v224l-64-96h-192z" />
     43<glyph unicode="&#xe021;" d="M512 820c99.366 0 192.782-38.694 263.042-108.956s108.958-163.678 108.958-263.044-38.696-192.782-108.958-263.042-163.676-108.958-263.042-108.958-192.782 38.696-263.044 108.958-108.956 163.676-108.956 263.042 38.694 192.782 108.956 263.044 163.678 108.956 263.044 108.956zM512 896c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448v0zM320 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM576 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM512 304c-101.84 0-192.56 36.874-251.166 94.328 23.126-117.608 126.778-206.328 251.166-206.328s228.040 88.72 251.168 206.328c-58.608-57.454-149.328-94.328-251.168-94.328z" />
     44<glyph unicode="&#xe022;" d="M256 832h512v-128h-512v128zM896 640h-768c-35.2 0-64-28.8-64-64v-256c0-35.2 28.796-64 64-64h128v-192h512v192h128c35.2 0 64 28.8 64 64v256c0 35.2-28.8 64-64 64zM704 128h-384v256h384v-256zM910.4 544c0-25.626-20.774-46.4-46.398-46.4s-46.402 20.774-46.402 46.4 20.778 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
     45<glyph unicode="&#xe023;" d="M480 576l-192 192 128 128h-352v-352l128 128 192-192zM640 480l192 192 128-128v352h-352l128-128-192-192zM544 320l192-192-128-128h352v352l-128-128-192 192zM384 416l-192-192-128 128v-352h352l-128 128 192 192z" />
     46<glyph unicode="&#xe024;" d="M960 832v64h-192c-35.202 0-64-28.8-64-64v-320c0-15.856 5.858-30.402 15.496-41.614l-303.496-260.386-142 148-82-70 224-288 416 448h128v64h-192v320h192zM256 448h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192h128v-192zM128 704v128h128v-128h-128zM640 512v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64zM448 832h128v-128h-128v128zM448 640h128v-128h-128v128z" />
     47<glyph unicode="&#xe025;" d="M448 448h-128v128h128v128h128v-128h128v-128h-128v-128h-128v128zM960 384v-320h-896v320h128v-192h640v192h128z" />
     48<glyph unicode="&#xe026;" d="M512 576h128v-64h-128zM512 192h128v-64h-128zM576 384h128v-64h-128zM768 384v-192h-64v-64h128v256zM384 384h128v-64h-128zM320 192h128v-64h-128zM320 576h128v-64h-128zM192 768v-256h64v192h64v64zM704 512h128v256h-64v-192h-64zM64 896v-896h896v896h-896zM896 64h-768v768h768v-768zM192 384v-256h64v192h64v64zM576 768h128v-64h-128zM384 768h128v-64h-128z" />
     49<glyph unicode="&#xe027;" d="M816 896l16-384h-640l16 384h32l16-320h512l16 320h32zM208 0l-16 320h640l-16-320h-32l-16 256h-512l-16-256h-32zM64 448h128v-64h-128zM256 448h128v-64h-128zM448 448h128v-64h-128zM640 448h128v-64h-128zM832 448h128v-64h-128z" />
     50<glyph unicode="&#xe028;" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" />
     51<glyph unicode="&#xe02a;" d="M625.442 465.818c48.074 38.15 78.558 94.856 78.558 158.182 0 114.876-100.29 208-224 208h-224v-768h288c123.712 0 224 93.124 224 208 0 88.196-59.118 163.562-142.558 193.818zM384 656c0 26.51 21.49 48 48 48h67.204c42.414 0 76.796-42.98 76.796-96s-34.382-96-76.796-96h-115.204v144zM547.2 192h-115.2c-26.51 0-48 21.49-48 48v144h163.2c42.418 0 76.8-42.98 76.8-96s-34.382-96-76.8-96z" />
     52<glyph unicode="&#xe02b;" d="M832 832v-64h-144l-256-640h144v-64h-448v64h144l256 640h-144v64h448z" />
     53<glyph unicode="&#xe02c;" d="M192 128h576v-64h-576v64zM640 832v-384c0-31.312-14.7-61.624-41.39-85.352-30.942-27.502-73.068-42.648-118.61-42.648-45.544 0-87.668 15.146-118.608 42.648-26.692 23.728-41.392 54.040-41.392 85.352v384h-128v-384c0-141.382 128.942-256 288-256s288 114.618 288 256v384h-128z" />
     54<glyph unicode="&#xe02d;" d="M960 448h-265.876c-50.078 35.42-114.43 54.86-182.124 54.86-89.206 0-164.572 50.242-164.572 109.712s75.366 109.714 164.572 109.714c75.058 0 140.308-35.576 159.12-82.286h113.016c-7.93 50.644-37.58 97.968-84.058 132.826-50.88 38.16-117.676 59.174-188.078 59.174-70.404 0-137.196-21.014-188.074-59.174-54.788-41.090-86.212-99.502-86.212-160.254s31.424-119.164 86.212-160.254c1.956-1.466 3.942-2.898 5.946-4.316h-265.872v-64h512.532c58.208-17.106 100.042-56.27 100.042-100.572 0-59.468-75.368-109.71-164.572-109.71-75.060 0-140.308 35.574-159.118 82.286h-113.016c7.93-50.64 37.582-97.968 84.060-132.826 50.876-38.164 117.668-59.18 188.072-59.18 70.402 0 137.198 21.016 188.074 59.174 54.79 41.090 86.208 99.502 86.208 160.254 0 35.298-10.654 69.792-30.294 100.572h204.012v64z" />
     55<glyph unicode="&#xe02e;" d="M384 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448z" />
     56<glyph unicode="&#xe02f;" d="M448 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM64 64l224 192-224 192z" />
     57<glyph unicode="&#xe030;" d="M320 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM960 448l-224-192 224-192z" />
     58<glyph unicode="&#xe031;" d="M832 640h-192v64l-192 192h-384v-704h384v-192h576v448l-192 192zM832 549.49l101.49-101.49h-101.49v101.49zM448 805.49l101.49-101.49h-101.49v101.49zM128 832h256v-192h192v-384h-448v576zM960 64h-448v128h128v384h128v-192h192v-320z" />
     59<glyph unicode="&#xe032;" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
     60<glyph unicode="&#xe034;" d="M928 832h-416l-32 64h-352l-64-128h896zM840.34 256h87.66l32 448h-896l64-640h356.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM874.996 110.25l-134.496 110.692c17.454 28.922 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l110.692-134.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM576 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" />
     61<glyph unicode="&#xe035;" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h576v576h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM832 64h-448v448h448v-448zM448 448v-128h32l32 64h64v-192h-48v-64h160v64h-48v192h64l32-64h32v128z" />
    6262</font></defs></svg>
     63 No newline at end of file
  • src/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.svg

    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
     
    33<svg xmlns="http://www.w3.org/2000/svg">
    44<metadata>Generated by IcoMoon</metadata>
    55<defs>
    6 <font id="tinymce" horiz-adv-x="512">
    7 <font-face units-per-em="512" ascent="480" descent="-32" />
    8 <missing-glyph horiz-adv-x="512" />
    9 <glyph unicode="&#x20;" d="" horiz-adv-x="256" />
    10 <glyph unicode="&#xe000;" d="M448 480h-448v-512h512v448l-64 64zM256 416h64v-128h-64v128zM448 32h-384v384h32v-160h288v160h37.489l26.511-26.509v-357.491z" />
    11 <glyph unicode="&#xe001;" d="M451.716 380.285l-71.432 71.431c-15.556 15.556-46.284 28.284-68.284 28.284h-240c-22 0-40-18-40-40v-432c0-22 18-40 40-40h368c22 0 40 18 40 40v304c0 22-12.728 52.729-28.284 68.285zM429.089 357.657c1.565-1.565 3.125-3.487 4.64-5.657h-81.729v81.728c2.17-1.515 4.092-3.075 5.657-4.64l71.432-71.431zM448 8c0-4.336-3.664-8-8-8h-368c-4.336 0-8 3.664-8 8v432c0 4.336 3.664 8 8 8h240c2.416 0 5.127-0.305 8-0.852v-127.148h127.148c0.547-2.873 0.852-5.583 0.852-8v-304z" />
    12 <glyph unicode="&#xe002;" d="M512 183.771v80.458l-79.572 7.957c-4.093 15.021-10.044 29.274-17.605 42.49l52.298 63.919-56.526 56.525-63.918-52.298c-13.217 7.562-27.471 13.513-42.491 17.604l-7.957 79.574h-80.458l-7.957-79.573c-15.021-4.093-29.274-10.043-42.49-17.604l-63.919 52.297-56.525-56.525 52.298-63.918c-7.562-13.216-13.513-27.47-17.605-42.49l-79.573-7.958v-80.458l79.573-7.957c4.093-15.021 10.043-29.274 17.605-42.491l-52.298-63.918 56.524-56.524 63.919 52.298c13.216-7.562 27.47-13.514 42.49-17.605l7.958-79.574h80.458l7.957 79.572c15.021 4.093 29.274 10.044 42.491 17.605l63.918-52.298 56.524 56.524-52.298 63.918c7.562 13.217 13.514 27.471 17.605 42.49l79.574 7.96zM352 192l-64-64h-64l-64 64v64l64 64h64l64-64v-64z" />
    13 <glyph unicode="&#xe003;" d="M0 448h512v-64h-512zM0 352h320v-64h-320zM0 160h320v-64h-320zM0 256h512v-64h-512zM0 64h512v-64h-512z" />
    14 <glyph unicode="&#xe004;" d="M0 448h512v-64h-512zM96 352h320v-64h-320zM96 160h320v-64h-320zM0 256h512v-64h-512zM0 64h512v-64h-512z" />
    15 <glyph unicode="&#xe005;" d="M0 448h512v-64h-512zM192 352h320v-64h-320zM192 160h320v-64h-320zM0 256h512v-64h-512zM0 64h512v-64h-512z" />
    16 <glyph unicode="&#xe006;" d="M0 448h512v-64h-512zM0 352h512v-64h-512zM0 256h512v-64h-512zM0 160h512v-64h-512zM0 64h512v-64h-512z" />
    17 <glyph unicode="&#xe007;" d="M445.387 125.423c-22.827 22.778-51.864 34.536-78.973 34.536h-14.556l-31.952 32.004 127.81 128.019c31.952 32.005 31.952 96.014 0 128.019l-191.715-192.028-191.716 192.027c-31.952-32.004-31.952-96.014 0-128.019l127.811-128.017-31.953-32.004h-14.557c-27.11 0-56.146-11.759-78.974-34.538-40.811-40.721-46.325-101.242-12.315-135.175 14.985-14.951 35.144-22.247 56.498-22.247 27.108 0 56.145 11.757 78.973 34.536 26.792 26.732 38.371 62 33.542 92.674l32.692 32.744 32.688-32.744c-4.828-30.674 6.753-65.941 33.542-92.674 22.831-22.779 51.866-34.536 78.974-34.536 21.354 0 41.512 7.296 56.497 22.248 34.010 33.933 28.494 94.454-12.316 135.175zM176.512 57.231c-3.849-8.941-9.505-17.173-16.813-24.463-7.318-7.302-15.586-12.959-24.574-16.812-8.066-3.458-16.48-5.284-24.331-5.284-7.573 0-18.306 1.701-26.431 9.806-8.068 8.052-9.76 18.659-9.76 26.144 0 7.771 1.821 16.105 5.263 24.106 3.85 8.942 9.507 17.173 16.813 24.463 7.317 7.303 15.586 12.957 24.575 16.812 8.067 3.457 16.48 5.284 24.332 5.284 7.573 0 18.306-1.7 26.429-9.807 8.067-8.049 9.761-18.658 9.761-26.142 0.001-7.771-1.819-16.108-5.264-24.107zM256.002 146.702c-24.957 0-45.188 20.266-45.188 45.263 0 24.996 20.231 45.26 45.188 45.26s45.186-20.264 45.186-45.26c0-24.999-20.23-45.263-45.186-45.263zM427.636 20.479c-8.124-8.104-18.856-9.806-26.43-9.806-7.852 0-16.265 1.826-24.333 5.284-8.986 3.853-17.254 9.51-24.571 16.812-7.307 7.29-12.963 15.521-16.813 24.463-3.443 7.999-5.263 16.336-5.263 24.106 0 7.483 1.692 18.094 9.76 26.143 8.123 8.104 18.856 9.807 26.43 9.807 7.85 0 16.265-1.827 24.33-5.284 8.989-3.854 17.258-9.509 24.575-16.812 7.305-7.29 12.962-15.521 16.813-24.463 3.442-7.999 5.263-16.335 5.263-24.106-0.001-7.485-1.695-18.093-9.761-26.144z" />
    18 <glyph unicode="&#xe008;" d="M416 320v80c0 8.8-7.2 16-16 16h-112v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-112c-8.801 0-16-7.2-16-16v-320c0-8.8 7.199-16 16-16h144v-96h224l96 96v256h-96zM192 447.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 352v32h256v-32h-256zM416 13.255v50.745h50.745l-50.745-50.745zM480 96h-96v-96h-160v288h256v-192z" />
    19 <glyph unicode="&#xe009;" d="M32 480h192v-32h-192zM288 480h192v-32h-192zM476 320h-28v128h-128v-128h-128v128h-128v-128h-28c-19.8 0-36-16.2-36-36v-280c0-19.8 16.2-36 36-36h152c19.8 0 36 16.2 36 36v188h64v-188c0-19.8 16.2-36 36-36h152c19.8 0 36 16.2 36 36v280c0 19.8-16.2 36-36 36zM174 0h-124c-9.9 0-18 7.2-18 16s8.1 16 18 16h124c9.9 0 18-7.2 18-16s-8.1-16-18-16zM272 224h-32c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16zM462 0h-124c-9.9 0-18 7.2-18 16s8.1 16 18 16h124c9.9 0 18-7.2 18-16s-8.1-16-18-16z" />
    20 <glyph unicode="&#xe00a;" d="M192 448h320v-64h-320v64zM192 256h320v-64h-320v64zM192 64h320v-64h-320v64zM0 416c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM0 224c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM0 32c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64z" />
    21 <glyph unicode="&#xe00b;" d="M192 64h320v-64h-320zM192 256h320v-64h-320zM192 448h320v-64h-320zM96 480v-128h-32v96h-32v32zM64 217v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM128 128v-160h-96v32h64v32h-64v32h64v32h-64v32z" />
    22 <glyph unicode="&#xe00c;" d="M0 448h512v-64h-512zM192 352h320v-64h-320zM192 256h320v-64h-320zM192 160h320v-64h-320zM0 64h512v-64h-512zM0 128v192l128-96z" />
    23 <glyph unicode="&#xe00d;" d="M0 448h512v-64h-512zM192 352h320v-64h-320zM192 256h320v-64h-320zM192 160h320v-64h-320zM0 64h512v-64h-512zM128 320v-192l-128 96z" />
    24 <glyph unicode="&#xe00e;" d="M112.5 256c61.856 0 112-50.145 112-112 0-61.856-50.144-112-112-112-61.856 0-112 50.144-112 112l-0.5 16c0 123.712 100.288 224 224 224v-64c-42.737 0-82.917-16.643-113.137-46.863-5.817-5.818-11.126-12.008-15.915-18.51 5.719 0.9 11.58 1.373 17.552 1.373zM400.5 256c61.855 0 112-50.145 112-112 0-61.856-50.145-112-112-112-61.855 0-112 50.144-112 112l-0.5 16c0 123.712 100.288 224 224 224v-64c-42.737 0-82.917-16.643-113.137-46.863-5.818-5.818-11.127-12.008-15.916-18.51 5.72 0.9 11.58 1.373 17.553 1.373z" />
    25 <glyph unicode="&#xe00f;" d="M380.931-32c56.863 103.016 66.444 260.153-156.931 254.912v-126.912l-192 192 192 192v-124.186c267.481 6.971 297.285-236.107 156.931-387.814z" />
    26 <glyph unicode="&#xe010;" d="M288 355.814v124.186l192-192-192-192v126.912c-223.375 5.241-213.794-151.896-156.93-254.912-140.356 151.707-110.55 394.785 156.93 387.814z" />
    27 <glyph unicode="&#xe011;" d="M160 128c8.8-8.8 23.637-8.363 32.971 0.971l158.059 158.058c9.334 9.334 9.77 24.171 0.97 32.971s-23.637 8.363-32.971-0.971l-158.058-158.058c-9.334-9.334-9.771-24.171-0.971-32.971zM238.444 142.444c2.28-4.525 3.495-9.58 3.495-14.848 0-8.808-3.372-17.030-9.496-23.154l-81.691-81.691c-6.124-6.124-14.347-9.496-23.154-9.496s-17.030 3.372-23.154 9.496l-49.691 49.691c-6.124 6.124-9.496 14.347-9.496 23.154s3.372 17.030 9.496 23.154l81.691 81.691c6.124 6.124 14.347 9.497 23.154 9.497 5.268 0 10.322-1.215 14.848-3.495l32.669 32.669c-13.935 10.705-30.72 16.080-47.517 16.080-19.993 0-39.986-7.583-55.154-22.751l-81.691-81.691c-30.335-30.335-30.335-79.974 0-110.309l49.691-49.691c15.167-15.166 35.16-22.75 55.153-22.75 19.994 0 39.987 7.584 55.154 22.751l81.691 81.691c27.91 27.91 30.119 72.149 6.672 102.672l-32.67-32.67zM489.249 407.558l-49.691 49.691c-15.167 15.168-35.16 22.751-55.154 22.751-19.993 0-39.986-7.583-55.154-22.751l-81.691-81.691c-27.91-27.91-30.119-72.149-6.671-102.671l32.669 32.67c-2.279 4.525-3.494 9.58-3.494 14.847 0 8.808 3.372 17.030 9.496 23.154l81.691 81.691c6.124 6.124 14.347 9.497 23.154 9.497s17.030-3.373 23.154-9.497l49.691-49.691c6.124-6.124 9.496-14.347 9.496-23.154s-3.372-17.030-9.496-23.154l-81.691-81.691c-6.124-6.124-14.347-9.496-23.154-9.496-5.268 0-10.322 1.215-14.848 3.495l-32.669-32.669c13.936-10.705 30.72-16.080 47.517-16.080 19.994 0 39.987 7.584 55.154 22.751l81.691 81.691c30.335 30.333 30.335 79.972 0 110.307z" />
    28 <glyph unicode="&#xe012;" d="M238.444 142.443c2.28-4.524 3.495-9.579 3.495-14.848 0-8.808-3.372-17.029-9.496-23.154l-81.69-81.69c-6.124-6.124-14.348-9.496-23.154-9.496s-17.030 3.372-23.154 9.496l-49.69 49.69c-6.124 6.125-9.496 14.348-9.496 23.154s3.372 17.030 9.496 23.154l81.69 81.691c6.124 6.123 14.348 9.496 23.154 9.496 5.269 0 10.322-1.215 14.848-3.494l32.669 32.668c-13.935 10.705-30.72 16.080-47.517 16.080-19.993 0-39.986-7.583-55.154-22.751l-81.69-81.691c-30.335-30.335-30.335-79.975 0-110.309l49.69-49.691c15.167-15.166 35.16-22.75 55.153-22.75 19.994 0 39.987 7.584 55.154 22.751l81.69 81.69c27.91 27.91 30.119 72.149 6.672 102.673l-32.67-32.669zM489.248 407.558l-49.69 49.691c-15.167 15.168-35.16 22.751-55.154 22.751-19.993 0-39.985-7.583-55.153-22.751l-81.691-81.691c-27.91-27.91-30.119-72.149-6.671-102.671l32.669 32.67c-2.279 4.525-3.494 9.58-3.494 14.847 0 8.808 3.372 17.030 9.496 23.154l81.691 81.691c6.123 6.124 14.347 9.497 23.153 9.497 8.808 0 17.030-3.373 23.154-9.497l49.69-49.691c6.124-6.124 9.496-14.347 9.496-23.154s-3.372-17.030-9.496-23.154l-81.69-81.691c-6.124-6.124-14.347-9.496-23.154-9.496-5.268 0-10.322 1.215-14.848 3.495l-32.669-32.669c13.936-10.705 30.72-16.080 47.517-16.080 19.994 0 39.987 7.584 55.154 22.752l81.69 81.69c30.336 30.333 30.336 79.972 0 110.307zM116.684 340.688l-95.997 95.997 22.628 22.628 95.997-95.997zM192 480h32v-96h-32zM0 288h96v-32h-96zM395.316 107.312l95.998-95.998-22.628-22.628-95.998 95.998zM288 64h32v-96h-32zM416 192h96v-32h-96z" />
    29 <glyph unicode="&#xe013;" d="M96 480v-512l160 160 160-160v512h-320zM384 45.255l-128 128-128-128v402.745h256v-402.745z" />
    30 <glyph unicode="&#xe014;" d="M0 416v-416h512v416h-512zM480 32h-448v352h448v-352zM352 304c0 26.51 21.49 48 48 48s48-21.49 48-48c0-26.51-21.49-48-48-48-26.51 0-48 21.49-48 48zM448 64h-384l96 256 128-160 64 48z" />
    31 <glyph unicode="&#xe015;" d="M0 416v-384h512v384h-512zM96 64h-64v64h64v-64zM96 192h-64v64h64v-64zM96 320h-64v64h64v-64zM384 64h-256v320h256v-320zM480 64h-64v64h64v-64zM480 192h-64v64h64v-64zM480 320h-64v64h64v-64zM192 320v-192l128 96z" />
    32 <glyph unicode="&#xe016;" d="M224 128h64v-64h-64zM352 352c17.673 0 32-14.327 32-32v-96l-96-64h-64v32l96 64v32h-160v64h192zM256 432c-55.559 0-107.792-21.636-147.078-60.922s-60.922-91.519-60.922-147.078c0-55.559 21.636-107.792 60.922-147.078 39.286-39.286 91.519-60.922 147.078-60.922 55.559 0 107.792 21.636 147.078 60.922 39.286 39.286 60.922 91.519 60.922 147.078 0 55.559-21.636 107.792-60.922 147.078-39.286 39.286-91.519 60.922-147.078 60.922zM256 480v0c141.385 0 256-114.615 256-256s-114.615-256-256-256c-141.385 0-256 114.615-256 256 0 141.385 114.615 256 256 256z" />
    33 <glyph unicode="&#xe017;" d="M160 352l-128-128 128-128h64l-128 128 128 128zM352 352h-64l128-128-128-128h64l128 128z" />
    34 <glyph unicode="&#xe018;" d="M256 384c-106.038 0-192-85.961-192-192s85.961-192 192-192c106.037 0 192 85.961 192 192s-85.963 192-192 192zM357.822 90.177c-27.196-27.198-63.358-42.177-101.822-42.177s-74.625 14.979-101.823 42.177c-27.198 27.197-42.177 63.359-42.177 101.823s14.979 74.625 42.177 101.823c27.198 27.198 63.359 42.177 101.823 42.177s74.626-14.979 101.821-42.177c27.201-27.198 42.179-63.359 42.179-101.823s-14.979-74.626-42.178-101.823zM162.965 378.069l-21.47 42.939c-49.437-24.768-89.735-65.066-114.503-114.504l42.938-21.47c20.124 40.168 52.866 72.911 93.035 93.035zM442.067 285.035l42.939 21.469c-24.766 49.438-65.063 89.736-114.502 114.504l-21.472-42.939c40.169-20.124 72.912-52.866 93.035-93.034zM256 288h-32v-96c0-5.055 2.35-9.555 6.011-12.486l-0.006-0.008 80-64 19.988 24.988-73.993 59.195v88.311z" />
    35 <glyph unicode="&#xe019;" d="M256 320c-104.684 0-197.622-50.278-256-128 58.378-77.723 151.316-128 256-128 104.684 0 197.622 50.277 256 128-58.378 77.722-151.316 128-256 128zM224 256c17.673 0 32-14.327 32-32s-14.327-32-32-32-32 14.327-32 32 14.327 32 32 32zM386.808 127.352c-19.824-10.129-40.826-17.931-62.423-23.188-22.244-5.418-45.251-8.164-68.385-8.164-23.133 0-46.141 2.746-68.384 8.162-21.597 5.259-42.599 13.061-62.423 23.188-31.51 16.101-60.111 38.205-83.82 64.649 23.709 26.444 52.31 48.55 83.82 64.649 16.168 8.261 33.121 14.973 50.541 20.020-9.944-15.121-15.734-33.217-15.734-52.668 0-53.020 42.981-96 96-96 53.019 0 96 42.98 96 96 0 19.451-5.791 37.547-15.733 52.67 17.419-5.048 34.372-11.76 50.541-20.021 31.511-16.099 60.109-38.204 83.819-64.649-23.71-26.443-52.309-48.55-83.819-64.648zM430.459 358.139c-54.36 27.777-113.056 41.861-174.459 41.861-61.403 0-120.099-14.084-174.459-41.861-29.386-15.016-56.866-33.952-81.541-56.038v-54.603c27.669 29.283 60.347 53.877 96.097 72.145 49.81 25.452 103.609 38.357 159.903 38.357s110.093-12.905 159.902-38.358c35.751-18.268 68.429-42.862 96.098-72.145v54.603c-24.675 22.087-52.154 41.023-81.541 56.039z" />
    36 <glyph unicode="&#xe01a;" d="M161.009 64l28.8 96h132.382l28.8-96h56.816l-95.998 320h-111.618l-96-320h56.818zM237.809 320h36.382l28.8-96h-93.982l28.8 96z" />
    37 <glyph unicode="&#xe01b;" d="M0 448v-448h512v448h-512zM192 160v96h128v-96h-128zM320 128v-96h-128v96h128zM320 384v-96h-128v96h128zM160 384v-96h-128v96h128zM32 256h128v-96h-128v96zM352 256h128v-96h-128v96zM352 288v96h128v-96h-128zM32 128h128v-96h-128v96zM352 32v96h128v-96h-128z" />
    38 <glyph unicode="&#xe01c;" d="M0 256h512v-64h-512z" />
    39 <glyph unicode="&#xe01d;" d="M0 32h288v-64h-288zM96 480h352v-64h-352zM138.694 64l102.344 392.082 61.925-16.164-98.125-375.918zM464.887-32l-64.887 64.887-64.887-64.887-31.113 31.113 64.887 64.887-64.887 64.887 31.113 31.113 64.887-64.887 64.887 64.887 31.113-31.113-64.887-64.887 64.887-64.887z" />
    40 <glyph unicode="&#xe01e;" d="M384 25v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
    41 <glyph unicode="&#xe01f;" d="M384 377v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
    42 <glyph unicode="&#xe020;" d="M352 32h128l32 64v-128h-192v107.107c65.556 28.242 112 98.581 112 180.893 0 107.216-78.799 191.133-176 191.133-97.203 0-176-83.916-176-191.133 0-82.312 46.443-152.651 112-180.893v-107.107h-192v128l32-64h128v16.295c-93.815 33.23-160 113.701-160 207.705 0 123.712 114.615 224 256 224 141.385 0 256-100.288 256-224 0-94.004-66.185-174.475-160-207.705v-16.295z" />
    43 <glyph unicode="&#xe021;" d="M256 480c-141.385 0-256-114.614-256-256 0-141.385 114.614-256 256-256 141.385 0 256 114.615 256 256 0 141.386-114.615 256-256 256zM256 8c-119.293 0-216 96.706-216 216 0 119.293 96.707 216 216 216 119.295 0 216-96.707 216-216 0-119.294-96.705-216-216-216zM192 320c0-17.673-14.327-32-32-32s-32 14.327-32 32 14.327 32 32 32 32-14.327 32-32zM384 320c0-17.673-14.326-32-32-32s-32 14.327-32 32 14.326 32 32 32 32-14.327 32-32zM256 154c70.537 0 131.344 28.766 159.231 61.596-10.436-85.61-78.144-151.596-159.231-151.596-81.059 0-148.749 66.013-159.222 151.584 27.893-32.823 88.693-61.584 159.222-61.584z" />
    44 <glyph unicode="&#xe022;" d="M128 448h256v-64h-256zM480 352h-448c-17.6 0-32-14.4-32-32v-160c0-17.6 14.398-32 32-32h96v-128h256v128h96c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32zM352 32h-192v160h192v-160zM487.2 304c0-12.813-10.387-23.2-23.199-23.2-12.813 0-23.201 10.387-23.201 23.2s10.388 23.2 23.201 23.2c12.813 0 23.199-10.387 23.199-23.2z" />
    45 <glyph unicode="&#xe023;" d="M512 480v-192l-69.13 69.13-106-106-53.74 53.74 106 106-69.13 69.13zM122.87 410.87l106-106-53.74-53.74-106 106-69.13-69.13v192h192zM442.87 90.87l69.13 69.13v-192h-192l69.13 69.13-106 106 53.74 53.74zM228.87 143.13l-106-106 69.13-69.13h-192v192l69.13-69.13 106 106z" />
    46 <glyph unicode="&#xe024;" d="M64 352h64v-96h32v192c0 17.6-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32v-192h32v96zM64 448h64v-64h-64v64zM480 448v32h-96c-17.601 0-32-14.4-32-32v-160c0-17.6 14.399-32 32-32h96v32h-96v160h96zM320 400v48c0 17.6-14.4 32-32 32h-96v-224h96c17.6 0 32 14.4 32 32v48c0 17.6-4.4 32-22 32 17.6 0 22 14.4 22 32zM288 288h-64v64h64v-64zM288 384h-64v64h64v-64zM416 192l-208-224-112 144 41 35 71-74 176 151z" />
    47 <glyph unicode="&#xe025;" d="M224 192h-96v64h96v96h64v-96h96v-64h-96v-96h-64zM512 160v-192h-512v192h64v-128h384v128z" />
    48 <glyph unicode="&#xe026;" d="M192 384h64v-32h-64zM288 384h64v-32h-64zM448 384v-128h-96v32h64v64h-32v32zM160 288h64v-32h-64zM256 288h64v-32h-64zM96 352v-64h32v-32h-64v128h96v-32zM192 192h64v-32h-64zM288 192h64v-32h-64zM448 192v-128h-96v32h64v64h-32v32zM160 96h64v-32h-64zM256 96h64v-32h-64zM96 160v-64h32v-32h-64v128h96v-32zM480 448h-448v-448h448v448zM512 480v0-512h-512v512h512z" />
    49 <glyph unicode="&#xe027;" d="M0 224h64v-32h-64zM96 224h96v-32h-96zM224 224h64v-32h-64zM320 224h96v-32h-96zM448 224h64v-32h-64zM440 480l8-224h-384l8 224h16l8-192h320l8 192zM72-32l-8 192h384l-8-192h-16l-8 160h-320l-8-160z" />
    50 <glyph unicode="&#xe028;" d="M288 448c123.712 0 224-100.288 224-224s-100.288-224-224-224v48c47.012 0 91.209 18.307 124.451 51.549 33.242 33.242 51.549 77.439 51.549 124.451 0 47.011-18.307 91.209-51.549 124.451-33.242 33.242-77.439 51.549-124.451 51.549-47.011 0-91.209-18.307-124.451-51.549-25.57-25.569-42.291-57.623-48.653-92.451h93.104l-112-128-112 128h82.285c15.53 108.551 108.869 192 221.715 192zM384 256v-64h-128v160h64v-96z" />
    51 <glyph unicode="&#xe02a;" d="M353.94 237.674c18.749 22.271 30.060 51.004 30.060 82.326 0 70.58-57.421 128-128 128h-160v-448h192c70.579 0 128 57.421 128 128 0 46.478-24.899 87.248-62.060 109.674zM192 384h50.75c27.984 0 50.75-28.71 50.75-64s-22.766-64-50.75-64h-50.75v128zM271.5 64h-79.5v128h79.5c29.225 0 53-28.71 53-64s-23.775-64-53-64z" />
    52 <glyph unicode="&#xe02b;" d="M448 448v-32h-64l-160-384h64v-32h-224v32h64l160 384h-64v32z" />
    53 <glyph unicode="&#xe02c;" d="M352 448h64v-208c0-79.529-71.634-144-160-144-88.365 0-160 64.471-160 144v208h64v-208c0-20.083 9.119-39.352 25.677-54.253 18.448-16.602 43.423-25.747 70.323-25.747 26.9 0 51.875 9.145 70.323 25.747 16.558 14.901 25.677 34.17 25.677 54.253v208zM96 64h320v-64h-320z" />
    54 <glyph unicode="&#xe02d;" d="M365.71 221.482c31.96-23.969 50.29-58.043 50.29-93.482s-18.33-69.513-50.29-93.482c-29.679-22.259-68.642-34.518-109.71-34.518-41.069 0-80.031 12.259-109.71 34.518-31.96 23.969-50.29 58.043-50.29 93.482h64c0-34.691 43.963-64 96-64s96 29.309 96 64c0 34.691-43.963 64-96 64-41.069 0-80.031 12.259-109.71 34.518-31.96 23.97-50.29 58.043-50.29 93.482 0 35.439 18.33 69.512 50.29 93.482 29.679 22.259 68.641 34.518 109.71 34.518 41.068 0 80.031-12.259 109.71-34.518 31.96-23.97 50.29-58.043 50.29-93.482h-64c0 34.691-43.963 64-96 64-52.037 0-96-29.309-96-64 0-34.691 43.963-64 96-64 41.068 0 80.031-12.259 109.71-34.518zM0 224h512v-32h-512z" />
    55 <glyph unicode="&#xe02e;" d="M192 448h256v-64h-64v-384h-64v384h-64v-384h-64v224c-61.856 0-112 50.144-112 112s50.144 112 112 112z" />
    56 <glyph unicode="&#xe02f;" d="M224 448h256v-64h-64v-384h-64v384h-64v-384h-64v224c-61.856 0-112 50.144-112 112s50.144 112 112 112zM32 256l128-112-128-112z" />
    57 <glyph unicode="&#xe030;" d="M128 448h256v-64h-64v-384h-64v384h-64v-384h-64v224c-61.856 0-112 50.144-112 112s50.144 112 112 112zM480 32l-128 112 128 112z" />
    58 <glyph unicode="&#xe031;" d="M416 352h-96v32l-96 96h-224v-384h192v-128h320v288l-96 96zM416 306.745l50.745-50.745h-50.745v50.745zM224 434.745l50.745-50.745h-50.745v50.745zM32 448h160v-96h96v-224h-256v320zM480 0h-256v96h96v224h64v-96h96v-224z" />
    59 <glyph unicode="&#xe032;" d="M384 352h32v-32h-32zM320 288h32v-32h-32zM320 224h32v-32h-32zM320 160h32v-32h-32zM256 224h32v-32h-32zM256 160h32v-32h-32zM192 160h32v-32h-32zM384 288h32v-32h-32zM384 224h32v-32h-32zM384 160h32v-32h-32zM384 96h32v-32h-32zM320 96h32v-32h-32zM256 96h32v-32h-32zM192 96h32v-32h-32zM128 96h32v-32h-32z" />
    60 <glyph unicode="&#xe033;" d="M64 208l144-144 240 240-64 64-176-176-80 80z" />
    61 <glyph unicode="&#xe034;" d="M464 416h-208l-16 32h-176l-32-64h448zM452.17 128h37.43l22.4 224h-512l32-320h242.040c-52.441 18.888-90.040 69.133-90.040 128 0 74.991 61.009 136 136 136 74.99 0 136-61.009 136-136 0-10.839-1.311-21.575-3.83-32zM501.498 23.125l-99.248 87.346c8.727 14.46 13.75 31.407 13.75 49.529 0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96c18.122 0 35.069 5.023 49.529 13.75l87.346-99.248c11.481-13.339 31.059-14.070 43.503-1.626l2.746 2.746c12.444 12.444 11.713 32.022-1.626 43.503zM320 98c-34.242 0-62 27.758-62 62s27.758 62 62 62 62-27.758 62-62-27.758-62-62-62z" />
    62 <glyph unicode="&#xe035;" d="M256 224v-64h16l16 32h32v-128h-24v-32h112v32h-24v128h32l16-32h16v64zM416 320v80c0 8.8-7.2 16-16 16h-112v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-112c-8.801 0-16-7.2-16-16v-320c0-8.8 7.199-16 16-16h144v-96h320v352h-96zM192 447.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 352v32h256v-32h-256zM480 0h-256v288h256v-288z" />
     6<font id="tinymce" horiz-adv-x="1024">
     7<font-face units-per-em="1024" ascent="960" descent="-64" />
     8<missing-glyph horiz-adv-x="1024" />
     9<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
     10<glyph unicode="&#xe000;" d="M896 960h-896v-1024h1024v896l-128 128zM512 832h128v-256h-128v256zM896 64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" />
     11<glyph unicode="&#xe001;" d="M903.432 760.57l-142.864 142.862c-31.112 31.112-92.568 56.568-136.568 56.568h-480c-44 0-80-36-80-80v-864c0-44 36-80 80-80h736c44 0 80 36 80 80v608c0 44-25.456 105.458-56.568 136.57zM858.178 715.314c3.13-3.13 6.25-6.974 9.28-11.314h-163.458v163.456c4.34-3.030 8.184-6.15 11.314-9.28l142.864-142.862zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16h480c4.832 0 10.254-0.61 16-1.704v-254.296h254.296c1.094-5.746 1.704-11.166 1.704-16v-608z" />
     12<glyph unicode="&#xe002;" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" />
     13<glyph unicode="&#xe003;" d="M0 896h1024v-128h-1024zM0 704h640v-128h-640zM0 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
     14<glyph unicode="&#xe004;" d="M0 896h1024v-128h-1024zM192 704h640v-128h-640zM192 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
     15<glyph unicode="&#xe005;" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
     16<glyph unicode="&#xe006;" d="M0 896h1024v-128h-1024zM0 704h1024v-128h-1024zM0 512h1024v-128h-1024zM0 320h1024v-128h-1024zM0 128h1024v-128h-1024z" />
     17<glyph unicode="&#xe007;" d="M890.774 250.846c-45.654 45.556-103.728 69.072-157.946 69.072h-29.112l-63.904 64.008 255.62 256.038c63.904 64.010 63.904 192.028 0 256.038l-383.43-384.056-383.432 384.054c-63.904-64.008-63.904-192.028 0-256.038l255.622-256.034-63.906-64.008h-29.114c-54.22 0-112.292-23.518-157.948-69.076-81.622-81.442-92.65-202.484-24.63-270.35 29.97-29.902 70.288-44.494 112.996-44.494 54.216 0 112.29 23.514 157.946 69.072 53.584 53.464 76.742 124 67.084 185.348l65.384 65.488 65.376-65.488c-9.656-61.348 13.506-131.882 67.084-185.348 45.662-45.558 103.732-69.072 157.948-69.072 42.708 0 83.024 14.592 112.994 44.496 68.020 67.866 56.988 188.908-24.632 270.35zM353.024 114.462c-7.698-17.882-19.010-34.346-33.626-48.926-14.636-14.604-31.172-25.918-49.148-33.624-16.132-6.916-32.96-10.568-48.662-10.568-15.146 0-36.612 3.402-52.862 19.612-16.136 16.104-19.52 37.318-19.52 52.288 0 15.542 3.642 32.21 10.526 48.212 7.7 17.884 19.014 34.346 33.626 48.926 14.634 14.606 31.172 25.914 49.15 33.624 16.134 6.914 32.96 10.568 48.664 10.568 15.146 0 36.612-3.4 52.858-19.614 16.134-16.098 19.522-37.316 19.522-52.284 0.002-15.542-3.638-32.216-10.528-48.214zM512.004 293.404c-49.914 0-90.376 40.532-90.376 90.526 0 49.992 40.462 90.52 90.376 90.52s90.372-40.528 90.372-90.52c0-49.998-40.46-90.526-90.372-90.526zM855.272 40.958c-16.248-16.208-37.712-19.612-52.86-19.612-15.704 0-32.53 3.652-48.666 10.568-17.972 7.706-34.508 19.020-49.142 33.624-14.614 14.58-25.926 31.042-33.626 48.926-6.886 15.998-10.526 32.672-10.526 48.212 0 14.966 3.384 36.188 19.52 52.286 16.246 16.208 37.712 19.614 52.86 19.614 15.7 0 32.53-3.654 48.66-10.568 17.978-7.708 34.516-19.018 49.15-33.624 14.61-14.58 25.924-31.042 33.626-48.926 6.884-15.998 10.526-32.67 10.526-48.212-0.002-14.97-3.39-36.186-19.522-52.288z" />
     18<glyph unicode="&#xe008;" d="M832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h448l192 192v512h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM832 26.51v101.49h101.49l-101.49-101.49zM960 192h-192v-192h-320v576h512v-384z" />
     19<glyph unicode="&#xe009;" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
     20<glyph unicode="&#xe00a;" d="M384 896h640v-128h-640v128zM384 512h640v-128h-640v128zM384 128h640v-128h-640v128zM0 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 64c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128z" />
     21<glyph unicode="&#xe00b;" d="M384 128h640v-128h-640zM384 512h640v-128h-640zM384 896h640v-128h-640zM192 960v-256h-64v192h-64v64zM128 434v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM256 256v-320h-192v64h128v64h-128v64h128v64h-128v64z" />
     22<glyph unicode="&#xe00c;" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM0 256v384l256-192z" />
     23<glyph unicode="&#xe00d;" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM256 640v-384l-256 192z" />
     24<glyph unicode="&#xe00e;" d="M225 512c123.712 0 224-100.29 224-224 0-123.712-100.288-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.634-11.636-22.252-24.016-31.83-37.020 11.438 1.8 23.16 2.746 35.104 2.746zM801 512c123.71 0 224-100.29 224-224 0-123.712-100.29-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.636-11.636-22.254-24.016-31.832-37.020 11.44 1.8 23.16 2.746 35.106 2.746z" />
     25<glyph unicode="&#xe00f;" d="M761.862-64c113.726 206.032 132.888 520.306-313.862 509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214 313.862-775.628z" />
     26<glyph unicode="&#xe010;" d="M576 711.628v248.372l384-384-384-384v253.824c-446.75 10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86 775.628z" />
     27<glyph unicode="&#xe011;" d="M320 256c17.6-17.6 47.274-16.726 65.942 1.942l316.118 316.116c18.668 18.668 19.54 48.342 1.94 65.942s-47.274 16.726-65.942-1.942l-316.116-316.116c-18.668-18.668-19.542-48.342-1.942-65.942zM476.888 284.888c4.56-9.050 6.99-19.16 6.99-29.696 0-17.616-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.382 99.382c-12.248 12.248-18.992 28.694-18.992 46.308s6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994 10.536 0 20.644-2.43 29.696-6.99l65.338 65.338c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-60.67-60.67-60.67-159.948 0-220.618l99.382-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c55.82 55.82 60.238 144.298 13.344 205.344l-65.34-65.34zM978.498 815.116l-99.382 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994s34.060-6.746 46.308-18.994l99.382-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c60.67 60.666 60.67 159.944 0 220.614z" />
     28<glyph unicode="&#xe012;" d="M476.888 284.886c4.56-9.048 6.99-19.158 6.99-29.696 0-17.616-6.744-34.058-18.992-46.308l-163.38-163.38c-12.248-12.248-28.696-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.38 99.38c-12.248 12.25-18.992 28.696-18.992 46.308s6.744 34.060 18.992 46.308l163.38 163.382c12.248 12.246 28.696 18.992 46.308 18.992 10.538 0 20.644-2.43 29.696-6.988l65.338 65.336c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.38-163.382c-60.67-60.67-60.67-159.95 0-220.618l99.38-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.38 163.38c55.82 55.82 60.238 144.298 13.344 205.346l-65.34-65.338zM978.496 815.116l-99.38 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.97-15.166-110.306-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.246 12.248 28.694 18.994 46.306 18.994 17.616 0 34.060-6.746 46.308-18.994l99.38-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.38-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.504l163.38 163.38c60.672 60.666 60.672 159.944 0 220.614zM233.368 681.376l-191.994 191.994 45.256 45.256 191.994-191.994zM384 960h64v-192h-64zM0 576h192v-64h-192zM790.632 214.624l191.996-191.996-45.256-45.256-191.996 191.996zM576 128h64v-192h-64zM832 384h192v-64h-192z" />
     29<glyph unicode="&#xe013;" d="M192 960v-1024l320 320 320-320v1024h-640zM768 90.51l-256 256-256-256v805.49h512v-805.49z" />
     30<glyph unicode="&#xe014;" d="M0 832v-832h1024v832h-1024zM960 64h-896v704h896v-704zM704 608c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM896 128h-768l192 512 256-320 128 96z" />
     31<glyph unicode="&#xe015;" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" />
     32<glyph unicode="&#xe016;" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" />
     33<glyph unicode="&#xe017;" d="M320 704l-256-256 256-256h128l-256 256 256 256zM704 704h-128l256-256-256-256h128l256 256z" />
     34<glyph unicode="&#xe018;" d="M512 768c-212.076 0-384-171.922-384-384s171.922-384 384-384c212.074 0 384 171.922 384 384s-171.926 384-384 384zM715.644 180.354c-54.392-54.396-126.716-84.354-203.644-84.354s-149.25 29.958-203.646 84.354c-54.396 54.394-84.354 126.718-84.354 203.646s29.958 149.25 84.354 203.646c54.396 54.396 126.718 84.354 203.646 84.354s149.252-29.958 203.642-84.354c54.402-54.396 84.358-126.718 84.358-203.646s-29.958-149.252-84.356-203.646zM325.93 756.138l-42.94 85.878c-98.874-49.536-179.47-130.132-229.006-229.008l85.876-42.94c40.248 80.336 105.732 145.822 186.070 186.070zM884.134 570.070l85.878 42.938c-49.532 98.876-130.126 179.472-229.004 229.008l-42.944-85.878c80.338-40.248 145.824-105.732 186.070-186.068zM512 576h-64v-192c0-10.11 4.7-19.11 12.022-24.972l-0.012-0.016 160-128 39.976 49.976-147.986 118.39v176.622z" />
     35<glyph unicode="&#xe019;" d="M512 640c-209.368 0-395.244-100.556-512-256 116.756-155.446 302.632-256 512-256s395.244 100.554 512 256c-116.756 155.444-302.632 256-512 256zM448 512c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM773.616 254.704c-39.648-20.258-81.652-35.862-124.846-46.376-44.488-10.836-90.502-16.328-136.77-16.328-46.266 0-92.282 5.492-136.768 16.324-43.194 10.518-85.198 26.122-124.846 46.376-63.020 32.202-120.222 76.41-167.64 129.298 47.418 52.888 104.62 97.1 167.64 129.298 32.336 16.522 66.242 29.946 101.082 40.040-19.888-30.242-31.468-66.434-31.468-105.336 0-106.040 85.962-192 192-192s192 85.96 192 192c0 38.902-11.582 75.094-31.466 105.34 34.838-10.096 68.744-23.52 101.082-40.042 63.022-32.198 120.218-76.408 167.638-129.298-47.42-52.886-104.618-97.1-167.638-129.296zM860.918 716.278c-108.72 55.554-226.112 83.722-348.918 83.722s-240.198-28.168-348.918-83.722c-58.772-30.032-113.732-67.904-163.082-112.076v-109.206c55.338 58.566 120.694 107.754 192.194 144.29 99.62 50.904 207.218 76.714 319.806 76.714s220.186-25.81 319.804-76.716c71.502-36.536 136.858-85.724 192.196-144.29v109.206c-49.35 44.174-104.308 82.046-163.082 112.078z" />
     36<glyph unicode="&#xe01a;" d="M322.018 128l57.6 192h264.764l57.6-192h113.632l-191.996 640h-223.236l-192-640h113.636zM475.618 640h72.764l57.6-192h-187.964l57.6 192z" />
     37<glyph unicode="&#xe01b;" d="M0 896v-896h1024v896h-1024zM384 320v192h256v-192h-256zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
     38<glyph unicode="&#xe01c;" d="M0 512h1024v-128h-1024z" />
     39<glyph unicode="&#xe01d;" d="M0 64h576v-128h-576zM192 960h704v-128h-704zM277.388 128l204.688 784.164 123.85-32.328-196.25-751.836zM929.774-64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774z" />
     40<glyph unicode="&#xe01e;" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
     41<glyph unicode="&#xe01f;" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
     42<glyph unicode="&#xe020;" d="M704 64h256l64 128v-256h-384v214.214c131.112 56.484 224 197.162 224 361.786 0 214.432-157.598 382.266-352 382.266-194.406 0-352-167.832-352-382.266 0-164.624 92.886-305.302 224-361.786v-214.214h-384v256l64-128h256v32.59c-187.63 66.46-320 227.402-320 415.41 0 247.424 229.23 448 512 448s512-200.576 512-448c0-188.008-132.37-348.95-320-415.41v-32.59z" />
     43<glyph unicode="&#xe021;" d="M512 960c-282.77 0-512-229.228-512-512 0-282.77 229.228-512 512-512 282.77 0 512 229.23 512 512 0 282.772-229.23 512-512 512zM512 16c-238.586 0-432 193.412-432 432 0 238.586 193.414 432 432 432 238.59 0 432-193.414 432-432 0-238.588-193.41-432-432-432zM384 640c0-35.346-28.654-64-64-64s-64 28.654-64 64 28.654 64 64 64 64-28.654 64-64zM768 640c0-35.346-28.652-64-64-64s-64 28.654-64 64 28.652 64 64 64 64-28.654 64-64zM512 308c141.074 0 262.688 57.532 318.462 123.192-20.872-171.22-156.288-303.192-318.462-303.192-162.118 0-297.498 132.026-318.444 303.168 55.786-65.646 177.386-123.168 318.444-123.168z" />
     44<glyph unicode="&#xe022;" d="M256 896h512v-128h-512zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4 608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402 46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
     45<glyph unicode="&#xe023;" d="M1024 960v-384l-138.26 138.26-212-212-107.48 107.48 212 212-138.26 138.26zM245.74 821.74l212-212-107.48-107.48-212 212-138.26-138.26v384h384zM885.74 181.74l138.26 138.26v-384h-384l138.26 138.26-212 212 107.48 107.48zM457.74 286.26l-212-212 138.26-138.26h-384v384l138.26-138.26 212 212z" />
     46<glyph unicode="&#xe024;" d="M128 704h128v-192h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192zM128 896h128v-128h-128v128zM960 896v64h-192c-35.202 0-64-28.8-64-64v-320c0-35.2 28.798-64 64-64h192v64h-192v320h192zM640 800v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64zM576 576h-128v128h128v-128zM576 768h-128v128h128v-128zM832 384l-416-448-224 288 82 70 142-148 352 302z" />
     47<glyph unicode="&#xe025;" d="M448 384h-192v128h192v192h128v-192h192v-128h-192v-192h-128zM1024 320v-384h-1024v384h128v-256h768v256z" />
     48<glyph unicode="&#xe026;" d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896 768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512 576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384 384h128v-64h-128zM576 384h128v-64h-128zM896 384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512 192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960 896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" />
     49<glyph unicode="&#xe027;" d="M0 448h128v-64h-128zM192 448h192v-64h-192zM448 448h128v-64h-128zM640 448h192v-64h-192zM896 448h128v-64h-128zM880 960l16-448h-768l16 448h32l16-384h640l16 384zM144-64l-16 384h768l-16-384h-32l-16 320h-640l-16-320z" />
     50<glyph unicode="&#xe028;" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" />
     51<glyph unicode="&#xe02a;" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" />
     52<glyph unicode="&#xe02b;" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" />
     53<glyph unicode="&#xe02c;" d="M704 896h128v-416c0-159.058-143.268-288-320-288-176.73 0-320 128.942-320 288v416h128v-416c0-40.166 18.238-78.704 51.354-108.506 36.896-33.204 86.846-51.494 140.646-51.494s103.75 18.29 140.646 51.494c33.116 29.802 51.354 68.34 51.354 108.506v416zM192 128h640v-128h-640z" />
     54<glyph unicode="&#xe02d;" d="M731.42 442.964c63.92-47.938 100.58-116.086 100.58-186.964s-36.66-139.026-100.58-186.964c-59.358-44.518-137.284-69.036-219.42-69.036-82.138 0-160.062 24.518-219.42 69.036-63.92 47.938-100.58 116.086-100.58 186.964h128c0-69.382 87.926-128 192-128s192 58.618 192 128c0 69.382-87.926 128-192 128-82.138 0-160.062 24.518-219.42 69.036-63.92 47.94-100.58 116.086-100.58 186.964s36.66 139.024 100.58 186.964c59.358 44.518 137.282 69.036 219.42 69.036 82.136 0 160.062-24.518 219.42-69.036 63.92-47.94 100.58-116.086 100.58-186.964h-128c0 69.382-87.926 128-192 128s-192-58.618-192-128c0-69.382 87.926-128 192-128 82.136 0 160.062-24.518 219.42-69.036zM0 448h1024v-64h-1024z" />
     55<glyph unicode="&#xe02e;" d="M384 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224z" />
     56<glyph unicode="&#xe02f;" d="M448 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM64 512l256-224-256-224z" />
     57<glyph unicode="&#xe030;" d="M256 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM960 64l-256 224 256 224z" />
     58<glyph unicode="&#xe031;" d="M832 704h-192v64l-192 192h-448v-768h384v-256h640v576l-192 192zM832 613.49l101.49-101.49h-101.49v101.49zM448 869.49l101.49-101.49h-101.49v101.49zM64 896h320v-192h192v-448h-512v640zM960 0h-512v192h192v448h128v-192h192v-448z" />
     59<glyph unicode="&#xe032;" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
     60<glyph unicode="&#xe033;" d="M128 416l288-288 480 480-128 128-352-352-160 160z" />
     61<glyph unicode="&#xe034;" d="M928 832h-416l-32 64h-352l-64-128h896zM904.34 256h74.86l44.8 448h-1024l64-640h484.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM1002.996 46.25l-198.496 174.692c17.454 28.92 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l174.692-198.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM640 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" />
     62<glyph unicode="&#xe035;" d="M512 448v-128h32l32 64h64v-256h-48v-64h224v64h-48v256h64l32-64h32v128zM832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h640v704h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM960 0h-512v576h512v-576z" />
    6363</font></defs></svg>
     64 No newline at end of file
  • src/wp-includes/js/tinymce/themes/modern/theme.js

    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
     
    114114                                                        itemName = item;
    115115                                                        item = editor.buttons[itemName];
    116116
    117                                                         if (typeof(item) == "function") {
     117                                                        if (typeof item == "function") {
    118118                                                                item = item();
    119119                                                        }
    120120
     
    276276                        }
    277277                }
    278278
    279                 var enabledMenuNames = typeof(settings.menubar) == "string" ? settings.menubar.split(/[ ,]/) : defaultMenuBar;
     279                var enabledMenuNames = typeof settings.menubar == "string" ? settings.menubar.split(/[ ,]/) : defaultMenuBar;
    280280                for (var i = 0; i < enabledMenuNames.length; i++) {
    281281                        var menu = enabledMenuNames[i];
    282282                        menu = createMenu(menu);
  • src/wp-includes/js/tinymce/tinymce.js

     
    1 // 4.1.7 (2014-11-27)
     1// 4.1.9 (2015-03-10)
    22
    33/**
    44 * Compiled inline version. (Library mode)
     
    169169                        event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
    170170                                (doc && doc.clientLeft || body && body.clientLeft || 0);
    171171
    172                         event.pageY = originalEvent.clientY + (doc && doc.scrollTop  || body && body.scrollTop || 0) -
    173                                 (doc && doc.clientTop  || body && body.clientTop || 0);
     172                        event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) -
     173                                (doc && doc.clientTop || body && body.clientTop || 0);
    174174                }
    175175
    176176                // Add preventDefault method
     
    664664
    665665/*jshint bitwise:false, expr:true, noempty:false, sub:true, eqnull:true, latedef:false, maxlen:255 */
    666666/*eslint dot-notation:0, no-empty:0, no-cond-assign:0, no-unused-expressions:0, new-cap:0 */
    667 /*eslint no-nested-ternary:0, func-style:0, no-bitwise:0, max-len:0, brace-style:0, no-return-assign:0 */
     667/*eslint no-nested-ternary:0, func-style:0, no-bitwise:0, max-len:0, brace-style:0, no-return-assign:0, no-multi-spaces:0 */
    668668
    669669/**
    670670 * Sizzle CSS Selector Engine v@VERSION
     
    27112711 */
    27122712define("tinymce/Env", [], function() {
    27132713        var nav = navigator, userAgent = nav.userAgent;
    2714         var opera, webkit, ie, ie11, gecko, mac, iDevice;
     2714        var opera, webkit, ie, ie11, gecko, mac, iDevice, android;
    27152715
    27162716        opera = window.opera && window.opera.buildNumber;
     2717        android = /Android/.test(userAgent);
    27172718        webkit = /WebKit/.test(userAgent);
    27182719        ie = !webkit && !opera && (/MSIE/gi).test(userAgent) && (/Explorer/gi).test(nav.appName);
    27192720        ie = ie && /MSIE (\w+)\./.exec(userAgent)[1];
     
    27832784                iOS: iDevice,
    27842785
    27852786                /**
     2787                 * Constant that is true if the os is android.
     2788                 *
     2789                 * @property android
     2790                 * @type Boolean
     2791                 * @final
     2792                 */
     2793                android: android,
     2794
     2795                /**
    27862796                 * Constant that is true if the browser supports editing.
    27872797                 *
    27882798                 * @property contentEditable
     
    28762886         * Checks if a object is of a specific type for example an array.
    28772887         *
    28782888         * @method is
    2879          * @param {Object} o Object to check type of.
    2880          * @param {string} t Optional type to check for.
     2889         * @param {Object} obj Object to check type of.
     2890         * @param {string} type Optional type to check for.
    28812891         * @return {Boolean} true/false if the object is of the specified type.
    28822892         */
    2883         function is(o, t) {
    2884                 if (!t) {
    2885                         return o !== undefined;
     2893        function is(obj, type) {
     2894                if (!type) {
     2895                        return obj !== undefined;
    28862896                }
    28872897
    2888                 if (t == 'array' && isArray(o)) {
     2898                if (type == 'array' && isArray(obj)) {
    28892899                        return true;
    28902900                }
    28912901
    2892                 return typeof(o) == t;
     2902                return typeof obj == type;
    28932903        }
    28942904
    28952905        /**
     
    29272937                items = items || [];
    29282938                delim = delim || ',';
    29292939
    2930                 if (typeof(items) == "string") {
     2940                if (typeof items == "string") {
    29312941                        items = items.split(delim);
    29322942                }
    29332943
     
    31603170
    31613171                // Add static methods
    31623172                /*jshint sub:true*/
     3173                /*eslint dot-notation:0*/
    31633174                self.each(p['static'], function(f, n) {
    31643175                        ns[cn][n] = f;
    31653176                });
     
    38413852                                        name = camel(name);
    38423853
    38433854                                        // Default px suffix on these
    3844                                         if (typeof(value) === 'number' && !numericCssMap[name]) {
     3855                                        if (typeof value === 'number' && !numericCssMap[name]) {
    38453856                                                value += 'px';
    38463857                                        }
    38473858
     
    69947005                get: function(elm) {
    69957006                        var name;
    69967007
    6997                         if (elm && this.doc && typeof(elm) == 'string') {
     7008                        if (elm && this.doc && typeof elm == 'string') {
    69987009                                name = elm;
    69997010                                elm = this.doc.getElementById(elm);
    70007011
     
    71777188                        }
    71787189
    71797190                        // A call to tinymce.is doesn't work for some odd reason on IE9 possible bug inside their JS runtime
    7180                         if (typeof(html) != "undefined") {
     7191                        if (typeof html != "undefined") {
    71817192                                return outHtml + '>' + html + '</' + name + '>';
    71827193                        }
    71837194
     
    77787789                 */
    77797790                getOuterHTML: function(elm) {
    77807791                        elm = this.get(elm);
    7781                         return elm.nodeType == 1 ? elm.outerHTML : $('<div>').append($(elm).clone()).html();
     7792
     7793                        // Older FF doesn't have outerHTML 3.6 is still used by some orgaizations
     7794                        return elm.nodeType == 1 && "outerHTML" in elm ? elm.outerHTML : $('<div>').append($(elm).clone()).html();
    77827795                },
    77837796
    77847797                /**
     
    78007813
    78017814                        self.$$(elm).each(function() {
    78027815                                try {
    7803                                         this.outerHTML = html;
     7816                                        // Older FF doesn't have outerHTML 3.6 is still used by some orgaizations
     7817                                        if ("outerHTML" in this) {
     7818                                                this.outerHTML = html;
     7819                                                return;
     7820                                        }
    78047821                                } catch (ex) {
    7805                                         // OuterHTML for IE it sometimes produces an "unknown runtime error"
    7806                                         self.remove($(this).html(html), true);
     7822                                        // Ignore
    78077823                                }
     7824
     7825                                // OuterHTML for IE it sometimes produces an "unknown runtime error"
     7826                                self.remove($(this).html(html), true);
    78087827                        });
    78097828                },
    78107829
     
    79627981                run: function(elm, func, scope) {
    79637982                        var self = this, result;
    79647983
    7965                         if (typeof(elm) === 'string') {
     7984                        if (typeof elm === 'string') {
    79667985                                elm = self.get(elm);
    79677986                        }
    79687987
     
    79767995
    79777996                                each(elm, function(elm, i) {
    79787997                                        if (elm) {
    7979                                                 if (typeof(elm) == 'string') {
     7998                                                if (typeof elm == 'string') {
    79807999                                                        elm = self.get(elm);
    79818000                                                }
    79828001
     
    84188437
    84198438                        if (node) {
    84208439                                // If expression make a function of it using is
    8421                                 if (typeof(func) == 'string') {
     8440                                if (typeof func == 'string') {
    84228441                                        func = function(node) {
    84238442                                                return self.is(node, selector);
    84248443                                        };
     
    85348553                                /*eslint no-console:0 */
    85358554
    85368555                                // Report the error so it's easier for people to spot loading errors
    8537                                 if (typeof(console) !== "undefined" && console.log) {
     8556                                if (typeof console !== "undefined" && console.log) {
    85388557                                        console.log("Failed to load: " + url);
    85398558                                }
    85408559
     
    89939012 * This class contains a few utility methods for ranges.
    89949013 *
    89959014 * @class tinymce.dom.RangeUtils
    8996  * @private
    89979015 */
    89989016define("tinymce/dom/RangeUtils", [
    89999017        "tinymce/util/Tools",
     
    93689386                                                                        container = node.parentNode;
    93699387
    93709388                                                                        // Put caret after image when moving the end point
    9371                                                                         if (node.nodeName ==  "IMG" && !directionLeft) {
     9389                                                                        if (node.nodeName == "IMG" && !directionLeft) {
    93729390                                                                                offset++;
    93739391                                                                        }
    93749392
     
    94719489                return false;
    94729490        };
    94739491
     9492        /**
     9493         * Gets the caret range for the given x/y location.
     9494         *
     9495         * @static
     9496         * @method getCaretRangeFromPoint
     9497         * @param {Number} x X coordinate for range
     9498         * @param {Number} y Y coordinate for range
     9499         * @param {Document} doc Document that x/y are relative to
     9500         * @returns {Range} caret range
     9501         */
     9502        RangeUtils.getCaretRangeFromPoint = function(x, y, doc) {
     9503                var rng, point;
     9504
     9505                if (doc.caretPositionFromPoint) {
     9506                        point = doc.caretPositionFromPoint(x, y);
     9507                        rng = doc.createRange();
     9508                        rng.setStart(point.offsetNode, point.offset);
     9509                        rng.collapse(true);
     9510                } else if (doc.caretRangeFromPoint) {
     9511                        rng = doc.caretRangeFromPoint(x, y);
     9512                } else if (doc.body.createTextRange) {
     9513                        rng = doc.body.createTextRange();
     9514
     9515                        try {
     9516                                rng.moveToPoint(x, y);
     9517                                rng.collapse(true);
     9518                        } catch (ex) {
     9519                                // Append to top or bottom depending on drop location
     9520                                rng.collapse(y < doc.body.clientHeight);
     9521                        }
     9522                }
     9523
     9524                return rng;
     9525        };
     9526
     9527        RangeUtils.getNode = function(container, offset) {
     9528                if (container.nodeType == 1 && container.hasChildNodes()) {
     9529                        if (offset >= container.childNodes.length) {
     9530                                offset = container.childNodes.length - 1;
     9531                        }
     9532
     9533                        container = container.childNodes[offset];
     9534                }
     9535
     9536                return container;
     9537        };
     9538
    94749539        return RangeUtils;
    94759540});
    94769541
     
    94939558 * @private
    94949559 */
    94959560define("tinymce/NodeChange", [
    9496         "tinymce/dom/RangeUtils"
    9497 ], function(RangeUtils) {
     9561        "tinymce/dom/RangeUtils",
     9562        "tinymce/Env"
     9563], function(RangeUtils, Env) {
    94989564        return function(editor) {
    94999565                var lastRng, lastPath = [];
    95009566
     
    95579623                        editor.fire('SelectionChange');
    95589624                });
    95599625
     9626                // Selection change is delayed ~200ms on IE when you click inside the current range
    95609627                editor.on('SelectionChange', function() {
    95619628                        var startElm = editor.selection.getStart(true);
    95629629
    9563                         // Fire a nodechange only when the selection isn't collapsed since focusout will collapse and remove the selection
    9564                         if (!editor.selection.isCollapsed() && !isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {
     9630                        // IE 8 will fire a selectionchange event with an incorrect selection
     9631                        // when focusing out of table cells. Click inside cell -> toolbar = Invalid SelectionChange event
     9632                        if (!Env.range && editor.selection.isCollapsed()) {
     9633                                return;
     9634                        }
     9635
     9636                        if (!isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {
    95659637                                editor.nodeChanged({selectionChange: true});
    95669638                        }
    95679639                });
     
    95719643                        if (!e.isDefaultPrevented()) {
    95729644                                // Delay nodeChanged call for WebKit edge case issue where the range
    95739645                                // isn't updated until after you click outside a selected image
    9574                                 setTimeout(function() {
     9646                                if (editor.selection.getNode().nodeName == 'IMG') {
     9647                                        setTimeout(function() {
     9648                                                editor.nodeChanged();
     9649                                        }, 0);
     9650                                } else {
    95759651                                        editor.nodeChanged();
    9576                                 }, 0);
     9652                                }
    95779653                        }
    95789654                });
    95799655
     
    1018110257                        children = children || [];
    1018210258                        attributes = attributes || "";
    1018310259
    10184                         if (typeof(children) === "string") {
     10260                        if (typeof children === "string") {
    1018510261                                children = split(children);
    1018610262                        }
    1018710263
    1018810264                        // Split string children
    1018910265                        for (i = 3; i < args.length; i++) {
    10190                                 if (typeof(args[i]) === "string") {
     10266                                if (typeof args[i] === "string") {
    1019110267                                        args[i] = split(args[i]);
    1019210268                                }
    1019310269
     
    1030710383                add("a", "href target rel media hreflang type", phrasingContent);
    1030810384                add("q", "cite", phrasingContent);
    1030910385                add("ins del", "cite datetime", flowContent);
    10310                 add("img", "src srcset alt usemap ismap width height");
     10386                add("img", "src sizes srcset alt usemap ismap width height");
    1031110387                add("iframe", "src name width height", flowContent);
    1031210388                add("embed", "src type width height");
    1031310389                add("object", "data type typemustmatch name usemap form width height", flowContent, "param");
     
    1045110527
    1045210528                        // Convert styles into a rule list
    1045310529                        each(value, function(value, key) {
    10454                                 styles[key] = mode == 'map' ? makeMap(value, /[, ]/) : explode(value, /[, ]/);
     10530                                styles[key] = styles[key.toUpperCase()] = mode == 'map' ? makeMap(value, /[, ]/) : explode(value, /[, ]/);
    1045510531                        });
    1045610532                }
    1045710533
     
    1046810544        return function(settings) {
    1046910545                var self = this, elements = {}, children = {}, patternElements = [], validStyles, invalidStyles, schemaItems;
    1047010546                var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses;
    10471                 var blockElementsMap, nonEmptyElementsMap, textBlockElementsMap, textInlineElementsMap;
     10547                var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap;
    1047210548                var customElementsMap = {}, specialElements = {};
    1047310549
    1047410550                // Creates an lookup table map object for the specified option or the default value
     
    1051310589                boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' +
    1051410590                        'noshade nowrap readonly selected autoplay loop controls');
    1051510591                nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object script', shortEndedElementsMap);
     10592                moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap);
    1051610593                textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' +
    1051710594                                                'blockquote center dir fieldset header footer article section hgroup aside nav figure');
    1051810595                blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' +
     
    1097511052                };
    1097611053
    1097711054                /**
     11055                 * Returns a map with elements that the caret should be moved in front of after enter is
     11056                 * pressed
     11057                 *
     11058                 * @method getMoveCaretBeforeOnEnterElements
     11059                 * @return {Object} Name/value lookup map for elements to place the caret in front of.
     11060                 */
     11061                self.getMoveCaretBeforeOnEnterElements = function() {
     11062                        return moveCaretBeforeOnEnterElementsMap;
     11063                };
     11064
     11065                /**
    1097811066                 * Returns a map with elements where white space is to be preserved like PRE or SCRIPT.
    1097911067                 *
    1098011068                 * @method getWhiteSpaceElements
     
    1237112459                                                }
    1237212460
    1237312461                                                validClassesMap = validClasses[node.name];
    12374                                                 if (!valid && validClassesMap && !validClassesMap[className]) {
     12462                                                if (!valid && validClassesMap && validClassesMap[className]) {
    1237512463                                                        valid = true;
    1237612464                                                }
    1237712465
     
    1374413832                // Details about each resize handle how to scale etc
    1374513833                resizeHandles = {
    1374613834                        // Name: x multiplier, y multiplier, delta size x, delta size y
    13747                         n:  [0.5,   0,     0,  -1],
    13748                         e:  [1,    0.5,    1,    0],
    13749                         s:  [0.5,   1,     0,    1],
    13750                         w:  [0,    0.5,   -1,    0],
    13751                         nw: [0,     0,    -1,  -1],
    13752                         ne: [1,     0,     1,  -1],
    13753                         se: [1,     1,     1,    1],
    13754                         sw: [0,     1,    -1,    1]
     13835                        n: [0.5, 0, 0, -1],
     13836                        e: [1, 0.5, 1, 0],
     13837                        s: [0.5, 1, 0, 1],
     13838                        w: [0, 0.5, -1, 0],
     13839                        nw: [0, 0, -1, -1],
     13840                        ne: [1, 0, 1, -1],
     13841                        se: [1, 1, 1, 1],
     13842                        sw: [0, 1, -1, 1]
    1375513843                };
    1375613844
    1375713845                // Add CSS for resize handles, cloned element and selected
     
    1548415572                normalize: function() {
    1548515573                        var self = this, rng = self.getRng();
    1548615574
    15487                         if (!isIE && new RangeUtils(self.dom).normalize(rng)) {
     15575                        if (Env.range && new RangeUtils(self.dom).normalize(rng)) {
    1548815576                                self.setRng(rng, self.isForward());
    1548915577                        }
    1549015578
     
    1585915947                }
    1586015948
    1586115949                // Create block/inline element to use for preview
    15862                 if (typeof(format) == "string") {
     15950                if (typeof format == "string") {
    1586315951                        format = editor.formatter.get(format);
    1586415952                        if (!format) {
    1586515953                                return;
     
    1612516213
    1612616214                                removeformat: [
    1612716215                                        {
    16128                                                 selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q',
     16216                                                selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',
    1612916217                                                remove: 'all',
    1613016218                                                split: true,
    1613116219                                                expand: false,
     
    1614816236
    1614916237                function addKeyboardShortcuts() {
    1615016238                        // Add some inline shortcuts
    16151                         ed.addShortcut('ctrl+b', 'bold_desc', 'Bold');
    16152                         ed.addShortcut('ctrl+i', 'italic_desc', 'Italic');
    16153                         ed.addShortcut('ctrl+u', 'underline_desc', 'Underline');
     16239                        ed.addShortcut('meta+b', 'bold_desc', 'Bold');
     16240                        ed.addShortcut('meta+i', 'italic_desc', 'Italic');
     16241                        ed.addShortcut('meta+u', 'underline_desc', 'Underline');
    1615416242
    1615516243                        // BlockFormat shortcuts keys
    1615616244                        for (var i = 1; i <= 6; i++) {
    16157                                 ed.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);
     16245                                ed.addShortcut('meta+shift+' + i, '', ['FormatBlock', false, 'h' + i]);
    1615816246                        }
    1615916247
    16160                         ed.addShortcut('ctrl+7', '', ['FormatBlock', false, 'p']);
    16161                         ed.addShortcut('ctrl+8', '', ['FormatBlock', false, 'div']);
    16162                         ed.addShortcut('ctrl+9', '', ['FormatBlock', false, 'address']);
     16248                        ed.addShortcut('meta+shift+7', '', ['FormatBlock', false, 'p']);
     16249                        ed.addShortcut('meta+shift+8', '', ['FormatBlock', false, 'div']);
     16250                        ed.addShortcut('meta+shift+9', '', ['FormatBlock', false, 'address']);
    1616316251                }
    1616416252
    1616516253                // Public functions
     
    1618516273                 */
    1618616274                function register(name, format) {
    1618716275                        if (name) {
    16188                                 if (typeof(name) !== 'string') {
     16276                                if (typeof name !== 'string') {
    1618916277                                        each(name, function(format, name) {
    1619016278                                                register(name, format);
    1619116279                                        });
     
    1621716305                                                }
    1621816306
    1621916307                                                // Split classes if needed
    16220                                                 if (typeof(format.classes) === 'string') {
     16308                                                if (typeof format.classes === 'string') {
    1622116309                                                        format.classes = format.classes.split(/\s+/);
    1622216310                                                }
    1622316311                                        });
     
    1625816346                                textDecoration = getTextDecoration(node.parentNode);
    1625916347                                if (ed.dom.getStyle(node, 'color') && textDecoration) {
    1626016348                                        ed.dom.setStyle(node, 'text-decoration', textDecoration);
    16261                                 } else if (ed.dom.getStyle(node, 'textdecoration') === textDecoration) {
     16349                                } else if (ed.dom.getStyle(node, 'text-decoration') === textDecoration) {
    1626216350                                        ed.dom.setStyle(node, 'text-decoration', null);
    1626316351                                }
    1626416352                        }
     
    1673416822                                        out = out[start ? 'firstChild' : 'lastChild'];
    1673516823                                }
    1673616824
     16825                                // Since dom.remove removes empty text nodes then we need to try to find a better node
     16826                                if (out.nodeType == 3 && out.data.length === 0) {
     16827                                        out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;
     16828                                }
     16829
    1673716830                                dom.remove(node, true);
    1673816831
    1673916832                                return out;
     
    1678416877                                        }
    1678516878
    1678616879                                        // Update range positions since they might have changed after the split operations
    16787                                         rng.startContainer = startContainer.parentNode;
     16880                                        rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;
    1678816881                                        rng.startOffset = nodeIndex(startContainer);
    16789                                         rng.endContainer = endContainer.parentNode;
     16882                                        rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;
    1679016883                                        rng.endOffset = nodeIndex(endContainer) + 1;
    1679116884                                }
    1679216885
     
    1725917352                 * @return {String} New value with replaced variables.
    1726017353                 */
    1726117354                function replaceVars(value, vars) {
    17262                         if (typeof(value) != "string") {
     17355                        if (typeof value != "string") {
    1726317356                                value = value(vars);
    1726417357                        } else if (vars) {
    1726517358                                value = value.replace(/%(\w+)/g, function(str, name) {
     
    1740317496                                function findSpace(node, offset) {
    1740417497                                        var pos, pos2, str = node.nodeValue;
    1740517498
    17406                                         if (typeof(offset) == "undefined") {
     17499                                        if (typeof offset == "undefined") {
    1740717500                                                offset = start ? str.length : 0;
    1740817501                                        }
    1740917502
     
    1767417767                                        value = normalizeStyleValue(replaceVars(value, vars), name);
    1767517768
    1767617769                                        // Indexed array
    17677                                         if (typeof(name) === 'number') {
     17770                                        if (typeof name === 'number') {
    1767817771                                                name = value;
    1767917772                                                compare_node = 0;
    1768017773                                        }
     
    1769917792                                        value = replaceVars(value, vars);
    1770017793
    1770117794                                        // Indexed array
    17702                                         if (typeof(name) === 'number') {
     17795                                        if (typeof name === 'number') {
    1770317796                                                name = value;
    1770417797                                                compare_node = 0;
    1770517798                                        }
     
    1771217805                                                                // Build new class value where everything is removed except the internal prefixed classes
    1771317806                                                                valueOut = '';
    1771417807                                                                each(value.split(/\s+/), function(cls) {
    17715                                                                         if (/mce\w+/.test(cls)) {
     17808                                                                        if (/mce\-\w+/.test(cls)) {
    1771617809                                                                                valueOut += (valueOut ? ' ' : '') + cls;
    1771717810                                                                        }
    1771817811                                                                });
     
    1820918302                                        removeCaretContainer();
    1821018303
    1821118304                                        // Remove caret container on keydown and it's a backspace, enter or left/right arrow keys
    18212                                         if (keyCode == 8 || keyCode == 37 || keyCode == 39) {
     18305                                        // Backspace key needs to check if the range is collapsed due to bug #6780
     18306                                        if ((keyCode == 8 && selection.isCollapsed()) || keyCode == 37 || keyCode == 39) {
    1821318307                                                removeCaretContainer(getParentCaretContainer(selection.getStart()));
    1821418308                                        }
    1821518309
     
    1844318537                });
    1844418538
    1844518539                // Add keyboard shortcuts for undo/redo keys
    18446                 editor.addShortcut('ctrl+z', '', 'Undo');
    18447                 editor.addShortcut('ctrl+y,ctrl+shift+z', '', 'Redo');
     18540                editor.addShortcut('meta+z', '', 'Undo');
     18541                editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');
    1844818542
    1844918543                editor.on('AddUndo Undo Redo ClearUndos', function(e) {
    1845018544                        if (!e.isDefaultPrevented()) {
     
    1868018774
    1868118775        return function(editor) {
    1868218776                var dom = editor.dom, selection = editor.selection, settings = editor.settings;
    18683                 var undoManager = editor.undoManager, schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements();
     18777                var undoManager = editor.undoManager, schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements(),
     18778                        moveCaretBeforeOnEnterElementsMap = schema.getMoveCaretBeforeOnEnterElements();
    1868418779
    1868518780                function handleEnterKey(evt) {
    1868618781                        var rng, tmpRng, editableRoot, container, offset, parentBlock, documentMode, shiftKey,
     
    1874518840                        // pure whitespace text node or before an image
    1874618841                        function moveToCaretPosition(root) {
    1874718842                                var walker, node, rng, lastNode = root, tempElm;
    18748 
    1874918843                                function firstNonWhiteSpaceNodeSibling(node) {
    1875018844                                        while (node) {
    1875118845                                                if (node.nodeType == 1 || (node.nodeType == 3 && node.data && /[\r\n\s]/.test(node.data))) {
     
    1879618890                                                        break;
    1879718891                                                }
    1879818892
    18799                                                 if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
     18893                                                if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {
    1880018894                                                        rng.setStartBefore(node);
    1880118895                                                        rng.setEndBefore(node);
    1880218896                                                        break;
     
    1946519559        var TRUE = true, FALSE = false;
    1946619560
    1946719561        return function(editor) {
    19468                 var dom = editor.dom,
    19469                         selection = editor.selection,
     19562                var dom, selection, formatter,
    1947019563                        commands = {state: {}, exec: {}, value: {}},
    1947119564                        settings = editor.settings,
    19472                         formatter = editor.formatter,
    1947319565                        bookmark;
    1947419566
     19567                editor.on('PreInit', function() {
     19568                        dom = editor.dom;
     19569                        selection = editor.selection;
     19570                        settings = editor.settings;
     19571                        formatter = editor.formatter;
     19572                });
     19573
    1947519574                /**
    1947619575                 * Executes the specified command.
    1947719576                 *
     
    1948119580                 * @param {Object} value Optional value for command.
    1948219581                 * @return {Boolean} true/false if the command was found or not.
    1948319582                 */
    19484                 function execCommand(command, ui, value) {
    19485                         var func;
     19583                function execCommand(command, ui, value, args) {
     19584                        var func, customCommand, state = 0;
    1948619585
    19487                         command = command.toLowerCase();
    19488                         if ((func = commands.exec[command])) {
    19489                                 func(command, ui, value);
    19490                                 return TRUE;
     19586                        if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) {
     19587                                editor.focus();
    1949119588                        }
    1949219589
    19493                         return FALSE;
     19590                        args = extend({}, args);
     19591                        args = editor.fire('BeforeExecCommand', {command: command, ui: ui, value: value});
     19592                        if (args.isDefaultPrevented()) {
     19593                                return false;
     19594                        }
     19595
     19596                        customCommand = command.toLowerCase();
     19597                        if ((func = commands.exec[customCommand])) {
     19598                                func(customCommand, ui, value);
     19599                                editor.fire('ExecCommand', {command: command, ui: ui, value: value});
     19600                                return true;
     19601                        }
     19602
     19603                        // Plugin commands
     19604                        each(editor.plugins, function(p) {
     19605                                if (p.execCommand && p.execCommand(command, ui, value)) {
     19606                                        editor.fire('ExecCommand', {command: command, ui: ui, value: value});
     19607                                        state = true;
     19608                                        return false;
     19609                                }
     19610                        });
     19611
     19612                        if (state) {
     19613                                return state;
     19614                        }
     19615
     19616                        // Theme commands
     19617                        if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) {
     19618                                editor.fire('ExecCommand', {command: command, ui: ui, value: value});
     19619                                return true;
     19620                        }
     19621
     19622                        // Browser commands
     19623                        try {
     19624                                state = editor.getDoc().execCommand(command, ui, value);
     19625                        } catch (ex) {
     19626                                // Ignore old IE errors
     19627                        }
     19628
     19629                        if (state) {
     19630                                editor.fire('ExecCommand', {command: command, ui: ui, value: value});
     19631                                return true;
     19632                        }
     19633
     19634                        return false;
    1949419635                }
    1949519636
    1949619637                /**
     
    1950319644                function queryCommandState(command) {
    1950419645                        var func;
    1950519646
     19647                        // Is hidden then return undefined
     19648                        if (editor._isHidden()) {
     19649                                return;
     19650                        }
     19651
    1950619652                        command = command.toLowerCase();
    1950719653                        if ((func = commands.state[command])) {
    1950819654                                return func(command);
    1950919655                        }
    1951019656
    19511                         return -1;
     19657                        // Browser commands
     19658                        try {
     19659                                return editor.getDoc().queryCommandState(command);
     19660                        } catch (ex) {
     19661                                // Fails sometimes see bug: 1896577
     19662                        }
     19663
     19664                        return false;
    1951219665                }
    1951319666
    1951419667                /**
     
    1952119674                function queryCommandValue(command) {
    1952219675                        var func;
    1952319676
     19677                        // Is hidden then return undefined
     19678                        if (editor._isHidden()) {
     19679                                return;
     19680                        }
     19681
    1952419682                        command = command.toLowerCase();
    1952519683                        if ((func = commands.value[command])) {
    1952619684                                return func(command);
    1952719685                        }
    1952819686
    19529                         return FALSE;
     19687                        // Browser commands
     19688                        try {
     19689                                return editor.getDoc().queryCommandValue(command);
     19690                        } catch (ex) {
     19691                                // Fails sometimes see bug: 1896577
     19692                        }
    1953019693                }
    1953119694
    1953219695                /**
     
    1954619709                        });
    1954719710                }
    1954819711
     19712                function addCommand(command, callback, scope) {
     19713                        command = command.toLowerCase();
     19714                        commands.exec[command] = function(command, ui, value, args) {
     19715                                return callback.call(scope || editor, ui, value, args);
     19716                        };
     19717                }
     19718
     19719                /**
     19720                 * Returns true/false if the command is supported or not.
     19721                 *
     19722                 * @method queryCommandSupported
     19723                 * @param {String} cmd Command that we check support for.
     19724                 * @return {Boolean} true/false if the command is supported or not.
     19725                 */
     19726                function queryCommandSupported(command) {
     19727                        command = command.toLowerCase();
     19728
     19729                        if (commands.exec[command]) {
     19730                                return true;
     19731                        }
     19732
     19733                        // Browser commands
     19734                        try {
     19735                                return editor.getDoc().queryCommandSupported(command);
     19736                        } catch (ex) {
     19737                                // Fails sometimes see bug: 1896577
     19738                        }
     19739
     19740                        return false;
     19741                }
     19742
     19743                function addQueryStateHandler(command, callback, scope) {
     19744                        command = command.toLowerCase();
     19745                        commands.state[command] = function() {
     19746                                return callback.call(scope || editor);
     19747                        };
     19748                }
     19749
     19750                function addQueryValueHandler(command, callback, scope) {
     19751                        command = command.toLowerCase();
     19752                        commands.value[command] = function() {
     19753                                return callback.call(scope || editor);
     19754                        };
     19755                }
     19756
     19757                function hasCustomCommand(command) {
     19758                        command = command.toLowerCase();
     19759                        return !!commands.exec[command];
     19760                }
     19761
    1954919762                // Expose public methods
    1955019763                extend(this, {
    1955119764                        execCommand: execCommand,
    1955219765                        queryCommandState: queryCommandState,
    1955319766                        queryCommandValue: queryCommandValue,
    19554                         addCommands: addCommands
     19767                        queryCommandSupported: queryCommandSupported,
     19768                        addCommands: addCommands,
     19769                        addCommand: addCommand,
     19770                        addQueryStateHandler: addQueryStateHandler,
     19771                        addQueryValueHandler: addQueryValueHandler,
     19772                        hasCustomCommand: hasCustomCommand
    1955519773                });
    1955619774
    1955719775                // Private methods
     
    1978320001                                        return html;
    1978420002                                }
    1978520003
     20004                                // Removes &nbsp; from a [b] c -> a &nbsp;c -> a c
     20005                                function trimNbspAfterDeleteAndPaddValue() {
     20006                                        var rng, container, offset;
     20007
     20008                                        rng = selection.getRng(true);
     20009                                        container = rng.startContainer;
     20010                                        offset = rng.startOffset;
     20011
     20012                                        if (container.nodeType == 3 && rng.collapsed) {
     20013                                                if (container.data[offset] === '\u00a0') {
     20014                                                        container.deleteData(offset, 1);
     20015
     20016                                                        if (!/[\u00a0| ]$/.test(value)) {
     20017                                                                value += ' ';
     20018                                                        }
     20019                                                } else if (container.data[offset - 1] === '\u00a0') {
     20020                                                        container.deleteData(offset - 1, 1);
     20021
     20022                                                        if (!/[\u00a0| ]$/.test(value)) {
     20023                                                                value = ' ' + value;
     20024                                                        }
     20025                                                }
     20026                                        }
     20027                                }
     20028
    1978620029                                function markInlineFormatElements(fragment) {
    1978720030                                        if (merge) {
    1978820031                                                for (node = fragment.firstChild; node; node = node.walk(true)) {
     
    1980920052                                        }
    1981020053                                }
    1981120054
    19812                                 if (typeof(value) != 'string') {
     20055                                if (typeof value != 'string') {
    1981320056                                        merge = value.merge;
    1981420057                                        value = value.content;
    1981520058                                }
     
    1985320096                                // Insert node maker where we will insert the new HTML and get it's parent
    1985420097                                if (!selection.isCollapsed()) {
    1985520098                                        editor.getDoc().execCommand('Delete', false, null);
     20099                                        trimNbspAfterDeleteAndPaddValue();
    1985620100                                }
    1985720101
    1985820102                                parentNode = selection.getNode();
     
    2005120295                        mceInsertLink: function(command, ui, value) {
    2005220296                                var anchor;
    2005320297
    20054                                 if (typeof(value) == 'string') {
     20298                                if (typeof value == 'string') {
    2005520299                                        value = {href: value};
    2005620300                                }
    2005720301
     
    2162821872                        var self = this, i, l, matches = [], item, match;
    2162921873
    2163021874                        // Compile string into selector expression
    21631                         if (typeof(selector) === "string") {
     21875                        if (typeof selector === "string") {
    2163221876                                selector = new Selector(selector);
    2163321877
    2163421878                                match = function(item) {
     
    2201322257                        return document.getElementById(id);
    2201422258                },
    2201522259
    22016                 addClass : function(elm, cls) {
     22260                addClass: function(elm, cls) {
    2201722261                        return DOMUtils.DOM.addClass(elm, cls);
    2201822262                },
    2201922263
    22020                 removeClass : function(elm, cls) {
     22264                removeClass: function(elm, cls) {
    2202122265                        return DOMUtils.DOM.removeClass(elm, cls);
    2202222266                },
    2202322267
    22024                 hasClass : function(elm, cls) {
     22268                hasClass: function(elm, cls) {
    2202522269                        return DOMUtils.DOM.hasClass(elm, cls);
    2202622270                },
    2202722271
     
    2226522509                                return;
    2226622510                        }
    2226722511
    22268                         if (typeof(value) === "number") {
     22512                        if (typeof value === "number") {
    2226922513                                value = value || 0;
    2227022514
    2227122515                                return {
     
    2236522609                        width = settings.width;
    2236622610                        height = settings.height;
    2236722611                        autoResize = settings.autoResize;
    22368                         autoResize = typeof(autoResize) != "undefined" ? autoResize : !width && !height;
     22612                        autoResize = typeof autoResize != "undefined" ? autoResize : !width && !height;
    2236922613
    2237022614                        width = width || minWidth;
    2237122615                        height = height || minHeight;
     
    2259022834                        function resolveCallbackName(name) {
    2259122835                                var callback, scope;
    2259222836
    22593                                 if (typeof(name) != 'string') {
     22837                                if (typeof name != 'string') {
    2259422838                                        return name;
    2259522839                                }
    2259622840
     
    2292023164                visible: function(state) {
    2292123165                        var self = this, parentCtrl;
    2292223166
    22923                         if (typeof(state) !== "undefined") {
     23167                        if (typeof state !== "undefined") {
    2292423168                                if (self._visible !== state) {
    2292523169                                        if (self._rendered) {
    2292623170                                                self.getEl().style.display = state ? '' : 'none';
     
    2300223246                aria: function(name, value) {
    2300323247                        var self = this, elm = self.getEl(self.ariaTarget);
    2300423248
    23005                         if (typeof(value) === "undefined") {
     23249                        if (typeof value === "undefined") {
    2300623250                                return self._aria[name];
    2300723251                        } else {
    2300823252                                self._aria[name] = value;
     
    2332623570                                                for (i = lastParents.length - 1; i >= idx; i--) {
    2332723571                                                        lastCtrl = lastParents[i];
    2332823572                                                        lastCtrl.fire("mouseleave", {
    23329                                                                 target : lastCtrl.getEl()
     23573                                                                target: lastCtrl.getEl()
    2333023574                                                        });
    2333123575                                                }
    2333223576                                        }
     
    2333423578                                        for (i = idx; i < parents.length; i++) {
    2333523579                                                ctrl = parents[i];
    2333623580                                                ctrl.fire("mouseenter", {
    23337                                                         target : ctrl.getEl()
     23581                                                        target: ctrl.getEl()
    2333823582                                                });
    2333923583                                        }
    2334023584                                }
     
    2361823862                        }
    2361923863
    2362023864                        // If string is specified then use it as the type
    23621                         if (typeof(type) == 'string') {
     23865                        if (typeof type == 'string') {
    2362223866                                settings = settings || {};
    2362323867                                settings.type = type;
    2362423868                        } else {
     
    2426524509                                        // Construct item if needed
    2426624510                                        if (!(item instanceof Control)) {
    2426724511                                                // Name only then convert it to an object
    24268                                                 if (typeof(item) == "string") {
     24512                                                if (typeof item == "string") {
    2426924513                                                        item = {type: item};
    2427024514                                                }
    2427124515
     
    2440324647                        self.find('*').each(function(ctrl) {
    2440424648                                var name = ctrl.name(), value = ctrl.value();
    2440524649
    24406                                 if (name && typeof(value) != "undefined") {
     24650                                if (name && typeof value != "undefined") {
    2440724651                                        data[name] = value;
    2440824652                                }
    2440924653                        });
     
    2488125125                        self.preRender();
    2488225126                        layout.preRender(self);
    2488325127
    24884                         if (typeof(innerHtml) == "undefined") {
     25128                        if (typeof innerHtml == "undefined") {
    2488525129                                innerHtml = (
    2488625130                                        '<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
    2488725131                                                layout.renderHtml(self) +
    2488825132                                        '</div>'
    2488925133                                );
    2489025134                        } else {
    24891                                 if (typeof(innerHtml) == 'function') {
     25135                                if (typeof innerHtml == 'function') {
    2489225136                                        innerHtml = innerHtml.call(self);
    2489325137                                }
    2489425138
     
    2503725281                 * @return {tinymce.ui.Control} Current control instance.
    2503825282                 */
    2503925283                moveRel: function(elm, rel) {
    25040                         if (typeof(rel) != 'string') {
     25284                        if (typeof rel != 'string') {
    2504125285                                rel = this.testMoveRel(elm, rel);
    2504225286                        }
    2504325287
     
    2579426038                                html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';
    2579526039                        }
    2579626040
    25797                         if (typeof(html) == "undefined") {
     26041                        if (typeof html == "undefined") {
    2579826042                                html = layout.renderHtml(self);
    2579926043                        }
    2580026044
     
    2614326387                         * @param {function} [callback] Callback to execute when the user makes a choice.
    2614426388                         */
    2614526389                        alert: function(settings, callback) {
    26146                                 if (typeof(settings) == "string") {
     26390                                if (typeof settings == "string") {
    2614726391                                        settings = {text: settings};
    2614826392                                }
    2614926393
     
    2615926403                         * @param {function} [callback] Callback to execute when the user makes a choice.
    2616026404                         */
    2616126405                        confirm: function(settings, callback) {
    26162                                 if (typeof(settings) == "string") {
     26406                                if (typeof settings == "string") {
    2616326407                                        settings = {text: settings};
    2616426408                                }
    2616526409
     
    2624426488                 * @option {String} file URL of the file to open in the window.
    2624526489                 * @option {Number} width Width in pixels.
    2624626490                 * @option {Number} height Height in pixels.
    26247                  * @option {Boolean} resizable Specifies whether the popup window is resizable or not.
    26248                  * @option {Boolean} maximizable Specifies whether the popup window has a "maximize" button and can get maximized or not.
    26249                  * @option {String/Boolean} scrollbars Specifies whether the popup window can have scrollbars if required (i.e. content
     26491                 * @option {Boolean} autoScroll Specifies whether the popup window can have scrollbars if required (i.e. content
    2625026492                 * larger than the popup size specified).
    2625126493                 */
    2625226494                self.open = function(args, params) {
     
    2644226684define("tinymce/util/Quirks", [
    2644326685        "tinymce/util/VK",
    2644426686        "tinymce/dom/RangeUtils",
     26687        "tinymce/dom/TreeWalker",
    2644526688        "tinymce/html/Node",
    2644626689        "tinymce/html/Entities",
    2644726690        "tinymce/Env",
    2644826691        "tinymce/util/Tools"
    26449 ], function(VK, RangeUtils, Node, Entities, Env, Tools) {
     26692], function(VK, RangeUtils, TreeWalker, Node, Entities, Env, Tools) {
    2645026693        return function(editor) {
    26451                 var each = Tools.each;
     26694                var each = Tools.each, $ = editor.$;
    2645226695                var BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection,
    2645326696                        settings = editor.settings, parser = editor.parser, serializer = editor.serializer;
    2645426697                var isGecko = Env.gecko, isIE = Env.ie, isWebKit = Env.webkit;
     26698                var mceInternalUrlPrefix = 'data:text/mce-internal,';
     26699                var mceInternalDataType = isIE ? 'Text' : 'URL';
    2645526700
    2645626701                /**
    2645726702                 * Executes a command with a specific state this can be to enable/disable browser editing features.
     
    2648526730                }
    2648626731
    2648726732                /**
     26733                 * Sets Text/URL data on the event's dataTransfer object to a special data:text/mce-internal url.
     26734                 * This is to workaround the inability to set custom contentType on IE and Safari.
     26735                 * The editor's selected content is encoded into this url so drag and drop between editors will work.
     26736                 *
     26737                 * @private
     26738                 * @param {DragEvent} e Event object
     26739                 */
     26740                function setMceInteralContent(e) {
     26741                        var selectionHtml;
     26742
     26743                        if (e.dataTransfer) {
     26744                                if (editor.selection.isCollapsed() && e.target.tagName == 'IMG') {
     26745                                        selection.select(e.target);
     26746                                }
     26747
     26748                                selectionHtml = editor.selection.getContent();
     26749
     26750                                // Safari/IE doesn't support custom dataTransfer items so we can only use URL and Text
     26751                                if (selectionHtml.length > 0) {
     26752                                        e.dataTransfer.setData(mceInternalDataType, mceInternalUrlPrefix + escape(selectionHtml));
     26753                                }
     26754                        }
     26755                }
     26756
     26757                /**
     26758                 * Gets content of special data:text/mce-internal url on the event's dataTransfer object.
     26759                 * This is to workaround the inability to set custom contentType on IE and Safari.
     26760                 * The editor's selected content is encoded into this url so drag and drop between editors will work.
     26761                 *
     26762                 * @private
     26763                 * @param {DragEvent} e Event object
     26764                 * @returns {String} mce-internal content
     26765                 */
     26766                function getMceInternalContent(e) {
     26767                        var internalContent, content;
     26768
     26769                        if (e.dataTransfer) {
     26770                                internalContent = e.dataTransfer.getData(mceInternalDataType);
     26771
     26772                                if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {
     26773                                        content = unescape(internalContent.substr(mceInternalUrlPrefix.length));
     26774                                }
     26775                        }
     26776
     26777                        return content;
     26778                }
     26779
     26780                /**
     26781                 * Inserts contents using the paste clipboard command if it's available if it isn't it will fallback
     26782                 * to the core command.
     26783                 *
     26784                 * @private
     26785                 * @param {String} content Content to insert at selection.
     26786                 */
     26787                function insertClipboardContents(content) {
     26788                        if (editor.queryCommandSupported('mceInsertClipboardContent')) {
     26789                                editor.execCommand('mceInsertClipboardContent', false, {content: content});
     26790                        } else {
     26791                                editor.execCommand('mceInsertContent', false, content);
     26792                        }
     26793                }
     26794
     26795                /**
    2648826796                 * Fixes a WebKit bug when deleting contents using backspace or delete key.
    2648926797                 * WebKit will produce a span element if you delete across two block elements.
    2649026798                 *
     
    2650626814                 *  4. Delete by pressing delete key with ctrl/cmd (Word delete).
    2650726815                 *  5. Delete by drag/dropping contents inside the editor.
    2650826816                 *  6. Delete by using Cut Ctrl+X/Cmd+X.
    26509                  *  7. Delete by selecting contents and writing a character.'
     26817                 *  7. Delete by selecting contents and writing a character.
    2651026818                 *
    2651126819                 * This code is a ugly hack since writing full custom delete logic for just this bug
    2651226820                 * fix seemed like a huge task. I hope we can remove this before the year 2030.
    2651326821                 */
    2651426822                function cleanupStylesWhenDeleting() {
    26515                         var doc = editor.getDoc(), urlPrefix = 'data:text/mce-internal,';
     26823                        var doc = editor.getDoc(), dom = editor.dom, selection = editor.selection;
    2651626824                        var MutationObserver = window.MutationObserver, olderWebKit, dragStartRng;
    2651726825
    2651826826                        // Add mini polyfill for older WebKits
     
    2655426862                                };
    2655526863                        }
    2655626864
     26865                        function isTrailingBr(node) {
     26866                                var blockElements = dom.schema.getBlockElements(), rootNode = editor.getBody();
     26867
     26868                                if (node.nodeName != 'BR') {
     26869                                        return false;
     26870                                }
     26871
     26872                                for (node = node; node != rootNode && !blockElements[node.nodeName]; node = node.parentNode) {
     26873                                        if (node.nextSibling) {
     26874                                                return false;
     26875                                        }
     26876                                }
     26877
     26878                                return true;
     26879                        }
     26880
     26881                        function findCaretNode(node, forward, startNode) {
     26882                                var walker, current, nonEmptyElements;
     26883
     26884                                nonEmptyElements = dom.schema.getNonEmptyElements();
     26885
     26886                                walker = new TreeWalker(startNode || node, node);
     26887
     26888                                while ((current = walker[forward ? 'next' : 'prev']())) {
     26889                                        if (nonEmptyElements[current.nodeName] && !isTrailingBr(current)) {
     26890                                                return current;
     26891                                        }
     26892
     26893                                        if (current.nodeType == 3 && current.data.length > 0) {
     26894                                                return current;
     26895                                        }
     26896                                }
     26897                        }
     26898
     26899                        function deleteRangeBetweenTextBlocks(rng) {
     26900                                var startBlock, endBlock, caretNodeBefore, caretNodeAfter, textBlockElements;
     26901
     26902                                if (rng.collapsed) {
     26903                                        return;
     26904                                }
     26905
     26906                                startBlock = dom.getParent(RangeUtils.getNode(rng.startContainer, rng.startOffset), dom.isBlock);
     26907                                endBlock = dom.getParent(RangeUtils.getNode(rng.endContainer, rng.endOffset), dom.isBlock);
     26908                                textBlockElements = editor.schema.getTextBlockElements();
     26909
     26910                                if (startBlock == endBlock) {
     26911                                        return;
     26912                                }
     26913
     26914                                if (!textBlockElements[startBlock.nodeName] || !textBlockElements[endBlock.nodeName]) {
     26915                                        return;
     26916                                }
     26917
     26918                                if (dom.getContentEditable(startBlock) === "false" || dom.getContentEditable(endBlock) === "false") {
     26919                                        return;
     26920                                }
     26921
     26922                                rng.deleteContents();
     26923
     26924                                caretNodeBefore = findCaretNode(startBlock, false);
     26925                                caretNodeAfter = findCaretNode(endBlock, true);
     26926
     26927                                if (!dom.isEmpty(endBlock)) {
     26928                                        $(startBlock).append(endBlock.childNodes);
     26929                                }
     26930
     26931                                $(endBlock).remove();
     26932
     26933                                if (caretNodeBefore) {
     26934                                        if (caretNodeBefore.nodeType == 1) {
     26935                                                if (caretNodeBefore.nodeName == "BR") {
     26936                                                        rng.setStartBefore(caretNodeBefore);
     26937                                                        rng.setEndBefore(caretNodeBefore);
     26938                                                } else {
     26939                                                        rng.setStartAfter(caretNodeBefore);
     26940                                                        rng.setEndAfter(caretNodeBefore);
     26941                                                }
     26942                                        } else {
     26943                                                rng.setStart(caretNodeBefore, caretNodeBefore.data.length);
     26944                                                rng.setEnd(caretNodeBefore, caretNodeBefore.data.length);
     26945                                        }
     26946                                } else if (caretNodeAfter) {
     26947                                        if (caretNodeAfter.nodeType == 1) {
     26948                                                rng.setStartBefore(caretNodeAfter);
     26949                                                rng.setEndBefore(caretNodeAfter);
     26950                                        } else {
     26951                                                rng.setStart(caretNodeAfter, 0);
     26952                                                rng.setEnd(caretNodeAfter, 0);
     26953                                        }
     26954                                }
     26955
     26956                                selection.setRng(rng);
     26957
     26958                                return true;
     26959                        }
     26960
     26961                        function expandBetweenBlocks(rng, isForward) {
     26962                                var caretNode, targetCaretNode, textBlock, targetTextBlock, container, offset;
     26963
     26964                                if (!rng.collapsed) {
     26965                                        return rng;
     26966                                }
     26967
     26968                                container = rng.startContainer;
     26969                                offset = rng.startOffset;
     26970
     26971                                if (container.nodeType == 3) {
     26972                                        if (isForward) {
     26973                                                if (offset < container.data.length) {
     26974                                                        return rng;
     26975                                                }
     26976                                        } else {
     26977                                                if (offset > 0) {
     26978                                                        return rng;
     26979                                                }
     26980                                        }
     26981                                }
     26982
     26983                                caretNode = RangeUtils.getNode(rng.startContainer, rng.startOffset);
     26984                                textBlock = dom.getParent(caretNode, dom.isBlock);
     26985                                targetCaretNode = findCaretNode(editor.getBody(), isForward, caretNode);
     26986                                targetTextBlock = dom.getParent(targetCaretNode, dom.isBlock);
     26987
     26988                                if (!caretNode || !targetCaretNode) {
     26989                                        return rng;
     26990                                }
     26991
     26992                                if (textBlock != targetTextBlock) {
     26993                                        if (!isForward) {
     26994                                                if (targetCaretNode.nodeType == 1) {
     26995                                                        if (targetCaretNode.nodeName == "BR") {
     26996                                                                rng.setStartBefore(targetCaretNode);
     26997                                                        } else {
     26998                                                                rng.setStartAfter(targetCaretNode);
     26999                                                        }
     27000                                                } else {
     27001                                                        rng.setStart(targetCaretNode, targetCaretNode.data.length);
     27002                                                }
     27003
     27004                                                if (caretNode.nodeType == 1) {
     27005                                                        rng.setEnd(caretNode, 0);
     27006                                                } else {
     27007                                                        rng.setEndBefore(caretNode);
     27008                                                }
     27009                                        } else {
     27010                                                if (caretNode.nodeType == 1) {
     27011                                                        if (caretNode.nodeName == "BR") {
     27012                                                                rng.setStartBefore(caretNode);
     27013                                                        } else {
     27014                                                                rng.setStartAfter(caretNode);
     27015                                                        }
     27016                                                } else {
     27017                                                        rng.setStart(caretNode, caretNode.data.length);
     27018                                                }
     27019
     27020                                                if (targetCaretNode.nodeType == 1) {
     27021                                                        rng.setEnd(targetCaretNode, 0);
     27022                                                } else {
     27023                                                        rng.setEndBefore(targetCaretNode);
     27024                                                }
     27025                                        }
     27026                                }
     27027
     27028                                return rng;
     27029                        }
     27030
     27031                        function handleTextBlockMergeDelete(isForward) {
     27032                                var rng = selection.getRng();
     27033
     27034                                rng = expandBetweenBlocks(rng, isForward);
     27035
     27036                                if (deleteRangeBetweenTextBlocks(rng)) {
     27037                                        return true;
     27038                                }
     27039                        }
     27040
    2655727041                        function customDelete(isForward) {
    26558                                 var mutationObserver = new MutationObserver(function() {});
     27042                                var mutationObserver, rng, caretElement;
     27043
     27044                                if (handleTextBlockMergeDelete(isForward)) {
     27045                                        return;
     27046                                }
    2655927047
    2656027048                                Tools.each(editor.getBody().getElementsByTagName('*'), function(elm) {
    2656127049                                        // Mark existing spans
     
    2657027058                                });
    2657127059
    2657227060                                // Observe added nodes and style attribute changes
     27061                                mutationObserver = new MutationObserver(function() {});
    2657327062                                mutationObserver.observe(editor.getDoc(), {
    2657427063                                        childList: true,
    2657527064                                        attributes: true,
     
    2657927068
    2658027069                                editor.getDoc().execCommand(isForward ? 'ForwardDelete' : 'Delete', false, null);
    2658127070
    26582                                 var rng = editor.selection.getRng();
    26583                                 var caretElement = rng.startContainer.parentNode;
     27071                                rng = editor.selection.getRng();
     27072                                caretElement = rng.startContainer.parentNode;
    2658427073
    2658527074                                Tools.each(mutationObserver.takeRecords(), function(record) {
    2658627075                                        if (!dom.isChildOf(record.target, editor.getBody())) {
     
    2662827117                        }
    2662927118
    2663027119                        editor.on('keydown', function(e) {
    26631                                 var isForward = e.keyCode == DELETE, isMeta = VK.metaKeyPressed(e);
     27120                                var isForward = e.keyCode == DELETE, isMetaOrCtrl = e.ctrlKey || e.metaKey;
    2663227121
    2663327122                                if (!isDefaultPrevented(e) && (isForward || e.keyCode == BACKSPACE)) {
    2663427123                                        var rng = editor.selection.getRng(), container = rng.startContainer, offset = rng.startOffset;
    2663527124
    2663627125                                        // Ignore non meta delete in the where there is text before/after the caret
    26637                                         if (!isMeta && rng.collapsed && container.nodeType == 3) {
     27126                                        if (!isMetaOrCtrl && rng.collapsed && container.nodeType == 3) {
    2663827127                                                if (isForward ? offset < container.data.length : offset > 0) {
    2663927128                                                        return;
    2664027129                                                }
     
    2664227131
    2664327132                                        e.preventDefault();
    2664427133
    26645                                         if (isMeta) {
    26646                                                 editor.selection.getSel().modify("extend", isForward ? "forward" : "backward", "word");
     27134                                        if (isMetaOrCtrl) {
     27135                                                editor.selection.getSel().modify("extend", isForward ? "forward" : "backward", e.metaKey ? "lineboundary" : "word");
    2664727136                                        }
    2664827137
    2664927138                                        customDelete(isForward);
    2665027139                                }
    2665127140                        });
    2665227141
     27142                        // Handle case where text is deleted by typing over
    2665327143                        editor.on('keypress', function(e) {
    2665427144                                if (!isDefaultPrevented(e) && !selection.isCollapsed() && e.charCode && !VK.metaKeyPressed(e)) {
     27145                                        var rng, currentFormatNodes, fragmentNode, blockParent, caretNode, charText;
     27146
     27147                                        rng = editor.selection.getRng();
     27148                                        charText = String.fromCharCode(e.charCode);
    2665527149                                        e.preventDefault();
     27150
     27151                                        // Keep track of current format nodes
     27152                                        currentFormatNodes = $(rng.startContainer).parents().filter(function(idx, node) {
     27153                                                return !!editor.schema.getTextInlineElements()[node.nodeName];
     27154                                        });
     27155
    2665627156                                        customDelete(true);
    26657                                         editor.selection.setContent(String.fromCharCode(e.charCode));
     27157
     27158                                        // Check if the browser removed them
     27159                                        currentFormatNodes = currentFormatNodes.filter(function(idx, node) {
     27160                                                return !$.contains(editor.getBody(), node);
     27161                                        });
     27162
     27163                                        // Then re-add them
     27164                                        if (currentFormatNodes.length) {
     27165                                                fragmentNode = dom.createFragment();
     27166
     27167                                                currentFormatNodes.each(function(idx, formatNode) {
     27168                                                        formatNode = formatNode.cloneNode(false);
     27169
     27170                                                        if (fragmentNode.hasChildNodes()) {
     27171                                                                formatNode.appendChild(fragmentNode.firstChild);
     27172                                                                fragmentNode.appendChild(formatNode);
     27173                                                        } else {
     27174                                                                caretNode = formatNode;
     27175                                                                fragmentNode.appendChild(formatNode);
     27176                                                        }
     27177
     27178                                                        fragmentNode.appendChild(formatNode);
     27179                                                });
     27180
     27181                                                caretNode.appendChild(editor.getDoc().createTextNode(charText));
     27182
     27183                                                // Prevent edge case where older WebKit would add an extra BR element
     27184                                                blockParent = dom.getParent(rng.startContainer, dom.isBlock);
     27185                                                if (dom.isEmpty(blockParent)) {
     27186                                                        $(blockParent).empty().append(fragmentNode);
     27187                                                } else {
     27188                                                        rng.insertNode(fragmentNode);
     27189                                                }
     27190
     27191                                                rng.setStart(caretNode.firstChild, 1);
     27192                                                rng.setEnd(caretNode.firstChild, 1);
     27193                                                editor.selection.setRng(rng);
     27194                                        } else {
     27195                                                editor.selection.setContent(charText);
     27196                                        }
    2665827197                                }
    2665927198                        });
    2666027199
     
    2667227211                        }
    2667327212
    2667427213                        editor.on('dragstart', function(e) {
    26675                                 var selectionHtml;
    26676 
    26677                                 if (editor.selection.isCollapsed() && e.target.tagName == 'IMG') {
    26678                                         selection.select(e.target);
    26679                                 }
    26680 
    2668127214                                dragStartRng = selection.getRng();
    26682                                 selectionHtml = editor.selection.getContent();
    26683 
    26684                                 // Safari doesn't support custom dataTransfer items so we can only use URL and Text
    26685                                 if (selectionHtml.length > 0) {
    26686                                         e.dataTransfer.setData('URL', 'data:text/mce-internal,' + escape(selectionHtml));
    26687                                 }
     27215                                setMceInteralContent(e);
    2668827216                        });
    2668927217
    2669027218                        editor.on('drop', function(e) {
    2669127219                                if (!isDefaultPrevented(e)) {
    26692                                         var internalContent = e.dataTransfer.getData('URL');
    26693 
    26694                                         if (!internalContent || internalContent.indexOf(urlPrefix) == -1 || !doc.caretRangeFromPoint) {
    26695                                                 return;
    26696                                         }
    26697 
    26698                                         internalContent = unescape(internalContent.substr(urlPrefix.length));
    26699                                         if (doc.caretRangeFromPoint) {
     27220                                        var internalContent = getMceInternalContent(e);
     27221                                        if (internalContent) {
    2670027222                                                e.preventDefault();
    2670127223
    2670227224                                                // Safari has a weird issue where drag/dropping images sometimes
     
    2670427226                                                // will return "null" even though the x, y coordinate is correct.
    2670527227                                                // But if we detach the insert from the drop event we will get a proper range
    2670627228                                                window.setTimeout(function() {
    26707                                                         var pointRng = doc.caretRangeFromPoint(e.x, e.y);
     27229                                                        var pointRng = RangeUtils.getCaretRangeFromPoint(e.x, e.y, doc);
    2670827230
    2670927231                                                        if (dragStartRng) {
    2671027232                                                                selection.setRng(dragStartRng);
     
    2671227234                                                        }
    2671327235
    2671427236                                                        customDelete();
    26715 
    2671627237                                                        selection.setRng(pointRng);
    26717                                                         editor.insertContent(internalContent);
     27238                                                        insertClipboardContents(internalContent);
    2671827239                                                }, 0);
    2671927240                                        }
    26720 
    2672127241                                }
    2672227242                        });
    2672327243
     
    2681127331                 * This selects the whole body so that backspace/delete logic will delete everything
    2681227332                 */
    2681327333                function selectAll() {
    26814                         editor.shortcuts.add('ctrl+a', null, 'SelectAll');
     27334                        editor.shortcuts.add('meta+a', null, 'SelectAll');
    2681527335                }
    2681627336
    2681727337                /**
     
    2744927969                                editor.contentStyles.push('body {min-height: 150px}');
    2745027970                                editor.on('click', function(e) {
    2745127971                                        if (e.target.nodeName == 'HTML') {
     27972                                                var rng;
     27973
     27974                                                // Need to store away non collapsed ranges since the focus call will mess that up see #7382
     27975                                                rng = editor.selection.getRng();
    2745227976                                                editor.getBody().focus();
     27977                                                editor.selection.setRng(rng);
    2745327978                                                editor.selection.normalize();
    2745427979                                                editor.nodeChanged();
    2745527980                                        }
     
    2760528130                        });
    2760628131                }
    2760728132
     28133                /**
     28134                 * IE cannot set custom contentType's on drag events, and also does not properly drag/drop between
     28135                 * editors. This uses a special data:text/mce-internal URL to pass data when drag/drop between editors.
     28136                 */
     28137                function ieInternalDragAndDrop() {
     28138                        editor.on('dragstart', function(e) {
     28139                                setMceInteralContent(e);
     28140                        });
     28141
     28142                        editor.on('drop', function(e) {
     28143                                if (!isDefaultPrevented(e)) {
     28144                                        var internalContent = getMceInternalContent(e);
     28145                                        if (internalContent) {
     28146                                                e.preventDefault();
     28147
     28148                                                var rng = RangeUtils.getCaretRangeFromPoint(e.x, e.y, editor.getDoc());
     28149                                                selection.setRng(rng);
     28150                                                insertClipboardContents(internalContent);
     28151                                        }
     28152                                }
     28153                        });
     28154                }
     28155
    2760828156                // All browsers
    2760928157                removeBlockQuoteOnBackSpace();
    2761028158                emptyEditorWhenDeleting();
     
    2765228200                if (Env.ie) {
    2765328201                        selectAll();
    2765428202                        disableAutoUrlDetect();
     28203                        ieInternalDragAndDrop();
    2765528204                }
    2765628205
    2765728206                // Gecko
     
    2802228571
    2802328572/**
    2802428573 * Contains all logic for handling of keyboard shortcuts.
     28574 *
     28575 * @example
     28576 * editor.shortcuts.add('ctrl+a', function() {});
     28577 * editor.shortcuts.add('meta+a', function() {}); // "meta" maps to Command on Mac and Ctrl on PC
     28578 * editor.shortcuts.add('ctrl+alt+a', function() {});
     28579 * editor.shortcuts.add('access+a', function() {}); // "access" maps to ctrl+alt on Mac and shift+alt on PC
    2802528580 */
    2802628581define("tinymce/Shortcuts", [
    2802728582        "tinymce/util/Tools",
     
    2803528590                "f11": 122
    2803628591        };
    2803728592
     28593        var modifierNames = Tools.makeMap('alt,ctrl,shift,meta,access');
     28594
    2803828595        return function(editor) {
    2803928596                var self = this, shortcuts = {};
    2804028597
     28598                function createShortcut(pattern, desc, cmdFunc, scope) {
     28599                        var id, key, shortcut;
     28600
     28601                        shortcut = {
     28602                                func: cmdFunc,
     28603                                scope: scope || editor,
     28604                                desc: editor.translate(desc)
     28605                        };
     28606
     28607                        // Parse modifiers and keys ctrl+alt+b for example
     28608                        each(explode(pattern, '+'), function(value) {
     28609                                if (value in modifierNames) {
     28610                                        shortcut[value] = true;
     28611                                } else {
     28612                                        // Allow numeric keycodes like ctrl+219 for ctrl+[
     28613                                        if (/^[0-9]{2,}$/.test(value)) {
     28614                                                shortcut.keyCode = parseInt(value, 10);
     28615                                        } else {
     28616                                                shortcut.charCode = value.charCodeAt(0);
     28617                                                shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);
     28618                                        }
     28619                                }
     28620                        });
     28621
     28622                        // Generate unique id for modifier combination and set default state for unused modifiers
     28623                        id = [shortcut.keyCode];
     28624                        for (key in modifierNames) {
     28625                                if (shortcut[key]) {
     28626                                        id.push(key);
     28627                                } else {
     28628                                        shortcut[key] = false;
     28629                                }
     28630                        }
     28631                        shortcut.id = id.join(',');
     28632
     28633                        // Handle special access modifier differently depending on Mac/Win
     28634                        if (shortcut.access) {
     28635                                shortcut.alt = true;
     28636
     28637                                if (Env.mac) {
     28638                                        shortcut.ctrl = true;
     28639                                } else {
     28640                                        shortcut.shift = true;
     28641                                }
     28642                        }
     28643
     28644                        // Handle special meta modifier differently depending on Mac/Win
     28645                        if (shortcut.meta) {
     28646                                if (Env.mac) {
     28647                                        shortcut.meta = true;
     28648                                } else {
     28649                                        shortcut.ctrl = true;
     28650                                        shortcut.meta = false;
     28651                                }
     28652                        }
     28653
     28654                        return shortcut;
     28655                }
     28656
    2804128657                editor.on('keyup keypress keydown', function(e) {
    2804228658                        if ((e.altKey || e.ctrlKey || e.metaKey) && !e.isDefaultPrevented()) {
    2804328659                                each(shortcuts, function(shortcut) {
    28044                                         var ctrlKey = Env.mac ? e.metaKey : e.ctrlKey;
     28660                                        if (shortcut.ctrl != e.ctrlKey || shortcut.meta != e.metaKey) {
     28661                                                return;
     28662                                        }
    2804528663
    28046                                         if (shortcut.ctrl != ctrlKey || shortcut.alt != e.altKey || shortcut.shift != e.shiftKey) {
     28664                                        if (shortcut.alt != e.altKey || shortcut.shift != e.shiftKey) {
    2804728665                                                return;
    2804828666                                        }
    2804928667
     
    2807528693
    2807628694                        cmd = cmdFunc;
    2807728695
    28078                         if (typeof(cmdFunc) === 'string') {
     28696                        if (typeof cmdFunc === 'string') {
    2807928697                                cmdFunc = function() {
    2808028698                                        editor.execCommand(cmd, false, null);
    2808128699                                };
     
    2808628704                        }
    2808728705
    2808828706                        each(explode(pattern.toLowerCase()), function(pattern) {
    28089                                 var shortcut = {
    28090                                         func: cmdFunc,
    28091                                         scope: scope || editor,
    28092                                         desc: editor.translate(desc),
    28093                                         alt: false,
    28094                                         ctrl: false,
    28095                                         shift: false
    28096                                 };
     28707                                var shortcut = createShortcut(pattern, desc, cmdFunc, scope);
     28708                                shortcuts[shortcut.id] = shortcut;
     28709                        });
    2809728710
    28098                                 each(explode(pattern, '+'), function(value) {
    28099                                         switch (value) {
    28100                                                 case 'alt':
    28101                                                 case 'ctrl':
    28102                                                 case 'shift':
    28103                                                         shortcut[value] = true;
    28104                                                         break;
     28711                        return true;
     28712                };
    2810528713
    28106                                                 default:
    28107                                                         // Allow numeric keycodes like ctrl+219 for ctrl+[
    28108                                                         if (/^[0-9]{2,}$/.test(value)) {
    28109                                                                 shortcut.keyCode = parseInt(value, 10);
    28110                                                         } else {
    28111                                                                 shortcut.charCode = value.charCodeAt(0);
    28112                                                                 shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);
    28113                                                         }
    28114                                         }
    28115                                 });
     28714                /**
     28715                 * Remove a keyboard shortcut by pattern.
     28716                 *
     28717                 * @method remove
     28718                 * @param {String} pattern Shortcut pattern. Like for example: ctrl+alt+o.
     28719                 * @return {Boolean} true/false state if the shortcut was removed or not.
     28720                 */
     28721                self.remove = function(pattern) {
     28722                        var shortcut = createShortcut(pattern);
    2811628723
    28117                                 shortcuts[
    28118                                         (shortcut.ctrl ? 'ctrl' : '') + ',' +
    28119                                         (shortcut.alt ? 'alt' : '') + ',' +
    28120                                         (shortcut.shift ? 'shift' : '') + ',' +
    28121                                         shortcut.keyCode
    28122                                 ] = shortcut;
    28123                         });
     28724                        if (shortcuts[shortcut.id]) {
     28725                                delete shortcuts[shortcut.id];
     28726                                return true;
     28727                        }
    2812428728
    28125                         return true;
     28729                        return false;
    2812628730                };
    2812728731        };
    2812828732});
     
    2826928873                        inline_styles: true,
    2827028874                        convert_fonts_to_spans: true,
    2827128875                        indent: 'simple',
    28272                         indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,ol,li,dl,dt,dd,area,table,thead,' +
     28876                        indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' +
    2827328877                                'tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist',
    28274                         indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,ol,li,dl,dt,dd,area,table,thead,' +
     28878                        indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' +
    2827528879                                'tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist',
    2827628880                        validate: true,
    2827728881                        entity_encoding: 'named',
     
    2836928973
    2837028974                // Creates all events like onClick, onSetContent etc see Editor.Events.js for the actual logic
    2837128975                self.shortcuts = new Shortcuts(self);
    28372 
    28373                 // Internal command handler objects
    28374                 self.execCommands = {};
    28375                 self.queryStateCommands = {};
    28376                 self.queryValueCommands = {};
    2837728976                self.loadedCSS = {};
     28977                self.editorCommands = new EditorCommands(self);
    2837828978
    2837928979                if (settings.target) {
    2838028980                        self.targetElm = settings.target;
     
    2861229212                        var self = this, settings = self.settings, elm = self.getElement();
    2861329213                        var w, h, minHeight, n, o, Theme, url, bodyId, bodyClass, re, i, initializedPlugins = [];
    2861429214
     29215                        this.editorManager.i18n.setCode(settings.language);
    2861529216                        self.rtl = this.editorManager.i18n.rtl;
    2861629217                        self.editorManager.add(self);
    2861729218
     
    2869329294
    2869429295                                        // Resize editor
    2869529296                                        if (!settings.content_editable) {
    28696                                                 h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');
     29297                                                h = (o.iframeHeight || h) + (typeof h == 'number' ? (o.deltaHeight || 0) : '');
    2869729298                                                if (h < minHeight) {
    2869829299                                                        h = minHeight;
    2869929300                                                }
     
    2905729658
    2905829659                        self.forceBlocks = new ForceBlocks(self);
    2905929660                        self.enterKey = new EnterKey(self);
    29060                         self.editorCommands = new EditorCommands(self);
    2906129661                        self._nodeChangeDispatcher = new NodeChange(self);
    2906229662
    2906329663                        self.fire('PreInit');
     
    2924529845                                scope = scope.scope;
    2924629846                        }
    2924729847
    29248                         if (typeof(callback) === 'string') {
     29848                        if (typeof callback === 'string') {
    2924929849                                scope = callback.replace(/\.\w+$/, '');
    2925029850                                scope = scope ? resolve(scope) : 0;
    2925129851                                callback = resolve(callback);
     
    2931129911                        if (type === 'hash') {
    2931229912                                output = {};
    2931329913
    29314                                 if (typeof(value) === 'string') {
     29914                                if (typeof value === 'string') {
    2931529915                                        each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function(value) {
    2931629916                                                value = value.split('=');
    2931729917
     
    2945230052                         * @param {Object} value Optional value for command.
    2945330053                         * @return {Boolean} True/false state if the command was handled or not.
    2945430054                         */
    29455                         this.execCommands[name] = {func: callback, scope: scope || this};
     30055                        this.editorCommands.addCommand(name, callback, scope);
    2945630056                },
    2945730057
    2945830058                /**
     
    2947130071                         * @callback addQueryStateHandlerCallback
    2947230072                         * @return {Boolean} True/false state if the command is enabled or not like is it bold.
    2947330073                         */
    29474                         this.queryStateCommands[name] = {func: callback, scope: scope || this};
     30074                        this.editorCommands.addQueryStateHandler(name, callback, scope);
    2947530075                },
    2947630076
    2947730077                /**
     
    2949030090                         * @callback addQueryValueHandlerCallback
    2949130091                         * @return {Object} Value of the command or undefined.
    2949230092                         */
    29493                         this.queryValueCommands[name] = {func: callback, scope: scope || this};
     30093                        this.editorCommands.addQueryValueHandler(name, callback, scope);
    2949430094                },
    2949530095
    2949630096                /**
     
    2951730117                 * @param {String} cmd Command name to execute, for example mceLink or Bold.
    2951830118                 * @param {Boolean} ui True/false state if a UI (dialog) should be presented or not.
    2951930119                 * @param {mixed} value Optional command value, this can be anything.
    29520                  * @param {Object} a Optional arguments object.
     30120                 * @param {Object} args Optional arguments object.
    2952130121                 */
    2952230122                execCommand: function(cmd, ui, value, args) {
    29523                         var self = this, state = 0, cmdItem;
    29524 
    29525                         if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(cmd) && (!args || !args.skip_focus)) {
    29526                                 self.focus();
    29527                         }
    29528 
    29529                         args = extend({}, args);
    29530                         args = self.fire('BeforeExecCommand', {command: cmd, ui: ui, value: value});
    29531                         if (args.isDefaultPrevented()) {
    29532                                 return false;
    29533                         }
    29534 
    29535                         // Registred commands
    29536                         if ((cmdItem = self.execCommands[cmd])) {
    29537                                 // Fall through on true
    29538                                 if (cmdItem.func.call(cmdItem.scope, ui, value) !== true) {
    29539                                         self.fire('ExecCommand', {command: cmd, ui: ui, value: value});
    29540                                         return true;
    29541                                 }
    29542                         }
    29543 
    29544                         // Plugin commands
    29545                         each(self.plugins, function(p) {
    29546                                 if (p.execCommand && p.execCommand(cmd, ui, value)) {
    29547                                         self.fire('ExecCommand', {command: cmd, ui: ui, value: value});
    29548                                         state = true;
    29549                                         return false;
    29550                                 }
    29551                         });
    29552 
    29553                         if (state) {
    29554                                 return state;
    29555                         }
    29556 
    29557                         // Theme commands
    29558                         if (self.theme && self.theme.execCommand && self.theme.execCommand(cmd, ui, value)) {
    29559                                 self.fire('ExecCommand', {command: cmd, ui: ui, value: value});
    29560                                 return true;
    29561                         }
    29562 
    29563                         // Editor commands
    29564                         if (self.editorCommands.execCommand(cmd, ui, value)) {
    29565                                 self.fire('ExecCommand', {command: cmd, ui: ui, value: value});
    29566                                 return true;
    29567                         }
    29568 
    29569                         // Browser commands
    29570                         try {
    29571                                 state = self.getDoc().execCommand(cmd, ui, value);
    29572                         } catch (ex) {
    29573                                 // Ignore old IE errors
    29574                         }
    29575 
    29576                         if (state) {
    29577                                 self.fire('ExecCommand', {command: cmd, ui: ui, value: value});
    29578                                 return true;
    29579                         }
    29580 
    29581                         return false;
     30123                        return this.editorCommands.execCommand(cmd, ui, value, args);
    2958230124                },
    2958330125
    2958430126                /**
     
    2958930131                 * @return {Boolean} Command specific state, for example if bold is enabled or not.
    2959030132                 */
    2959130133                queryCommandState: function(cmd) {
    29592                         var self = this, queryItem, returnVal;
    29593 
    29594                         // Is hidden then return undefined
    29595                         if (self._isHidden()) {
    29596                                 return;
    29597                         }
    29598 
    29599                         // Registred commands
    29600                         if ((queryItem = self.queryStateCommands[cmd])) {
    29601                                 returnVal = queryItem.func.call(queryItem.scope);
    29602 
    29603                                 // Fall though on non boolean returns
    29604                                 if (returnVal === true || returnVal === false) {
    29605                                         return returnVal;
    29606                                 }
    29607                         }
    29608 
    29609                         // Editor commands
    29610                         returnVal = self.editorCommands.queryCommandState(cmd);
    29611                         if (returnVal !== -1) {
    29612                                 return returnVal;
    29613                         }
    29614 
    29615                         // Browser commands
    29616                         try {
    29617                                 return self.getDoc().queryCommandState(cmd);
    29618                         } catch (ex) {
    29619                                 // Fails sometimes see bug: 1896577
    29620                         }
     30134                        return this.editorCommands.queryCommandState(cmd);
    2962130135                },
    2962230136
    2962330137                /**
     
    2962830142                 * @return {Object} Command specific value, for example the current font size.
    2962930143                 */
    2963030144                queryCommandValue: function(cmd) {
    29631                         var self = this, queryItem, returnVal;
    29632 
    29633                         // Is hidden then return undefined
    29634                         if (self._isHidden()) {
    29635                                 return;
    29636                         }
    29637 
    29638                         // Registred commands
    29639                         if ((queryItem = self.queryValueCommands[cmd])) {
    29640                                 returnVal = queryItem.func.call(queryItem.scope);
    29641 
    29642                                 // Fall though on true
    29643                                 if (returnVal !== true) {
    29644                                         return returnVal;
    29645                                 }
    29646                         }
    29647 
    29648                         // Editor commands
    29649                         returnVal = self.editorCommands.queryCommandValue(cmd);
    29650                         if (returnVal !== undefined) {
    29651                                 return returnVal;
    29652                         }
     30145                        return this.editorCommands.queryCommandValue(cmd);
     30146                },
    2965330147
    29654                         // Browser commands
    29655                         try {
    29656                                 return self.getDoc().queryCommandValue(cmd);
    29657                         } catch (ex) {
    29658                                 // Fails sometimes see bug: 1896577
    29659                         }
     30148                /**
     30149                 * Returns true/false if the command is supported or not.
     30150                 *
     30151                 * @method queryCommandSupported
     30152                 * @param {String} cmd Command that we check support for.
     30153                 * @return {Boolean} true/false if the command is supported or not.
     30154                 */
     30155                queryCommandSupported: function(cmd) {
     30156                        return this.editorCommands.queryCommandSupported(cmd);
    2966030157                },
    2966130158
    2966230159                /**
     
    3008130578                },
    3008230579
    3008330580                /**
    30084                  * Returns the iframes body element.
     30581                 * Returns the root element of the editable area.
     30582                 * For a non-inline iframe-based editor, returns the iframe's body element.
    3008530583                 *
    3008630584                 * @method getBody
    30087                  * @return {Element} Iframe body element.
     30585                 * @return {Element} The root element of the editable area.
    3008830586                 */
    3008930587                getBody: function() {
    3009030588                        return this.bodyElement || this.getDoc().body;
     
    3032530823define("tinymce/util/I18n", [], function() {
    3032630824        "use strict";
    3032730825
    30328         var data = {};
     30826        var data = {}, code = "en";
    3032930827
    3033030828        return {
    3033130829                /**
     30830                 * Sets the current language code.
     30831                 *
     30832                 * @method setCode
     30833                 * @param {String} newCode Current language code.
     30834                 */
     30835                setCode: function(newCode) {
     30836                        if (newCode) {
     30837                                code = newCode;
     30838                                this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;
     30839                        }
     30840                },
     30841
     30842                /**
     30843                 * Returns the current language code.
     30844                 *
     30845                 * @return {String} Current language code.
     30846                 */
     30847                getCode: function() {
     30848                        return code;
     30849                },