From 081cb42c02c40a9f961d0c6b6b772aed9742fbd0 Mon Sep 17 00:00:00 2001 From: philcable Date: Thu, 1 Aug 2019 14:22:01 -0700 Subject: [PATCH 01/11] Stub out slideshow block backend --- src/blocks/slideshow/slideshow.js | 127 +++++++++++++++++++++++++++++- 1 file changed, 126 insertions(+), 1 deletion(-) diff --git a/src/blocks/slideshow/slideshow.js b/src/blocks/slideshow/slideshow.js index 2c9033aa..284ce34d 100644 --- a/src/blocks/slideshow/slideshow.js +++ b/src/blocks/slideshow/slideshow.js @@ -5,7 +5,132 @@ * Simple block, renders and saves the same content without any interactivity. */ -// Import CSS. +// External dependencies. +import classnames from 'classnames'; + +// Import CSS. import './style.scss'; import './editor.scss'; +// WordPress dependencies. +const { + __, +} = wp.i18n; +const { + registerBlockType, +} = wp.blocks; +const { + Path, + SVG, +} = wp.components; + +const captionToggle = ( +
{__( 'read full caption' ) }
+); + +const slideshowControls = ( +
+
+ +
+
+ +
+
+); + +// Register the block. +registerBlockType( 'editorial/slideshow', { + title: __( 'Slideshow' ), + description: __( 'Feature multiple photos in a slideshow carousel.' ), + icon: , + category: 'bu-editorial', + attributes: {}, + + edit( props ) { + const { + attributes: {}, + className, + setAttribute, + } = props; + + return ( +
+ +
+
+
+
    + +
  • +
    + +
  • + +
+
+ +
+
    + +
  • +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.

    +
  • + +
+ { captionToggle } +
+ + { slideshowControls } + +
+ ); + }, + + save( props ) { + + return ( +
+ +
+
+
+
    + +
  • +
    + +
  • + +
+
+ +
+
    + +
  • +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.

    +
  • + +
+ { captionToggle } +
+ + { slideshowControls } + +
+ ); + }, +} ); From fd909e665df7863524a188d5fd5f4275ad7170a8 Mon Sep 17 00:00:00 2001 From: philcable Date: Mon, 5 Aug 2019 15:04:20 -0700 Subject: [PATCH 02/11] Build out basic editing functionality --- src/blocks/slideshow/slideshow.js | 287 ++++++++++++++++++++++-------- 1 file changed, 212 insertions(+), 75 deletions(-) diff --git a/src/blocks/slideshow/slideshow.js b/src/blocks/slideshow/slideshow.js index 284ce34d..1da444e0 100644 --- a/src/blocks/slideshow/slideshow.js +++ b/src/blocks/slideshow/slideshow.js @@ -20,116 +20,253 @@ const { registerBlockType, } = wp.blocks; const { + Button, + IconButton, Path, SVG, } = wp.components; +const { + Fragment, +} = wp.element; +const { + MediaPlaceholder, + MediaUpload, + MediaUploadCheck, + RichText, +} = wp.editor; -const captionToggle = ( -
{__( 'read full caption' ) }
-); - -const slideshowControls = ( -
-
- -
-
- -
-
-); +/** + * Return a string for use in slide classes using the provided index. + * + * @param {number} index The zero-indexed position of the slide. + */ +const slideIndex = ( index ) => { + const oneIndexed = index + 1; -// Register the block. -registerBlockType( 'editorial/slideshow', { - title: __( 'Slideshow' ), - description: __( 'Feature multiple photos in a slideshow carousel.' ), - icon: , - category: 'bu-editorial', - attributes: {}, + return oneIndexed.toString().padStart( 3, '0' ); +}; - edit( props ) { - const { - attributes: {}, - className, - setAttribute, - } = props; +/** + * Return the block markup. + * + * @param {array} slides Array of objects containing slide data. + */ +const blockMarkup = ( slides ) => { + return ( + +
- return ( -
+
+
-
-
-
-
    +
      -
    • + { slides.map( ( slide, index ) => +
    • + ) } -
    -
+ + +
+ +
-
-
    +
      -
    • -

      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.

      + { slides.map( ( slide, index ) => +
    • +

      { slide.caption }

    • + ) } -
    - { captionToggle } -
+ - { slideshowControls } +
{__( 'read full caption' ) }
- ); + +
+
+ +
+
+ +
+
+ + ); +}; + +// Empty slide object. +const emptySlide = { + caption: '', + focus: '', + imageId: '', + imageUrl: '', +}; + +// Register the block. +registerBlockType( 'editorial/slideshow', { + title: __( 'Slideshow' ), + description: __( 'Feature multiple photos in a slideshow carousel.' ), + icon: , + category: 'bu-editorial', + attributes: { + slides: { + type: 'array', + default: [ emptySlide, emptySlide ], + }, }, - save( props ) { + edit( props ) { + const { + attributes: { + slides, + }, + className, + isSelected, + setAttributes, + } = props; - return ( -
+ /** + * Display the editing interface for the provided slide. + * + * @param {array} slide Array of values for the provided slide. + * @param {number} index The index of the provided slide. + */ + const slideEdit = ( slide, index ) => { + /** + * Removes the slide image. + */ + const onRemoveImage = () => { + slides[ index ].imageId = undefined; + slides[ index ].imageUrl = undefined; -
-
-
-
    + setAttributes( { slides: slides } ); + }; -
  • -
    - -
  • + /** + * Sets the slide image. + * + * @param {object} image The selected image. + */ + const onSelectImage = ( image ) => { + if ( ! image || ! image.url ) { + onRemoveImage(); -
-
+ return; + } -
-
    + const imageSize = 'huge'; -
  • -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.

    -
  • + let url = ( image.sizes[ imageSize ] ) ? image.sizes[ imageSize ].url : image.url;; -
- { captionToggle } + slides[ index ].imageId = image.id; + slides[ index ].imageUrl = url; + + setAttributes( { slides: slides } ); + }; + + return ( +
+ { + slides.splice( index, 1 ); + setAttributes( { slides: slides } ); + } } + >{ __( 'Remove Slide' ) } + { slide.imageId ? ( + + ( +
+ + +
+ ) } + /> + +
+ ) : ( + + ) } + { + slides[ index ].caption = value; + setAttributes( { slides: slides } ); + } } + formattingControls={ [ 'bold', 'italic', 'link' ] } + />
+ ); + }; + + return ( +
+ { ( isSelected || !slides[0].imageId ) ? ( + + { slides.map( ( slide, index ) => slideEdit( slide, index ) ) } + + + ) : ( + blockMarkup( slides ) + ) } +
+ ); + }, - { slideshowControls } + save( { attributes } ) { + const { + slides, + } = attributes; + return ( +
+ { blockMarkup( slides ) }
); }, From 58f24e018de0aae6e439c6af9b645f3fe6023945 Mon Sep 17 00:00:00 2001 From: philcable Date: Mon, 5 Aug 2019 15:33:47 -0700 Subject: [PATCH 03/11] Refine editor output and add editor-specific styles --- src/blocks/slideshow/editor.scss | 29 ++++++++++++++++++ src/blocks/slideshow/slideshow.js | 50 +++++++++++++++++++++---------- 2 files changed, 64 insertions(+), 15 deletions(-) diff --git a/src/blocks/slideshow/editor.scss b/src/blocks/slideshow/editor.scss index b4d44bdb..b5508b5f 100644 --- a/src/blocks/slideshow/editor.scss +++ b/src/blocks/slideshow/editor.scss @@ -4,3 +4,32 @@ * CSS for just Backend enqueued after style.scss * which makes it higher in priority. */ + +.wp-block-editorial-slideshow { + + .wp-block-editorial-slideshow-edit-slide { + position: relative; + + .wp-block-editorial-slideshow-edit-slide__image, + .wp-block-editorial-slideshow-edit-slide__remove-slide { + position: absolute; + top: 0; + } + + .wp-block-editorial-slideshow-edit-slide__image { + display: flex; + left: 50%; + transform: translateX(-50%); + } + } + + .bu-blocks-slideshow-caption { + list-style: none; + } + + &::after { + clear: both; + content: ' '; + display: table; + } +} \ No newline at end of file diff --git a/src/blocks/slideshow/slideshow.js b/src/blocks/slideshow/slideshow.js index 1da444e0..a2efe13a 100644 --- a/src/blocks/slideshow/slideshow.js +++ b/src/blocks/slideshow/slideshow.js @@ -20,7 +20,6 @@ const { registerBlockType, } = wp.blocks; const { - Button, IconButton, Path, SVG, @@ -52,6 +51,10 @@ const slideIndex = ( index ) => { * @param {array} slides Array of objects containing slide data. */ const blockMarkup = ( slides ) => { + // Define widths for the `ul` and `li` elements based on the number of slides. + const ulWidth = `${ slides.length }00%`; + const liWidth = `calc(${ 100 / slides.length }% - 2px)`; + return (
@@ -59,10 +62,16 @@ const blockMarkup = ( slides ) => {
-
    +
      { slides.map( ( slide, index ) => -
    • +
    • {
      -
        +
          { slides.map( ( slide, index ) => -
        • +
        • { slide.caption }

        • ) } @@ -180,10 +195,13 @@ registerBlockType( 'editorial/slideshow', { }; return ( -
          +
          { slides.splice( index, 1 ); @@ -197,16 +215,16 @@ registerBlockType( 'editorial/slideshow', { allowedTypes={ [ 'image' ] } value={ slide.imageId } render={ ( { open } ) => ( -
          +
          @@ -245,12 +263,14 @@ registerBlockType( 'editorial/slideshow', { { ( isSelected || !slides[0].imageId ) ? ( { slides.map( ( slide, index ) => slideEdit( slide, index ) ) } - + isLarge + label={ __( 'Add a Slide' ) } + >{ __( 'Add New Slide' ) } ) : ( blockMarkup( slides ) From d0f47efc5f771d2c5f0442960130e8eed41de5fa Mon Sep 17 00:00:00 2001 From: philcable Date: Tue, 6 Aug 2019 11:54:31 -0700 Subject: [PATCH 04/11] Add block controls and class handling --- src/blocks/slideshow/editor.scss | 39 +++++++++++ src/blocks/slideshow/slideshow.js | 112 ++++++++++++++++++++++++++++-- 2 files changed, 147 insertions(+), 4 deletions(-) diff --git a/src/blocks/slideshow/editor.scss b/src/blocks/slideshow/editor.scss index b5508b5f..59efc8e2 100644 --- a/src/blocks/slideshow/editor.scss +++ b/src/blocks/slideshow/editor.scss @@ -32,4 +32,43 @@ content: ' '; display: table; } +} + +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field { + display: flex; + flex-wrap: wrap; + margin-bottom: 1.5em; + + .components-base-control__label { + padding-bottom: 1em; + width: 100%; + } + + input { + display: none; + } + + .components-radio-control__option label { + background-color: #fff; + border: 1px solid #e2e4e7; + padding: 8px 10px; + } + + .components-radio-control__option input:checked + label { + color: #fff; + background-color: #1e8cbe; + border-color: #1e8cbe; + } + + > div:first-of-type label { + border-radius: 5px 0 0 5px; + } + + > div:last-of-type label { + border-radius: 0 5px 5px 0; + } + + > div:not(:last-of-type) label { + border-right: 0; + } } \ No newline at end of file diff --git a/src/blocks/slideshow/slideshow.js b/src/blocks/slideshow/slideshow.js index a2efe13a..3dbbdc85 100644 --- a/src/blocks/slideshow/slideshow.js +++ b/src/blocks/slideshow/slideshow.js @@ -21,19 +21,46 @@ const { } = wp.blocks; const { IconButton, + PanelBody, Path, + RadioControl, + SelectControl, SVG, + ToggleControl, } = wp.components; const { Fragment, } = wp.element; const { + InspectorControls, MediaPlaceholder, MediaUpload, MediaUploadCheck, RichText, } = wp.editor; +/** + * Returns the class list for the block based on the current settings. + * + * @param {string} aspectRatio The value of the aspect ratio option. + * @param {string} className Default and additional classes applied to the block. + * @param {boolean} crop Whether the Crop option is toggled on. + * @param {boolean} showNextUp Whether the Show Next Up option is toggled on. + */ +const getClasses = ( aspectRatio, className, crop, showNextUp ) => { + return ( + classnames( + 'js-bu-blocks-slideshow', + className, + { + 'has-crop': crop, + 'has-shownextup': showNextUp, + [ `has-aspectratio-${aspectRatio}` ]: aspectRatio, + } + ) + ); +} + /** * Return a string for use in slide classes using the provided index. * @@ -127,7 +154,8 @@ const blockMarkup = ( slides ) => { // Empty slide object. const emptySlide = { caption: '', - focus: '', + imageFocusX: 'center', + imageFocusY: 'center', imageId: '', imageUrl: '', }; @@ -139,6 +167,22 @@ registerBlockType( 'editorial/slideshow', { icon: , category: 'bu-editorial', attributes: { + aspectRatio: { + type: 'string', + default: '16by9', + }, + className: { + type: 'string', + default: '', + }, + crop: { + type: 'boolean', + default: false, + }, + showNextUp: { + type: 'boolean', + default: false, + }, slides: { type: 'array', default: [ emptySlide, emptySlide ], @@ -148,6 +192,9 @@ registerBlockType( 'editorial/slideshow', { edit( props ) { const { attributes: { + aspectRatio, + crop, + showNextUp, slides, }, className, @@ -186,7 +233,7 @@ registerBlockType( 'editorial/slideshow', { const imageSize = 'huge'; - let url = ( image.sizes[ imageSize ] ) ? image.sizes[ imageSize ].url : image.url;; + let url = ( image.sizes[ imageSize ] ) ? image.sizes[ imageSize ].url : image.url; slides[ index ].imageId = image.id; slides[ index ].imageUrl = url; @@ -232,6 +279,32 @@ registerBlockType( 'editorial/slideshow', { ) } /> + { + slides[ index ].imageFocusX = value; + setAttributes( { slides: slides } ); + } } + options={ [ + { value: 'left', label: __( 'Left' ) }, + { value: 'center', label: __( 'Center' ) }, + { value: 'right', label: __( 'Right' ) }, + ] } + /> + { + slides[ index ].imageFocusY = value; + setAttributes( { slides: slides } ); + } } + options={ [ + { value: 'top', label: __( 'Top' ) }, + { value: 'center', label: __( 'Center' ) }, + { value: 'bottom', label: __( 'Bottom' ) }, + ] } + /> ) : ( +
          { ( isSelected || !slides[0].imageId ) ? ( { slides.map( ( slide, index ) => slideEdit( slide, index ) ) } @@ -271,6 +344,33 @@ registerBlockType( 'editorial/slideshow', { isLarge label={ __( 'Add a Slide' ) } >{ __( 'Add New Slide' ) } + + + setAttributes( { aspectRatio: option } ) } + /> + setAttributes( { crop: !crop } ) } + /> + setAttributes( { showNextUp: !showNextUp } ) } + /> + + ) : ( blockMarkup( slides ) @@ -281,11 +381,15 @@ registerBlockType( 'editorial/slideshow', { save( { attributes } ) { const { + aspectRatio, + className, + crop, + showNextUp, slides, } = attributes; return ( -
          +
          { blockMarkup( slides ) }
          ); From 9887850d8a20249c4144e9c0e3adebfdf0c16d72 Mon Sep 17 00:00:00 2001 From: philcable Date: Tue, 6 Aug 2019 15:14:48 -0700 Subject: [PATCH 05/11] Clean up functionality and add a few more editor styles The editor styles are still pretty sad and could use some help :) --- src/blocks/slideshow/editor.scss | 35 ++++- src/blocks/slideshow/slideshow.js | 204 +++++++++++++++++++----------- 2 files changed, 156 insertions(+), 83 deletions(-) diff --git a/src/blocks/slideshow/editor.scss b/src/blocks/slideshow/editor.scss index 59efc8e2..abab05a6 100644 --- a/src/blocks/slideshow/editor.scss +++ b/src/blocks/slideshow/editor.scss @@ -7,19 +7,42 @@ .wp-block-editorial-slideshow { - .wp-block-editorial-slideshow-edit-slide { + .wp-block-editorial-slideshow-edit-slide-image { position: relative; - .wp-block-editorial-slideshow-edit-slide__image, - .wp-block-editorial-slideshow-edit-slide__remove-slide { - position: absolute; - top: 0; + &:not(.has-image) { + display: block; + margin: 0; + + &:before, + &:after { + content: none; + } + } + + .bu-blocks-slideshow-media { + float: none; + width: 100%; } - .wp-block-editorial-slideshow-edit-slide__image { + .wp-block-editorial-slideshow-edit-slide-image-controls { display: flex; left: 50%; + position: absolute; + top: 0; transform: translateX(-50%); + z-index: 1; + } + + .wp-block-editorial-slideshow-edit-slide-image-controls__focus { + text-align: right; + + .components-base-control__label { + display: inline; + } + .components-select-control__input { + width: auto; + } } } diff --git a/src/blocks/slideshow/slideshow.js b/src/blocks/slideshow/slideshow.js index 3dbbdc85..6e6f169b 100644 --- a/src/blocks/slideshow/slideshow.js +++ b/src/blocks/slideshow/slideshow.js @@ -72,6 +72,29 @@ const slideIndex = ( index ) => { return oneIndexed.toString().padStart( 3, '0' ); }; +/** + * Return the image markup for a slide. + * + * @param {object} slide Object with slide data. + */ +const imageMarkup = ( slide ) => { + return ( + +
          + +
          + ); +}; + /** * Return the block markup. * @@ -98,19 +121,7 @@ const blockMarkup = ( slides ) => {
        • -
          - -
        • + >{ imageMarkup( slide ) } ) }
        @@ -213,10 +224,16 @@ registerBlockType( 'editorial/slideshow', { * Removes the slide image. */ const onRemoveImage = () => { - slides[ index ].imageId = undefined; - slides[ index ].imageUrl = undefined; - - setAttributes( { slides: slides } ); + const newSlides = Object.values( { + ...slides, + [ index ]: { + ...slides[ index ], + imageId: '', + imageUrl: '', + } + } ); + + setAttributes( { slides: newSlides } ); }; /** @@ -231,14 +248,16 @@ registerBlockType( 'editorial/slideshow', { return; } - const imageSize = 'huge'; + const newSlides = Object.values( { + ...slides, + [ index ]: { + ...slides[ index ], + imageId: image.id, + imageUrl: image.url, + } + } ); - let url = ( image.sizes[ imageSize ] ) ? image.sizes[ imageSize ].url : image.url; - - slides[ index ].imageId = image.id; - slides[ index ].imageUrl = url; - - setAttributes( { slides: slides } ); + setAttributes( { slides: newSlides } ); }; return ( @@ -252,60 +271,83 @@ registerBlockType( 'editorial/slideshow', { label={ __( 'Remove Slide' ) } onClick={ () => { slides.splice( index, 1 ); - setAttributes( { slides: slides } ); + + setAttributes( { slides: [ ...slides ] } ); } } >{ __( 'Remove Slide' ) } { slide.imageId ? ( - - ( -
        - - -
        - ) } - /> - - { - slides[ index ].imageFocusX = value; - setAttributes( { slides: slides } ); - } } - options={ [ - { value: 'left', label: __( 'Left' ) }, - { value: 'center', label: __( 'Center' ) }, - { value: 'right', label: __( 'Right' ) }, - ] } - /> - { - slides[ index ].imageFocusY = value; - setAttributes( { slides: slides } ); - } } - options={ [ - { value: 'top', label: __( 'Top' ) }, - { value: 'center', label: __( 'Center' ) }, - { value: 'bottom', label: __( 'Bottom' ) }, - ] } - /> -
        +
        + + ( +
        + + +
        + ) } + /> +
        + { imageMarkup( slide ) } +
        +
        + { + const newSlides = Object.values( { + ...slides, + [ index ]: { + ...slides[ index ], + imageFocusX: value, + } + } ); + + setAttributes( { slides: newSlides } ); + } } + options={ [ + { value: 'left', label: __( 'Left' ) }, + { value: 'center', label: __( 'Center' ) }, + { value: 'right', label: __( 'Right' ) }, + ] } + /> + { + const newSlides = Object.values( { + ...slides, + [ index ]: { + ...slides[ index ], + imageFocusY: value, + } + } ); + + setAttributes( { slides: newSlides } ); + } } + options={ [ + { value: 'top', label: __( 'Top' ) }, + { value: 'center', label: __( 'Center' ) }, + { value: 'bottom', label: __( 'Bottom' ) }, + ] } + /> +
        +
        +
        ) : ( { - slides[ index ].caption = value; - setAttributes( { slides: slides } ); + const newSlides = Object.values( { + ...slides, + [ index ]: { + ...slides[ index ], + caption: value, + } + } ); + + setAttributes( { slides: newSlides } ); } } formattingControls={ [ 'bold', 'italic', 'link' ] } + keepPlaceholderOnFocus />
      ); From adc052e792c51f8996c5ea26e6782e4233dd9de9 Mon Sep 17 00:00:00 2001 From: Charlie Guerrero Date: Thu, 22 Aug 2019 10:36:55 -0400 Subject: [PATCH 06/11] height override in editor styles --- src/blocks/slideshow/editor.scss | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/blocks/slideshow/editor.scss b/src/blocks/slideshow/editor.scss index abab05a6..aeaf062e 100644 --- a/src/blocks/slideshow/editor.scss +++ b/src/blocks/slideshow/editor.scss @@ -94,4 +94,8 @@ > div:not(:last-of-type) label { border-right: 0; } -} \ No newline at end of file +} + +.block-editor__container .bu-blocks-slideshow-media-actual { + height: 100%; +} From 39a8106da4cdbbf6e03e7f9560bbf70991b37308 Mon Sep 17 00:00:00 2001 From: Charlie Guerrero Date: Thu, 22 Aug 2019 10:37:14 -0400 Subject: [PATCH 07/11] image focus styles --- .../_bu-blocks-block-slideshow-base.scss | 79 +++++++++++++++++-- 1 file changed, 72 insertions(+), 7 deletions(-) diff --git a/src/blocks/slideshow/_bu-blocks-block-slideshow-base.scss b/src/blocks/slideshow/_bu-blocks-block-slideshow-base.scss index 608901a7..fd85ef9e 100644 --- a/src/blocks/slideshow/_bu-blocks-block-slideshow-base.scss +++ b/src/blocks/slideshow/_bu-blocks-block-slideshow-base.scss @@ -207,15 +207,80 @@ .bu-blocks-slideshow-media-actual { object-fit: cover; } + + .has-mediafocus-left-top { + .bu-blocks-slideshow-media-actual { + object-fit: cover; + object-position: 25% 25%; + font-family: 'object-fit: cover; object-position: 25% 25%;' + } + } + + .has-mediafocus-left-middle { + .bu-blocks-slideshow-media-actual { + object-fit: cover; + object-position: 25% 50%; + font-family: 'object-fit: cover; object-position: 25% 50%;' + } + } + + .has-mediafocus-left-bottom { + .bu-blocks-slideshow-media-actual { + object-fit: cover; + object-position: 25% 75%; + font-family: 'object-fit: cover; object-position: 25% 75%;' + } + } + + .has-mediafocus-center-top { + .bu-blocks-slideshow-media-actual { + object-fit: cover; + object-position: 50% 25%; + font-family: 'object-fit: cover; object-position: 50% 25%;' + } + } + + .has-mediafocus-center-middle { + .bu-blocks-slideshow-media-actual { + object-fit: cover; + object-position: 50% 50%; + font-family: 'object-fit: cover; object-position: 50% 50%;' + } + } + + .has-mediafocus-center-bottom { + .bu-blocks-slideshow-media-actual { + object-fit: cover; + object-position: 50% 75%; + font-family: 'object-fit: cover; object-position: 50% 75%;' + } + } + + .has-mediafocus-right-top { + .bu-blocks-slideshow-media-actual { + object-fit: cover; + object-position: 75% 25%; + font-family: 'object-fit: cover; object-position: 75% 25%;' + } + } + + .has-mediafocus-right-middle { + .bu-blocks-slideshow-media-actual { + object-fit: cover; + object-position: 75% 50%; + font-family: 'object-fit: cover; object-position: 75% 50%;' + } + } + + .has-mediafocus-right-bottom { + .bu-blocks-slideshow-media-actual { + object-fit: cover; + object-position: 75% 75%; + font-family: 'object-fit: cover; object-position: 75% 75%;' + } + } } -// .has-aspectratio-16by9 { -// .bu-blocks-slideshow-media { -// &:after { -// padding-top: 9 / 16 * 100%; -// } -// } -// } .has-aspectratio-4by3 { .bu-blocks-slideshow-media { &:after { From 293af4c35b62f6a0fa1e2ba4fabbad501e3ff571 Mon Sep 17 00:00:00 2001 From: Charlie Guerrero Date: Thu, 22 Aug 2019 10:38:47 -0400 Subject: [PATCH 08/11] additions to image focus back end dev --- src/blocks/slideshow/slideshow.js | 46 ++++++++++--------------------- 1 file changed, 15 insertions(+), 31 deletions(-) diff --git a/src/blocks/slideshow/slideshow.js b/src/blocks/slideshow/slideshow.js index 6e6f169b..f911fec5 100644 --- a/src/blocks/slideshow/slideshow.js +++ b/src/blocks/slideshow/slideshow.js @@ -119,7 +119,7 @@ const blockMarkup = ( slides ) => { { slides.map( ( slide, index ) =>
    • { imageMarkup( slide ) }
    • ) } @@ -165,8 +165,7 @@ const blockMarkup = ( slides ) => { // Empty slide object. const emptySlide = { caption: '', - imageFocusX: 'center', - imageFocusY: 'center', + imageFocus: 'middle-center', imageId: '', imageUrl: '', }; @@ -304,45 +303,30 @@ registerBlockType( 'editorial/slideshow', {
{ const newSlides = Object.values( { ...slides, [ index ]: { ...slides[ index ], - imageFocusX: value, + imageFocus: value, } } ); setAttributes( { slides: newSlides } ); } } options={ [ - { value: 'left', label: __( 'Left' ) }, - { value: 'center', label: __( 'Center' ) }, - { value: 'right', label: __( 'Right' ) }, - ] } - /> - { - const newSlides = Object.values( { - ...slides, - [ index ]: { - ...slides[ index ], - imageFocusY: value, - } - } ); - - setAttributes( { slides: newSlides } ); - } } - options={ [ - { value: 'top', label: __( 'Top' ) }, - { value: 'center', label: __( 'Center' ) }, - { value: 'bottom', label: __( 'Bottom' ) }, + { value: 'left-top', label: __( 'Left Top' ) }, + { value: 'left-middle', label: __( 'Left Middle' ) }, + { value: 'left-bottom', label: __( 'Left Bottom' ) }, + { value: 'center-top', label: __( 'Center Top' ) }, + { value: 'center-middle', label: __( 'Center Middle' ) }, + { value: 'center-bottom', label: __( 'Center Bottom' ) }, + { value: 'Right-top', label: __( 'Right Top' ) }, + { value: 'Right-middle', label: __( 'Right Middle' ) }, + { value: 'Right-bottom', label: __( 'Right Bottom' ) }, ] } />
From 1548a58212bae5bea08138a3de8e154c3669c96c Mon Sep 17 00:00:00 2001 From: philcable Date: Thu, 22 Aug 2019 15:02:04 -0700 Subject: [PATCH 09/11] Adjust imageFocus values --- src/blocks/slideshow/slideshow.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/blocks/slideshow/slideshow.js b/src/blocks/slideshow/slideshow.js index f911fec5..8440b9e0 100644 --- a/src/blocks/slideshow/slideshow.js +++ b/src/blocks/slideshow/slideshow.js @@ -165,7 +165,7 @@ const blockMarkup = ( slides ) => { // Empty slide object. const emptySlide = { caption: '', - imageFocus: 'middle-center', + imageFocus: 'center-middle', imageId: '', imageUrl: '', }; @@ -324,9 +324,9 @@ registerBlockType( 'editorial/slideshow', { { value: 'center-top', label: __( 'Center Top' ) }, { value: 'center-middle', label: __( 'Center Middle' ) }, { value: 'center-bottom', label: __( 'Center Bottom' ) }, - { value: 'Right-top', label: __( 'Right Top' ) }, - { value: 'Right-middle', label: __( 'Right Middle' ) }, - { value: 'Right-bottom', label: __( 'Right Bottom' ) }, + { value: 'right-top', label: __( 'Right Top' ) }, + { value: 'right-middle', label: __( 'Right Middle' ) }, + { value: 'right-bottom', label: __( 'Right Bottom' ) }, ] } />
From 585c5fa9a13d0a11a67105f465e4938705202cbb Mon Sep 17 00:00:00 2001 From: acketon Date: Fri, 7 Jun 2024 11:37:16 -0400 Subject: [PATCH 10/11] get slideshow prototype block working --- src/blocks-frontend.js | 1 + src/blocks.js | 2 +- src/blocks/slideshow/frontend.js | 15 ++++++++++++--- src/blocks/slideshow/style.scss | 2 +- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/blocks-frontend.js b/src/blocks-frontend.js index 51aec7ad..c872e306 100644 --- a/src/blocks-frontend.js +++ b/src/blocks-frontend.js @@ -15,6 +15,7 @@ import './blocks/collapsible-control/frontend'; import './blocks/drawer/frontend'; import './blocks/modal/frontend'; import './blocks/photoessay/frontend'; +import './blocks/slideshow/frontend'; // Export bu_blocks object to the window so it's accessible easily for // child themes to call public functions or debug. diff --git a/src/blocks.js b/src/blocks.js index 1abf7fa7..5a395b56 100644 --- a/src/blocks.js +++ b/src/blocks.js @@ -27,7 +27,7 @@ import './blocks/modal/modal.js'; import './blocks/photoessay/photoessay.js'; import './blocks/pullquote/pullquote.js'; import './blocks/relatedstories/relatedstories.js'; -// import './blocks/slideshow/slideshow.js'; // unfinished +import './blocks/slideshow/slideshow.js'; // unfinished import './blocks/stat/stats.js'; // Add the 'Caption' style to the core paragraph block. diff --git a/src/blocks/slideshow/frontend.js b/src/blocks/slideshow/frontend.js index 61c33bf6..3302482d 100644 --- a/src/blocks/slideshow/frontend.js +++ b/src/blocks/slideshow/frontend.js @@ -1,3 +1,12 @@ +/** + * BLOCK: Slideshow + * + * An slideshow block to display content + */ + +// Internal dependencies. +import bu_blocks from '../../blocks-frontend-tools'; + bu_blocks.slideshow = (function() { var slideshowBlocks = []; var $body = document.getElementsByTagName('body')[0]; @@ -44,7 +53,7 @@ bu_blocks.slideshow = (function() { //for each one found store as object in the array slideshowBlocks.push(block); - } + } // set active states on items and captions for ( i = 0; i < block.mediatrackitems.length; i++) { @@ -69,7 +78,7 @@ bu_blocks.slideshow = (function() { var setupHandlers = function() { if (slideshowBlocks.length > 0) { - for ( i = 0; i < slideshowBlocks.length; i++ ) { + for ( let i = 0; i < slideshowBlocks.length; i++ ) { var block = slideshowBlocks[i]; block.backBtn.addEventListener("click", function(e){ @@ -250,4 +259,4 @@ bu_blocks.slideshow = (function() { return slideshowBlocks; } }; -})(); \ No newline at end of file +})(); diff --git a/src/blocks/slideshow/style.scss b/src/blocks/slideshow/style.scss index 0c791395..fc7f5e1c 100644 --- a/src/blocks/slideshow/style.scss +++ b/src/blocks/slideshow/style.scss @@ -1,7 +1,7 @@ // ================================================================= // Slideshow Block Base Styles // ================================================================= - +@import '../../tools'; @import 'src/global/bu-blocks-config'; @import 'src/blocks/slideshow/bu-blocks-block-slideshow-base'; @import 'src/blocks/slideshow/bu-blocks-block-slideshow-themeable'; From bab9ba4581a5806b164b3824727bff76048ec1df Mon Sep 17 00:00:00 2001 From: acketon Date: Fri, 7 Jun 2024 11:37:21 -0400 Subject: [PATCH 11/11] rebuild --- dist/blocks-rtl.css | 84 ++++++ dist/blocks.asset.php | 2 +- dist/blocks.css | 84 ++++++ dist/blocks.css.map | 2 +- dist/blocks.js | 473 +++++++++++++++++++++++++++++- dist/blocks.js.map | 2 +- dist/bu-blocks-frontend.asset.php | 2 +- dist/bu-blocks-frontend.js | 249 ++++++++++++++++ dist/bu-blocks-frontend.js.map | 2 +- dist/style-blocks-rtl.css | 303 +++++++++++++++++++ dist/style-blocks.css | 303 +++++++++++++++++++ dist/style-blocks.css.map | 2 +- 12 files changed, 1498 insertions(+), 10 deletions(-) diff --git a/dist/blocks-rtl.css b/dist/blocks-rtl.css index ddce77ce..6844ee82 100644 --- a/dist/blocks-rtl.css +++ b/dist/blocks-rtl.css @@ -941,6 +941,90 @@ figure.wp-block-editorial-relatedstories-article-image { max-width: 100%; border: 1px solid var(--wp-admin-theme-color); } +/*!*********************************************************************************************************************************************************************************************************************************************************!*\ + !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/blocks/slideshow/editor.scss ***! + \*********************************************************************************************************************************************************************************************************************************************************/ +/** + * #.# Editor Styles + * + * CSS for just Backend enqueued after style.scss + * which makes it higher in priority. + */ +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image { + position: relative; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image:not(.has-image) { + display: block; + margin: 0; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image:not(.has-image):before, .wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image:not(.has-image):after { + content: none; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image .bu-blocks-slideshow-media { + float: none; + width: 100%; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image .wp-block-editorial-slideshow-edit-slide-image-controls { + display: flex; + right: 50%; + position: absolute; + top: 0; + transform: translateX(50%); + z-index: 1; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image .wp-block-editorial-slideshow-edit-slide-image-controls__focus { + text-align: left; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image .wp-block-editorial-slideshow-edit-slide-image-controls__focus .components-base-control__label { + display: inline; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image .wp-block-editorial-slideshow-edit-slide-image-controls__focus .components-select-control__input { + width: auto; +} +.wp-block-editorial-slideshow .bu-blocks-slideshow-caption { + list-style: none; +} +.wp-block-editorial-slideshow::after { + clear: both; + content: " "; + display: table; +} + +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field { + display: flex; + flex-wrap: wrap; + margin-bottom: 1.5em; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field .components-base-control__label { + padding-bottom: 1em; + width: 100%; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field input { + display: none; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field .components-radio-control__option label { + background-color: #fff; + border: 1px solid #e2e4e7; + padding: 8px 10px; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field .components-radio-control__option input:checked + label { + color: #fff; + background-color: #1e8cbe; + border-color: #1e8cbe; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field > div:first-of-type label { + border-radius: 0 5px 5px 0; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field > div:last-of-type label { + border-radius: 5px 0 0 5px; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field > div:not(:last-of-type) label { + border-left: 0; +} + +.block-editor__container .bu-blocks-slideshow-media-actual { + height: 100%; +} /*!****************************************************************************************************************************************************************************************************************************************************!*\ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/blocks/stat/editor.scss ***! \****************************************************************************************************************************************************************************************************************************************************/ diff --git a/dist/blocks.asset.php b/dist/blocks.asset.php index 55c9cdb8..4221dcf7 100644 --- a/dist/blocks.asset.php +++ b/dist/blocks.asset.php @@ -1 +1 @@ - array('react'), 'version' => '44f9dcda4cfcbf76e6c5'); + array('react'), 'version' => '791e67c608132af72ac8'); diff --git a/dist/blocks.css b/dist/blocks.css index 2dea13a8..0e951884 100644 --- a/dist/blocks.css +++ b/dist/blocks.css @@ -941,6 +941,90 @@ figure.wp-block-editorial-relatedstories-article-image { max-width: 100%; border: 1px solid var(--wp-admin-theme-color); } +/*!*********************************************************************************************************************************************************************************************************************************************************!*\ + !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/blocks/slideshow/editor.scss ***! + \*********************************************************************************************************************************************************************************************************************************************************/ +/** + * #.# Editor Styles + * + * CSS for just Backend enqueued after style.scss + * which makes it higher in priority. + */ +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image { + position: relative; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image:not(.has-image) { + display: block; + margin: 0; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image:not(.has-image):before, .wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image:not(.has-image):after { + content: none; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image .bu-blocks-slideshow-media { + float: none; + width: 100%; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image .wp-block-editorial-slideshow-edit-slide-image-controls { + display: flex; + left: 50%; + position: absolute; + top: 0; + transform: translateX(-50%); + z-index: 1; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image .wp-block-editorial-slideshow-edit-slide-image-controls__focus { + text-align: right; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image .wp-block-editorial-slideshow-edit-slide-image-controls__focus .components-base-control__label { + display: inline; +} +.wp-block-editorial-slideshow .wp-block-editorial-slideshow-edit-slide-image .wp-block-editorial-slideshow-edit-slide-image-controls__focus .components-select-control__input { + width: auto; +} +.wp-block-editorial-slideshow .bu-blocks-slideshow-caption { + list-style: none; +} +.wp-block-editorial-slideshow::after { + clear: both; + content: " "; + display: table; +} + +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field { + display: flex; + flex-wrap: wrap; + margin-bottom: 1.5em; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field .components-base-control__label { + padding-bottom: 1em; + width: 100%; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field input { + display: none; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field .components-radio-control__option label { + background-color: #fff; + border: 1px solid #e2e4e7; + padding: 8px 10px; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field .components-radio-control__option input:checked + label { + color: #fff; + background-color: #1e8cbe; + border-color: #1e8cbe; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field > div:first-of-type label { + border-radius: 5px 0 0 5px; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field > div:last-of-type label { + border-radius: 0 5px 5px 0; +} +.bu-block-editorial-slideshow-aspect-ratio-options .components-base-control__field > div:not(:last-of-type) label { + border-right: 0; +} + +.block-editor__container .bu-blocks-slideshow-media-actual { + height: 100%; +} /*!****************************************************************************************************************************************************************************************************************************************************!*\ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/blocks/stat/editor.scss ***! \****************************************************************************************************************************************************************************************************************************************************/ diff --git a/dist/blocks.css.map b/dist/blocks.css.map index 33c4db88..7b34864a 100644 --- a/dist/blocks.css.map +++ b/dist/blocks.css.map @@ -1 +1 @@ -{"version":3,"file":"blocks.css","mappings":";;;AAAA;;;;;EAAA;ACAA;;;;;;CAAA;ADSA;;;EAAA;AAIA;EACC;AAKD;;AADA;EACC;AAID;;AACC;;EACC;AAGF;;AAEC;EACC;AACF;;AAIC;EACC;AADF;;AAwBC;EACC,WEw4ByC;AF75B3C,C;;;;AGxCA;;;;;EAAA;AAOA;EACC;EACA;EACA;AAAD;AAEC;EACC;EACA;AAAF;AAGC;EACC;AADF;AAIC;EACC;EACA;EACA;AAFF;AAKC;EACC;EACA;EACA;AAHF;AAMC;EACC;AAJF;AAOC;EACC;AALF;AAQC;EACC;AANF;;AAWC;EACC;AARF;AAWC;EACC;EACA;AATF;;AAaA;EACC;EACA;EACA;AAVD;AAYC;EACC;AAVF;AAYE;EACC;EACA;EACA;AAVH;AAcE;EACC;AAZH;AAgBC;;EAEC;AAdF;AAiBC;EACC;AAfF;;AAmBA;;EAEC;AAhBD;;AAmBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAhBD;AAkBC;EACC;EACA;EACA;EACA;EACA;AAhBF;AAmBC;EACC;EACA;AAjBF;AAoBC;EACC;EACA;EACA;EACA;EACA;EACA;AAlBF;;AAuBC;;EAEC;AApBF;AAuBC;EACC;EACA;AArBF;;AAyBA;;;EAAA;AAIA;EACC;AAtBD;;AA2BA;EACC;AAxBD;AA0BC;EACC;AAxBF;;AAgCC;;EACC;AA5BF,C;;;;ACvIA;;;;;EAAA;AAOC;EACA;AAAD;;AAIC;EACC;EACA;EACA;AADF;AAGC;EACC;AADF;AAGE;EACC;AADH;AAKC;EACC;EACA;AAHF;;AAQC;EACC;EACA;AALF,C;;;;AC7BA;;;;;EAAA;AAQA;;;EAAA;AAIA;EACC;EACA;EACA;AADD;;AAIA;EACC;AADD;AAGC;EACC;EACA;EACA;AADF;;AAQE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AALH;AAQE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AANH;;AAcC;EACC;AAXF;AAYE;EACC;AAVH;AAaE;EACC;AAXH,C;;;;ACzDA;;;;;EAAA;AASC;EACC;AAFF,C;;;;ACRA;;;;;EAAA;ANAA;;;;;;CAAA;AMUA;EACC;EACA;EACA;EACA;EACA;AAID;AACA;EACC;AACD;;AAMC;;EACC;EACA;EACA;EACA;EACA;AAFF;AAIE;;EACC;AADH;AAKC;;EACC;AAFF;AAKC;;EACC;AAFF;AAKC;;EACC;EACA;AAFF;AAKC;;EACC;AAFF;AAKC;;EACC;AAFF;AAKC;;EACC;AAFF;;AAQC;EACC;AALF;AAYC;EACC;EACA;EACA,mBL6b0C;AKvc5C;AAaE;EACC;AAXH;AAcE;EACC;EACA;EACA;EACA;EACA;AAZH;AAcG;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AAZJ,C;;;;ANxFA;;;;;;CAAA;AOEA;EACC;EACA;EACA;EACA,8DC6D2C;ED5D3C;EACA;AAMD,C;;;;AEdA;;;;;EAAA;AAUC;EACC;EAEA;AAJF;;AASC;;EAEC;AANF;AASC;EACC;EACA;AAPF;AASE;EACC;AAPH;;AAeC;EAEC;AAbF;;AAuBE;;EACC;EACA;EACA;EACA;AAnBH;AA4CE;;EACC;AAzCH;AA2CG;;EAEC;AAzCJ;AA6CE;;EACC;AA1CH;;AA+DG;EACC;EACA;AA5DJ;;AAuEE;EACC;EACA;AApEH;;AAiFG;EACC;EACA;AA9EJ;;AAyFE;EACC;EACA;AAtFH,C;;;;AC/DC;;EAEC;AADF;;AAKA;EACC;EACA;EACA;AAFD;AAIC;EAEC;EACA;AAHF;;AAOA;EACC;AAJD;AAMC;EACC;AAJF;AAOC;EACC;EACA;EACA;EACA;EACA;EACA;AALF,C;;;;AC5BA;;;;;EAAA;AAOA;EACC;AAAD;;AAIE;EACC;AADH,C;;;;ACZA;;;;;EAAA;AAQE;EACA;EACA;EACA;EACA;EACA;AADF;AAOE;EACC;AALH,C;;;;ACfA;;;;;EAAA;AAQA;;EAEC;AADD;AAGC;;EACC;EACA;EACA;EACA;EACA;AAAF;;AAMC;EACC;EACA;AAHF,C;;;;ACtBA;;;;;EAAA;AAQE;EACC;AADH;AAIE;EACC;EACA;EACA;EACA;EACA;AAFH;AASI;EACC;EACA;AAPL;AAcE;EACC;EACA;AAZH;AAcE;EACC;AAZH;AAeG;EACC;AAbJ;AAkBE;EACC;EACA;AAhBH;AAmBE;EACC;AAjBH,C;;;;ACpCA;;;;;EAAA;AAOA;;;EAAA;AAIA;EACC;AAAD;;AAMC;;EACC;AAFF;;AAQA;EACC;EACA;AALD;;AASA;EACC;AAND;;AASA;;EAEC;AAND;;AASA;;EAEC;AAND;;AASA;EACC;EACA;AAND;;AASA;EACC;AAND;AAQC;EACC;AANF;;AAUA;EACC;AAPD,C;;;;ACpDA;;;;;EAAA;AhBAA;;;;;;CAAA;AgBWA;EAGC;EACA;EAUA;;;;;IAAA;AAHD;AAFC;EACC;AAIF;AAQE;EACC;AANH;AAWE;EACC;AATH;AAcE;EACC;AAZH;AAiBE;EACC;AAfH;AAoBE;EACC;AAlBH;AAuBE;EACC;AArBH;ACymCE;EDrlCA;IAGE;EAnBF;AACF;AAwBE;EACC;AAtBH;AA0BC;EACC;AAxBF;AA0BE;EACC;AAxBH;AA8BC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA5BF;AAgCC;EACC;EACA;AA9BF;AAmCE;EACC;AAjCH;AAsCC;;;;;EAKC;AApCF;;AA2CA;;;;CAAA;AAQC;EACC;AA3CF;AA6CE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA3CH;AA6CG;EACC;AA3CJ;AA+CE;EACC;AA7CH;;AAkDA;EACC;AA/CD;;AAkDA;EACC;AA/CD;;AAkDA;EACC;AA/CD;;AAkDA;EACC;AA/CD;;AAkDA;EACC;AA/CD;;AAkDA;EACC;AA/CD;;AAkDA;EACC;AA/CD;;AAkDA;EACC;AA/CD;;AAkDA;EACC;AA/CD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD;;AAsDA;EACC;AAnDD,C;;;;AEvNA;;;;;EAAA;AAOA;EACC;EACA;EACA;EACA;AAAD;AAEC;EACC;AAAF,C;;;;ACdA;;;;;EAAA;AAUC;EACC;AAHF;AAKE;EACC;EACA;EACA;AAHH;AAOC;EACC;AALF;;AAUA;EACC;AAPD;;AAUA;EACC;AAPD;;AAWC;;EAEC;AARF;AAWC;;EAEC;EACA;AATF;AAYC;EACC;EACA;AAVF;AAaC;EACC;AAXF;AAaE;EACC;EACA;AAXH,C;;;;AC7CA;;;;;EAAA;AAOA;;;EAAA;AAIA;EACC;AAAD;;AAGA;EACC;AAAD;AACC;;EAEC;AACF;AAKE;;EACC;AAFH;AASE;;;;EAEC;EACA;AALH;AAUE;;EAEC;AARH;AAaE;;EAEC;AAXH;AAeC;EACC;EACA;AAbF;AAiBC;EACC;AAfF;AAcC;EACC;AAfF;;AAqBC;;EACC;EACA;AAjBF;AAmBE;;;;EAEC;AAfH;AAiBG;;;;;;;;EAEC;EACA;AATJ;AAYG;EACC;AAPJ;AAMG;;;;EACC;AAPJ,C","sources":["webpack://bu-blocks/./src/blocks/aside/editor.scss","webpack://bu-blocks/./node_modules/object-fit-images/preprocessors/mixin.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/_config.scss","webpack://bu-blocks/./src/blocks/buniverse/editor.scss","webpack://bu-blocks/./src/blocks/button/editor.scss","webpack://bu-blocks/./src/blocks/clicktotweet/editor.scss","webpack://bu-blocks/./src/blocks/collapsible-control/editor.scss","webpack://bu-blocks/./src/blocks/collapsible/editor.scss","webpack://bu-blocks/./src/blocks/custom-html/editor.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/_typography-variables.scss","webpack://bu-blocks/./src/blocks/drawer/editor.scss","webpack://bu-blocks/./src/components/background/editor.scss","webpack://bu-blocks/./src/blocks/headline/editor.scss","webpack://bu-blocks/./src/blocks/introparagraph/editor.scss","webpack://bu-blocks/./src/blocks/leadin/editor.scss","webpack://bu-blocks/./src/blocks/listicle/editor.scss","webpack://bu-blocks/./src/blocks/modal/editor.scss","webpack://bu-blocks/./src/blocks/photoessay/editor.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/_mixins.scss","webpack://bu-blocks/./src/blocks/pullquote/editor.scss","webpack://bu-blocks/./src/blocks/relatedstories/editor.scss","webpack://bu-blocks/./src/blocks/stat/editor.scss"],"sourcesContent":["/**\n * #.# Editor Styles\n *\n * CSS for just Backend enqueued after style.scss\n * which makes it higher in priority.\n */\n\n@import '../../tools';\n\n/**\n* Define CSS variables to allow child themes\n* to alter these values easily if needed.\n**/\n:root {\n\t--bu_blocks-block-bu-aside-editor-floated-width: calc(100% / 3);\n}\n\n// Remove default float left on Aside from frontend styles.\naside[data-type=\"editorial/aside\"].wp-block-editorial-aside {\n\tfloat: none;\n}\n\n[data-align=\"right\"],\n[data-align=\"left\"] {\n\t> [data-type=\"editorial/aside\"].wp-block-editorial-aside {\n\t\twidth: var(--bu_blocks-block-bu-aside-editor-floated-width);\n\t}\n}\n\n[data-align=\"right\"] {\n\t> [data-type=\"editorial/aside\"].wp-block-editorial-aside {\n\t\tfloat: right;\n\t}\n}\n\n[data-align=\"left\"] {\n\t> [data-type=\"editorial/aside\"].wp-block-editorial-aside {\n\t\tfloat: left;\n\t}\n}\n\n\n// .editor-block-list__block[data-align=\"right\"] .wp-block-editorial-aside .editor-block-list__block-edit,\n// .editor-block-list__block[data-align=\"left\"] .wp-block-editorial-aside .editor-block-list__block-edit,\n// .block-editor-block-list__block[data-align=\"right\"] .wp-block-editorial-aside .block-editor-block-list__block-edit,\n// .block-editor-block-list__block[data-align=\"left\"] .wp-block-editorial-aside .block-editor-block-list__block-edit {\n// \tfloat: none;\n// \tmargin-left: 0;\n// \tmargin-right: 0;\n// }\n\n// .editor-block-list__block[data-align=\"left\"] .wp-block-editorial-aside .editor-block-list__block,\n// .editor-block-list__block[data-align=\"right\"] .wp-block-editorial-aside .editor-block-list__block,\n// .block-editor-block-list__block[data-align=\"left\"] .wp-block-editorial-aside .block-editor-block-list__block,\n// .block-editor-block-list__block[data-align=\"right\"] .wp-block-editorial-aside .block-editor-block-list__block {\n// \tpadding-left: 16px;\n// \tpadding-right: 16px;\n// }\n\n.wp-block-editorial-aside.has-dark-background {\n\t.wp-block-heading h2 {\n\t\tcolor: $color-grayscale-f;\n\t}\n}\n","/*\n This mixin can be used to set the object-fit:\n @include object-fit(contain);\n\n or object-fit and object-position:\n @include object-fit(cover, top);\n*/\n@mixin object-fit($fit: fill, $position: null){\n -o-object-fit: $fit;\n object-fit: $fit;\n @if $position {\n\t -o-object-position: $position;\n\t object-position: $position;\n \tfont-family: 'object-fit: #{$fit}; object-position: #{$position}';\n } @else {\n \tfont-family: 'object-fit: #{$fit}';\n }\n}\n\n;@import \"sass-embedded-legacy-load-done:3805\";","// =================================================================\n// Variables\n// =================================================================\n\n// BURF Extras\n//\n// Turns a number of extra classes on or off. This is really only\n// for the tools partial - you shouldn't use it in a custom theme\n// unless you're VERY sure you will never need it. Placeholders will\n// still work when this is set to false. Affects friendly grid classes,\n// utility classes, and icon classes.\n//\n// Author: Ashley Kolodziej\n//\n// Styleguide Configuration.Optimization.BURF Extras\n//\n// Access: Public\n//\n// Since: 3.2.0\n\n$burf-extras: true !default;\n\n// Enable media queries\n//\n// Choose whether or not to enable media queries in your stylesheet.\n// If you set this to false, it will print media queries in the\n// order they are declared so that desktop styles will always\n// override mobile styles, regardless of screen size.\n// This is mostly useful for browsers which do not support media queries.\n// By default, an older IE stylesheet is generated using this variable.\n//\n// Styleguide Configuration.Media Queries.Enable media queries\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$mqs: true !default;\n\n// Extra small breakpoint\n//\n// The window width at which extra small styles will begin.\n// By default, this is set to target most large phones.\n//\n// Deprecated versions of this variable include `$XS`.\n//\n// Styleguide Configuration.Media Queries.$xs\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$xs: 500px !default;\n\n// Small breakpoint\n//\n// The window width at which small styles will begin.\n// By default, this is set to target most small tablets\n// and iPads in vertical orientation.\n//\n// Deprecated versions of this variable include `$S`, `$SM`.\n//\n// Styleguide Configuration.Media Queries.$sm\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$sm: 768px !default;\n\n// Medium breakpoint\n//\n// The window width at which medium styles will begin.\n// By default, this is set to target older desktops\n// and iPads in horizontal orientation.\n//\n// Deprecated versions of this variable include `$M`. `$MD`.\n//\n// Styleguide Configuration.Media Queries.$md\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$md: 992px !default;\n\n// Large breakpoint\n//\n// The window width at which large styles will begin.\n// By default, this is set to target most laptops.\n//\n// Deprecated versions of this variable include `$L`, `$LG`.\n//\n// Styleguide Configuration.Media Queries.$lg\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$lg: 1200px !default;\n\n// Extra Large breakpoint\n//\n// The window width at which extra large styles will begin.\n// By default, this is set to target most modern desktops.\n//\n// Styleguide Configuration.Media Queries.f: $xl\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$xl: 1500px !default;\n\n// IE8 Target Width\n//\n// The window width to target for IE8 and below.\n// Because older versions of IE don't support media queries,\n// we use this width to target the most likely browser width\n// an older IE user will be viewing the site in.\n//\n// Styleguide Configuration.Media Queries.g: IE8 Target Width\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$lte-ie8-target-width: $lg !default;\n\n\n/// @group 08-layout\n/// @access public\n/// @since 1.2.0\n\n// Small Container Width\n//\n// The container width for the small (sm) breakpoint.\n//\n// Deprecated versions of this variable include `$container_S`, `$container-SM`.\n//\n// Styleguide Configuration.Containers.Small Container Width\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$container-sm: 750px !default;\n\n// Medium Container Width\n//\n// The container width for the medium (md) breakpoint.\n//\n// Deprecated versions of this variable include `$container_M`, `$container-MD`.\n//\n// Styleguide Configuration.Containers.Medium Container Width\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$container-md: 970px !default;\n\n// Large Container Width\n//\n// The container width for the large (lg) breakpoint.\n//\n// Deprecated versions of this variable include `$container_L`, `$container-LG`.\n//\n// Styleguide Configuration.Containers.Large Container Width\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$container-lg: 1170px !default;\n\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// z-index\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n\n// Z-Index 1\n//\n// The lowest priority z-index possible.\n// Used for content by default.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-1`.\n//\n// Styleguide Configuration.Z-Index.$z-index-1\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-1: 100;\n\n// Z-Index 2\n//\n// A low priority z-index for use in themes.\n// Can be used for items that should overlap content\n// but still sit below stated content.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-2`.\n//\n// Styleguide Configuration.Z-Index.$z-index-2\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-2: 200;\n\n// Z-Index 3\n//\n// A low priority z-index for use in themes.\n// Used for content with multiple states by default.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-3`.\n//\n// Styleguide Configuration.Z-Index.$z-index-3\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-3: 300;\n\n// Z-Index 4\n//\n// A medium priority z-index for use in themes.\n// Can be used for items that should sit above\n// stated content but below panel-like content.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-4`.\n//\n// Styleguide Configuration.Z-Index.$z-index-4\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-4: 400;\n\n// Z-Index 5\n//\n// A medium priority z-index for use in themes.\n// Used for panel-like content by default.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-5`.\n//\n// Styleguide Configuration.Z-Index.$z-index-5\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-5: 500;\n\n// Z-Index 6\n//\n// A medium priority z-index for use in themes.\n// Can be used for items that should sit above\n// panel-like content but below the primary navigation.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-6`.\n//\n// Styleguide Configuration.Z-Index.$z-index-6\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-6: 600;\n\n// Z-Index 7\n//\n// A high priority z-index for use in themes.\n// Used for the primary navigation by default.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-7`.\n//\n// Styleguide Configuration.Z-Index.$z-index-7\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-7: 700;\n\n// Z-Index 8\n//\n// A high priority z-index for use in themes.\n// Can be used for items that should sit above\n// primary navigation but below overlays.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-8`.\n//\n// Styleguide Configuration.Z-Index.$z-index-8\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-8: 800;\n\n// Z-Index 9\n//\n// The highest priority z-index for use in themes.\n// Used for overlays and lightboxes by default.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-9`.\n//\n// Styleguide Configuration.Z-Index.$z-index-9\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-9: 900;\n\n// Z-Index 10\n//\n// A z-index which overrides all other z-indexes.\n// Strictly for development and debugging.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-10`.\n//\n// Styleguide Configuration.Z-Index.$z-index-10\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-10: 1000;\n\n// Z-Index - Content\n//\n// A base z-index to use for interactive content in the\n// content area that isn't an overlay. Some examples are\n// callouts that scale up on hover, or tooltip definitions.\n// Use this variable for your default state.\n//\n// Use `+` or `-` with this variable to set z-index relative\n// to the default state - plus for above, minus for below.\n// Change this variable to change the stacking order for\n// all states in the site.\n//\n// #### Examples\n//\n// ##### Ensure callouts that expand on hover show over others.\n// \t\t\t.callout:hover {\n//\t\t\t\ttransform: scale(1.25);\n//\t\t\t\tz-index: $z-index-content;\n//\t\t\t}\n//\n// Styleguide Configuration.Z-Index.$z-index-content\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-content: $z-index-1 !default;\n\n// Z-Index - States\n//\n// A base z-index to use for content with multiple states.\n// A good example of this content might be a form with\n// multiple states stacked on one another that you animate.\n// Use this variable for your default state.\n//\n// Use `+` or `-` with this variable to set z-index relative\n// to the default state - plus for above, minus for below.\n// Change this variable to change the stacking order for\n// all states in the site.\n//\n// #### Examples\n//\n// ##### Set z-index on a stacked form with states.\n// \t\t\t.form-state-start,\n//\t\t\t.form-state-active {\n//\t\t\t\tz-index: $z-index-states;\n//\t\t\t}\n//\n//\t\t\t.form-state-getinfo {\n//\t\t\t\tz-index: $z-index-states - 1;\n//\t\t\t}\n//\n//\t\t\t.form-state-end {\n//\t\t\t\tz-index: $z-index-states - 2;\n//\t\t\t}\n//\n// Styleguide Configuration.Z-Index.$z-index-states\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-states: $z-index-3 !default;\n\n// Z-Index - Panels\n//\n// A base z-index to use for panel-like content.\n// Panel-like content can include panels that open\n// and close, such as horizontal secondary navigation\n// menus or filters, which push aside or overlap other content.\n//\n// Use this variable alone to set a default z-index which\n// will play nicely with other types of interactive content\n// on your site. Use `+` or `-` with it to set a z-index relative\n// to all panels. Change this variable to change the\n// default z-index for all panel-like content.\n//\n// #### Examples\n//\n// ##### Ensure two stacked filters on a degree page overlap correctly.\n//\t\t\t.degree-filter {\n//\t\t\t\tz-index: $z-index-panels;\n//\t\t\t}\n//\n//\t\t\t.degree-subfilter {\n//\t\t\t\tz-index: $z-index-panels - 1;\n//\t\t\t}\n//\n// Styleguide Configuration.Z-Index.$z-index-panels\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-panels: $z-index-5 !default;\n\n// Z-Index - Primary Navigation\n//\n// A base z-index to use for the primary navigation.\n// By default, this sets a z-index which will put dropdown\n// menus above content, but below overlays.\n//\n// Use this variable alone to set a default z-index which\n// will play nicely with other types of interactive content\n// on your site. Use `+` or `-` with it to set a z-index relative\n// to the primary navigation. Change this variable to change the\n// stacking order of the primary navigation.\n//\n// Styleguide Configuration.Z-Index.$z-index-primarynav\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-primarynav: $z-index-7 !default;\n\n// Z-Index - Overlays\n//\n// A base z-index to use for overlays and lightboxes.\n// This z-index will always be on top unless you are using `$z-index-dev`.\n// Use this variable alone to set a default z-index which\n// will play nicely with other types of interactive content\n// on your site. Use `+` or `-` with it to set a z-index relative\n// to the default overlay. Change this variable to change the\n// stacking order of all overlays. (You may want to do this if you\n// have a fixed sticky navigation so that the sticky navigation isn't\n// always on top, even with lightboxes.)\n//\n// Styleguide Configuration.Z-Index.$z-index-overlays\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-overlays: $z-index-9 !default;\n\n// Z-Index - Development / Debugging\n//\n// A z-index that will override all other z-indexes for development\n// and debugging purposes only. Avoid where possible and do not commit\n// to production code.\n//\n// Styleguide Configuration.Z-Index.$z-index-dev\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-dev: $z-index-10 !default;\n\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// Spacing\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n\n// Margin\n//\n// The base margin to use sitewide.\n// All margins are based on this number. Larger margins\n// will be a multiple of this, smaller margins will be a\n// fraction of this, except in cases of UI or typography\n// where margin should be related to font size.\n//\n// Styleguide Configuration.Spacing.$margin\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$margin: 30px !default;\n\n// Margin - Small\n//\n// The base margin to use for content sitewide.\n// This affects floated content in the WordPress editor,\n// and would be good for any sort of floated content you\n// may add in a custom theme, like a floated callout.\n//\n// Styleguide Configuration.Spacing.$margin-small\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$margin-small: $margin / 2 !default;\n\n// Margin - Large\n//\n// The base margin to use for large spacing sitewide.\n// This affects elements like the banner, section tags,\n// and any other larger elements.\n//\n// Styleguide Configuration.Spacing.$margin-large\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$margin-large: $margin * 2 !default;\n\n// Padding\n//\n// The base padding to use sitewide.\n// All padding is based on this number. Larger padding\n// will be a multiple of this, smaller padding will be a\n// fraction of this.\n//\n// Styleguide Configuration.Spacing.$padding\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$padding: 30px !default;\n\n// Padding - Small\n//\n// A padding variable for situations where you need a\n// smaller amount of padding.\n//\n// Styleguide Configuration.Spacing.$padding-small\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$padding-small: $padding / 2 !default;\n\n// Padding - Large\n//\n// A padding variable for situations where you need a\n// larger amount of padding.\n//\n// Styleguide Configuration.Spacing.$padding-large\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$padding-large: $padding * 2 !default;\n\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// Colors\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n\n// Tint Hue\n//\n// A color to tint your grays with.\n// Affects grayscale variables. Try cool colors, like blues.\n// Accepts any valid color.\n//\n// Styleguide Configuration.Styling.Grayscale Tint Hue\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$tint-hue: none !default;\n\n// Tint Saturation\n//\n// The amount to tint your grays, from 0-100%.\n// This will affect the maximum saturation of your tint.\n//\n// Styleguide Configuration.Styling.Grayscale Tint Saturation\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$tint-saturation: 15% !default;\n\n// Tint Color Function\n//\n// A tinting helper function for grayscale variables.\n// If you're adding your own grays and want to take advantage\n// of tinting, you can use this function to tint your grays.\n//\n// The actual tint is dependent on two variables: `$tint-hue`,\n// which is the color to use as a tint, and `$tint-saturation`,\n// which is the maximum saturation of that tint. More saturation\n// happens with dark colors, less or none with very light colors.\n//\n// Styleguide Configuration.Styling.Tint Color Function\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n@function tint-gray( $color ) {\n\t@if ( $tint-hue == \"none\" ) {\n\t\t@return $color;\n\t} @else {\n\t\t$_amt: $tint-saturation - ( lightness( $color ) / $tint-saturation );\n\n\t\t@if ( $_amt <= 0 ) {\n\t\t\t@return $color;\n\t\t}\n\n\t\t$newgray: adjust-hue( $color, hue( $tint-hue ) );\n\n\t\t@return saturate( $newgray, $_amt );\n\t}\n}\n\n// Grayscale Variables\n//\n// Grayscale variables that takes advantage of the tint system.\n// Overriding these variables is not supported.\n//\n// Colors:\n// $color-grayscale-0: #000\n// $color-grayscale-1: #111\n// $color-grayscale-2: #222\n// $color-grayscale-3: #333\n// $color-grayscale-4: #444\n// $color-grayscale-5: #555\n// $color-grayscale-6: #666\n// $color-grayscale-7: #777\n// $color-grayscale-8: #888\n// $color-grayscale-9: #999\n// $color-grayscale-a: #aaa\n// $color-grayscale-b: #bbb\n// $color-grayscale-c: #ccc\n// $color-grayscale-d: #ddd\n// $color-grayscale-e: #eee\n// $color-grayscale-f0: #f0f0f0\n// $color-grayscale-f5: #f5f5f5\n// $color-grayscale-f: #fff\n//\n// Styleguide Configuration.Styling.Grayscale Variables\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a very dark gray suitable for text.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-0: #000\n//\n// Styleguide Utilities.Colors.$color-grayscale-0\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-0: tint-gray( #000 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a very dark gray suitable for text.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-1: #111\n//\n// Styleguide Utilities.Colors.$color-grayscale-1\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-1: tint-gray( #111 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a dark gray suitable for text or backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-2: #222\n//\n// Styleguide Utilities.Colors.$color-grayscale-2\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-2: tint-gray( #222 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a dark gray suitable for text or backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-3: #333\n//\n// Styleguide Utilities.Colors.$color-grayscale-3\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-3: tint-gray( #333 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a dark gray suitable for backgrounds or metadata.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-4: #444\n//\n// Styleguide Utilities.Colors.$color-grayscale-4\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-4: tint-gray( #444 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a dark gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-5: #555\n//\n// Styleguide Utilities.Colors.$color-grayscale-5\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-5: tint-gray( #555 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a middle gray suitable for backgrounds or large typography.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-6: #666\n//\n// Styleguide Utilities.Colors.$color-grayscale-6\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-6: tint-gray( #666 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a middle gray suitable for backgrounds or large typography.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-7: #777\n//\n// Styleguide Utilities.Colors.$color-grayscale-7\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-7: tint-gray( #777 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a middle gray suitable for backgrounds or large typography.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-8: #888\n//\n// Styleguide Utilities.Colors.$color-grayscale-8\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-8: tint-gray( #888 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a middle gray suitable for backgrounds or large typography.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-9: #999\n//\n// Styleguide Utilities.Colors.$color-grayscale-9\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-9: tint-gray( #999 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a middle gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-a: #a\n//\n// Styleguide Utilities.Colors.$color-grayscale-a\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-a: tint-gray( #aaa );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a light gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-b: #bbb\n//\n// Styleguide Utilities.Colors.$color-grayscale-b\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-b: tint-gray( #bbb );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a light gray suitable for backgrounds, borders, and metadata.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-c: #ccc\n//\n// Styleguide Utilities.Colors.$color-grayscale-c\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-c: tint-gray( #ccc );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a light gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-d: #ddd\n//\n// Styleguide Utilities.Colors.$color-grayscale-d\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-d: tint-gray( #ddd );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a light gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-e: #eee\n//\n// Styleguide Utilities.Colors.$color-grayscale-e\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-e: tint-gray( #eee );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a near-white gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-f0: #f0f0f0\n//\n// Styleguide Utilities.Colors.$color-grayscale-f0\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-f0: tint-gray( #f0f0f0 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a near-white gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-f5: #f5f5f5\n//\n// Styleguide Utilities.Colors.$color-grayscale-f5\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-f5: tint-gray( #f5f5f5 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a plain white.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-f: #fff\n//\n// Styleguide Utilities.Colors.$color-grayscale-f\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-f: tint-gray( #fff );\n\n// Color Hub\n//\n// A grayscale variable for hover state of the BU Hub webfont. Not intended for editing.\n//\n// Colors:\n// $color-hub: #767676\n//\n// Styleguide Utilities.Colors.$color-hub\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-hub: \t\t\t #767676;\n\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// Content\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n\n// Borders\n// -----------------------------------------------------------------\n\n// Change the Default Border\n//\n// The default border style.\n//\n// Styleguide Configuration.Styling.Change the Default Border\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n// $border\n//\n// A variable that applies the default border style.\n//\n// Styleguide Utilities.Styling.$border\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$border:\t\t\t\t\t\t\t\t\t\t\t\t1px solid $color-grayscale-d !default;\n\n;@import \"sass-embedded-legacy-load-done:3472\";","/**\n * #.# Editor Styles\n *\n * CSS for just Backend enqueued after style.scss\n * which makes it higher in priority.\n */\n\n.buniverse-aspect-ratio-options .components-base-control__field {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tmargin-bottom: 1.5em;\n\n\t.components-base-control__label {\n\t\tpadding-bottom: 1em;\n\t\twidth: 100%;\n\t}\n\n\tinput {\n\t\tdisplay: none;\n\t}\n\n\t.components-radio-control__option label {\n\t\tbackground-color: #fff;\n\t\tborder: 1px solid #e2e4e7;\n\t\tpadding: 8px 10px;\n\t}\n\n\t.components-radio-control__option input:checked + label {\n\t\tcolor: #fff;\n\t\tbackground-color: #1e8cbe;\n\t\tborder-color: #1e8cbe;\n\t}\n\n\t> div:first-of-type label {\n\t\tborder-radius: 5px 0 0 5px;\n\t}\n\n\t> div:last-of-type label {\n\t\tborder-radius: 0 5px 5px 0;\n\t}\n\n\t> div:not(:last-of-type) label {\n\t\tborder-right: 0;\n\t}\n}\n\n.buniverse-parameter-toggles {\n\t.components-base-control__field {\n\t\tjustify-content: space-between;\n\t}\n\n\t.components-toggle-control .components-base-control__field .components-form-toggle {\n\t\tmargin-right: 0;\n\t\torder: 1;\n\t}\n}\n\n.buniverse-start-time {\n\talign-items: center;\n\tdisplay: flex;\n\tmargin: 24px 0;\n\n\t> div:first-of-type {\n\t\tflex: 1 0 auto;\n\n\t\t.components-base-control__field {\n\t\t\talign-items: center;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\n\n\t\tinput {\n\t\t\twidth: 6ch;\n\t\t}\n\t}\n\n\t.components-base-control,\n\t.components-base-control:last-child {\n\t\tmargin-bottom: 0;\n\t}\n\n\t> div:last-of-type {\n\t\twidth: 6ch;\n\t}\n}\n\n.edit-post-settings-sidebar__panel-block .components-panel__body .buniverse-start-time .components-base-control,\n.buniverse-start-time .components-base-control .components-base-control__field {\n\tmargin-bottom: 0;\n}\n\n.wp-block-global-buinverse-placeholder {\n\talign-items: center;\n\tbackground: #f3f3f3;\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n\tjustify-content: center;\n\tmin-height: 250px;\n\tposition: absolute;\n\ttop: 0;\n\twidth: 100%;\n\tz-index: 3;\n\n\t.buniverse-logo {\n\t\tbackground: center no-repeat url('./../../../images/buniverse/buniverse-logo.png');\n\t\tbackground-size: 100%;\n\t\tdisplay: block;\n\t\theight: 20px;\n\t\twidth: 100px;\n\t}\n\n\t.components-base-control {\n\t\tmargin: 20px 0;\n\t\twidth: 210px;\n\t}\n\n\t.buniverse-video-id-screenshot {\n\t\tbackground: center no-repeat url('./../../../images/buniverse/video-id-screenshot.png');\n\t\tbackground-size: 100%;\n\t\tdisplay: block;\n\t\theight: 140px;\n\t\tmax-width: 400px;\n\t\twidth: 100%;\n\t}\n}\n\n.buniverse-set-video-id {\n\t.components-base-control__label,\n\t.components-text-control__input {\n\t\tdisplay: inline-block;\n\t}\n\n\t.components-text-control__input {\n\t\tmargin-left: 1ch;\n\t\twidth: 100px;\n\t}\n}\n\n/**\n* Define CSS variables to allow child themes\n* to alter these values easily if needed.\n**/\n:root {\n\t--bu_blocks-block-bu-buniverse-editor-floated-width: 50%;\n}\n\n// Remove default margin on figure.\n// Disable interactions on video iframe.\n.wp-block-global-buniverse {\n\tmargin: 0;\n\n\tiframe {\n\t\tpointer-events: none;\n\t}\n}\n\n// Buniverse block has no width by default when floated\n// as it's content is absolutley positioned in order to scale intrinsicially.\n.wp-block[data-align=right],\n.wp-block[data-align=left] {\n\t>.wp-block-bu-buniverse {\n\t\twidth: var(--bu_blocks-block-bu-buniverse-editor-floated-width);\n\t}\n}\n\n","/**\n * #.# Editor Styles\n *\n * CSS for just Backend enqueued after style.scss\n * which makes it higher in priority.\n */\n\n .wp-block-bu-button-container {\n\tposition: relative;\n}\n\n[data-type=\"bu/button\"] {\n\t&.wp-block-bu-button {\n\t\tdisplay:inline-block;\n\t\tmargin-top: 0;\n\t\tmargin-bottom: 0;\n\t}\n\t&.wp-block-button.wp-block-bu-button {\n\t\tcolor: inherit;\n\n\t\t[data-rich-text-placeholder]:after {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n\n\t.components-autocomplete {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t}\n}\n\n.bu-blocks-button-block-url-input {\n\tinput[type=text] {\n\t\tmax-width: 100%;\n\t\tborder: 1px solid var(--wp-admin-theme-color);\n\t}\n}\n","/**\n * #.# Editor Styles\n *\n * CSS for just Backend enqueued after style.scss\n * which makes it higher in priority.\n */\n\n\n/**\n* Define CSS variables to allow child themes\n* to alter these values easily if needed.\n**/\n:root {\n\t--bu_blocks-block-click-tweet-color-highlight: #def0f6;\n\t--bu_blocks-block-click-tweet-color-icon: #0587B8;\n\t--bu_blocks-block-click-tweet-color-button: #0587B8;\n}\n\n[data-type=\"core/paragraph\"].wp-block-bu-clicktotweet.has-format-highlight .wp-block-bu-clicktotweet-highlight {\n\tbackground: var(--bu_blocks-block-click-tweet-color-highlight);\n\n\t&::after {\n\t\tcolor: var(--bu_blocks-block-click-tweet-color-icon);\n\t\tcontent: \"\\f301\";\n\t\tfont-family: \"dashicons\";\n\t}\n}\n\n[data-type=\"core/paragraph\"]:not(.is-selected).wp-block-bu-clicktotweet:not(.has-format-highlight) {\n\n\t.wp-block-bu-clicktotweet-content {\n\t\t&::before {\n\t\t\tcontent: '';\n\t\t\tborder: 1px dashed gray;\n\t\t\tborder-color: var(--bu_blocks-block-click-tweet-color-button);\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\tleft: -15px;\n\t\t\ttop: -15px;\n\t\t\tbottom: -15px;\n\t\t\tright: -15px;\n\t\t}\n\n\t\t&::after {\n\t\t\tbackground: var(--bu_blocks-block-click-tweet-color-button);\n\t\t\tbottom: -15px;\n\t\t\tcolor: #fff;\n\t\t\tcontent: \"tweet this\";\n\t\t\tdisplay: block;\n\t\t\tfont-family: sans-serif;\n\t\t\tfont-size: 13px;\n\t\t\tpadding: 5px;\n\t\t\tposition: absolute;\n\t\t\tright: -15px;\n\t\t}\n\t}\n\n}\n\n[data-type=\"core/paragraph\"].is-selected.wp-block-bu-clicktotweet:not(.has-format-highlight) {\n\n\t.wp-block-bu-clicktotweet-content {\n\t\tpointer-events: none;\n\t\t&::before {\n\t\t\tpointer-events: none;\n\t\t}\n\n\t\t&::after {\n\t\t\tpointer-events:none;\n\t\t}\n\t}\n\n}\n","/**\n * #.# Editor Styles\n *\n * CSS for just Backend enqueued after style.scss\n * which makes it higher in priority.\n */\n\n\n[data-align=\"center\"] {\n\t> .wp-block-bu-collapsible-control {\n\t\ttext-align: center;\n\t}\n}\n","/**\n * #.# Editor Styles\n *\n * CSS for just Backend enqueued after style.scss\n * which makes it higher in priority.\n */\n\n@import '../../tools';\n\n// Add missing icon in admin.\n@font-face {\n\tfont-family: \"bu-default-icons\";\n\tsrc: url(\"//www.bu.edu/cdn/fonts/icons/bu-default-icons/bu-default-icons.eot?\") format(\"embedded-opentype\");\n\tsrc: url(\"//www.bu.edu/cdn/fonts/icons/bu-default-icons/bu-default-icons.woff\") format(\"woff\"), url(\"//www.bu.edu/cdn/fonts/icons/bu-default-icons/bu-default-icons.ttf\") format(\"truetype\"), url(\"//www.bu.edu/cdn/fonts/icons/bu-default-icons/bu-default-icons.svg#bu-default-icons\") format(\"svg\");\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n// Sidebar custom Icon Style Panel. Load BU icons\n// so buttons are styled with correct icons.\n.bu-collapsible-icon-style-button button {\n\tfont-family: \"bu-default-icons\";\n}\n\n// Open state, when block is selected or has a child block selected\n.wp-block-bu-collapsible.is-selected,\n.wp-block-bu-collapsible.has-child-selected {\n\n\t& > .bu-block-collapsible-content {\n\t\tdisplay: block;\n\t\tpadding: 5px 20px;\n\t\theight: auto; //Override is-style-preview value.\n\t\toverflow: auto; //Override is-style-preview value.\n\t\tposition: static; //Override is-style-preview value.\n\n\t\t&:after {\n\t\t\tdisplay: none; //Override is-style-preview value.\n\t\t}\n\t}\n\n\t& > .bu-collapsible-heading::after {\n\t\tcontent: '\\002D';\n\t}\n\n\t&.icon-style-arrows > .bu-collapsible-heading::after {\n\t\tcontent: '\\F500';\n\t}\n\n\t& > .bu-collapsible-heading {\n\t\tdisplay: block;\n\t\tborder-bottom: 1px solid #ccc;\n\t}\n\n\t&.is-style-preview .bu-collapsible-heading {\n\t\tborder-bottom: 0;\n\t}\n\n\t& > .bu-collapsible-heading::after {\n\t\tcontent: '\\002D';\n\t}\n\n\t&.icon-style-arrows > .bu-collapsible-heading::after {\n\t\tcontent: '\\F500'\n\t}\n}\n\n.wp-block-bu-collapsible {\n\n\t.bu-collapsible-heading {\n\t\tmargin: 0;\n\t}\n\n\t.bu-block-collapsible-content {\n\n\t}\n\n\t&.is-style-preview {\n\t\tborder: none;\n\t\tposition: relative;\n\t\tmargin-bottom: $margin;\n\n\t\t// Don't show any icons to open/collapse.\n\t\t> .bu-collapsible-heading::after {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.bu-block-collapsible-content {\n\t\t\tpadding: 0;\n\t\t\tdisplay: block;\n\t\t\theight: 100px;\n\t\t\toverflow: hidden;\n\t\t\tposition: relative;\n\n\t\t\t&:after {\n\t\t\t\tcontent:'';\n\t\t\t\theight: 50%;\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom:0;\n\t\t\t\tleft: 0;\n\t\t\t\tright: 0;\n\t\t\t\tbackground-image: linear-gradient(to bottom, transparent, #fff);\n\t\t\t}\n\t\t}\n\t}\n}\n","@import '../../tools';\n\n.wp-block-editorial-custom-html {\n\tborder-radius: 4px;\n\tborder: 1px solid #e2e4e7;\n\tcolor: #23282d;\n\tfont-family: $font-family-monospace;\n\tfont-size: 13px;\n\tpadding: .8em 1em;\n}\n","// =================================================================\n// Typography Settings\n// =================================================================\n\n// Base Font Size\n//\n// Controls the default font size used across the site.\n// Affects body text and anything else that isn't\n// specifically overridden.\n//\n// Styleguide Configuration.Typography.Base Font Size\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-size-base: 18px !default;\n\n// Base Line Height\n//\n// Controls the default line height used across the site.\n// Affects body text and anything else that isn't\n// specifically overridden.\n//\n// Styleguide Configuration.Typography.Base Line Height\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$line-height-base: 1.6 !default;\n\n// Serif Font\n//\n// A serif font to use. This variable is not used by default.\n//\n// Styleguide Configuration.Typography.Serif Font\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-family-serif: \"TiemposText\", Georgia, serif !default;\n\n// Sans-serif Font\n// A sans-serif font to use sitewide.\n// By default, this affects the site footer and label text in profiles.\n//\n// Styleguide Configuration.Typography.Sans Serif Font\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-family-sans-serif: \"Benton-Sans\", \"Helvetica\", sans-serif !default;\n\n// Monospace Font\n//\n// A monospace font to use sitewide.\n// By default, this affects the `` and `
` elements.\n//\n// Styleguide Configuration.Typography.Monospace Font\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-family-monospace:                     \"Consolas\", \"Liberation Mono\", Courier, monospace !default;\n\n// Body Copy Font\n//\n// The default font for body copy.\n//\n// Styleguide Configuration.Typography.Body Copy Font\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-family-base:                          $font-family-sans-serif !default;\n\n// Heading Font\n//\n// A font to use for headings.\n// Affects `

`, `

`, etc.\n//\n// Styleguide Configuration.Headings.Heading Font\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-family-heading: $font-family-sans-serif !default;\n\n// Heading Color\n//\n// A color to use for headings.\n// Affects `

`, `

`, etc.\n//\n// Styleguide Configuration.Headings.Heading Color\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n// Accessibility: AA\n\n$color-heading: $color-grayscale-0 !default;\n\n// Heading Small Color\n//\n// A font to use for small tags within headings.\n//\n// Styleguide Configuration.Typography.Heading Small Color\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n// Accessibility: AA\n\n$color-heading-small: $color-grayscale-6 !default;\n\n// Paragraph Margin\n//\n// Base margin for HTML tags. Primarily affects `

`.\n//\n// Styleguide Configuration.Typography.Paragraph Margin\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-margin-base: 0 0 1.5em 0 !default;\n\n// Link Color\n//\n// Base color for links.\n//\n// Styleguide Configuration.Typography.Link Color\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n// Accessibility: AA\n\n$color-link: #0f69d7 !default;\n\n// Link Color - Visited\n//\n// Base color for visited links.\n// Must be different from `$color-link` for accessibility\n// reasons.\n//\n// Styleguide Configuration.Typography.Link Color Visited\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n// Accessibility: AA\n\n$color-link-visited: #7337af !default;\n\n// Link Color - Active\n//\n// Base color for active links.\n// Must be different from `$color-link` for accessibility\n// reasons.\n//\n// Styleguide Configuration.Typography.Link Color Active\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n// Accessibility: AA\n\n$color-link-active: $color-grayscale-0 !default;\n\n// Code Padding\n//\n// Base padding for the `` tag.\n//\n// Styleguide Content.Code.Padding\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-padding-code: 0.2em 0.4em !default;\n\n// Code Margin\n//\n// Base margin for the `` tag.\n//\n// Styleguide Content.Code.Margin\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-margin-code: $margin 0 !default;\n\n// Code Color\n//\n// Text color to use for the `` tag.\n//\n// Styleguide Content.Code.Color\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n// Accessibility: AA\n\n$color-code: $color-grayscale-6 !default;\n\n// Code Background Color\n//\n// Background color to use for the `` tag.\n//\n// Styleguide Content.Code.Background Color\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n// Accessibility: AA\n\n$color-code-bg: $color-grayscale-f5 !default;\n\n// Code Border\n//\n// Base border for the `` tag.\n//\n// Styleguide Content.Code.Border\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$border-code: $border !default;\n\n// Blockquote Margin\n//\n// Base margin for the `

` tag.\n//\n// Styleguide Content.Blockquotes.Margin\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-margin-blockquote: 1em $margin-large !default;\n\n// List Margin\n//\n// Base margin for `
    ` and `
      ` tags.\n//\n// Styleguide Content.Lists.Margin\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-margin-list: $font-margin-base !default;\n\n// List Padding\n//\n// Base padding for `
        ` and `
          ` tags.\n//\n// Styleguide Content.Lists.Padding\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-padding-list: 0 0 0 40px !default;\n\n// Definition List Padding\n//\n// Base margin for `
          ` tags.\n//\n// Styleguide Content.Lists.Definition List Padding\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$font-margin-dd: 0 0 0 $margin !default;\n\n;@import \"sass-embedded-legacy-load-done:3734\";","/**\n * #.# Editor Styles\n *\n * CSS for just Backend enqueued after style.scss\n * which makes it higher in priority.\n */\n\n // Mimic the 'show-drawer' class behavior when the block or its inner blocks are selected.\n[data-selected-drawer=\"true\"] {\n\n\t.wp-block-editorial-drawer-content {\n\t\tdisplay: block !important;\n\t\t//float: none !important;\n\t\topacity: 1 !important;\n\t}\n}\n\n.wp-block-editorial-drawer {\n\t.wp-block-editorial-drawer-teaser,\n\t.wp-block-editorial-drawer-content {\n\t\tfloat: none;\n\t}\n\n\t.wp-block-editorial-drawer-open-wrapper {\n\t\tdisplay: inline-block;\n\t\tmargin-top: 1.2em;\n\n\t\tp[role=\"textbox\"]:not(:only-child) {\n\t\t\theight: 28px;\n\t\t}\n\t}\n}\n\n// Set a default width when floated in the editor.\n// ToDo: this needs to be improved and rethought.\n.wp-block-editorial-drawer-teaser {\n\t[data-align=\"left\"] &,\n\t[data-align=\"right\"] & {\n\t\twidth: 50%;\n\t}\n}\n\n[data-align=\"left\"],\n[data-align=\"right\"] {\n\n\n\t>[data-type=\"editorial/drawer\"] {\n\n\t\t&.wp-block-editorial-drawer {\n\t\t\tfloat: none;\n\t\t\tmargin-left: 0;\n\t\t\tmargin-right: 0;\n\t\t\toverflow: unset;\n\n\t\t\t&.is-size-narrow,\n\t\t\t&.is-size-small,\n\t\t\t&.is-size-medium,\n\t\t\t&.is-size-wide {\n\n\t\t\t\t.wp-block-editorial-drawer-teaser {\n\t\t\t\t\t//width: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// .wp-block-editorial-drawer-teaser {\n\n\t\t// \t&::before,\n\t\t// \t&::after {\n\t\t// \t\tdisplay: none;\n\t\t// \t}\n\t\t// }\n\n\t\t// Float the content left so it fills the content column like it does\n\t\t// on the frontend when a floated Drawer block's content area is opened.\n\t\t// The content area should be the width of the unfloated blocks on the page, not the narrower\n\t\t// width of the floated teaser part of the block.\n\t\t.wp-block-editorial-drawer-content {\n\t\t\tfloat:left;\n\n\t\t\t.editor-block-list__block-edit\n\t\t\t.block-editor-block-list__block-edit {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\n\t\t.wp-block-editorial-drawer-clearfix {\n\t\t\tclear:both;\n\t\t}\n\t}\n}\n\n\n// Float the Teaser left and right instead of the\n//

\n\t\t\t\n\t\t\n\t);\n};\n\n/**\n * Return the block markup.\n *\n * @param {array} slides Array of objects containing slide data.\n */\nconst blockMarkup = ( slides ) => {\n\t// Define widths for the `ul` and `li` elements based on the number of slides.\n\tconst ulWidth = `${ slides.length }00%`;\n\tconst liWidth = `calc(${ 100 / slides.length }% - 2px)`;\n\n\treturn (\n\t\t\n\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t\n\n\t\t\t\t\t{ slides.map( ( slide, index ) =>\n\t\t\t\t\t\t{ imageMarkup( slide ) }\n\t\t\t\t\t) }\n\n\t\t\t\t\n\n\t\t\t
\n\n\t\t\t
\n\n\t\t\t\t\n\n\t\t\t\t\t{ slides.map( ( slide, index ) =>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t

{ slide.caption }

\n\t\t\t\t\t\t\n\t\t\t\t\t) }\n\n\t\t\t\t\n\n\t\t\t\t
{__( 'read full caption' ) }
\n\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n};\n\n// Empty slide object.\nconst emptySlide = {\n\tcaption: '',\n\timageFocus: 'center-middle',\n\timageId: '',\n\timageUrl: '',\n};\n\n// Register the block.\nregisterBlockType( 'editorial/slideshow', {\n\ttitle: __( 'Slideshow' ),\n\tdescription: __( 'Feature multiple photos in a slideshow carousel.' ),\n\ticon: ,\n\tcategory: 'bu-editorial',\n\tattributes: {\n\t\taspectRatio: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '16by9',\n\t\t},\n\t\tclassName: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '',\n\t\t},\n\t\tcrop: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t\tshowNextUp: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t\tslides: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [ emptySlide, emptySlide ],\n\t\t},\n\t},\n\n\tedit( props ) {\n\t\tconst {\n\t\t\tattributes: {\n\t\t\t\taspectRatio,\n\t\t\t\tcrop,\n\t\t\t\tshowNextUp,\n\t\t\t\tslides,\n\t\t\t},\n\t\t\tclassName,\n\t\t\tisSelected,\n\t\t\tsetAttributes,\n\t\t} = props;\n\n\t\t/**\n\t\t * Display the editing interface for the provided slide.\n\t\t *\n\t\t * @param {array} slide Array of values for the provided slide.\n\t\t * @param {number} index The index of the provided slide.\n\t\t */\n\t\tconst slideEdit = ( slide, index ) => {\n\t\t\t/**\n\t\t\t * Removes the slide image.\n\t\t\t */\n\t\t\tconst onRemoveImage = () => {\n\t\t\t\tconst newSlides = Object.values( {\n\t\t\t\t\t...slides,\n\t\t\t\t\t[ index ]: {\n\t\t\t\t\t\t...slides[ index ],\n\t\t\t\t\t\timageId: '',\n\t\t\t\t\t\timageUrl: '',\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tsetAttributes( { slides: newSlides } );\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Sets the slide image.\n\t\t\t *\n\t\t\t * @param {object} image The selected image.\n\t\t\t */\n\t\t\tconst onSelectImage = ( image ) => {\n\t\t\t\tif ( ! image || ! image.url ) {\n\t\t\t\t\tonRemoveImage();\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst newSlides = Object.values( {\n\t\t\t\t\t...slides,\n\t\t\t\t\t[ index ]: {\n\t\t\t\t\t\t...slides[ index ],\n\t\t\t\t\t\timageId: image.id,\n\t\t\t\t\t\timageUrl: image.url,\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tsetAttributes( { slides: newSlides } );\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t {\n\t\t\t\t\t\t\tslides.splice( index, 1 );\n\n\t\t\t\t\t\t\tsetAttributes( { slides: [ ...slides ] } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>{ __( 'Remove Slide' ) }\n\t\t\t\t\t{ slide.imageId ? (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{ imageMarkup( slide ) }\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tconst newSlides = Object.values( {\n\t\t\t\t\t\t\t\t\t\t\t\t...slides,\n\t\t\t\t\t\t\t\t\t\t\t\t[ index ]: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...slides[ index ],\n\t\t\t\t\t\t\t\t\t\t\t\t\timageFocus: value,\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes( { slides: newSlides } );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t\t\t\t\t{ value: 'left-top', label: __( 'Left Top' ) },\n\t\t\t\t\t\t\t\t\t\t\t{ value: 'left-middle', label: __( 'Left Middle' ) },\n\t\t\t\t\t\t\t\t\t\t\t{ value: 'left-bottom', label: __( 'Left Bottom' ) },\n\t\t\t\t\t\t\t\t\t\t\t{ value: 'center-top', label: __( 'Center Top' ) },\n\t\t\t\t\t\t\t\t\t\t\t{ value: 'center-middle', label: __( 'Center Middle' ) },\n\t\t\t\t\t\t\t\t\t\t\t{ value: 'center-bottom', label: __( 'Center Bottom' ) },\n\t\t\t\t\t\t\t\t\t\t\t{ value: 'right-top', label: __( 'Right Top' ) },\n\t\t\t\t\t\t\t\t\t\t\t{ value: 'right-middle', label: __( 'Right Middle' ) },\n\t\t\t\t\t\t\t\t\t\t\t{ value: 'right-bottom', label: __( 'Right Bottom' ) },\n\t\t\t\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t) : (\n\t\t\t\t\t\t\n\t\t\t\t\t) }\n\t\t\t\t\t {\n\t\t\t\t\t\t\tconst newSlides = Object.values( {\n\t\t\t\t\t\t\t\t...slides,\n\t\t\t\t\t\t\t\t[ index ]: {\n\t\t\t\t\t\t\t\t\t...slides[ index ],\n\t\t\t\t\t\t\t\t\tcaption: value,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\tsetAttributes( { slides: newSlides } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tformattingControls={ [ 'bold', 'italic', 'link' ] }\n\t\t\t\t\t\tkeepPlaceholderOnFocus\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t);\n\t\t};\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t{ ( isSelected || !slides[0].imageId ) ? (\n\t\t\t\t\t\n\t\t\t\t\t\t{ slides.map( ( slide, index ) => slideEdit( slide, index ) ) }\n\t\t\t\t\t\t setAttributes( { slides: slides.concat( [ emptySlide ] ) } ) }\n\t\t\t\t\t\t\ticon=\"plus\"\n\t\t\t\t\t\t\tisButton\n\t\t\t\t\t\t\tisDefault\n\t\t\t\t\t\t\tisLarge\n\t\t\t\t\t\t\tlabel={ __( 'Add a Slide' ) }\n\t\t\t\t\t\t>{ __( 'Add New Slide' ) }\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t setAttributes( { aspectRatio: option } ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t setAttributes( { crop: !crop } ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t setAttributes( { showNextUp: !showNextUp } ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\tblockMarkup( slides )\n\t\t\t\t) }\n\t\t\t
\n\t\t);\n\t},\n\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\taspectRatio,\n\t\t\tclassName,\n\t\t\tcrop,\n\t\t\tshowNextUp,\n\t\t\tslides,\n\t\t} = attributes;\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t{ blockMarkup( slides ) }\n\t\t\t
\n\t\t);\n\t},\n} );\n","// External dependencies.\nimport classnames from 'classnames';\n\n// Internal dependencies.\nimport getAllowedFormats from '../../global/allowed-formats';\n\n// WordPress dependencies.\nconst {\n\t__,\n} = wp.i18n;\n\nconst { createBlock } = wp.blocks;\nconst { PanelBody, RangeControl } = wp.components;\nconst {\n\tInnerBlocks,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n} = ( 'undefined' === typeof wp.blockEditor ) ? wp.editor : wp.blockEditor;\n\nconst { compose } = wp.compose;\nconst { withDispatch, withSelect } = wp.data;\n\n/**\n * Returns the class list for the block based on the current settings.\n *\n * @param {string} className Default classes assigned to the block.\n * @param {number} stats The number of stat blocks to display.\n *\n * @return {string} block classnames\n */\nconst getBlockClasses = ( className, stats ) => {\n\treturn (\n\t\tclassnames(\n\t\t\tclassName,\n\t\t\t{\n\t\t\t\t[ `has-${stats}-stats` ]: stats,\n\t\t\t}\n\t\t)\n\t);\n};\n\nconst Edit = props => {\n\tconst {\n\t\tclientId,\n\t\tattributes: {\n\t\t\talign,\n\t\t\tcaption,\n\t\t\tstats,\n\t\t},\n\t\tclassName,\n\t\tsetAttributes,\n\t\tgetBlocksByClientId,\n\t\tremoveBlock,\n\t\tinsertBlock,\n\t} = props;\n\n\t// Determine whether the block is aligned left or right.\n\tconst isAlignedLeftOrRight = ( align === 'left' || align === 'right' );\n\n\tconst blockProps = useBlockProps({\n\t\tclassName: getBlockClasses( className, stats ),\n\t});\n\n\t/**\n\t * Updates the stats attribute and handles innerBlock insertions or removals.\n\t *\n\t * @param {string} statNumber Current value of the stat number option.\n\t */\n\tconst onChangeStatsNumber = ( statNumber ) => {\n\t\tsetAttributes( { stats: statNumber } );\n\n\t\t// Get the current innerBlocks.\n\t\tconst blocks = getBlocksByClientId( clientId )[ 0 ].innerBlocks;\n\n\t\t// Remove the last innerBlock if there are more innerBlocks than columns.\n\t\tif ( blocks.length > statNumber && blocks[ statNumber ] ) {\n\t\t\tremoveBlock( blocks[ statNumber ].clientId, false );\n\t\t} else {\n\t\t\t// Otherwise, create and insert a new block.\n\t\t\tconst newBlock = createBlock( 'bu/stat', {} );\n\t\t\tconst index = statNumber - 1;\n\n\t\t\tinsertBlock( newBlock, index, clientId );\n\t\t}\n\t};\n\n\t// Reset to a single Stat block if aligned left or right.\n\tif ( isAlignedLeftOrRight && stats !== 1 ) {\n\t\tonChangeStatsNumber( 1 );\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t{ ! isAlignedLeftOrRight &&\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t setAttributes( { caption: value } ) }\n\t\t\t\t\tformattingControls={ getAllowedFormats( 'formattingControls', [ 'bold', 'italic', 'link' ] ) }\n\t\t\t\t\tallowedFormats={ getAllowedFormats( 'allowedFormats', [ 'core/bold', 'core/italic', 'core/link' ] ) }\n\t\t\t\t\tkeepPlaceholderOnFocus\n\t\t\t\t/>\n\t\t\t
\n\t\t
\n\t);\n};\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { getBlocksByClientId } = select( 'core/block-editor' );\n\t\treturn {\n\t\t\tgetBlocksByClientId,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { insertBlock, removeBlock } = dispatch( 'core/block-editor' );\n\t\treturn {\n\t\t\tinsertBlock,\n\t\t\tremoveBlock,\n\t\t};\n\t} ),\n] )( Edit );\n","/**\n * BLOCK: bu/stat\n *\n * Register a stat block with Gutenberg.\n */\n\n// External dependencies.\nimport classnames from 'classnames';\n\n// Import CSS.\nimport './style.scss';\nimport './editor.scss';\n\n// Internal dependencies.\nimport themeOptions from '../../global/theme-options';\nimport getAllowedFormats from '../../global/allowed-formats';\nimport blockIcons from '../../components/block-icons/';\n\n// WordPress dependencies.\nconst {\n\t__,\n} = wp.i18n;\nconst {\n\tregisterBlockType,\n} = wp.blocks;\nconst {\n\tCircle,\n\tPanelBody,\n\tPath,\n\tRangeControl,\n\tSVG,\n} = wp.components;\nconst {\n\tInspectorControls,\n\tPanelColorSettings,\n\tPlainText,\n\tRichText,\n\twithColors,\n\tuseBlockProps,\n} = ( 'undefined' === typeof wp.blockEditor ) ? wp.editor : wp.blockEditor;\n\n/**\n * Returns the class list for the block based on the current settings.\n *\n * @param {string} circleOneColor The color option for circle 1.\n * @param {string} circleTwoColor The color option for circle 2.\n * @param {string} className Default classes assigned to the block.\n * @param {number} numberSize The size at which to display the stat number.\n */\nconst getBlockClasses = ( circleOneColor, circleTwoColor, className, numberSize ) => {\n\treturn (\n\t\tclassnames(\n\t\t\tclassName,\n\t\t\t{\n\t\t\t\t[ `has-circle1-color-${circleOneColor}` ]: circleOneColor,\n\t\t\t\t[ `has-circle2-color-${circleTwoColor}` ]: circleTwoColor,\n\t\t\t\t[ `has-number-size-${numberSize}` ]: numberSize,\n\t\t\t}\n\t\t)\n\t);\n};\n\n/**\n * The markup for the stat SVG.\n *\n * @param {number} circleOneFill The percentage of circle one to fill in.\n * @param {number} circleTwoFill The percentage of circle two to fill in.\n */\nconst statSVG = ( circleOneFill, circleTwoFill ) => (\n\t\n\t\t\n\t\t\n\t\n);\n\n// Register the block.\nregisterBlockType( 'bu/stat', {\n\tapiVersion: 2,\n\tparent: [ 'bu/stats' ],\n\ttitle: __( 'Stat' ),\n\tdescription: __( 'Display statistical information.' ),\n\ticon: blockIcons('stat'),\n\tcategory: 'bu',\n\tattributes: {\n\t\tcircleOneColor: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '',\n\t\t},\n\t\tcircleOneFill: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 100,\n\t\t},\n\t\tcircleTwoColor: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '',\n\t\t},\n\t\tcircleTwoFill: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 25,\n\t\t},\n\t\tclassName: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '',\n\t\t},\n\t\tnumber: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '',\n\t\t\tsource: 'text',\n\t\t\tselector: '.wp-block-bu-stat-number',\n\t\t},\n\t\tnumberSize: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 2,\n\t\t},\n\t\tpostText: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '',\n\t\t\tsource: 'html',\n\t\t\tselector: '.wp-block-bu-stat-text-post',\n\t\t},\n\t\tpreText: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '',\n\t\t\tsource: 'html',\n\t\t\tselector: '.wp-block-bu-stat-text-pre',\n\t\t},\n\t},\n\tsupports: {\n\t\tinserter: false,\n\t},\n\n\tedit: withColors( 'circleOneColor', 'circleTwoColor' )( props => {\n\t\tconst {\n\t\t\tattributes: {\n\t\t\t\tcircleOneFill,\n\t\t\t\tcircleTwoFill,\n\t\t\t\tnumberSize,\n\t\t\t\tnumber,\n\t\t\t\tpostText,\n\t\t\t\tpreText,\n\t\t\t},\n\t\t\tcircleOneColor,\n\t\t\tcircleTwoColor,\n\t\t\tclassName,\n\t\t\tisSelected,\n\t\t\tsetAttributes,\n\t\t\tsetCircleOneColor,\n\t\t\tsetCircleTwoColor,\n\t\t} = props;\n\n\t\tconst blockProps = useBlockProps({\n\t\t\tclassName: getBlockClasses( circleOneColor.slug, circleTwoColor.slug, className, numberSize ),\n\t\t});\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\n\t\t\t\t\t\t{ ( isSelected || !RichText.isEmpty( preText ) ) &&\n\t\t\t\t\t\t\t setAttributes( { preText: value } ) }\n\t\t\t\t\t\t\t\tformattingControls={ getAllowedFormats( 'formattingControls', [ 'bold', 'italic' ] ) }\n\t\t\t\t\t\t\t\tallowedFormats={ getAllowedFormats( 'allowedFormats', [ 'core/bold', 'core/italic' ] ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t setAttributes( { number } ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t{ ( isSelected || !RichText.isEmpty( postText ) ) &&\n\t\t\t\t\t\t\t setAttributes( { postText: value } ) }\n\t\t\t\t\t\t\t\tformattingControls={ getAllowedFormats( 'formattingControls', [ 'bold', 'italic' ] ) }\n\t\t\t\t\t\t\t\tallowedFormats={ getAllowedFormats( 'allowedFormats', [ 'core/bold', 'core/italic' ] ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t{ statSVG( circleOneFill, circleTwoFill ) }\n\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t setAttributes( { numberSize: value } ) }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={ 4 }\n\t\t\t\t\t\t\tstep={ 1 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t setAttributes( { circleOneFill } ) }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tmax={ 100 }\n\t\t\t\t\t\t\tstep={ 1 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t setAttributes( { circleTwoFill } ) }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tmax={ 100 }\n\t\t\t\t\t\t\tstep={ 1 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t
\n\t\t);\n\t} ),\n\n\tsave( { attributes }) {\n\t\tconst {\n\t\t\tcircleOneColor,\n\t\t\tcircleOneFill,\n\t\t\tcircleTwoColor,\n\t\t\tcircleTwoFill,\n\t\t\tclassName,\n\t\t\tnumber,\n\t\t\tnumberSize,\n\t\t\tpostText,\n\t\t\tpreText,\n\t\t} = attributes;\n\n\t\tconst blockProps = useBlockProps.save({\n\t\t\tclassName: getBlockClasses( circleOneColor, circleTwoColor, className, numberSize ),\n\t\t});\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{ !RichText.isEmpty( preText ) &&\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t
{ number }
\n\t\t\t\t\t\t{ !RichText.isEmpty( postText ) &&\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{ statSVG( circleOneFill, circleTwoFill ) }\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t},\n} );\n","/**\n * BLOCK: bu/stats\n *\n * Register a stats block with Gutenberg.\n */\n\n// External dependencies.\nimport classnames from 'classnames';\n\n// Import CSS.\nimport './style.scss';\nimport './editor.scss';\n\n// Internal dependencies.\nimport './stat';\nimport blockIcons from '../../components/block-icons/';\nimport edit from './edit';\n\n// WordPress dependencies.\nconst {\n\t__,\n} = wp.i18n;\nconst {\n\tregisterBlockType,\n} = wp.blocks;\n\nconst {\n\tInnerBlocks,\n\tRichText,\n\tuseBlockProps,\n} = ( 'undefined' === typeof wp.blockEditor ) ? wp.editor : wp.blockEditor;\n\n/**\n * Returns the class list for the block based on the current settings.\n *\n * @param {string} className Default classes assigned to the block.\n * @param {number} stats The number of stat blocks to display.\n *\n * @return {string} block classnames\n */\nconst getBlockClasses = ( className, stats ) => {\n\treturn (\n\t\tclassnames(\n\t\t\tclassName,\n\t\t\t{\n\t\t\t\t[ `has-${stats}-stats` ]: stats,\n\t\t\t}\n\t\t)\n\t);\n};\n\n// Register the block.\nregisterBlockType( 'bu/stats', {\n\tapiVersion: 2,\n\ttitle: __( 'Stats' ),\n\tdescription: __( 'Add one to four statistics to your content.' ),\n\ticon: blockIcons('stat'),\n\tcategory: 'bu',\n\tattributes: {\n\t\talign: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '',\n\t\t},\n\t\tcaption: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '',\n\t\t\tsource: 'html',\n\t\t\tselector: '.wp-block-bu-stats-caption',\n\t\t},\n\t\tclassName: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '',\n\t\t},\n\t\tstats: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 1,\n\t\t},\n\t},\n\tsupports: {\n\t\talign: [ 'left', 'right', 'wide' ],\n\t},\n\n\tedit,\n\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tcaption,\n\t\t\tclassName,\n\t\t\tstats,\n\t\t} = attributes;\n\n\t\tconst blockProps = useBlockProps.save({\n\t\t\tclassName: getBlockClasses( className, stats ),\n\t\t});\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t},\n} );\n","/**\n * Component: allowedBlocks\n *\n * Returns a filterable list of blocks to allow within BU layout-type blocks.\n *\n * This list is used for the Aside, Drawer, and Modal blocks.\n */\n\n// WordPress dependencies.\nconst {\n\tgetBlockTypes,\n} = wp.blocks;\nconst {\n\tapplyFilters,\n} = wp.hooks;\n\n// Blocks to exclude from allowedBlocks array for layout-type blocks.\nlet excludeBlocks = [\n\t'bu/leadin',\n\t'core/more',\n\t'core/nextpage',\n\t'core/separator',\n\t'core/spacer',\n\t'editorial/aside',\n\t'editorial/drawer',\n\t'editorial/modal',\n\t'editorial-preset/aside',\n];\n\n// Returns a list of all block namess except those in the excludeBlocks array.\nconst allowedBlocks = () => {\n\texcludeBlocks = applyFilters( 'buBlocks.layoutBlockTypes.excludeBlocks', excludeBlocks );\n\n\tconst allowed = getBlockTypes().map( ( { name } ) => {\n\t\tif ( name && !excludeBlocks.includes( name ) ) {\n\t\t\treturn name;\n\t\t}\n\t} );\n\n\treturn allowed;\n}\n\n// Export the allowedBlocks function.\nexport default allowedBlocks;","/**\n * The background component attributes.\n */\n\nconst BackgroundAttributes = {\n\tbackgroundId: {\n\t\ttype: 'number',\n\t},\n\tbackgroundType: {\n\t\ttype: 'string',\n\t},\n\tbackgroundUrl: {\n\t\ttype: 'string',\n\t},\n\tbackgroundOpacity: {\n\t\ttype: 'number',\n\t\tdefault: 100,\n\t},\n\tbackgroundAlt: {\n\t\ttype: 'string',\n\t},\n\tbackgroundCaption: {\n\t\ttype: 'string',\n\t},\n\tbackgroundAutoplay: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n};\n\nexport default BackgroundAttributes;","/**\n * Component: background controls\n*/\n\n// WordPress dependencies.\nconst {\n\t__,\n} = wp.i18n;\n\nconst {\n\tFragment,\n} = wp.element;\n\nconst {\n\tIconButton,\n\tPanelBody,\n\tRangeControl,\n\tTextControl,\n\tToggleControl,\n\tToolbar,\n} = wp.components;\n\nconst {\n\tBlockControls,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaUpload,\n\tMediaUploadCheck,\n} = ( 'undefined' === typeof wp.blockEditor ) ? wp.editor : wp.blockEditor;\n\nconst {\n\tuseState,\n} = wp.element;\n\nconst {\n\tgetAuthority,\n} = wp.url;\n\nconst {\n\tisBlobURL,\n} = wp.blob;\n\nconst BackgroundControls = ( props ) => {\n\t// Destructure properties of this component with defaults.\n\tconst {\n\t\tallowedMediaTypes = [ 'image', 'video' ],\n\t\tblockProps,\n\t\tclassName = 'bu-blocks-background',\n\t\timageSize = 'full',\n\t\tinlinePlaceholder = false,\n\t\toptions = [ 'opacity' ],\n\t\tplaceholderText = __( 'Add Media' ),\n\t\tsetIsUploading,\n\t} = props;\n\n\t// Get the properties of the block using this component.\n\tconst {\n\t\tattributes,\n\t\tsetAttributes,\n\t} = blockProps;\n\n\t// Get the attributes for handling the background data.\n\tconst {\n\t\tbackgroundId,\n\t\tbackgroundType,\n\t\tbackgroundUrl,\n\t\tbackgroundOpacity,\n\t\tbackgroundAutoplay,\n\t} = attributes;\n\n\t// Reset attributes to undefined.\n\tconst onRemoveMedia = () => {\n\t\tsetAttributes( {\n\t\t\tbackgroundId: undefined,\n\t\t\tbackgroundType: undefined,\n\t\t\tbackgroundUrl: undefined,\n\t\t\tbackgroundAlt: undefined,\n\t\t\tbackgroundCaption: undefined,\n\t\t} );\n\t};\n\n\t// Set attributes based on the selected or uploaded media.\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tonRemoveMedia();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetIsUploading( true );\n\n\t\t\tsetAttributes( { backgroundUrl: media.url } );\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet mediaType;\n\n\t\tif ( media.media_type ) {\n\t\t\t// Determine the media type from selections originating from a file upload.\n\t\t\t// Only images and videos are accepted. If the media_type is not an image,\n\t\t\t// we can assume it is a video (which contains the media type of 'file').\n\t\t\tmediaType = ( 'image' === media.media_type ) ? 'image' : 'video';\n\t\t} else {\n\t\t\t// Determine the media type from selections originating from existing files\n\t\t\t// in the media library.\n\t\t\tif (\n\t\t\t\tmedia.type !== 'image' &&\n\t\t\t\tmedia.type !== 'video'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmediaType = media.type;\n\t\t}\n\n\t\tlet url = media.url;\n\n\t\t// Assign the block-designated size if it exists.\n\t\tif ( mediaType === 'image' && imageSize !== 'full' ) {\n\t\t\t// The first check is for images already in the media library.\n\t\t\t// The second is for newly uploaded images.\n\t\t\tif ( media.sizes && media.sizes[ imageSize ] ) {\n\t\t\t\turl = media.sizes[ imageSize ].url;\n\t\t\t} else if ( media.media_details && media.media_details.sizes[ imageSize ] ) {\n\t\t\t\turl = media.media_details.sizes[ imageSize ].source_url;\n\t\t\t}\n\t\t}\n\n\t\tsetIsUploading( false );\n\n\t\tsetAttributes( {\n\t\t\tbackgroundId: media.id,\n\t\t\tbackgroundType: mediaType,\n\t\t\tbackgroundUrl: url,\n\t\t\tbackgroundAlt: media.alt,\n\t\t\tbackgroundCaption: media.caption,\n\t\t} );\n\n\t\t// If an `onChange` attribute is part of the Background component, ensure\n\t\t// that fires as expected.\n\t\tif ( 'function' === typeof props.onChange ) {\n\t\t\tprops.onChange( media, mediaType );\n\t\t}\n\t};\n\n\t// Set attributes based on a selected URL.\n\tconst onSelectURL = ( newURL ) => {\n\t\tconst allowedAuthorities = [ 'vimeo.com', 'www.youtube.com', 'youtu.be', 'www.bu.edu' ];\n\t\tconst authority = getAuthority( newURL );\n\n\t\t// Stop here if the selected URL isn't from one of the allowed domains.\n\t\tif ( newURL === backgroundUrl || ! allowedAuthorities.includes( authority ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tbackgroundId: undefined,\n\t\t\tbackgroundType: 'url',\n\t\t\tbackgroundUrl: newURL,\n\t\t\tbackgroundAlt: undefined,\n\t\t\tbackgroundCaption: undefined,\n\t\t} );\n\t};\n\n\t// Return the media placeholder if no media has been set.\n\tconst placeholder = () => {\n\t\tif ( backgroundUrl ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t{ allowedMediaTypes.includes( 'video' ) &&\n\t\t\t\t\t

YouTube, Vimeo, and BUniverse URLs are supported at this time.

\n\t\t\t\t}\n\t\t\t
\n\t\t);\n\t};\n\n\t// Return inspector controls.\n\tconst inspectorControls = (\n\t\t\n\t\t\t\n\t\t\t\t{ ! inlinePlaceholder && ( placeholder() ) }\n\t\t\t\t{ !! backgroundUrl && (\n\t\t\t\t\t\n\t\t\t\t\t\t{ backgroundType === 'url' ? (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tbackgroundUrl: bgUrl,\n\t\t\t\t\t\t\t\t\t\tbackgroundType: ( backgroundUrl === '' ) ? undefined : backgroundType,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t) }\n\t\t\t\t\t\n\t\t\t\t) }\n\t\t\t\t{ options.includes( 'opacity' ) && (\n\t\t\t\t\t setAttributes( { backgroundOpacity: ratio } ) }\n\t\t\t\t\t\tmin={ 10 }\n\t\t\t\t\t\tmax={ 100 }\n\t\t\t\t\t\tstep={ 10 }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ( backgroundType === 'video' || backgroundType === 'url' ) && (\n\t\t\t\t\t setAttributes( { backgroundAutoplay: ! backgroundAutoplay } ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\n\t\t\n\t);\n\n\t// Return the block editing interface.\n\treturn (\n\t\t\n\t\t\t{ inlinePlaceholder && ( placeholder() ) }\n\t\t\t{ ( !! backgroundUrl && backgroundType !== 'url' ) && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) }\n\t\t\t{ ( ! inlinePlaceholder || backgroundUrl ) && inspectorControls }\n\t\t\n\t);\n};\n\nexport default BackgroundControls;\n","/**\n * Component: background\n *\n * An absraction of the default Cover block for more general use inside blocks.\n *\n * Import this component and its attributes into a block with:\n * \t`import Background, { BackgroundAttributes } from '../../components/background';`\n*/\n\n// External dependencies.\nimport classnames from 'classnames';\n\n// Import CSS.\nimport './editor.scss';\nimport './style.scss';\n\n// Internal dependencies.\nimport BackgroundAttributes from './attributes.js';\nimport BackgroundControls from './controls';\n\n// WordPress dependencies.\nconst {\n\tFragment,\n} = wp.element;\nconst {\n\tSpinner,\n} = wp.components;\nconst {\n\tgetAuthority,\n\tgetPath,\n\tgetQueryString,\n} = wp.url;\n\n/**\n * Return a classname based on the value of the 'Background Opacity' setting.\n *\n * @param {number} ratio The value of the 'Background Opacity' setting.\n*/\nconst BackgroundOpacityToClass = ( ratio ) => {\n\treturn ( ratio === 100 ) ?\n\t\tnull :\n\t\t'has-background-opacity-' + ( 10 * Math.round( ratio / 10 ) );\n}\n\n/**\n * The background component.\n *\n * @param {array} props The properties passed to the component.\n */\nfunction Background( props ) {\n\t// Destructure properties of this component with defaults.\n\tconst {\n\t\tblockProps,\n\t\tclassName = 'bu-blocks-background',\n\t\tisUploading = false,\n\t} = props;\n\n\t// Get the properties of the block using this component.\n\tconst {\n\t\tattributes,\n\t} = blockProps;\n\n\t// Get the attributes for handling the background data.\n\tconst {\n\t\tbackgroundId,\n\t\tbackgroundType,\n\t\tbackgroundUrl,\n\t\tbackgroundOpacity,\n\t\tbackgroundAlt,\n\t\tbackgroundAutoplay,\n\t} = attributes;\n\n\t// Build the classes to apply to the background element.\n\tconst classes = classnames(\n\t\tclassName,\n\t\t{\n\t\t\t'has-background-opacity': backgroundOpacity !== 100,\n\t\t\t[ BackgroundOpacityToClass( backgroundOpacity ) ]: BackgroundOpacityToClass( backgroundOpacity ),\n\t\t\t[ `wp-image-${backgroundId }` ]: backgroundId && 'image' === backgroundType,\n\t\t}\n\t);\n\n\t// Return an image element for use as the background.\n\tconst backgroundImage = (\n\t\t\n\t);\n\n\t// Return a video element for use as the background.\n\tconst backgroundVideo = (\n\t\t\n\t);\n\n\t// Return an iframe for use as the background.\n\tconst backgroundIframe = () => {\n\t\tconst authority = getAuthority( backgroundUrl );\n\t\tlet url = '';\n\n\t\tif ( authority === 'www.youtube.com' || authority === 'youtu.be' ) {\n\t\t\tconst videoId = ( authority === 'youtu.be' ) ?\n\t\t\t\tgetPath( backgroundUrl ) :\n\t\t\t\tgetQueryString( backgroundUrl ).split( '?' )[0].substr(2);\n\n\t\t\t// Build the url, adding autoplay parameters if appropriate.\n\t\t\turl = `//www.youtube.com/embed/${videoId}`;\n\t\t\turl += ( backgroundAutoplay ) ? `?controls=0&autoplay=1&mute=1&origin=http://bu.edu&version=3&loop=1&playlist=${videoId}` : '';\n\t\t}\n\n\t\tif ( authority === 'vimeo.com' ) {\n\t\t\tconst videoId = getPath( backgroundUrl );\n\n\t\t\t// Build the url, adding the background parameter for autoplaying if appropriate.\n\t\t\turl = `//player.vimeo.com/video/${videoId}`;\n\t\t\turl += ( backgroundAutoplay ) ? '?background=1' : '';\n\t\t}\n\n\t\tif ( authority === 'www.bu.edu' ) {\n\t\t\tconst videoId = getQueryString( backgroundUrl ).split( '?' )[0].substr(2);\n\n\t\t\t// Build the URL, adding the autoplay parameter if appropriate.\n\t\t\turl = `//www.bu.edu/buniverse/interface/embed/embed.html?v=${videoId}&jsapi=1`;\n\t\t\turl += ( backgroundAutoplay ) ? '&autoplay=true&controls=0' : '';\n\t\t}\n\n\t\tif ( url !== '' ) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t};\n\n\t// Return the interface for the background component.\n\treturn (\n\t\t\n\t\t\t{ ( 'image' === backgroundType ) && ( backgroundImage ) }\n\t\t\t{ ( 'video' === backgroundType ) && ( backgroundVideo ) }\n\t\t\t{ ( 'url' === backgroundType ) && (\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{ backgroundIframe() }\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t) }\n\t\t\t{ isUploading && (\n\t\t\t\t
\n\t\t\t\t\t{\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t) }\n\t\t
\n\t);\n}\n\n// Export dependencies for easy importing in blocks.\nexport {\n\tBackgroundAttributes,\n\tBackgroundOpacityToClass,\n\tBackgroundControls,\n};\n\nexport default Background;\n","/**\n * Component: blockIcons\n *\n * Returns a set of block icons for use in the Gutenberg UI\n *\n */\n\n// WordPress dependencies.\nconst {\n\tFragment,\n} = wp.element;\n\n// Array of icon paths, the inner elements of the svg icon only.\n// Default item in object is for fallback purposes.\nconst icons = {\n\t\"default\": (\n\t\t\n\t\t\t\n\t\t\n\t),\n\t\"aside\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"collapsible\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"collapsiblecontrol\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"drawer\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"html\" : (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"introparagraph\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"listicle\" : (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"modal\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"related\" : (\n\t\t\n\t\t\t\n\t\t\n\t),\n\t\"stat\" : (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"buniverse\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"headline\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"photoessay\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"button\" : (\n\t\t\n\t\t\t\n\t\t\n\t),\n\t\"pullquote\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t),\n\t\"leadin\" : (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t),\n\n};\n\n\n// Get the internal paths/shapes of the\n// icon, else return default brick icon.\nconst getIcon = function( name ) {\n\tif ( icons[name] ) {\n\t\treturn icons[name];\n\t} else {\n\t\treturn icons[\"default\"];\n\t}\n}\n\n// exported component function for use\n// in Blocks to retrieve an icon by name.\nconst blockIcons = function( name ) {\n\treturn (\n\t\t\n\t\t{ getIcon(name) }\n\t \n\t);\n}\n\n// Export the blockIcons function.\nexport default blockIcons;\n","/**\n * Registers the caption style for the core paragraph block.\n */\n\n// Import CSS.\nimport './style.scss';\nimport './editor.scss';\n\nwp.domReady( () => {\n\n\twp.blocks.registerBlockStyle( 'core/paragraph', [\n\t\t{\n\t\t\tname: 'default',\n\t\t\tlabel: 'Default',\n\t\t\tisDefault: true,\n\t\t},\n\t\t{\n\t\t\tname: 'caption',\n\t\t\tlabel: 'Caption'\n\t\t}\n\t]);\n} );","/**\n * Registers the end-of-article style for the core paragraph block.\n */\n\n// Import CSS.\nimport './style.scss';\nimport './editor.scss';\n\nwp.domReady( () => {\n\n\twp.blocks.registerBlockStyle( 'core/paragraph', [\n\t\t{\n\t\t\tname: 'default',\n\t\t\tlabel: 'Default',\n\t\t\tisDefault: true,\n\t\t},\n\t\t{\n\t\t\tname: 'end-of-article',\n\t\t\tlabel: 'End of Article'\n\t\t}\n\t]);\n} );","/**\n * Component: background\n *\n * An absraction of the default Cover block for more general use inside blocks.\n *\n * Import this component and its attributes into a block with:\n * \t`import ShareTools, { ShareToolsAttributes } from '../../components/share-tools';`\n */\n\n// WordPress dependencies.\nconst {\n\t__,\n} = wp.i18n;\nconst {\n\tFragment,\n} = wp.element;\nconst {\n\tPanelBody,\n\tToggleControl,\n} = wp.components;\nconst {\n\tInspectorControls,\n} = ( 'undefined' === typeof wp.blockEditor ) ? wp.editor : wp.blockEditor;\n\n// Share tools attributes.\nconst ShareToolsAttributes = {\n\tshareToolsDisabled: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n};\n\n// Share tools controls.\nconst ShareToolsControls = ( props ) => {\n\t// Get the properties of this component.\n\tconst {\n\t\tblockProps,\n\t} = props;\n\n\t// Get the properties of the block using this component.\n\tconst {\n\t\tattributes: {\n\t\t\tshareToolsDisabled,\n\t\t},\n\t\tsetAttributes,\n\t} = blockProps;\n\n\t// Return the interface for the background component.\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t setAttributes( { shareToolsDisabled: ! shareToolsDisabled } ) }\n\t\t\t\t/>\n\t\t\t\n\t\t\n\t);\n};\n\n/**\n * The Share Tools component.\n *\n * @param {array} props The properties passed to the component.\n */\nfunction ShareTools( props ) {\n\t// Get the properties of this component.\n\tconst {\n\t\tblockProps,\n\t} = props;\n\n\t// Get the properties of the block using this component.\n\tconst {\n\t\tattributes: {\n\t\t\tshareToolsDisabled,\n\t\t},\n\t} = blockProps;\n\n\t// Return the interface for the background component.\n\treturn (\n\t\t\n\t\t\t{ ! shareToolsDisabled && (\n\t\t\t\t

\n\t\t\t\t\t{ __( 'Share this' ) }\n\t\t\t\t

\n\t\t\t) }\n\t\t
\n\t);\n}\n\n// Export attributes for easy importing in blocks.\nexport {\n\tShareToolsAttributes,\n\tShareToolsControls,\n};\n\n// Export the share tools control panel.\nexport default ShareTools;\n","/**\n * Provide the expected attribute value for a list of allowed\n * formatting controls.\n *\n * Before Gutenberg 6.2.0, the formatting controls on RichText elements\n * were controlled with the `formattingControls` attribute.\n *\n * In Gutenberg 6.2.0, the `allowedFormats` attribute was introduced that\n * performs the same function with slightly different expectations.\n *\n * React does not render attributes that have `false` set as a value, so the\n * pattern provided by `getAllowedFormats` handles both `allowedFormats` and\n * `formattingControls` and then sets one of them to `false` depending on which\n * environment is detected.\n *\n * As an example, the following attributes restrict formatting controls to bold\n * and italic, a common pattern throughout the BU Blocks plugin:\n *\n * \t\t\n */\n\nconst getAllowedFormats = ( type, allowedFormats ) => {\n\tconst supportsAllowedFormats = ( 'undefined' === typeof wp.blockEditor ) ? false : true;\n\n\tif ( 'allowedFormats' === type ) {\n\t\treturn supportsAllowedFormats ? allowedFormats : false;\n\t} else if ( 'formattingControls' === type ) {\n\t\treturn supportsAllowedFormats ? false : allowedFormats;\n\t}\n\n\treturn allowedFormats;\n}\n\nexport default getAllowedFormats;\n","/**\n * Component: publicationSlug\n *\n * Returns a filterable string representing the current content's publication.\n */\n\nconst {\n\tapplyFilters,\n} = wp.hooks;\n\n// Return the publication owner for a block if\n// one is available in the DOM.\nconst publicationSlug = () => {\n\tlet publication = document.getElementById( 'bu_publication_owner' );\n\tlet publicationSlug = 'bu-blocks';\n\n\tif ( null !== publication ) {\n\t\tpublicationSlug = publication.value;\n\t}\n\n\treturn applyFilters( 'buBlocks.global.publicationSlug', publicationSlug );\n}\n\nexport default publicationSlug;\n","/**\n * Registers a variation of a block with a preset template.\n */\n\n// WordPress dependencies.\nconst { registerBlockType } = wp.blocks;\nconst { createElement } = wp.element;\nconst { addFilter } = wp.hooks;\n\n/**\n * Register a preset variation of a given block.\n *\n * @param {Object} originalBlock Block type to build preset variation from.\n * @param {Object} presetTemplate Template to apply.\n *\n * @return {Object} Filtered props applied to save element.\n */\nconst RegisterBlockPreset = ( originalBlock, presetTemplate ) => {\n\tconst { name, title, edit, save } = originalBlock;\n\tconst presetBlock = Object.assign( {}, originalBlock );\n\tconst nameParts = name.split( '/' );\n\n\t// Filter the classname of the preset block to match the default block.\n\tconst filterBlockClassName = ( className, blockName ) => {\n\t\tif ( presetBlock.name === blockName ) {\n\t\t\tclassName = className.replace( /-preset/i, '' );\n\t\t}\n\n\t\treturn className;\n\t}\n\n\tpresetBlock.name = nameParts[ 0 ] + '-preset/' + nameParts[ 1 ];\n\tpresetBlock.title = title + ' (preset)';\n\tpresetBlock.category = 'bu-editorial-presets';\n\tpresetBlock.save = save;\n\n\t// Add a `presetTemplate` property to the default block's edit component.\n\tpresetBlock.edit = function( props ) {\n\t\treturn createElement(\n\t\t\tedit,\n\t\t\tObject.assign( props, { presetTemplate: presetTemplate } )\n\t\t);\n\t};\n\n\t// Register the preset variation of the default block.\n\tregisterBlockType( presetBlock.name, presetBlock );\n\n\t// Filter the classname of the preset block to match the default block.\n\taddFilter(\n\t\t'blocks.getBlockDefaultClassName',\n\t\t'bu-blocks/preset-block-class-name/',\n\t\tfilterBlockClassName\n\t);\n}\n\nexport default RegisterBlockPreset;","/**\n * Adds an array of color objects to the editor or theme defaults,\n * and returns it for passing to the `colors` prop.\n */\n\n// WordPress dependencies.\nconst {\n\tselect,\n\tdispatch,\n} = wp.data;\n\nconst {\n\tgetEditorSettings,\n} = select( 'core/editor' );\n\nconst {\n\tupdateEditorSettings,\n} = dispatch( 'core/editor' );\n\n// Populate selectors that were in core/editor until WordPress 5.2 and are\n// now located in core/block-editor.\nconst {\n\tgetSettings, // Note that getSettings is _not_ available until WordPress 5.2 and will be undefined otherwise.\n} = ( 'undefined' === typeof select( 'core/block-editor' ) ) ? select( 'core/editor' ) : select( 'core/block-editor' );\n\n// Populate actions that were in core/editor until WordPress 5.2 and are\n// now located in core/block-editor.\nconst {\n\tupdateSettings, // Note that updateSettings is _not_ available until WordPress 5.2 and will be undefined otherwise.\n} = ( 'undefined' === typeof dispatch( 'core/block-editor' ) ) ? dispatch( 'core/editor' ) : dispatch( 'core/block-editor' );\n\nimport publicationSlug from './publication-slug';\n\nconst themeOptions = () => {\n\tlet defaultColors;\n\n\t// Get the default colors as set by the block editor and in the theme\n\t// through `add_theme_support()`.\n\t//\n\t// getSettings is used in WordPress 5.2 and later.\n\t// getEditorSettings is used in WordPress 4.9 + Gutenberg.\n\tif ( 'undefined' === typeof getSettings ) {\n\t\tdefaultColors = getEditorSettings().colors;\n\t} else {\n\t\tdefaultColors = getSettings().colors;\n\t}\n\n\t// Get default theme color options set by the active theme through the\n\t// `block_editor_settings` filter in PHP.\n\tconst defaultThemes = getEditorSettings().buDefaultThemes;\n\n\t// Get publication specific color options set by the active theme through\n\t// the `block_editor_settings` filter in PHP.\n\tconst publicationThemes = getEditorSettings().buPublicationThemes;\n\n\t// Retrieve the current publication from the DOM.\n\tconst publication = publicationSlug();\n\n\t// Populate the final `themeOptions` from the current publication, if the exist.\n\t// If not, use the default options.\n\tconst themeOptions = ( publicationThemes && publicationThemes[ publication ] ) ? publicationThemes[ publication ] : defaultThemes;\n\n\t/**\n\t * Add custom color objects to the defaults if they haven't already been added.\n\t *\n\t * Gutenberg returns a complete color object only if it is found in colors,\n\t * otherwise only the the hex code is returned.\n\t *\n\t * @see https://github.com/WordPress/gutenberg/blob/master/packages/editor/src/components/colors/utils.js#L7.\n\t */\n\tif ( themeOptions && ! themeOptions.some( v => defaultColors.includes( v ) ) ) {\n\t\tconst newColors = defaultColors.concat( themeOptions );\n\n\t\t// Update both the editor settings and general settings so that when a color\n\t\t// is chosen, the value is one of those expected by the component.\n\t\tupdateEditorSettings( { colors: newColors } );\n\n\t\t// In WordPress 5.2 and alter, the settings should be updated outside of the\n\t\t// editor too, through updateSettings.\n\t\tif ( 'undefined' !== typeof updateSettings ) {\n\t\t\tupdateSettings( { colors: newColors } );\n\t\t}\n\t}\n\n\t// Return the array of custom color objects for passing to the `colors` prop.\n\treturn themeOptions;\n}\n\nexport default themeOptions;\n","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","module.exports = window[\"React\"];","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"blocks\": 0,\n\t\"./style-blocks\": 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkbu_blocks\"] = self[\"webpackChunkbu_blocks\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [\"./style-blocks\"], function() { return __webpack_require__(\"./src/blocks.js\"); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n",""],"names":["classnames","RegisterBlockPreset","blockIcons","__","wp","i18n","registerBlockType","blocks","getColorClassName","InnerBlocks","useBlockProps","blockEditor","editor","edit","asideBlock","apiVersion","title","description","icon","category","supports","align","attributes","themeColor","type","save","className","classes","blockProps","createElement","Content","presetTemplate","placeholder","themeOptions","allowedBlocks","Component","Fragment","element","compose","InspectorControls","PanelColorSettings","withColors","BUAsideEdit","props","setThemeColor","slug","colorSettings","value","color","onChange","label","disableCustomColors","colors","template","getAllowedFormats","PanelBody","Path","RadioControl","SVG","TextControl","ToggleControl","components","RichText","getClasses","aspectRatio","id","caption","controls","default","autoplay","start","minutes","seconds","isSelected","setAttributes","onChangeMinutes","newValue","Number","newStart","onChangeSeconds","url","help","selected","options","option","checked","src","frameborder","allow","isEmpty","tagName","formattingControls","allowedFormats","keepPlaceholderOnFocus","encodeURI","class","publicationSlug","deprecated","Button","Dashicon","G","IconButton","URLInput","publication","source","selector","attribute","text","styles","name","isDefault","customClassName","onClick","undefined","isSmall","href","viewBox","xmlns","fill","d","onSubmit","event","preventDefault","withSelect","data","ifCondition","registerFormatType","toggleFormat","richText","RichTextShortcut","RichTextToolbarButton","createHigherOrderComponent","addFilter","hooks","clickToTweetContainer","clickToTweetHighlight","select","getSelectedBlock","selectedBlock","isActive","clickToTweet","content","active","includes","onToggle","character","onUse","shortcutCharacter","shortcutType","registerClickToTweetAttributes","settings","clickToTweetAttributes","Object","assign","registerFields","BlockEdit","wrappedContent","wrappedClassName","replace","trim","strippedContent","slice","length","strippedClassName","saveClickToTweet","keywords","target","togglebuttonclasses","withoutInteractiveFormatting","SelectControl","RangeControl","ButtonGroup","BlockControls","getBlocks","HeadingToolbar","level","isOpen","iconStyle","customMarginBottom","marginBottom","buttonOpenLabel","buttonCloseLabel","clientId","TagName","isPreviewStyle","allowedBlockList","filter","block","push","editorContainerPaddingOffset","split","style","isPrimary","isSecondary","showTooltip","min","max","step","minLevel","maxLevel","selectedLevel","newLevel","withState","subscribe","PlainText","addQueryArgs","apiFetch","customBlockID","customHTML","hasLoaded","doingHTMLFetch","errorMessage","setState","path","post_id","getCurrentPostId","custom_block_id","then","html","catch","error","message","updateBlockValue","updatedHTML","savePostMeta","postID","customTextArea","document","querySelector","post","method","isSavingPost","isAutosavingPost","didPostSaveRequestSucceed","saving","Date","getTime","containerID","Background","BackgroundAttributes","BackgroundControls","useState","hasSelectedInnerBlock","isBlockSelected","background","hideTeaser","round","size","button","hed","lede","getEditWrapperProps","drawerHasSelectedBlock","backgroundId","isUploading","setIsUploading","allowedMediaTypes","inlinePlaceholder","placeholderText","initialOpen","sprintf","Toolbar","HeadingLevelIcon","isPressed","levelToPath","hasOwnProperty","width","height","createLevelControl","targetLevel","render","range","Array","from","v","k","map","index","anchor","withoutInteractiveFormats","el","posttexticon","points","pretexticon","createBlock","MediaPlaceholder","MediaUpload","MediaUploadCheck","renderDropCapSVG","imageURL","patternUnits","x","y","textAnchor","dy","heading","list","dropCapColor","paragraphColor","dropCapImageURL","dropCapImageId","isImageDropCap","dropCapCharacter","charAt","saveList","hasDropCapStyle","multiline","randomID","clipPathURL","xlinkurlAttr","preserveAspectRatio","insertBlocksAfter","setParagraphColor","setDropCapColor","onSelectImage","media","selectedMediaURL","sizes","media_details","source_url","onRemoveImage","renderParagraphSettings","renderDropCapColorSettings","renderDropCapImageSettings","onSelect","open","key","labels","tagname","listValues","wrapperClassName","unstableOnSplit","before","after","applyFilters","blockAttributes","head","deck","imageFocus","textPositionX","textPositionY","wide","box","flip","primaryTerm","metabar","metabardate","boxOpacity","videoUncropped","blockStyles","blockSupports","multiple","backgroundUrl","backgroundAutoplay","isStyleEmphasisOnText","isStyleTextOverImage","isStyleSideBySide","isStyleTextToImage","isStyleImageToText","boxClasses","mediaPositioningControls","textPositioningControls","sideBySideLayoutControls","layoutControls","videoCropControls","ShareTools","ShareToolsAttributes","ShareToolsControls","useEffect","number","aside","divider","hasRelatedLinks","related","dek","credit","backgroundCaption","hasAsideContent","getNumberInputWidth","allowedMedia","BUEditorialModalEdit","calloutHeading","calloutText","trigger","modalSelected","modalHasSelectedBlock","parent","alt","columnClass","inserter","reusable","allowedTypes","dispatch","getBlocksByClientId","updateBlockAttributes","removeBlock","layout","onChangeLayout","newLayout","blockClasses","splice","currentBlocks","innerBlocks","forEach","blockClass","i","existingBlock","newColumnClass","photoTemplate","templateLock","templateInsertUpdatesSelection","isStyleDefault","textColor","isStylePop","quote","photoCredit","cite","setTextColor","BlockAlignmentToolbar","decodeEntities","htmlEntities","cardCount","relatedManual","includePosts","URLInputEntry","yarppPosts","yarppPostsError","doingYarppPostsFetch","relatedPosts","relatedPostsError","doingRelatedPostsFetch","query","isCardStyle","perPage","per_page","include","postTypes","post_type","posts","code","cardCountClass","displayPosts","currentPost","getCurrentPost","displayListItem","media_url","primary_term","link","date_gmt","resetRelatedState","removeSelectedPost","postId","parentNode","dataset","indexOf","parseInt","_","displaySelectedPost","handleSelectPost","concat","toggleRelatedManual","initialPosition","crop","showNextUp","slideIndex","oneIndexed","toString","padStart","imageMarkup","slide","backgroundImage","imageUrl","imageId","blockMarkup","slides","ulWidth","liWidth","emptySlide","slideEdit","newSlides","values","image","isButton","isLarge","instructions","withDispatch","getBlockClasses","stats","Edit","insertBlock","isAlignedLeftOrRight","onChangeStatsNumber","statNumber","newBlock","Circle","circleOneColor","circleTwoColor","numberSize","statSVG","circleOneFill","circleTwoFill","enableBackground","cx","cy","r","strokeDashoffset","postText","preText","setCircleOneColor","setCircleTwoColor","getBlockTypes","excludeBlocks","allowed","backgroundType","backgroundOpacity","backgroundAlt","getAuthority","isBlobURL","blob","imageSize","onRemoveMedia","onSelectMedia","mediaType","media_type","onSelectURL","newURL","allowedAuthorities","authority","inspectorControls","bgUrl","ratio","Spinner","getPath","getQueryString","BackgroundOpacityToClass","Math","backgroundVideo","autoPlay","muted","loop","backgroundIframe","videoId","substr","frameBorder","icons","fillRule","transform","stroke","strokeWidth","getIcon","strokeLinejoin","strokeMiterlimit","clipRule","domReady","registerBlockStyle","shareToolsDisabled","supportsAllowedFormats","getElementById","originalBlock","presetBlock","nameParts","filterBlockClassName","blockName","getEditorSettings","updateEditorSettings","getSettings","updateSettings","defaultColors","defaultThemes","buDefaultThemes","publicationThemes","buPublicationThemes","some","newColors"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/bu-blocks-frontend.asset.php b/dist/bu-blocks-frontend.asset.php index e79be64e..78808b0a 100644 --- a/dist/bu-blocks-frontend.asset.php +++ b/dist/bu-blocks-frontend.asset.php @@ -1 +1 @@ - array(), 'version' => '97209db90fcbcb1179ef'); + array(), 'version' => 'f5524308f1e1dadd0f1d'); diff --git a/dist/bu-blocks-frontend.js b/dist/bu-blocks-frontend.js index c8197a63..0902bd2e 100644 --- a/dist/bu-blocks-frontend.js +++ b/dist/bu-blocks-frontend.js @@ -1517,6 +1517,253 @@ _blocks_frontend_tools__WEBPACK_IMPORTED_MODULE_0__["default"].photoessay = func }; }(); +/***/ }), + +/***/ "./src/blocks/slideshow/frontend.js": +/*!******************************************!*\ + !*** ./src/blocks/slideshow/frontend.js ***! + \******************************************/ +/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _blocks_frontend_tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../blocks-frontend-tools */ "./src/blocks-frontend-tools.js"); +/** + * BLOCK: Slideshow + * + * An slideshow block to display content + */ + +// Internal dependencies. + +_blocks_frontend_tools__WEBPACK_IMPORTED_MODULE_0__["default"].slideshow = function () { + var slideshowBlocks = []; + var $body = document.getElementsByTagName('body')[0]; + var findElements = function () { + //find all the blocks + var elements = document.getElementsByClassName('js-bu-blocks-slideshow'); + + //if found + if (elements.length > 0) { + //for each found block do stuff + for (i = 0; i < elements.length; i++) { + var block = {}; + + //get back btn + block.backBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-back-btn')[0]; + //get forward btn + block.forwardBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-forward-btn')[0]; + + //get onmedia back btn + block.backMediaBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-back-onmedia-btn')[0]; + //get onmedia forward btn + block.forwardMediaBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-forward-onmedia-btn')[0]; + //get ontrack forward btn + block.forwardTrackBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-forward-ontrack-btn')[0]; + + //get caption btn + block.captionBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-caption-btn')[0]; + + //get media track + block.mediatrack = elements[i].getElementsByClassName('js-bu-blocks-slideshow-media-track')[0]; + + //get media items + block.mediatrackitems = elements[i].getElementsByClassName('js-bu-blocks-slideshow-media-track-item'); + + //get caption track + block.captiontrack = elements[i].getElementsByClassName('js-bu-blocks-slideshow-caption-track')[0]; + + //get caption items + block.captiontrackitems = elements[i].getElementsByClassName('js-bu-blocks-slideshow-caption-item'); + //get caption items + block.captionContainer = elements[i].getElementsByClassName('js-bu-blocks-slideshow-caption-container')[0]; + + //for each one found store as object in the array + slideshowBlocks.push(block); + } + + // set active states on items and captions + for (i = 0; i < block.mediatrackitems.length; i++) { + block.mediatrackitems[i].active = false; + block.captiontrackitems[i].active = false; + } + // set first to active true + block.mediatrackitems[0].active = true; + block.captiontrackitems[0].active = true; + for (var i = block.mediatrackitems.length - 1; i >= 0; i--) { + // set active classes + if (block.mediatrackitems[i].active === true) { + block.mediatrackitems[0].classList.toggle("bu-blocks-slideshow-media-track-item-active"); + block.captiontrackitems[0].classList.toggle("bu-blocks-slideshow-media-track-item-active"); + } + } + block.captionContainer.collapsed = true; + sizingCaption(block); + } + }; + var setupHandlers = function () { + if (slideshowBlocks.length > 0) { + for (let i = 0; i < slideshowBlocks.length; i++) { + var block = slideshowBlocks[i]; + block.backBtn.addEventListener("click", function (e) { + e.preventDefault(); + prevItem(block); + sizingCaption(block); + }); + block.backMediaBtn.addEventListener("click", function (e) { + e.preventDefault(); + prevItem(block); + sizingCaption(block); + }); + block.forwardBtn.addEventListener("click", function (e) { + e.preventDefault(); + nextItem(block); + sizingCaption(block); + }); + block.forwardMediaBtn.addEventListener("click", function (e) { + e.preventDefault(); + nextItem(block); + sizingCaption(block); + }); + block.forwardTrackBtn.addEventListener("click", function (e) { + e.preventDefault(); + nextItem(block); + sizingCaption(block); + }); + block.captionBtn.addEventListener("click", function (e) { + e.preventDefault(); + toggleCaption(block); + sizingCaption(block); + }); + } + } + }; + var setupMediaTrack = function () { + for (i = 0; i < slideshowBlocks.length; i++) { + var block = slideshowBlocks[i]; + if (block.mediatrack && block.mediatrackitems) { + //set currentItem variable + block.currentItem = 0; + + //store number of items + block.itemslength = block.mediatrackitems.length; + + //set default width + block.mediatrack.style.width = 'calc(' + block.itemslength + ' * 100%)'; + //set start position to first image + block.mediatrack.style.left = '0%'; + + //for each image calculate the width + for (var i = 0; i < block.mediatrackitems.length; i++) { + block.mediatrackitems[i].style.width = 'calc(1/' + block.itemslength + ' * 100% - 2px)'; + } + } + + //setup the caption track starting widths and postion + if (block.captiontrack && block.captiontrackitems) { + //set default width + block.captiontrack.style.width = 'calc(' + block.itemslength + ' * 100%)'; + //set start position to first caption + block.captiontrack.style.left = '0%'; + + //for each caption calculate the width + for (var i = 0; i < block.captiontrackitems.length; i++) { + block.captiontrackitems[i].style.width = 'calc(1/' + block.itemslength + ' * 100%)'; + } + } + } + }; + var nextItem = function (block) { + if (block.currentItem === block.itemslength - 1) { + //can't go next anymore + } else { + block.currentItem = block.currentItem + 1; + block.mediatrack.style.left = block.currentItem * -100 + '%'; + block.captiontrack.style.left = block.currentItem * -100 + '%'; + //move over active states + for (var i = block.mediatrackitems.length - 1; i >= 0; i--) { + if (block.mediatrackitems[i].active === true) { + block.mediatrackitems[i].active = false; + block.mediatrackitems[i].classList.toggle("bu-blocks-slideshow-media-track-item-active"); + block.mediatrackitems[i + 1].active = true; + block.mediatrackitems[i + 1].classList.toggle("bu-blocks-slideshow-media-track-item-active"); + block.captiontrackitems[i].active = false; + block.captiontrackitems[i].classList.toggle("bu-blocks-slideshow-media-track-item-active"); + block.captiontrackitems[i + 1].active = true; + block.captiontrackitems[i + 1].classList.toggle("bu-blocks-slideshow-media-track-item-active"); + } + } + } + }; + var prevItem = function (block) { + if (block.currentItem === 0) { + //do nothing can't go back more + } else { + block.currentItem = block.currentItem - 1; + block.mediatrack.style.left = block.currentItem * -100 + '%'; + block.captiontrack.style.left = block.currentItem * -100 + '%'; + //move over active states + for (var i = 0; i < block.mediatrackitems.length; i++) { + if (block.mediatrackitems[i].active === true) { + block.mediatrackitems[i].active = false; + block.mediatrackitems[i].classList.toggle("bu-blocks-slideshow-media-track-item-active"); + block.mediatrackitems[i - 1].active = true; + block.mediatrackitems[i - 1].classList.toggle("bu-blocks-slideshow-media-track-item-active"); + block.captiontrackitems[i].active = false; + block.captiontrackitems[i].classList.toggle("bu-blocks-slideshow-media-track-item-active"); + block.captiontrackitems[i - 1].active = true; + block.captiontrackitems[i - 1].classList.toggle("bu-blocks-slideshow-media-track-item-active"); + } + } + } + }; + var toggleCaption = function (block) { + // Toggle the collapsed class + block.captionContainer.classList.toggle("bu-blocks-slideshow-caption-container-collapsed"); + block.captionContainer.collapsed = !block.captionContainer.collapsed; + }; + var sizingCaption = function (block) { + // look for active caption and grab height + for (var i = 0; i < block.captiontrackitems.length; i++) { + if (block.captionContainer.collapsed == false) { + if (block.captiontrackitems[i].active === true) { + block.captiontrack.style.maxHeight = block.captiontrackitems[i].offsetHeight + 'px'; + } + } else { + block.captiontrack.style.maxHeight = '1.6em'; + if (block.captiontrackitems[i].active === true) { + //remove colapse class if text is 1 line + if (block.captiontrackitems[i].offsetHeight < block.captiontrack.offsetHeight) { + block.captionContainer.classList.remove("bu-blocks-slideshow-caption-container-collapsed"); + block.captionBtn.style.display = 'none'; + } else { + block.captionContainer.classList.add("bu-blocks-slideshow-caption-container-collapsed"); + block.captionBtn.style.display = 'block'; + } + } + } + } + }; + var slideshowInit = function () { + //find the elements + findElements(); + + //setup handlers + setupHandlers(); + setupMediaTrack(); + }; + + //start on dom ready (ie8+) + document.addEventListener("DOMContentLoaded", function () { + slideshowInit(); + }); + return { + getslideshowBlocks: function () { + return slideshowBlocks; + } + }; +}(); + /***/ }) /******/ }); @@ -1604,6 +1851,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _blocks_drawer_frontend__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./blocks/drawer/frontend */ "./src/blocks/drawer/frontend.js"); /* harmony import */ var _blocks_modal_frontend__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blocks/modal/frontend */ "./src/blocks/modal/frontend.js"); /* harmony import */ var _blocks_photoessay_frontend__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./blocks/photoessay/frontend */ "./src/blocks/photoessay/frontend.js"); +/* harmony import */ var _blocks_slideshow_frontend__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./blocks/slideshow/frontend */ "./src/blocks/slideshow/frontend.js"); /** * Frontend JS for BU Blocks * @@ -1622,6 +1870,7 @@ __webpack_require__.r(__webpack_exports__); + // Export bu_blocks object to the window so it's accessible easily for // child themes to call public functions or debug. window.bu_blocks = _blocks_frontend_tools__WEBPACK_IMPORTED_MODULE_1__["default"]; diff --git a/dist/bu-blocks-frontend.js.map b/dist/bu-blocks-frontend.js.map index 0cf1962b..41f62346 100644 --- a/dist/bu-blocks-frontend.js.map +++ b/dist/bu-blocks-frontend.js.map @@ -1 +1 @@ -{"version":3,"file":"bu-blocks-frontend.js","mappings":"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","sources":["webpack://bu-blocks/./src/blocks-frontend-polyfills.js","webpack://bu-blocks/./src/blocks-frontend-tools.js","webpack://bu-blocks/./src/blocks/clicktotweet/frontend.js","webpack://bu-blocks/./src/blocks/collapsible-control/frontend.js","webpack://bu-blocks/./src/blocks/collapsible/frontend.js","webpack://bu-blocks/./src/blocks/drawer/frontend.js","webpack://bu-blocks/./src/blocks/modal/frontend.js","webpack://bu-blocks/./src/blocks/photoessay/frontend.js","webpack://bu-blocks/webpack/bootstrap","webpack://bu-blocks/webpack/runtime/compat get default export","webpack://bu-blocks/webpack/runtime/define property getters","webpack://bu-blocks/webpack/runtime/hasOwnProperty shorthand","webpack://bu-blocks/webpack/runtime/make namespace object","webpack://bu-blocks/./src/blocks-frontend.js"],"sourcesContent":["/**\n * Polyfills\n *\n * This was a last-minute inclusion during the original development of BU Blocks\n * to fix some browser compatibility isues. These polyfills may no longer be needed.\n * Additionally, compiling the JS with modern build tools should also help handle this if needed.\n *\n * Todo: test if these polyfills are needed for current browser support.\n */\n\n\n/*\nCustom Event Polyfill\nhttps://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n*/\n(function () {\n\n\tif ( typeof window.CustomEvent === \"function\" ) return false;\n\n\tfunction CustomEvent ( event, params ) {\n\t params = params || { bubbles: false, cancelable: false, detail: null };\n\t var evt = document.createEvent( 'CustomEvent' );\n\t evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );\n\t return evt;\n\t }\n\n\tCustomEvent.prototype = window.Event.prototype;\n\n\twindow.CustomEvent = CustomEvent;\n })();\n\n /*\n .matches() polyfill:\n https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n */\n if (!Element.prototype.matches) {\n\tElement.prototype.matches = Element.prototype.msMatchesSelector ||\n\t\t\t\t\t\t\t\tElement.prototype.webkitMatchesSelector;\n }\n\n // https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n if (!Array.prototype.findIndex) {\n\tObject.defineProperty(Array.prototype, 'findIndex', {\n\t value: function(predicate) {\n\t // 1. Let O be ? ToObject(this value).\n\t\tif (this == null) {\n\t\t throw new TypeError('\"this\" is null or not defined');\n\t\t}\n\n\t\tvar o = Object(this);\n\n\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\t\tvar len = o.length >>> 0;\n\n\t\t// 3. If IsCallable(predicate) is false, throw a TypeError exception.\n\t\tif (typeof predicate !== 'function') {\n\t\t throw new TypeError('predicate must be a function');\n\t\t}\n\n\t\t// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\t\tvar thisArg = arguments[1];\n\n\t\t// 5. Let k be 0.\n\t\tvar k = 0;\n\n\t\t// 6. Repeat, while k < len\n\t\twhile (k < len) {\n\t\t // a. Let Pk be ! ToString(k).\n\t\t // b. Let kValue be ? Get(O, Pk).\n\t\t // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n\t\t // d. If testResult is true, return k.\n\t\t var kValue = o[k];\n\t\t if (predicate.call(thisArg, kValue, k, o)) {\n\t\t\treturn k;\n\t\t }\n\t\t // e. Increase k by 1.\n\t\t k++;\n\t\t}\n\n\t\t// 7. Return -1.\n\t\treturn -1;\n\t },\n\t configurable: true,\n\t writable: true\n\t});\n }\n\n\n // Matches polyfill.\n if (!Element.prototype.matches) {\n\t Element.prototype.matches =\n\t\tElement.prototype.msMatchesSelector ||\n\t\tElement.prototype.webkitMatchesSelector;\n }\n // element.closest() polyfill.\n if (!Element.prototype.closest) {\n\t Element.prototype.closest = function(s) {\n\t\tvar el = this;\n\n\t\tdo {\n\t\t if (Element.prototype.matches.call(el, s)) return el;\n\t\t el = el.parentElement || el.parentNode;\n\t\t} while (el !== null && el.nodeType === 1);\n\t\treturn null;\n\t };\n }\n\n // Foreach NodeList Polyfill for IE.\n if ('NodeList' in window && !NodeList.prototype.forEach) {\n\t console.info('polyfill for IE11');\n\t NodeList.prototype.forEach = function (callback, thisArg) {\n\t\tthisArg = thisArg || window;\n\t\tfor (var i = 0; i < this.length; i++) {\n\t\t callback.call(thisArg, this[i], i, this);\n\t\t}\n\t };\n }\n\n\n // Foreach Polyfill\n // Production steps of ECMA-262, Edition 5, 15.4.4.18\n // Reference: http://es5.github.io/#x15.4.4.18\n if (!Array.prototype.forEach) {\n\n\tArray.prototype.forEach = function(callback/*, thisArg*/) {\n\n\t var T, k;\n\n\t if (this == null) {\n\t\tthrow new TypeError('this is null or not defined');\n\t }\n\n\t // 1. Let O be the result of calling toObject() passing the\n\t // |this| value as the argument.\n\t var O = Object(this);\n\n\t // 2. Let lenValue be the result of calling the Get() internal\n\t // method of O with the argument \"length\".\n\t // 3. Let len be toUint32(lenValue).\n\t var len = O.length >>> 0;\n\n\t // 4. If isCallable(callback) is false, throw a TypeError exception.\n\t // See: http://es5.github.com/#x9.11\n\t if (typeof callback !== 'function') {\n\t\tthrow new TypeError(callback + ' is not a function');\n\t }\n\n\t // 5. If thisArg was supplied, let T be thisArg; else let\n\t // T be undefined.\n\t if (arguments.length > 1) {\n\t\tT = arguments[1];\n\t }\n\n\t // 6. Let k be 0.\n\t k = 0;\n\n\t // 7. Repeat while k < len.\n\t while (k < len) {\n\n\t\tvar kValue;\n\n\t\t// a. Let Pk be ToString(k).\n\t\t// This is implicit for LHS operands of the in operator.\n\t\t// b. Let kPresent be the result of calling the HasProperty\n\t\t// internal method of O with argument Pk.\n\t\t// This step can be combined with c.\n\t\t// c. If kPresent is true, then\n\t\tif (k in O) {\n\n\t\t // i. Let kValue be the result of calling the Get internal\n\t\t // method of O with argument Pk.\n\t\t kValue = O[k];\n\n\t\t // ii. Call the Call internal method of callback with T as\n\t\t // the this value and argument list containing kValue, k, and O.\n\t\t callback.call(T, kValue, k, O);\n\t\t}\n\t\t// d. Increase k by 1.\n\t\tk++;\n\t }\n\t // 8. return undefined.\n\t};\n }\n\n\n //Classlist polyfill\n /*\n * classList.js: Cross-browser full element.classList implementation.\n * 1.1.20170427\n *\n * By Eli Grey, http://eligrey.com\n * License: Dedicated to the public domain.\n * See https://github.com/eligrey/classList.js/blob/master/LICENSE.md\n */\n\n /*global self, document, DOMException */\n\n /*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */\n\n if (\"document\" in self) {\n\n\t// Full polyfill for browsers with no classList support\n\t// Including IE < Edge missing SVGElement.classList\n\tif (!(\"classList\" in document.createElement(\"_\"))\n\t || document.createElementNS && !(\"classList\" in document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\"))) {\n\n\t (function (view) {\n\n\t\t\"use strict\";\n\n\t\tif (!('Element' in view)) return;\n\n\t\tvar\n\t\t classListProp = \"classList\"\n\t\t , protoProp = \"prototype\"\n\t\t , elemCtrProto = view.Element[protoProp]\n\t\t , objCtr = Object\n\t\t , strTrim = String[protoProp].trim || function () {\n\t\t\treturn this.replace(/^\\s+|\\s+$/g, \"\");\n\t\t }\n\t\t , arrIndexOf = Array[protoProp].indexOf || function (item) {\n\t\t\tvar\n\t\t\t i = 0\n\t\t\t , len = this.length\n\t\t\t ;\n\t\t\tfor (; i < len; i++) {\n\t\t\t if (i in this && this[i] === item) {\n\t\t\t\treturn i;\n\t\t\t }\n\t\t\t}\n\t\t\treturn -1;\n\t\t }\n\t\t // Vendors: please allow content code to instantiate DOMExceptions\n\t\t , DOMEx = function (type, message) {\n\t\t\tthis.name = type;\n\t\t\tthis.code = DOMException[type];\n\t\t\tthis.message = message;\n\t\t }\n\t\t , checkTokenAndGetIndex = function (classList, token) {\n\t\t\tif (token === \"\") {\n\t\t\t throw new DOMEx(\n\t\t\t\t\"SYNTAX_ERR\"\n\t\t\t\t, \"An invalid or illegal string was specified\"\n\t\t\t );\n\t\t\t}\n\t\t\tif (/\\s/.test(token)) {\n\t\t\t throw new DOMEx(\n\t\t\t\t\"INVALID_CHARACTER_ERR\"\n\t\t\t\t, \"String contains an invalid character\"\n\t\t\t );\n\t\t\t}\n\t\t\treturn arrIndexOf.call(classList, token);\n\t\t }\n\t\t , ClassList = function (elem) {\n\t\t\tvar\n\t\t\t trimmedClasses = strTrim.call(elem.getAttribute(\"class\") || \"\")\n\t\t\t , classes = trimmedClasses ? trimmedClasses.split(/\\s+/) : []\n\t\t\t , i = 0\n\t\t\t , len = classes.length\n\t\t\t ;\n\t\t\tfor (; i < len; i++) {\n\t\t\t this.push(classes[i]);\n\t\t\t}\n\t\t\tthis._updateClassName = function () {\n\t\t\t elem.setAttribute(\"class\", this.toString());\n\t\t\t};\n\t\t }\n\t\t , classListProto = ClassList[protoProp] = []\n\t\t , classListGetter = function () {\n\t\t\treturn new ClassList(this);\n\t\t }\n\t\t ;\n\t\t// Most DOMException implementations don't allow calling DOMException's toString()\n\t\t// on non-DOMExceptions. Error's toString() is sufficient here.\n\t\tDOMEx[protoProp] = Error[protoProp];\n\t\tclassListProto.item = function (i) {\n\t\t return this[i] || null;\n\t\t};\n\t\tclassListProto.contains = function (token) {\n\t\t token += \"\";\n\t\t return checkTokenAndGetIndex(this, token) !== -1;\n\t\t};\n\t\tclassListProto.add = function () {\n\t\t var\n\t\t\ttokens = arguments\n\t\t\t, i = 0\n\t\t\t, l = tokens.length\n\t\t\t, token\n\t\t\t, updated = false\n\t\t\t;\n\t\t do {\n\t\t\ttoken = tokens[i] + \"\";\n\t\t\tif (checkTokenAndGetIndex(this, token) === -1) {\n\t\t\t this.push(token);\n\t\t\t updated = true;\n\t\t\t}\n\t\t }\n\t\t while (++i < l);\n\n\t\t if (updated) {\n\t\t\tthis._updateClassName();\n\t\t }\n\t\t};\n\t\tclassListProto.remove = function () {\n\t\t var\n\t\t\ttokens = arguments\n\t\t\t, i = 0\n\t\t\t, l = tokens.length\n\t\t\t, token\n\t\t\t, updated = false\n\t\t\t, index\n\t\t\t;\n\t\t do {\n\t\t\ttoken = tokens[i] + \"\";\n\t\t\tindex = checkTokenAndGetIndex(this, token);\n\t\t\twhile (index !== -1) {\n\t\t\t this.splice(index, 1);\n\t\t\t updated = true;\n\t\t\t index = checkTokenAndGetIndex(this, token);\n\t\t\t}\n\t\t }\n\t\t while (++i < l);\n\n\t\t if (updated) {\n\t\t\tthis._updateClassName();\n\t\t }\n\t\t};\n\t\tclassListProto.toggle = function (token, force) {\n\t\t token += \"\";\n\n\t\t var\n\t\t\tresult = this.contains(token)\n\t\t\t, method = result ?\n\t\t\t force !== true && \"remove\"\n\t\t\t :\n\t\t\t force !== false && \"add\"\n\t\t\t;\n\n\t\t if (method) {\n\t\t\tthis[method](token);\n\t\t }\n\n\t\t if (force === true || force === false) {\n\t\t\treturn force;\n\t\t } else {\n\t\t\treturn !result;\n\t\t }\n\t\t};\n\t\tclassListProto.toString = function () {\n\t\t return this.join(\" \");\n\t\t};\n\n\t\tif (objCtr.defineProperty) {\n\t\t var classListPropDesc = {\n\t\t\tget: classListGetter\n\t\t\t, enumerable: true\n\t\t\t, configurable: true\n\t\t };\n\t\t try {\n\t\t\tobjCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n\t\t } catch (ex) { // IE 8 doesn't support enumerable:true\n\t\t\t// adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36\n\t\t\t// modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected\n\t\t\tif (ex.number === undefined || ex.number === -0x7FF5EC54) {\n\t\t\t classListPropDesc.enumerable = false;\n\t\t\t objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n\t\t\t}\n\t\t }\n\t\t} else if (objCtr[protoProp].__defineGetter__) {\n\t\t elemCtrProto.__defineGetter__(classListProp, classListGetter);\n\t\t}\n\n\t }(self));\n\n\t}\n\n\t// There is full or partial native classList support, so just check if we need\n\t// to normalize the add/remove and toggle APIs.\n\n\t(function () {\n\t \"use strict\";\n\n\t var testElement = document.createElement(\"_\");\n\n\t testElement.classList.add(\"c1\", \"c2\");\n\n\t // Polyfill for IE 10/11 and Firefox <26, where classList.add and\n\t // classList.remove exist but support only one argument at a time.\n\t if (!testElement.classList.contains(\"c2\")) {\n\t\tvar createMethod = function (method) {\n\t\t var original = DOMTokenList.prototype[method];\n\n\t\t DOMTokenList.prototype[method] = function (token) {\n\t\t\tvar i, len = arguments.length;\n\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t token = arguments[i];\n\t\t\t original.call(this, token);\n\t\t\t}\n\t\t };\n\t\t};\n\t\tcreateMethod('add');\n\t\tcreateMethod('remove');\n\t }\n\n\t testElement.classList.toggle(\"c3\", false);\n\n\t // Polyfill for IE 10 and Firefox <24, where classList.toggle does not\n\t // support the second argument.\n\t if (testElement.classList.contains(\"c3\")) {\n\t\tvar _toggle = DOMTokenList.prototype.toggle;\n\n\t\tDOMTokenList.prototype.toggle = function (token, force) {\n\t\t if (1 in arguments && !this.contains(token) === !force) {\n\t\t\treturn force;\n\t\t } else {\n\t\t\treturn _toggle.call(this, token);\n\t\t }\n\t\t};\n\n\t }\n\n\t testElement = null;\n\t}());\n\n }\n","// Create a global object to store all BU Blocks related functions and data.\nconst bu_blocks = {};\n\nexport default bu_blocks;\n","/**\n * BLOCK: ClicktoTweet\n *\n * A modification of Paragraph blocks to add a click to tweet feature.\n * If applied to the entire block the whole paragraph is tweetable.\n * If text is highlighted and the click to tweet format is applied, only that\n * highlighted text will recieve a tweetable link.\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\n\nbu_blocks.clicktotweet = ( function() {\n\tvar tweetBlocks = []; //stores all of our found blocks\n\tvar tweetLabel = \"Tweet this\";\n\n\tvar findElements = function() {\n\t\t//find all the blocks\n\t\tvar elements = document.querySelectorAll( '.wp-block-bu-clicktotweet' );\n\t\t//if found\n\t\tif ( elements.length > 0 ) {\n\t\t\t//for each found block do stuff\n\t\t\telements.forEach( function( theBlock, item ) {\n\n\t\t\t\tvar block = {};\n\n\t\t\t\t// Get DOM element.\n\t\t\t\tblock.element = theBlock;\n\n\t\t\t\t// Check if this block has a highlight subsection of text\n\t\t\t\tif ( theBlock.classList.contains('has-format-highlight') ) {\n\t\t\t\t\tblock.highlight = theBlock.querySelector( '.wp-block-bu-clicktotweet-highlight');\n\n\t\t\t\t\t// Get and store the highlighted text as our text to tweet.\n\t\t\t\t\tblock.tweet_text = block.highlight.innerText;\n\t\t\t\t} else {\n\t\t\t\t\t// Get the entire paragraph's text to tweet.\n\t\t\t\t\tblock.tweet_text = theBlock.innerText;\n\t\t\t\t}\n\n\t\t\t\t//for each one found store as object in the array\n\t\t\t\ttweetBlocks.push( block );\n\t\t\t});\n\t\t}\n\t};\n\n\t/*\n\tSetup click handlers for these blocks\n\t*/\n\tvar setupHandlers = function() {\n\t\tif ( tweetBlocks.length > 0 ) {\n\n\t\t\t// Loop through all found Tweet Blocks\n\t\t\ttweetBlocks.forEach( function( theBlock, item ) {\n\t\t\t\tvar btn;\n\n\t\t\t\t// If has subtext highlighted to tweet use that.\n\t\t\t\tif ( theBlock.highlight ) {\n\t\t\t\t\tbtn = theBlock.highlight;\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise append the tweet button for the whole

.\n\t\t\t\t\tbtn = document.createElement( 'button' );\n\t\t\t\t\tbtn.appendChild( document.createTextNode( tweetLabel ) );\n\t\t\t\t\tbtn.classList.add( 'wp-block-bu-clicktotweet-action' );\n\t\t\t\t\tbtn.classList.add( 'js-wp-block-clicktotweet-action' );\n\t\t\t\t\ttheBlock.element.appendChild( btn );\n\n\t\t\t\t\t// Store reference to the btn.\n\t\t\t\t\ttheBlock.btn = btn;\n\t\t\t\t}\n\n\t\t\t\t// If we have a button element, setup click handler\n\t\t\t\t// to open Tweet window.\n\t\t\t\tif ( btn ) {\n\t\t\t\t\tbtn.addEventListener( \"click\", function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\topenTweet( theBlock.tweet_text );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t};\n\n\t/*\n\tOpens a small window with\n\tthe Twitter Link Sharing Tool open and\n\tpasses the text of the tweet and url\n\tof the post\tto Twitter.\n\t*/\n\tvar openTweet = function( text ) {\n\t\tvar tweetedLink = window.location.href;\n\n \t\twindow.open(\n \t\t\t\"http://twitter.com/intent/tweet?url=\" + tweetedLink +\n \t\t\t\"&text=\" + text +\n \t\t\t\"&\",\n \t\t\t\"twitterwindow\",\n \t\t\t\"height=450, width=550, toolbar=0, location=0, menubar=0, directories=0, scrollbars=0\"\n \t\t);\n\n\t};\n\n\t/*\n\tHelper function to set the Button text\n\tto a new value on new and existing blocks.\n\t */\n\tvar setButtonText = function( str ) {\n\t\ttweetLabel = str;\n\n\t\ttweetBlocks.forEach( function( theBlock, item ) {\n\t\t\tif( theBlock.btn ) {\n\t\t\t\ttheBlock.btn.innerText = tweetLabel;\n\t\t\t}\n\t\t});\n\t};\n\n\tvar tweetInit = function() {\n\t\t//find the elements\n\t\tfindElements();\n\n\t\t//setup handlers\n\t\tsetupHandlers();\n\t};\n\n\t//start on dom ready (ie8+)\n\tdocument.addEventListener( \"DOMContentLoaded\", function() {\n \t\ttweetInit();\n\n\t});\n\n\treturn {\n\t\tgettweetBlocks: function() {\n\t\t\treturn tweetBlocks;\n\t\t},\n\t\tsettweetButtonText: function( str ) {\n\t\t\tsetButtonText( str );\n\t\t}\n\t};\n})();\n","/**\n * BLOCK: collapsible-control\n *\n * A block to toggle collapsible blocks on the page\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.collapsibleControl = ( function() {\n\n\t// Store all Control blocks\n\tvar collapsibleControlBlocks = [];\n\tvar allCollapsibleBlocks = [];\n\tvar allBlocksOpen = false;\n\tvar collapsibleOpenClass = 'is-open';\n\tvar collapsibleCloseClass = 'is-closed';\n\n\t/**\n\t * Open or close a group of collapsible blocks\n\t *\n\t * @param array collapsible blocks\n\t * @param bool true to open set of collapsible blocks, false to close\n\t */\n\tvar controlCollapsibleBlocks = function( collapsibleBlocks, open ) {\n\n\t\tif ( open === undefined ) {\n\t\t\topen = true;\n\t\t}\n\n\t\tcollapsibleBlocks.forEach( function( collapsible, i ) {\n\t\t\tconst container = collapsible.container;\n\t\t\tconst toggle = collapsible.toggle;\n\t\t\tconst panel = collapsible.panel;\n\n\t\t\tif ( open ) {\n\t\t\t\tcontainer.classList.add( collapsibleOpenClass );\n\t\t\t\tcontainer.classList.remove( collapsibleCloseClass );\n\t\t\t\ttoggle.setAttribute( 'aria-expanded', true );\n\t\t\t\tpanel.setAttribute( 'aria-hidden', false );\n\t\t\t} else {\n\t\t\t\tcontainer.classList.remove( collapsibleOpenClass );\n\t\t\t\tcontainer.classList.add( collapsibleCloseClass );\n\t\t\t\ttoggle.setAttribute( 'aria-expanded', false );\n\t\t\t\tpanel.setAttribute( 'aria-hidden', true );\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Toggle all Collapsible blocks\n\t */\n\tvar toggleAll = function( control ) {\n\n\t\tif ( 0 === allCollapsibleBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontrolCollapsibleBlocks( allCollapsibleBlocks, !allBlocksOpen );\n\t\tallBlocksOpen = ( allBlocksOpen ) ? false : true;\n\t};\n\n\t/**\n\t * Toggle Collapsible blocks in control's group\n\t */\n\tvar toggleGroup = function( control ) {\n\t\tconst groupIsOpen = control.groupIsOpen;\n\t\tconst collapsibleBlocks = control.collapsibleBlocks\n\n\t\tcontrolCollapsibleBlocks( collapsibleBlocks, !groupIsOpen );\n\t\tcontrol.groupIsOpen = ( groupIsOpen ) ? false : true;\n\t};\n\n\t/**\n\t * Find all Collapsible blocks on a page\n\t */\n\tvar findAllCollapsibleBlocks = function() {\n\t\tvar containers = document.querySelectorAll( '.js-wp-block-bu-collapsible' );\n\n\t\t// Don't coninue if no Collapsible blocks exist\n\t\tif ( containers.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainers.forEach( function( element, i ) {\n\t\t\tvar block = {};\n\n\t\t\tblock.container = element;\n\t\t\tblock.toggle = element.querySelector( '.js-bu-block-collapsible-toggle' );\n\t\t\tblock.panel = element.querySelector( '.js-bu-block-collapsible-content' );\n\t\t\tallCollapsibleBlocks.push( block );\n\t\t} );\n\n\t};\n\n\t/**\n\t * Return all Collapsible blocks in the group with a Control\n\t *\n\t * @param object control\n\t *\n\t * @return array list of all collapsible blocks in group\n\t */\n\tvar getGroupCollapsibleBlocks = function( control ) {\n\n\t\tvar blocks = [];\n\t\tvar group = control.closest( '.wp-block-group' );\n\t\tif ( ! group ) {\n\t\t\treturn blocks;\n\t\t}\n\t\tvar containers = group.querySelectorAll( '.js-wp-block-bu-collapsible' );\n\n\t\tcontainers.forEach( function( element, i ) {\n\t\t\tvar block = {};\n\n\t\t\tblock.container = element;\n\t\t\tblock.toggle = element.querySelector( '.js-bu-block-collapsible-toggle' );\n\t\t\tblock.panel = element.querySelector( '.js-bu-block-collapsible-content' );\n\t\t\tblocks.push( block );\n\t\t} );\n\n\t\treturn blocks;\n\t}\n\n\t/**\n\t * Find all Controls and Collapsible blocks\n\t */\n\tvar findElements = function() {\n\n\t\tvar controls = document.querySelectorAll( '.bu-collapsible-control-toggle' );\n\t\tvar allCollapsibleBlocksFound = false;\n\n\t\t// Don't coninue if no Controls are found\n\t\tif ( controls.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Store all controls\n\t\tcontrols.forEach( function( control, i ) {\n\t\t\tvar block = {};\n\n\t\t\tblock.toggle = control;\n\n\t\t\t// Check if Control targets all blocks or blocks in its group\n\t\t\tif ( control.classList.contains( 'js-bu-collapsible-control-target-group' ) ) {\n\t\t\t\tblock.targetGroup = true;\n\t\t\t\tblock.collapsibleBlocks = getGroupCollapsibleBlocks( control );\n\t\t\t\tblock.groupIsOpen = false;\n\t\t\t} else {\n\t\t\t\tblock.targetGroup = false;\n\n\t\t\t\tif ( ! allCollapsibleBlocksFound ) {\n\t\t\t\t\tfindAllCollapsibleBlocks();\n\t\t\t\t}\n\n\t\t\t\tallCollapsibleBlocksFound = true;\n\t\t\t}\n\n\t\t\tcollapsibleControlBlocks.push( block );\n\t\t} );\n\n\t};\n\n\t/**\n\t * Set up handlers, aria, and other functionality\n\t */\n\tvar setupCollapsibleControlBlocks = function() {\n\t\tif ( collapsibleControlBlocks.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcollapsibleControlBlocks.forEach( function( control, i ) {\n\t\t\tconst toggle = control.toggle;\n\t\t\tconst targetGroup = control.targetGroup;\n\n\t\t\ttoggle.addEventListener( 'click', function( e ) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif ( targetGroup ) {\n\t\t\t\t\ttoggleGroup( control );\n\t\t\t\t} else {\n\t\t\t\t\ttoggleAll( control );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t};\n\n\t/**\n\t * Init\n\t */\n\tvar collapsibleControlInit = function() {\n\t\tfindElements();\n\t\tsetupCollapsibleControlBlocks();\n\t};\n\n\t// Start things on dom ready.\n\tdocument.addEventListener( \"DOMContentLoaded\", function() {\n\t\tcollapsibleControlInit();\n\t} );\n\n} )();\n","/**\n * BLOCK: Collapsible\n *\n * An accordian block to display content\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.collapsible = ( function() {\n\n\t// Store all collapsible block\n\tvar collapsibleBlocks = [];\n\tvar collapsibleOpenClass = 'is-open';\n\tvar collapsibleClosedClass = 'is-closed';\n\tvar eventOpen = new CustomEvent('bu-blocks-collapsible-open');\n\tvar eventClose = new CustomEvent('bu-blocks-collapsible-close');\n\n\n\n\n\t/**\n\t * Check if a Collapsible block is set to open by default by user.\n\t *\n\t * @param object collapsible block\n\t * @return bool\n\t */\n\tvar isOpenDefault = function( collapsible ) {\n\t\tconst container = collapsible.container;\n\n\t\tif ( 'true' === container.getAttribute(\"data-default-open\") ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t/**\n\t * Check if a Collapsible block is open.\n\t *\n\t * @param object collapsible block\n\t * @return bool\n\t */\n\tvar isOpen = function( collapsible ) {\n\t\tconst container = collapsible.container;\n\n\t\tif ( container.classList.contains ( collapsibleOpenClass ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t/**\n\t * Open Collapsible block\n\t *\n\t * @param object collapsible block\n\t */\n\tvar openCollapsible = function( collapsible ) {\n\t\tconst container = collapsible.container;\n\t\tconst toggle = collapsible.toggle;\n\t\tconst panel = collapsible.panel;\n\n\t\tcontainer.classList.add( collapsibleOpenClass );\n\t\tcontainer.classList.remove( collapsibleClosedClass );\n\n\t\ttoggle.setAttribute( 'aria-expanded', true );\n\t\tpanel.setAttribute( 'aria-hidden', false );\n\n\t\tif ( container.classList.contains( 'is-style-preview' ) ) {\n\t\t\ttoggle.innerHTML = toggle.getAttribute(\"data-close-text\");\n\t\t}\n\t\t//dispatch the event on the dom element\n\t\tcontainer.dispatchEvent( eventOpen );\n\t};\n\n\t/**\n\t * Close Collapsible block\n\t *\n\t * @param object collapsible block\n\t */\n\tvar closeCollapsible = function( collapsible ) {\n\t\tconst container = collapsible.container;\n\t\tconst toggle = collapsible.toggle;\n\t\tconst panel = collapsible.panel;\n\n\t\tcontainer.classList.remove( collapsibleOpenClass );\n\t\tcontainer.classList.add( collapsibleClosedClass );\n\t\ttoggle.setAttribute( 'aria-expanded', false );\n\t\tpanel.setAttribute( 'aria-hidden', true );\n\n\t\tif ( container.classList.contains( 'is-style-preview' ) ) {\n\t\t\ttoggle.innerHTML = toggle.getAttribute(\"data-open-text\");\n\t\t}\n\t\t//dispatch the event on the dom element\n\t\tcontainer.dispatchEvent( eventClose );\n\t};\n\n\t/**\n\t * Toggle collapsible block\n\t *\n\t * @param element collapsible block\n\t */\n\tvar toggleCollapsible = function( collapsible ) {\n\t\tif ( isOpen( collapsible ) ) {\n\t\t\tcloseCollapsible( collapsible );\n\t\t} else {\n\t\t\topenCollapsible( collapsible );\n\t\t}\n\t};\n\n\t/**\n\t * Find all Collapsible blocks\n\t */\n\tvar findElements = function() {\n\t\tvar containers = document.querySelectorAll( '.js-wp-block-bu-collapsible' );\n\n\t\t// Don't coninue if no Collapsible blocks exist\n\t\tif ( containers.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainers.forEach( function( element, i ) {\n\t\t\tvar block = {};\n\n\t\t\tblock.container = element;\n\t\t\tblock.toggle = element.querySelector( '.js-bu-block-collapsible-toggle' );\n\t\t\tblock.panel = element.querySelector( '.js-bu-block-collapsible-content' );\n\t\t\tcollapsibleBlocks.push( block );\n\t\t} );\n\t};\n\n\t/**\n\t * Set up handlers, aria, and other functionality\n\t */\n\tvar setupCollapsibleBlocks = function() {\n\t\tif ( collapsibleBlocks.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcollapsibleBlocks.forEach( function( collapsible, i ) {\n\t\t\tconst container = collapsible.container;\n\t\t\tconst toggle = collapsible.toggle;\n\t\t\tconst panel = collapsible.panel;\n\n\t\t\t// Add toggle event\n\t\t\ttoggle.addEventListener( 'click', function( e ) {\n\t\t\t\te.preventDefault();\n\t\t\t\ttoggleCollapsible( collapsible );\n\t\t\t} );\n\n\t\t\t// Set ARIA attributes\n\t\t\ttoggle.setAttribute( 'aria-controls', panel.id );\n\t\t\tpanel.setAttribute( 'aria-labelledby', toggle.id );\n\n\t\t\t// Setup initial state of each block.\n\t\t\tif ( isOpenDefault( collapsible ) ) {\n\t\t\t\topenCollapsible( collapsible );\n\t\t\t} else {\n\t\t\t\tcloseCollapsible( collapsible );\n\t\t\t}\n\n\t\t\tif ( isOpen( collapsible ) ) {\n\t\t\t\ttoggle.setAttribute( 'aria-expanded', true );\n\t\t\t\tpanel.setAttribute( 'aria-hidden', false );\n\t\t\t} else {\n\t\t\t\ttoggle.setAttribute( 'aria-expanded', false );\n\t\t\t\tpanel.setAttribute( 'aria-hidden', true );\n\t\t\t}\n\t\t} );\n\t};\n\n\t/**\n\t * Init\n\t */\n\tvar collapsibleInit = function() {\n\t\tfindElements();\n\t\tsetupCollapsibleBlocks();\n\t};\n\n\t// Start things on dom ready.\n\tdocument.addEventListener( \"DOMContentLoaded\", function() {\n\t\tcollapsibleInit();\n\t});\n\n\treturn {\n\t\tgetcollapsibleBlocks: function() {\n\t\t\treturn collapsibleBlocks;\n\t\t},\n\t\ttoggleCollapsible: function( collapsible ) {\n\t\t\tif( collapsible ) {\n\t\t\t\ttoggleCollapsible( collapsible );\n\t\t\t}\n\t\t}\n\t};\n\n} )();\n","/**\n * BLOCK: Drawer\n *\n * A drawer block that provides a callout and expandable\n * content section that opens within the flow of the page.\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.drawer = ( function() {\n\tvar drawerBlocks = []; //stores all of our found blocks\n\tvar $body = document.getElementsByTagName( 'body' )[0]; //target body tag\n\tvar eventOpen = new CustomEvent( 'bu-blocks-drawer-open' );\n\tvar eventClose = new CustomEvent( 'bu-blocks-drawer-close' );\n\n\tvar toggleDrawer = function( drawer ) {\n\n\t\t// Using an if statement to check the class\n\t\tif ( drawer.classList.contains( 'show-drawer' ) ) {\n\t\t\tdrawer.classList.remove( 'show-drawer' );\n\t\t\t//dispatch the event on the drawer dom element\n\t\t\tdrawer.dispatchEvent( eventClose );\n\t\t} else {\n\t\t\tdrawer.classList.add( 'show-drawer' );\n\t\t\t//dispatch the event on the drawer dom element\n\t\t\tdrawer.dispatchEvent( eventOpen );\n\t\t}\n\t};\n\n\tvar findElements = function() {\n\t\t//find all the blocks\n\t\tvar elements = document.querySelectorAll( '.js-bu-block-drawer' );\n\t\t//if found\n\t\tif ( elements.length > 0 ) {\n\t\t\t//for each found block do stuff\n\t\t\tfor ( var i = 0; i < elements.length; i++ ) {\n\n\t\t\t\tvar block = {};\n\n\t\t\t\t//get first returned drawer content element\n\t\t\t\tblock.drawer = elements[i];\n\t\t\t\t//get all matched trigger btns\n\t\t\t\tblock.button = elements[i].querySelectorAll( '.js-bu-block-drawer-open' );\n\t\t\t\t//get first returned overlay element\n\t\t\t\tblock.close = elements[i].querySelector( '.js-bu-block-drawer-close' );\n\n\t\t\t\t//for each one found store as object in the array\n\t\t\t\tdrawerBlocks.push( block );\n\t\t\t}\n\t\t}\n\t};\n\n\tvar setupHandlers = function() {\n\t\tif ( drawerBlocks.length > 0 ) {\n\t\t\tdrawerBlocks.forEach( function( thisDrawer, item ) {\n\n\t\t\t\t//some drawer blocks may have more than one trigger btn\n\t\t\t\t//so loop through all matched to setup events\n\t\t\t\tthisDrawer.button.forEach( function( button, index ) {\n\t\t\t\t\t//for each btn we find, add an event handler\n\t\t\t\t\tbutton.addEventListener( \"click\", function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\ttoggleDrawer( thisDrawer.drawer );\n\t\t\t\t\t});\n\n\t\t\t\t});\n\n\t\t\t\tthisDrawer.close.addEventListener( \"click\", function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\ttoggleDrawer( thisDrawer.drawer );\n\t\t\t\t});\n\n\t\t\t});\n\t\t}\n\t};\n\n\tvar drawerInit = function() {\n\t\t//find the elements\n\t\tfindElements();\n\n\t\t//setup handlers\n\t\tsetupHandlers();\n\t};\n\n\t//start on dom ready (ie8+)\n\tdocument.addEventListener( \"DOMContentLoaded\", function() {\n \t\tdrawerInit();\n\n\t});\n\n\treturn {\n\t\tgetdrawerBlocks: function() {\n\t\t\treturn drawerBlocks;\n\t\t},\n\t\ttoggleDrawer: function( drawer ) {\n\t\t\tif( drawer ) {\n\t\t\t\ttoggleDrawer( drawer );\n\t\t\t}\n\t\t}\n\t};\n})();\n","/**\n * BLOCK: Modal\n *\n * A modal block that provides a callout and expandable\n * overlay content section that opens on top of the page content.\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.modal = (function() {\n\tvar modalBlocks = [];\n\tvar $body = document.getElementsByTagName('body')[0];\n\tvar eventOpen = new CustomEvent('bu-blocks-modal-open');\n\tvar eventClose = new CustomEvent('bu-blocks-modal-close');\n\n\tvar lockScroll = function() {\n\t\t$body.classList.add('bu-blocks-modal-noscroll');\n\t};\n\n\tvar unlockScroll = function() {\n\t\t$body.classList.remove('bu-blocks-modal-noscroll');\n\t}\n\n\tvar toggleModal = function(overlay) {\n\t\t// Using an if statement to check the class\n\t\tif (overlay.classList.contains('show-overlay')) {\n\t\t\toverlay.classList.remove('show-overlay');\n\t\t\t//dispatch the event on the overlay dom element\n\t\t\toverlay.dispatchEvent( eventClose );\n\t\t\tunlockScroll();\n\t\t} else {\n\t\t\toverlay.classList.add('show-overlay');\n\t\t\t//dispatch the event on the overlay dom element\n\t\t\toverlay.dispatchEvent( eventOpen );\n\t\t\tlockScroll();\n\t\t}\n\t};\n\n\tvar findElements = function() {\n\t\t//find all the blocks\n\t\tvar elements = document.querySelectorAll( '.js-bu-block-modal' );\n\t\t//if found\n\t\tif (elements.length > 0) {\n\t\t\t//for each found block do stuff\n\t\t\tfor ( var i = 0; i < elements.length; i++ ) {\n\n\t\t\t\tvar block = {};\n\n\t\t\t\t//get first returned overlay element\n\t\t\t\tblock.overlay = elements[i].querySelector( '.js-bu-block-modal-overlay' );\n\t\t\t\t//get all matched trigger btns\n\t\t\t\tblock.button = elements[i].querySelectorAll( '.js-bu-block-modal-trigger-overlay' );\n\t\t\t\t//get first returned overlay element\n\t\t\t\tblock.close = elements[i].querySelector( '.js-bu-block-modal-overlay-close' );\n\n\t\t\t\t//for each one found store as object in the array\n\t\t\t\tmodalBlocks.push( block );\n\t\t\t}\n\t\t}\n\t};\n\n\tvar setupHandlers = function() {\n\t\tif (modalBlocks.length > 0) {\n\t\t\tmodalBlocks.forEach( function( thisModal, item ) {\n\n\t\t\t\t//some modals may have more than one trigger btn\n\t\t\t\t//so loop through all matched to setup events\n\t\t\t\tthisModal.button.forEach( function( button, index ) {\n\t\t\t\t\t//for each btn we find, add an event handler\n\t\t\t\t\tbutton.addEventListener( \"click\", function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\ttoggleModal( thisModal.overlay );\n\t\t\t\t\t});\n\n\t\t\t\t});\n\t\t\t\tthisModal.close.addEventListener( \"click\", function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\ttoggleModal( thisModal.overlay );\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t};\n\n\tvar modalInit = function() {\n\t\t//find the elements\n\t\tfindElements();\n\n\t\t//setup handlers\n\t\tsetupHandlers();\n\t};\n\n\t//start on dom ready (ie8+)\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\n\t\tmodalInit();\n\n\t});\n\n\treturn {\n\t\tgetmodalBlocks: function() {\n\t\t\treturn modalBlocks;\n\t\t},\n\t\ttoggleModal: function( overlay ) {\n\t\t\tif( overlay ) {\n\t\t\t\ttoggleModal( overlay );\n\t\t\t}\n\t\t}\n\t};\n})();\n","/**\n * BLOCK: Photoessay\n *\n * A photo layout row block.\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.photoessay = (function() {\n\tvar scrollTop = 0;\n\tvar photoEssayBlocks = []; //stores all of our found blocks\n\tvar photoEssayGroups = [];\n\tvar photoEssayOverlay = false;\n\tvar photoEssayFigures = {};\n\tvar overlayActiveGroup = false;\n\tvar $html = document.getElementsByTagName( 'html' )[0]; //target html tag\n\tvar $body = document.getElementsByTagName( 'body' )[0]; //target body tag\n\n\n\t/*\n\t* Find all photo essay blocks\n\t* and store in an array.\n\t*\n\t* For each found get all of the DOM\n\t* elements we'll need\n\t*\n\t*/\n\tvar findElements = function() {\n\t\t//find all the blocks\n\t\tvar findBlocks = document.querySelectorAll( '.js-block-editorial-photoessay' );\n\t\tvar elements = [].slice.call( findBlocks );\n\n\t\t//if found\n\t\tif ( elements.length > 0 ) {\n\t\t\t//for each found block do stuff\n\t\t\tfor ( var i = 0; i < elements.length; i++ ) {\n\n\t\t\t\tvar group = Array();\n\n\t\t\t\tvar block = {};\n\t\t\t\tblock.element = elements[i];\n\n\t\t\t\t//get first returned social photo block element\n\t\t\t\tgroup.push( block );\n\n\n\t\t\t\tvar siblings = getSiblings( elements[i], '.js-block-editorial-photoessay' );\n\n\t\t\t\tif ( siblings.length > 0 ) {\n\n\t\t\t\t\t//add siblings to group.\n\t\t\t\t\tsiblings.forEach( function( sibling, index ) {\n\t\t\t\t\t\tvar sib = {};\n\t\t\t\t\t\tsib.element = sibling;\n\t\t\t\t\t\tgroup.push( sib );\n\t\t\t\t\t});\n\n\t\t\t\t\t//reduce elements array by removing the siblings\n\t\t\t\t\telements.splice(i, siblings.length);\n\n\t\t\t\t}\n\n\t\t\t\t//for each one found store as object in the array\n\t\t\t\tphotoEssayGroups.push( group );\n\t\t\t}\n\n\n\n\n\n\t\t}\n\t};\n\n\n\t/*\n\t* For Each Photo Essay Block Setup:\n\t*\n\t* Setup the Overlay Container DOM elements.\n\t*\n\t* Find each Figure inside each block inside each group and build\n\t* an array for each \"group\" with all of the figures in order so we\n\t* can later traverse.\n\t*\n\t* Then call setupHandlers() to setup\n\t* remaining event handlers for opening the overlay, etc.\n\t*\n\t*/\n\tvar setupBlocks = function() {\n\t\tif ( photoEssayGroups.length > 0 ) {\n\n\t\t\tphotoEssayOverlay = {};\n\t\t\tphotoEssayOverlay.container = appendOverlay();\n\t\t\tphotoEssayOverlay.closeBtn = photoEssayOverlay.container.querySelector( '.js-block-editorial-photoessay-overlay-close' );\n\t\t\tphotoEssayOverlay.prevBtn = photoEssayOverlay.container.querySelector( '.js-block-editorial-photoessay-overlay-prev' );\n\t\t\tphotoEssayOverlay.nextBtn = photoEssayOverlay.container.querySelector( '.js-block-editorial-photoessay-overlay-next' );\n\t\t\tphotoEssayOverlay.photoContainer = photoEssayOverlay.container.querySelector( '.wp-block-editorial-photoessay-photocontainer' );\n\n\n\t\t\t// Foreach Group let's assign an id\n\t\t\t// and then traverse the blocks to find all of the\n\t\t\t// figure elements and push them into a global object.\n\t\t\tphotoEssayGroups.forEach( function( group, index ) {\n\n\t\t\t\t// Create an id for each group.\n\t\t\t\tvar groupID = \"photoEssay_\"+index;\n\n\t\t\t\t// Add an object with a key of the group id.\n\t\t\t\tphotoEssayFigures[groupID] = Array();\n\n\t\t\t\t//group.figures = Array();\n\t\t\t\t// Loop through each Group and iterate on the blocks.\n\t\t\t\tgroup.forEach( function( block, item ) {\n\n\t\t\t\t\t// Find all of the Figure elements for the block as\n\t\t\t\t\t// each photoessay block can support multiple photos.\n\t\t\t\t\tblock.figures = block.element.querySelectorAll( 'figure' );\n\n\t\t\t\t\t// For each Figure element push it into the global object\n\t\t\t\t\t// under the key for that group.\n\t\t\t\t\tblock.figures.forEach( function( figure, item ) {\n\t\t\t\t\t\tphotoEssayFigures[groupID].push( figure );\n\t\t\t\t\t});\n\n\t\t\t\t});\n\n\t\t\t});\n\n\t\t\t// Setup this block.\n\t\t\tsetupHandlers();\n\t\t}\n\t};\n\n\n\t/*\n\t* Setup Handler for clicking on images/figure elements\n\t* and opening the overlay with the selected figure (image)\n\t* element.\n\t*/\n\tvar openPhotoHandler = function( figure, group ) {\n\t\t// setup click handler\n\t\tfigure.addEventListener( 'click', function(e) {\n\t\t\te.preventDefault();\n\n\t\t\t//Set as Active Group\n\t\t\toverlayActiveGroup = photoEssayFigures[group];\n\n\t\t\t// Add the selected figure to the overlay\n\t\t\toverlayAddContent( figure );\n\n\t\t\t// Open the Photo Overlay.\n\t\t\toverlayToggle();\n\t\t});\n\t};\n\n\t/*\n\t* Setup remaining Handlers\n\t* for Progress Bar and Audio Complete Callbacks\n\t*\n\t* These use callbacks set in the global Audio API\n\t*/\n\tvar setupHandlers = function() {\n\n\t\tfor ( group in photoEssayFigures ) {\n\n\t\t\tphotoEssayFigures[group].forEach( function( figure, item ) {\n\t\t\t\topenPhotoHandler( figure, group );\n\t\t\t});\n\n\t\t}\n\n\t\tphotoEssayOverlay.closeBtn.addEventListener( 'click', function(e) {\n\t\t\te.preventDefault();\n\t\t\toverlayToggle();\n\t\t});\n\n\t\tfunction nextSharedAction() {\n\t\t\tvar next = nextPhoto();\n\t\t\tremoveActiveFigure();\n\t\t\toverlayAddContent( overlayActiveGroup[next] );\n\t\t}\n\n\t\tphotoEssayOverlay.nextBtn.addEventListener( 'click', function(e) {\n\t\t\te.preventDefault();\n\t\t\tnextSharedAction();\n\t\t});\n\n\t\tfunction prevSharedAction() {\n\t\t\tvar prev = prevPhoto();\n\t\t\tremoveActiveFigure();\n\t\t\toverlayAddContent( overlayActiveGroup[prev] );\n\t\t}\n\n\t\tphotoEssayOverlay.prevBtn.addEventListener( 'click', function(e) {\n\t\t\te.preventDefault();\n\t\t\tprevSharedAction();\n\t\t});\n\n\t\tdocument.onkeydown = checkKey;\n\n\t\tfunction checkKey(e) {\n\t\t\te = e || window.event;\n\t\t\tif (e.keyCode == '39') {\n\t\t\t\tnextSharedAction();\n\t\t\t}\n\t\t\telse if (e.keyCode == '37') {\n\t\t\t\tprevSharedAction();\n\t\t\t}\n\t\t}\n\n\t};\n\n\n\n\t/*\n\t* Next Photo\n\t*\n\t* Find the next photo in the\n\t* currently active group if any exist.\n\t*\n\t* Return the index to that item in the array.\n\t*/\n\tvar nextPhoto = function() {\n\t\tvar next = false;\n\t\tvar last = overlayActiveGroup.length -1;\n\n\t\tvar current = overlayActiveGroup.findIndex( function( element ){\n\t\t\treturn element.classList.contains( 'active' );\n\t\t});\n\n\t\tif ( current < last ) {\n\t\t\tnext = current + 1;\n\t\t} else if ( current === last ) {\n\t\t\tnext = 0;\n\t\t}\n\n\t\treturn next;\n\n\t};\n\n\n\t/*\n\t* Previous Photo\n\t*\n\t* Find the previous photo in the\n\t* currently active group if any exist.\n\t*\n\t* Return the index to that item in the array.\n\t*/\n\tvar prevPhoto = function() {\n\t\tvar prev = false;\n\t\tvar last = overlayActiveGroup.length -1;\n\n\t\tvar current = overlayActiveGroup.findIndex( function( element ){\n\t\t\treturn element.classList.contains( 'active' );\n\t\t});\n\n\t\tif ( current > 0 ) {\n\t\t\tprev = current - 1;\n\t\t} else if ( current === 0 ) {\n\t\t\tprev = last;\n\t\t}\n\n\t\treturn prev;\n\n\t};\n\n\n\t/*\n\t* Open/Close Overlay\n\t*\n\t* Additionally sets up an event listener to\n\t* monitor scroll events when the overlay is open.\n\t*/\n\tvar overlayToggle = function() {\n\n\t\tif( $html.classList.contains( 'show-photo-essay-overlay' ) ) {\n\t\t\t// Closing: Remove event listener.\n\t\t\tdocument.removeEventListener( 'scroll', scrollEvent );\n\t\t} else {\n\t\t\t// Opening: Add Event Listener.\n\t\t\tdocument.addEventListener( 'scroll', scrollEvent );\n\n\t\t\t// Set current ScrollTop position.\n\t\t\tscrollTop = $html.scrollTop;\n\t\t}\n\n\t\t//Toggle the show-overlay class.\n\t\toverlayClass();\n\t};\n\n\n\t/*\n\t* Event Handler for scroll event\n\t*\n\t* Handles closing the overlay if the user\n\t* intends to scroll \"out\" of it and continue reading.\n\t*\n\t* Serves as an alternative to the close button.\n\t*/\n\tvar scrollEvent = function( e ) {\n\t\tif( $html.scrollTop - scrollTop > 250 ) {\n\t\t\t//console.log(\"close\");\n\t\t\t// Reset scrollTop.\n\t\t\tscrollTop = 0;\n\n\t\t\t// Remove Event Listener until next overlay is open.\n\t\t\tdocument.removeEventListener( 'scroll', scrollEvent );\n\n\t\t\t// Close Overlay.\n\t\t\toverlayClass();\n\t\t}\n\t};\n\n\n\t/*\n\t* Toggle the \"show\" class for the overlay\n\t* element by toggling the class on the\n\t* HTML tag.\n\t*/\n\tvar overlayClass = function() {\n\t\tif ( overlayActiveGroup.length > 1 ) {\n\t\t\t$html.classList.toggle( 'photo-essay-overlay-has-multiple' );\n\t\t}\n\t\t$html.classList.toggle( 'show-photo-essay-overlay' );\n\t};\n\n\n\t/*\n\t* Remove all \"active\" classes on any\n\t* figure element in the active group.\n\t*/\n\tvar removeActiveFigure = function() {\n\t\tfor (var i = 0; i < overlayActiveGroup.length; i++) {\n\t\t\tif (overlayActiveGroup[i].matches('.active')) {\n\t\t\t\toverlayActiveGroup[i].classList.remove('active');\n\t\t\t}\n\t\t}\n\t};\n\n\n\t/*\n\t* Add clone of image & caption figure\n\t* to the overlay component\n\t*\n\t* @param figure the figure to clone and add.\n\t*/\n\tvar overlayAddContent = function( figure ) {\n\n\t\tfigure.classList.add(\"active\");\n\n\t\t// Clone with child elements.\n\t\tvar newFigure = figure.cloneNode( true );\n\n\t\t// Clean anything that might exist.\n\t\tphotoEssayOverlay.photoContainer.innerHTML = '';\n\n\t\t// Append to overlay container.\n\t\tphotoEssayOverlay.photoContainer.appendChild( newFigure );\n\n\t\t//Wrap the img tag in a span for better styling.\n\t\twrapElement( photoEssayOverlay.photoContainer.querySelector( 'img' ), document.createElement( 'span' ) );\n\t};\n\n\n\t/*\n\t* Add Overlay to the body\n\t*\n\t*/\n\tvar appendOverlay = function() {\n\t\tvar element = document.createElement( 'div' );\n\n\t\tvar html = overlayTemplate();\n\t\telement.innerHTML = html;\n\n\t\treturn $body.appendChild( element );\n\t};\n\n\t/*\n\t* Wrap an element in some html:\n\t*\n\t* example: wrapElement(document.querySelector('a.wrap_me'), document.createElement('div'));\n\t*\n\t*/\n\tvar wrapElement = function( el, wrapper ) {\n\t\tel.parentNode.insertBefore( wrapper, el );\n\t\twrapper.appendChild( el );\n\t}\n\n\n\t/*\n\t* Generate the template for the\n\t* Overlay to display larger photos\n\t* in from each photoessay block.\n\t*/\n\tvar overlayTemplate = function() {\n\n\t\tvar html = [\n\t\t\t'

',\n\t\t\t\t'',\n\t\t\t\t'
',\n\t\t\t\t\t'
',\n\t\t\t\t\t'
',\n\t\t\t\t'
',\n\t\t\t'
',\n\t\t].join(\"\\n\");\n\n\t\treturn html;\n\t};\n\n\t/*\n\t* Get Siblings of the passed element until\n\t* selector doesn't match.\n\t*\n\t* Returns Array of sibling elements.\n\t*/\n\tvar getSiblings = function ( elem, selector ) {\n\n\t\t// Setup siblings array\n\t\tvar siblings = [];\n\n\t\t// Get the next sibling element\n\t\telem = elem.nextElementSibling;\n\n\t\t// As long as a sibling exists\n\t\twhile (elem) {\n\n\t\t\t// If selector doesn't match, bail\n\t\t\tif ( ! elem.matches(selector) ) break;\n\n\t\t\t// Otherwise, push it to the siblings array\n\t\t\tsiblings.push(elem);\n\n\t\t\t// Get the next sibling element\n\t\t\telem = elem.nextElementSibling;\n\n\t\t}\n\n\t\treturn siblings;\n\n\t};\n\n\n\tvar init = function() {\n\t\t//find the elements\n\t\tfindElements();\n\n\t\t//setup blocks\n\t\tsetupBlocks();\n\t};\n\n\t//start on dom ready (ie8+)\n\tdocument.addEventListener( \"DOMContentLoaded\", function() {\n\t\tinit();\n\n\t});\n\n\treturn {\n\t\tgetBlocks: function() {\n\t\t\treturn photoEssayBlocks;\n\t\t},\n\t\tgetActiveGroup: function() {\n\t\t\treturn overlayActiveGroup;\n\t\t}\n\t};\n})();\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Frontend JS for BU Blocks\n *\n */\n\nimport './blocks-frontend-polyfills';\n\n// Import the bu_blocks object that all data and public functions are stored on.\nimport bu_blocks from './blocks-frontend-tools';\n\n// Import the frontend JS for each block so it is enqueued together into one file.\nimport './blocks/clicktotweet/frontend';\nimport './blocks/collapsible/frontend';\nimport './blocks/collapsible-control/frontend';\nimport './blocks/drawer/frontend';\nimport './blocks/modal/frontend';\nimport './blocks/photoessay/frontend';\n\n// Export bu_blocks object to the window so it's accessible easily for\n// child themes to call public functions or debug.\nwindow.bu_blocks = bu_blocks;\n"],"names":["window","CustomEvent","event","params","bubbles","cancelable","detail","evt","document","createEvent","initCustomEvent","prototype","Event","Element","matches","msMatchesSelector","webkitMatchesSelector","Array","findIndex","Object","defineProperty","value","predicate","TypeError","o","len","length","thisArg","arguments","k","kValue","call","configurable","writable","closest","s","el","parentElement","parentNode","nodeType","NodeList","forEach","console","info","callback","i","T","O","self","createElement","createElementNS","view","classListProp","protoProp","elemCtrProto","objCtr","strTrim","String","trim","replace","arrIndexOf","indexOf","item","DOMEx","type","message","name","code","DOMException","checkTokenAndGetIndex","classList","token","test","ClassList","elem","trimmedClasses","getAttribute","classes","split","push","_updateClassName","setAttribute","toString","classListProto","classListGetter","Error","contains","add","tokens","l","updated","remove","index","splice","toggle","force","result","method","join","classListPropDesc","get","enumerable","ex","number","undefined","__defineGetter__","testElement","createMethod","original","DOMTokenList","_toggle","bu_blocks","clicktotweet","tweetBlocks","tweetLabel","findElements","elements","querySelectorAll","theBlock","block","element","highlight","querySelector","tweet_text","innerText","setupHandlers","btn","appendChild","createTextNode","addEventListener","e","preventDefault","openTweet","text","tweetedLink","location","href","open","setButtonText","str","tweetInit","gettweetBlocks","settweetButtonText","collapsibleControl","collapsibleControlBlocks","allCollapsibleBlocks","allBlocksOpen","collapsibleOpenClass","collapsibleCloseClass","controlCollapsibleBlocks","collapsibleBlocks","collapsible","container","panel","toggleAll","control","toggleGroup","groupIsOpen","findAllCollapsibleBlocks","containers","getGroupCollapsibleBlocks","blocks","group","controls","allCollapsibleBlocksFound","targetGroup","setupCollapsibleControlBlocks","collapsibleControlInit","collapsibleClosedClass","eventOpen","eventClose","isOpenDefault","isOpen","openCollapsible","innerHTML","dispatchEvent","closeCollapsible","toggleCollapsible","setupCollapsibleBlocks","id","collapsibleInit","getcollapsibleBlocks","drawer","drawerBlocks","$body","getElementsByTagName","toggleDrawer","button","close","thisDrawer","drawerInit","getdrawerBlocks","modal","modalBlocks","lockScroll","unlockScroll","toggleModal","overlay","thisModal","modalInit","getmodalBlocks","photoessay","scrollTop","photoEssayBlocks","photoEssayGroups","photoEssayOverlay","photoEssayFigures","overlayActiveGroup","$html","findBlocks","slice","siblings","getSiblings","sibling","sib","setupBlocks","appendOverlay","closeBtn","prevBtn","nextBtn","photoContainer","groupID","figures","figure","openPhotoHandler","overlayAddContent","overlayToggle","nextSharedAction","next","nextPhoto","removeActiveFigure","prevSharedAction","prev","prevPhoto","onkeydown","checkKey","keyCode","last","current","removeEventListener","scrollEvent","overlayClass","newFigure","cloneNode","wrapElement","html","overlayTemplate","wrapper","insertBefore","selector","nextElementSibling","init","getBlocks","getActiveGroup"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"bu-blocks-frontend.js","mappings":"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","sources":["webpack://bu-blocks/./src/blocks-frontend-polyfills.js","webpack://bu-blocks/./src/blocks-frontend-tools.js","webpack://bu-blocks/./src/blocks/clicktotweet/frontend.js","webpack://bu-blocks/./src/blocks/collapsible-control/frontend.js","webpack://bu-blocks/./src/blocks/collapsible/frontend.js","webpack://bu-blocks/./src/blocks/drawer/frontend.js","webpack://bu-blocks/./src/blocks/modal/frontend.js","webpack://bu-blocks/./src/blocks/photoessay/frontend.js","webpack://bu-blocks/./src/blocks/slideshow/frontend.js","webpack://bu-blocks/webpack/bootstrap","webpack://bu-blocks/webpack/runtime/compat get default export","webpack://bu-blocks/webpack/runtime/define property getters","webpack://bu-blocks/webpack/runtime/hasOwnProperty shorthand","webpack://bu-blocks/webpack/runtime/make namespace object","webpack://bu-blocks/./src/blocks-frontend.js"],"sourcesContent":["/**\n * Polyfills\n *\n * This was a last-minute inclusion during the original development of BU Blocks\n * to fix some browser compatibility isues. These polyfills may no longer be needed.\n * Additionally, compiling the JS with modern build tools should also help handle this if needed.\n *\n * Todo: test if these polyfills are needed for current browser support.\n */\n\n\n/*\nCustom Event Polyfill\nhttps://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n*/\n(function () {\n\n\tif ( typeof window.CustomEvent === \"function\" ) return false;\n\n\tfunction CustomEvent ( event, params ) {\n\t params = params || { bubbles: false, cancelable: false, detail: null };\n\t var evt = document.createEvent( 'CustomEvent' );\n\t evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );\n\t return evt;\n\t }\n\n\tCustomEvent.prototype = window.Event.prototype;\n\n\twindow.CustomEvent = CustomEvent;\n })();\n\n /*\n .matches() polyfill:\n https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n */\n if (!Element.prototype.matches) {\n\tElement.prototype.matches = Element.prototype.msMatchesSelector ||\n\t\t\t\t\t\t\t\tElement.prototype.webkitMatchesSelector;\n }\n\n // https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n if (!Array.prototype.findIndex) {\n\tObject.defineProperty(Array.prototype, 'findIndex', {\n\t value: function(predicate) {\n\t // 1. Let O be ? ToObject(this value).\n\t\tif (this == null) {\n\t\t throw new TypeError('\"this\" is null or not defined');\n\t\t}\n\n\t\tvar o = Object(this);\n\n\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\t\tvar len = o.length >>> 0;\n\n\t\t// 3. If IsCallable(predicate) is false, throw a TypeError exception.\n\t\tif (typeof predicate !== 'function') {\n\t\t throw new TypeError('predicate must be a function');\n\t\t}\n\n\t\t// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\t\tvar thisArg = arguments[1];\n\n\t\t// 5. Let k be 0.\n\t\tvar k = 0;\n\n\t\t// 6. Repeat, while k < len\n\t\twhile (k < len) {\n\t\t // a. Let Pk be ! ToString(k).\n\t\t // b. Let kValue be ? Get(O, Pk).\n\t\t // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n\t\t // d. If testResult is true, return k.\n\t\t var kValue = o[k];\n\t\t if (predicate.call(thisArg, kValue, k, o)) {\n\t\t\treturn k;\n\t\t }\n\t\t // e. Increase k by 1.\n\t\t k++;\n\t\t}\n\n\t\t// 7. Return -1.\n\t\treturn -1;\n\t },\n\t configurable: true,\n\t writable: true\n\t});\n }\n\n\n // Matches polyfill.\n if (!Element.prototype.matches) {\n\t Element.prototype.matches =\n\t\tElement.prototype.msMatchesSelector ||\n\t\tElement.prototype.webkitMatchesSelector;\n }\n // element.closest() polyfill.\n if (!Element.prototype.closest) {\n\t Element.prototype.closest = function(s) {\n\t\tvar el = this;\n\n\t\tdo {\n\t\t if (Element.prototype.matches.call(el, s)) return el;\n\t\t el = el.parentElement || el.parentNode;\n\t\t} while (el !== null && el.nodeType === 1);\n\t\treturn null;\n\t };\n }\n\n // Foreach NodeList Polyfill for IE.\n if ('NodeList' in window && !NodeList.prototype.forEach) {\n\t console.info('polyfill for IE11');\n\t NodeList.prototype.forEach = function (callback, thisArg) {\n\t\tthisArg = thisArg || window;\n\t\tfor (var i = 0; i < this.length; i++) {\n\t\t callback.call(thisArg, this[i], i, this);\n\t\t}\n\t };\n }\n\n\n // Foreach Polyfill\n // Production steps of ECMA-262, Edition 5, 15.4.4.18\n // Reference: http://es5.github.io/#x15.4.4.18\n if (!Array.prototype.forEach) {\n\n\tArray.prototype.forEach = function(callback/*, thisArg*/) {\n\n\t var T, k;\n\n\t if (this == null) {\n\t\tthrow new TypeError('this is null or not defined');\n\t }\n\n\t // 1. Let O be the result of calling toObject() passing the\n\t // |this| value as the argument.\n\t var O = Object(this);\n\n\t // 2. Let lenValue be the result of calling the Get() internal\n\t // method of O with the argument \"length\".\n\t // 3. Let len be toUint32(lenValue).\n\t var len = O.length >>> 0;\n\n\t // 4. If isCallable(callback) is false, throw a TypeError exception.\n\t // See: http://es5.github.com/#x9.11\n\t if (typeof callback !== 'function') {\n\t\tthrow new TypeError(callback + ' is not a function');\n\t }\n\n\t // 5. If thisArg was supplied, let T be thisArg; else let\n\t // T be undefined.\n\t if (arguments.length > 1) {\n\t\tT = arguments[1];\n\t }\n\n\t // 6. Let k be 0.\n\t k = 0;\n\n\t // 7. Repeat while k < len.\n\t while (k < len) {\n\n\t\tvar kValue;\n\n\t\t// a. Let Pk be ToString(k).\n\t\t// This is implicit for LHS operands of the in operator.\n\t\t// b. Let kPresent be the result of calling the HasProperty\n\t\t// internal method of O with argument Pk.\n\t\t// This step can be combined with c.\n\t\t// c. If kPresent is true, then\n\t\tif (k in O) {\n\n\t\t // i. Let kValue be the result of calling the Get internal\n\t\t // method of O with argument Pk.\n\t\t kValue = O[k];\n\n\t\t // ii. Call the Call internal method of callback with T as\n\t\t // the this value and argument list containing kValue, k, and O.\n\t\t callback.call(T, kValue, k, O);\n\t\t}\n\t\t// d. Increase k by 1.\n\t\tk++;\n\t }\n\t // 8. return undefined.\n\t};\n }\n\n\n //Classlist polyfill\n /*\n * classList.js: Cross-browser full element.classList implementation.\n * 1.1.20170427\n *\n * By Eli Grey, http://eligrey.com\n * License: Dedicated to the public domain.\n * See https://github.com/eligrey/classList.js/blob/master/LICENSE.md\n */\n\n /*global self, document, DOMException */\n\n /*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */\n\n if (\"document\" in self) {\n\n\t// Full polyfill for browsers with no classList support\n\t// Including IE < Edge missing SVGElement.classList\n\tif (!(\"classList\" in document.createElement(\"_\"))\n\t || document.createElementNS && !(\"classList\" in document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\"))) {\n\n\t (function (view) {\n\n\t\t\"use strict\";\n\n\t\tif (!('Element' in view)) return;\n\n\t\tvar\n\t\t classListProp = \"classList\"\n\t\t , protoProp = \"prototype\"\n\t\t , elemCtrProto = view.Element[protoProp]\n\t\t , objCtr = Object\n\t\t , strTrim = String[protoProp].trim || function () {\n\t\t\treturn this.replace(/^\\s+|\\s+$/g, \"\");\n\t\t }\n\t\t , arrIndexOf = Array[protoProp].indexOf || function (item) {\n\t\t\tvar\n\t\t\t i = 0\n\t\t\t , len = this.length\n\t\t\t ;\n\t\t\tfor (; i < len; i++) {\n\t\t\t if (i in this && this[i] === item) {\n\t\t\t\treturn i;\n\t\t\t }\n\t\t\t}\n\t\t\treturn -1;\n\t\t }\n\t\t // Vendors: please allow content code to instantiate DOMExceptions\n\t\t , DOMEx = function (type, message) {\n\t\t\tthis.name = type;\n\t\t\tthis.code = DOMException[type];\n\t\t\tthis.message = message;\n\t\t }\n\t\t , checkTokenAndGetIndex = function (classList, token) {\n\t\t\tif (token === \"\") {\n\t\t\t throw new DOMEx(\n\t\t\t\t\"SYNTAX_ERR\"\n\t\t\t\t, \"An invalid or illegal string was specified\"\n\t\t\t );\n\t\t\t}\n\t\t\tif (/\\s/.test(token)) {\n\t\t\t throw new DOMEx(\n\t\t\t\t\"INVALID_CHARACTER_ERR\"\n\t\t\t\t, \"String contains an invalid character\"\n\t\t\t );\n\t\t\t}\n\t\t\treturn arrIndexOf.call(classList, token);\n\t\t }\n\t\t , ClassList = function (elem) {\n\t\t\tvar\n\t\t\t trimmedClasses = strTrim.call(elem.getAttribute(\"class\") || \"\")\n\t\t\t , classes = trimmedClasses ? trimmedClasses.split(/\\s+/) : []\n\t\t\t , i = 0\n\t\t\t , len = classes.length\n\t\t\t ;\n\t\t\tfor (; i < len; i++) {\n\t\t\t this.push(classes[i]);\n\t\t\t}\n\t\t\tthis._updateClassName = function () {\n\t\t\t elem.setAttribute(\"class\", this.toString());\n\t\t\t};\n\t\t }\n\t\t , classListProto = ClassList[protoProp] = []\n\t\t , classListGetter = function () {\n\t\t\treturn new ClassList(this);\n\t\t }\n\t\t ;\n\t\t// Most DOMException implementations don't allow calling DOMException's toString()\n\t\t// on non-DOMExceptions. Error's toString() is sufficient here.\n\t\tDOMEx[protoProp] = Error[protoProp];\n\t\tclassListProto.item = function (i) {\n\t\t return this[i] || null;\n\t\t};\n\t\tclassListProto.contains = function (token) {\n\t\t token += \"\";\n\t\t return checkTokenAndGetIndex(this, token) !== -1;\n\t\t};\n\t\tclassListProto.add = function () {\n\t\t var\n\t\t\ttokens = arguments\n\t\t\t, i = 0\n\t\t\t, l = tokens.length\n\t\t\t, token\n\t\t\t, updated = false\n\t\t\t;\n\t\t do {\n\t\t\ttoken = tokens[i] + \"\";\n\t\t\tif (checkTokenAndGetIndex(this, token) === -1) {\n\t\t\t this.push(token);\n\t\t\t updated = true;\n\t\t\t}\n\t\t }\n\t\t while (++i < l);\n\n\t\t if (updated) {\n\t\t\tthis._updateClassName();\n\t\t }\n\t\t};\n\t\tclassListProto.remove = function () {\n\t\t var\n\t\t\ttokens = arguments\n\t\t\t, i = 0\n\t\t\t, l = tokens.length\n\t\t\t, token\n\t\t\t, updated = false\n\t\t\t, index\n\t\t\t;\n\t\t do {\n\t\t\ttoken = tokens[i] + \"\";\n\t\t\tindex = checkTokenAndGetIndex(this, token);\n\t\t\twhile (index !== -1) {\n\t\t\t this.splice(index, 1);\n\t\t\t updated = true;\n\t\t\t index = checkTokenAndGetIndex(this, token);\n\t\t\t}\n\t\t }\n\t\t while (++i < l);\n\n\t\t if (updated) {\n\t\t\tthis._updateClassName();\n\t\t }\n\t\t};\n\t\tclassListProto.toggle = function (token, force) {\n\t\t token += \"\";\n\n\t\t var\n\t\t\tresult = this.contains(token)\n\t\t\t, method = result ?\n\t\t\t force !== true && \"remove\"\n\t\t\t :\n\t\t\t force !== false && \"add\"\n\t\t\t;\n\n\t\t if (method) {\n\t\t\tthis[method](token);\n\t\t }\n\n\t\t if (force === true || force === false) {\n\t\t\treturn force;\n\t\t } else {\n\t\t\treturn !result;\n\t\t }\n\t\t};\n\t\tclassListProto.toString = function () {\n\t\t return this.join(\" \");\n\t\t};\n\n\t\tif (objCtr.defineProperty) {\n\t\t var classListPropDesc = {\n\t\t\tget: classListGetter\n\t\t\t, enumerable: true\n\t\t\t, configurable: true\n\t\t };\n\t\t try {\n\t\t\tobjCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n\t\t } catch (ex) { // IE 8 doesn't support enumerable:true\n\t\t\t// adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36\n\t\t\t// modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected\n\t\t\tif (ex.number === undefined || ex.number === -0x7FF5EC54) {\n\t\t\t classListPropDesc.enumerable = false;\n\t\t\t objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n\t\t\t}\n\t\t }\n\t\t} else if (objCtr[protoProp].__defineGetter__) {\n\t\t elemCtrProto.__defineGetter__(classListProp, classListGetter);\n\t\t}\n\n\t }(self));\n\n\t}\n\n\t// There is full or partial native classList support, so just check if we need\n\t// to normalize the add/remove and toggle APIs.\n\n\t(function () {\n\t \"use strict\";\n\n\t var testElement = document.createElement(\"_\");\n\n\t testElement.classList.add(\"c1\", \"c2\");\n\n\t // Polyfill for IE 10/11 and Firefox <26, where classList.add and\n\t // classList.remove exist but support only one argument at a time.\n\t if (!testElement.classList.contains(\"c2\")) {\n\t\tvar createMethod = function (method) {\n\t\t var original = DOMTokenList.prototype[method];\n\n\t\t DOMTokenList.prototype[method] = function (token) {\n\t\t\tvar i, len = arguments.length;\n\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t token = arguments[i];\n\t\t\t original.call(this, token);\n\t\t\t}\n\t\t };\n\t\t};\n\t\tcreateMethod('add');\n\t\tcreateMethod('remove');\n\t }\n\n\t testElement.classList.toggle(\"c3\", false);\n\n\t // Polyfill for IE 10 and Firefox <24, where classList.toggle does not\n\t // support the second argument.\n\t if (testElement.classList.contains(\"c3\")) {\n\t\tvar _toggle = DOMTokenList.prototype.toggle;\n\n\t\tDOMTokenList.prototype.toggle = function (token, force) {\n\t\t if (1 in arguments && !this.contains(token) === !force) {\n\t\t\treturn force;\n\t\t } else {\n\t\t\treturn _toggle.call(this, token);\n\t\t }\n\t\t};\n\n\t }\n\n\t testElement = null;\n\t}());\n\n }\n","// Create a global object to store all BU Blocks related functions and data.\nconst bu_blocks = {};\n\nexport default bu_blocks;\n","/**\n * BLOCK: ClicktoTweet\n *\n * A modification of Paragraph blocks to add a click to tweet feature.\n * If applied to the entire block the whole paragraph is tweetable.\n * If text is highlighted and the click to tweet format is applied, only that\n * highlighted text will recieve a tweetable link.\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\n\nbu_blocks.clicktotweet = ( function() {\n\tvar tweetBlocks = []; //stores all of our found blocks\n\tvar tweetLabel = \"Tweet this\";\n\n\tvar findElements = function() {\n\t\t//find all the blocks\n\t\tvar elements = document.querySelectorAll( '.wp-block-bu-clicktotweet' );\n\t\t//if found\n\t\tif ( elements.length > 0 ) {\n\t\t\t//for each found block do stuff\n\t\t\telements.forEach( function( theBlock, item ) {\n\n\t\t\t\tvar block = {};\n\n\t\t\t\t// Get DOM element.\n\t\t\t\tblock.element = theBlock;\n\n\t\t\t\t// Check if this block has a highlight subsection of text\n\t\t\t\tif ( theBlock.classList.contains('has-format-highlight') ) {\n\t\t\t\t\tblock.highlight = theBlock.querySelector( '.wp-block-bu-clicktotweet-highlight');\n\n\t\t\t\t\t// Get and store the highlighted text as our text to tweet.\n\t\t\t\t\tblock.tweet_text = block.highlight.innerText;\n\t\t\t\t} else {\n\t\t\t\t\t// Get the entire paragraph's text to tweet.\n\t\t\t\t\tblock.tweet_text = theBlock.innerText;\n\t\t\t\t}\n\n\t\t\t\t//for each one found store as object in the array\n\t\t\t\ttweetBlocks.push( block );\n\t\t\t});\n\t\t}\n\t};\n\n\t/*\n\tSetup click handlers for these blocks\n\t*/\n\tvar setupHandlers = function() {\n\t\tif ( tweetBlocks.length > 0 ) {\n\n\t\t\t// Loop through all found Tweet Blocks\n\t\t\ttweetBlocks.forEach( function( theBlock, item ) {\n\t\t\t\tvar btn;\n\n\t\t\t\t// If has subtext highlighted to tweet use that.\n\t\t\t\tif ( theBlock.highlight ) {\n\t\t\t\t\tbtn = theBlock.highlight;\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise append the tweet button for the whole

.\n\t\t\t\t\tbtn = document.createElement( 'button' );\n\t\t\t\t\tbtn.appendChild( document.createTextNode( tweetLabel ) );\n\t\t\t\t\tbtn.classList.add( 'wp-block-bu-clicktotweet-action' );\n\t\t\t\t\tbtn.classList.add( 'js-wp-block-clicktotweet-action' );\n\t\t\t\t\ttheBlock.element.appendChild( btn );\n\n\t\t\t\t\t// Store reference to the btn.\n\t\t\t\t\ttheBlock.btn = btn;\n\t\t\t\t}\n\n\t\t\t\t// If we have a button element, setup click handler\n\t\t\t\t// to open Tweet window.\n\t\t\t\tif ( btn ) {\n\t\t\t\t\tbtn.addEventListener( \"click\", function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\topenTweet( theBlock.tweet_text );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t};\n\n\t/*\n\tOpens a small window with\n\tthe Twitter Link Sharing Tool open and\n\tpasses the text of the tweet and url\n\tof the post\tto Twitter.\n\t*/\n\tvar openTweet = function( text ) {\n\t\tvar tweetedLink = window.location.href;\n\n \t\twindow.open(\n \t\t\t\"http://twitter.com/intent/tweet?url=\" + tweetedLink +\n \t\t\t\"&text=\" + text +\n \t\t\t\"&\",\n \t\t\t\"twitterwindow\",\n \t\t\t\"height=450, width=550, toolbar=0, location=0, menubar=0, directories=0, scrollbars=0\"\n \t\t);\n\n\t};\n\n\t/*\n\tHelper function to set the Button text\n\tto a new value on new and existing blocks.\n\t */\n\tvar setButtonText = function( str ) {\n\t\ttweetLabel = str;\n\n\t\ttweetBlocks.forEach( function( theBlock, item ) {\n\t\t\tif( theBlock.btn ) {\n\t\t\t\ttheBlock.btn.innerText = tweetLabel;\n\t\t\t}\n\t\t});\n\t};\n\n\tvar tweetInit = function() {\n\t\t//find the elements\n\t\tfindElements();\n\n\t\t//setup handlers\n\t\tsetupHandlers();\n\t};\n\n\t//start on dom ready (ie8+)\n\tdocument.addEventListener( \"DOMContentLoaded\", function() {\n \t\ttweetInit();\n\n\t});\n\n\treturn {\n\t\tgettweetBlocks: function() {\n\t\t\treturn tweetBlocks;\n\t\t},\n\t\tsettweetButtonText: function( str ) {\n\t\t\tsetButtonText( str );\n\t\t}\n\t};\n})();\n","/**\n * BLOCK: collapsible-control\n *\n * A block to toggle collapsible blocks on the page\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.collapsibleControl = ( function() {\n\n\t// Store all Control blocks\n\tvar collapsibleControlBlocks = [];\n\tvar allCollapsibleBlocks = [];\n\tvar allBlocksOpen = false;\n\tvar collapsibleOpenClass = 'is-open';\n\tvar collapsibleCloseClass = 'is-closed';\n\n\t/**\n\t * Open or close a group of collapsible blocks\n\t *\n\t * @param array collapsible blocks\n\t * @param bool true to open set of collapsible blocks, false to close\n\t */\n\tvar controlCollapsibleBlocks = function( collapsibleBlocks, open ) {\n\n\t\tif ( open === undefined ) {\n\t\t\topen = true;\n\t\t}\n\n\t\tcollapsibleBlocks.forEach( function( collapsible, i ) {\n\t\t\tconst container = collapsible.container;\n\t\t\tconst toggle = collapsible.toggle;\n\t\t\tconst panel = collapsible.panel;\n\n\t\t\tif ( open ) {\n\t\t\t\tcontainer.classList.add( collapsibleOpenClass );\n\t\t\t\tcontainer.classList.remove( collapsibleCloseClass );\n\t\t\t\ttoggle.setAttribute( 'aria-expanded', true );\n\t\t\t\tpanel.setAttribute( 'aria-hidden', false );\n\t\t\t} else {\n\t\t\t\tcontainer.classList.remove( collapsibleOpenClass );\n\t\t\t\tcontainer.classList.add( collapsibleCloseClass );\n\t\t\t\ttoggle.setAttribute( 'aria-expanded', false );\n\t\t\t\tpanel.setAttribute( 'aria-hidden', true );\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Toggle all Collapsible blocks\n\t */\n\tvar toggleAll = function( control ) {\n\n\t\tif ( 0 === allCollapsibleBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontrolCollapsibleBlocks( allCollapsibleBlocks, !allBlocksOpen );\n\t\tallBlocksOpen = ( allBlocksOpen ) ? false : true;\n\t};\n\n\t/**\n\t * Toggle Collapsible blocks in control's group\n\t */\n\tvar toggleGroup = function( control ) {\n\t\tconst groupIsOpen = control.groupIsOpen;\n\t\tconst collapsibleBlocks = control.collapsibleBlocks\n\n\t\tcontrolCollapsibleBlocks( collapsibleBlocks, !groupIsOpen );\n\t\tcontrol.groupIsOpen = ( groupIsOpen ) ? false : true;\n\t};\n\n\t/**\n\t * Find all Collapsible blocks on a page\n\t */\n\tvar findAllCollapsibleBlocks = function() {\n\t\tvar containers = document.querySelectorAll( '.js-wp-block-bu-collapsible' );\n\n\t\t// Don't coninue if no Collapsible blocks exist\n\t\tif ( containers.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainers.forEach( function( element, i ) {\n\t\t\tvar block = {};\n\n\t\t\tblock.container = element;\n\t\t\tblock.toggle = element.querySelector( '.js-bu-block-collapsible-toggle' );\n\t\t\tblock.panel = element.querySelector( '.js-bu-block-collapsible-content' );\n\t\t\tallCollapsibleBlocks.push( block );\n\t\t} );\n\n\t};\n\n\t/**\n\t * Return all Collapsible blocks in the group with a Control\n\t *\n\t * @param object control\n\t *\n\t * @return array list of all collapsible blocks in group\n\t */\n\tvar getGroupCollapsibleBlocks = function( control ) {\n\n\t\tvar blocks = [];\n\t\tvar group = control.closest( '.wp-block-group' );\n\t\tif ( ! group ) {\n\t\t\treturn blocks;\n\t\t}\n\t\tvar containers = group.querySelectorAll( '.js-wp-block-bu-collapsible' );\n\n\t\tcontainers.forEach( function( element, i ) {\n\t\t\tvar block = {};\n\n\t\t\tblock.container = element;\n\t\t\tblock.toggle = element.querySelector( '.js-bu-block-collapsible-toggle' );\n\t\t\tblock.panel = element.querySelector( '.js-bu-block-collapsible-content' );\n\t\t\tblocks.push( block );\n\t\t} );\n\n\t\treturn blocks;\n\t}\n\n\t/**\n\t * Find all Controls and Collapsible blocks\n\t */\n\tvar findElements = function() {\n\n\t\tvar controls = document.querySelectorAll( '.bu-collapsible-control-toggle' );\n\t\tvar allCollapsibleBlocksFound = false;\n\n\t\t// Don't coninue if no Controls are found\n\t\tif ( controls.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Store all controls\n\t\tcontrols.forEach( function( control, i ) {\n\t\t\tvar block = {};\n\n\t\t\tblock.toggle = control;\n\n\t\t\t// Check if Control targets all blocks or blocks in its group\n\t\t\tif ( control.classList.contains( 'js-bu-collapsible-control-target-group' ) ) {\n\t\t\t\tblock.targetGroup = true;\n\t\t\t\tblock.collapsibleBlocks = getGroupCollapsibleBlocks( control );\n\t\t\t\tblock.groupIsOpen = false;\n\t\t\t} else {\n\t\t\t\tblock.targetGroup = false;\n\n\t\t\t\tif ( ! allCollapsibleBlocksFound ) {\n\t\t\t\t\tfindAllCollapsibleBlocks();\n\t\t\t\t}\n\n\t\t\t\tallCollapsibleBlocksFound = true;\n\t\t\t}\n\n\t\t\tcollapsibleControlBlocks.push( block );\n\t\t} );\n\n\t};\n\n\t/**\n\t * Set up handlers, aria, and other functionality\n\t */\n\tvar setupCollapsibleControlBlocks = function() {\n\t\tif ( collapsibleControlBlocks.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcollapsibleControlBlocks.forEach( function( control, i ) {\n\t\t\tconst toggle = control.toggle;\n\t\t\tconst targetGroup = control.targetGroup;\n\n\t\t\ttoggle.addEventListener( 'click', function( e ) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif ( targetGroup ) {\n\t\t\t\t\ttoggleGroup( control );\n\t\t\t\t} else {\n\t\t\t\t\ttoggleAll( control );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t};\n\n\t/**\n\t * Init\n\t */\n\tvar collapsibleControlInit = function() {\n\t\tfindElements();\n\t\tsetupCollapsibleControlBlocks();\n\t};\n\n\t// Start things on dom ready.\n\tdocument.addEventListener( \"DOMContentLoaded\", function() {\n\t\tcollapsibleControlInit();\n\t} );\n\n} )();\n","/**\n * BLOCK: Collapsible\n *\n * An accordian block to display content\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.collapsible = ( function() {\n\n\t// Store all collapsible block\n\tvar collapsibleBlocks = [];\n\tvar collapsibleOpenClass = 'is-open';\n\tvar collapsibleClosedClass = 'is-closed';\n\tvar eventOpen = new CustomEvent('bu-blocks-collapsible-open');\n\tvar eventClose = new CustomEvent('bu-blocks-collapsible-close');\n\n\n\n\n\t/**\n\t * Check if a Collapsible block is set to open by default by user.\n\t *\n\t * @param object collapsible block\n\t * @return bool\n\t */\n\tvar isOpenDefault = function( collapsible ) {\n\t\tconst container = collapsible.container;\n\n\t\tif ( 'true' === container.getAttribute(\"data-default-open\") ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t/**\n\t * Check if a Collapsible block is open.\n\t *\n\t * @param object collapsible block\n\t * @return bool\n\t */\n\tvar isOpen = function( collapsible ) {\n\t\tconst container = collapsible.container;\n\n\t\tif ( container.classList.contains ( collapsibleOpenClass ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t/**\n\t * Open Collapsible block\n\t *\n\t * @param object collapsible block\n\t */\n\tvar openCollapsible = function( collapsible ) {\n\t\tconst container = collapsible.container;\n\t\tconst toggle = collapsible.toggle;\n\t\tconst panel = collapsible.panel;\n\n\t\tcontainer.classList.add( collapsibleOpenClass );\n\t\tcontainer.classList.remove( collapsibleClosedClass );\n\n\t\ttoggle.setAttribute( 'aria-expanded', true );\n\t\tpanel.setAttribute( 'aria-hidden', false );\n\n\t\tif ( container.classList.contains( 'is-style-preview' ) ) {\n\t\t\ttoggle.innerHTML = toggle.getAttribute(\"data-close-text\");\n\t\t}\n\t\t//dispatch the event on the dom element\n\t\tcontainer.dispatchEvent( eventOpen );\n\t};\n\n\t/**\n\t * Close Collapsible block\n\t *\n\t * @param object collapsible block\n\t */\n\tvar closeCollapsible = function( collapsible ) {\n\t\tconst container = collapsible.container;\n\t\tconst toggle = collapsible.toggle;\n\t\tconst panel = collapsible.panel;\n\n\t\tcontainer.classList.remove( collapsibleOpenClass );\n\t\tcontainer.classList.add( collapsibleClosedClass );\n\t\ttoggle.setAttribute( 'aria-expanded', false );\n\t\tpanel.setAttribute( 'aria-hidden', true );\n\n\t\tif ( container.classList.contains( 'is-style-preview' ) ) {\n\t\t\ttoggle.innerHTML = toggle.getAttribute(\"data-open-text\");\n\t\t}\n\t\t//dispatch the event on the dom element\n\t\tcontainer.dispatchEvent( eventClose );\n\t};\n\n\t/**\n\t * Toggle collapsible block\n\t *\n\t * @param element collapsible block\n\t */\n\tvar toggleCollapsible = function( collapsible ) {\n\t\tif ( isOpen( collapsible ) ) {\n\t\t\tcloseCollapsible( collapsible );\n\t\t} else {\n\t\t\topenCollapsible( collapsible );\n\t\t}\n\t};\n\n\t/**\n\t * Find all Collapsible blocks\n\t */\n\tvar findElements = function() {\n\t\tvar containers = document.querySelectorAll( '.js-wp-block-bu-collapsible' );\n\n\t\t// Don't coninue if no Collapsible blocks exist\n\t\tif ( containers.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainers.forEach( function( element, i ) {\n\t\t\tvar block = {};\n\n\t\t\tblock.container = element;\n\t\t\tblock.toggle = element.querySelector( '.js-bu-block-collapsible-toggle' );\n\t\t\tblock.panel = element.querySelector( '.js-bu-block-collapsible-content' );\n\t\t\tcollapsibleBlocks.push( block );\n\t\t} );\n\t};\n\n\t/**\n\t * Set up handlers, aria, and other functionality\n\t */\n\tvar setupCollapsibleBlocks = function() {\n\t\tif ( collapsibleBlocks.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcollapsibleBlocks.forEach( function( collapsible, i ) {\n\t\t\tconst container = collapsible.container;\n\t\t\tconst toggle = collapsible.toggle;\n\t\t\tconst panel = collapsible.panel;\n\n\t\t\t// Add toggle event\n\t\t\ttoggle.addEventListener( 'click', function( e ) {\n\t\t\t\te.preventDefault();\n\t\t\t\ttoggleCollapsible( collapsible );\n\t\t\t} );\n\n\t\t\t// Set ARIA attributes\n\t\t\ttoggle.setAttribute( 'aria-controls', panel.id );\n\t\t\tpanel.setAttribute( 'aria-labelledby', toggle.id );\n\n\t\t\t// Setup initial state of each block.\n\t\t\tif ( isOpenDefault( collapsible ) ) {\n\t\t\t\topenCollapsible( collapsible );\n\t\t\t} else {\n\t\t\t\tcloseCollapsible( collapsible );\n\t\t\t}\n\n\t\t\tif ( isOpen( collapsible ) ) {\n\t\t\t\ttoggle.setAttribute( 'aria-expanded', true );\n\t\t\t\tpanel.setAttribute( 'aria-hidden', false );\n\t\t\t} else {\n\t\t\t\ttoggle.setAttribute( 'aria-expanded', false );\n\t\t\t\tpanel.setAttribute( 'aria-hidden', true );\n\t\t\t}\n\t\t} );\n\t};\n\n\t/**\n\t * Init\n\t */\n\tvar collapsibleInit = function() {\n\t\tfindElements();\n\t\tsetupCollapsibleBlocks();\n\t};\n\n\t// Start things on dom ready.\n\tdocument.addEventListener( \"DOMContentLoaded\", function() {\n\t\tcollapsibleInit();\n\t});\n\n\treturn {\n\t\tgetcollapsibleBlocks: function() {\n\t\t\treturn collapsibleBlocks;\n\t\t},\n\t\ttoggleCollapsible: function( collapsible ) {\n\t\t\tif( collapsible ) {\n\t\t\t\ttoggleCollapsible( collapsible );\n\t\t\t}\n\t\t}\n\t};\n\n} )();\n","/**\n * BLOCK: Drawer\n *\n * A drawer block that provides a callout and expandable\n * content section that opens within the flow of the page.\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.drawer = ( function() {\n\tvar drawerBlocks = []; //stores all of our found blocks\n\tvar $body = document.getElementsByTagName( 'body' )[0]; //target body tag\n\tvar eventOpen = new CustomEvent( 'bu-blocks-drawer-open' );\n\tvar eventClose = new CustomEvent( 'bu-blocks-drawer-close' );\n\n\tvar toggleDrawer = function( drawer ) {\n\n\t\t// Using an if statement to check the class\n\t\tif ( drawer.classList.contains( 'show-drawer' ) ) {\n\t\t\tdrawer.classList.remove( 'show-drawer' );\n\t\t\t//dispatch the event on the drawer dom element\n\t\t\tdrawer.dispatchEvent( eventClose );\n\t\t} else {\n\t\t\tdrawer.classList.add( 'show-drawer' );\n\t\t\t//dispatch the event on the drawer dom element\n\t\t\tdrawer.dispatchEvent( eventOpen );\n\t\t}\n\t};\n\n\tvar findElements = function() {\n\t\t//find all the blocks\n\t\tvar elements = document.querySelectorAll( '.js-bu-block-drawer' );\n\t\t//if found\n\t\tif ( elements.length > 0 ) {\n\t\t\t//for each found block do stuff\n\t\t\tfor ( var i = 0; i < elements.length; i++ ) {\n\n\t\t\t\tvar block = {};\n\n\t\t\t\t//get first returned drawer content element\n\t\t\t\tblock.drawer = elements[i];\n\t\t\t\t//get all matched trigger btns\n\t\t\t\tblock.button = elements[i].querySelectorAll( '.js-bu-block-drawer-open' );\n\t\t\t\t//get first returned overlay element\n\t\t\t\tblock.close = elements[i].querySelector( '.js-bu-block-drawer-close' );\n\n\t\t\t\t//for each one found store as object in the array\n\t\t\t\tdrawerBlocks.push( block );\n\t\t\t}\n\t\t}\n\t};\n\n\tvar setupHandlers = function() {\n\t\tif ( drawerBlocks.length > 0 ) {\n\t\t\tdrawerBlocks.forEach( function( thisDrawer, item ) {\n\n\t\t\t\t//some drawer blocks may have more than one trigger btn\n\t\t\t\t//so loop through all matched to setup events\n\t\t\t\tthisDrawer.button.forEach( function( button, index ) {\n\t\t\t\t\t//for each btn we find, add an event handler\n\t\t\t\t\tbutton.addEventListener( \"click\", function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\ttoggleDrawer( thisDrawer.drawer );\n\t\t\t\t\t});\n\n\t\t\t\t});\n\n\t\t\t\tthisDrawer.close.addEventListener( \"click\", function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\ttoggleDrawer( thisDrawer.drawer );\n\t\t\t\t});\n\n\t\t\t});\n\t\t}\n\t};\n\n\tvar drawerInit = function() {\n\t\t//find the elements\n\t\tfindElements();\n\n\t\t//setup handlers\n\t\tsetupHandlers();\n\t};\n\n\t//start on dom ready (ie8+)\n\tdocument.addEventListener( \"DOMContentLoaded\", function() {\n \t\tdrawerInit();\n\n\t});\n\n\treturn {\n\t\tgetdrawerBlocks: function() {\n\t\t\treturn drawerBlocks;\n\t\t},\n\t\ttoggleDrawer: function( drawer ) {\n\t\t\tif( drawer ) {\n\t\t\t\ttoggleDrawer( drawer );\n\t\t\t}\n\t\t}\n\t};\n})();\n","/**\n * BLOCK: Modal\n *\n * A modal block that provides a callout and expandable\n * overlay content section that opens on top of the page content.\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.modal = (function() {\n\tvar modalBlocks = [];\n\tvar $body = document.getElementsByTagName('body')[0];\n\tvar eventOpen = new CustomEvent('bu-blocks-modal-open');\n\tvar eventClose = new CustomEvent('bu-blocks-modal-close');\n\n\tvar lockScroll = function() {\n\t\t$body.classList.add('bu-blocks-modal-noscroll');\n\t};\n\n\tvar unlockScroll = function() {\n\t\t$body.classList.remove('bu-blocks-modal-noscroll');\n\t}\n\n\tvar toggleModal = function(overlay) {\n\t\t// Using an if statement to check the class\n\t\tif (overlay.classList.contains('show-overlay')) {\n\t\t\toverlay.classList.remove('show-overlay');\n\t\t\t//dispatch the event on the overlay dom element\n\t\t\toverlay.dispatchEvent( eventClose );\n\t\t\tunlockScroll();\n\t\t} else {\n\t\t\toverlay.classList.add('show-overlay');\n\t\t\t//dispatch the event on the overlay dom element\n\t\t\toverlay.dispatchEvent( eventOpen );\n\t\t\tlockScroll();\n\t\t}\n\t};\n\n\tvar findElements = function() {\n\t\t//find all the blocks\n\t\tvar elements = document.querySelectorAll( '.js-bu-block-modal' );\n\t\t//if found\n\t\tif (elements.length > 0) {\n\t\t\t//for each found block do stuff\n\t\t\tfor ( var i = 0; i < elements.length; i++ ) {\n\n\t\t\t\tvar block = {};\n\n\t\t\t\t//get first returned overlay element\n\t\t\t\tblock.overlay = elements[i].querySelector( '.js-bu-block-modal-overlay' );\n\t\t\t\t//get all matched trigger btns\n\t\t\t\tblock.button = elements[i].querySelectorAll( '.js-bu-block-modal-trigger-overlay' );\n\t\t\t\t//get first returned overlay element\n\t\t\t\tblock.close = elements[i].querySelector( '.js-bu-block-modal-overlay-close' );\n\n\t\t\t\t//for each one found store as object in the array\n\t\t\t\tmodalBlocks.push( block );\n\t\t\t}\n\t\t}\n\t};\n\n\tvar setupHandlers = function() {\n\t\tif (modalBlocks.length > 0) {\n\t\t\tmodalBlocks.forEach( function( thisModal, item ) {\n\n\t\t\t\t//some modals may have more than one trigger btn\n\t\t\t\t//so loop through all matched to setup events\n\t\t\t\tthisModal.button.forEach( function( button, index ) {\n\t\t\t\t\t//for each btn we find, add an event handler\n\t\t\t\t\tbutton.addEventListener( \"click\", function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\ttoggleModal( thisModal.overlay );\n\t\t\t\t\t});\n\n\t\t\t\t});\n\t\t\t\tthisModal.close.addEventListener( \"click\", function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\ttoggleModal( thisModal.overlay );\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t};\n\n\tvar modalInit = function() {\n\t\t//find the elements\n\t\tfindElements();\n\n\t\t//setup handlers\n\t\tsetupHandlers();\n\t};\n\n\t//start on dom ready (ie8+)\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\n\t\tmodalInit();\n\n\t});\n\n\treturn {\n\t\tgetmodalBlocks: function() {\n\t\t\treturn modalBlocks;\n\t\t},\n\t\ttoggleModal: function( overlay ) {\n\t\t\tif( overlay ) {\n\t\t\t\ttoggleModal( overlay );\n\t\t\t}\n\t\t}\n\t};\n})();\n","/**\n * BLOCK: Photoessay\n *\n * A photo layout row block.\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.photoessay = (function() {\n\tvar scrollTop = 0;\n\tvar photoEssayBlocks = []; //stores all of our found blocks\n\tvar photoEssayGroups = [];\n\tvar photoEssayOverlay = false;\n\tvar photoEssayFigures = {};\n\tvar overlayActiveGroup = false;\n\tvar $html = document.getElementsByTagName( 'html' )[0]; //target html tag\n\tvar $body = document.getElementsByTagName( 'body' )[0]; //target body tag\n\n\n\t/*\n\t* Find all photo essay blocks\n\t* and store in an array.\n\t*\n\t* For each found get all of the DOM\n\t* elements we'll need\n\t*\n\t*/\n\tvar findElements = function() {\n\t\t//find all the blocks\n\t\tvar findBlocks = document.querySelectorAll( '.js-block-editorial-photoessay' );\n\t\tvar elements = [].slice.call( findBlocks );\n\n\t\t//if found\n\t\tif ( elements.length > 0 ) {\n\t\t\t//for each found block do stuff\n\t\t\tfor ( var i = 0; i < elements.length; i++ ) {\n\n\t\t\t\tvar group = Array();\n\n\t\t\t\tvar block = {};\n\t\t\t\tblock.element = elements[i];\n\n\t\t\t\t//get first returned social photo block element\n\t\t\t\tgroup.push( block );\n\n\n\t\t\t\tvar siblings = getSiblings( elements[i], '.js-block-editorial-photoessay' );\n\n\t\t\t\tif ( siblings.length > 0 ) {\n\n\t\t\t\t\t//add siblings to group.\n\t\t\t\t\tsiblings.forEach( function( sibling, index ) {\n\t\t\t\t\t\tvar sib = {};\n\t\t\t\t\t\tsib.element = sibling;\n\t\t\t\t\t\tgroup.push( sib );\n\t\t\t\t\t});\n\n\t\t\t\t\t//reduce elements array by removing the siblings\n\t\t\t\t\telements.splice(i, siblings.length);\n\n\t\t\t\t}\n\n\t\t\t\t//for each one found store as object in the array\n\t\t\t\tphotoEssayGroups.push( group );\n\t\t\t}\n\n\n\n\n\n\t\t}\n\t};\n\n\n\t/*\n\t* For Each Photo Essay Block Setup:\n\t*\n\t* Setup the Overlay Container DOM elements.\n\t*\n\t* Find each Figure inside each block inside each group and build\n\t* an array for each \"group\" with all of the figures in order so we\n\t* can later traverse.\n\t*\n\t* Then call setupHandlers() to setup\n\t* remaining event handlers for opening the overlay, etc.\n\t*\n\t*/\n\tvar setupBlocks = function() {\n\t\tif ( photoEssayGroups.length > 0 ) {\n\n\t\t\tphotoEssayOverlay = {};\n\t\t\tphotoEssayOverlay.container = appendOverlay();\n\t\t\tphotoEssayOverlay.closeBtn = photoEssayOverlay.container.querySelector( '.js-block-editorial-photoessay-overlay-close' );\n\t\t\tphotoEssayOverlay.prevBtn = photoEssayOverlay.container.querySelector( '.js-block-editorial-photoessay-overlay-prev' );\n\t\t\tphotoEssayOverlay.nextBtn = photoEssayOverlay.container.querySelector( '.js-block-editorial-photoessay-overlay-next' );\n\t\t\tphotoEssayOverlay.photoContainer = photoEssayOverlay.container.querySelector( '.wp-block-editorial-photoessay-photocontainer' );\n\n\n\t\t\t// Foreach Group let's assign an id\n\t\t\t// and then traverse the blocks to find all of the\n\t\t\t// figure elements and push them into a global object.\n\t\t\tphotoEssayGroups.forEach( function( group, index ) {\n\n\t\t\t\t// Create an id for each group.\n\t\t\t\tvar groupID = \"photoEssay_\"+index;\n\n\t\t\t\t// Add an object with a key of the group id.\n\t\t\t\tphotoEssayFigures[groupID] = Array();\n\n\t\t\t\t//group.figures = Array();\n\t\t\t\t// Loop through each Group and iterate on the blocks.\n\t\t\t\tgroup.forEach( function( block, item ) {\n\n\t\t\t\t\t// Find all of the Figure elements for the block as\n\t\t\t\t\t// each photoessay block can support multiple photos.\n\t\t\t\t\tblock.figures = block.element.querySelectorAll( 'figure' );\n\n\t\t\t\t\t// For each Figure element push it into the global object\n\t\t\t\t\t// under the key for that group.\n\t\t\t\t\tblock.figures.forEach( function( figure, item ) {\n\t\t\t\t\t\tphotoEssayFigures[groupID].push( figure );\n\t\t\t\t\t});\n\n\t\t\t\t});\n\n\t\t\t});\n\n\t\t\t// Setup this block.\n\t\t\tsetupHandlers();\n\t\t}\n\t};\n\n\n\t/*\n\t* Setup Handler for clicking on images/figure elements\n\t* and opening the overlay with the selected figure (image)\n\t* element.\n\t*/\n\tvar openPhotoHandler = function( figure, group ) {\n\t\t// setup click handler\n\t\tfigure.addEventListener( 'click', function(e) {\n\t\t\te.preventDefault();\n\n\t\t\t//Set as Active Group\n\t\t\toverlayActiveGroup = photoEssayFigures[group];\n\n\t\t\t// Add the selected figure to the overlay\n\t\t\toverlayAddContent( figure );\n\n\t\t\t// Open the Photo Overlay.\n\t\t\toverlayToggle();\n\t\t});\n\t};\n\n\t/*\n\t* Setup remaining Handlers\n\t* for Progress Bar and Audio Complete Callbacks\n\t*\n\t* These use callbacks set in the global Audio API\n\t*/\n\tvar setupHandlers = function() {\n\n\t\tfor ( group in photoEssayFigures ) {\n\n\t\t\tphotoEssayFigures[group].forEach( function( figure, item ) {\n\t\t\t\topenPhotoHandler( figure, group );\n\t\t\t});\n\n\t\t}\n\n\t\tphotoEssayOverlay.closeBtn.addEventListener( 'click', function(e) {\n\t\t\te.preventDefault();\n\t\t\toverlayToggle();\n\t\t});\n\n\t\tfunction nextSharedAction() {\n\t\t\tvar next = nextPhoto();\n\t\t\tremoveActiveFigure();\n\t\t\toverlayAddContent( overlayActiveGroup[next] );\n\t\t}\n\n\t\tphotoEssayOverlay.nextBtn.addEventListener( 'click', function(e) {\n\t\t\te.preventDefault();\n\t\t\tnextSharedAction();\n\t\t});\n\n\t\tfunction prevSharedAction() {\n\t\t\tvar prev = prevPhoto();\n\t\t\tremoveActiveFigure();\n\t\t\toverlayAddContent( overlayActiveGroup[prev] );\n\t\t}\n\n\t\tphotoEssayOverlay.prevBtn.addEventListener( 'click', function(e) {\n\t\t\te.preventDefault();\n\t\t\tprevSharedAction();\n\t\t});\n\n\t\tdocument.onkeydown = checkKey;\n\n\t\tfunction checkKey(e) {\n\t\t\te = e || window.event;\n\t\t\tif (e.keyCode == '39') {\n\t\t\t\tnextSharedAction();\n\t\t\t}\n\t\t\telse if (e.keyCode == '37') {\n\t\t\t\tprevSharedAction();\n\t\t\t}\n\t\t}\n\n\t};\n\n\n\n\t/*\n\t* Next Photo\n\t*\n\t* Find the next photo in the\n\t* currently active group if any exist.\n\t*\n\t* Return the index to that item in the array.\n\t*/\n\tvar nextPhoto = function() {\n\t\tvar next = false;\n\t\tvar last = overlayActiveGroup.length -1;\n\n\t\tvar current = overlayActiveGroup.findIndex( function( element ){\n\t\t\treturn element.classList.contains( 'active' );\n\t\t});\n\n\t\tif ( current < last ) {\n\t\t\tnext = current + 1;\n\t\t} else if ( current === last ) {\n\t\t\tnext = 0;\n\t\t}\n\n\t\treturn next;\n\n\t};\n\n\n\t/*\n\t* Previous Photo\n\t*\n\t* Find the previous photo in the\n\t* currently active group if any exist.\n\t*\n\t* Return the index to that item in the array.\n\t*/\n\tvar prevPhoto = function() {\n\t\tvar prev = false;\n\t\tvar last = overlayActiveGroup.length -1;\n\n\t\tvar current = overlayActiveGroup.findIndex( function( element ){\n\t\t\treturn element.classList.contains( 'active' );\n\t\t});\n\n\t\tif ( current > 0 ) {\n\t\t\tprev = current - 1;\n\t\t} else if ( current === 0 ) {\n\t\t\tprev = last;\n\t\t}\n\n\t\treturn prev;\n\n\t};\n\n\n\t/*\n\t* Open/Close Overlay\n\t*\n\t* Additionally sets up an event listener to\n\t* monitor scroll events when the overlay is open.\n\t*/\n\tvar overlayToggle = function() {\n\n\t\tif( $html.classList.contains( 'show-photo-essay-overlay' ) ) {\n\t\t\t// Closing: Remove event listener.\n\t\t\tdocument.removeEventListener( 'scroll', scrollEvent );\n\t\t} else {\n\t\t\t// Opening: Add Event Listener.\n\t\t\tdocument.addEventListener( 'scroll', scrollEvent );\n\n\t\t\t// Set current ScrollTop position.\n\t\t\tscrollTop = $html.scrollTop;\n\t\t}\n\n\t\t//Toggle the show-overlay class.\n\t\toverlayClass();\n\t};\n\n\n\t/*\n\t* Event Handler for scroll event\n\t*\n\t* Handles closing the overlay if the user\n\t* intends to scroll \"out\" of it and continue reading.\n\t*\n\t* Serves as an alternative to the close button.\n\t*/\n\tvar scrollEvent = function( e ) {\n\t\tif( $html.scrollTop - scrollTop > 250 ) {\n\t\t\t//console.log(\"close\");\n\t\t\t// Reset scrollTop.\n\t\t\tscrollTop = 0;\n\n\t\t\t// Remove Event Listener until next overlay is open.\n\t\t\tdocument.removeEventListener( 'scroll', scrollEvent );\n\n\t\t\t// Close Overlay.\n\t\t\toverlayClass();\n\t\t}\n\t};\n\n\n\t/*\n\t* Toggle the \"show\" class for the overlay\n\t* element by toggling the class on the\n\t* HTML tag.\n\t*/\n\tvar overlayClass = function() {\n\t\tif ( overlayActiveGroup.length > 1 ) {\n\t\t\t$html.classList.toggle( 'photo-essay-overlay-has-multiple' );\n\t\t}\n\t\t$html.classList.toggle( 'show-photo-essay-overlay' );\n\t};\n\n\n\t/*\n\t* Remove all \"active\" classes on any\n\t* figure element in the active group.\n\t*/\n\tvar removeActiveFigure = function() {\n\t\tfor (var i = 0; i < overlayActiveGroup.length; i++) {\n\t\t\tif (overlayActiveGroup[i].matches('.active')) {\n\t\t\t\toverlayActiveGroup[i].classList.remove('active');\n\t\t\t}\n\t\t}\n\t};\n\n\n\t/*\n\t* Add clone of image & caption figure\n\t* to the overlay component\n\t*\n\t* @param figure the figure to clone and add.\n\t*/\n\tvar overlayAddContent = function( figure ) {\n\n\t\tfigure.classList.add(\"active\");\n\n\t\t// Clone with child elements.\n\t\tvar newFigure = figure.cloneNode( true );\n\n\t\t// Clean anything that might exist.\n\t\tphotoEssayOverlay.photoContainer.innerHTML = '';\n\n\t\t// Append to overlay container.\n\t\tphotoEssayOverlay.photoContainer.appendChild( newFigure );\n\n\t\t//Wrap the img tag in a span for better styling.\n\t\twrapElement( photoEssayOverlay.photoContainer.querySelector( 'img' ), document.createElement( 'span' ) );\n\t};\n\n\n\t/*\n\t* Add Overlay to the body\n\t*\n\t*/\n\tvar appendOverlay = function() {\n\t\tvar element = document.createElement( 'div' );\n\n\t\tvar html = overlayTemplate();\n\t\telement.innerHTML = html;\n\n\t\treturn $body.appendChild( element );\n\t};\n\n\t/*\n\t* Wrap an element in some html:\n\t*\n\t* example: wrapElement(document.querySelector('a.wrap_me'), document.createElement('div'));\n\t*\n\t*/\n\tvar wrapElement = function( el, wrapper ) {\n\t\tel.parentNode.insertBefore( wrapper, el );\n\t\twrapper.appendChild( el );\n\t}\n\n\n\t/*\n\t* Generate the template for the\n\t* Overlay to display larger photos\n\t* in from each photoessay block.\n\t*/\n\tvar overlayTemplate = function() {\n\n\t\tvar html = [\n\t\t\t'

',\n\t\t\t\t'',\n\t\t\t\t'
',\n\t\t\t\t\t'
',\n\t\t\t\t\t'
',\n\t\t\t\t'
',\n\t\t\t'
',\n\t\t].join(\"\\n\");\n\n\t\treturn html;\n\t};\n\n\t/*\n\t* Get Siblings of the passed element until\n\t* selector doesn't match.\n\t*\n\t* Returns Array of sibling elements.\n\t*/\n\tvar getSiblings = function ( elem, selector ) {\n\n\t\t// Setup siblings array\n\t\tvar siblings = [];\n\n\t\t// Get the next sibling element\n\t\telem = elem.nextElementSibling;\n\n\t\t// As long as a sibling exists\n\t\twhile (elem) {\n\n\t\t\t// If selector doesn't match, bail\n\t\t\tif ( ! elem.matches(selector) ) break;\n\n\t\t\t// Otherwise, push it to the siblings array\n\t\t\tsiblings.push(elem);\n\n\t\t\t// Get the next sibling element\n\t\t\telem = elem.nextElementSibling;\n\n\t\t}\n\n\t\treturn siblings;\n\n\t};\n\n\n\tvar init = function() {\n\t\t//find the elements\n\t\tfindElements();\n\n\t\t//setup blocks\n\t\tsetupBlocks();\n\t};\n\n\t//start on dom ready (ie8+)\n\tdocument.addEventListener( \"DOMContentLoaded\", function() {\n\t\tinit();\n\n\t});\n\n\treturn {\n\t\tgetBlocks: function() {\n\t\t\treturn photoEssayBlocks;\n\t\t},\n\t\tgetActiveGroup: function() {\n\t\t\treturn overlayActiveGroup;\n\t\t}\n\t};\n})();\n","/**\n * BLOCK: Slideshow\n *\n * An slideshow block to display content\n */\n\n// Internal dependencies.\nimport bu_blocks from '../../blocks-frontend-tools';\n\nbu_blocks.slideshow = (function() {\n\tvar slideshowBlocks = [];\n\tvar $body = document.getElementsByTagName('body')[0];\n\n\tvar findElements = function() {\n\t\t//find all the blocks\n\t\tvar elements = document.getElementsByClassName('js-bu-blocks-slideshow');\n\n\t\t//if found\n\t\tif (elements.length > 0) {\n\t\t\t//for each found block do stuff\n\t\t\tfor( i = 0; i < elements.length; i++ ) {\n\n\t\t\t\tvar block = {};\n\n\t\t\t\t//get back btn\n\t\t\t\tblock.backBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-back-btn')[0];\n\t\t\t\t//get forward btn\n\t\t\t\tblock.forwardBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-forward-btn')[0];\n\n\t\t\t\t//get onmedia back btn\n\t\t\t\tblock.backMediaBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-back-onmedia-btn')[0];\n\t\t\t\t//get onmedia forward btn\n\t\t\t\tblock.forwardMediaBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-forward-onmedia-btn')[0];\n\t\t\t\t//get ontrack forward btn\n\t\t\t\tblock.forwardTrackBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-forward-ontrack-btn')[0];\n\n\t\t\t\t//get caption btn\n\t\t\t\tblock.captionBtn = elements[i].getElementsByClassName('js-bu-blocks-slideshow-caption-btn')[0];\n\n\t\t\t\t//get media track\n\t\t\t\tblock.mediatrack = elements[i].getElementsByClassName('js-bu-blocks-slideshow-media-track')[0];\n\n\t\t\t\t//get media items\n\t\t\t\tblock.mediatrackitems = elements[i].getElementsByClassName('js-bu-blocks-slideshow-media-track-item');\n\n\t\t\t\t//get caption track\n\t\t\t\tblock.captiontrack = elements[i].getElementsByClassName('js-bu-blocks-slideshow-caption-track')[0];\n\n\t\t\t\t//get caption items\n\t\t\t\tblock.captiontrackitems = elements[i].getElementsByClassName('js-bu-blocks-slideshow-caption-item');\n\t\t\t\t//get caption items\n\t\t\t\tblock.captionContainer = elements[i].getElementsByClassName('js-bu-blocks-slideshow-caption-container')[0];\n\n\t\t\t\t//for each one found store as object in the array\n\t\t\t\tslideshowBlocks.push(block);\n\t\t\t}\n\n\t\t\t// set active states on items and captions\n\t\t\tfor ( i = 0; i < block.mediatrackitems.length; i++) {\n\t\t\t\tblock.mediatrackitems[i].active = false;\n\t\t\t\tblock.captiontrackitems[i].active = false;\n\t\t\t}\n\t\t\t// set first to active true\n\t\t\tblock.mediatrackitems[0].active = true;\n\t\t\tblock.captiontrackitems[0].active = true;\n\t\t\tfor (var i = block.mediatrackitems.length - 1; i >= 0; i--) {\n\t\t\t\t// set active classes\n\t\t\t\tif (block.mediatrackitems[i].active === true) {\n\t\t\t\t\tblock.mediatrackitems[0].classList.toggle(\"bu-blocks-slideshow-media-track-item-active\");\n\t\t\t\t\tblock.captiontrackitems[0].classList.toggle(\"bu-blocks-slideshow-media-track-item-active\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tblock.captionContainer.collapsed = true;\n\t\t\tsizingCaption( block );\n\t\t}\n\t};\n\n\n\tvar setupHandlers = function() {\n\t\tif (slideshowBlocks.length > 0) {\n\t\t\tfor ( let i = 0; i < slideshowBlocks.length; i++ ) {\n\t\t\t\tvar block = slideshowBlocks[i];\n\n\t\t\t\tblock.backBtn.addEventListener(\"click\", function(e){\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tprevItem( block );\n\t\t\t\t\tsizingCaption( block );\n\t\t\t\t});\n\t\t\t\tblock.backMediaBtn.addEventListener(\"click\", function(e){\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tprevItem( block );\n\t\t\t\t\tsizingCaption( block );\n\t\t\t\t});\n\t\t\t\tblock.forwardBtn.addEventListener(\"click\", function(e){\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tnextItem( block );\n\t\t\t\t\tsizingCaption( block );\n\t\t\t\t});\n\t\t\t\tblock.forwardMediaBtn.addEventListener(\"click\", function(e){\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tnextItem( block );\n\t\t\t\t\tsizingCaption( block );\n\t\t\t\t});\n\t\t\t\tblock.forwardTrackBtn.addEventListener(\"click\", function(e){\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tnextItem( block );\n\t\t\t\t\tsizingCaption( block );\n\t\t\t\t});\n\t\t\t\tblock.captionBtn.addEventListener(\"click\", function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\ttoggleCaption( block );\n\t\t\t\t\tsizingCaption( block );\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\n\tvar setupMediaTrack = function() {\n\t\tfor ( i = 0; i < slideshowBlocks.length; i++ ) {\n\t\t\tvar block = slideshowBlocks[i];\n\t\t\tif ( block.mediatrack && block.mediatrackitems ) {\n\t\t\t\t//set currentItem variable\n\t\t\t\tblock.currentItem = 0;\n\n\t\t\t\t//store number of items\n\t\t\t\tblock.itemslength = block.mediatrackitems.length;\n\n\n\t\t\t\t//set default width\n\t\t\t\tblock.mediatrack.style.width = 'calc(' + block.itemslength + ' * 100%)';\n\t\t\t\t//set start position to first image\n\t\t\t\tblock.mediatrack.style.left = '0%';\n\n\t\t\t\t//for each image calculate the width\n\t\t\t\tfor ( var i = 0; i < block.mediatrackitems.length; i++ ) {\n\t\t\t\t\tblock.mediatrackitems[i].style.width = 'calc(1/' + block.itemslength + ' * 100% - 2px)';\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t//setup the caption track starting widths and postion\n\t\t\tif( block.captiontrack && block.captiontrackitems ) {\n\t\t\t\t//set default width\n\t\t\t\tblock.captiontrack.style.width = 'calc(' + block.itemslength + ' * 100%)';\n\t\t\t\t//set start position to first caption\n\t\t\t\tblock.captiontrack.style.left = '0%';\n\n\t\t\t\t//for each caption calculate the width\n\t\t\t\tfor ( var i = 0; i < block.captiontrackitems.length; i++ ) {\n\t\t\t\t\tblock.captiontrackitems[i].style.width = 'calc(1/' + block.itemslength + ' * 100%)';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t};\n\n\n\tvar nextItem = function( block ) {\n\t\tif( block.currentItem === block.itemslength - 1 ) {\n\t\t\t//can't go next anymore\n\t\t} else {\n\t\t\tblock.currentItem = block.currentItem + 1;\n\t\t\tblock.mediatrack.style.left = block.currentItem * -100 + '%';\n\t\t\tblock.captiontrack.style.left = block.currentItem * -100 + '%';\n\t\t\t//move over active states\n\t\t\tfor (var i = block.mediatrackitems.length - 1; i >= 0; i--) {\n\t\t\t\tif (block.mediatrackitems[i].active === true) {\n\t\t\t\t\tblock.mediatrackitems[i].active = false;\n\t\t\t\t\tblock.mediatrackitems[i].classList.toggle(\"bu-blocks-slideshow-media-track-item-active\");\n\t\t\t\t\tblock.mediatrackitems[i + 1].active = true;\n\t\t\t\t\tblock.mediatrackitems[i + 1].classList.toggle(\"bu-blocks-slideshow-media-track-item-active\");\n\n\t\t\t\t\tblock.captiontrackitems[i].active = false;\n\t\t\t\t\tblock.captiontrackitems[i].classList.toggle(\"bu-blocks-slideshow-media-track-item-active\");\n\t\t\t\t\tblock.captiontrackitems[i + 1].active = true;\n\t\t\t\t\tblock.captiontrackitems[i + 1].classList.toggle(\"bu-blocks-slideshow-media-track-item-active\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tvar prevItem = function( block ) {\n\t\tif( block.currentItem === 0 ) {\n\t\t\t//do nothing can't go back more\n\t\t} else {\n\t\t\tblock.currentItem = block.currentItem - 1;\n\t\t\tblock.mediatrack.style.left = block.currentItem * -100 + '%';\n\t\t\tblock.captiontrack.style.left = block.currentItem * -100 + '%';\n\t\t\t//move over active states\n\t\t\tfor (var i = 0; i < block.mediatrackitems.length; i++) {\n\t\t\t\tif (block.mediatrackitems[i].active === true) {\n\t\t\t\t\tblock.mediatrackitems[i].active = false;\n\t\t\t\t\tblock.mediatrackitems[i].classList.toggle(\"bu-blocks-slideshow-media-track-item-active\");\n\t\t\t\t\tblock.mediatrackitems[i - 1].active = true;\n\t\t\t\t\tblock.mediatrackitems[i - 1].classList.toggle(\"bu-blocks-slideshow-media-track-item-active\");\n\n\t\t\t\t\tblock.captiontrackitems[i].active = false;\n\t\t\t\t\tblock.captiontrackitems[i].classList.toggle(\"bu-blocks-slideshow-media-track-item-active\");\n\t\t\t\t\tblock.captiontrackitems[i - 1].active = true;\n\t\t\t\t\tblock.captiontrackitems[i - 1].classList.toggle(\"bu-blocks-slideshow-media-track-item-active\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tvar toggleCaption = function( block ) {\n\t\t// Toggle the collapsed class\n\t\tblock.captionContainer.classList.toggle(\"bu-blocks-slideshow-caption-container-collapsed\");\n\t\tblock.captionContainer.collapsed = !block.captionContainer.collapsed;\n\t};\n\n\tvar sizingCaption = function( block ) {\n\t\t// look for active caption and grab height\n\t\tfor (var i = 0; i < block.captiontrackitems.length; i++) {\n\t\t\tif (block.captionContainer.collapsed == false) {\n\t\t\t\tif (block.captiontrackitems[i].active === true) {\n\t\t\t\t\tblock.captiontrack.style.maxHeight = block.captiontrackitems[i].offsetHeight + 'px';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tblock.captiontrack.style.maxHeight = '1.6em';\n\t\t\t\tif (block.captiontrackitems[i].active === true) {\n\t\t\t\t\t//remove colapse class if text is 1 line\n\t\t\t\t\tif (block.captiontrackitems[i].offsetHeight < block.captiontrack.offsetHeight ) {\n\t\t\t\t\t\tblock.captionContainer.classList.remove(\"bu-blocks-slideshow-caption-container-collapsed\");\n\t\t\t\t\t\tblock.captionBtn.style.display = 'none';\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tblock.captionContainer.classList.add(\"bu-blocks-slideshow-caption-container-collapsed\");\n\t\t\t\t\t\tblock.captionBtn.style.display = 'block';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\n\n\n\tvar slideshowInit = function() {\n\t\t//find the elements\n\t\tfindElements();\n\n\t\t//setup handlers\n\t\tsetupHandlers();\n\n\t\tsetupMediaTrack();\n\t};\n\n\t//start on dom ready (ie8+)\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\n \t\tslideshowInit();\n\n\t});\n\n\treturn {\n\t\tgetslideshowBlocks: function() {\n\t\t\treturn slideshowBlocks;\n\t\t}\n\t};\n})();\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Frontend JS for BU Blocks\n *\n */\n\nimport './blocks-frontend-polyfills';\n\n// Import the bu_blocks object that all data and public functions are stored on.\nimport bu_blocks from './blocks-frontend-tools';\n\n// Import the frontend JS for each block so it is enqueued together into one file.\nimport './blocks/clicktotweet/frontend';\nimport './blocks/collapsible/frontend';\nimport './blocks/collapsible-control/frontend';\nimport './blocks/drawer/frontend';\nimport './blocks/modal/frontend';\nimport './blocks/photoessay/frontend';\nimport './blocks/slideshow/frontend';\n\n// Export bu_blocks object to the window so it's accessible easily for\n// child themes to call public functions or debug.\nwindow.bu_blocks = bu_blocks;\n"],"names":["window","CustomEvent","event","params","bubbles","cancelable","detail","evt","document","createEvent","initCustomEvent","prototype","Event","Element","matches","msMatchesSelector","webkitMatchesSelector","Array","findIndex","Object","defineProperty","value","predicate","TypeError","o","len","length","thisArg","arguments","k","kValue","call","configurable","writable","closest","s","el","parentElement","parentNode","nodeType","NodeList","forEach","console","info","callback","i","T","O","self","createElement","createElementNS","view","classListProp","protoProp","elemCtrProto","objCtr","strTrim","String","trim","replace","arrIndexOf","indexOf","item","DOMEx","type","message","name","code","DOMException","checkTokenAndGetIndex","classList","token","test","ClassList","elem","trimmedClasses","getAttribute","classes","split","push","_updateClassName","setAttribute","toString","classListProto","classListGetter","Error","contains","add","tokens","l","updated","remove","index","splice","toggle","force","result","method","join","classListPropDesc","get","enumerable","ex","number","undefined","__defineGetter__","testElement","createMethod","original","DOMTokenList","_toggle","bu_blocks","clicktotweet","tweetBlocks","tweetLabel","findElements","elements","querySelectorAll","theBlock","block","element","highlight","querySelector","tweet_text","innerText","setupHandlers","btn","appendChild","createTextNode","addEventListener","e","preventDefault","openTweet","text","tweetedLink","location","href","open","setButtonText","str","tweetInit","gettweetBlocks","settweetButtonText","collapsibleControl","collapsibleControlBlocks","allCollapsibleBlocks","allBlocksOpen","collapsibleOpenClass","collapsibleCloseClass","controlCollapsibleBlocks","collapsibleBlocks","collapsible","container","panel","toggleAll","control","toggleGroup","groupIsOpen","findAllCollapsibleBlocks","containers","getGroupCollapsibleBlocks","blocks","group","controls","allCollapsibleBlocksFound","targetGroup","setupCollapsibleControlBlocks","collapsibleControlInit","collapsibleClosedClass","eventOpen","eventClose","isOpenDefault","isOpen","openCollapsible","innerHTML","dispatchEvent","closeCollapsible","toggleCollapsible","setupCollapsibleBlocks","id","collapsibleInit","getcollapsibleBlocks","drawer","drawerBlocks","$body","getElementsByTagName","toggleDrawer","button","close","thisDrawer","drawerInit","getdrawerBlocks","modal","modalBlocks","lockScroll","unlockScroll","toggleModal","overlay","thisModal","modalInit","getmodalBlocks","photoessay","scrollTop","photoEssayBlocks","photoEssayGroups","photoEssayOverlay","photoEssayFigures","overlayActiveGroup","$html","findBlocks","slice","siblings","getSiblings","sibling","sib","setupBlocks","appendOverlay","closeBtn","prevBtn","nextBtn","photoContainer","groupID","figures","figure","openPhotoHandler","overlayAddContent","overlayToggle","nextSharedAction","next","nextPhoto","removeActiveFigure","prevSharedAction","prev","prevPhoto","onkeydown","checkKey","keyCode","last","current","removeEventListener","scrollEvent","overlayClass","newFigure","cloneNode","wrapElement","html","overlayTemplate","wrapper","insertBefore","selector","nextElementSibling","init","getBlocks","getActiveGroup","slideshow","slideshowBlocks","getElementsByClassName","backBtn","forwardBtn","backMediaBtn","forwardMediaBtn","forwardTrackBtn","captionBtn","mediatrack","mediatrackitems","captiontrack","captiontrackitems","captionContainer","active","collapsed","sizingCaption","prevItem","nextItem","toggleCaption","setupMediaTrack","currentItem","itemslength","style","width","left","maxHeight","offsetHeight","display","slideshowInit","getslideshowBlocks"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/style-blocks-rtl.css b/dist/style-blocks-rtl.css index a7a6910f..58bf7b84 100644 --- a/dist/style-blocks-rtl.css +++ b/dist/style-blocks-rtl.css @@ -4350,6 +4350,309 @@ h4.wp-block-editorial-headline .wp-block-editorial-headline-posttext { .wp-block-editorial-relatedstories .wp-block-editorial-relatedstories-article-category span { background: #666; } +/*!********************************************************************************************************************************************************************************************************************************************************!*\ + !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/blocks/slideshow/style.scss ***! + \********************************************************************************************************************************************************************************************************************************************************/ +.bu-blocks-slideshow-media-track::after, .bu-blocks-editorial-slideshow::after { + display: table; + clear: both; + content: ""; +} + +/* + This mixin can be used to set the object-fit: + @include object-fit(contain); + + or object-fit and object-position: + @include object-fit(cover, top); +*/ +.bu-blocks-editorial-slideshow { + margin-bottom: 1em; +} + +.bu-blocks-slideshow-media-container { + overflow-x: hidden; + position: relative; +} +.bu-blocks-slideshow-media-container .back, +.bu-blocks-slideshow-media-container .forward { + display: block; + position: absolute; + top: 0; + width: 50px; + height: 100%; + z-index: 1; +} +.bu-blocks-slideshow-media-container .back { + right: 0; +} +.bu-blocks-slideshow-media-container .forward { + left: 0; +} + +.bu-blocks-slideshow-media-track { + position: relative; + list-style: none; + padding: 0; + margin: 0; + margin-bottom: 1em; + display: flex; + transition-property: transform, right; + transition-duration: 750ms; + transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); /* easeOutBack */ +} + +.bu-blocks-slideshow-media-container:hover .bu-blocks-slideshow-media-track { + transform: translateX(50px); +} +.bu-blocks-slideshow-media-container .back:hover ~ .bu-blocks-slideshow-media-track { + transform: translateX(-50px); +} +.bu-blocks-slideshow-media-container .forward:hover ~ .bu-blocks-slideshow-media-track { + transform: translateX(50px); +} +.bu-blocks-slideshow-media-container:active .bu-blocks-slideshow-media-track { + transform: translateX(0px); +} +.bu-blocks-slideshow-media-container .back:active ~ .bu-blocks-slideshow-media-track { + transform: translateX(0px); +} +.bu-blocks-slideshow-media-container .forward:active ~ .bu-blocks-slideshow-media-track { + transform: translateX(0px); +} + +.bu-blocks-slideshow-media { + display: flex; + position: relative; + text-align: center; + overflow: hidden; + float: right; + margin: 0 1px; +} +.bu-blocks-slideshow-media:before { + content: ""; + display: block; + position: absolute; + width: 100%; + height: 100%; + top: 0%; + right: 0%; + background: #000; +} +.bu-blocks-slideshow-media:after { + content: ""; + display: block; + padding-top: 56.25%; +} + +.bu-blocks-slideshow-media-backfill { + content: ""; + display: block; + position: absolute; + height: 100%; + top: 0%; + right: 1px; + left: 1px; + background-repeat: no-repeat; + background-size: cover; + background-position: center; + opacity: 0.75; + filter: blur(10px); + transform: scale(1.25); +} + +.bu-blocks-slideshow-media-actual { + -o-object-fit: contain; + object-fit: contain; + font-family: "object-fit: contain"; + height: 100%; + position: absolute; + width: 100%; +} + +.has-shownextup .bu-blocks-slideshow-media-track { + transform: translateX(50px); +} +.has-shownextup .bu-blocks-slideshow-media-container:hover .bu-blocks-slideshow-media-track { + transform: translateX(0px); +} +.has-shownextup .bu-blocks-slideshow-media-container .back:hover ~ .bu-blocks-slideshow-media-track { + transform: translateX(-50px); +} +.has-shownextup .bu-blocks-slideshow-media-container .forward:hover ~ .bu-blocks-slideshow-media-track { + transform: translateX(50px); +} +.has-shownextup .bu-blocks-slideshow-media-container:active .bu-blocks-slideshow-media-track { + transform: translateX(50px); +} +.has-shownextup .bu-blocks-slideshow-media-container .back:active ~ .bu-blocks-slideshow-media-track { + transform: translateX(50px); +} +.has-shownextup .bu-blocks-slideshow-media-container .forward:active ~ .bu-blocks-slideshow-media-track { + transform: translateX(0px); +} + +.bu-blocks-slideshow-caption-track { + overflow: hidden; + margin: 0; + margin-bottom: 1em; + padding: 0; + list-style: none; + display: flex; + align-items: start; + position: relative; + transition-property: max-height; + transition-duration: 250ms; + transition-timing-function: ease-in-out; +} +.bu-blocks-slideshow-caption-track p { + margin: 0; +} + +.bu-blocks-slideshow-caption-container { + float: left; + width: calc(85% - 30px / 2); + overflow-x: hidden; + margin-right: 15px; +} +@media (min-width: 500px) { + .bu-blocks-slideshow-caption-container { + width: calc(90% - 30px / 2); + } +} + +.bu-blocks-slideshow-controls { + float: right; + width: 15%; +} +@media (min-width: 500px) { + .bu-blocks-slideshow-controls { + width: 10%; + } +} + +.bu-blocks-slideshow-controls-previous, +.bu-blocks-slideshow-controls-next { + display: block; + width: 50%; + float: right; + text-align: center; + padding: 0.25em 0; +} +.bu-blocks-slideshow-controls-previous > span:before, +.bu-blocks-slideshow-controls-next > span:before { + margin: 0; +} + +.bu-blocks-slideshow-caption-container-collapsed .bu-blocks-slideshow-caption-track { + max-height: 1.6em; + background: linear-gradient(to bottom, #444 0%, transparent 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.bu-blocks-slideshow-caption-expander { + display: inline-block; + font-size: 0.75em; +} + +.has-crop .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; +} +.has-crop .has-mediafocus-left-top .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 75% 25%; + object-position: 75% 25%; + font-family: "object-fit: cover; object-position: 25% 25%;"; +} +.has-crop .has-mediafocus-left-middle .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 75% 50%; + object-position: 75% 50%; + font-family: "object-fit: cover; object-position: 25% 50%;"; +} +.has-crop .has-mediafocus-left-bottom .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 75% 75%; + object-position: 75% 75%; + font-family: "object-fit: cover; object-position: 25% 75%;"; +} +.has-crop .has-mediafocus-center-top .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 50% 25%; + object-position: 50% 25%; + font-family: "object-fit: cover; object-position: 50% 25%;"; +} +.has-crop .has-mediafocus-center-middle .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 50% 50%; + object-position: 50% 50%; + font-family: "object-fit: cover; object-position: 50% 50%;"; +} +.has-crop .has-mediafocus-center-bottom .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 50% 75%; + object-position: 50% 75%; + font-family: "object-fit: cover; object-position: 50% 75%;"; +} +.has-crop .has-mediafocus-right-top .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 25% 25%; + object-position: 25% 25%; + font-family: "object-fit: cover; object-position: 75% 25%;"; +} +.has-crop .has-mediafocus-right-middle .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 25% 50%; + object-position: 25% 50%; + font-family: "object-fit: cover; object-position: 75% 50%;"; +} +.has-crop .has-mediafocus-right-bottom .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 25% 75%; + object-position: 25% 75%; + font-family: "object-fit: cover; object-position: 75% 75%;"; +} + +.has-aspectratio-4by3 .bu-blocks-slideshow-media:after { + padding-top: 75%; +} + +.has-aspectratio-1by1 .bu-blocks-slideshow-media:after { + padding-top: 100%; +} + +.has-aspectratio-3by4 .bu-blocks-slideshow-media:after { + padding-top: 133.3333333333%; +} + +.has-aspectratio-9by16 .bu-blocks-slideshow-media:after { + padding-top: 177.7777777778%; +} + +.wp-block-editorial-slideshow .bu-blocks-slideshow-caption-track { + color: #444; +} +.wp-block-editorial-slideshow .bu-blocks-slideshow-controls-previous, +.wp-block-editorial-slideshow .bu-blocks-slideshow-controls-next, +.wp-block-editorial-slideshow .bu-blocks-slideshow-caption-expander { + color: #666; +} +.wp-block-editorial-slideshow .bu-blocks-slideshow-caption-container-collapsed .bu-blocks-slideshow-caption-track { + background: linear-gradient(to bottom, #444 0%, transparent 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} /*!***************************************************************************************************************************************************************************************************************************************************!*\ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/blocks/stat/style.scss ***! \***************************************************************************************************************************************************************************************************************************************************/ diff --git a/dist/style-blocks.css b/dist/style-blocks.css index a01db713..24c2a3ef 100644 --- a/dist/style-blocks.css +++ b/dist/style-blocks.css @@ -4350,6 +4350,309 @@ h4.wp-block-editorial-headline .wp-block-editorial-headline-posttext { .wp-block-editorial-relatedstories .wp-block-editorial-relatedstories-article-category span { background: #666; } +/*!********************************************************************************************************************************************************************************************************************************************************!*\ + !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/blocks/slideshow/style.scss ***! + \********************************************************************************************************************************************************************************************************************************************************/ +.bu-blocks-slideshow-media-track::after, .bu-blocks-editorial-slideshow::after { + display: table; + clear: both; + content: ""; +} + +/* + This mixin can be used to set the object-fit: + @include object-fit(contain); + + or object-fit and object-position: + @include object-fit(cover, top); +*/ +.bu-blocks-editorial-slideshow { + margin-bottom: 1em; +} + +.bu-blocks-slideshow-media-container { + overflow-x: hidden; + position: relative; +} +.bu-blocks-slideshow-media-container .back, +.bu-blocks-slideshow-media-container .forward { + display: block; + position: absolute; + top: 0; + width: 50px; + height: 100%; + z-index: 1; +} +.bu-blocks-slideshow-media-container .back { + left: 0; +} +.bu-blocks-slideshow-media-container .forward { + right: 0; +} + +.bu-blocks-slideshow-media-track { + position: relative; + list-style: none; + padding: 0; + margin: 0; + margin-bottom: 1em; + display: flex; + transition-property: transform, left; + transition-duration: 750ms; + transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); /* easeOutBack */ +} + +.bu-blocks-slideshow-media-container:hover .bu-blocks-slideshow-media-track { + transform: translateX(-50px); +} +.bu-blocks-slideshow-media-container .back:hover ~ .bu-blocks-slideshow-media-track { + transform: translateX(50px); +} +.bu-blocks-slideshow-media-container .forward:hover ~ .bu-blocks-slideshow-media-track { + transform: translateX(-50px); +} +.bu-blocks-slideshow-media-container:active .bu-blocks-slideshow-media-track { + transform: translateX(0px); +} +.bu-blocks-slideshow-media-container .back:active ~ .bu-blocks-slideshow-media-track { + transform: translateX(0px); +} +.bu-blocks-slideshow-media-container .forward:active ~ .bu-blocks-slideshow-media-track { + transform: translateX(0px); +} + +.bu-blocks-slideshow-media { + display: flex; + position: relative; + text-align: center; + overflow: hidden; + float: left; + margin: 0 1px; +} +.bu-blocks-slideshow-media:before { + content: ""; + display: block; + position: absolute; + width: 100%; + height: 100%; + top: 0%; + left: 0%; + background: #000; +} +.bu-blocks-slideshow-media:after { + content: ""; + display: block; + padding-top: 56.25%; +} + +.bu-blocks-slideshow-media-backfill { + content: ""; + display: block; + position: absolute; + height: 100%; + top: 0%; + left: 1px; + right: 1px; + background-repeat: no-repeat; + background-size: cover; + background-position: center; + opacity: 0.75; + filter: blur(10px); + transform: scale(1.25); +} + +.bu-blocks-slideshow-media-actual { + -o-object-fit: contain; + object-fit: contain; + font-family: "object-fit: contain"; + height: 100%; + position: absolute; + width: 100%; +} + +.has-shownextup .bu-blocks-slideshow-media-track { + transform: translateX(-50px); +} +.has-shownextup .bu-blocks-slideshow-media-container:hover .bu-blocks-slideshow-media-track { + transform: translateX(0px); +} +.has-shownextup .bu-blocks-slideshow-media-container .back:hover ~ .bu-blocks-slideshow-media-track { + transform: translateX(50px); +} +.has-shownextup .bu-blocks-slideshow-media-container .forward:hover ~ .bu-blocks-slideshow-media-track { + transform: translateX(-50px); +} +.has-shownextup .bu-blocks-slideshow-media-container:active .bu-blocks-slideshow-media-track { + transform: translateX(-50px); +} +.has-shownextup .bu-blocks-slideshow-media-container .back:active ~ .bu-blocks-slideshow-media-track { + transform: translateX(-50px); +} +.has-shownextup .bu-blocks-slideshow-media-container .forward:active ~ .bu-blocks-slideshow-media-track { + transform: translateX(0px); +} + +.bu-blocks-slideshow-caption-track { + overflow: hidden; + margin: 0; + margin-bottom: 1em; + padding: 0; + list-style: none; + display: flex; + align-items: start; + position: relative; + transition-property: max-height; + transition-duration: 250ms; + transition-timing-function: ease-in-out; +} +.bu-blocks-slideshow-caption-track p { + margin: 0; +} + +.bu-blocks-slideshow-caption-container { + float: right; + width: calc(85% - 30px / 2); + overflow-x: hidden; + margin-left: 15px; +} +@media (min-width: 500px) { + .bu-blocks-slideshow-caption-container { + width: calc(90% - 30px / 2); + } +} + +.bu-blocks-slideshow-controls { + float: left; + width: 15%; +} +@media (min-width: 500px) { + .bu-blocks-slideshow-controls { + width: 10%; + } +} + +.bu-blocks-slideshow-controls-previous, +.bu-blocks-slideshow-controls-next { + display: block; + width: 50%; + float: left; + text-align: center; + padding: 0.25em 0; +} +.bu-blocks-slideshow-controls-previous > span:before, +.bu-blocks-slideshow-controls-next > span:before { + margin: 0; +} + +.bu-blocks-slideshow-caption-container-collapsed .bu-blocks-slideshow-caption-track { + max-height: 1.6em; + background: linear-gradient(to bottom, #444 0%, transparent 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.bu-blocks-slideshow-caption-expander { + display: inline-block; + font-size: 0.75em; +} + +.has-crop .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; +} +.has-crop .has-mediafocus-left-top .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 25% 25%; + object-position: 25% 25%; + font-family: "object-fit: cover; object-position: 25% 25%;"; +} +.has-crop .has-mediafocus-left-middle .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 25% 50%; + object-position: 25% 50%; + font-family: "object-fit: cover; object-position: 25% 50%;"; +} +.has-crop .has-mediafocus-left-bottom .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 25% 75%; + object-position: 25% 75%; + font-family: "object-fit: cover; object-position: 25% 75%;"; +} +.has-crop .has-mediafocus-center-top .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 50% 25%; + object-position: 50% 25%; + font-family: "object-fit: cover; object-position: 50% 25%;"; +} +.has-crop .has-mediafocus-center-middle .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 50% 50%; + object-position: 50% 50%; + font-family: "object-fit: cover; object-position: 50% 50%;"; +} +.has-crop .has-mediafocus-center-bottom .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 50% 75%; + object-position: 50% 75%; + font-family: "object-fit: cover; object-position: 50% 75%;"; +} +.has-crop .has-mediafocus-right-top .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 75% 25%; + object-position: 75% 25%; + font-family: "object-fit: cover; object-position: 75% 25%;"; +} +.has-crop .has-mediafocus-right-middle .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 75% 50%; + object-position: 75% 50%; + font-family: "object-fit: cover; object-position: 75% 50%;"; +} +.has-crop .has-mediafocus-right-bottom .bu-blocks-slideshow-media-actual { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 75% 75%; + object-position: 75% 75%; + font-family: "object-fit: cover; object-position: 75% 75%;"; +} + +.has-aspectratio-4by3 .bu-blocks-slideshow-media:after { + padding-top: 75%; +} + +.has-aspectratio-1by1 .bu-blocks-slideshow-media:after { + padding-top: 100%; +} + +.has-aspectratio-3by4 .bu-blocks-slideshow-media:after { + padding-top: 133.3333333333%; +} + +.has-aspectratio-9by16 .bu-blocks-slideshow-media:after { + padding-top: 177.7777777778%; +} + +.wp-block-editorial-slideshow .bu-blocks-slideshow-caption-track { + color: #444; +} +.wp-block-editorial-slideshow .bu-blocks-slideshow-controls-previous, +.wp-block-editorial-slideshow .bu-blocks-slideshow-controls-next, +.wp-block-editorial-slideshow .bu-blocks-slideshow-caption-expander { + color: #666; +} +.wp-block-editorial-slideshow .bu-blocks-slideshow-caption-container-collapsed .bu-blocks-slideshow-caption-track { + background: linear-gradient(to bottom, #444 0%, transparent 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} /*!***************************************************************************************************************************************************************************************************************************************************!*\ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/blocks/stat/style.scss ***! \***************************************************************************************************************************************************************************************************************************************************/ diff --git a/dist/style-blocks.css.map b/dist/style-blocks.css.map index 9aac18ef..796e7297 100644 --- a/dist/style-blocks.css.map +++ b/dist/style-blocks.css.map @@ -1 +1 @@ -{"version":3,"file":"./style-blocks.css","mappings":";;;AAAA,gBAAgB;AAAhB;;;;;CAAA;AC0HC;EAjCA,YA1CuB;EA2CvB;EACA,+BAtEyC;EAuEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAoBC;ADnGF;;ACuCC;EAEC;ADrCF;ACwCC;EACC;ADtCF;AC4IC;EAYE,YAlBQ;ADnIX;;AC6BC;EAEC;AD3BF;AC8BC;EACC;AD5BF;ACkIC;EAYE,YAlBQ;ADzHX;;AE7CA;;;;;;CAAA;AFUA;EACC;AA6CD,C;;;;AGkHA;EC3JC;EACA;EACA;ACbD;;AF0QE;EC9MA;ACxDF;;AC4oCE;EHlxBC;ICnXF;IACA;IACA;IA+CC;EChDA;AACF;ACmoCE;EHlxBC;ICnXF;IACA;IACA;IA+CC;ECxCA;AACF;AHzBA;;;;;;CAAA;AKUA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;AFuBD;AErBC;EACC;AFuBF;AEpBC;EACC,WCuwByC;EDtwBzC;EACA;EACA;AFsBF;AEnBC;EAKC;EACA;EACA;AFiBF;AEdC;EACC;EACA;EACA;AFgBF;ACwlCE;EC3mCD;IAME;IACA;EFiBD;AACF;AEdC;EACC;AFgBF;AC+kCE;EChmCD;IAIE;IACA;EFiBD;AACF;AEdC;EAOC;AFUF;AEPC;EACC,gBC0rByC;AHjrB3C;AEPE;EACC,WC03BwC;AHj3B3C;AENE;EACC,cCw1BwC;AHh1B3C;AEJC;EACC,gBCo0ByC;AH9zB3C;AEFE;EACC,WC42BwC;AHx2B3C;;AIjCC;EAEC;AJmCF;AIhCC;EACC;AJkCF;AI/BC;EACC;AJiCF;AI/BE;;;;;;;EAOC;AJiCH;AI7BC;EACC;AJ+BF;AI7BE;EACC;AJ+BH;AI3BC;EACC;AJ6BF;AI1BC;EACC;AJ4BF;AIzBC;EACC;AJ2BF;AIxBC;EACC;AJ0BF,C;;;;AHlIA;;;;;;CAAA;AQYC;EAEC;ACLF;AL2oCE;EIxoCD;IAKE;ECJD;AACF;;ADOA;EACC;ACJD;ADKC;EACC;EACA;EACA;EACA;EACA;ACHF;ADKC;EACC;EACA;EACA;EACA;EACA;ACHF;;ADQE;EACC;ACLH;;ADWE;EACC;ACRH;;ADcE;EACC;ACXH;;ADiBE;EACC;ACdH;;ADoBE;EACC;ACjBH,C;;;;ATpDA;;;;;;CAAA;AUUA;;EAEC;ACFD;;ADKA;EN6YC,mCM5YA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ACED;ADCE;ENiYD,mCMhYE;EACA;EACA,WJ8zBwC;AKzzB3C;ADDC;EAIC;ACAF;ADGG;EACC;EACA;EACA;EACA;EACA;ACDJ;ADMG;EACC;ACJJ;ADSC;EACC,gBJ+0ByC;AKt1B3C;ADSE;EACC,gBJ6zBwC;AKp0B3C;ADUE;EACC,gBJkrBwC;EIjrBxC;ACRH;ADUG;EACC,gBJ+pBuC;AKvqB3C;ADYE;EACC,gBJ80BwC;AKx1B3C;ADYG;EACC,gBJ4zBuC;AKt0B3C;ADeC;EACC;ACbF;ADeE;EACC,kBJoyBwC;AKjzB3C;ADgBE;EACC,kBJwqBwC;AKtrB3C;ADgBG;EACC,kBJymBuC;AKvnB3C;ADkBE;EACC,kBJszBwC;AKt0B3C;ADkBG;EACC,kBJoyBuC;AKpzB3C;ADqBC;EACC;ACnBF;ADsBC;EACC;ACpBF;ADsBE;EACC;ACpBH;;ACnCC;EACC;ADsCF;ACnCC;EACC;ADqCF;AC5BE;EACC;AD8BH;AC3BE;EACC;AD6BH;ACzBC;EACC;AD2BF;ACrBE;EACC;ADuBH;ACpBE;EACC;ADsBH;ACjBE;EACC;ADmBH;ACZE;EACC;ADcH;ACIE;EACC;ADFH;ACSE;EACC;ADPH;ACyBE;EACC;ADvBH;AC8BE;EACC;AD5BH;AC8CE;EACC;AD5CH;ACmDE;EACC;ADjDH;ACmEE;EACC;ADjEH;ACwEE;EACC;ADtEH;ACuGK;EACC;ADrGN;ACiHK;EACC;AD/GN;AC2HK;EACC;ADzHN;ACqIK;EACC;ADnIN,C;;;;AX9JA;;;;;;CAAA;AaWC;EACC;ACHF;ADOE;EACC;ACLH;ADSC;EACC;ACPF;;ADWA;EACC;ACRD;ADUC;EACC;EACA;ACRF;ADWC;EACC;ACTF;;ADcC;EAEC;ACZF;AfkCC;EAEC;AejCF;AfoCC;EACC;AelCF;AfwIC;EAnFA,YA1CuB;EA2CvB;EACA,+BAtEyC;EAuEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA2EG;EAKD,gBAlBQ;Ae9GX;ADZE;EACC;ACcH;ADVC;EACC;EACA;ACYF;ADVE;EACC;ACYH;;ADPA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ACSD;AffC;EAEC;AegBF;AfbC;EACC;AeeF;AfuFC;EAnFA,YA1CuB;EA2CvB;EACA,+BAtEyC;EAuEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA2EG;EAKD,gBAlBQ;Ae7DX;ADjCC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ACmCF;ADhCC;EAEC;ACiCF;AD9BC;EACC;ACgCF;;AC7DE;EACC,sBALS;EAMT;ADgEH;AC5DG;EACC,gBAXQ;EAYR;AD8DJ;AC1DE;EACC,sBAjBS;EAkBT;AD4DH;ACzDG;EACC;AD2DJ,C;;;;AEzIC;EACC;AAAF,C;;;;AhBFA;;;;;;CAAA;AiBUA;EACC;ACFD;ADIC;EACC;EACA;EACA;EACA;ACFF;ADKC;EACC;KAAA;UAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ACHF;ADMC;EACC;EACA;EACA;ACJF;AnBgCC;EAEC;AmB/BF;AnBkCC;EACC;AmBhCF;AnBsIC;EAnFA,YA1CuB;EA2CvB;EACA,+BAtEyC;EAuEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA2EG;EAKD,YAlBQ;AmB5GX;ADnBE;EACC;EACA;EACA;EACA;EACA;EACA;ACqBH;ADlBE;EACC;EACA;ACoBH;ADlBG;EACC;EACA;ACoBJ;ADdC;EACC;ACgBF;ADTE;EACC;ACWH;ADRE;EACC;ACUH;ADPE;EACC;ACSH;ADNE;EACC;ACQH;ADEE;EACC;ACAH;ADKG;EACC;ACHJ;ADSG;EACC;ACPJ;ADmBE;EACC;ACjBH;ADqBE;EACC;ACnBH;ADsBE;EACC;EACA;ACpBH;AD0BC;EACC;EACA;EACA,mBXmY0C;EWlY1C;EACA;EACA;EACA;EACA;EACA;ACxBF;AD6BG;EACA;AC3BH;AD8BE;EACC;EACA;EACA;EACA;AC5BH;AD+BE;EACC;EACA;EACA;EACA;AC7BH;ADgCE;EAGC;EACA;AC9BH;ADkCE;EACC;EACA;EACA;EACA;AChCH;ADkCG;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AChCJ,C;;;;AdxHC;EACC;EACA;EACA;AelCF;;AlBsKA;EC3JC;EACA;EACA;AiBPD;;AlBoQE;EC9MA;AiBlDF;;AfsoCE;EHlxBC;ICnXF;IACA;IACA;IA+CC;EiB1CA;ElB4WC;ICnXF;IACA;IACA;IA+CC;EiBpCA;ElBsWC;ICnXF;IACA;IACA;IA+CC;EiB9BA;ElBgWC;ICnXF;IACA;IACA;IA+CC;EiBxBA;AACF;AnBzCA;;;;;;CAAA;AoBaE;EhB8GD,kBgB7G0B;EACxB;EACA;EACA;EACA;ADwCH;ACtCG;EpBZD,oBoBauB;EpBZpB,iBoBYoB;EpBNtB;EoBOC;AD0CJ;ACjBE;EACC;EACA;ADmBH;ACZC;EAMC;EACA;EACA;ADSF;ACEE;EAEC;ADDH;ACOE;EAEC;ADNH;ACYE;EAEC;ADXH;ACeC;EAEC;EACA;ADdF;Af8jCE;EgBnjCD;IAME;EDbD;AACF;ACgBC;EAEC;EACA;ADfF;AfqjCE;EgBziCD;IAME;EDdD;AACF;ACmBC;EACC,gBd0oByC;Aa3pB3C;ACmBE;EACC,Wd00BwC;Aa31B3C;ACoBE;;;EAGC,cdsyBwC;AaxzB3C;ACqBE;EAEC;ADpBH;ACwBC;EACC,gBd6wByC;AanyB3C;ACwBE;EAEC,kBdszBwC;Aa70B3C;;AC4BA;EAEC;EACA;EACA;AD1BD;AC4BC;EAEC;EACA;EACA;EACA;EACA;EACA;AD3BF;AC8BC;EACC;EACA;AD5BF;AC+BC;EACC,WdsnByC;EcrnBzC;EACA;EACA;AD7BF;ACgCC;EACC;AD9BF;ACiCC;EACC;AD/BF;;ACmCA;EhBmOC,gCgBlOA;EAGA;EACA;EACA;EACA;EACA;AD9BD;ACgCC;EAEC;EACA;AD/BF;ACiCE;EAEC;EACA;EACA;EACA;EACA;EACA;ADhCH;ACmCE;EACC;EACA;ADjCH;ACqCC;EAEC;ADpCF;;ACwCA;EACC;EACA;ADrCD;;AC2CE;EACC;EACA;ADxCH;AC2CE;EAEC;AD1CH;AC6CE;EAEC;AD5CH;ACiDE;EACC;EACA;AD/CH;Af08BE;EgBt5BA;IAEE;EDlDF;AACF;;AEnJC;EAEC;AFqJF;AEjJE;EAEC;AFkJH;AE7IE;EACC;AF+IH;AE1IE;EACC;AF4IH;AE1IG;;;;;;;EAOC;AF4IJ;AEtIE;EACC;AFwIH;AEtIG;EACC;AFwIJ;AEnIG;EAEC;AFoIJ;AE9HE;EACC;AFgIH;AE5HG;EAEC;AF6HJ;AEvHE;EACC;AFyHH;AErHG;EAEC;AFsHJ;AEhHE;EACC;AFkHH;AE9GG;EAEC;AF+GJ;AEzGE;EACC;AF2GH;AEvGG;EAEC;AFwGJ,C;;;;AGrQC;EACC;ACAF;ADGC;EACC;ACDF;ADIC;EACC;ACFF;ADKC;EACC;ACHF;ADMC;EACC;ACJF;ADOC;EACC;ACLF;ADQC;EACC;ACNF;ADSC;EACC;ACPF;ADUC;EACC;ACRF;ADWC;EACC;ACTF;ADYC;EACC;ACVF,C;;;;AvBhCA;;;;;;CAAA;AwBWA;EACC;ACHD;ADIC;;EAEC;EACA;ACFF;ADGE;;EACC;ACAH;ADGC;EACC;ACDF;ADEE;EACC;ACAH;ADIE;EACC;ACFH;;ADOC;;EAEC;ACJF;;ADQC;;EAEC;ACLF;;ADSC;;EAEC;ACNF;;ACVE;EACC;ADaH,C;;;;ArBXC;EACC;EACA;EACA;AuBlCF;;A3BJA;;;;;;CAAA;A4BkBC;EACC;ADJF;ACMC;EACC;ADJF;ACQE;;;EAGC;ADNH;ACUE;EACC;OAAA;EACA;OAAA;ADRH;ACYE;;;;EAIC;EACA;EACA;EACA,cApCa;EAqCb;EACA;EACA;ADVH;ACcC;EAEE;;;;IAIC;IACA;EDbF;AACF;ACmBE;EACC;ADjBH;ACsBE;;;EAGC;EACA;EACA;EACA;EACA;EACA;ADpBH;ACwBE;;;EAGC;EACA;EACA;EACA;EACA;EACA;ADtBH;AC2BC;EAGE;;;;;IAGC;EDzBF;AACF;ACgCE;EACC;AD9BH;ACgCE;EACC;EACA;AD9BH;ACgCE;;EAEC,WA/Ga;EAgHb,UAhHa;ADkFhB;ACgCE;EACC;AD9BH;ACgCE;;;EAGC;AD9BH;ACkCG;;;;;;EAGC;AD7BJ;;ACoCC;EACC;EACA;ADjCF;;AE9CE;;EAEC;AFiDH;AE5CE;;EAEC;AF8CH;AEzCE;;EAEC;AF2CH;AEtCE;;EAEC;AFwCH;AE1BE;;;EAGC;AF4BH;AEvBE;;;EAGC;AFyBH;AEpBE;;;EAGC;AFsBH;AEjBE;;;EAGC;AFmBH;AEbG;;;EAGC;AFeJ;AEVG;;;EAGC;AFYJ;AEPG;;;EAGC;AFSJ;AEJG;;;EAGC;AFMJ;AEFE;;;EAGC;AFIH;AEUE;;;EAGC;AFRH;AEaG;;;EAGC;EACA;AFXJ;AEgBG;;;EAGC;EACA;AFdJ;AEmBG;;;EAGC;EACA;AFjBJ;AEsBG;;;EAGC;EACA;AFpBJ;AE2BG;;;EAGC;AFzBJ;AE8BG;;;EAGC;AF5BJ;AEiCG;;;EAGC;AF/BJ;AEoCG;;;EAGC;AFlCJ,C;;;;AvB7LC;EACC;EACA;EACA;A0BlCF;;A9BJA;;;;;;CAAA;A+BEE;;E/BMA,oB+BJsB;E/BKnB,iB+BLmB;E/BOrB,2B+BP4B;E/BQzB,wB+BRyB;E/BS5B;A8BOH;ACVG;;E/BFD,oB+BIuB;E/BHpB,iB+BGoB;E/BDtB,2B+BC6B;E/BA1B;EACH;A8BeH;ACTG;;E/BXD,oB+BauB;E/BZpB,iB+BYoB;E/BVtB,2B+BU6B;E/BT1B,wB+BS0B;E/BR7B;A8BuBH;ACRG;;E/BpBD,oB+BsBuB;E/BrBpB,iB+BqBoB;E/BnBtB,2B+BmB6B;E/BlB1B,wB+BkB0B;E/BjB7B;A8B+BH;ACPG;;E/B7BD,oB+B+BuB;E/B9BpB,iB+B8BoB;E/B5BtB,2B+B4B6B;E/B3B1B,wB+B2B0B;E/B1B7B;A8BuCH;ACNG;;E/BtCD,oB+BwCuB;E/BvCpB,iB+BuCoB;E/BrCtB,2B+BqC6B;E/BpC1B,wB+BoC0B;E/BnC7B;A8B+CH;ACLG;;E/B/CD,oB+BiDuB;E/BhDpB,iB+BgDoB;E/B9CtB,2B+B8C6B;E/B7C1B,wB+B6C0B;E/B5C7B;A8BuDH;ACJG;;E/BxDD,oB+B0DuB;E/BzDpB,iB+ByDoB;E/BvDtB,2B+BuD6B;E/BtD1B,wB+BsD0B;E/BrD7B;A8B+DH;ACHG;;E/BjED,oB+BmEuB;E/BlEpB,iB+BkEoB;E/BhEtB,2B+BgE6B;E/B/D1B,wB+B+D0B;E/B9D7B;A8BuEH;ACFG;;E/B1ED,oB+B4EuB;E/B3EpB,iB+B2EoB;E/BzEtB,2B+ByE6B;E/BxE1B,wB+BwE0B;E/BvE7B;A8B+EH;;A1BwjCE;E4BjnCA;IACC;EF6DD;AACF;A1BkjCE;E4B5mCA;IACC;EF6DD;AACF;A1B6iCE;E4BvmCA;IACC;EF6DD;AACF;A1BwiCE;E4BlmCA;IACC;EF6DD;AACF;;A1BmiCE;E4B3lCA;IACC;EF4DD;AACF;A1B6hCE;E4BtlCA;IACC;EF4DD;AACF;A1BwhCE;E4BjlCA;IACC;EF4DD;AACF;A1BmhCE;E4B5kCA;IACC;EF4DD;AACF;;A1B8gCE;E4BrkCA;IACC;EF2DD;EEzDA;IACC;IACA;IACA;IACA;IACA;IACA;IACA,kB1B+dyC;I0B9dzC,mB1B8dyC;EwBna1C;EEzDA;IACC;IACA;EF2DD;EExDC;IACC;EF0DF;EEtDC;IACC;EFwDF;EEpDC;IACC;EFsDF;EElDC;IACC;IACA;IACA;EFoDF;EEhDC;IACC;IACA;IACA;EFkDF;AACF;;A1Bu+BE;E4BphCF;IAEE;EFgDA;AACF;A1Bi+BE;E4BphCF;IAME;EFiDA;AACF;A1B49BE;E4BphCF;IAUE;EFkDA;AACF;A1Bu9BE;E4BphCF;IAcE;EFmDA;AACF;;AEhDA;EAIC;EACA;AFgDD;AE7CE;EACC;EACA;EACA;EACA;EACA;EACA;AF+CH;AE3CC;;;;EAIC;AF6CF;AE1CC;EACC;AF4CF;AErCC;EACC;AFuCF;AEpCC;EACC;EACA;EAEA;EAEA;EAEA;EAEA;AFsCF;AEpCC;;EAEC;AFsCF;AEnCC;E5BoNA,uC4BnNC;EACA;EACA;EACA;AFyCF;AEtCE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AFwCH;AErCE;EACC;EACA;AFuCH;AEpCE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AFsCH;AE9BE;EACC;AFgCH;AE5BG;;;EAEC;AF+BJ;A1B+3BE;E4B35BC;IAEE;EF8BH;EE7BG;IACC;IACA;EF+BJ;AACF;AEjBG;EACC;AFmBJ;A1Bm3BE;E4Bv4BC;IAIE;EFoBH;AACF;AEdE;EACC;EACA;AFgBH;AEbE;EACC;AFeH;AEZE;EACC;AFcH;AETE;EACC;AFWH;A1Bi2BE;E4B72BA;IAIE;EFYF;AACF;A1B41BE;E4B72BA;IAOE;EFcF;AACF;A1Bu1BE;E4B72BA;IAUE;EFgBF;AACF;A1Bk1BE;E4B72BA;IAaE;EFkBF;AACF;AEfE;EAEC;EAEA;AFiBH;AEdE;EAEC;AFgBH;AEbE;EAEC;AFeH;AEPC;EAEC;AFQF;AELE;EACC;AFOH;A1ByzBE;E4Bj0BA;IAIE;EFQF;AACF;A1BozBE;E4Bj0BA;IAQE;EFSF;AACF;AENE;EACC;EACA,kB1BuNyC;E0BtNzC,mB1BsNyC;E0BrNzC;AFQH;A1ByyBE;E4BrzBA;IAOE;IACA;EFSF;AACF;AENE;EACC;EACA;AFQH;AEJG;EAEC;EACA;EACA;EACA,WAvCa;EAwCb;AFKJ;A1BwxBE;E4BnyBC;IASE;EFMH;AACF;A1BmxBE;E4BnyBC;IAaE;EFOH;AACF;AEJG;EACC;AFMJ;AEHG;EACC;E5BmEH,uBAgEoB;A0BzHrB;AELE;EACC;EACA,kB1B0KyC;E0BzKzC,mB1ByKyC;AwBlK5C;AEFI;EAEC;AFGL;AECG;EACC;EACA;EACA;AFCJ;A1BsvBE;E4B1vBC;IAME;IACA;IACA;IACA;EFEH;AACF;A1B8uBE;E4BruBG;IACC;EFNJ;EEKG;IACC;EFHJ;EEEG;IACC;EFAJ;EEDG;IACC;EFGJ;EEJG;IACC;EFMJ;EEPG;IACC;EFSJ;EEVG;IACC;EFYJ;EEbG;IACC;EFeJ;EEhBG;IACC;EFkBJ;AACF;AEbE;EACC,kB1BiIyC;E0BhIzC,mB1BgIyC;AwBjH5C;A1B6sBE;E4BvtBE;IACC;IACA;IACA;IACA;EFaH;AACF;AERC;EACC,kB1BgH0C;E0B/G1C,mB1B+G0C;E0B9G1C;AFUF;AERE;EACC;EACA;AFUH;A1B4rBE;E4BnsBA;IAEE;IACA;EFSF;AACF;AEFE;EACC;EACA;AFIH;AEAG;EACC;AFEJ;A1B+qBE;E4B7sBD;IAiCE;EFCD;EECC;IACC;EFCF;EECC;;IAEC;IACA;EFCF;EEGC;IACC;EFDF;EEIC;IACC;IACA;IACA;IACA;EFFF;EEMC;IACC;EFJF;AACF;A1BspBE;E4B9oBC;;IAEC;EFLF;AACF;AESC;EACC;AFPF;AEUC;EACC;AFRF;AEUE;EACC;AFRH;AEWE;EACC;EACA;AFTH;A1BmoBE;E4B/mBC;IAEE;EFlBH;AACF;A1B8nBE;E4BxmBA;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;EFpBF;AACF;AEwBE;EACC;AFtBH;;AE2BA;EACC;EACA;EACA;EACA;EACA;EACA;AFxBD;AE0BC;;EAEC;AFxBF;;AE6BC;EACC;AF1BF;;A1B+lBE;E4BhkBD;IAEE;IACA;IACA;EF5BD;AACF;;AEuCC;;;;EAIC;EACA;EACA;EACA;AFpCF;AEsCC;EACC;AFpCF;AEsCC;EACC;AFpCF;;AE4DC;EACC;EACA;EACA;EACA;EACA;AFzDF;AE4DC;EACC;EACA;EACA;EACA;EACA;AF1DF;AE4DC;EAEC;EACA;EACA;EACA;EACA;EACA;AF3DF;AE8DC;EACC;EACA;AF5DF;AE+DC;EACC;EACA;EACA;AF7DF;;AG9iBC;;EAEC;AHijBF;AG9iBC;EACC;AHgjBF;AG9iBE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AHgjBH;AG7iBE;EACC;AH+iBH;AG5iBE;EACC;AH8iBH;AG3iBE;EACC;AH6iBH;AG1iBE;EACC;AH4iBH;AGziBE;EACC;AH2iBH;AGxiBE;EACC;AH0iBH;AGviBE;EACC;AHyiBH;AGtiBE;EACC;AHwiBH;AGriBE;EACC;AHuiBH;AGniBC;EACC;AHqiBF;AGjiBE;EACC;AHmiBH;A1BqfE;E6BrhCA;IAEE;EHkiBF;AACF;A1BgfE;E6B3gCE;;;;IAIC;EH8hBH;AACF;A1BweE;E6B9/BC;IACC;EHyhBF;EGvhBE;IACC;EHyhBH;EGthBE;IACC;EHwhBH;EGrhBE;IACC;EHuhBH;EGphBE;IACC;EHshBH;EGnhBE;IACC;EHqhBH;EGlhBE;IACC;EHohBH;EGjhBE;IACC;EHmhBH;EGhhBE;IACC;EHkhBH;EG/gBE;IACC;EHihBH;EG9gBE;IACC;EHghBH;EG3gBE;;;;;;;IAIC;EHghBH;AACF;A1B4bE;E6Bp8BE;IACC;EH2gBH;EGvgBG;;;;IAIC;EHygBJ;AACF;AGpgBC;EACC;AHsgBF;A1B8aE;E6Bt6BE;;IAEC;EH2fH;AACF;A1BwaE;E6B55BE;IACC;EHufH;EGrfG;IACC;EHufJ;EGpfG;IACC;EHsfJ;EGnfG;IACC;EHqfJ;EGlfG;IACC;EHofJ;EGjfG;IACC;EHmfJ;EGhfG;IACC;EHkfJ;EG/eG;IACC;EHifJ;EG9eG;IACC;EHgfJ;EG7eG;IACC;EH+eJ;EG5eG;IACC;EH8eJ;EGreE;;;IAEC;EHweH;AACF;A1BgYE;E6Bl2BG;IACC;EHqeJ;EG7dG;;IAEC;EH+dJ;AACF;AG3dE;EACC;AH6dH;A1BoXE;E6B10BE;;;;IAIC;EHydH;AACF;A1B4WE;E6B/zBE;IACC;EHsdH;EGpdG;IACC;EHsdJ;EGndG;IACC;EHqdJ;EGldG;IACC;EHodJ;EGjdG;IACC;EHmdJ;EGhdG;IACC;EHkdJ;EG/cG;IACC;EHidJ;EG9cG;IACC;EHgdJ;EG7cG;IACC;EH+cJ;EG5cG;IACC;EH8cJ;EG3cG;IACC;EH6cJ;EGzcE;;;;;;;IAIC;EH8cH;AACF;A1BgUE;E6BvwBG;IACC;EH0cJ;EGvcG;;;;IAIC;EHycJ;AACF;AGpcE;EACC;AHscH;A1BkTE;E6BjvBE;;;;IAIC;EHkcH;AACF;A1B0SE;E6BruBE;IACC;EH8bH;EG5bG;IACC;EH8bJ;EG3bG;IACC;EH6bJ;EG1bG;IACC;EH4bJ;EGzbG;IACC;EH2bJ;EGxbG;IACC;EH0bJ;EGvbG;IACC;EHybJ;EGtbG;IACC;EHwbJ;EGrbG;IACC;EHubJ;EGpbG;IACC;EHsbJ;EGnbG;IACC;EHqbJ;EGjbE;;;;;;;IAIC;EHsbH;AACF;A1B8PE;E6B7qBG;IACC;EHkbJ;EG/aG;;;;IAIC;EHibJ;AACF;AG5aE;EACC;AH8aH;A1BgPE;E6BvpBE;;;;IAIC;EH0aH;AACF;A1BwOE;E6B3oBE;IACC;EHsaH;EGpaG;IACC;EHsaJ;EGnaG;IACC;EHqaJ;EGlaG;IACC;EHoaJ;EGjaG;IACC;EHmaJ;EGhaG;IACC;EHkaJ;EG/ZG;IACC;EHiaJ;EG9ZG;IACC;EHgaJ;EG7ZG;IACC;EH+ZJ;EG5ZG;IACC;EH8ZJ;EG3ZG;IACC;EH6ZJ;EGzZE;;;;;;;IAIC;EH8ZH;AACF;A1B4LE;E6BnlBG;IACC;EH0ZJ;EGvZG;;;;IAIC;EHyZJ;AACF;AGpZE;EACC;AHsZH;A1B8KE;E6B7jBE;;;;IAIC;EHkZH;AACF;A1BsKE;E6BjjBE;IACC;EH8YH;EG5YG;IACC;EH8YJ;EG3YG;IACC;EH6YJ;EG1YG;IACC;EH4YJ;EGzYG;IACC;EH2YJ;EGxYG;IACC;EH0YJ;EGvYG;IACC;EHyYJ;EGtYG;IACC;EHwYJ;EGrYG;IACC;EHuYJ;EGpYG;IACC;EHsYJ;EGnYG;IACC;EHqYJ;EGjYE;;;;;;;IAIC;EHsYH;AACF;A1B0HE;E6BzfG;IACC;EHkYJ;EG/XG;;;;IAIC;EHiYJ;AACF;AG5XE;EACC;AH8XH;A1B4GE;E6BneE;;;;IAIC;EH0XH;AACF;A1BoGE;E6BvdE;IACC;EHsXH;EGpXG;IACC;EHsXJ;EGnXG;IACC;EHqXJ;EGlXG;IACC;EHoXJ;EGjXG;IACC;EHmXJ;EGhXG;IACC;EHkXJ;EG/WG;IACC;EHiXJ;EG9WG;IACC;EHgXJ;EG7WG;IACC;EH+WJ;EG5WG;IACC;EH8WJ;EG3WG;IACC;EH6WJ;EGzWE;;;;;;;IAIC;EH8WH;AACF;A1BwDE;E6B/ZG;IACC;EH0WJ;EGvWG;;;;IAIC;EHyWJ;AACF;AGpWE;EACC;AHsWH,C;;;;AI1mCA,gBAAgB;A9BmCf;EACC;EACA;EACA;A8BjCF;;AjCuBA;EAEC;EACA,aKsiB4C;ELriB5C;AiCrBD;A9ByoCE;EHxnCF;IAWE,gBK2GyC;IL1GzC,kBkCoNyC;ED5OzC;AACF;A9BmoCE;EHxnCF;IAgBE,gBKoHyC;E4B3IzC;AACF;A9B8nCE;EHxnCF;IAoBE,iBK8HyC;IL7HzC;EiCtBA;AACF;;AjC8IA;EC3JC;EACA;EACA;AgCiBD;;AjC4OE;EC9MA;AgC1BF;;A9B8mCE;EHlxBC;ICnXF;IACA;IACA;IA+CC;EgClBA;EjCoVC;ICnXF;IACA;IACA;IA+CC;EgCZA;AACF;AE2aC;EAjBA;EACA;AFvZD;A9B2lCE;EgCprBD;IAbC;IACA;EFtZA;AACF;;AEiaC;EAjBA;EACA;AF5YD;A9BglCE;EgCprBD;IAbC;IACA;EF3YA;AACF;;AEsZC;EAjBA;EACA;AFjYD;A9BqkCE;EgCprBD;IAbC;IACA;EFhYA;AACF;;AlCrFA;;;;;;CAAA;AqCUA;EAEC;EACA;AHoFD;A9BmjCE;EiC1oCF;IAME;EHqFA;AACF;AGnFC;EACC;AHqFF;;AGjFA;EACC,oB/B4iB4C;A4Bxd7C;A9BuiCE;EiC5nCF;IAIE;EHqFA;AACF;AGnFC;EACC;EACA;AHqFF;A9B8hCE;EiCrnCD;IrCvBC,oBqC4BsB;IrC3BnB,iBqC2BmB;IrCrBrB;IqCsBA;EHwFD;AACF;A9BshCE;EiCrnCD;IAUE;EHyFD;AACF;A9BihCE;EiCrnCD;IAcE;EH0FD;AACF;AGvFC;EACC;AHyFF;;AGnFC;EACC;EACA;EACA;EACA;AHsFF;AGpFE;;;;EAIC;EACA;EACA;EACA;EACA;AHsFH;;AGjFA;EACC,oB/Byf4C;A4Bra7C;A9Bo/BE;EiCzkCF;IAIE;EHqFA;AACF;AGnFC;EACC;AHqFF;;AGjFA;EACC;EACA;EACA;AHoFD;A9Bs+BE;EiC7jCF;IAME;EHqFA;AACF;;AGlFA;EAEC;EACA;AHoFD;;AGjFA;EAEC;AHmFD;;AGhFA;EACC;EACA,oB/B0c2C;A4BvX5C;AGnEC;EAGC,mDC3E0C;ED4E1C;AHmEF;A9B+8BE;EiCthCD;IAOE;EHoED;AACF;AGjEC;EAEC;AHkEF;AnC7IC;EAEC;AmC8IF;AnC3IC;EACC;AmC6IF;AnCvCC;EAnFA,YA1CuB;EA2CvB;EACA,+BAtEyC;EAuEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAyEG;EAOD,gBAlBQ;AmCiEX;AG1FE;EjClBD,kBiCmB0B;EACxB,sB/BujBwC;E+BtjBxC,W/BqzBwC;E+BpzBxC;EACA;EACA;EACA;AH+FH;AG5FE;EACC;AH8FH;AnCtLC;EAEC;AmCuLF;AnCpLC;EACC;AmCsLF;AnChFC;EAnFA,YA1CuB;EA2CvB;EACA,+BAtEyC;EAuEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA2EG;EAKD,YAlBQ;AmC0GX;AGjHE;EACC;AHmHH;;AG9GA;EAEC;AHgHD;;AG7GA;EACC;EACA;AHgHD;AG9GC;EACC;AHgHF;AG7GC;EACC,mDC7H0C;ED8H1C;EACA;AH+GF;AG7GE;EAEC;AH8GH;;AK5OC;EACC;EACA;AL+OF;AKzOE;EACC;AL2OH;AKhNE;;;;EACC;ALqNH;AK/ME;EAEC;EACA;EACA;ALgNH;AK9MG;EACC;ALgNJ;AK7MG;EACC;AL+MJ,C;;;;A9B7RC;EACC;EACA;EACA;AoClCF;;AvCsKA;EC3JC;EACA;EACA;AsCPD;;AvCoQE;EC9MA;AsClDF;;AzC4GC;EAjCA,YA1CuB;EA2CvB;EACA,+BAtEyC;EAuEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAoBC;AyC1FF;;AzC8BC;EAEC;AyC5BF;AzC+BC;EACC;AyC7BF;AzCmIC;EAYE,gBAlBQ;AyC1HX;;AxC5CA;;;;;;CAAA;AyCSA;EACE;AD6CF;;ACrCG;;EAEC,WnCi7BuC;AkCz4B3C;;AChCA;EACC;EAEA;EACA,gBnCq6B0C;EmCp6B1C;ADkCD;ApCilCE;EqCxnCF;IAQE;EDmCA;AACF;ACjCC;EACC;EACA;ADmCF;AChCC;EAEC;EACA;EACA;EACA;EACA;ADiCF;ApCikCE;EqCxmCD;IASE;EDkCD;AACF;AChCE;EACC,WnCuuBwC;AkCrsB3C;AC9BC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ADgCF;;AC1BA;EAEC,gBnC20B0C;EmC10B1C;EACA;EACA;EACA;EACA;EACA;EACA;AD4BD;ACzBC;EACC;EACA;EACA;EACA;EACA;AD2BF;ACzBE;EACC;EACA;EACA;AD2BH;ACxBE;EzC5FA,oByC6FsB;EzC5FnB,iByC4FmB;EzCtFrB;EyCuFA;EACA;EACA;AD4BH;AC1BG;EACC;AD4BJ;ACzBG;EACC;AD2BJ;ACxBG;EACC;AD0BJ;ACvBG;EACC;ADyBJ;ACtBG;EACC;ADwBJ;ACrBG;EACC;ADuBJ;ACpBG;EACC;ADsBJ;ACnBG;EACC;ADqBJ;AClBG;EACC;ADoBJ;;ACbA;EACC;EACA;EACA;ADgBD;ApC++BE;EqClgCF;IAME;EDiBA;AACF;ACfC;;EAEC;ADiBF;ACdC;EACC;ADgBF;ApCm+BE;EqCp/BD;IAIE;EDiBD;AACF;ACdC;;EAEC,WnC4hByC;AkC5gB3C;;ACTC;;EAEC,gBnCquByC;AkCztB3C;ACRE;;EAEC,WnC6gBwC;AkCngB3C;ACPE;EACC,gBnCwwBwC;AkC/vB3C;;ACHC;;EAEC,gBnC8iByC;AkCxiB3C;ACFE;;EAEC,WnC6sBwC;AkCzsB3C;ACCE;;EAEC,WnCmvBwC;AkClvB3C;;ACOE;;;;;;;;EAIC,WnCufwC;AkCvf3C;;AEpKC;EACC;AFuKF;AErKE;;;EAGC;AFuKH;AEnKC;EACC;AFqKF;AEjKE;;EAEC;AFmKH;AEjKG;;;;;;EAGC;AFsKJ;AEhKE;;EAEC;AFkKH;AE5IE;;EAEC;AF8IH;AEzIE;;EAEC;AF2IH;AEtIE;;EAEC;AFwIH;AEnIE;;EAEC;AFqIH;AEhIE;;EAEC;AFkIH,C;;;;AG9QA,gBAAgB;AvCmCf;EACC;EACA;EACA;AuCjCF;;A5CqHC;EAjCA,YA1CuB;EA2CvB;EACA,+BAtEyC;EAuEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAoBC;A4CnGF;;A5CuCC;EAEC;A4CrCF;A5CwCC;EACC;A4CtCF;A5C4IC;EAYE,gBAlBQ;A4CnIX;;A5C6BC;EAEC;A4C3BF;A5C8BC;EACC;A4C5BF;A5CkIC;EAYE,YAlBQ;A4CzHX;;A5CmBC;EAEC;A4CjBF;A5CoBC;EACC;A4ClBF;A5CwHC;EAYE,YAlBQ;A4C/GX;;A3CvDA;;;;;;CAAA;A4CeC;EACC;ADkDF;AChDE;EACC;EACA;EAEA;ADiDH;AChDG;EACC;EACA;EACA;EACA;EACA;ADkDJ;AChDG;EACC;EACA;ADkDJ;AC7CK;EADD;IAEE;EDgDJ;EC9CI;IACC;EDgDL;AACF;ACzCC;EACC;EACA;EACA;AD2CF;ACxCC;EACC;EACA;EACA;AD0CF;ACxCE;EACC;AD0CH;ACxCG;EAEC;ADyCJ;ACrCE;EACC;ADuCH;ACpCE;EAlBD;IAmBE;EDuCD;ECrCC;IACC;IACA;IACA;IACA;IACA;IACA;IACA,WtCk3BuC;IsCj3BvC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EDuCF;AACF;ACpCE;EACC;ADsCH;ACnCC;;E5C3FC,oB4C6FqB;E5C5FlB,iB4C4FkB;E5CtFpB;E4CuFD;EACA;ADuCF;ACnCE;;EACC;ADsCH;ACjCE;;EACC;ADoCH;AC/BE;;EACC;ADkCH;AC7BE;;EACC;ADgCH;AC3BE;;EACC;AD8BH;AvCk/BE;EwCjhCA;;IAGE;EDiCF;AACF;AC5BE;;EACC;AD+BH;AC3BE;EACC;AD6BH;AC3BE;EACC;AD6BH;AC1BG;EACC;AD4BJ;AvC+9BE;EwCr/BE;IACC;EDyBH;ECvBE;IACC;EDyBH;AACF;ACpBE;EACC;ADsBH;ACpBE;EACC;ADsBH;ACpBE;EACC;ADsBH;ACpBE;EACC;ADsBH;ACnBG;EACC;ADqBJ;ACjBG;EACC;ADmBJ;AvCq8BE;EwCh9BE;IACC;EDcH;ECZE;IACC;EDcH;ECZE;IACC;EDcH;ECZE;IACC;EDcH;AACF;ACTE;EACC;ADWH;ACTE;EACC;ADWH;ACTE;EACC;ADWH;AvC86BE;EwCt7BC;IACC;EDWF;ECTC;IACC;EDWF;ECTC;IACC;EDWF;AACF;ACPE;EACC;ADSH;AvCg6BE;EwCt6BC;IACC;EDSF;AACF;ACLE;EACC;ADOH;AvCw5BE;EwC55BC;IACC;EDOF;AACF;ACHE;EACC;ADKH;AvCg5BE;EwCl5BC;IACC;EDKF;AACF;ACDE;EACC;ADGH;AvCw4BE;EwCx4BC;IACC;EDGF;AACF;ACEE;;EACC;ADCH;AvC+3BE;EwC73BC;;IACC;EDEF;ECAC;;IACC;EDGF;AACF;AvCq3BE;EwCr3BC;;IACC;EDIF;ECFC;;IACC;EDKF;AACF;ACAE;;EACC;ADGH;AvCu2BE;EwCv2BC;;IACC;EDIF;ECFC;;IACC;EDKF;AACF;AvC61BE;EwC/1BC;;IACC;EDMF;ECJC;;IACC;EDOF;AACF;ACFE;;EACC;ADKH;AvC+0BE;EwCj1BC;;IACC;EDMF;ECJC;;IACC;EDOF;AACF;AvCq0BE;EwCz0BC;;IACC;EDQF;ECNC;;IACC;EDSF;AACF;AvC2zBE;EwCj0BC;;IACC;EDUF;ECRC;;IACC;EDWF;AACF;AvCizBE;EwCnzBE;;;IACC;EDOH;ECLE;;;IACC;EDSH;AACF;AvCqyBE;EwC3yBE;;;IACC;EDWH;ECTE;;;IACC;EDaH;AACF;AvCyxBE;EwChyBE;;;IACC;EDYH;ECVE;;;IACC;EDcH;AACF;AvC6wBE;EwCxxBE;;;IACC;EDgBH;ECdE;;;IACC;EDkBH;AACF;AvCiwBE;EwC7wBE;;;IACC;EDiBH;ECfE;;;IACC;EDmBH;AACF;AvCqvBE;EwCrwBE;;;IACC;EDqBH;ECnBE;;;IACC;EDuBH;AACF;AvCyuBE;EwC7vBE;;;IACC;EDyBH;ECvBE;;;IACC;ED2BH;AACF;;AvC6tBE;EwCjvBA;IACC;EDwBD;ECtBC;IACC;EDwBF;ECvBE;IACC;EDyBH;ECpBA;IACC;IACA;IACA;EDsBD;AACF;AvC4sBE;EwC9tBE;IACC;EDqBH;ECnBE;IACC;EDqBH;AACF;AvCosBE;EwCptBE;IACC;EDmBH;ECjBE;IACC;EDmBH;AACF;AvC4rBE;EwC1sBE;IACC;EDiBH;ECfE;IACC;EDiBH;AACF;ACHG;EACC;ADKJ;;ACEA;ExCzEC,0EwC0EA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;ADID;ACFC;ExCpFA,8CwCqFC;EACA;EACA,gBtCiPyC;AqCzO3C;ACNE;ExCzFD,0EwC0FE;ExC5CF,mBwC6CsB;EACpB;ADgBH;ACbE;ExC/FD,2CwCgGE;EACA;ADmBH;AChBC;EACC;EACA;ADkBF;AChBC;EACC;ADkBF;AChBC;EACC;EACA;EACA;ADkBF;ACXC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;ADaF;ACXE;EACC;EACA;EACA;EACG;ADaN;ACXE;ExCpID,4EwCqIE;ExCvFF,qBwCwFsB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;KAAA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;ADoBH;ACjBC;ExC5JA,2CwC6JC;EACA;EACA;EACA;EACA;EACA;EACA,WtCsYyC;AqC/W3C;ACtBE;EACC,WtCoYwC;EsCnYxC;EACA;ADwBH;;ACnBA;EACC;EACA;ADsBD;AvCojBE;EwC5kBF;IAKE;IACA;EDuBA;AACF;ACrBC;EAEC;ADsBF;ACrBE;EACC;ADuBH;ACpBC;EAEC;ADqBF;ACnBE;EACC;ADqBH;AClBC;EAEC;ADmBF;ACjBE;EACC;ADmBH;ACfC;ExClcA,oBwCmcC;ExClcD,mBwCkcC;ExCjcD,gBwCicC;EACA,WtC0VyC;EsCzVzC;EACA;ADqBF;ACpBE;ExCvcD,oBwCwcE;ExCvcF,mBwCucE;ExCtcF,gBwCscE;AD0BH;ACxBE;ExC1cD,oBwC2cE;ExC1cF,mBwC0cE;ExCzcF,gBwCycE;AD8BH;AC3BE;EACC;AD6BH,C;;;;AEnpBA,gBAAgB;AzCmCf;EACC;EACA;EACA;AyCjCF;;A5C0DA;EAEC,ekCyM0C;AUjQ3C;AzC2oCE;EHrlCF;IAKE,ekCoNiD;EU3QjD;AACF;;A5CkFA;EACC,kBKud2C;ELtd3C,mBKsd2C;AuCriB5C;;A5CuJA;EC3JC;EACA;EACA;A2CQD;;A5CqPE;EC9MA;A2CnCF;;A5CiPE;EC9MA;A2C/BF;;A5C6OE;EC9MA;A2C3BF;;A7CrCA;;;;;;CAAA;A8CUA;EACC;ADqCD;;AClCA;EACC;EACA;EACA;ADqCD;AClCC;EACC;EACA;ADoCF;AClCE;EACC;EACA;ADoCH;ACjCC;EACC;ADmCF;AChCC;EACC;EACA;EACA;EACA;EACA;ADkCF;AChCC;E9ChCC,oB8CiCqB;E9ChClB,iB8CgCkB;E9C1BpB;E8C2BD;EACA;EACA;EACA;EACA;ADoCF;AClCC;EACC;ADoCF;AClCC;EACC;EACA;ADoCF;ACjCE;EACC;EACA;EACA;ADmCH;AChCC;EACC;EACA;ADkCF;AzCkjCE;E0CtlCD;IAKE;EDmCD;AACF;AChCC;EACC;ADkCF;AC7BG;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD8BJ;AC5BG;EACC;EACA;AD8BJ;AC5BG;EACC;EACA;AD8BJ;AC5BG;EACC;EACA;EACA;EACA;AD8BJ;AC7BI;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;AD8BL;AC5BI;EACC;AD8BL;AC5BI;EACC;AD8BL;AC1BE;EACC;AD4BH;AC1BG;EACC;AD4BJ;ACzBG;EACC;AD2BJ;ACdE;EAGC;EAEA;EAIA;EACA;ADeH;ACbE;EAIC;EACA;ADaH;ACXE;EACC;EACA;ADaH;ACLE;EACC;ADOH;ACJG;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ADMJ;AzCo9BE;E0Cp+BC;IAYE;EDQH;AACF;ACLE;EACC;EACA;ADOH;ACJG;EACC;ADMJ;ACLI;EACC;ADOL;ACAG;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ADEJ;AzCy7BE;E0Cr8BC;IAYE;IACA;EDIH;AACF;AzCm7BE;E0Cr8BC;IAgBE;EDMH;AACF;ACHE;EACC;ADKH;ACJG;EACC;ADMJ;ACEE;E9CtOA,oB8CuOsB;E9CtOnB,iB8CsOmB;E9CpOrB,2B8CoO4B;E9CnOzB,wB8CmOyB;E9ClO5B;A6CsOH;ACAE;E9C3OA,oB8C4OsB;E9C3OnB,iB8C2OmB;E9CzOrB,2B8CyO4B;E9CxOzB,wB8CwOyB;E9CvO5B;A6C6OH;ACFE;E9ChPA,oB8CiPsB;E9ChPnB,iB8CgPmB;E9C9OrB,2B8C8O4B;E9C7OzB,wB8C6OyB;E9C5O5B;A6CoPH;ACJE;E9CrPA,oB8CsPsB;E9CrPnB,iB8CqPmB;E9CnPrB,2B8CmP4B;E9ClPzB,wB8CkPyB;E9CjP5B;A6C2PH;ACNE;E9C1PA,oB8C2PsB;E9C1PnB,iB8C0PmB;E9CxPrB,2B8CwP4B;E9CvPzB,wB8CuPyB;E9CtP5B;A6CkQH;ACRE;E9C/PA,oB8CgQsB;E9C/PnB,iB8C+PmB;E9C7PrB,2B8C6P4B;E9C5PzB,wB8C4PyB;E9C3P5B;A6CyQH;ACVE;E9CpQA,oB8CqQsB;E9CpQnB,iB8CoQmB;E9ClQrB,2B8CkQ4B;E9CjQzB,wB8CiQyB;E9ChQ5B;A6CgRH;ACZE;E9CzQA,oB8C0QsB;E9CzQnB,iB8CyQmB;E9CvQrB,2B8CuQ4B;E9CtQzB,wB8CsQyB;E9CrQ5B;A6CuRH;ACdE;E9C9QA,oB8C+QsB;E9C9QnB,iB8C8QmB;E9C5QrB,2B8C4Q4B;E9C3QzB,wB8C2QyB;E9C1Q5B;A6C8RH;ACdC;EACC;EACA;EACA;ADgBF;ACdE;EACC;EACA;EACA;EACA;EACA;EACA;ADgBH;ACZC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;ADcF;ACXC;EACC;EACA;EACA;EACA;EACA;EACA;ADaF;ACXE;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;ADYH;ACPE;EACC;ADSH;ACNE;EACC;ADQH;ACLE;EACC;ADOH;ACJE;EACC;ADMH;ACHE;EACC;ADKH;ACFE;EACC;ADIH;ACDE;EACC;ADGH;ACAE;EACC;ADEH;ACCE;EACC;ADCH;ACEE;EACC;ADAH;;AEtTC;EAIC;AFsTF;AEnTC;EAIC;AFkTF;AE/SC;EAIC;AF8SF;AE3SC;EAIC;AF0SF;AEvSC;EAIC;AFsSF;AEnSC;EAIC;AFkSF;AE/RC;EAIC;AF8RF;AEzRG;EAEC;AF0RJ;AEnRG;;EAEC;AFqRJ;AElRG;;EAEC;AFoRJ;AEjRG;EACC,gBzCknBuC;EyCjnBvC;AFmRJ;AE5QI;EAEC;AF6QL;AErQI;EAEC;AFsQL;AE9PI;EAEC;AF+PL;AEvPI;EAEC;AFwPL;AEhPI;EAEC;AFiPL;AEzOI;EAEC;AF0OL;AElOI;EAEC;AFmOL;AE9NE;EACC;AFgOH;AE9NG;EACC;AFgOJ;AE1NG;EACC;AF4NJ;AExNE;EACC;AF0NH;AEvNE;EACC;EACA;AFyNH;AErNG;EACC;AFuNJ;AEjNG;EACC;AFmNJ;AE7MG;EACC;AF+MJ;AEzMG;EACC;AF2MJ;AErMG;EACC;AFuMJ;AEjMG;EACC;AFmMJ;AE7LG;EACC;AF+LJ;AEzLG;EACC;AF2LJ;AEvLC;EACC;AFyLF;AEvLE;EACC;AFyLH;AEtLE;EACC;EACA;AFwLH;AEtLG;EACC;AFwLJ;AErLG;EACC;AFuLJ;AEjLI;EACC;AFmLL;AE5KI;EACC;AF8KL;AEvKI;EACC;AFyKL;AElKI;EACC;AFoKL;AE7JI;EACC;AF+JL;AExJI;EACC;AF0JL;AEnJI;EACC;AFqJL,C;;;;AzCpdC;EACC;EACA;EACA;A4ClCF;;AhDJA;;;;;;CAAA;AiDUA;EAEC;ADGD;ACDC;EACC;ADGF;ACDE;EACC;EACA;EACA;EACA;EACA;ADGH;ACCC;EACC;EACA;EACA;ADCF;ACEC;EACC;ADAF;ACGC;EACC,cX8G0C;EW7G1C;ADDF;ACGE;EACC;ADDH;ACKC;EACC;ADHF;ACKE;E7C2ED,kB6C1E0B;EACxB,gB3CisBwC;E2ChsBxC,W3Ck5BwC;E2Cj5BxC,mDXEyC;EWDzC;EACA;EACA;ADAH;ACIC;EACC,mDXN0C;EWO1C;EACA;EACA;ADFF;A5CulCE;E6CllCD;IAGE;EDJD;AACF;A5CklCE;E6CllCD;IAOE;EDHD;AACF;A5C6kCE;E6CllCD;IAWE;EDFD;AACF;ACIE;EACC;ADFH;A5CqkCE;E6ChkCA;IAGE;EDJF;AACF;A5CgkCE;E6ChkCA;IAOE;EDHF;AACF;ACSE;EACC;ADPH;ACQG;EACC;EACA;ADNJ;ACSE;E7CiWD,yC6ChWsB;E7CkTtB,kC6CjTE;EACA;ADCH;ACCG;E7C4VF,sB6C1VuB;ADIxB;ACEG;EjD9GD,oBiD+GuB;EjD9GpB,iBiD8GoB;EjDxGtB;EiDyGC;EACA;ADEJ;A5CyhCE;E6C9hCC;IAME;EDGH;AACF;ACCE;EACC;EACA;EACA;ADCH;ACEE;EACC;ADAH;ACKG;EACC;EACA;EACA;EACA;EACA;EACA;ADHJ;ACUE;EAEC;EACA;EACA;ADTH;A5C+/BE;E6C1/BA;IAOE;EDRF;AACF;ACWE;EACC;EACA;EACA;EACA;ADTH;A5Co/BE;E6C/+BA;IAOE;IACA;EDRF;AACF;A5C8+BE;E6Cn+BA;IAGE;EDVF;AACF;A5Cy+BE;E6Cn+BA;IAOE;EDTF;AACF;ACeE;EAEC;EACA;EACA;ADdH;A5C+9BE;E6Cr9BA;IAOE;EDbF;AACF;ACgBE;EACC;EACA;EACA;EACA;ADdH;A5Co9BE;E6C18BA;IAOE;IACA;EDbF;AACF;A5C88BE;E6C97BA;IAGE;EDfF;AACF;A5Cy8BE;E6C97BA;IAOE;EDdF;AACF;A5Co8BE;E6Cj7BC;IjD3ND,oBiD6NwB;IjD5NrB,iBiD4NqB;IjDtNvB;IiDuNE;EDfH;AACF;A5C47BE;E6Cj7BC;IAOE;EDdH;AACF;A5Cu7BE;E6Cj7BC;IAWE;EDbH;AACF;;AErKE;EACC;AFwKH;AE5JK;EAEC;EACA;AF6JN;AE5IE;EACC;AF8IH,C;;;;A5C1MC;EACC;EACA;EACA;A+ClCF;;AlD2DA;EAEC,ekCyM0C;AgBlQ3C;A/C4oCE;EHrlCF;IAKE,ekCoNiD;EgB5QjD;AACF;;AlDmFA;;;;EACC,kBKud2C;ELtd3C,mBKsd2C;A6CniB5C;;AlDqJA;;;;EC3JC;EACA;EACA;AiDaD;;AlDgPE;;;;EC9MA;AiD3BF;;A/C+mCE;EHlxBC;ICnXF;IACA;IACA;IA+CC;EiDnBA;AACF;A/CsmCE;EHlxBC;ICnXF;IACA;IACA;IA+CC;EiDXA;AACF;A/C8lCE;EHlxBC;ICnXF;IACA;IACA;IA+CC;EiDHA;AACF;AnD9DA;;;;;;CAAA;AoDWA;EACC;EACA;AD4DD;;ACzDA;EACC;EACA;AD4DD;;ACzDA;EAGC;EACA;EACA;AD0DD;;AClDC;;;;EAIC;ADqDF;;ACvBA;EACC;EACA;AD0BD;;A/CojCE;EgD3kCF;;IAGE;ED0BA;AACF;A/C6iCE;EgD3kCF;;IAOE;ED4BA;AACF;ACtBC;;EACC;ADyBF;ACtBC;;EACC;ADyBF;A/C+hCE;EgDrjCD;;IAEE;EDyBD;AACF;;ACjBA;EACC;ADoBD;AClBC;EACC;EACA;EACA;EACA;ADoBF;;ACfA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ADkBD;;ACfA;;;EAGC;EACA;EACA;ADkBD;;ACfA;;EAEC;ADkBD;;ACfA;EACC;ADkBD;;ACfA;EACC;ADkBD;;ACfA;EACC;EACA;ADkBD;;ACfA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;ADkBD;;ACfA;;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ADkBD;;ACfA;EACC;ADkBD;;ACfA;EACC;ADkBD;;ACfA;EACC;ADkBD;A/Cu8BE;EgD19BF;IAIE;EDmBA;AACF;A/Ck8BE;EgD19BF;IAQE;EDoBA;AACF;A/C67BE;EgD19BF;IAYE;EDqBA;AACF;A/Cw7BE;EgD19BF;IAgBE;EDsBA;AACF;;AClBC;EACC;ADqBF;A/C+6BE;EgDr8BD;IAIE;EDsBD;AACF;A/C06BE;EgDr8BD;IAQE;EDuBD;AACF;A/Cq6BE;EgDr8BD;IAYE;EDwBD;AACF;A/Cg6BE;EgDr8BD;IAgBE;EDyBD;AACF;;ACpBC;EACC;ADuBF;A/Cu5BE;EgD/6BD;IAIE;EDwBD;AACF;A/Ck5BE;EgD/6BD;IAQE;EDyBD;AACF;A/C64BE;EgD/6BD;IAYE;ED0BD;AACF;A/Cw4BE;EgD/6BD;IAgBE;ED2BD;AACF;;ACtBC;EACC;ADyBF;A/C+3BE;EgDz5BD;IAIE;ED0BD;AACF;A/C03BE;EgDz5BD;IAQE;ED2BD;AACF;A/Cq3BE;EgDz5BD;IAYE;ED4BD;AACF;A/Cg3BE;EgDz5BD;IAgBE;ED6BD;AACF;;ACtBE;EACC;ADyBH;A/Cu2BE;EgDj4BA;IAIE;ED0BF;AACF;A/Ck2BE;EgDj4BA;IAQE;ED2BF;AACF;A/C61BE;EgDj4BA;IAYE;ED4BF;AACF;A/Cw1BE;EgDj4BA;IAgBE;ED6BF;AACF;ACzBG;EACC;AD2BJ;A/Cg1BE;EgD52BC;IAIE;ED4BH;AACF;A/C20BE;EgD52BC;IAQE;ED6BH;AACF;A/Cs0BE;EgD52BC;IAYE;ED8BH;AACF;A/Ci0BE;EgD52BC;IAgBE;ED+BH;AACF;ACvBG;EACC;ADyBJ;A/CyzBE;EgDn1BC;IAIE;ED0BH;AACF;A/CozBE;EgDn1BC;IAQE;ED2BH;AACF;A/C+yBE;EgDn1BC;IAYE;ED4BH;AACF;A/C0yBE;EgDn1BC;IAgBE;ED6BH;AACF;ACxBG;EACC;AD0BJ;A/CkyBE;EgD7zBC;IAIE;ED2BH;AACF;A/C6xBE;EgD7zBC;IAQE;ED4BH;AACF;A/CwxBE;EgD7zBC;IAYE;ED6BH;AACF;A/CmxBE;EgD7zBC;IAgBE;ED8BH;AACF;;ACvBC;EACC;AD0BF;A/C0wBE;EgDryBD;IAIE;ED2BD;AACF;A/CqwBE;EgDryBD;IAQE;ED4BD;AACF;A/CgwBE;EgDryBD;IAYE;ED6BD;AACF;A/C2vBE;EgDryBD;IAgBE;ED8BD;AACF;AC1BE;EACC;AD4BH;A/CmvBE;EgDhxBA;IAIE;ED6BF;AACF;A/C8uBE;EgDhxBA;IAQE;ED8BF;AACF;A/CyuBE;EgDhxBA;IAYE;ED+BF;AACF;A/CouBE;EgDhxBA;IAgBE;EDgCF;AACF;ACxBE;EACC;AD0BH;A/C4tBE;EgDvvBA;IAIE;ED2BF;AACF;A/CutBE;EgDvvBA;IAQE;ED4BF;AACF;A/CktBE;EgDvvBA;IAYE;ED6BF;AACF;A/C6sBE;EgDvvBA;IAgBE;ED8BF;AACF;ACzBE;EACC;AD2BH;A/CqsBE;EgDjuBA;IAIE;ED4BF;AACF;A/CgsBE;EgDjuBA;IAQE;ED6BF;AACF;A/C2rBE;EgDjuBA;IAYE;ED8BF;AACF;A/CsrBE;EgDjuBA;IAgBE;ED+BF;AACF;;AEzaC;EAEC;AF2aF;AE5XC;EACC;AF8XF;AE3XC;EACC;AF6XF;AE1XC;EACC;AF4XF;AEzXC;EACC;AF2XF;AExXC;EACC;AF0XF;AEvXC;EACC;AFyXF;AEtXC;EACC;AFwXF;AErXC;EACC;AFuXF;AEpXC;EACC;AFsXF;AEnXC;EACC;AFqXF;AElXC;EACC;AFoXF;AEjXC;EACC;AFmXF,C;;;;AnD3gBA;;;;;;CAAA;AsDAA;EACC;EACA;EACA,WhD+vB0C;AiDvvB3C;ADPC;EACC,WhDu1ByC;AiD90B3C;;ADLA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;ACQD;ADNC;;EAEC;ACQF;;AC8BC;EACC;AD3BF;AC+BC;EACC;AD7BF,C;;;;AEnCA,gBAAgB;AzDAhB;;;;;;CAAA;ADgEC;EAEC;A0DxDF;A1D2DC;EACC;A0DzDF;A1D+JC;EAnFA,YA1CuB;EA2CvB;EACA,+BAtEyC;EAuEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA2EG;EAKD,YAlBQ;A0DrIX;AC/BC;EACC;ADiCF;AC/BC;EACC;ADiCF;;AEmBC;EACC;AFhBF,C","sources":["webpack://bu-blocks/./src/style.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/icons/_mixins.scss","webpack://bu-blocks/./node_modules/object-fit-images/preprocessors/mixin.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/grid/_grid-placeholders.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/grid/_grid-mixins.scss","webpack://bu-blocks/./src/blocks/aside/style.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/_mixins.scss","webpack://bu-blocks/./src/blocks/aside/_bu-blocks-block-aside-base.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/_config.scss","webpack://bu-blocks/./src/blocks/aside/_bu-blocks-block-aside-themeable.scss","webpack://bu-blocks/./src/blocks/buniverse/_bu-blocks-block-buniverse-base.scss","webpack://bu-blocks/./src/blocks/buniverse/style.scss","webpack://bu-blocks/./src/blocks/button/_bu-blocks-block-button-base.scss","webpack://bu-blocks/./src/blocks/button/style.scss","webpack://bu-blocks/./src/blocks/button/_bu-blocks-block-button-themeable.scss","webpack://bu-blocks/./src/blocks/clicktotweet/_bu-blocks-block-clicktotweet-base.scss","webpack://bu-blocks/./src/blocks/clicktotweet/style.scss","webpack://bu-blocks/./src/blocks/clicktotweet/_bu-blocks-block-clicktotweet-themeable.scss","webpack://bu-blocks/./src/blocks/collapsible-control/style.scss","webpack://bu-blocks/./src/blocks/collapsible/_bu-blocks-block-collapsible-base.scss","webpack://bu-blocks/./src/blocks/collapsible/style.scss","webpack://bu-blocks/./src/blocks/drawer/style.scss","webpack://bu-blocks/./src/blocks/drawer/_bu-blocks-block-drawer-base.scss","webpack://bu-blocks/./src/blocks/drawer/_bu-blocks-block-drawer-themeable.scss","webpack://bu-blocks/./src/components/background/_bu-blocks-component-background-base.scss","webpack://bu-blocks/./src/components/background/style.scss","webpack://bu-blocks/./src/blocks/headline/_bu-blocks-block-headline-base.scss","webpack://bu-blocks/./src/blocks/headline/style.scss","webpack://bu-blocks/./src/blocks/headline/_bu-blocks-block-headline-themeable.scss","webpack://bu-blocks/./src/blocks/introparagraph/style.scss","webpack://bu-blocks/./src/blocks/introparagraph/_bu-blocks-block-introparagraph-base.scss","webpack://bu-blocks/./src/blocks/introparagraph/_bu-blocks-block-introparagraph-themeable.scss","webpack://bu-blocks/./src/blocks/leadin/style.scss","webpack://bu-blocks/./src/global/_bu-blocks-extends.scss","webpack://bu-blocks/./src/blocks/leadin/_bu-blocks-block-leadin-base.scss","webpack://bu-blocks/./src/blocks/leadin/_bu-blocks-block-leadin-themeable.scss","webpack://bu-blocks/./src/blocks/listicle/style.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/grid/_grid-variables.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/_typography-tools.scss","webpack://bu-blocks/./src/blocks/listicle/_bu-blocks-block-listicle-base.scss","webpack://bu-blocks/./node_modules/responsive-foundation/css-dev/burf-base/_typography-variables.scss","webpack://bu-blocks/./src/blocks/listicle/_bu-blocks-block-listicle-themeable.scss","webpack://bu-blocks/./src/blocks/modal/style.scss","webpack://bu-blocks/./src/blocks/modal/_bu-blocks-block-modal-base.scss","webpack://bu-blocks/./src/blocks/modal/_bu-blocks-block-modal-themeable.scss","webpack://bu-blocks/./src/blocks/photoessay/style.scss","webpack://bu-blocks/./src/blocks/photoessay/_bu-blocks-block-photoessay-base.scss","webpack://bu-blocks/./src/blocks/pullquote/style.scss","webpack://bu-blocks/./src/blocks/pullquote/_bu-blocks-block-pullquote-base.scss","webpack://bu-blocks/./src/blocks/pullquote/_bu-blocks-block-pullquote-themeable.scss","webpack://bu-blocks/./src/blocks/relatedstories/style.scss","webpack://bu-blocks/./src/blocks/relatedstories/_bu-blocks-block-relatedstories-base.scss","webpack://bu-blocks/./src/blocks/relatedstories/_bu-blocks-block-relatedstories-themeable.scss","webpack://bu-blocks/./src/blocks/stat/style.scss","webpack://bu-blocks/./src/blocks/stat/_bu-blocks-block-stat-base.scss","webpack://bu-blocks/./src/blocks/stat/_bu-blocks-block-stat-themeable.scss","webpack://bu-blocks/./src/components/paragraph-caption-style/_bu-blocks-component-caption-base.scss","webpack://bu-blocks/./src/components/paragraph-caption-style/style.scss","webpack://bu-blocks/./src/components/paragraph-caption-style/_bu-blocks-component-caption-themeable.scss","webpack://bu-blocks/./src/components/paragraph-end-of-article-style/style.scss","webpack://bu-blocks/./src/components/paragraph-end-of-article-style/_bu-blocks-component-end-of-article-base.scss","webpack://bu-blocks/./src/components/paragraph-end-of-article-style/_bu-blocks-component-end-of-article-themeable.scss"],"sourcesContent":["/**\n * #.# Common SCSS\n *\n * Can include things like variables and mixins\n * that are used across the project.\n*/\n\n@import 'tools';\n\n\n.test5301 {\n\tcolor: blue;\n}\n\n// =================================================================\n// Global and Base Styles\n// =================================================================\n\n// =================================================================\n// Blocks\n// =================================================================\n\n//@import 'blocks/sample/style.scss';\n\n// =================================================================\n// Layout\n// =================================================================\n\n// =================================================================\n// Templates\n// =================================================================\n\n// =================================================================\n// Icons\n// =================================================================\n\n.icon-navigateright {\n\t@extend %icon-navigateright;\n}\n\n.icon-navigateleft {\n\t@extend %icon-navigateleft;\n}\n\n","// =================================================================\n// Dependencies\n// =================================================================\n\n@import \"supported\";\n\n// =================================================================\n// Icon Mixins\n// =================================================================\n\n// Change the icon font\n//\n// The font family to use for icons across the site.\n// Change this to use a different homegrown font family.\n//\n// Styleguide Utilities.Icons.Icon font\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$font-family-icons: \t \"bu-default-icons\" !default;\n\n// Change the icon font size\n//\n// The font size to use for icons across the site.\n//\n// Styleguide Utilities.Icons.Icon size\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$font-size-icon: \t\t\t\t\t\t\t\t\t 21px !default;\n\n// Change the icon color sitewide\n//\n// The color to use for icons across the site.\n// By default, this will inherit the color of the text in the container the icon lives in.\n// Setting this will keep the color of the icons consistent everywhere.\n//\n// Styleguide Utilities.Icons.Icon color\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-icons:\t\t\t\t\t\t\t\t\t\t unset !default;\n\n// Icon base mixin\n//\n// Provides base icon styles normalized across browsers and optimized\n// for accessibility.\n// A helper mixin for the main icon mixin and icon extends.\n// You probably don't actually want to use this unless you're working\n// on Responsive. Use the icon mixin instead.\n//\n// Styleguide Utilities.Icons.Icon base mixin\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n@mixin icon-base {\n\t.lt-ie9:hover & {\n\t\t// This triggers a redraw in IE to Fix IE8's :before content rendering.\n\t\t-ms-zoom: 1;\n\t}\n\n\tspan {\n\t\tdisplay: none; // Hide labels\n\t}\n}\n\n// Icon content mixin\n//\n// Provides base icon styles normalized across browsers and optimized\n// for accessibility.\n// A helper mixin for the main icon mixin and icon extends.\n// You probably don't actually want to use this unless you're working\n// on Responsive. Use the icon mixin instead.\n//\n// Styleguide Utilities.Icons.Icon content mixin\n//\n// Access: Public\n//\n// Since: 1.2.0\n\n@mixin icon-content {\n\tcolor: $color-icons;\n\tdisplay: inline-block;\n\tfont-family: $font-family-icons;\n\t-moz-osx-font-smoothing: grayscale;\n\t-webkit-font-smoothing: antialiased;\n\tfont-style: normal;\n\tfont-variant: normal;\n\tfont-weight: normal;\n\tline-height: 1;\n\tpadding-bottom: 0.2em; // Accomodate for inline icons\n\tspeak: none;\n\ttext-decoration: none;\n\ttext-rendering: optimizeLegibility;\n\ttext-transform: none;\n\tvertical-align: middle;\n\twhite-space: nowrap;\n}\n\n// Icon content placeholder - before\n//\n// Provides base icon styles normalized across browsers and optimized\n// for accessibility.\n// A helper placeholder for the main icon mixin and icon extends.\n// You probably don't actually want to use this unless you're working\n// on Responsive. Use the icon mixin instead.\n//\n// Styleguide Utilities.Icons.Icon content placeholder before\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n%icon-content-before {\n\t&::before {\n\t\t@include icon-content;\n\t\tmargin-right: 0.5em;\n\t}\n}\n\n// Icon content placeholder - after\n//\n// Provides base icon styles normalized across browsers and optimized\n// for accessibility.\n// A helper placeholder for the main icon mixin and icon extends.\n// You probably don't actually want to use this unless you're working\n// on Responsive. Use the icon mixin instead.\n//\n// Styleguide Utilities.Icons.Icon content placeholder after\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n%icon-content-after {\n\t&::after {\n\t\t@include icon-content;\n\t\tmargin-left: 0.5em;\n\t}\n}\n\n// Icon mixin\n//\n// A mixin to generate icons.\n// Use any icon in `$icon-supports`.\n// $use-extend will use the extends for performance\n// purposes, but sacrifices your ability to use this\n// inside a media query. Setting this to true is really\n// only beneficial for generating the default placeholders.\n//\n// Styleguide Utilities.Icons.Icon Mixin\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n@mixin icon( $name, $position: \"before\", $use-extend: false ) {\n\t@include icon-base;\n\t$content: map-get( $icons-responsive, $name );\n\n\t@if $use-extend {\n\t\t@extend %icon-content-#{$position};\n\t}\n\n\t&::#{$position} {\n\t\t@if $use-extend == false {\n\t\t\t@include icon-content;\n\n\t\t\t@if $position == \"before\" {\n\t\t\t\tmargin-right: 0.5em;\n\t\t\t} @else {\n\t\t\t\tmargin-left: 0.5em;\n\t\t\t}\n\t\t}\n\n\t\t@if $content {\n\t\t\tcontent: $content;\n\t\t} @else {\n\t\t\t@error \"`#{$name}` is not a supported icon. See www.bu.edu/cdn/fonts/icons/bu-default-icons/specimen-icons.html for a list of supported icons. If this is a custom icon you meant to add for your own icon font, be sure you've added it to the `$icons-theme` map.\";\n\t\t}\n\t}\n}\n\n;@import \"sass-embedded-legacy-load-done:3699\";","/*\n This mixin can be used to set the object-fit:\n @include object-fit(contain);\n\n or object-fit and object-position:\n @include object-fit(cover, top);\n*/\n@mixin object-fit($fit: fill, $position: null){\n -o-object-fit: $fit;\n object-fit: $fit;\n @if $position {\n\t -o-object-position: $position;\n\t object-position: $position;\n \tfont-family: 'object-fit: #{$fit}; object-position: #{$position}';\n } @else {\n \tfont-family: 'object-fit: #{$fit}';\n }\n}\n\n;@import \"sass-embedded-legacy-load-done:3793\";","// =================================================================\n// Grid Styles and Placeholders\n// =================================================================\n\n// Base styles for all wrapper elements.\n//\n// Styleguide Grid.Global Styles.Wrapper Styles\n//\n// Access: Public\n//\n// Since: 1.2.0\n\n%wrapper-styles {\n\toverflow: hidden;\n}\n\n// Base styles for all container elements.\n// You may wish to extend this on a page where you can't use\n// `.content-container` for some reason - such as on a landing\n// page where you are overriding that class to use the full width\n// of the screen.\n//\n// Styleguide Grid.Global Styles.Container Styles\n//\n// Access: Public\n//\n// Since: 1.2.0\n\n%container-styles {\n\t@extend %clearfix;\n\tmargin: 0 auto;\n\tpadding: $grid-container-padding;\n\twidth: 100%;\n\n\t@if ( $enable-css-grid ) {\n\t\t@include css-grid-base;\n\t}\n\n\t@include breakpoint( $sm ) {\n\t\tmax-width: $container-sm;\n\t\tpadding: $grid-container-padding-desktop;\n\t}\n\n\t@include breakpoint( $md ) {\n\t\tmax-width: $container-md;\n\t}\n\n\t@include breakpoint( $lg ) {\n\t\tmax-width: $container-lg;\n\t\tgrid-gap: $padding * 2;\n\t}\n}\n\n// Base styles for containers that hold grid elements.\n// A negative margin is included to counteract the grid item\n// margins.\n//\n// Styleguide Grid.Global Styles.Row Styles\n//\n// Access: Public\n//\n// Since: 1.2.0\n\n%row-styles {\n\t@extend %clearfix;\n\tmargin: $grid-row-margin;\n\n\t@include breakpoint( $sm ) {\n\t\tmargin: $grid-row-margin-desktop;\n\t}\n\n\t@if ( $enable-css-grid ) {\n\t\t@include css-grid-base;\n\t}\n}\n\n/// Adds grid support to any container.\n/// Can be used on its own to enable grid in a specific\n/// place in the theme without turning it on globally.\n/// @group global\n/// @access public\n/// @since 4.0.0\n\n%grid-parent {\n\t@include css-grid-base;\n}\n\n// Base styles for children of a row.\n// Usually used for grid items.\n//\n// Styleguide Grid.Global Styles.Item Styles\n//\n// Access: Public\n//\n// Since: 1.2.0\n\n%row-child-styles {\n\tpadding-left: $grid-column-padding;\n\tpadding-right: $grid-column-padding;\n\n\t@if ( $enable-css-grid ) {\n\t\t@supports ( display: grid ) {\n\t\t\tpadding-left: initial;\n\t\t\tpadding-right: initial;\n\t\t}\n\t}\n}\n\n// A backwards-compatible equal heights solution for\n// older browsers.\n// Base styles for a container whose children should\n// be equal heights.\n//\n// Styleguide Utilities.Backwards Compatibility.Equal Heights (Container)\n//\n// Access: Public\n//\n// Since: 1.2.0\n\n%equal-height-parent-backcompat {\n\toverflow: hidden;\n}\n\n// A backwards-compatible equal heights solution for\n// older browsers.\n// Base styles for children of the equal-height-parent.\n// These styles will make children appear to be equal heights,\n// even if the actual content is different heights.\n// If you need padding on the bottom of the child items, you might have to adjust\n// the margin-bottom to be lower.\n//\n// Styleguide Utilities.Backwards Compatibility.Equal Heights (Items)\n//\n// Access: Public\n//\n// Since: 1.2.0\n\n%equal-height-child-backcompat {\n\t@include breakpoint( $md ) {\n\t\tmargin-bottom: -99999px;\n\t\tpadding-bottom: 99999px;\n\t}\n}\n\n// A newer version of equal heights that takes advantage\n// of flexbox. Use this on your container to make all\n// children equal heights. Plays nice with the grid.\n// Check https://caniuse.com/#search=flexbox for browser\n// support. You may want to provide a min-height on a\n// case by case basis as a fallback.\n//\n// Styleguide Utilities.Layout.Equal Heights\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n%equal-heights {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n// An extend for base grid styles.\n//\n// Styleguide Grid.Factory.%col-base\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n%col-base {\n\t@include col-base;\n}\n\n// An extend for base grid styles using the margin feature.\n//\n// Styleguide Grid.Factory.%col-margin-base\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n%col-margin-base {\n\t@include col-margin-base;\n}\n\n// Styles for parents of margin grid items.\n// Also available in breakpoint flavors,\n// just like the grid classes - for example,\n// `.col-md-margin-parent`.\n//\n// Styleguide Grid.Factory.%col-margin-parent\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n%col-margin-parent {\n\tmargin-left: -$grid-margin-width#{\"%\"};\n\tmargin-right: 0;\n\n\t@if ( $enable-css-grid ) {\n\t\t@supports ( display: grid ) {\n\t\t\tmargin-left: auto;\n\t\t}\n\t}\n}\n\n@if $burf-extras {\n\t.col-margin-parent {\n\t\t@extend %col-margin-parent;\n\t}\n}\n\n// A private map to hold grid widths while\n// calculating the grid.\n//\n// Styleguide Grid.Factory.$grid-widths\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n$grid-widths: ();\n\n// A private map to hold grid widths for margins\n// while calculating the grid.\n//\n// Styleguide Grid.Factory.$grid-widths-margins\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n$grid-widths-margins: ();\n\n// Calculate grid widths\n//\n// Loops through all columns to set widths in a map\n// and create basic grid classes based on grid control settings.\n//\n// Styleguide Grid.Factory.Calculate widths\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n@for $i from 0 through $grid-number-columns {\n\t// Determine current base width\n\t$percentage: ( $i / $grid-number-columns ) * 100;\n\n\t@if ( $percentage <= 0 ) {\n\t\t$percentage: initial;\n\t}\n\n\t// Create a list of widths for grid-build to use later\n\t$grid-widths: append( $grid-widths, $percentage, comma );\n\n\t$percentage-margins: ( ( $i / $grid-number-columns ) * 100 ) - $grid-margin-width;\n\n\t@if ( $percentage-margins <= 0 ) {\n\t\t$percentage-margins: initial;\n\t}\n\n\t$grid-widths-margins: append( $grid-widths-margins, $percentage-margins, comma );\n\n\t// Create basic grid classes, no breakpoints\n\t// Example output: %col-1\n\n\t@if ( $i != 0 ) {\n\t\t%col-#{$i} {\n\t\t\t@extend %col-base;\n\t\t\t@include grid-build( width, $percentage );\n\n\t\t\t@if ( $enable-css-grid ) {\n\t\t\t\t@supports ( display: grid ) {\n\t\t\t\t\tgrid-column: span $i;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Create grid sets\n//\n// Loops through all supported feature sets to create placeholder\n// classes for use in Sass.\n//\n// Styleguide Grid.Factory.Create sets\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n@for $i from 0 to length( $grid-widths ) {\n\t@each $feature, $supported in $grid-supports {\n\t\t@if ( $supported ) {\n\t\t\t%col-#{$feature}-#{$i} {\n\t\t\t\t@extend %col-#{$feature}-base !optional;\n\t\t\t\t@extend %col-base;\n\t\t\t\t@include col( '', $feature, $i, $enable-css-grid, false );\n\t\t\t}\n\t\t}\n\t}\n}\n\n%grid-item-base {\n\t@if ( $enable-css-grid ) {\n\t\t@supports ( display: grid ) {\n\t\t\tgrid-column: span $grid-number-columns;\n\t\t}\n\t}\n}\n\n%grid-place-first {\n\t@supports ( display: grid ) {\n\t\torder: -1;\n\t}\n}\n\n%grid-place-last {\n\t@supports ( display: grid ) {\n\t\torder: $grid-number-columns + 1;\n\t}\n}\n\n// Create breakpoint sets\n//\n// Loops through all supported breakpoints to create placeholder\n// classes for each available feature set to use in Sass.\n//\n// Styleguide Grid.Factory.Create breakpoint classes\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n@each $breakpoint, $value in $grid-breakpoints {\n\t@if ( $enable-css-grid ) {\n\t\t@for $i from 0 to length( $grid-widths ) {\n\t\t\t%col-#{$breakpoint}-#{$i} {\n\t\t\t\t@extend %grid-item-base;\n\t\t\t}\n\t\t}\n\t}\n\n\t@include breakpoint( $value, false ) {\n\t\t%col-#{$breakpoint}-margin-base {\n\t\t\t@include col-margin-base;\n\t\t}\n\n\t\t%col-#{$breakpoint}-margin-parent {\n\t\t\tmargin-left: -$grid-margin-width#{\"%\"};\n\n\t\t\t@if ( $enable-css-grid ) {\n\t\t\t\t@supports ( display: grid ) {\n\t\t\t\t\tmargin-left: auto;\n\t\t\t\t\tmargin-right: auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t%grid-#{$breakpoint}-parent {\n\t\t\t@include css-grid-base;\n\t\t}\n\n\t\t%grid-#{$breakpoint}-place-first {\n\t\t\t@supports ( display: grid ) {\n\t\t\t\torder: -1;\n\t\t\t}\n\t\t}\n\n\t\t%grid-#{$breakpoint}-place-last {\n\t\t\t@supports ( display: grid ) {\n\t\t\t\torder: $grid-number-columns + 1;\n\t\t\t}\n\t\t}\n\n\t\t@if $burf-extras {\n\t\t\t.col-#{$breakpoint}-margin-parent {\n\t\t\t\t@extend %col-#{$breakpoint}-margin-parent;\n\t\t\t}\n\t\t}\n\n\t\t@for $i from 0 to length( $grid-widths ) {\n\t\t\t%col-#{$breakpoint}-#{$i} {\n\t\t\t\t@include col-base;\n\t\t\t\t@include grid-styles( '', $i );\n\t\t\t}\n\t\t}\n\n\t\t@each $feature, $supported in $grid-supports {\n\t\t\t@if ( $supported ) {\n\t\t\t\t@for $i from 0 to length( $grid-widths ) {\n\t\t\t\t\t%col-#{$breakpoint}-#{$feature}-#{$i} {\n\t\t\t\t\t\t@include grid-styles( $feature, $i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t@each $feature, $supported in $grid-supports {\n\t\t@if ( $supported ) {\n\t\t\t@for $i from 0 to length( $grid-widths ) {\n\t\t\t\t%col-#{$breakpoint}-#{$feature}-#{$i} {\n\t\t\t\t\t@extend %col-#{$breakpoint}-#{$feature}-base !optional;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Grid Placeholders\n//\n// The preferred way of using the grid in Sass.\n// Use only where necessary to override grid classes.\n// Arguments are the same as you use to write grid classes,\n// in the same order.\n//\n// #### Examples\n//\n// ##### Override the margin class on a modified callout.\n//\n// ```\n//\n// .callout {\n// \t@extend %col-sm-margin-quarter;\n//\t}\n//\n// Styleguide Grid.How to Use the Grid.Grid Placeholders\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n;@import \"sass-embedded-legacy-load-done:3600\";","// =================================================================\n// Grid Mixins\n// =================================================================\n\n// Controls the base styles that get applied to grid items.\n// Not intended for use outside the grid system - use the `col`\n// mixin instead.\n//\n// Styleguide Grid.Factory.@mixin col-base\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n@mixin col-base {\n\tfloat: left;\n\tposition: relative;\n\tmin-height: 1px;\n\n\t@if ( $enable-css-grid ) {\n\t\t@supports ( display: grid ) {\n\t\t\tfloat: initial;\n\t\t\tgrid-column: span $grid-number-columns;\n\t\t}\n\t}\n}\n\n// Controls the base styles that get applied to grid margin items.\n// Not intended for use outside the grid system - use the `col`\n// mixin instead.\n//\n// Styleguide Grid.Factory.@mixin col-margin-base\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n@mixin col-margin-base {\n\tfloat: left;\n\tmargin-bottom: $grid-margin-width#{\"%\"};\n\tmargin-left: $grid-margin-width#{\"%\"};\n\tmargin-top: 0;\n\tpadding: $grid-margin-padding;\n\n\t@if ( $enable-css-grid ) {\n\t\t@supports ( display: grid ) {\n\t\t\tfloat: initial;\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n// A helper mixin to build grid properties.\n// Not intended for use outside the grid system - use the `col`\n// mixin instead.\n//\n// Styleguide Grid.Factory.@mixin grid-build\n//\n// Access: Private\n//\n// Since: 1.4.0\n\n@mixin grid-build( $cssproperty, $amount ) {\n\t@if ( type_of( $amount ) == \"number\" ) {\n\t\t#{$cssproperty}: #{$amount}#{\"%\"};\n\t} @else {\n\t\t#{$cssproperty}: #{$amount};\n\t}\n}\n\n// A helper mixin to build grid properties.\n// Not intended for use outside the grid system - use the `col`\n// mixin instead.\n//\n// Styleguide Grid.Factory.@mixin col-float\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n@mixin col-float {\n\tfloat: left;\n\n\t@if ( $enable-css-grid ) {\n\t\t@supports ( display: grid ) {\n\t\t\tfloat: initial;\n\t\t}\n\t}\n}\n\n// A helper mixin to build grid styles. Does not handle breakpoints.\n// Not intended for use outside the grid system - use the `col`\n// mixin instead.\n//\n// Styleguide Grid.Factory.@mixin grid-styles\n//\n// Access: Private\n//\n// Since: 2.0.0\n\n@mixin grid-styles( $option, $col, $use-css-grid: $enable-css-grid, $force: false ) {\n\t$percentage: nth( $grid-widths, $col + 1 );\n\n\t@if ( $force ) {\n\t\t@include col-base;\n\t\tleft: initial;\n\t\tmargin-left: initial;\n\t\tright: initial;\n\t}\n\n\t@if ( $option == \"margin\" ) {\n\t\t$percentage: nth( $grid-widths-margins, $col + 1 );\n\t\t@include grid-build( width, $percentage );\n\n\t\t@if ( $force ) {\n\t\t\t@include col-margin-base;\n\t\t}\n\n\t\t@if ( $use-css-grid ) {\n\t\t\t@supports ( display: grid ) {\n\t\t\t\tgrid-column: auto / span $col;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\t}\n\n\t@if ( $option == \"\" ) {\n\t\t@include grid-build( width, $percentage );\n\n\t\t@if ( $use-css-grid ) {\n\t\t\t@supports ( display: grid ) {\n\t\t\t\tgrid-column: auto / span $col;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\t}\n\n\t@if ( $option == \"push\" ) {\n\t\t@include grid-build( left, $percentage );\n\n\t\t@if ( $use-css-grid ) {\n\t\t\t@supports ( display: grid ) {\n\t\t\t\t// CSS Grid does not support repositioning like this.\n\t\t\t\t// You may order first or last using the new order classes.\n\t\t\t\t// If you need control like this, do not enable CSS Grid.\n\t\t\t\tleft: auto;\n\t\t\t}\n\t\t}\n\t}\n\n\t@if ( $option == \"pull\" ) {\n\t\t@include grid-build( right, $percentage );\n\n\t\t@if ( $use-css-grid ) {\n\t\t\t@supports ( display: grid ) {\n\t\t\t\t// CSS Grid does not support repositioning like this.\n\t\t\t\t// You may order first or last using the new order classes.\n\t\t\t\t// If you need control like this, do not enable CSS Grid.\n\t\t\t\tright: auto;\n\t\t\t}\n\t\t}\n\t}\n\n\t@if ( $option == \"offset\" ) {\n\t\t@include grid-build( margin-left, $percentage );\n\n\t\t@if ( $use-css-grid ) {\n\t\t\t@supports ( display: grid ) {\n\t\t\t\tgrid-column-start: $col;\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Grid Mixin\n//\n// The official grid mixin.\n// Use only where necessary to override grid classes.\n// Arguments are the same as you use to write grid classes,\n// in the same order.\n//\n// #### Examples\n//\n// ##### Override the margin class on a modified callout.\n//\n// ```\n//\n// .callout {\n// \t@extend %col-sm-margin-quarter;\n//\t}\n//\n// .callout-modified {\n// \t@include col( $sm, quarter );\n//\t}\n//\n// @param {variable | number} | $breakpoint - The window width to begin applying your styles. Can be any pixel value, but `$xs`, `$sm`, `$md`, `$lg`, and `$xl` are standard in this framework.\n// @param {string} | $option - The grid option to use, ie \"push\", \"pull\", \"margin\". Pass \"\" for no option, or leave it out altogether - the mixin will check this and fix it for you.\n// @param {number | string} | $col - The number of columns you want. Accepts friendly classes such as \"half\", or use Boostrap standard (1 - 12).\n// @param {bool} | $use-css-grid - Whether or not to use CSS Grid instead of floats as the basis for this grid item's styling. CSS Grid requires some parent class styling.\n// @param {bool} | $force - Whether or not to override the original styles by printing them where this mixin is called. You probably don't want to change this unless you're working on Foundation.\n//\n// Styleguide Grid.How to Use the Grid.Grid Mixin\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n@mixin col( $breakpoint: \"\", $option: \"\", $col: $grid-number-columns, $use-css-grid: $enable-css-grid, $force: true ) {\n\t$valid: map-get( $grid-supports, $option );\n\n\t// Automatically fixes inputs if you forget the option (usually with normal grid mixins)\n\t@if ( $valid == null and $option != \"\" ) {\n\t\t$col: $option;\n\t\t$option: \"\";\n\t}\n\n\t@if ( \"string\" == type-of( $col ) ) and ( map-get( $widths, $col ) ) {\n\t\t$col: map-get( $widths, $col );\n\t}\n\n\t@if ( $breakpoint != \"\" ) {\n\t\t@include breakpoint( $breakpoint, false ) {\n\t\t\t@include grid-styles( $option, $col, $use-css-grid, $force );\n\t\t}\n\t} @else {\n\t\t@include grid-styles( $option, $col, $use-css-grid, $force );\n\t}\n}\n\n/// The official CSS grid base mixin.\n/// Use only where necessary to override grid classes.\n/// Arguments are the same as you use to write grid classes,\n/// in the same order.\n/// @example\n/// \t\tAdd a masonry-style grid to a news and events section.\n/// \t\t\t.news-events {\n///\t\t\t\t@include css-grid-base( true );\n///\t\t\t}\n/// \t\tMake a responsive profiles grid, and set the minimum width to 300px.\n/// \t\t\t.profiles {\n///\t\t\t\t@include css-grid-base( false, true, 300px );\n///\t\t\t}\n/// @param {bool} | $masonry - Whether to use a masonry-style grid, which automatically reorders items to fit the space best.\n/// @param {bool} | $flexible-columns - Whether to automatically generate columns based on the item width.\n/// @param {number} | $flexible-column-minimum - The minimum width a column should take, if using flexible columns.\n/// @group grid\n/// @access public\n/// @since 4.0.0\n\n@mixin css-grid-base( $masonry: false, $flexible-columns: false, $flexible-column-minimum: 200px ) {\n\t@supports ( display: grid ) {\n\t\tdisplay: grid;\n\t\t// The minmax below prevents grid items from overflowing container.\n\t\tgrid-template-columns: repeat( $grid-number-columns, minmax( 0, 1fr ) );\n\t\tgrid-gap: $grid-column-padding;\n\t\tmargin-left: auto;\n\t\tmargin-right: auto;\n\n\t\t@media screen and ( max-width: $xs ) {\n\t\t\t// Because CSS Grid factors grid gap values into the total width of\n\t\t\t// the grid container, if we do not set this to a lower value on very\n\t\t\t// small devices, content will be cut off on those devices.\n\t\t\tgrid-gap: 300px / $grid-number-columns;\n\t\t}\n\n\t\t@if ( $masonry == true ) {\n\t\t\tgrid-auto-flow: dense;\n\t\t}\n\n\t\t@if ( $flexible-columns == true ) {\n\t\t\tgrid-template-columns: repeat( auto-fit, minmax( $flexible-column-minimum, 1fr ) );\n\n\t\t\t> * {\n\t\t\t\t@include breakpoint( $xs ) {\n\t\t\t\t\tgrid-column: auto / span 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n;@import \"sass-embedded-legacy-load-done:3574\";",".wp-block-editorial-aside.alignleft, .wp-block-editorial-aside.alignright, .wp-block-editorial-aside {\n float: left;\n position: relative;\n min-height: 1px;\n}\n\n.wp-block-editorial-aside.alignleft, .wp-block-editorial-aside.alignright, .wp-block-editorial-aside {\n width: 100%;\n}\n\n@media (min-width: 500px) {\n .wp-block-editorial-aside.alignleft, .wp-block-editorial-aside.alignright {\n float: left;\n position: relative;\n min-height: 1px;\n width: 50%;\n }\n}\n@media (min-width: 768px) {\n .wp-block-editorial-aside.alignleft, .wp-block-editorial-aside.alignright {\n float: left;\n position: relative;\n min-height: 1px;\n width: 33.3333333333%;\n }\n}\n/*\n This mixin can be used to set the object-fit:\n @include object-fit(contain);\n\n or object-fit and object-position:\n @include object-fit(cover, top);\n*/\n.wp-block-editorial-aside {\n border: 1px solid #ddd;\n border-top: 3px solid #111;\n clear: both;\n margin-bottom: 40px;\n margin-top: 10px;\n padding: 30px;\n text-align: center;\n}\n.wp-block-editorial-aside figure {\n margin-bottom: 0.7em;\n}\n.wp-block-editorial-aside p {\n color: #666;\n line-height: 1.5;\n margin: 0 0 1em 0;\n font-size: 16px;\n}\n.wp-block-editorial-aside.alignleft, .wp-block-editorial-aside.alignright {\n max-width: 100%;\n margin-left: 8.3333%;\n margin-right: 8.3333%;\n}\n.wp-block-editorial-aside.alignleft {\n margin: 20px auto;\n margin-left: 8.3333%;\n margin-right: 8.3333%;\n}\n@media (min-width: 768px) {\n .wp-block-editorial-aside.alignleft {\n float: left;\n margin: 0 30px 20px -40px;\n }\n}\n.wp-block-editorial-aside.alignright {\n margin: 20px auto;\n}\n@media (min-width: 768px) {\n .wp-block-editorial-aside.alignright {\n margin: 0 -10px 20px 30px;\n float: right;\n }\n}\n.wp-block-editorial-aside.has-dark-background, .wp-block-editorial-aside.has-light-background, .wp-block-editorial-aside.has-primary-background, .wp-block-editorial-aside.has-secondary-background, .wp-block-editorial-aside.has-tertiary-background, .wp-block-editorial-aside.has-quaternary-background, .wp-block-editorial-aside.has-quinary-background {\n border: none;\n}\n.wp-block-editorial-aside.has-dark-background {\n background: #444;\n}\n.wp-block-editorial-aside.has-dark-background h2 {\n color: #fff;\n}\n.wp-block-editorial-aside.has-dark-background p {\n color: #f0f0f0;\n}\n.wp-block-editorial-aside.has-light-background {\n background: #eee;\n}\n.wp-block-editorial-aside.has-primary-background h2 {\n color: #fff;\n}\n\n.wp-block-editorial-aside p {\n color: #444;\n}\n.wp-block-editorial-aside.has-light-background {\n background: #fff;\n}\n.wp-block-editorial-aside.has-dark-background {\n background: #000;\n}\n.wp-block-editorial-aside.has-dark-background p,\n.wp-block-editorial-aside.has-dark-background h1,\n.wp-block-editorial-aside.has-dark-background h2,\n.wp-block-editorial-aside.has-dark-background h3,\n.wp-block-editorial-aside.has-dark-background h4,\n.wp-block-editorial-aside.has-dark-background h5,\n.wp-block-editorial-aside.has-dark-background h6 {\n color: #666;\n}\n.wp-block-editorial-aside.has-primary-background {\n background: #666;\n}\n.wp-block-editorial-aside.has-primary-background p {\n color: #666;\n}\n.wp-block-editorial-aside.has-secondary-background {\n background: #666;\n}\n.wp-block-editorial-aside.has-tertiary-background {\n background: #666;\n}\n.wp-block-editorial-aside.has-quaternary-background {\n background: #666;\n}\n.wp-block-editorial-aside.has-quinary-background {\n background: #666;\n}","// =================================================================\n// Mixins & Extends\n// =================================================================\n\n// Clears floats on a container.\n// Use when an element contains floated items and\n// isn't getting the correct height because it doesn't\n// recognize the height of the floated child items.\n// Based on Nicolas Gallagher's micro clearfix.\n// More info: \n//\n// Author: Nicolas Gallagher\n//\n// #### Examples\n//\n// ##### Clear degree items in a degree programs panel so the degree programs background is applied properly.\n//\n// ```\n// \t\t\t.degree-programs {\n//\t\t\t\t@extend %clearfix;\n//\t\t\t\tbackground: $color-grayscale-0;\n//\t\t\t}\n//\n// \t\t\t.degree-item {\n//\t\t\t\t@extend %col-md-quarter;\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Clearfix\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n%clearfix {\n\t&::after {\n\t\tdisplay: table;\n\t\tclear: both;\n\t\tcontent: \"\";\n\t}\n}\n\n@if $burf-extras {\n\t.u-clearfix {\n\t\t@extend %clearfix;\n\t}\n}\n\n// Create responsive containers that maintain their aspect ratio on resize\n//\n// A mixin for creating aspect ratios. Apply this mixin\n// to the container that should be scalable in size, such\n// as a video wrapper or an image wrapper. This will ensure\n// the targeted element scales in size relative to its parent's\n// width. It then absolutely positions the immediate child of\n// this element so it fills the aspect ratio container.\n//\n// #### Examples\n//\n// ##### Adds aspect-ratio styling to a parent element and absolute positions its immediate child.\n// ```\n// \t\t\t\t\t$width: 200;\n//\t\t\t\t$height: 150;\n//\t\t\t\t.foo {\n//\t\t\t\t\t@include aspect-ratio( $width, $height );\n//\t\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Aspect Ratio\n//\n// Access: Public\n//\n// Since: 3.1.2\n\n@mixin aspect-ratio( $width, $height ) {\n\tposition: relative;\n\n\t&:before {\n\t\tcontent: \"\";\n\t\tdisplay: block;\n\t\tpadding-top: ( $height / $width ) * 100%;\n\t\twidth: 100%;\n\t}\n\n\t> * {\n\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\tleft: 0;\n\t}\n}\n\n// Border Radius\n//\n// A mixin for border-radius. Takes care of browser\n// prefixes for you. You should always use this mixin\n// when writing border-radius rules to ensure you're\n// compatible with the browsers we support. Accepts\n// arguments in the same syntax as standard CSS.\n// More info at MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius\n//\n// #### Examples\n//\n// ##### Create a round profile image for a callout.\n//\n// ```\n// \t\t\t.profile-callout-image {\n//\t\t\t\t@include border-radius( 50% );\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Border Radius\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n\n@mixin border-radius( $radius ) {\n\t-webkit-border-radius: $radius;\n\t-moz-border-radius: $radius;\n\t-ms-border-radius: $radius;\n\tborder-radius: $radius;\n}\n\n// Box Shadow\n//\n// A mixin for box-shadow. Takes care of browser\n// prefixes for you. You should always use this mixin\n// when writing box-shadow rules to ensure you're\n// compatible with the browsers we support.\n// Supports multiple shadows, just use the same syntax\n// as you would CSS.\n//\n// More info at MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow\n//\n// #### Examples\n//\n// ##### Create a large, subtle shadow to help a callout stand out against a complicated background, like a background photo.\n//\n// ```\n// \t\t\t.feature-callout {\n//\t\t\t\t@include box-shadow( 0px 0px 40px 0px rgba( 0, 0, 0, 0.25 ) );\n//\t\t\t}\n// ```\n//\n// ##### Create a fancy button with an inset highlight and a shadow around it to help it stand out on a background.\n//\n// ```\n// \t\t\t.fancy-button {\n//\t\t\t\t@include box-shadow(\n//\t\t\t\t\tinset 0 2px 0px rgba( 255, 255, 255, 0.25 ),\n//\t\t\t\t\t0px 0px 10px 0px rgba( 0, 0, 0, 0.25 )\n//\t\t\t\t);\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Box Shadow\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@mixin box-shadow( $shadow... ) {\n\t-webkit-box-shadow: $shadow;\n\t-moz-box-shadow: $shadow;\n\t-ms-box-shadow: $shadow;\n\t-o-box-shadow: $shadow;\n\tbox-shadow: $shadow;\n}\n\n// A mixin for linear gradients. Allows multiple color stops.\n//\n// Source: https://www.sitepoint.com/building-linear-gradient-mixin-sass\n//\n// #### Examples\n//\n// ```\n// .selector-1 {\n// \t@include linear-gradient(#31B7D7, #EDAC7D);\n// }\n// ```\n//\n// ```\n// .selector-2 {\n// \t@include linear-gradient(to right, #E47D7D 0%, #C195D3 50%, #4FB4E8 100%);\n// }\n// ```\n//\n// ```\n// .selector-3 {\n// \t@include linear-gradient(42deg, #B58234 0%, #D2B545 50%, #D7C04D 50.01%, #FFFFFF 100%);\n// }\n// ```\n//\n// Styleguide Utilities.Mixins.Linear Gradient\n//\n// Access: Public\n//\n// @param {Keyword | Angle} $direction - Linear gradient direction\n// @param {Arglist} $color-stops - List of color-stops composing the gradient\n\n@mixin linear-gradient( $direction, $color-stops... ) {\n\t// Direction has been omitted and happens to be a color-stop\n\t@if is-direction( $direction ) == false {\n\t\t$color-stops: $direction, $color-stops;\n\t\t$direction: 180deg;\n\t}\n\n\tbackground: nth( nth( $color-stops, 1 ), 1 );\n\tbackground: -webkit-linear-gradient( legacy-direction( $direction ), $color-stops );\n\tbackground: linear-gradient( $direction, $color-stops );\n}\n\n// Test if `$value` is a valid direction\n// @param {*} $value - Value to test\n// @return {Bool}\n\n@function is-direction( $value ) {\n \t$is-keyword: index( ( to top, to top right, to right top, to right, to bottom right, to right bottom, to bottom, to bottom left, to left bottom, to left, to left top, to top left ), $value );\n\t$is-angle: type-of( $value ) == 'number' and index( 'deg' 'grad' 'turn' 'rad', unit( $value ) );\n\n\t@return $is-keyword or $is-angle;\n}\n\n// Convert a direction to legacy syntax\n// @param {Keyword | Angle} $value - Value to convert\n// @require {function} is-direction\n// @require {function} convert-angle\n// @throw Cannot convert `#{$value}` to legacy syntax because it doesn't seem to be a direction.;\n\n@function legacy-direction( $value ) {\n\t@if is-direction( $value ) == false {\n\t\t@error \"Cannot convert `#{$value}` to legacy syntax because it doesn't seem to be a direction.\";\n\t}\n\n\t$conversion-map: (\n\t\tto top\t\t\t\t: bottom,\n\t\tto top right\t\t: bottom left,\n\t\tto right top\t\t: left bottom,\n\t\tto right\t\t\t : left,\n\t\tto bottom right : top left,\n\t\tto right bottom\t: left top,\n\t\tto bottom\t\t\t: top,\n\t\tto bottom left\t\t: top right,\n\t\tto left bottom\t\t: right top,\n\t\tto left\t\t\t\t: right,\n\t\tto left top\t\t\t: right bottom,\n\t\tto top left\t\t\t: bottom right\n\t);\n\n\t@if map-has-key( $conversion-map, $value ) {\n\t\t@return map-get( $conversion-map, $value );\n\t}\n\n\t@return 90deg - $value;\n}\n\n// Legacy Linear Gradient\n//\n// A mixin for linear gradients. Takes care of browser\n// prefixes for you. You should always use this mixin\n// when writing linear gradients rules to ensure you're\n// compatible with the browsers we support.\n// Always to supply a backup background color as well\n// for browsers that do not support gradients.\n// Does not support multiple gradients - you're on your\n// own for that. Deprecated as of 4.0.0.\n//\n// #### Examples\n// ##### Create a fancy button with a subtle downward gradient.\n//\n// ```\n// \t\t\t.fancy-button {\n//\t\t\t\t@include linear-gradient( transparent, darken( $your-color, 10% ) );\n//\t\t\t\tbackground-color: $your-color;\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Linear Gradient (Legacy)\n//\n// Access: Public\n//\n// Since: 1.2.0\n\n@mixin legacy-linear-gradient( $from-color: NULL, $to-color: NULL ) {\n\t// Both variables must be defined colors\n\t@if (\n\t\t\ttype-of( $from-color ) == color and\n\t\t\ttype-of( $to-color ) == color\n\t\t) {\n\t\tbackground-image: -webkit-gradient(linear, left top, left bottom, from( $from-color), to( $to-color)); // Saf4+, Chrome\n\t\tbackground-image: -webkit-linear-gradient(top, $from-color, $to-color); // Chrome 10+, Saf5.1+, iOS 5+\n\t\tbackground-image: -moz-linear-gradient(top, $from-color, $to-color); // FF3.6\n\t\tbackground-image: -ms-linear-gradient(top, $from-color, $to-color); // IE10\n\t\tbackground-image: -o-linear-gradient(top, $from-color, $to-color); // Opera 11.10+\n\t\tbackground-image: linear-gradient(top, $from-color, $to-color);\n\t\tfilter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#{$from-color}', EndColorStr='#{$to-color}');\n\t} @else {\n\t\t@error 'The linear gradient mixin requires two valid colors or variables which hold colors. \\a Example usage: @include linear-gradient( $from-color, $to-color);';\n\t}\n}\n\n// Opacity\n//\n// A mixin for opacity. Takes care of browser\n// prefixes for you. You should always use this mixin\n// when writing opacity rules to ensure you're\n// compatible with the browsers we support. Accepts\n// arguments in the same syntax as standard CSS.\n// More info at MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/opacity\n//\n// #### Examples\n// ##### Fade a thumbnail until it's hovered over.\n//\n// ```\n// \t\t\t.gallery-thumbnail {\n//\t\t\t\t@include opacity( 0.5 );\n//\n//\t\t\t\t&:hover {\n//\t\t\t\t\t@include opacity( 1 );\n//\t\t\t\t}\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Opacity\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@mixin opacity( $opacity: NULL ) {\n\t@if ( $opacity <= 1 ) {\n\t\t$opacity-ie: $opacity * 100;\n\t\topacity: $opacity;\n\t\tfilter: alpha(opacity=$opacity-ie); //IE8\n\t} @else if ( type-of( $opacity ) == string ) { // Accounts for initial, inherit, unset\n\t\topacity: $opacity;\n\t} @else {\n\t\t@error 'Opacity must be specified as a decimal value. \\a Example usage: @include opacity( 0.5 );';\n\t}\n}\n\n// Transition\n//\n// A mixin for transition. Takes care of browser\n// prefixes for you. You should always use this mixin\n// when writing transition rules to ensure you're\n// compatible with the browsers we support.\n// Supports multiple transitions, just use the same syntax\n// as you would CSS. Please note: you should avoid trasition `all`,\n// as it can become a significant performance issue on older devices.\n// The cheapest properties to animate performance-wise are `transform`,\n// `opacity`, and `filter` - if you're not sure what you're doing, it's\n// best to stick to those where possible.\n// Learn how to test animation performance: \n// Syntax info at MDN: \n//\n// #### Examples\n// ##### Transition the opacity on a lightbox when it is opened.\n//\n// ```\n// \t\t\t.lightbox-overlay {\n//\t\t\t\t@include opacity( 0 );\n//\t\t\t\t@include transition( opacity 250ms ease-in-out 0s );\n//\n//\t\t\t\t&.open {\n//\t\t\t\t\t@include opacity( 1 );\n//\t\t\t\t\t@include transition( opacity 250ms ease-in-out 0s );\n//\t\t\t\t}\n//\t\t\t}\n// ```\n//\n// ##### Transition multiple properties between hidden and visible item states for a filter and ensure that certain properties are applied to the animation immediately using the `step-start` timing function. Note the delay on opacity.\n//\n// ```\n// \t\t\t.degree-program-hidden {\n//\t\t\t\t@include opacity( 0 );\n//\t\t\t\t@include scale( 1, 0 );\n//\t\t\t\tz-index: 1;\n//\n//\t\t\t\t@include transition(\n//\t\t\t\t\topacity 250ms ease-in-out .2s,\n//\t\t\t\t\ttransform 250ms ease-in-out 0s,\n//\t\t\t\t\tz-index 0s step-start 0s\n//\t\t\t\t);\n//\t\t\t}\n// \t\t\t.degree-program-visible {\n//\t\t\t\t@include opacity( 1 );\n//\t\t\t\t@include scale( 1, 1 );\n//\t\t\t\tz-index: 2;\n//\n//\t\t\t\t@include transition(\n//\t\t\t\t\topacity 250ms step-end .2s,\n//\t\t\t\t\ttransform 250ms ease-out 0s,\n//\t\t\t\t\tz-index 0s step-start 0s\n//\t\t\t\t);\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Transition\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@mixin transition( $transitions... ) {\n\t-webkit-transition: $transitions;\n\t-moz-transition: $transitions;\n\t-ms-transition: $transitions;\n\t-o-transition: $transitions;\n\ttransition: $transitions;\n}\n\n// Transform\n//\n// A mixin for transform. Takes care of browser\n// prefixes for you. You should always use this mixin\n// when writing transform rules to ensure you're\n// compatible with the browsers we support.\n// Supports multiple transforms, just use the same syntax\n// as you would CSS.\n// More info at MDN: \n//\n// #### Examples\n// ##### Move a callout.\n//\n// ```\n// \t\t\t.callout {\n//\t\t\t\t@include transform( translateX( 100px ) );\n//\t\t\t}\n// ```\n//\n// ##### Move and rotate a callout.\n//\n// ```\n// \t\t\t.callout-selected {\n//\t\t\t\t@include transform(\n//\t\t\t\t\ttranslateX( 100px )\n//\t\t\t\t\ttranslateY( 20px )\n//\t\t\t\t\trotate( 20deg )\n//\t\t\t\t);\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Transform\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n\n@mixin transform( $transforms ) {\n\t-webkit-transform: $transforms;\n\t-moz-transform: $transforms;\n\t-ms-transform: $transforms;\n\t-o-transform: $transforms;\n\ttransform: $transforms;\n}\n\n// Rotate\n//\n// A shorthand mixin for rotate. Takes care of browser\n// prefixes for you. You could use `transform` as well.\n// Accepts an amount of degrees to rotate by.\n// More info at MDN: \n//\n// #### Examples\n// ##### Rotate a callout 90 degrees.\n//\n// ```\n// \t\t\t.callout {\n//\t\t\t\t@include rotate( 90 );\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Rotate\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@mixin rotate( $deg ) {\n\t@include transform( rotate( #{$deg}deg ) );\n}\n\n// Scale\n//\n// A shorthand mixin for scale. Takes care of browser\n// prefixes for you. You could use `transform` as well.\n// Accepts an amount of degrees to rotate by.\n// More info at MDN: \n// #### Examples\n//\n// ##### Scale a callout to double its size.\n//\n// ```\n// \t\t\t.callout {\n//\t\t\t\t@include scale( 2 );\n//\t\t\t}\n// ```\n//\n// ##### Scale the height of a filtered item from 0 to the full height when visible.\n//\n// ```\n// \t\t\t.degree-program {\n//\t\t\t\t@include scale( 0, 0 );\n//\n//\t\t\t\t&.visible {\n//\t\t\t\t\t@include scale( 0, 1 );\n//\t\t\t\t}\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Scale\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@mixin scale( $scale... ) {\n\t@include transform( scale( $scale ) );\n}\n\n// Translate\n//\n// A shorthand mixin for translate. Takes care of browser\n// prefixes for you. You could use `transform` as well.\n// Accepts two arguments: an amount to translate X by, and\n// an amount to translate Y by.\n//\n// More info at MDN: \n//\n// #### Examples\n// ##### Move a callout 10px to the left.\n//\n// ```\n// \t\t\t.callout {\n//\t\t\t\t@include translate( -10px, 0 );\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Translate\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@mixin translate( $x, $y ) {\n\t@include transform( translate( $x, $y ) );\n}\n\n// Transform Origin\n//\n// A mixin for transform-origin. Takes care of browser\n// prefixes for you. You should always use this mixin\n// when writing transform-origin rules to ensure you're\n// compatible with the browsers we support.\n// Use with `transform`, `rotate`, `scale`, or `translate`\n// to tell the browser where the transform should start from.\n// Accepts any valid CSS value for `transform-origin`.\n//\n// More info at MDN: \n//\n// #### Examples\n//\n// ##### Scale the height of a filtered item from 0 to the full height when visible and start the transform from the top of the item.\n//\n// ```\n// \t\t\t.degree-program {\n//\t\t\t\t@include scale( 0, 0 );\n//\t\t\t\t@include transform-origin( top );\n//\n//\t\t\t\t&.visible {\n//\t\t\t\t\t@include scale( 0, 1 );\n//\t\t\t\t}\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.BURF Extras\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@mixin transform-origin( $origin ) {\n\t-webkit-transform-origin: $origin;\n\t-moz-transform-origin: $origin;\n\t-ms-transform-origin: $origin;\n\t-o-transform-origin: $origin;\n\ttransform-origin: $origin;\n}\n\n// Keyframes\n//\n// A mixin for keyframes. Takes care of browser\n// prefixes for you. You should always use this mixin\n// when writing keyframe rules to ensure you're\n// compatible with the browsers we support.\n// Use with `animation` to build complex animations\n// that `transition` isn't capable of alone and to tightly\n// control timing.\n//\n// Accepts any valid CSS value for `keyframes`.\n// More info at MDN: \n//\n// #### Examples\n//\n// ##### Create an infinite loading animation which completes every 250ms using keyframes and animation.\n//\n// ```\n// \t\t\t@include keyframes( infinite-loader ) {\n// \t\t\t\tfrom {\n// \t\t\t\t\ttransform: rotate( 0deg );\n// \t\t\t\t}\n// \t\t\t\tto {\n// \t\t\t\t\ttransform: rotate( 360deg );\n// \t\t\t\t}\n// \t\t\t}\n//\n// \t\t\t.loading {\n//\t\t\t\t@include animation( infinite-loader 250ms infinite );\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Keyframes\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@mixin keyframes( $animation-name ) {\n\t@-webkit-keyframes #{$animation-name} {\n\t\t@content;\n\t}\n\t@-moz-keyframes #{$animation-name} {\n\t\t@content;\n\t}\n\t@-ms-keyframes #{$animation-name} {\n\t\t@content;\n\t}\n\t@-o-keyframes #{$animation-name} {\n\t\t@content;\n\t}\n\t@keyframes #{$animation-name} {\n\t\t@content;\n\t}\n}\n\n// Animation\n//\n// A mixin for animation. Takes care of browser\n// prefixes for you. You should always use this mixin\n// when writing animation rules to ensure you're\n// compatible with the browsers we support.\n// Use with `keyframes` to build complex animations\n// that `transition` isn't capable of alone and to tightly\n// control timing.\n//\n// Accepts any valid CSS value for `animation`, including\n// multiple animation declarations.\n//\n// More info at MDN: \n//\n// #### Examples\n// ##### Create an infinite loading animation which completes every 250ms using keyframes and animation.\n//\n// ```\n// \t\t\t@include keyframes( infinite-loader ) {\n// \t\t\t\tfrom {\n// \t\t\t\t\ttransform: rotate( 0deg );\n// \t\t\t\t}\n// \t\t\t\tto {\n// \t\t\t\t\ttransform: rotate( 360deg );\n// \t\t\t\t}\n// \t\t\t}\n//\n// \t\t\t.loading {\n//\t\t\t\t@include animation( infinite-loader 250ms infinite );\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Animation\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n\n@mixin animation( $keyframe-animations... ) {\n\t-webkit-animation: #{$keyframe-animations};\n\t-moz-animation: #{$keyframe-animations};\n\t-ms-animation: #{$keyframe-animations};\n\t-o-animation: #{$keyframe-animations};\n\tanimation: #{$keyframe-animations};\n}\n\n// Vertically Center (Legacy IE8)\n//\n// A deprecated mixin for vertical centering in IE8. This is an older\n// approach that can be used when centering is critical for IE8,\n// such as with branding, or lack of centering will cause usability\n// issues. If neither of these applies, use the newer version, which\n// is simpler, less buggy with regards to positioning, and uses flexbox.\n// With this mixin, you can choose to center all child items, or just\n// a specific selector. You should always try to use the specific selector\n// option where possible to avoid performance issues.\n// This mixin should be used on the parent element of whatever you want to center.\n// Covers vertical centering for IE8 and above; no additional mixins are necessary.\n//\n// #### Examples\n// ##### Center everything in a callout vertically (bad).\n//\n// ```\n// \t\t\t.callout {\n//\t\t\t\t@include vertical-center-child-ie8;\n//\t\t\t}\n// \t\tCenter only the callout text in a callout vertically (good).\n// \t\t\t.callout {\n//\t\t\t\t@include vertical-center-child-ie8( \".callout-text\" );\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Vertically Center (Legacy IE8)\n//\n// Access: Public\n//\n// Status: Deprecated\n//\n// Since: 1.0.0\n\n@mixin vertical-center-child-ie8( $selector: \"*\" ) {\n\t.lt-ie9 & {\n\t\tdisplay: table;\n\t}\n\t.lt-ie9 & > #{$selector} {\n\t\ttop: auto;\n\t\tdisplay: table-cell;\n\t\tvertical-align: middle;\n\t}\n\t& > #{$selector} {\n\t\tposition: relative;\n\t\ttop: 50%;\n\t\tdisplay: block;\n\t\t-webkit-transform: translateY( -50% );\n\t\t\t-moz-transform: translateY( -50% );\n\t\t\t -ms-transform: translateY( -50% );\n\t\t\t\t transform: translateY( -50% );\n\t}\n}\n\n// Vertically Center (Legacy IE9)\n//\n// A deprecated mixin for vertical centering in IE9 and above. This is an\n// older approach that can be used when centering is critical for IE9.\n// Vertical centering is not available in IE8 using this approach.\n// If this doesn't apply, use the newer version, which is simpler,\n// less buggy with regards to positioning, and uses flexbox.\n// This mixin should be used on the element you want to center.\n// No parent styles are necessary.\n//\n// #### Examples\n// ##### Vertically center the callout text in a callout.\n//\n// ```\n// \t\t\t.callout {\n//\t\t\t\t@include vertical-center-ie9;\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Vertically Center (Legacy IE9)\n//\n// Access: Public\n//\n// Status: Deprecated\n//\n// Since: 1.0.0\n\n@mixin vertical-center-ie9 {\n\tposition: relative;\n\ttop: 50%;\n\t-webkit-transform: translateY(-50%);\n\t\t-moz-transform: translateY(-50%);\n\t\t -ms-transform: translateY(-50%);\n\t\t\t transform: translateY(-50%);\n\t.lt-ie9 & {\n\t\ttop: auto;\n\t}\n}\n\n// Vertically Center\n//\n// A mixin for vertically and horizontally centering all children\n// in modern browsers using flexbox.\n//\n// Use this mixin when centering isn't critical to usability.\n// Older browsers will gracefully degrade and not center.\n// This mixin should be used on the parent of the elements you\n// want to center.\n//\n// By default, this is set to work as-is for most use cases, but\n// you may be interested in tweaking the parameters if you\n// want flexbox-specific functionality.\n//\n// #### Examples\n//\n// ##### Center all elements in a callout for modern browsers.\n//\n// ```\n// \t\t\t.callout {\n//\t\t\t\t@include center-children;\n//\t\t\t}\n// \t\tCenter all elements in a callout for modern browsers,\n//\t\tbut let flexbox decide the width for each child item.\n// \t\t\t.callout {\n//\t\t\t\t@include center-children( center, center, nowrap, center );\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Vertically Center\n//\n// @param {string} | $align-content [center] - Removes the gap between multiple child items.\n// @param {string} | $align-items [center] - Centers child items vertically.\n// @param {string} | $flex-wrap [wrap] - Wraps child items so the width behaves as expected.\n// @param {string} | $justify-content [center] - Centers child items horizontally.\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n@mixin center-children( $align-content: center, $align-items: center, $flex-wrap: wrap, $justify-content: center ) {\n\talign-content: $align-content;\n\talign-items: $align-items;\n\tdisplay: flex;\n\tflex-wrap: $flex-wrap;\n\tjustify-content: $justify-content;\n}\n\n// Hide Text\n//\n// Hides text in an element visually, but preserves width and height\n// and screen reader visibility. Use this placeholder to hide text when\n// you need a visual representation of the screen reader text,\n// but the text itself isn't desirable to have in your design,\n// such as in a logo. For example, this placeholder is used to\n// hide the text on the BU masterplate and BUMC logo in the footer.\n// In cases where there is no visual component to worry about,\n// %visually-hidden is preferred because it supports right-to-left\n// languages and will be safer if a site is ever translated.\n//\n// More info on this technique: \n//\n// #### Examples\n//\n// ##### Hide text on a logo using a background image.\n//\n// ```\n// \t\t\t.custom-logo {\n//\t\t\t\t@extend %hide-text;\n//\t\t\t\tbackground-image: url( \"images/your-image.jpg\" );\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Hide Text\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n%hide-text {\n\toverflow: hidden;\n\ttext-indent: 100%;\n\twhite-space: nowrap;\n}\n\n// Hide Text Class\n//\n// Hides text in an element visually, but preserves width and height\n// and screen reader visibility. Use this class to hide text when\n// you need a visual representation of the screen reader text,\n// but the text itself isn't desirable to have in your design,\n// such as in a logo. For example, this placeholder is used to\n// hide the text on the BU masterplate and BUMC logo in the footer.\n// In cases where there is no visual component to worry about,\n// %visually-hidden is preferred because it supports right-to-left\n// languages and will be safer if a site is ever translated.\n// Available when `$burf-extras` is enabled.\n//\n// More info on this technique: \n//\n// #### Examples\n//\n// ##### Hide text on a logo using a background image.\n//\n// ```\n// \t\t\t.custom-logo {\n//\t\t\t\t@extend %hide-text;\n//\t\t\t\tbackground-image: url( \"images/your-image.jpg\" );\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Extras.Hide Text Class\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@if $burf-extras {\n\t.u-hide-text {\n\t\t@extend %hide-text;\n\t}\n}\n\n// Visually Hidden (Screen Reader Text)\n//\n// Hides entire elements visually, but preserves visibility for\n// screen readers. Use this placeholder when an element is only\n// for screen readers and needs no visual representation on the site.\n// This is the preferred method of hiding items visually as it works\n// with right-to-left languages, making it a safer choice if a site is\n// ever translated.\n//\n// More info on this technique: \n//\n// #### Examples\n//\n// ##### Hide a label in a button.\n//\n// ```\n// \t\t\t.fancy-button-label {\n//\t\t\t\t@extend %visually-hidden;\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Visually Hidden (Screen Reader Text)\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n%visually-hidden {\n\tborder: 0;\n\tclip: rect( 0, 0, 0, 0 ); // Deprecated. Remove when clip-path support is better.\n\t-webkit-clip-path: inset( 50% );\n\tclip-path: inset( 50% );\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n\n// Visually Hidden (Screen Reader Text) Class\n//\n// Hides entire elements visually, but preserves visibility for\n// screen readers. Use this class when an element is only\n// for screen readers and needs no visual representation on the site.\n// This is the preferred method of hiding items visually as it works\n// with right-to-left languages, making it a safer choice if a site is\n// ever translated.\n//\n// Available when `$burf-extras` is enabled.\n//\n// More info on this technique: \n//\n// #### Examples\n//\n// ##### Hide a label in a button.\n//\n// ```\n// \t\t\t.fancy-button-label {\n//\t\t\t\t@extend %visually-hidden;\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Extras.Visually Hidden (Screen Reader Text) Class\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@if $burf-extras {\n\t.u-visually-hidden {\n\t\t@extend %visually-hidden;\n\t}\n}\n\n// Remove visually hidden styles\n//\n// Reverses `%visually-hidden`. Helpful if you want to\n// unhide a previously hidden label.\n//\n// #### Examples\n//\n// ##### Show a previously hidden label for all users.\n//\n// ```\n// \t\t\t.fancy-button-label {\n//\t\t\t\t@extend %remove-visually-hidden;\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Remove visually hidden\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n%remove-visually-hidden {\n\tclip: auto;\n\t-webkit-clip-path: none;\n\tclip-path: none;\n\theight: auto;\n\tmargin: 0;\n\toverflow: visible;\n\tposition: static;\n\twidth: auto;\n}\n\n// Hide class\n//\n// A class for developers to use to quickly prototype filtering.\n// Hides an item completely. Do not use in production code.\n// Never override this class in your CSS. Instead, attach the\n// final show/hide animations to the CSS class you decide to use\n// for that element.\n//\n// Available when `$burf-extras` is enabled.\n//\n// Styleguide Utilities.Extras.Hide Class\n//\n// Access: Public\n//\n// Since: 2.0.0\n//\n\n@if $burf-extras {\n\t.u-hide {\n\t\tdisplay: none;\n\t}\n}\n\n// Show Class\n//\n// A class for developers to use to quickly prototype filtering.\n// Shows an item. Do not use in production code.\n// Never override this class in your CSS. Instead, attach the\n// final show/hide animations to the CSS class you decide to use\n// for that element.\n//\n// Available when `$burf-extras` is enabled.\n//\n// Styleguide Utilities.Extras.Show Class\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n@if $burf-extras {\n\t.u-show {\n\t\tdisplay: block;\n\t}\n}\n\n// Padding Class\n//\n// A class for developers to use to enable style matching to\n// Responsive child themes. Generally used to aid in plugin\n// development - it's unlikely you'll want to use this in\n// a child theme, since you have control over the output.\n// Matches to the $padding variable.\n//\n// Available when `$burf-extras` is enabled.\n//\n// Styleguide Utilities.Extras.Padding Class\n//\n// Access: Public\n//\n// Since: 2.0.0\n//\n\n@if $burf-extras {\n\t.u-padding {\n\t\tpadding: $padding;\n\t}\n}\n\n// Margin Class\n//\n// A class for developers to use to enable style matching to\n// Responsive child themes. Generally used to aid in plugin\n// development - it's unlikely you'll want to use this in\n// a child theme, since you have control over the output.\n// Matches to the $margin variable.\n//\n// Available when `$burf-extras` is enabled.\n//\n// Styleguide Utilities.Extras.Margin Class\n//\n// Access: Public\n//\n// Since: 2.0.0\n//\n\n@if $burf-extras {\n\t.u-margin {\n\t\tmargin: $margin;\n\t}\n}\n\n// Breakpoints Mixin\n//\n// A safe way to including responsive styles on old browers which\n// do not fully support media queries, such as IE8.\n//\n// All media queries using this mixin are mobile-first (`min-width`).\n// This mixin will take all reponsive styles up to a certain point and print\n// them in the order they're written in the ie.css stylesheet, up until\n// the default screen width you set to support in IE8 and below.\n//\n// In most cases, you won't have to change this from `$lg`, but you\n// can always check Google Analytics to see what the most used screen\n// size is for your site's older IE users if you like, and set it to that.\n//\n// This mixin no longer supports custom media queries like `max-width` as of 2.0,\n// because those styles do not generally need to be included for old IE\n// to be usable. Instead, you should use a plain CSS media query, which\n// will not interfere with older browsers and degrade gracefully.\n//\n// By default, you'll use this mixin for all your responsive styles,\n// and should only have a few very minor exceptions in media queries.\n//\n// #### Examples\n//\n// ##### Change the background of a callout from black to white on tablets in vertical orientation and larger.\n//\n// ```\n// \t\t\t.callout {\n//\t\t\t\tbackground: $color-grayscale-0;\n//\n//\t\t\t\t@include breakpoint( $xs ) {\n//\t\t\t\t\tbackground: $color-grayscale-f;\n//\t\t\t\t}\n//\t\t\t}\n// ```\n//\n// ##### Override the background on a callout to white, but only on the smallest phones.\n//\n// ```\n// \t\t\t.callout {\n//\t\t\t\t@media screen and ( max-width: $xs - 1 ) {\n//\t\t\t\t\tbackground: $color-grayscale-f;\n//\t\t\t\t}\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Breakpoints Mixin\n//\n// @param {variable | number} | $breakpoint - The window width to begin applying your styles. Can be any pixel value, but `$xs`, `$sm`, `$md`, `$lg`, and `$xl` are standard in this framework.\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@mixin breakpoint( $point, $skip-mqs-for-ie: true ) {\n\t// Error handling for anyone upgrading to 2.0\n\t@if ( type-of( $point ) == string ) {\n\t\t@error 'The breakpoint shortcut \"#{$point}\" is no longer supported as of Responsive 2.0. \\a Use the direct breakpoint variable ($#{$point}) instead. \\a If want to use max-width, write a plain @media query.';\n\t}\n\t@if ( $mqs ) {\n\t\t@media ( min-width: $point ) {\n\t\t\t@content;\n\t\t}\n\t} @else {\n\t\t@if ( $point >= $lte-ie8-target-width and $skip-mqs-for-ie ) {\n\t\t\t// Do not output very large desktop styles for IE8\n\t\t} @else {\n\t\t\t@content;\n\t\t}\n\t}\n}\n\n// Angle\n//\n// A mixin to quickly add angles to an element.\n// Uses before/after pseudo classes.\n// Based on Jeremy Frank's work here: \n//\n// #### Examples\n//\n// ##### Add a 1.5 degree angle, slanted right, to the bottom of a callout.\n//\n// ```\n//\t\t.callout {\n//\t\t\t@include angle( after );\n//\t\t}\n// ```\n//\n// ##### Add angles to both edges of a callout.\n//\n// ```\n//\t\t.callout {\n//\t\t\t@include angle( both );\n//\t\t}\n// ```\n//\n// ##### Add a 2.5 degree angle, slanted right, to the top of a callout.\n//\n// ```\n//\t\t.callout {\n//\t\t\t@include angle( before, false, 2.5deg );\n//\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Angle\n//\n// @param {string} | $pseudo [after] - The pseudo-element to apply the angle to. Use before to get an angle on top, after to get an angle on bottom.\n// @param {bool} | $flip [false] - Whether or not to flip the default angle slant. By default, the angle will slant upwards to the right.\n// @param {deg} | $angle [1.5deg] - The number of degrees to slant the angle at.\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n@mixin angle( $pseudo: after, $flip: false, $angle: 1.5deg ) {\n\t@if $pseudo == 'before' or $pseudo == 'after' or $pseudo == 'both' {\n\t\tposition: relative;\n\t\tz-index: 1;\n\n\t\t$selector: if( $pseudo == 'both', '&:before,&:after', '&:#{$pseudo}' );\n\n\t\t#{$selector} {\n\t\t\t-webkit-backface-visibility: hidden; // for Chrome Windows\n\t\t\tbackground: inherit;\n\t\t\tcontent: \"\";\n\t\t\tdisplay: block;\n\t\t\theight: 50%;\n\t\t\tleft: 0;\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\tz-index: -1;\n\t\t}\n\n\t\t@if $pseudo == 'before' {\n\t\t\t#{$selector} {\n\t\t\t\ttop: 0;\n\n\t\t\t\t@if $flip {\n\t\t\t\t\ttransform: skewY($angle * -1);\n\t\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t} @else {\n\t\t\t\t\ttransform: skewY($angle);\n\t\t\t\t\ttransform-origin: 100% 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@if $pseudo == 'after' {\n\t\t\t#{$selector} {\n\t\t\t\tbottom: 0;\n\n\t\t\t\t@if $flip {\n\t\t\t\t\ttransform: skewY($angle);\n\t\t\t\t\ttransform-origin: 0 100%;\n\t\t\t\t} @else {\n\t\t\t\t\ttransform: skewY($angle * -1);\n\t\t\t\t\ttransform-origin: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@if $pseudo == 'both' {\n\t\t\t&:before {\n\t\t\t\ttop: 0;\n\n\t\t\t\t@if $flip {\n\t\t\t\t\ttransform: skewY($angle * -1);\n\t\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t} @else {\n\t\t\t\t\ttransform: skewY($angle);\n\t\t\t\t\ttransform-origin: 100% 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:after {\n\t\t\t\tbottom: 0;\n\n\t\t\t\t@if $flip {\n\t\t\t\t\ttransform: skewY($angle);\n\t\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t} @else {\n\t\t\t\t\ttransform: skewY($angle * -1);\n\t\t\t\t\ttransform-origin: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Debug Map\n//\n// Outputs a sass map neatly in CSS for debugging purposes.\n// Sends output to terminal on compile.\n// From \n//\n// Styleguide Utilities.Mixins.Debug Map\n//\n// @param {map} | $map - A sass map to debug.\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n@mixin debug-map( $map ) {\n\t@at-root {\n\t\t@debug-map {\n\t\t\t__toString__: inspect( $map );\n\t\t\t__length__: length( $map );\n\t\t\t__depth__: depth( $map );\n\t\t\t__keys__: map-keys( $map );\n\t\t\t__properties__ {\n\t\t\t\t@each $key, $value in $map {\n\t\t\t\t\t#{\"(\" + type-of( $value ) + \") \" + $key}: inspect( $value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Retina\n//\n// A shortcut media query for retina devices.\n// Handy for including separate retina images.\n// Accepts blocks of CSS or Sass.\n//\n// #### Examples\n//\n// ##### Add a retina-specific logo.\n//\n// ```\n// \t\t\t.custom-logo {\n//\t\t\t\tbackground: url( \"images/custom-logo.jpg\" );\n//\n//\t\t\t\t@include retina {\n//\t\t\t\t\tbackground: url( \"images/custom-logo-retina.jpg\" );\n//\t\t\t\t}\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.Retina\n//\n// Access: Public\n//\n// Since: 1.0.0\n//\n\n@mixin retina {\n\t@media\n\tonly screen and (-webkit-min-device-pixel-ratio: 2),\n\tonly screen and ( min--moz-device-pixel-ratio: 2),\n\tonly screen and ( -o-min-device-pixel-ratio: 2/1),\n\tonly screen and ( min-device-pixel-ratio: 2),\n\tonly screen and ( min-resolution: 192dpi),\n\tonly screen and ( min-resolution: 2dppx) {\n\t\t@content;\n\t}\n}\n\n// RGBA Color\n//\n// Generates backwards-compatible RGBA color CSS by calculating\n// a solid color that looks the same as what a user sees for IE8 and\n// below.\n//\n// #### Examples\n\n// ##### Style a darkened overlay on the bottom half of a callout with a green background.\n//\n// ```\n// \t\t\t.callout-overlay {\n//\t\t\t\t@include rgba-color( background-color, rgba( $color-grayscale-0, 0.5 ), $green );\n//\t\t\t}\n// ```\n//\n// Styleguide Utilities.Mixins.RGBA Color\n//\n// @param {string} | $attribute - The CSS attribute to apply your color to.\n// @param {string} | $color - The rgba color to use for modern browsers.\n// @param {string} | $background - The background color of the item this will sit on top of, to help calculate an accurate fallback color. Use a solid version of the same color as `$color` for photos.\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n@mixin rgba-color( $attribute: NULL, $color: NULL, $background: NULL ) {\n\t@if (\n\t\ttype-of( $attribute ) == string and\n\t\ttype-of( $color ) == color and\n\t\ttype-of( $background ) == color\n\t) {\n\t\t$percent: alpha( $color ) * 100%;\n\t\t$opaque: opacify( $color, 1 );\n\t\t$solid-color: mix( $opaque, $background, $percent );\n\n\t\t#{$attribute}: $solid-color;\n\t\t#{$attribute}: $color;\n\t} @else {\n\t\t@error 'The rgba-color mixin requires a valid CSS attribute to apply the color to, a valid RGBA color, and a valid background color to calculate the fallback color. \\a Example usage: @include rgba-color(\\'background-color\\', rgba(black, 0.5), white);';\n\t}\n}\n\n// The root element font-size (html element).\n//\n// Access: Public\n//\n// Since: 3.2.3\n\n$root-font-size: 16 !default;\n\n// em Conversion\n//\n// Helper function to output 'em' value based on supplied px value.\n//\n// Styleguide Utilities.Mixins.em Conversion\n//\n// @param integer $pixels The value in pixels (without px unit)\n// @param integer $context The parent container font-size context.\n//\n// Access: Public\n//\n// Since: 3.2.3\n\n\n@function em($pixels, $context: 16) {\n @return #{$pixels / $context}em;\n}\n\n// rem Conversion\n//\n// Helper function to output 'rem' value based on supplied px value.\n//\n// Styleguide Utilities.Mixins.rem Conversion\n//\n// Access: Public\n//\n// Since: 3.2.3\n//\n// @param integer $pixels The value in pixels (without px unit)\n// @param integer $root-font-size The html element font-size.\n\n@function rem($pixels, $root-font-size) {\n @return #{$pixels / $root-font-size}rem;\n}\n\n;@import \"sass-embedded-legacy-load-done:3493\";","// =================================================================\n// Sample Styles - Configurable\n// =================================================================\n//\n//\n// Styles in this file should mainly be for layout, width, etc that are\n// not able to be overwritten by the variables in the global sass array\n//\n//\n\n.wp-block-editorial-aside {\n\t@extend %col-full;\n\tborder: 1px solid $color-grayscale-d;\n\tborder-top: 3px solid $color-grayscale-1;\n\tclear: both;\n\tmargin-bottom: 40px;\n\tmargin-top: 10px;\n\tpadding: 30px;\n\ttext-align: center;\n\n\tfigure {\n\t\tmargin-bottom: 0.7em;\n\t}\n\n\tp {\n\t\tcolor: $color-grayscale-6;\n\t\tline-height: 1.5;\n\t\tmargin: 0 0 1em 0;\n\t\tfont-size: 16px;\n\t}\n\n\t&.alignleft,\n\t&.alignright {\n\t\t@extend %col-full;\n\t\t@extend %col-xs-half;\n\t\t@extend %col-sm-third;\n\t\tmax-width: 100%;\n\t\tmargin-left: 8.3333%;\n\t\tmargin-right: 8.3333%;\n\t}\n\n\t&.alignleft {\n\t\tmargin: 20px auto;\n\t\tmargin-left: 8.3333%;\n\t\tmargin-right: 8.3333%;\n\n\t\t@include breakpoint( $sm ) {\n\t\t\tfloat: left;\n\t\t\tmargin: 0 30px 20px -40px;\n\t\t}\n\t}\n\n\t&.alignright {\n\t\tmargin: 20px auto;\n\n\t\t@include breakpoint( $sm ) {\n\t\t\tmargin: 0 -10px 20px 30px;\n\t\t\tfloat: right;\n\t\t}\n\t}\n\n\t&.has-dark-background,\n\t&.has-light-background,\n\t&.has-primary-background,\n\t&.has-secondary-background,\n\t&.has-tertiary-background,\n\t&.has-quaternary-background,\n\t&.has-quinary-background {\n\t\tborder: none;\n\t}\n\n\t&.has-dark-background {\n\t\tbackground: $color-grayscale-4;\n\n\t\th2 {\n\t\t\tcolor: $color-grayscale-f;\n\t\t}\n\n\t\tp {\n\t\t\tcolor: $color-grayscale-f0;\n\t\t}\n\t}\n\n\t&.has-light-background {\n\t\tbackground: $color-grayscale-e;\n\t}\n\n\t&.has-primary-background {\n\t\th2 {\n\t\t\tcolor: $color-grayscale-f;\n\t\t}\n\t}\n}\n\n\n;@import \"sass-embedded-legacy-load-done:3830\";","// =================================================================\n// Variables\n// =================================================================\n\n// BURF Extras\n//\n// Turns a number of extra classes on or off. This is really only\n// for the tools partial - you shouldn't use it in a custom theme\n// unless you're VERY sure you will never need it. Placeholders will\n// still work when this is set to false. Affects friendly grid classes,\n// utility classes, and icon classes.\n//\n// Author: Ashley Kolodziej\n//\n// Styleguide Configuration.Optimization.BURF Extras\n//\n// Access: Public\n//\n// Since: 3.2.0\n\n$burf-extras: true !default;\n\n// Enable media queries\n//\n// Choose whether or not to enable media queries in your stylesheet.\n// If you set this to false, it will print media queries in the\n// order they are declared so that desktop styles will always\n// override mobile styles, regardless of screen size.\n// This is mostly useful for browsers which do not support media queries.\n// By default, an older IE stylesheet is generated using this variable.\n//\n// Styleguide Configuration.Media Queries.Enable media queries\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$mqs: true !default;\n\n// Extra small breakpoint\n//\n// The window width at which extra small styles will begin.\n// By default, this is set to target most large phones.\n//\n// Deprecated versions of this variable include `$XS`.\n//\n// Styleguide Configuration.Media Queries.$xs\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$xs: 500px !default;\n\n// Small breakpoint\n//\n// The window width at which small styles will begin.\n// By default, this is set to target most small tablets\n// and iPads in vertical orientation.\n//\n// Deprecated versions of this variable include `$S`, `$SM`.\n//\n// Styleguide Configuration.Media Queries.$sm\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$sm: 768px !default;\n\n// Medium breakpoint\n//\n// The window width at which medium styles will begin.\n// By default, this is set to target older desktops\n// and iPads in horizontal orientation.\n//\n// Deprecated versions of this variable include `$M`. `$MD`.\n//\n// Styleguide Configuration.Media Queries.$md\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$md: 992px !default;\n\n// Large breakpoint\n//\n// The window width at which large styles will begin.\n// By default, this is set to target most laptops.\n//\n// Deprecated versions of this variable include `$L`, `$LG`.\n//\n// Styleguide Configuration.Media Queries.$lg\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$lg: 1200px !default;\n\n// Extra Large breakpoint\n//\n// The window width at which extra large styles will begin.\n// By default, this is set to target most modern desktops.\n//\n// Styleguide Configuration.Media Queries.f: $xl\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$xl: 1500px !default;\n\n// IE8 Target Width\n//\n// The window width to target for IE8 and below.\n// Because older versions of IE don't support media queries,\n// we use this width to target the most likely browser width\n// an older IE user will be viewing the site in.\n//\n// Styleguide Configuration.Media Queries.g: IE8 Target Width\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$lte-ie8-target-width: $lg !default;\n\n\n/// @group 08-layout\n/// @access public\n/// @since 1.2.0\n\n// Small Container Width\n//\n// The container width for the small (sm) breakpoint.\n//\n// Deprecated versions of this variable include `$container_S`, `$container-SM`.\n//\n// Styleguide Configuration.Containers.Small Container Width\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$container-sm: 750px !default;\n\n// Medium Container Width\n//\n// The container width for the medium (md) breakpoint.\n//\n// Deprecated versions of this variable include `$container_M`, `$container-MD`.\n//\n// Styleguide Configuration.Containers.Medium Container Width\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$container-md: 970px !default;\n\n// Large Container Width\n//\n// The container width for the large (lg) breakpoint.\n//\n// Deprecated versions of this variable include `$container_L`, `$container-LG`.\n//\n// Styleguide Configuration.Containers.Large Container Width\n//\n// Access: Public\n//\n// Since: 0.1.0\n\n$container-lg: 1170px !default;\n\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// z-index\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n\n// Z-Index 1\n//\n// The lowest priority z-index possible.\n// Used for content by default.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-1`.\n//\n// Styleguide Configuration.Z-Index.$z-index-1\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-1: 100;\n\n// Z-Index 2\n//\n// A low priority z-index for use in themes.\n// Can be used for items that should overlap content\n// but still sit below stated content.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-2`.\n//\n// Styleguide Configuration.Z-Index.$z-index-2\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-2: 200;\n\n// Z-Index 3\n//\n// A low priority z-index for use in themes.\n// Used for content with multiple states by default.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-3`.\n//\n// Styleguide Configuration.Z-Index.$z-index-3\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-3: 300;\n\n// Z-Index 4\n//\n// A medium priority z-index for use in themes.\n// Can be used for items that should sit above\n// stated content but below panel-like content.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-4`.\n//\n// Styleguide Configuration.Z-Index.$z-index-4\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-4: 400;\n\n// Z-Index 5\n//\n// A medium priority z-index for use in themes.\n// Used for panel-like content by default.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-5`.\n//\n// Styleguide Configuration.Z-Index.$z-index-5\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-5: 500;\n\n// Z-Index 6\n//\n// A medium priority z-index for use in themes.\n// Can be used for items that should sit above\n// panel-like content but below the primary navigation.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-6`.\n//\n// Styleguide Configuration.Z-Index.$z-index-6\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-6: 600;\n\n// Z-Index 7\n//\n// A high priority z-index for use in themes.\n// Used for the primary navigation by default.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-7`.\n//\n// Styleguide Configuration.Z-Index.$z-index-7\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-7: 700;\n\n// Z-Index 8\n//\n// A high priority z-index for use in themes.\n// Can be used for items that should sit above\n// primary navigation but below overlays.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-8`.\n//\n// Styleguide Configuration.Z-Index.$z-index-8\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-8: 800;\n\n// Z-Index 9\n//\n// The highest priority z-index for use in themes.\n// Used for overlays and lightboxes by default.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-9`.\n//\n// Styleguide Configuration.Z-Index.$z-index-9\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-9: 900;\n\n// Z-Index 10\n//\n// A z-index which overrides all other z-indexes.\n// Strictly for development and debugging.\n// Based on Medium's z-index scale.\n//\n// Deprecated versions of this variable include `$zIndex-10`.\n//\n// Styleguide Configuration.Z-Index.$z-index-10\n//\n// Access: Private\n//\n// Since: 1.0.0\n\n$z-index-10: 1000;\n\n// Z-Index - Content\n//\n// A base z-index to use for interactive content in the\n// content area that isn't an overlay. Some examples are\n// callouts that scale up on hover, or tooltip definitions.\n// Use this variable for your default state.\n//\n// Use `+` or `-` with this variable to set z-index relative\n// to the default state - plus for above, minus for below.\n// Change this variable to change the stacking order for\n// all states in the site.\n//\n// #### Examples\n//\n// ##### Ensure callouts that expand on hover show over others.\n// \t\t\t.callout:hover {\n//\t\t\t\ttransform: scale(1.25);\n//\t\t\t\tz-index: $z-index-content;\n//\t\t\t}\n//\n// Styleguide Configuration.Z-Index.$z-index-content\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-content: $z-index-1 !default;\n\n// Z-Index - States\n//\n// A base z-index to use for content with multiple states.\n// A good example of this content might be a form with\n// multiple states stacked on one another that you animate.\n// Use this variable for your default state.\n//\n// Use `+` or `-` with this variable to set z-index relative\n// to the default state - plus for above, minus for below.\n// Change this variable to change the stacking order for\n// all states in the site.\n//\n// #### Examples\n//\n// ##### Set z-index on a stacked form with states.\n// \t\t\t.form-state-start,\n//\t\t\t.form-state-active {\n//\t\t\t\tz-index: $z-index-states;\n//\t\t\t}\n//\n//\t\t\t.form-state-getinfo {\n//\t\t\t\tz-index: $z-index-states - 1;\n//\t\t\t}\n//\n//\t\t\t.form-state-end {\n//\t\t\t\tz-index: $z-index-states - 2;\n//\t\t\t}\n//\n// Styleguide Configuration.Z-Index.$z-index-states\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-states: $z-index-3 !default;\n\n// Z-Index - Panels\n//\n// A base z-index to use for panel-like content.\n// Panel-like content can include panels that open\n// and close, such as horizontal secondary navigation\n// menus or filters, which push aside or overlap other content.\n//\n// Use this variable alone to set a default z-index which\n// will play nicely with other types of interactive content\n// on your site. Use `+` or `-` with it to set a z-index relative\n// to all panels. Change this variable to change the\n// default z-index for all panel-like content.\n//\n// #### Examples\n//\n// ##### Ensure two stacked filters on a degree page overlap correctly.\n//\t\t\t.degree-filter {\n//\t\t\t\tz-index: $z-index-panels;\n//\t\t\t}\n//\n//\t\t\t.degree-subfilter {\n//\t\t\t\tz-index: $z-index-panels - 1;\n//\t\t\t}\n//\n// Styleguide Configuration.Z-Index.$z-index-panels\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-panels: $z-index-5 !default;\n\n// Z-Index - Primary Navigation\n//\n// A base z-index to use for the primary navigation.\n// By default, this sets a z-index which will put dropdown\n// menus above content, but below overlays.\n//\n// Use this variable alone to set a default z-index which\n// will play nicely with other types of interactive content\n// on your site. Use `+` or `-` with it to set a z-index relative\n// to the primary navigation. Change this variable to change the\n// stacking order of the primary navigation.\n//\n// Styleguide Configuration.Z-Index.$z-index-primarynav\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-primarynav: $z-index-7 !default;\n\n// Z-Index - Overlays\n//\n// A base z-index to use for overlays and lightboxes.\n// This z-index will always be on top unless you are using `$z-index-dev`.\n// Use this variable alone to set a default z-index which\n// will play nicely with other types of interactive content\n// on your site. Use `+` or `-` with it to set a z-index relative\n// to the default overlay. Change this variable to change the\n// stacking order of all overlays. (You may want to do this if you\n// have a fixed sticky navigation so that the sticky navigation isn't\n// always on top, even with lightboxes.)\n//\n// Styleguide Configuration.Z-Index.$z-index-overlays\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-overlays: $z-index-9 !default;\n\n// Z-Index - Development / Debugging\n//\n// A z-index that will override all other z-indexes for development\n// and debugging purposes only. Avoid where possible and do not commit\n// to production code.\n//\n// Styleguide Configuration.Z-Index.$z-index-dev\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$z-index-dev: $z-index-10 !default;\n\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// Spacing\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n\n// Margin\n//\n// The base margin to use sitewide.\n// All margins are based on this number. Larger margins\n// will be a multiple of this, smaller margins will be a\n// fraction of this, except in cases of UI or typography\n// where margin should be related to font size.\n//\n// Styleguide Configuration.Spacing.$margin\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$margin: 30px !default;\n\n// Margin - Small\n//\n// The base margin to use for content sitewide.\n// This affects floated content in the WordPress editor,\n// and would be good for any sort of floated content you\n// may add in a custom theme, like a floated callout.\n//\n// Styleguide Configuration.Spacing.$margin-small\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$margin-small: $margin / 2 !default;\n\n// Margin - Large\n//\n// The base margin to use for large spacing sitewide.\n// This affects elements like the banner, section tags,\n// and any other larger elements.\n//\n// Styleguide Configuration.Spacing.$margin-large\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$margin-large: $margin * 2 !default;\n\n// Padding\n//\n// The base padding to use sitewide.\n// All padding is based on this number. Larger padding\n// will be a multiple of this, smaller padding will be a\n// fraction of this.\n//\n// Styleguide Configuration.Spacing.$padding\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$padding: 30px !default;\n\n// Padding - Small\n//\n// A padding variable for situations where you need a\n// smaller amount of padding.\n//\n// Styleguide Configuration.Spacing.$padding-small\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$padding-small: $padding / 2 !default;\n\n// Padding - Large\n//\n// A padding variable for situations where you need a\n// larger amount of padding.\n//\n// Styleguide Configuration.Spacing.$padding-large\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$padding-large: $padding * 2 !default;\n\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// Colors\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n\n// Tint Hue\n//\n// A color to tint your grays with.\n// Affects grayscale variables. Try cool colors, like blues.\n// Accepts any valid color.\n//\n// Styleguide Configuration.Styling.Grayscale Tint Hue\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$tint-hue: none !default;\n\n// Tint Saturation\n//\n// The amount to tint your grays, from 0-100%.\n// This will affect the maximum saturation of your tint.\n//\n// Styleguide Configuration.Styling.Grayscale Tint Saturation\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n$tint-saturation: 15% !default;\n\n// Tint Color Function\n//\n// A tinting helper function for grayscale variables.\n// If you're adding your own grays and want to take advantage\n// of tinting, you can use this function to tint your grays.\n//\n// The actual tint is dependent on two variables: `$tint-hue`,\n// which is the color to use as a tint, and `$tint-saturation`,\n// which is the maximum saturation of that tint. More saturation\n// happens with dark colors, less or none with very light colors.\n//\n// Styleguide Configuration.Styling.Tint Color Function\n//\n// Access: Public\n//\n// Since: 2.0.0\n\n@function tint-gray( $color ) {\n\t@if ( $tint-hue == \"none\" ) {\n\t\t@return $color;\n\t} @else {\n\t\t$_amt: $tint-saturation - ( lightness( $color ) / $tint-saturation );\n\n\t\t@if ( $_amt <= 0 ) {\n\t\t\t@return $color;\n\t\t}\n\n\t\t$newgray: adjust-hue( $color, hue( $tint-hue ) );\n\n\t\t@return saturate( $newgray, $_amt );\n\t}\n}\n\n// Grayscale Variables\n//\n// Grayscale variables that takes advantage of the tint system.\n// Overriding these variables is not supported.\n//\n// Colors:\n// $color-grayscale-0: #000\n// $color-grayscale-1: #111\n// $color-grayscale-2: #222\n// $color-grayscale-3: #333\n// $color-grayscale-4: #444\n// $color-grayscale-5: #555\n// $color-grayscale-6: #666\n// $color-grayscale-7: #777\n// $color-grayscale-8: #888\n// $color-grayscale-9: #999\n// $color-grayscale-a: #aaa\n// $color-grayscale-b: #bbb\n// $color-grayscale-c: #ccc\n// $color-grayscale-d: #ddd\n// $color-grayscale-e: #eee\n// $color-grayscale-f0: #f0f0f0\n// $color-grayscale-f5: #f5f5f5\n// $color-grayscale-f: #fff\n//\n// Styleguide Configuration.Styling.Grayscale Variables\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a very dark gray suitable for text.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-0: #000\n//\n// Styleguide Utilities.Colors.$color-grayscale-0\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-0: tint-gray( #000 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a very dark gray suitable for text.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-1: #111\n//\n// Styleguide Utilities.Colors.$color-grayscale-1\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-1: tint-gray( #111 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a dark gray suitable for text or backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-2: #222\n//\n// Styleguide Utilities.Colors.$color-grayscale-2\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-2: tint-gray( #222 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a dark gray suitable for text or backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-3: #333\n//\n// Styleguide Utilities.Colors.$color-grayscale-3\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-3: tint-gray( #333 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a dark gray suitable for backgrounds or metadata.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-4: #444\n//\n// Styleguide Utilities.Colors.$color-grayscale-4\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-4: tint-gray( #444 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a dark gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-5: #555\n//\n// Styleguide Utilities.Colors.$color-grayscale-5\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-5: tint-gray( #555 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a middle gray suitable for backgrounds or large typography.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-6: #666\n//\n// Styleguide Utilities.Colors.$color-grayscale-6\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-6: tint-gray( #666 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a middle gray suitable for backgrounds or large typography.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-7: #777\n//\n// Styleguide Utilities.Colors.$color-grayscale-7\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-7: tint-gray( #777 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a middle gray suitable for backgrounds or large typography.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-8: #888\n//\n// Styleguide Utilities.Colors.$color-grayscale-8\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-8: tint-gray( #888 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a middle gray suitable for backgrounds or large typography.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-9: #999\n//\n// Styleguide Utilities.Colors.$color-grayscale-9\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-9: tint-gray( #999 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a middle gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-a: #a\n//\n// Styleguide Utilities.Colors.$color-grayscale-a\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-a: tint-gray( #aaa );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a light gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-b: #bbb\n//\n// Styleguide Utilities.Colors.$color-grayscale-b\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-b: tint-gray( #bbb );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a light gray suitable for backgrounds, borders, and metadata.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-c: #ccc\n//\n// Styleguide Utilities.Colors.$color-grayscale-c\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-c: tint-gray( #ccc );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a light gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-d: #ddd\n//\n// Styleguide Utilities.Colors.$color-grayscale-d\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-d: tint-gray( #ddd );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a light gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-e: #eee\n//\n// Styleguide Utilities.Colors.$color-grayscale-e\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-e: tint-gray( #eee );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a near-white gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-f0: #f0f0f0\n//\n// Styleguide Utilities.Colors.$color-grayscale-f0\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-f0: tint-gray( #f0f0f0 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a near-white gray suitable for backgrounds.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-f5: #f5f5f5\n//\n// Styleguide Utilities.Colors.$color-grayscale-f5\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-f5: tint-gray( #f5f5f5 );\n\n// A grayscale variable that takes advantage of the tint system.\n// Produces a plain white.\n// Overriding this variable is not supported.\n//\n// Colors:\n// $color-grayscale-f: #fff\n//\n// Styleguide Utilities.Colors.$color-grayscale-f\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-grayscale-f: tint-gray( #fff );\n\n// Color Hub\n//\n// A grayscale variable for hover state of the BU Hub webfont. Not intended for editing.\n//\n// Colors:\n// $color-hub: #767676\n//\n// Styleguide Utilities.Colors.$color-hub\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$color-hub: \t\t\t #767676;\n\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// Content\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n// -----------------------------------------------------------------\n\n// Borders\n// -----------------------------------------------------------------\n\n// Change the Default Border\n//\n// The default border style.\n//\n// Styleguide Configuration.Styling.Change the Default Border\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n// $border\n//\n// A variable that applies the default border style.\n//\n// Styleguide Utilities.Styling.$border\n//\n// Access: Public\n//\n// Since: 1.0.0\n\n$border:\t\t\t\t\t\t\t\t\t\t\t\t1px solid $color-grayscale-d !default;\n\n;@import \"sass-embedded-legacy-load-done:3473\";","// =================================================================\n// Aside Styles - Configurable\n// =================================================================\n//\n//\n// Styles in this file should only be using properties that are\n// in the global array ($blocks-defaults) so they can be overwritten by\n// the child theme\n// Examples: color, border-color, font-family\n//\n// Variant styles, such as \"open\", or an alternate layout should be declared here\n// as shown below IF that variant needs to modify one of the properties that\n// can be overwritten via the array. This lets the child theme overwrite that\n// as well.\n//\n// If you aren't using styles from the global array ($blocks-defaults) by\n// using blocks-get() it doesn't belong in this file as it will be printed\n// in the stylesheet multiple times (for each publication)\n//\n\n$blocks-block-aside-config: ();\n\n// use the above array if you need to override the global $blocks-defaults array\n// of styles ONLY for this block IN the plugin.\n// You can then override THIS array by using $blocks-block-aside-theme in the child theme to\n// override this array\n//\n// Remember, with great power comes great responsibility. This should not be used unless\n// you really need it. Think carefully about why you aren't modifying the global config by adding\n// a different variable.\n//\n// $blocks-block-aside-config: (\n// \t\tprimary-color:red,\n// \t\tsecondary-color: rebeccapurple,\n// );\n\n\n// Use the default Blocks configuration. You can override this globally\n// in a theme.\n\n$blocks-block-aside-config: map-merge( $blocks-block-aside-config, $blocks-config );\n\n// This allows themes to optionally set theme options for this\n// block only. You can set all or a few options - only the options\n// you set in $block-block-aside-theme will override the defaults.\n\n@if variable-exists( blocks-block-aside-theme ) {\n\t$blocks-block-aside-config: map_merge( $blocks-block-aside-config, $blocks-block-aside-theme );\n}\n\n// A global helper variable for the block-get mixin.\n\n$current-map: $blocks-block-aside-config;\n\n\n$scope: blocks-get( 'scope' );\n\n.#{$scope}-block-editorial-aside {\n\tfont-family: blocks-get( 'font-family-primary');\n\n\tp {\n\t\tfont-family: blocks-get( 'font-family-secondary');\n\t\tcolor: blocks-get( 'font-color-aside' );\n\t}\n\n\t&.has-light-background {\n\t\tbackground: blocks-get( 'background-color-light' );\n\t}\n\n\t&.has-dark-background {\n\t\tbackground: blocks-get( 'background-color-dark' );\n\n\t\tp,\n\t\th1,\n\t\th2,\n\t\th3,\n\t\th4,\n\t\th5,\n\t\th6 {\n\t\t\tcolor: blocks-get( 'font-color-aside-lighter' );\n\t\t}\n\t}\n\n\t&.has-primary-background {\n\t\tbackground: blocks-get( 'color-primary' );\n\n\t\tp {\n\t\t\tcolor: blocks-get( 'font-color-aside-lighter' );\n\t\t}\n\t}\n\n\t&.has-secondary-background {\n\t\tbackground: blocks-get( 'color-secondary' );\n\t}\n\n\t&.has-tertiary-background {\n\t\tbackground: blocks-get( 'color-tertiary' );\n\t}\n\n\t&.has-quaternary-background {\n\t\tbackground: blocks-get( 'color-quaternary' );\n\t}\n\n\t&.has-quinary-background {\n\t\tbackground: blocks-get( 'color-quinary' );\n\t}\n}\n\n\n;@import \"sass-embedded-legacy-load-done:3854\";","// =================================================================\n// Sample Styles - Configurable\n// =================================================================\n//\n//\n// Styles in this file should mainly be for layout, width, etc that are\n// not able to be overwritten by the variables in the global sass array\n//\n\n//\n\n.wp-block-global-buniverse {\n\t&.alignleft,\n\t&.alignright {\n\t\twidth: 100%;\n\n\t\t@include breakpoint( $sm ) {\n\t\t\twidth: 50%;\n\t\t}\n\t}\n}\n.wp-block-global-buniverse-wrapper {\n\tposition: relative;\n\t&::before {\n\t\tcontent: \"\";\n\t\tdisplay: block;\n\t\twidth: 1px;\n\t\tpadding-top: 56.25%;\n\t\tposition: relative;\n\t}\n\tiframe {\n\t\tleft: 0;\n\t\ttop: 0;\n\t\tposition: absolute;\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t}\n}\n.has-aspectratio-16by9 {\n\t.wp-block-global-buniverse-wrapper {\n\t\t&::before {\n\t\t\tpadding-top: 9 / 16 * 100%;\n\t\t}\n\t}\n}\n.has-aspectratio-4by3 {\n\t.wp-block-global-buniverse-wrapper {\n\t\t&::before {\n\t\t\tpadding-top: 3 / 4 * 100%;\n\t\t}\n\t}\n}\n.has-aspectratio-1by1 {\n\t.wp-block-global-buniverse-wrapper {\n\t\t&::before {\n\t\t\tpadding-top: 1 / 1 * 100%;\n\t\t}\n\t}\n}\n.has-aspectratio-3by4 {\n\t.wp-block-global-buniverse-wrapper {\n\t\t&::before {\n\t\t\tpadding-top: 4 / 3 * 100%;\n\t\t}\n\t}\n}\n.has-aspectratio-9by16 {\n\t.wp-block-global-buniverse-wrapper {\n\t\t&::before {\n\t\t\tpadding-top: 16 / 9 * 100%;\n\t\t}\n\t}\n}\n;@import \"sass-embedded-legacy-load-done:3833\";","/*\n This mixin can be used to set the object-fit:\n @include object-fit(contain);\n\n or object-fit and object-position:\n @include object-fit(cover, top);\n*/\n.wp-block-global-buniverse.alignleft, .wp-block-global-buniverse.alignright {\n width: 100%;\n}\n@media (min-width: 768px) {\n .wp-block-global-buniverse.alignleft, .wp-block-global-buniverse.alignright {\n width: 50%;\n }\n}\n\n.wp-block-global-buniverse-wrapper {\n position: relative;\n}\n.wp-block-global-buniverse-wrapper::before {\n content: \"\";\n display: block;\n width: 1px;\n padding-top: 56.25%;\n position: relative;\n}\n.wp-block-global-buniverse-wrapper iframe {\n left: 0;\n top: 0;\n position: absolute;\n width: 100% !important;\n height: 100% !important;\n}\n\n.has-aspectratio-16by9 .wp-block-global-buniverse-wrapper::before {\n padding-top: 56.25%;\n}\n\n.has-aspectratio-4by3 .wp-block-global-buniverse-wrapper::before {\n padding-top: 75%;\n}\n\n.has-aspectratio-1by1 .wp-block-global-buniverse-wrapper::before {\n padding-top: 100%;\n}\n\n.has-aspectratio-3by4 .wp-block-global-buniverse-wrapper::before {\n padding-top: 133.3333333333%;\n}\n\n.has-aspectratio-9by16 .wp-block-global-buniverse-wrapper::before {\n padding-top: 177.7777777778%;\n}","// =================================================================\n// Button Styles - Configurable\n// =================================================================\n//\n//\n// Styles in this file should mainly be for layout, width, etc that are\n// not able to be overwritten by the variables in the global sass array\n//\n//\n\na:active,\na:visited { // TO DO: move to global location\n\tcolor: inherit;\n}\n\n.wp-block-button {\n\t@include transition( all 0.2s ease-in-out 0s);\n\tdisplay: inline-block;\n\tbackground: transparent;\n\tborder-radius: 6px;\n\ttext-decoration: none;\n\tcolor: inherit;\n\ttext-align: center;\n\ttext-transform: uppercase;\n\tpadding: 0.5em 0;\n\n\t&[class*=\"icon-\"] {\n\t\t&::before {\n\t\t\t@include transition( all 0.2s ease-in-out 0s);\n\t\t\tfont-size: 0.7em;\n\t\t\tcolor: $color-grayscale-a;\n\t\t}\n\t}\n\n\t&.is-style-default,\n\t&.is-style-outline,\n\t&.is-style-squared,\n\t&.is-style-text {\n\t\tpadding: 0.5em 1em;\n\n\t\t&.align-icon-right {\n\t\t\t&::before {\n\t\t\t\tfloat: right;\n\t\t\t\tdisplay: block;\n\t\t\t\tpadding-top: 7px;\n\t\t\t\tmargin-left: 0.5em;\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\n\t\t&.align-icon-left {\n\t\t\t&::before {\n\t\t\t\tpadding-top: -2px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.is-style-default {\n\t\tbackground: $color-grayscale-d;\n\n\t\t&:hover {\n\t\t\tbackground: $color-grayscale-c;\n\t\t}\n\n\t\t&.has-dark-theme {\n\t\t\tbackground: $color-grayscale-3;\n\t\t\tcolor: $color-grayscale-f !important;\n\n\t\t\t&:hover {\n\t\t\t\tbackground: $color-grayscale-2;\n\t\t\t}\n\t\t}\n\n\t\t&.has-light-theme {\n\t\t\tbackground: $color-grayscale-e;\n\n\t\t\t&:hover {\n\t\t\t\tbackground: $color-grayscale-d;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.is-style-outline {\n\t\tborder: 2px solid $color-grayscale-d;\n\n\t\t&:hover {\n\t\t\tborder-color: $color-grayscale-c;\n\t\t}\n\n\t\t&.has-dark-theme {\n\t\t\tborder-color: $color-grayscale-4;\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: $color-grayscale-0;\n\t\t\t}\n\t\t}\n\n\t\t&.has-light-theme {\n\t\t\tborder-color: $color-grayscale-e;\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: $color-grayscale-d;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.is-style-squared {\n\t\tborder-radius: 0;\n\t}\n\n\t&.is-style-text {\n\t\ttext-decoration: underline;\n\n\t\t&:hover {\n\t\t\ttext-decoration: none;\n\t\t}\n\t}\n}\n\n\n;@import \"sass-embedded-legacy-load-done:3843\";","/*\n This mixin can be used to set the object-fit:\n @include object-fit(contain);\n\n or object-fit and object-position:\n @include object-fit(cover, top);\n*/\na:active,\na:visited {\n color: inherit;\n}\n\n.wp-block-button {\n -webkit-transition: all 0.2s ease-in-out 0s;\n -moz-transition: all 0.2s ease-in-out 0s;\n -ms-transition: all 0.2s ease-in-out 0s;\n -o-transition: all 0.2s ease-in-out 0s;\n transition: all 0.2s ease-in-out 0s;\n display: inline-block;\n background: transparent;\n border-radius: 6px;\n text-decoration: none;\n color: inherit;\n text-align: center;\n text-transform: uppercase;\n padding: 0.5em 0;\n}\n.wp-block-button[class*=icon-]::before {\n -webkit-transition: all 0.2s ease-in-out 0s;\n -moz-transition: all 0.2s ease-in-out 0s;\n -ms-transition: all 0.2s ease-in-out 0s;\n -o-transition: all 0.2s ease-in-out 0s;\n transition: all 0.2s ease-in-out 0s;\n font-size: 0.7em;\n color: #aaa;\n}\n.wp-block-button.is-style-default, .wp-block-button.is-style-outline, .wp-block-button.is-style-squared, .wp-block-button.is-style-text {\n padding: 0.5em 1em;\n}\n.wp-block-button.is-style-default.align-icon-right::before, .wp-block-button.is-style-outline.align-icon-right::before, .wp-block-button.is-style-squared.align-icon-right::before, .wp-block-button.is-style-text.align-icon-right::before {\n float: right;\n display: block;\n padding-top: 7px;\n margin-left: 0.5em;\n margin-right: 0;\n}\n.wp-block-button.is-style-default.align-icon-left::before, .wp-block-button.is-style-outline.align-icon-left::before, .wp-block-button.is-style-squared.align-icon-left::before, .wp-block-button.is-style-text.align-icon-left::before {\n padding-top: -2px;\n}\n.wp-block-button.is-style-default {\n background: #ddd;\n}\n.wp-block-button.is-style-default:hover {\n background: #ccc;\n}\n.wp-block-button.is-style-default.has-dark-theme {\n background: #333;\n color: #fff !important;\n}\n.wp-block-button.is-style-default.has-dark-theme:hover {\n background: #222;\n}\n.wp-block-button.is-style-default.has-light-theme {\n background: #eee;\n}\n.wp-block-button.is-style-default.has-light-theme:hover {\n background: #ddd;\n}\n.wp-block-button.is-style-outline {\n border: 2px solid #ddd;\n}\n.wp-block-button.is-style-outline:hover {\n border-color: #ccc;\n}\n.wp-block-button.is-style-outline.has-dark-theme {\n border-color: #444;\n}\n.wp-block-button.is-style-outline.has-dark-theme:hover {\n border-color: #000;\n}\n.wp-block-button.is-style-outline.has-light-theme {\n border-color: #eee;\n}\n.wp-block-button.is-style-outline.has-light-theme:hover {\n border-color: #ddd;\n}\n.wp-block-button.is-style-squared {\n border-radius: 0;\n}\n.wp-block-button.is-style-text {\n text-decoration: underline;\n}\n.wp-block-button.is-style-text:hover {\n text-decoration: none;\n}\n\n.wp-prepress-layout-article-content p .wp-block-button {\n color: inherit;\n}\n.wp-block-button.wp-block-button {\n border-radius: 0;\n}\n.wp-block-button.wp-block-button.is-style-default.has-dark-theme {\n background: #000;\n}\n.wp-block-button.wp-block-button.is-style-default.has-light-theme {\n background: #fff;\n}\n.wp-block-button.wp-block-button.is-style-outline {\n border-color: #666;\n}\n.wp-block-button.wp-block-button.is-style-outline.has-dark-theme {\n border-color: #000;\n}\n.wp-block-button.wp-block-button.is-style-outline.has-light-theme {\n border-color: #fff;\n}\n.wp-block-button.wp-block-button.has-primary-theme.is-style-default {\n background: #666;\n}\n.wp-block-button.wp-block-button.has-primary-theme.is-style-outline {\n border-color: #666;\n}\n.wp-block-button.wp-block-button.has-secondary-theme.is-style-default {\n background: #666;\n}\n.wp-block-button.wp-block-button.has-secondary-theme.is-style-outline {\n border-color: #666;\n}\n.wp-block-button.wp-block-button.has-tertiary-theme.is-style-default {\n background: #666;\n}\n.wp-block-button.wp-block-button.has-tertiary-theme.is-style-outline {\n border-color: #666;\n}\n.wp-block-button.wp-block-button.has-quaternary-theme.is-style-default {\n background: #666;\n}\n.wp-block-button.wp-block-button.has-quaternary-theme.is-style-outline {\n border-color: #666;\n}\n.wp-block-button.wp-block-button.has-quinary-theme.is-style-default {\n background: #666;\n}\n.wp-block-button.wp-block-button.has-quinary-theme.is-style-outline {\n border-color: #666;\n}\n.wp-block-button.has-primary-theme.is-style-outline[class*=icon-]::before, .wp-block-button.has-primary-theme.is-style-text[class*=icon-]::before {\n color: #666;\n}\n.wp-block-button.has-secondary-theme.is-style-outline[class*=icon-]::before, .wp-block-button.has-secondary-theme.is-style-text[class*=icon-]::before {\n color: #666;\n}\n.wp-block-button.has-tertiary-theme.is-style-outline[class*=icon-]::before, .wp-block-button.has-tertiary-theme.is-style-text[class*=icon-]::before {\n color: #666;\n}\n.wp-block-button.has-quaternary-theme.is-style-outline[class*=icon-]::before, .wp-block-button.has-quaternary-theme.is-style-text[class*=icon-]::before {\n color: #666;\n}","// =================================================================\n// Button Styles - Configurable\n// =================================================================\n//\n//\n// Styles in this file should only be using properties that are\n// in the global array ($blocks-defaults) so they can be overwritten by\n// the child theme\n// Examples: color, border-color, font-family\n//\n// Variant styles, such as \"open\", or an alternate layout should be declared here\n// as shown below IF that variant needs to modify one of the properties that\n// can be overwritten via the array. This lets the child theme overwrite that\n// as well.\n//\n// If you aren't using styles from the global array ($blocks-defaults) by\n// using blocks-get() it doesn't belong in this file as it will be printed\n// in the stylesheet multiple times (for each publication)\n//\n\n$blocks-block-button-config: ();\n\n// use the above array if you need to override the global $blocks-defaults array\n// of styles ONLY for this block IN the plugin.\n// You can then override THIS array by using $blocks-block-button-theme in the child theme to\n// override this array\n//\n// Remember, with great power comes great responsibility. This should not be used unless\n// you really need it. Think carefully about why you aren't modifying the global config by adding\n// a different variable.\n//\n// $blocks-block-button-config: (\n// \t\tprimary-color:red,\n// \t\tsecondary-color: rebeccapurple,\n// );\n\n\n// Use the default Blocks configuration. You can override this globally\n// in a theme.\n\n$blocks-block-button-config: map-merge( $blocks-block-button-config, $blocks-config );\n\n// This allows themes to optionally set theme options for this\n// block only. You can set all or a few options - only the options\n// you set in $block-block-button-theme will override the defaults.\n\n@if variable-exists( blocks-block-button-theme ) {\n\t$blocks-block-button-config: map_merge( $blocks-block-button-config, $blocks-block-button-theme );\n}\n\n// A global helper variable for the block-get mixin.\n\n$current-map: $blocks-block-button-config;\n\n\n$scope: blocks-get( 'scope' );\n\n\n.#{$scope}-block-button {\n\t.wp-prepress-layout-article-content p & {\n\t\tcolor: inherit;\n\t}\n\n\t&.wp-block-button {\n\t\tborder-radius: blocks-get( 'border-radius' );\n\t\tfont-family: blocks-get( 'font-family-tertiary' );\n\n\t\t&[class*=\"icon-\"]::before {\n\t\t\tcolor: blocks-get( 'font-color-base' );\n\t\t}\n\t}\n\n\t&.wp-block-button.is-style-default {\n\t\t&.has-dark-theme {\n\t\t\tbackground: blocks-get( 'background-color-dark' );\n\t\t}\n\n\t\t&.has-light-theme {\n\t\t\tbackground: blocks-get( 'background-color-light' );\n\t\t}\n\t}\n\n\t&.wp-block-button.is-style-outline {\n\t\tborder-color: blocks-get( 'color-secondary' );\n\n\t\t&:hover {\n\t\t\tborder-color: blocks-get( 'color-secondary-darkest' );\n\t\t}\n\n\t\t&.has-dark-theme {\n\t\t\tborder-color: blocks-get( 'background-color-dark' );\n\t\t}\n\n\t\t&.has-light-theme {\n\t\t\tborder-color: blocks-get( 'background-color-light' );\n\t\t}\n\t}\n\n\t&.wp-block-button.has-primary-theme {\n\t\t&.is-style-default {\n\t\t\tbackground: blocks-get( 'color-primary' );\n\n\t\t\t&:hover {\n\t\t\t\tbackground: blocks-get( 'color-primary-darker' );\n\t\t\t}\n\t\t}\n\n\t\t&.is-style-outline {\n\t\t\tborder-color: blocks-get( 'color-primary' );\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: blocks-get( 'color-primary-darkest' );\n\t\t\t}\n\t\t}\n\n\t\t&.is-style-accent {\n\t\t\tborder-color: blocks-get( 'color-primary-darker' );\n\n\t\t\t&::before,\n\t\t\t&::after {\n\t\t\t\tborder-color: blocks-get( 'color-primary-darker' );\n\t\t\t}\n\t\t}\n\t}\n\n\t&.wp-block-button.has-secondary-theme {\n\t\t&.is-style-default {\n\t\t\tbackground: blocks-get( 'color-secondary' );\n\n\t\t\t&:hover {\n\t\t\t\tbackground: blocks-get( 'color-secondary-darker' );\n\t\t\t}\n\t\t}\n\n\t\t&.is-style-outline {\n\t\t\tborder-color: blocks-get( 'color-secondary' );\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: blocks-get( 'color-secondary-darkest' );\n\t\t\t}\n\t\t}\n\n\t\t&.is-style-accent {\n\t\t\tborder-color: blocks-get( 'color-secondary-darker' );\n\n\t\t\t&::before,\n\t\t\t&::after {\n\t\t\t\tborder-color: blocks-get( 'color-secondary-darker' );\n\t\t\t}\n\t\t}\n\t}\n\n\t&.wp-block-button.has-tertiary-theme {\n\t\t&.is-style-default {\n\t\t\tbackground: blocks-get( 'color-tertiary' );\n\n\t\t\t&:hover {\n\t\t\t\tbackground: blocks-get( 'color-tertiary-darker' );\n\t\t\t}\n\t\t}\n\n\t\t&.is-style-outline {\n\t\t\tborder-color: blocks-get( 'color-tertiary' );\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: blocks-get( 'color-tertiary-darkest' );\n\t\t\t}\n\t\t}\n\n\t\t&.is-style-accent {\n\t\t\tborder-color: blocks-get( 'color-tertiary-darker' );\n\n\t\t\t&::before,\n\t\t\t&::after {\n\t\t\t\tborder-color: blocks-get( 'color-tertiary-darker' );\n\t\t\t}\n\t\t}\n\t}\n\n\t&.wp-block-button.has-quaternary-theme {\n\t\t&.is-style-default {\n\t\t\tbackground: blocks-get( 'color-quaternary' );\n\n\t\t\t&:hover {\n\t\t\t\tbackground: blocks-get( 'color-quaternary-darker' );\n\t\t\t}\n\t\t}\n\n\t\t&.is-style-outline {\n\t\t\tborder-color: blocks-get( 'color-quaternary' );\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: blocks-get( 'color-quaternary-darkest' );\n\t\t\t}\n\t\t}\n\n\t\t&.is-style-accent {\n\t\t\tborder-color: blocks-get( 'color-quaternary-darker' );\n\n\t\t\t&::before,\n\t\t\t&::after {\n\t\t\t\tborder-color: blocks-get( 'color-quaternary-darker' );\n\t\t\t}\n\t\t}\n\t}\n\n\t&.wp-block-button.has-quinary-theme {\n\t\t&.is-style-default {\n\t\t\tbackground: blocks-get( 'color-quinary' );\n\n\t\t\t&:hover {\n\t\t\t\tbackground: blocks-get( 'color-quinary-darker' );\n\t\t\t}\n\t\t}\n\n\t\t&.is-style-outline {\n\t\t\tborder-color: blocks-get( 'color-quinary' );\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: blocks-get( 'color-quinary-darkest' );\n\t\t\t}\n\t\t}\n\n\t\t&.is-style-accent {\n\t\t\tborder-color: blocks-get( 'color-quinary-darker' );\n\n\t\t\t&::before,\n\t\t\t&::after {\n\t\t\t\tborder-color: blocks-get( 'color-quinary-darker' );\n\t\t\t}\n\t\t}\n\t}\n\n\t&.is-style-outline,\n\t&.is-style-text {\n\n\t\t\t&[class*=\"icon-\"] {\n\t\t\t\t&::before {\n\t\t\t\t\tcolor: blocks-get( 'font-color-base' );\n\t\t\t\t}\n\t\t\t}\n\n\t}\n\n\t&.has-primary-theme {\n\n\t\t\t&.is-style-outline,\n\t\t\t&.is-style-text {\n\t\t\t\t&[class*=\"icon-\"] {\n\t\t\t\t\t&::before {\n\t\t\t\t\t\tcolor: blocks-get( 'color-primary' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t}\n\n\t&.has-secondary-theme {\n\n\t\t\t&.is-style-outline,\n\t\t\t&.is-style-text {\n\t\t\t\t&[class*=\"icon-\"] {\n\t\t\t\t\t&::before {\n\t\t\t\t\t\tcolor: blocks-get( 'color-secondary' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t}\n\n\t&.has-tertiary-theme {\n\n\t\t\t&.is-style-outline,\n\t\t\t&.is-style-text {\n\t\t\t\t&[class*=\"icon-\"] {\n\t\t\t\t\t&::before {\n\t\t\t\t\t\tcolor: blocks-get( 'color-tertiary' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t}\n\n\t&.has-quaternary-theme {\n\n\t\t\t&.is-style-outline,\n\t\t\t&.is-style-text {\n\t\t\t\t&[class*=\"icon-\"] {\n\t\t\t\t\t&::before {\n\t\t\t\t\t\tcolor: blocks-get( 'color-quaternary' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t}\n}\n\n\n;@import \"sass-embedded-legacy-load-done:3859\";","// =================================================================\n// Click to Tweet Styles - Configurable\n// =================================================================\n//\n//\n// Styles in this file should mainly be for layout, width, etc that are\n// not able to be overwritten by the variables in the global sass array\n//\n//\n\n.wp-block-bu-clicktotweet {\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n\n\t&.has-format-highlight {\n\t\t&:hover {\n\t\t\tcursor: initial;\n\t\t}\n\t}\n\n\t.no-js &:hover {\n\t\tbackground: transparent;\n\t}\n}\n\n.wp-block-bu-clicktotweet-content {\n\tdisplay: block;\n\n\t.wp-block-bu-clicktotweet.has-format-highlight:hover & {\n\t\tbackground-color: transparent;\n\t\tbox-shadow: none;\n\t}\n\n\t.wp-block-bu-clicktotweet:not( .has-format-highlight ) & {\n\t\tmargin-bottom: 0;\n\t}\n}\n\n.wp-block-bu-clicktotweet-highlight {\n\t.has-format-highlight & {\n\t\t@include icon( 'twitter', 'after' );\n\t\tpadding: 0 ( $padding-small / 2 );\n\n\t\t&:hover {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t.no-js & {\n\t\tpadding: 0;\n\t\tbackground: transparent;\n\n\t\t&::after {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n.wp-block-bu-clicktotweet-action {\n\t@include icon( 'twitter', 'after' );\n\tdisplay: flex;\n\tfont-size: 14px;\n\tfont-weight: 700;\n\tmargin-left: auto;\n\tmargin-right: -10px;\n\tmargin-top: 10px;\n\tpadding: ( $padding-small / 2 ) $padding-small;\n\ttext-align: right;\n\ttext-transform: lowercase;\n\tposition: relative;\n\n\t&::before {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tborder-style: solid;\n\t\tborder-width: 0 10px 10px 0;\n\t\tposition: absolute;\n\t\tleft: -10px;\n\t\ttop: 0;\n\t}\n\n\t.has-format-highlight &,\n\t.wp-block-bu-clicktotweet-highlight & {\n\t\tdisplay: none;\n\t}\n\n\t.no-js & {\n\t\tdisplay: none;\n\t}\n}\n\n;@import \"sass-embedded-legacy-load-done:3838\";","/*\n This mixin can be used to set the object-fit:\n @include object-fit(contain);\n\n or object-fit and object-position:\n @include object-fit(cover, top);\n*/\n.wp-block-bu-clicktotweet:hover {\n cursor: pointer;\n}\n.wp-block-bu-clicktotweet.has-format-highlight:hover {\n cursor: initial;\n}\n.no-js .wp-block-bu-clicktotweet:hover {\n background: transparent;\n}\n\n.wp-block-bu-clicktotweet-content {\n display: block;\n}\n.wp-block-bu-clicktotweet.has-format-highlight:hover .wp-block-bu-clicktotweet-content {\n background-color: transparent;\n box-shadow: none;\n}\n.wp-block-bu-clicktotweet:not(.has-format-highlight) .wp-block-bu-clicktotweet-content {\n margin-bottom: 0;\n}\n\n.has-format-highlight .wp-block-bu-clicktotweet-highlight {\n padding: 0 7.5px;\n}\n.lt-ie9:hover .has-format-highlight .wp-block-bu-clicktotweet-highlight {\n -ms-zoom: 1;\n}\n.has-format-highlight .wp-block-bu-clicktotweet-highlight span {\n display: none;\n}\n.has-format-highlight .wp-block-bu-clicktotweet-highlight::after {\n color: unset;\n display: inline-block;\n font-family: \"bu-default-icons\";\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n padding-bottom: 0.2em;\n speak: none;\n text-decoration: none;\n text-rendering: optimizeLegibility;\n text-transform: none;\n vertical-align: middle;\n white-space: nowrap;\n margin-left: 0.5em;\n content: \"\\f611\";\n}\n.has-format-highlight .wp-block-bu-clicktotweet-highlight:hover {\n cursor: pointer;\n}\n.no-js .wp-block-bu-clicktotweet-highlight {\n padding: 0;\n background: transparent;\n}\n.no-js .wp-block-bu-clicktotweet-highlight::after {\n display: none;\n}\n\n.wp-block-bu-clicktotweet-action {\n display: flex;\n font-size: 14px;\n font-weight: 700;\n margin-left: auto;\n margin-right: -10px;\n margin-top: 10px;\n padding: 7.5px 15px;\n text-align: right;\n text-transform: lowercase;\n position: relative;\n}\n.lt-ie9:hover .wp-block-bu-clicktotweet-action {\n -ms-zoom: 1;\n}\n.wp-block-bu-clicktotweet-action span {\n display: none;\n}\n.wp-block-bu-clicktotweet-action::after {\n color: unset;\n display: inline-block;\n font-family: \"bu-default-icons\";\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n padding-bottom: 0.2em;\n speak: none;\n text-decoration: none;\n text-rendering: optimizeLegibility;\n text-transform: none;\n vertical-align: middle;\n white-space: nowrap;\n margin-left: 0.5em;\n content: \"\\f611\";\n}\n.wp-block-bu-clicktotweet-action::before {\n content: \"\";\n display: block;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 10px 10px 0;\n position: absolute;\n left: -10px;\n top: 0;\n}\n.has-format-highlight .wp-block-bu-clicktotweet-action, .wp-block-bu-clicktotweet-highlight .wp-block-bu-clicktotweet-action {\n display: none;\n}\n.no-js .wp-block-bu-clicktotweet-action {\n display: none;\n}\n\n.publication-wp .wp-block-bu-clicktotweet:not(.has-format-highlight):hover .wp-block-bu-clicktotweet-content {\n background-color: #eee;\n box-shadow: 0px 0px 0px 10px #eee;\n}\n.publication-wp .wp-block-bu-clicktotweet.has-format-highlight .wp-block-bu-clicktotweet-highlight {\n background: #eee;\n color: #666;\n}\n.publication-wp .wp-block-bu-clicktotweet .wp-block-bu-clicktotweet-action {\n background-color: #eee;\n color: #666;\n}\n.publication-wp .wp-block-bu-clicktotweet .wp-block-bu-clicktotweet-action::before {\n border-color: transparent #eee transparent transparent;\n}","// =================================================================\n// Sample Styles - Configurable\n// =================================================================\n//\n//\n// Styles in this file should only be using properties that are\n// in the global array ($blocks-defaults) so they can be overwritten by\n// the child theme\n// Examples: color, border-color, font-family\n//\n// Variant styles, such as \"open\", or an alternate layout should be declared here\n// as shown below IF that variant needs to modify one of the properties that\n// can be overwritten via the array. This lets the child theme overwrite that\n// as well.\n//\n// If you aren't using styles from the global array ($blocks-defaults) by\n// using blocks-get() it doesn't belong in this file as it will be printed\n// in the stylesheet multiple times (for each publication)\n//\n\n$blocks-block-bu-clicktotweet-config: ();\n\n// use the above array if you need to override the global $blocks-defaults array\n// of styles ONLY for this block IN the plugin.\n// You can then override THIS array by using $blocks-block-bu-clicktotweet-theme in the child theme to\n// override this array\n//\n// Remember, with great power comes great responsibility. This should not be used unless\n// you really need it. Think carefully about why you aren't modifying the global config by adding\n// a different variable.\n//\n// $blocks-block-bu-clicktotweet-config: (\n// \t\tprimary-color:red,\n// \t\tsecondary-color: rebeccapurple,\n// );\n\n\n// Use the default Blocks configuration. You can override this globally\n// in a theme.\n\n$blocks-block-bu-clicktotweet-config: map-merge( $blocks-block-bu-clicktotweet-config, $blocks-config );\n\n// This allows themes to optionally set theme options for this\n// block only. You can set all or a few options - only the options\n// you set in $block-block-bu-clicktotweet-theme will override the defaults.\n\n@if variable-exists( blocks-block-bu-clicktotweet-theme ) {\n\t$blocks-block-bu-clicktotweet-config: map_merge( $blocks-block-bu-clicktotweet-config, $blocks-block-bu-clicktotweet-theme );\n}\n\n// A global helper variable for the block-get mixin.\n\n$current-map: $blocks-block-bu-clicktotweet-config;\n\n\n$scope: blocks-get( 'scope' );\n\n$_tweet-bg: blocks-get( 'color-gray-e' );\n\n.publication-#{$scope} {\n\t.wp-block-bu-clicktotweet {\n\t\t&:not(.has-format-highlight):hover .wp-block-bu-clicktotweet-content {\n\t\t\tbackground-color: $_tweet-bg;\n\t\t\tbox-shadow: 0px 0px 0px 10px $_tweet-bg;\n\t\t}\n\n\t\t&.has-format-highlight {\n\t\t\t.wp-block-bu-clicktotweet-highlight {\n\t\t\t\tbackground: $_tweet-bg;\n\t\t\t\tcolor: blocks-get( 'color-quaternary-text' );\n\t\t\t}\n\t\t}\n\n\t\t.wp-block-bu-clicktotweet-action {\n\t\t\tbackground-color: $_tweet-bg;\n\t\t\tcolor: blocks-get( 'color-quaternary-text' );\n\t\t\tfont-family: blocks-get( 'font-family-secondary' );\n\n\t\t\t&::before {\n\t\t\t\tborder-color: transparent $_tweet-bg transparent transparent;\n\t\t\t}\n\t\t}\n\t}\n}\n\n;@import \"sass-embedded-legacy-load-done:3851\";",".wp-block-bu-collapsible-control {\n\t&.aligncenter {\n\t\ttext-align: center;\n\t}\n}\n","// =================================================================\n// Collapsible Styles - Configurable\n// =================================================================\n//\n//\n// Styles in this file should mainly be for layout, width, etc that are\n// not able to be overwritten by the variables in the global sass array\n//\n//\n\n.wp-block-bu-collapsible {\n\tmargin-top: -1px;\n\n\t.bu-block-collapsible-content {\n\t\tdisplay: none;\n\t\tpadding: 20px;\n\t\tborder: 1px solid #ccc;\n\t\tborder-top: 0;\n\t}\n\n\t.bu-block-collapsible-toggle {\n\t\tappearance: none;\n\t\tbackground-color: transparent;\n\t\tdisplay: block;\n\t\tfont-weight: bold;\n\t\tmargin: 0;\n\t\tpadding: 10px 20px;\n\t\tposition: relative;\n\t\ttext-align: left;\n\t\twidth: 100%;\n\t\tz-index: 1;\n\t}\n\n\t.bu-collapsible-heading {\n\t\tpadding: 0;\n\t\tposition: relative;\n\t\tborder: 1px solid #ccc;\n\t\t@include icon( 'plus', 'after' );\n\n\t\t&:after {\n\t\t\tfont-size: .75em;\n\t\t\tposition: absolute;\n\t\t\tright: 15px;\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY( -50% );\n\t\t\tz-index: 0;\n\t\t}\n\n\t\tbutton {\n\t\t\tpadding-right: 50px;\n\t\t\twhite-space: normal;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-image: none;\n\t\t\t\tfilter: none;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t&.icon-style-arrows > .bu-collapsible-heading::after {\n\t\tcontent: '\\F501';\n\t}\n\n\n\n\t&.is-open {\n\n\t\t& > .bu-collapsible-heading {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t& > .bu-block-collapsible-content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t& > .bu-collapsible-heading::after {\n\t\t\tcontent: '\\002D';\n\t\t}\n\n\t\t&.icon-style-arrows > .bu-collapsible-heading::after {\n\t\t\tcontent: '\\F500'\n\t\t}\n\n\t}\n\n\n\t&.is-style-plain,\n\t&.is-style-outline {\n\n\t\t// Remove default theme margin on heading tags.\n\t\t.bu-collapsible-heading {\n\t\t\tmargin: 0;\n\t\t}\n\n\t\t// When open add a thin border between heading & content.\n\t\t&.is-open {\n\t\t\t.bu-collapsible-heading {\n\t\t\t\tborder-bottom: 1px solid #ccc;\n\t\t\t}\n\t\t}\n\n\t\t// Try to remove bottom margin on last p tag so awkward space collapses between

tag and bottom border.\n\t\t.bu-block-collapsible-content {\n\t\t\tp:last-child {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t// The Default or Plain Style.\n\t&.is-style-plain {\n\n\t}\n\n\t// Outline Style.\n\t&.is-style-outline {\n\t\t.bu-collapsible-heading {\n\t\t\tborder: 3px solid #000;\n\t\t}\n\n\t\t// Remove top border when collapsible is adjacent.\n\t\t& + .is-style-outline .bu-collapsible-heading {\n\t\t\tborder-top: 0;\n\t\t}\n\n\t\t.bu-block-collapsible-content {\n\t\t\tborder: 3px solid #000;\n\t\t\tborder-top: 0;\n\t\t}\n\n\t}\n\n\t// Preview Style.\n\t&.is-style-preview {\n\t\tborder: none;\n\t\tposition: relative;\n\t\tmargin-bottom: $margin;\n\t\tdisplay: flex;\n\t\tflex-wrap: nowrap;\n\t\tflex-direction: column;\n\t\tjustify-content: start;\n\t\talign-items: start;\n\t\talign-content: start;\n\n\n\n\t\t// Don't show any icons to open/collapse.\n\t \t> .bu-collapsible-heading::after {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.bu-collapsible-heading {\n\t\t\tborder: none;\n\t\t\tposition: static;\n\t\t\tflex: 0 1 auto;\n\t\t\talign-self: stretch;\n\t\t}\n\n\t\t.bu-block-collapsible-content {\n\t\t\tborder: none;\n\t\t\tpadding: 0;\n\t\t\tflex: 0 1 auto;\n\t\t\talign-self: stretch;\n\t\t}\n\n\t\t.button {\n\t\t\t-webkit-order: 3;\n\t\t\t-ms-flex-order: 3;\n\t\t\torder: 3;\n\t\t\tflex: 0 0 auto;\n\t\t}\n\n\n\t\t&.is-closed .bu-block-collapsible-content {\n\t\t\tdisplay: block;\n\t\t\theight: 100px;\n\t\t\toverflow: hidden;\n\t\t\tposition: relative;\n\n\t\t\t&:after {\n\t\t\t\tcontent:'';\n\t\t\t\theight: 50%;\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom:0;\n\t\t\t\tleft: 0;\n\t\t\t\tright: 0;\n\t\t\t\tbackground-image: linear-gradient(to bottom, rgba(255,255,255,0), #fff);\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n;@import \"sass-embedded-legacy-load-done:3834\";","/*\n This mixin can be used to set the object-fit:\n @include object-fit(contain);\n\n or object-fit and object-position:\n @include object-fit(cover, top);\n*/\n.wp-block-bu-collapsible {\n margin-top: -1px;\n}\n.wp-block-bu-collapsible .bu-block-collapsible-content {\n display: none;\n padding: 20px;\n border: 1px solid #ccc;\n border-top: 0;\n}\n.wp-block-bu-collapsible .bu-block-collapsible-toggle {\n appearance: none;\n background-color: transparent;\n display: block;\n font-weight: bold;\n margin: 0;\n padding: 10px 20px;\n position: relative;\n text-align: left;\n width: 100%;\n z-index: 1;\n}\n.wp-block-bu-collapsible .bu-collapsible-heading {\n padding: 0;\n position: relative;\n border: 1px solid #ccc;\n}\n.lt-ie9:hover .wp-block-bu-collapsible .bu-collapsible-heading {\n -ms-zoom: 1;\n}\n.wp-block-bu-collapsible .bu-collapsible-heading span {\n display: none;\n}\n.wp-block-bu-collapsible .bu-collapsible-heading::after {\n color: unset;\n display: inline-block;\n font-family: \"bu-default-icons\";\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n padding-bottom: 0.2em;\n speak: none;\n text-decoration: none;\n text-rendering: optimizeLegibility;\n text-transform: none;\n vertical-align: middle;\n white-space: nowrap;\n margin-left: 0.5em;\n content: \"+\";\n}\n.wp-block-bu-collapsible .bu-collapsible-heading:after {\n font-size: 0.75em;\n position: absolute;\n right: 15px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 0;\n}\n.wp-block-bu-collapsible .bu-collapsible-heading button {\n padding-right: 50px;\n white-space: normal;\n}\n.wp-block-bu-collapsible .bu-collapsible-heading button:hover {\n background-image: none;\n filter: none;\n}\n.wp-block-bu-collapsible.icon-style-arrows > .bu-collapsible-heading::after {\n content: \"\\f501\";\n}\n.wp-block-bu-collapsible.is-open > .bu-collapsible-heading {\n display: block;\n}\n.wp-block-bu-collapsible.is-open > .bu-block-collapsible-content {\n display: block;\n}\n.wp-block-bu-collapsible.is-open > .bu-collapsible-heading::after {\n content: \"-\";\n}\n.wp-block-bu-collapsible.is-open.icon-style-arrows > .bu-collapsible-heading::after {\n content: \"\\f500\";\n}\n.wp-block-bu-collapsible.is-style-plain .bu-collapsible-heading, .wp-block-bu-collapsible.is-style-outline .bu-collapsible-heading {\n margin: 0;\n}\n.wp-block-bu-collapsible.is-style-plain.is-open .bu-collapsible-heading, .wp-block-bu-collapsible.is-style-outline.is-open .bu-collapsible-heading {\n border-bottom: 1px solid #ccc;\n}\n.wp-block-bu-collapsible.is-style-plain .bu-block-collapsible-content p:last-child, .wp-block-bu-collapsible.is-style-outline .bu-block-collapsible-content p:last-child {\n margin-bottom: 0;\n}\n.wp-block-bu-collapsible.is-style-outline .bu-collapsible-heading {\n border: 3px solid #000;\n}\n.wp-block-bu-collapsible.is-style-outline + .is-style-outline .bu-collapsible-heading {\n border-top: 0;\n}\n.wp-block-bu-collapsible.is-style-outline .bu-block-collapsible-content {\n border: 3px solid #000;\n border-top: 0;\n}\n.wp-block-bu-collapsible.is-style-preview {\n border: none;\n position: relative;\n margin-bottom: 30px;\n display: flex;\n flex-wrap: nowrap;\n flex-direction: column;\n justify-content: start;\n align-items: start;\n align-content: start;\n}\n.wp-block-bu-collapsible.is-style-preview > .bu-collapsible-heading::after {\n display: none;\n}\n.wp-block-bu-collapsible.is-style-preview .bu-collapsible-heading {\n border: none;\n position: static;\n flex: 0 1 auto;\n align-self: stretch;\n}\n.wp-block-bu-collapsible.is-style-preview .bu-block-collapsible-content {\n border: none;\n padding: 0;\n flex: 0 1 auto;\n align-self: stretch;\n}\n.wp-block-bu-collapsible.is-style-preview .button {\n -webkit-order: 3;\n -ms-flex-order: 3;\n order: 3;\n flex: 0 0 auto;\n}\n.wp-block-bu-collapsible.is-style-preview.is-closed .bu-block-collapsible-content {\n display: block;\n height: 100px;\n overflow: hidden;\n position: relative;\n}\n.wp-block-bu-collapsible.is-style-preview.is-closed .bu-block-collapsible-content:after {\n content: \"\";\n height: 50%;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), #fff);\n}",".wp-block-editorial-drawer-content .wp-block-editorial-drawer-wrapper::after, .wp-block-editorial-drawer-content::after {\n display: table;\n clear: both;\n content: \"\";\n}\n\n.wp-block-editorial-drawer-content, .wp-block-editorial-drawer-teaser {\n float: left;\n position: relative;\n min-height: 1px;\n}\n\n.wp-block-editorial-drawer-content, .wp-block-editorial-drawer-teaser {\n width: 100%;\n}\n\n@media (min-width: 768px) {\n .wp-block-editorial-drawer.alignleft .wp-block-editorial-drawer-teaser, .wp-block-editorial-drawer.alignright .wp-block-editorial-drawer-teaser, .wp-block-editorial-drawer.is-size-narrow .wp-block-editorial-drawer-teaser {\n float: left;\n position: relative;\n min-height: 1px;\n width: 25%;\n }\n .wp-block-editorial-drawer.is-size-small .wp-block-editorial-drawer-teaser {\n float: left;\n position: relative;\n min-height: 1px;\n width: 33.3333333333%;\n }\n .wp-block-editorial-drawer.is-size-medium .wp-block-editorial-drawer-teaser {\n float: left;\n position: relative;\n min-height: 1px;\n width: 41.6666666667%;\n }\n .wp-block-editorial-drawer.is-size-wide .wp-block-editorial-drawer-teaser {\n float: left;\n position: relative;\n min-height: 1px;\n width: 50%;\n }\n}\n/*\n This mixin can be used to set the object-fit:\n @include object-fit(contain);\n\n or object-fit and object-position:\n @include object-fit(cover, top);\n*/\n.wp-block-editorial-drawer.is-style-round .wp-block-editorial-drawer-teaser figure {\n -webkit-border-radius: 50%;\n -moz-border-radius: 50%;\n -ms-border-radius: 50%;\n border-radius: 50%;\n height: 150px;\n margin: 0 auto 0.7em auto;\n overflow: hidden;\n width: 150px;\n}\n.wp-block-editorial-drawer.is-style-round .wp-block-editorial-drawer-teaser figure img {\n -o-object-fit: cover;\n object-fit: cover;\n font-family: \"object-fit: cover\";\n height: 100%;\n}\n.wp-block-editorial-drawer.is-size-narrow .wp-block-editorial-drawer-teaser, .wp-block-editorial-drawer.is-size-small .wp-block-editorial-drawer-teaser, .wp-block-editorial-drawer.is-size-medium .wp-block-editorial-drawer-teaser, .wp-block-editorial-drawer.is-size-wide .wp-block-editorial-drawer-teaser {\n float: none;\n margin: 0 auto;\n}\n.wp-block-editorial-drawer.alignleft, .wp-block-editorial-drawer.alignright {\n float: none;\n display: inline;\n max-width: none;\n}\n.wp-block-editorial-drawer.alignleft .wp-block-editorial-drawer-teaser::before, .wp-block-editorial-drawer.alignleft .wp-block-editorial-drawer-teaser::after, .wp-block-editorial-drawer.alignright .wp-block-editorial-drawer-teaser::before, .wp-block-editorial-drawer.alignright .wp-block-editorial-drawer-teaser::after {\n display: none;\n}\n.wp-block-editorial-drawer.alignleft .wp-block-editorial-drawer-wrapper::before, .wp-block-editorial-drawer.alignleft .wp-block-editorial-drawer-wrapper::after, .wp-block-editorial-drawer.alignright .wp-block-editorial-drawer-wrapper::before, .wp-block-editorial-drawer.alignright .wp-block-editorial-drawer-wrapper::after {\n display: none;\n}\n.wp-block-editorial-drawer.alignfull::before, .wp-block-editorial-drawer.alignfull::after {\n width: 100%;\n}\n.wp-block-editorial-drawer.alignleft .wp-block-editorial-drawer-teaser {\n float: left;\n margin: 0 0 45px;\n}\n@media (min-width: 768px) {\n .wp-block-editorial-drawer.alignleft .wp-block-editorial-drawer-teaser {\n margin: 0 30px 20px;\n }\n}\n.wp-block-editorial-drawer.alignright .wp-block-editorial-drawer-teaser {\n float: right;\n margin: 0 0 45px;\n}\n@media (min-width: 768px) {\n .wp-block-editorial-drawer.alignright .wp-block-editorial-drawer-teaser {\n margin: 0 30px 20px;\n }\n}\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content {\n background: #444;\n}\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content h2 {\n color: #fff;\n}\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content p,\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content ul,\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content ol {\n color: #f0f0f0;\n}\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content::before, .wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content::after {\n display: none;\n}\n.wp-block-editorial-drawer.has-light-background .wp-block-editorial-drawer-content {\n background: #eee;\n}\n.wp-block-editorial-drawer.has-light-background .wp-block-editorial-drawer-content::before, .wp-block-editorial-drawer.has-light-background .wp-block-editorial-drawer-content::after {\n border-color: #fff;\n}\n\n.wp-block-editorial-drawer-teaser {\n clear: both;\n margin: 15px 0 0;\n text-align: center;\n}\n.wp-block-editorial-drawer-teaser::before, .wp-block-editorial-drawer-teaser::after {\n border-bottom: 4px solid #eee;\n content: \"\";\n display: block;\n margin: 0 auto;\n padding: 20px 0;\n width: 20%;\n}\n.wp-block-editorial-drawer-teaser::before {\n border-bottom: 0;\n border-top: 4px solid #eee;\n}\n.wp-block-editorial-drawer-teaser p {\n color: #666;\n line-height: 1.5;\n margin: 0 0 1em 0;\n font-size: 17px;\n}\n.wp-block-editorial-drawer-teaser h2 {\n font-size: 1.4em;\n}\n.wp-block-editorial-drawer-teaser .js-bu-block-drawer-open {\n margin-right: 0;\n}\n\n.wp-block-editorial-drawer-content {\n -webkit-transition: all 0.5s ease-in-out;\n -moz-transition: all 0.5s ease-in-out;\n -ms-transition: all 0.5s ease-in-out;\n -o-transition: all 0.5s ease-in-out;\n transition: all 0.5s ease-in-out;\n clear: both;\n display: none;\n margin: 10px 0;\n opacity: 0;\n position: relative;\n}\n.wp-block-editorial-drawer-content .wp-block-editorial-drawer-wrapper {\n margin: 0;\n padding: 30px 30px 0;\n}\n.wp-block-editorial-drawer-content .wp-block-editorial-drawer-wrapper::before, .wp-block-editorial-drawer-content .wp-block-editorial-drawer-wrapper::after {\n border-bottom: 4px solid #eee;\n content: \"\";\n display: block;\n margin: 0 auto;\n padding: 20px 0;\n width: 100%;\n}\n.wp-block-editorial-drawer-content .wp-block-editorial-drawer-wrapper::before {\n border-bottom: 0;\n border-top: 4px solid #eee;\n}\n.wp-block-editorial-drawer-content.alignleft, .wp-block-editorial-drawer-content.alignright {\n max-width: 100%;\n}\n\n.wp-block-editorial-drawer-close {\n width: 100%;\n text-align: center;\n}\n\n.wp-block-editorial-drawer.show-drawer .wp-block-editorial-drawer-content {\n display: block;\n opacity: 1;\n}\n.wp-block-editorial-drawer.show-drawer.alignleft .wp-block-editorial-drawer-teaser, .wp-block-editorial-drawer.show-drawer.alignright .wp-block-editorial-drawer-teaser {\n margin-bottom: 0;\n}\n.wp-block-editorial-drawer.show-drawer.alignleft .wp-block-editorial-drawer-content, .wp-block-editorial-drawer.show-drawer.alignright .wp-block-editorial-drawer-content {\n margin-bottom: 45px;\n}\n.wp-block-editorial-drawer.show-drawer.has-hide-teaser .wp-block-editorial-drawer-teaser {\n display: none;\n opacity: 0;\n}\n@media (min-width: 992px) {\n .wp-block-editorial-drawer.alignfull .wp-block-editorial-drawer-wrapper {\n padding: 74px 60px;\n }\n}\n\n.wp-block-editorial-drawer p {\n color: #444;\n}\n.wp-block-editorial-drawer .wp-block-editorial-drawer-teaser::before, .wp-block-editorial-drawer .wp-block-editorial-drawer-teaser::after {\n border-color: #666;\n}\n.wp-block-editorial-drawer.has-light-background .wp-block-editorial-drawer-content {\n background: #fff;\n}\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content {\n background: #000;\n}\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content p,\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content h1,\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content h2,\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content h3,\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content h4,\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content h5,\n.wp-block-editorial-drawer.has-dark-background .wp-block-editorial-drawer-content h6 {\n color: #666;\n}\n.wp-block-editorial-drawer.has-primary-background .wp-block-editorial-drawer-content {\n background: #666;\n}\n.wp-block-editorial-drawer.has-primary-background .wp-block-editorial-drawer-content p {\n color: #666;\n}\n.wp-block-editorial-drawer.has-primary-background .wp-block-editorial-drawer-teaser::before, .wp-block-editorial-drawer.has-primary-background .wp-block-editorial-drawer-teaser::after {\n border-color: #666;\n}\n.wp-block-editorial-drawer.has-secondary-background .wp-block-editorial-drawer-content {\n background: #666;\n}\n.wp-block-editorial-drawer.has-secondary-background .wp-block-editorial-drawer-teaser::before, .wp-block-editorial-drawer.has-secondary-background .wp-block-editorial-drawer-teaser::after {\n border-color: #666;\n}\n.wp-block-editorial-drawer.has-tertiary-background .wp-block-editorial-drawer-content {\n background: #666;\n}\n.wp-block-editorial-drawer.has-tertiary-background .wp-block-editorial-drawer-teaser::before, .wp-block-editorial-drawer.has-tertiary-background .wp-block-editorial-drawer-teaser::after {\n border-color: #666;\n}\n.wp-block-editorial-drawer.has-quaternary-background .wp-block-editorial-drawer-content {\n background: #666;\n}\n.wp-block-editorial-drawer.has-quaternary-background .wp-block-editorial-drawer-teaser::before, .wp-block-editorial-drawer.has-quaternary-background .wp-block-editorial-drawer-teaser::after {\n border-color: #666;\n}\n.wp-block-editorial-drawer.has-quinary-background .wp-block-editorial-drawer-content {\n background: #666;\n}\n.wp-block-editorial-drawer.has-quinary-background .wp-block-editorial-drawer-teaser::before, .wp-block-editorial-drawer.has-quinary-background .wp-block-editorial-drawer-teaser::after {\n border-color: #666;\n}","// =================================================================\n// Drawer Styles - Configurable\n// =================================================================\n//\n//\n// Styles in this file should mainly be for layout, width, etc that are\n// not able to be overwritten by the variables in the global sass array\n//\n//\n\n.wp-block-editorial-drawer {\n\n\t&.is-style-round .wp-block-editorial-drawer-teaser {\n\t\tfigure {\n\t\t\t@include border-radius( 50% );\n\t\t\theight: 150px;\n\t\t\tmargin: 0 auto 0.7em auto;\n\t\t\toverflow: hidden;\n\t\t\twidth: 150px;\n\n\t\t\timg {\n\t\t\t\t@include object-fit( cover );\n\t\t\t\theight: 100%;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.is-size-narrow .wp-block-editorial-drawer-teaser {\n\t\t@extend %col-sm-quarter;\n\t}\n\n\t&.is-size-small .wp-block-editorial-drawer-teaser {\n\t\t@extend %col-sm-third;\n\t}\n\n\t&.is-size-medium .wp-block-editorial-drawer-teaser {\n\t\t@extend %col-sm-5;\n\t}\n\n\t&.is-size-wide .wp-block-editorial-drawer-teaser {\n\t\t@extend %col-sm-half;\n\t}\n\n\t&.is-size-narrow,\n\t&.is-size-small,\n\t&.is-size-medium,\n\t&.is-size-wide {\n\t\t.wp-block-editorial-drawer-teaser {\n\t\t\tfloat: none;\n\t\t\tmargin: 0 auto;\n\t\t\t//padding: 10px;\n\t\t}\n\t}\n\n\t// Alignment options\n\n\t&.alignleft,\n\t&.alignright {\n\t\t// reset defaults so align left and\n\t\t// right are not applying to the