Initial commit

This commit is contained in:
2020-04-07 13:03:04 +00:00
committed by Gitium
commit 00f842d9bf
1673 changed files with 471161 additions and 0 deletions

View File

@ -0,0 +1,66 @@
/**
* Author: Tom Usborne
* jQuery Simple Parallax for Page Header background
*
*/
// Build the header height function
function generateHeaderHeight() {
// If we're not using a full screen element, bail.
if ( ! jQuery( '.fullscreen-enabled' ).length )
return;
// Set up some variables
var page_header_content;
var window_height = jQuery( window ).height();
// Get our page header content div
if ( jQuery( '.inside-page-header' ).length ) {
page_header_content = jQuery( '.inside-page-header' );
} else if ( jQuery( '.generate-inside-combined-content' ).length ) {
page_header_content = jQuery( '.generate-inside-combined-content' );
} else {
page_header_content = jQuery( '.generate-inside-page-header-content' );
}
// Get any space above our page header
var offset = jQuery(".fullscreen-enabled").offset().top;
// Apply the height to our div
jQuery( '.fullscreen-enabled' ).css( 'height', window_height - offset + 'px' );
// If our page header content is taller than our window, remove the height
if ( page_header_content.outerHeight() > ( window_height - offset ) ) {
jQuery( '.fullscreen-enabled' ).attr( 'style', 'height: initial !important' );
}
}
jQuery(document).ready(function($) {
// Run the header height function
generateHeaderHeight();
// Set up the resize timer
var generateResizeTimer;
if ( jQuery('.generate-page-header.fullscreen-enabled')[0] ) {
// Initiate full window height on resize
var width = $(window).width();
$(window).resize(function() {
if($(window).width() != width){
clearTimeout(generateResizeTimer);
generateResizeTimer = setTimeout(generateHeaderHeight, 200);
width = $(window).width();
}
});
$( window ).on( "orientationchange", function( event ) {
if($(window).width() != width){
clearTimeout(generateResizeTimer);
generateResizeTimer = setTimeout(generateHeaderHeight, 200);
width = $(window).width();
}
});
}
});

View File

@ -0,0 +1 @@
function generateHeaderHeight(){if(jQuery(".fullscreen-enabled").length){var a,b=jQuery(window).height();a=jQuery(".inside-page-header").length?jQuery(".inside-page-header"):jQuery(".generate-inside-combined-content").length?jQuery(".generate-inside-combined-content"):jQuery(".generate-inside-page-header-content");var c=jQuery(".fullscreen-enabled").offset().top;jQuery(".fullscreen-enabled").css("height",b-c+"px"),a.outerHeight()>b-c&&jQuery(".fullscreen-enabled").attr("style","height: initial !important")}}function generateHeaderParallax(){var a=jQuery(".menu-toggle");if(!a.is(":visible")&&jQuery(".generate-page-header.parallax-enabled")[0]){if(jQuery(".page-header-contained")[0])var b=jQuery(".generate-page-header.parallax-enabled .inside-content-header");else var b=jQuery(".generate-page-header.parallax-enabled");var c=jQuery(this).scrollTop(),d=jQuery(".generate-page-header.parallax-enabled").data("parallax-speed");return b.css("background-position","center "+parseInt(-c/d)+"px")}}jQuery(document).ready(function(a){generateHeaderHeight();var b;if(jQuery(".generate-page-header.parallax-enabled")[0]&&a(document).scroll(function(){generateHeaderParallax()}),jQuery(".generate-page-header.fullscreen-enabled")[0]){var c=a(window).width();a(window).resize(function(){a(window).width()!=c&&(clearTimeout(b),b=setTimeout(generateHeaderHeight,200),c=a(window).width())}),a(window).on("orientationchange",function(d){a(window).width()!=c&&(clearTimeout(b),b=setTimeout(generateHeaderHeight,200),c=a(window).width())})}});

View File

