123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422 |
- /**
- * Front-end JavaScript.
- *
- * @package Pen
- */
- ;( function( $ ) {
- "use strict";
- $( document ).ready(
- function() {
- pen_trianglify();
- pen_shards();
- var $page = $( '#page' );
- if ( $page.children( '.pen_wrapper' ).length ) {
- $page.children( '.pen_wrapper' ).addClass( 'pen_not_visible' )
- .end().append( '<div class="pen_loading clearfix" role="alert" style="display:none"><div class="pen_wrap_icon"><div class="pen_icon"></div></div><ul><li>' + pen_js.text.loading + '</li></ul></div>' ).children( '.pen_loading' ).show();
- }
- if ( pen_function_exists( typeof Modernizr ) && Modernizr.mq( 'only all and (max-width:728px)' ) ) {
- if ( pen_function_exists( typeof $( window ).fitText ) && pen_js.font_resize.site_title === 'dynamic' ) {
- $( '#site-title' ).fitText();
- }
- if ( pen_js.font_resize.site_title === 'resize' ) {
- function pen_font_resize( $element, font_size ) {
- var parent_width = $element.parent().outerWidth( false ),
- element_width = $element.css( { position: 'fixed', whiteSspace: 'nowrap' } ).outerWidth( true );
- $element.css( { position: 'relative' } );
- font_size = font_size - 2;
- if ( font_size > 12 && element_width > parent_width ) {
- $element.animate( { fontSize: font_size } );
- pen_font_resize( $element, font_size );
- }
- }
- var $site_title = $( '#pen_header h1 a .site-title' );
- pen_font_resize( $site_title, parseInt( $site_title.css( 'font-size' ) ) );
- $( window ).resize(
- function() {
- if ( pen_function_exists( typeof Modernizr ) && Modernizr.mq( 'only all and (max-width:728px)' ) ) {
- pen_font_resize( $site_title, parseInt( $site_title.css( 'font-size' ) ) );
- } else {
- $site_title.css( { fontSize: '' } );
- }
- }
- );
- }
- }
- if ( pen_function_exists( typeof autosize ) ) {
- autosize( $page.find( 'textarea' ) );
- }
- if ( $( 'div#primary-menu' ).length ) {
- var $menu = $( 'div#primary-menu > ul' );
- } else if ( $( 'ul#primary-menu' ).length ) {
- var $menu = $( 'ul#primary-menu' );
- } else {
- var $menu = false;
- }
- if ( $menu && pen_function_exists( typeof $( window ).superfish ) ) {
- $menu.superfish(
- {
- animation: pen_js.navigation_easing,
- speed: parseInt( pen_js.animation_navigation_speed ),
- cssArrows: pen_js.navigation_arrows
- }
- );
- }
- if ( pen_js.navigation_mobile && pen_function_exists( typeof $( window ).slicknav ) ) {
- $menu.slicknav(
- {
- label: pen_js.text.menu
- }
- );
- }
- $( '.search-form' ).on(
- 'submit',
- function( event ) {
- var $search = $( this );
- if ( $.trim( $search.find( '.search-field' ).val() ) === '' ) {
- alert( pen_js.text.enter_keyword );
- event.preventDefault();
- }
- }
- );
- if ( '.pen_options_overview' ) {
- $( '#primary' ).find( '.pen_options_overview' ).each(
- function() {
- var $overview = $( this ),
- overview_id = $overview.attr( 'id' ),
- toggle_id = overview_id + '_toggle';
- $overview.addClass( 'pen_off_screen' )
- .prepend( '<a href="#" class="pen_close">' + pen_js.text.close + '</a>' )
- .before( '<a href="#" id="' + toggle_id + '" class="pen_options_overview_toggle pen_button pen_visible" title="' + pen_js.text.overview_options_post + '">' + pen_js.text.overview_options_post + '</a>' )
- .find( '.pen_close' ).on(
- 'click',
- function( event ) {
- $( '#' + toggle_id ).toggleClass( 'pen_visible' );
- $overview.toggleClass( 'pen_visible' );
- event.preventDefault();
- }
- );
- $( '#' + toggle_id ).on(
- 'click',
- function( event ) {
- $( this ).toggleClass( 'pen_visible' );
- $overview.toggleClass( 'pen_visible' );
- event.preventDefault();
- }
- );
- }
- );
- }
- $( '#pen_back' ).hide().on(
- 'click',
- function ( event ) {
- $( 'html, body' ).animate( { scrollTop: 0 }, { queue: false, duration: 1000 } );
- event.preventDefault();
- }
- );
- pen_sticky_header();
- }
- );
- $( window ).load(
- function() {
- var $page = $( '#page' ),
- $main = $( '#main' );
- if ( $page.children( '.pen_wrapper' ).length ) {
- $page.children( '.pen_loading' ).fadeOut(
- 100,
- function() {
- $page.children( '.pen_wrapper' ).removeClass( 'pen_not_visible' );
- $( this ).remove();
- }
- );
- }
- var $list = $( '#pen_masonry' );
- if ( $list.length ) {
- if ( pen_js.list_type === 'masonry' && pen_function_exists( typeof jQuery( window ).masonry ) ) {
- $list.masonry(
- {
- itemSelector: 'article.post,article.page',
- percentPosition: true,
- transitionDuration: 0
- }
- ).imagesLoaded(
- function() {
- $list.masonry( 'layout' );
- pen_content_height();
- if ( pen_function_exists( typeof pen_animation ) ) {
- var $items = $main.find( 'article.post,article.page' ),
- $thumbnails = $main.find( '.post-thumbnail' );
- pen_animation( $items, pen_js.animation_list );
- pen_animation( $thumbnails, pen_js.animation_list_thumbnails );
- }
- }
- );
- setTimeout(
- function() {
- $list.masonry( 'layout' );
- pen_content_height();
- },
- 5000
- );
- }
- } else {
- if ( pen_function_exists( typeof pen_animation ) ) {
- var $thumbnails = $main.find( '.post-thumbnail' );
- if ( $( 'body' ).hasClass( 'pen_multiple' ) ) {
- var $items = $main.find( 'article.post,article.page' );
- pen_animation( $items, pen_js.animation_list );
- pen_animation( $thumbnails, pen_js.animation_list_thumbnails );
- } else {
- pen_animation( $main, pen_js.animation_content );
- pen_animation( $thumbnails, pen_js.animation_content_thumbnails );
- }
- }
- }
- if ( pen_js.animation_comments ) {
- var $comments = $( '#comments .comment-list' );
- if ( $comments.length ) {
- $comments.children( 'li' ).addClass( 'pen_animate_on_scroll pen_custom_animation_' + pen_js.animation_comments );
- }
- }
- pen_animation( $page.find( '.pen_animate_on_scroll' ), 'automatic' );
- pen_content_height();
- $page.find( '.pen_jump_menu' ).each(
- function() {
- pen_jump_menu( $( this ) );
- }
- );
- }
- );
- $( window ).on(
- 'resize orientationchange',
- function() {
- $( '#main' ).find( 'article.post.animated,article.page.animated' ).removeClass( 'animated' ).addClass( 'animated_not' );
- pen_content_height();
- }
- );
- $( window ).scroll(
- function() {
- $( '#main' ).find( 'article.post.animated_not,article.page.animated' ).removeClass( 'animated_not' ).addClass( 'animated' );
- if ( $( this ).scrollTop() > 400 ) {
- $( '#pen_back' ).fadeIn( 200 );
- } else {
- $( '#pen_back' ).fadeOut( 200 );
- }
- }
- );
- function pen_sticky_header() {
- if ( pen_js.header_sticky && $( '#pen_header' ).length ) {
- var mobile = false,
- $window = $( window ),
- $body = $( 'body' ),
- layout_boxed = $body.hasClass( 'pen_width_boxed' ) ? true : false,
- $header = $( '#pen_header' );
- if ( pen_function_exists( typeof Modernizr ) && Modernizr.mq( 'only all and (max-width:728px)' ) ) {
- mobile = true;
- }
- $window.resize(
- function() {
- if ( pen_function_exists( typeof Modernizr ) && Modernizr.mq( 'only all and (max-width:728px)' ) ) {
- mobile = true;
- } else {
- mobile = false;
- }
- }
- );
- $window.on(
- 'load scroll resize orientationchange pen_update_sticky_header',
- function() {
- if ( layout_boxed ) {
- $header.css( { width: $( '#pen_section' ).outerWidth( true ) } );
- }
- if ( mobile || $window.outerHeight() < $header.outerHeight( true ) ) {
- $header.removeClass( 'pen_header_sticked' ).css( { left: '', position: '', top: '' } );
- $body.css( { paddingTop: '' } );
- } else {
- var header_top = 0,
- header_height = $header.removeClass( 'pen_header_sticked' ).outerHeight( true );
- if ( $( '#wpadminbar' ).length ) {
- var adminBarheight = $( '#wpadminbar' ).outerHeight( true );
- header_height += adminBarheight;
- header_top += adminBarheight;
- }
- if ( $window.scrollTop() ) {
- var header_offset = $header.offset();
- $header.css( { left: header_offset.left, position: 'fixed', top: header_top } ).addClass( 'pen_header_sticked' );
- $body.css( { paddingTop: header_height + 20 } );
- } else {
- $header.css( { left: '', position: '', top: '' } ).removeClass( 'pen_header_sticked' );
- $body.css( { paddingTop: '' } );
- }
- }
- }
- );
- }
- }
- })( jQuery );
- function pen_content_height() {
- var leftHeight = 0,
- rightHeight = 0,
- $content = jQuery( '#content' ),
- $left = jQuery( '#pen_left' ),
- $right = jQuery( '#pen_right' );
- if ( $left.length ) {
- leftHeight = $left.outerHeight( true );
- }
- if ( $right.length ) {
- rightHeight = $right.outerHeight( true );
- }
- var contentHeight = Math.max( leftHeight, rightHeight );
- if ( contentHeight ) {
- contentHeight += parseInt( $content.css( 'padding-bottom' ) );
- if ( contentHeight > $content.outerHeight( true ) ) {
- $content.css( 'min-height', contentHeight + 30 );
- }
- }
- }
- function pen_animation( $items, animation ) {
- if ( pen_function_exists( typeof jQuery( window ).waypoint ) && animation ) {
- $items.addClass( 'animated' ).css( 'visibility', 'hidden' ).waypoint(
- {
- handler: function( direction ) {
- var $item = jQuery( this.element ),
- custom_animation = this.element.className.match( /(^|\s)pen_custom_animation_\S+/g );
- if ( custom_animation && custom_animation[0] ) {
- animation = jQuery.trim( custom_animation[0].replace( 'pen_custom_animation_', '' ) );
- }
- if ( ! $item.hasClass( animation ) ) {
- $item.addClass( animation ).css( 'visibility', 'visible' );
- }
- },
- offset: '90%'
- }
- );
- }
- }
- function pen_shards() {
- if ( pen_function_exists( typeof jQuery( window ).shards ) ) {
- var $body = jQuery( 'body' ),
- background_image = $body.css( 'background-image' );
- if ( pen_js.shards_colors && background_image && background_image === 'none' ) {
- $body.prepend( '<div id="shards" style="left:0;height:100%;position:fixed;top:0;visibility:hidden;width:100%;" />' );
- var $shards = jQuery( '#shards' );
- $shards.shards( pen_js.shards_colors[0], pen_js.shards_colors[1], [0,0,0,0.2], 20, .8, 2, .15, true );
- var background = $shards.css( 'background-image' );
- $shards.remove();
- jQuery( 'body' ).addClass( 'pen_shards' ).removeClass( 'custom-background' );
- jQuery( 'head' ).append( "<style type=\"text/css\">body.pen_shards:before{background-image:" + background + " !important;content:'';left:0;height:100%;position:fixed;top:0;width:100%;will-change:transform;z-index:-1; }</style>" );
- }
- }
- }
- function pen_trianglify() {
- if ( pen_function_exists( typeof Trianglify ) ) {
- var $body = jQuery( 'body' ),
- background_image = $body.css( 'background-image' );
- if ( pen_js.trianglify_colors && background_image && background_image === 'none' ) {
- var pattern = Trianglify(
- {
- height: window.innerHeight,
- width: window.innerWidth,
- x_colors: pen_js.trianglify_colors,
- y_colors: 'match_x',
- cell_size: 80
- }
- );
- var svg = jQuery( '<div />' ).prepend( pattern.svg() ).html();
- svg = '<?xml version="1.0" ?>' + svg.replace( '<svg', '<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none"' );
- var dataURI = "data:image/svg+xml;base64, " + window.btoa( unescape( encodeURIComponent( svg ) ) );
- jQuery( 'body' ).addClass( 'pen_trianglify' ).removeClass( 'custom-background' );
- jQuery( 'head' ).append( "<style type=\"text/css\">body.pen_trianglify:before{background-image:url('" + dataURI + "') !important;background-size:cover;content:'';left:0;height:100%;position:fixed;top:0;width:100%;will-change:transform;z-index:-1; }</style>" );
- }
- }
- }
- function pen_jump_menu( $menu ) {
- var title = jQuery.trim( $menu.find( 'h4' ).text() );
- $menu.prepend( '<button type="button" class="pen_toggle" title="' + title + '"><span class="screen-reader-text">' + pen_js.text.expand_collapse + '</span></button>' )
- .find( '.pen_menu_wrapper' ).attr( 'aria-hidden', true )
- .end().removeClass( 'screen-reader-text' ).attr( 'aria-hidden', false )
- .find( 'h4 span' ).prepend( '<span class="pen_only" title="' + pen_js.text.theme_specific + '">' + pen_js.text.pen_theme + '</span>' );
- var $toggle = $menu.find( '.pen_toggle' ),
- timer;
- $menu.find( 'ul li a' ).each(
- function() {
- jQuery( this ).attr( 'title', jQuery.trim( jQuery( this ).text() ) ).attr( 'tabindex', '-1' );
- }
- );
- $toggle.on(
- 'click',
- function( event ) {
- var $wrapper = jQuery( '.pen_menu_wrapper', $menu );
- clearTimeout( timer );
- if ( $toggle.hasClass( 'pen_expanded' ) ) {
- $toggle.removeClass( 'pen_expanded' );
- $wrapper.addClass( 'screen-reader-text' ).attr( 'aria-hidden', true )
- .find( 'ul li a' ).attr( 'tabindex', '-1' );
- } else {
- $toggle.addClass( 'pen_expanded' );
- $wrapper.find( 'ul li a' ).removeAttr( 'tabindex' )
- .end().removeClass( 'screen-reader-text' ).attr( 'aria-hidden', false )
- .on(
- 'mouseleave',
- function() {
- clearTimeout( timer );
- timer = setTimeout(
- function() {
- $wrapper.stop().animate(
- { opacity: 0 },
- {
- duration: 2000,
- queue: false,
- complete: function() {
- $toggle.trigger( 'click' );
- }
- }
- );
- },
- 30000
- );
- }
- ).on(
- 'mouseenter',
- function() {
- $wrapper.stop().animate( { opacity: 1 }, { duration: 200, queue: false } );
- clearTimeout( timer );
- }
- );
- }
- event.preventDefault();
- }
- );
- }
- function pen_function_exists( type_of ) {
- if ( type_of !== 'undefined' && type_of !== undefined && type_of !== null ) {
- return true;
- }
- return false;
- }
|