@ -0,0 +1,9 @@
/*
* Vide - v0.5.0
* Easy as hell jQuery plugin for video backgrounds.
* http://vodkabears.github.io/vide/
*
* Made by Ilya Makarov
* Under MIT License
*/
!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],b):b("object"==typeof exports?require("jquery"):a.jQuery)}(this,function(a){"use strict";function b(a){var b,c,d,e,f,g,h,i={};for(f=a.replace(/\s*:\s*/g,":").replace(/\s*,\s*/g,",").split(","),h=0,g=f.length;g>h&&(c=f[h],-1===c.search(/^(http|https|ftp):\/\//)&&-1!==c.search(":"));h++)b=c.indexOf(":"),d=c.substring(0,b),e=c.substring(b+1),e||(e=void 0),"string"==typeof e&&(e="true"===e||("false"===e?!1:e)),"string"==typeof e&&(e=isNaN(e)?e:+e),i[d]=e;return null==d&&null==e?a:i}function c(a){a=""+a;var b,c,d,e=a.split(/\s+/),f="50%",g="50%";for(d=0,b=e.length;b>d;d++)c=e[d],"left"===c?f="0%":"right"===c?f="100%":"top"===c?g="0%":"bottom"===c?g="100%":"center"===c?0===d?f="50%":g="50%":0===d?f=c:g=c;return{x:f,y:g}}function d(b,c){var d=function(){c(this.src)};a('<img src="'+b+'.gif">').load(d),a('<img src="'+b+'.jpg">').load(d),a('<img src="'+b+'.jpeg">').load(d),a('<img src="'+b+'.png">').load(d)}function e(c,d,e){if(this.$element=a(c),"string"==typeof d&&(d=b(d)),e?"string"==typeof e&&(e=b(e)):e={},"string"==typeof d)d=d.replace(/\.\w*$/,"");else if("object"==typeof d)for(var f in d)d.hasOwnProperty(f)&&(d[f]=d[f].replace(/\.\w*$/,""));this.settings=a.extend({},g,e),this.path=d;try{this.init()}catch(i){if(i.message!==h)throw i}}var f="vide",g={volume:1,playbackRate:1,muted:!0,loop:!0,autoplay:!0,position:"50% 50%",posterType:"detect",resizing:!0,bgColor:"transparent",className:""},h="Not implemented";e.prototype.init=function(){var b,e,g=this,i=g.path,j=i,k="",l=g.$element,m=g.settings,n=c(m.position),o=m.posterType;e=g.$wrapper=a("<div>").addClass(m.className).css({position:"absolute","z-index":-1,top:0,left:0,bottom:0,right:0,overflow:"hidden","-webkit-background-size":"cover","-moz-background-size":"cover","-o-background-size":"cover","background-size":"cover","background-color":m.bgColor,"background-repeat":"no-repeat","background-position":n.x+" "+n.y}),"object"==typeof i&&(i.poster?j=i.poster:i.mp4?j=i.mp4:i.webm?j=i.webm:i.ogv&&(j=i.ogv)),"detect"===o?d(j,function(a){e.css("background-image","url("+a+")")}):"none"!==o&&e.css("background-image","url("+j+"."+o+")"),"static"===l.css("position")&&l.css("position","relative"),l.prepend(e),"object"==typeof i?(i.mp4&&(k+='<source src="'+i.mp4+'.mp4" type="video/mp4">'),i.webm&&(k+='<source src="'+i.webm+'.webm" type="video/webm">'),i.ogv&&(k+='<source src="'+i.ogv+'.ogv" type="video/ogg">'),b=g.$video=a("<video>"+k+"</video>")):b=g.$video=a('<video><source src="'+i+'.mp4" type="video/mp4"><source src="'+i+'.webm" type="video/webm"><source src="'+i+'.ogv" type="video/ogg"></video>');try{b.prop({autoplay:m.autoplay,loop:m.loop,volume:m.volume,muted:m.muted,defaultMuted:m.muted,playbackRate:m.playbackRate,defaultPlaybackRate:m.playbackRate})}catch(p){throw new Error(h)}b.css({margin:"auto",position:"absolute","z-index":-1,top:n.y,left:n.x,"-webkit-transform":"translate(-"+n.x+", -"+n.y+")","-ms-transform":"translate(-"+n.x+", -"+n.y+")","-moz-transform":"translate(-"+n.x+", -"+n.y+")",transform:"translate(-"+n.x+", -"+n.y+")",visibility:"hidden",opacity:0}).one("canplaythrough."+f,function(){g.resize()}).one("playing."+f,function(){b.css({visibility:"visible",opacity:1}),e.css("background-image","none")}),l.on("resize."+f,function(){m.resizing&&g.resize()}),e.append(b)},e.prototype.getVideoObject=function(){return this.$video[0]},e.prototype.resize=function(){if(this.$video){var a=this.$wrapper,b=this.$video,c=b[0],d=c.videoHeight,e=c.videoWidth,f=a.height(),g=a.width();g/e>f/d?b.css({width:g+2,height:"auto"}):b.css({width:"auto",height:f+2})}},e.prototype.destroy=function(){delete a[f].lookup[this.index],this.$video&&this.$video.off(f),this.$element.off(f).removeData(f),this.$wrapper.remove()},a[f]={lookup:[]},a.fn[f]=function(b,c){var d;return this.each(function(){d=a.data(this,f),d&&d.destroy(),d=new e(this,b,c),d.index=a[f].lookup.push(d)-1,a.data(this,f,d)}),this},a(document).ready(function(){var b=a(window);b.on("resize."+f,function(){for(var b,c=a[f].lookup.length,d=0;c>d;d++)b=a[f].lookup[d],b&&b.settings.resizing&&b.resize()}),b.on("unload."+f,function(){return!1}),a(document).find("[data-"+f+"-bg]").each(function(b,c){var d=a(c),e=d.data(f+"-options"),g=d.data(f+"-bg");d[f](g,e)})})});jQuery(document).ready(function($) {var page_header_content = $( '.page-header-content' );if ( page_header_content.length ) {if ( page_header_content.hasClass( 'grid-container' ) ) {$( '.inside-page-header-container' ).data('vide').getVideoObject().play();} else {page_header_content.data('vide').getVideoObject().play();}}});

View File

@ -0,0 +1,149 @@
/**
* lc_switch.js
* Version: 1.0
* Author: LCweb - Luca Montanari
* Website: http://www.lcweb.it
* Licensed under the MIT license
*/
(function($){
if(typeof($.fn.lc_switch) != 'undefined') {return false;} // prevent dmultiple scripts inits
$.fn.lc_switch = function(on_text, off_text) {
// destruct
$.fn.lcs_destroy = function() {
$(this).each(function() {
var $wrap = $(this).parents('.lcs_wrap');
$wrap.children().not('input').remove();
$(this).unwrap();
});
return true;
};
// set to ON
$.fn.lcs_on = function() {
$(this).each(function() {
var $wrap = $(this).parents('.lcs_wrap');
var $input = $wrap.find('input');
if(typeof($.fn.prop) == 'function') {
$wrap.find('input').prop('checked', true);
} else {
$wrap.find('input').attr('checked', true);
}
$wrap.find('input').trigger('lcs-on');
$wrap.find('input').trigger('lcs-statuschange');
$wrap.find('.lcs_switch').removeClass('lcs_off').addClass('lcs_on');
// if radio - disable other ones
if( $wrap.find('.lcs_switch').hasClass('lcs_radio_switch') ) {
var f_name = $input.attr('name');
$wrap.parents('form').find('input[name='+f_name+']').not($input).lcs_off();
}
});
return true;
};
// set to OFF
$.fn.lcs_off = function() {
$(this).each(function() {
var $wrap = $(this).parents('.lcs_wrap');
if(typeof($.fn.prop) == 'function') {
$wrap.find('input').prop('checked', false);
} else {
$wrap.find('input').attr('checked', false);
}
$wrap.find('input').trigger('lcs-off');
$wrap.find('input').trigger('lcs-statuschange');
$wrap.find('.lcs_switch').removeClass('lcs_on').addClass('lcs_off');
});
return true;
};
// construct
return this.each(function(){
// check against double init
if( !$(this).parent().hasClass('lcs_wrap') ) {
// default texts
var ckd_on_txt = (typeof(on_text) == 'undefined') ? 'ON' : on_text;
var ckd_off_txt = (typeof(off_text) == 'undefined') ? 'OFF' : off_text;
// labels structure
var on_label = (ckd_on_txt) ? '<div class="lcs_label lcs_label_on">'+ ckd_on_txt +'</div>' : '';
var off_label = (ckd_off_txt) ? '<div class="lcs_label lcs_label_off">'+ ckd_off_txt +'</div>' : '';
// default states
var disabled = ($(this).is(':disabled')) ? true: false;
var active = ($(this).is(':checked')) ? true : false;
var status_classes = '';
status_classes += (active) ? ' lcs_on' : ' lcs_off';
if(disabled) {status_classes += ' lcs_disabled';}
// wrap and append
var structure =
'<div class="lcs_switch '+status_classes+'">' +
'<div class="lcs_cursor"></div>' +
on_label + off_label +
'</div>';
if( $(this).is(':input') && ($(this).attr('type') == 'checkbox' || $(this).attr('type') == 'radio') ) {
$(this).wrap('<div class="lcs_wrap"></div>');
$(this).parent().append(structure);
$(this).parent().find('.lcs_switch').addClass('lcs_'+ $(this).attr('type') +'_switch');
}
}
});
};
// handlers
$(document).ready(function() {
// on click
$(document).delegate('.lcs_switch:not(.lcs_disabled)', 'click tap', function(e) {
if( $(this).hasClass('lcs_on') ) {
if( !$(this).hasClass('lcs_radio_switch') ) { // not for radio
$(this).lcs_off();
}
} else {
$(this).lcs_on();
}
});
// on checkbox status change
$(document).delegate('.lcs_wrap input', 'change', function() {
if( $(this).is(':checked') ) {
$(this).lcs_on();
} else {
$(this).lcs_off();
}
});
});
})(jQuery);

View File

@ -0,0 +1,220 @@
jQuery(document).ready(function($) {
$( '#generate-tabs-container input[type="checkbox"]' ).lc_switch( '', '' );
$( '.generate-tabs-menu a' ).on( 'click', function( event ) {
event.preventDefault();
$( this ).parent().addClass( 'generate-current' );
$( this ).parent().siblings().removeClass( 'generate-current' );
var tab = $( this ).attr( 'href' );
$( '.generate-tab-content' ).not(tab).css( 'display', 'none' );
$( tab ).fadeIn( 100 );
if ( '#generate-image-tab' == tab || '#generate-content-tab' == tab ) {
$( '.show-in-excerpt' ).show();
} else {
$( '.show-in-excerpt' ).hide();
}
} );
$( '#_meta-generate-page-header-content' ).bind( 'input change', function() {
if ( this.value.length ) {
$( '.page-header-content-required' ).hide();
} else {
$( '.page-header-content-required' ).show();
}
});
});
jQuery(window).load(function($) {
if ( jQuery( '#_meta-generate-page-header-enable-image-crop' ).val() == 'enable' ) {
jQuery( '#crop-enabled' ).show();
}
jQuery( '#_meta-generate-page-header-enable-image-crop' ).change(function () {
if ( jQuery( this ).val() === 'enable' ) {
jQuery( '#crop-enabled' ).show();
} else {
jQuery( '#crop-enabled' ).hide();
}
});
if ( jQuery( '#_meta-generate-page-header-image-background' ).is( ':checked' ) ) {
jQuery( '.parallax' ).show();
} else {
jQuery( '.parallax' ).hide();
}
jQuery('body').delegate('.image-background', 'lcs-statuschange', function() {
if (jQuery(this).is(":checked")) {
jQuery('.parallax').show();
} else {
jQuery('.parallax').hide();
jQuery('#_meta-generate-page-header-image-background-fixed').lcs_off();
}
});
if ( jQuery('#_meta-generate-page-header-full-screen').is(':checked')) {
jQuery('.vertical-center').show();
} else {
jQuery('.vertical-center').hide();
}
jQuery('body').delegate('#_meta-generate-page-header-full-screen', 'lcs-statuschange', function() {
if (jQuery(this).is(":checked")) {
jQuery('.vertical-center').show();
} else {
jQuery('.vertical-center').hide();
jQuery('#_meta-generate-page-header-vertical-center').lcs_off();
}
});
if ( jQuery('#_meta-generate-page-header-transparent-navigation').is(':checked')) {
jQuery('.navigation-colors').show();
} else {
jQuery('.navigation-colors').hide();
}
jQuery('body').delegate('#_meta-generate-page-header-transparent-navigation', 'lcs-statuschange', function() {
if (jQuery(this).is(":checked")) {
jQuery('.navigation-colors').show();
} else {
jQuery('.navigation-colors').hide();
}
});
if ( jQuery('#_meta-generate-page-header-combine').is(':checked')) {
jQuery('.combination-options').show();
} else {
jQuery('.combination-options').hide();
}
jQuery('body').delegate('#_meta-generate-page-header-combine', 'lcs-statuschange', function() {
if (jQuery(this).is(":checked")) {
jQuery('.combination-options').show();
} else {
jQuery('.combination-options').hide();
}
});
if ( jQuery('#_meta-generate-page-header-image-background-type').val() == '' ) {
jQuery('.vertical-center').hide();
jQuery('.fullscreen').hide();
}
jQuery('#_meta-generate-page-header-image-background-type').change(function () {
if (jQuery(this).val() === '') {
jQuery('.vertical-center').hide();
jQuery('#_meta-generate-page-header-vertical-center').lcs_off();
jQuery('.fullscreen').hide();
jQuery('#_meta-generate-page-header-full-screen').lcs_off();
} else {
//jQuery('.vertical-center').show();
jQuery('.fullscreen').show();
}
});
var $set_button = jQuery('.generate-upload-file');
/**
* open the media manager
*/
$set_button.click(function (e) {
e.preventDefault();
var $thisbutton = jQuery(this);
var frame = wp.media({
title : $thisbutton.data('title'),
multiple : false,
library : { type : $thisbutton.data('type') },
button : { text : $thisbutton.data('insert') }
});
// close event media manager
frame.on('select', function () {
var attachment = frame.state().get('selection').first().toJSON();
// set the file
//set_dfi(attachment.url);
$thisbutton.prev('input').val(attachment.url);
$thisbutton.nextAll('input.image-id').val(attachment.id);
if ( $thisbutton.data('prev') === true ) {
$thisbutton.prev('input').prevAll('#preview-image').children('.saved-image').remove();
$thisbutton.prev('input').prevAll('#preview-image').append('<img src="' + attachment.url + '" width="100" class="saved-image" style="margin-bottom:12px;" />');
}
$thisbutton.nextAll( '.generate-page-header-remove-image' ).show();
if ( 'upload_image' == $thisbutton.prev( 'input' ).attr( 'id' ) ) {
jQuery( '.featured-image-message' ).hide();
jQuery( '.page-header-image-settings' ).show();
jQuery( '.generate-page-header-set-featured-image' ).hide();
}
});
// everthing is set open the media manager
frame.open();
});
});
jQuery(document).ready(function($) {
$('#generate-tabs-container .color-picker').wpColorPicker();
jQuery( '.generate-page-header-remove-image' ).on( 'click', function( e ) {
e.preventDefault();
var input = jQuery( this ).data( 'input' );
var input_id = jQuery( this ).data( 'input-id' );
var preview = jQuery( this ).data( 'prev' );
jQuery( input ).attr( 'value', '' );
jQuery( input_id ).attr( 'value', '' );
jQuery( preview ).children( '.saved-image' ).remove();
jQuery( this ).hide();
if ( '-1' == jQuery( '#_thumbnail_id' ).attr( 'value' ) ) {
jQuery( '.page-header-image-settings' ).hide();
jQuery( '.generate-page-header-set-featured-image' ).show();
} else {
jQuery( '.generate-page-header-set-featured-image' ).hide();
jQuery( '.page-header-image-settings' ).show();
jQuery( '.featured-image-message' ).show();
}
return false;
});
$('#postimagediv').on( 'click', '#remove-post-thumbnail', function() {
// The featured image is gone, so we can hide the message
jQuery( '.featured-image-message' ).hide();
// If there's no other image set, we can hide the image settings
if ( '' == jQuery( '#_meta-generate-page-header-image-id' ).attr( 'value' ) ) {
jQuery( '.page-header-image-settings' ).hide();
jQuery( '.generate-page-header-set-featured-image' ).show();
}
// No more featured image means we can show the 'show excerpt' option
jQuery( '.show-in-excerpt' ).show();
return false;
});
wp.media.featuredImage.frame().on('select', function() {
// We have a featured image, so the 'show excerpt' function isn't necessary
jQuery( '.show-in-excerpt' ).hide();
// We can stop here if we have a custom image set
if ( '' !== jQuery( '#_meta-generate-page-header-image-id' ).attr( 'value' ) )
return;
// Hide the set your featured image message
jQuery( '.generate-page-header-set-featured-image' ).hide();
// Show the "using feaured image" message
jQuery( '.featured-image-message' ).show();
// Show the image settings (image link, resizing etc..)
jQuery( '.page-header-image-settings' ).show();
});
$( '.generate-featured-image, .generate-page-header-set-featured-image a' ).on( 'click', function( event ) {
event.preventDefault();
// Stop propagation to prevent thickbox from activating.
event.stopPropagation();
// Open the featured image modal
wp.media.featuredImage.frame().open();
});
});

View File

@ -0,0 +1,17 @@
function generate_parallax_element( selector, context ) {
context = context || document;
var elements = context.querySelectorAll( selector );
return Array.prototype.slice.call( elements );
}
window.addEventListener( "scroll", function() {
var scrolledHeight= window.pageYOffset;
generate_parallax_element( ".parallax-enabled" ).forEach( function( el, index, array ) {
var limit = el.offsetTop + el.offsetHeight;
if( scrolledHeight > el.offsetTop && scrolledHeight <= limit ) {
el.style.backgroundPositionY = ( scrolledHeight - el.offsetTop ) / el.getAttribute( 'data-parallax-speed' ) + "px";
} else {
el.style.backgroundPositionY = "0";
}
});
});

View File

@ -0,0 +1 @@
function generate_parallax_element(e,t){var a=(t=t||document).querySelectorAll(e);return Array.prototype.slice.call(a)}window.addEventListener("scroll",function(){var e=window.pageYOffset;generate_parallax_element(".parallax-enabled").forEach(function(t,a,o){var r=t.offsetTop+t.offsetHeight;e>t.offsetTop&&e<=r?t.style.backgroundPositionY=(e-t.offsetTop)/t.getAttribute("data-parallax-speed")+"px":t.style.backgroundPositionY="0"})});

View File

@ -0,0 +1,340 @@
/**!
* wp-color-picker-alpha
*
* Overwrite Automattic Iris for enabled Alpha Channel in wpColorPicker
* Only run in input and is defined data alpha in true
*
* Version: 1.2.2
* https://github.com/23r9i0/wp-color-picker-alpha
* Copyright (c) 2015 Sergio P.A. (23r9i0).
* Licensed under the GPLv2 license.
*/
( function( $ ) {
// Variable for some backgrounds ( grid )
var image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAAHnlligAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNpi+P///4EDBxiAGMgCCCAGFB5AADGCRBgYDh48CCRZIJS9vT2QBAggFBkmBiSAogxFBiCAoHogAKIKAlBUYTELAiAmEtABEECk20G6BOmuIl0CIMBQ/IEMkO0myiSSraaaBhZcbkUOs0HuBwDplz5uFJ3Z4gAAAABJRU5ErkJggg==',
// html stuff for wpColorPicker copy of the original color-picker.js
_before = '<button type="button" class="button wp-color-result" aria-expanded="false" style="position:relative;"><span class="wp-color-result-text">' + wpColorPickerL10n.pick + '</span></button>',
_after = '<div class="wp-picker-holder" />',
_wrap = '<div class="wp-picker-container" />',
_button = '<input type="button" class="button button-small" />',
_wrappingLabel = '<label></label>',
_wrappingLabelText = '<span class="screen-reader-text"></span>';
/**
* Overwrite Color
* for enable support rbga
*/
Color.fn.toString = function() {
if ( this._alpha < 1 )
return this.toCSS( 'rgba', this._alpha ).replace( /\s+/g, '' );
var hex = parseInt( this._color, 10 ).toString( 16 );
if ( this.error )
return '';
if ( hex.length < 6 )
hex = ( '00000' + hex ).substr( -6 );
return '#' + hex;
};
/**
* Overwrite wpColorPicker
*/
$.widget( 'wp.wpColorPicker', $.wp.wpColorPicker, {
_create: function() {
// bail early for unsupported Iris.
if ( ! $.support.iris )
return;
var self = this,
el = self.element;
self.inputWrapper = el.closest( '.wp-picker-input-wrap' );
$.extend( self.options, el.data() );
// keep close bound so it can be attached to a body listener
self.close = $.proxy( self.close, self );
self.initialValue = el.val();
// Set up HTML structure, hide things
el.addClass( 'wp-color-picker' ).wrap( _wrap );
self.wrap = el.parent();
self.toggler = $( _before ).insertBefore( el ).css( { backgroundColor : self.initialValue } ).attr( 'title', wpColorPickerL10n.pick ).attr( 'data-current', wpColorPickerL10n.current );
self.pickerContainer = $( _after ).insertAfter( el );
self.button = $( _button );
if ( self.options.defaultColor ) {
self.button.addClass( 'wp-picker-default' ).val( wpColorPickerL10n.defaultString );
} else {
self.button.addClass( 'wp-picker-clear' ).val( wpColorPickerL10n.clear );
}
el.wrap( '<span class="wp-picker-input-wrap hidden" />' ).after( self.button );
el.iris( {
target : self.pickerContainer,
hide : self.options.hide,
width : self.options.width,
mode : self.options.mode,
palettes : self.options.palettes,
change : function( event, ui ) {
if ( self.options.alpha ) {
self.toggler.css( { 'background-image' : 'url(' + image + ')' } ).html( '<span class="wp-color-result-text" style="position:relative;z-index:1;">' + wpColorPickerL10n.pick + '</span><span />' );
self.toggler.find( 'span' ).last().css( {
'width' : '100%',
'height' : '100%',
'position' : 'absolute',
'top' : 0,
'left' : 0,
'border-top-left-radius' : '3px',
'border-bottom-left-radius' : '3px',
'background' : ui.color.toString()
} );
} else {
self.toggler.css( { backgroundColor : ui.color.toString() } );
}
// Check for a custom cb
if ( $.isFunction( self.options.change ) )
self.options.change.call( this, event, ui );
}
} );
el.val( self.initialValue );
self._addListeners();
if ( ! self.options.hide ) {
self.toggler.click();
}
},
_addListeners: function() {
var self = this;
// prevent any clicks inside this widget from leaking to the top and closing it
self.wrap.on( 'click.wpcolorpicker', function( event ) {
event.stopPropagation();
} );
self.toggler.on( 'click', function() {
if ( self.toggler.hasClass( 'wp-picker-open' ) ) {
self.close();
} else {
self.open();
}
});
self.element.on( 'change', function( event ) {
// Empty or Error = clear
if ( $( this ).val() === '' || self.element.hasClass( 'iris-error' ) ) {
if ( self.options.alpha ) {
self.toggler.removeAttr( 'style' );
self.toggler.find( 'span' ).css( 'backgroundColor', '' );
} else {
self.toggler.css( 'backgroundColor', '' );
}
// fire clear callback if we have one
if ( $.isFunction( self.options.clear ) )
self.options.clear.call( this, event );
}
} );
// open a keyboard-focused closed picker with space or enter
self.toggler.on( 'keyup', function( event ) {
if ( event.keyCode === 13 || event.keyCode === 32 ) {
event.preventDefault();
self.toggler.trigger( 'click' ).next().focus();
}
});
self.button.on( 'click', function( event ) {
if ( $( this ).hasClass( 'wp-picker-clear' ) ) {
self.element.val( '' );
if ( self.options.alpha ) {
self.toggler.removeAttr( 'style' );
self.toggler.find( 'span' ).css( 'backgroundColor', '' );
} else {
self.toggler.css( 'backgroundColor', '' );
}
if ( $.isFunction( self.options.clear ) )
self.options.clear.call( this, event );
} else if ( $( this ).hasClass( 'wp-picker-default' ) ) {
self.element.val( self.options.defaultColor ).change();
}
});
}
});
/**
* Overwrite iris
*/
$.widget( 'a8c.iris', $.a8c.iris, {
_create: function() {
this._super();
// Global option for check is mode rbga is enabled
this.options.alpha = this.element.data( 'alpha' ) || false;
// Is not input disabled
if ( ! this.element.is( ':input' ) )
this.options.alpha = false;
if ( typeof this.options.alpha !== 'undefined' && this.options.alpha ) {
var self = this,
el = self.element,
_html = '<div class="iris-strip iris-slider iris-alpha-slider"><div class="iris-slider-offset iris-slider-offset-alpha"></div></div>',
aContainer = $( _html ).appendTo( self.picker.find( '.iris-picker-inner' ) ),
aSlider = aContainer.find( '.iris-slider-offset-alpha' ),
controls = {
aContainer : aContainer,
aSlider : aSlider
};
if ( typeof el.data( 'custom-width' ) !== 'undefined' ) {
self.options.customWidth = parseInt( el.data( 'custom-width' ) ) || 0;
} else {
self.options.customWidth = 100;
}
// Set default width for input reset
self.options.defaultWidth = el.width();
// Update width for input
if ( self._color._alpha < 1 || self._color.toString().indexOf('rgb') != -1 )
el.width( parseInt( self.options.defaultWidth + self.options.customWidth ) );
// Push new controls
$.each( controls, function( k, v ) {
self.controls[k] = v;
} );
// Change size strip and add margin for sliders
self.controls.square.css( { 'margin-right': '0' } );
var emptyWidth = ( self.picker.width() - self.controls.square.width() - 20 ),
stripsMargin = ( emptyWidth / 6 ),
stripsWidth = ( ( emptyWidth / 2 ) - stripsMargin );
$.each( [ 'aContainer', 'strip' ], function( k, v ) {
self.controls[v].width( stripsWidth ).css( { 'margin-left' : stripsMargin + 'px' } );
} );
// Add new slider
self._initControls();
// For updated widget
self._change();
}
},
_initControls: function() {
this._super();
if ( this.options.alpha ) {
var self = this,
controls = self.controls;
controls.aSlider.slider({
orientation : 'vertical',
min : 0,
max : 100,
step : 1,
value : parseInt( self._color._alpha * 100 ),
slide : function( event, ui ) {
// Update alpha value
self._color._alpha = parseFloat( ui.value / 100 );
self._change.apply( self, arguments );
}
});
}
},
_change: function() {
this._super();
var self = this,
el = self.element;
if ( this.options.alpha ) {
var controls = self.controls,
alpha = parseInt( self._color._alpha * 100 ),
color = self._color.toRgb(),
gradient = [
'rgb(' + color.r + ',' + color.g + ',' + color.b + ') 0%',
'rgba(' + color.r + ',' + color.g + ',' + color.b + ', 0) 100%'
],
defaultWidth = self.options.defaultWidth,
customWidth = self.options.customWidth,
target = self.picker.closest( '.wp-picker-container' ).find( '.wp-color-result' );
// Generate background slider alpha, only for CSS3 old browser fuck!! :)
controls.aContainer.css( { 'background' : 'linear-gradient(to bottom, ' + gradient.join( ', ' ) + '), url(' + image + ')' } );
if ( target.hasClass( 'wp-picker-open' ) ) {
// Update alpha value
controls.aSlider.slider( 'value', alpha );
/**
* Disabled change opacity in default slider Saturation ( only is alpha enabled )
* and change input width for view all value
*/
if ( self._color._alpha < 1 ) {
controls.strip.attr( 'style', controls.strip.attr( 'style' ).replace( /rgba\(([0-9]+,)(\s+)?([0-9]+,)(\s+)?([0-9]+)(,(\s+)?[0-9\.]+)\)/g, 'rgb($1$3$5)' ) );
el.width( parseInt( defaultWidth + customWidth ) );
} else {
el.width( defaultWidth );
}
}
}
var reset = el.data( 'reset-alpha' ) || false;
if ( reset ) {
self.picker.find( '.iris-palette-container' ).on( 'click.palette', '.iris-palette', function() {
self._color._alpha = 1;
self.active = 'external';
self._change();
} );
}
},
_addInputListeners: function( input ) {
var self = this,
debounceTimeout = 100,
callback = function( event ) {
var color = new Color( input.val() ),
val = input.val();
input.removeClass( 'iris-error' );
// we gave a bad color
if ( color.error ) {
// don't error on an empty input
if ( val !== '' )
input.addClass( 'iris-error' );
} else {
if ( color.toString() !== self._color.toString() ) {
// let's not do this on keyup for hex shortcodes
if ( ! ( event.type === 'keyup' && val.match( /^[0-9a-fA-F]{3}$/ ) ) )
self._setOption( 'color', color.toString() );
}
}
};
input.on( 'change', callback ).on( 'keyup', self._debounce( callback, debounceTimeout ) );
// If we initialized hidden, show on first focus. The rest is up to you.
if ( self.options.hide ) {
input.on( 'focus', function() {
self.show();
} );
}
}
} );
}( jQuery ) );
// Auto Call plugin is class is color-picker
jQuery( document ).ready( function( $ ) {
$( '.color-picker' ).wpColorPicker();
} );