ThirstyAffiliates Affiliate Link Manager - Version 3.7

Version Description

  • Feature: ThirstyAffiliates "Affiliate Link Images" Gutenburg block
  • Bug Fix: Editor/Author unable to access "Edit Post" when plugin visibility is set to enabled & plugin visibility settings are set to same role or higher (roles below it will be affected)
Download this release

Release Info

Developer jkohlbach
Plugin Icon 128x128 ThirstyAffiliates Affiliate Link Manager
Version 3.7
Comparing to
See all releases

Code changes from version 3.6 to 3.7

Helpers/Helper_Functions.php CHANGED
@@ -302,15 +302,18 @@ class Helper_Functions {
302
  *
303
  * @since 3.0.0
304
  * @since 3.6 Add suport for Gutenberg.
 
305
  * @access public
306
  *
307
  * @param string $keyword Search keyword.
308
  * @param int $paged WP_Query paged value.
309
  * @param string $category Affiliate link category to search.
310
  * @param array $exclude List of posts to be excluded.
 
 
311
  * @return array List of affiliate link IDs.
312
  */
313
- public function search_affiliate_links_query( $keyword = '' , $paged = 1 , $category = '' , $exclude = array() , $is_gutenberg = false ) {
314
 
315
  $args = array(
316
  'post_type' => Plugin_Constants::AFFILIATE_LINKS_CPT,
@@ -339,17 +342,51 @@ class Helper_Functions {
339
  $args[ 'posts_per_page' ] = 20;
340
  }
341
 
 
 
 
 
 
 
 
 
 
 
342
  $query = new \WP_Query( $args );
343
 
344
- return $is_gutenberg ? array_map( function( $post ) {
 
 
 
345
  return array(
346
  'id' => $post->ID,
347
  'link' => get_permalink( $post ),
348
- 'title' => $post->post_title
 
349
  );
350
  } , $query->posts ) : $query->posts;
 
351
 
352
- // return $query->posts;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
353
  }
354
 
355
  /**
@@ -567,7 +604,7 @@ class Helper_Functions {
567
  else
568
  $screen_id = 'edit-thirstylink';
569
 
570
- } elseif ( $object_id )
571
  $screen_id = 'thirstylink';
572
 
573
  return apply_filters( 'ta_get_screen_id' , $screen_id );
302
  *
303
  * @since 3.0.0
304
  * @since 3.6 Add suport for Gutenberg.
305
+ * @since 3.7 Add option to add list of affiliate link attached images for Gutenberg.
306
  * @access public
307
  *
308
  * @param string $keyword Search keyword.
309
  * @param int $paged WP_Query paged value.
310
  * @param string $category Affiliate link category to search.
311
  * @param array $exclude List of posts to be excluded.
312
+ * @param array $is_gutenberg Toggle if searching for Gutenberg link picker.
313
+ * @param array $with_images Toggle if search for affiliate links with images.
314
  * @return array List of affiliate link IDs.
315
  */
316
+ public function search_affiliate_links_query( $keyword = '' , $paged = 1 , $category = '' , $exclude = array() , $is_gutenberg = false , $with_images = false ) {
317
 
318
  $args = array(
319
  'post_type' => Plugin_Constants::AFFILIATE_LINKS_CPT,
342
  $args[ 'posts_per_page' ] = 20;
343
  }
344
 
345
+ if ( $with_images ) {
346
+
347
+ $args[ 'meta_query' ] = array(
348
+ array(
349
+ 'key' => Plugin_Constants::META_DATA_PREFIX . 'image_ids',
350
+ 'compare' => 'EXISTS'
351
+ )
352
+ );
353
+ }
354
+
355
  $query = new \WP_Query( $args );
356
 
357
+ return $is_gutenberg ? array_map( function( $post ) use ( $with_images ) {
358
+
359
+ $image_ids = get_post_meta( $post->ID , Plugin_Constants::META_DATA_PREFIX . 'image_ids' , true );
360
+
361
  return array(
362
  'id' => $post->ID,
363
  'link' => get_permalink( $post ),
364
+ 'title' => $post->post_title,
365
+ 'images' => $with_images ? $this->get_image_srcs( $image_ids ) : false
366
  );
367
  } , $query->posts ) : $query->posts;
368
+ }
369
 
370
+ /**
371
+ * Get image and src attribute for list of image ids.
372
+ *
373
+ * @since 3.7
374
+ * @access public
375
+ *
376
+ * @param array $image_ids List of image ids.
377
+ * @param string $size Size of image to output.
378
+ * @return array List of image ids with src attribute.
379
+ */
380
+ public function get_image_srcs( $image_ids , $size = 'thumbnail' ) {
381
+
382
+ if ( ! is_array( $image_ids ) || empty( $image_ids ) ) return array();
383
+
384
+ return array_map( function( $id ) use ( $size ) {
385
+ return array(
386
+ 'id' => $id,
387
+ 'src' => wp_get_attachment_image_src( $id , $size )[0],
388
+ );
389
+ } , $image_ids );
390
  }
391
 
392
  /**
604
  else
605
  $screen_id = 'edit-thirstylink';
606
 
607
+ } elseif ( $object_id && get_post_type( $object_id ) === Plugin_Constants::AFFILIATE_LINKS_CPT )
608
  $screen_id = 'thirstylink';
609
 
610
  return apply_filters( 'ta_get_screen_id' , $screen_id );
Helpers/Plugin_Constants.php CHANGED
@@ -27,7 +27,7 @@ class Plugin_Constants {
27
  // Plugin configuration constants
28
  const TOKEN = 'ta';
29
  const INSTALLED_VERSION = 'ta_installed_version';
30
- const VERSION = '3.6';
31
  const TEXT_DOMAIN = 'thirstyaffiliates';
32
  const THEME_TEMPLATE_PATH = 'thirstyaffiliates';
33
  const META_DATA_PREFIX = '_ta_';
27
  // Plugin configuration constants
28
  const TOKEN = 'ta';
29
  const INSTALLED_VERSION = 'ta_installed_version';
30
+ const VERSION = '3.7';
31
  const TEXT_DOMAIN = 'thirstyaffiliates';
32
  const THEME_TEMPLATE_PATH = 'thirstyaffiliates';
33
  const META_DATA_PREFIX = '_ta_';
Models/Link_Picker.php CHANGED
@@ -346,7 +346,8 @@ class Link_Picker implements Model_Interface , Initiable_Interface {
346
  $category = ( isset( $_POST[ 'category' ] ) && $_POST[ 'category' ] ) ? esc_attr( $_POST[ 'category' ] ) : '';
347
  $exclude = ( isset( $_POST[ 'exclude' ] ) && is_array( $_POST[ 'exclude' ] ) && ! empty( $_POST[ 'exclude' ] ) ) ? $_POST[ 'exclude' ] : array();
348
  $is_gutenberg = isset( $_POST[ 'gutenberg' ] ) && $_POST[ 'gutenberg' ];
349
- $affiliate_links = $this->_helper_functions->search_affiliate_links_query( $_POST[ 'keyword' ] , $paged , $category , $exclude , $is_gutenberg );
 
350
  $advance = ( isset( $_POST[ 'advance' ] ) && $_POST[ 'advance' ] ) ? true : false;
351
  $post_id = isset( $_POST[ 'post_id' ] ) ? intval( $_POST[ 'post_id' ] ) : 0;
352
 
346
  $category = ( isset( $_POST[ 'category' ] ) && $_POST[ 'category' ] ) ? esc_attr( $_POST[ 'category' ] ) : '';
347
  $exclude = ( isset( $_POST[ 'exclude' ] ) && is_array( $_POST[ 'exclude' ] ) && ! empty( $_POST[ 'exclude' ] ) ) ? $_POST[ 'exclude' ] : array();
348
  $is_gutenberg = isset( $_POST[ 'gutenberg' ] ) && $_POST[ 'gutenberg' ];
349
+ $with_images = isset( $_POST[ 'with_images' ] ) && $_POST[ 'with_images' ];
350
+ $affiliate_links = $this->_helper_functions->search_affiliate_links_query( $_POST[ 'keyword' ] , $paged , $category , $exclude , $is_gutenberg , $with_images );
351
  $advance = ( isset( $_POST[ 'advance' ] ) && $_POST[ 'advance' ] ) ? true : false;
352
  $post_id = isset( $_POST[ 'post_id' ] ) ? intval( $_POST[ 'post_id' ] ) : 0;
353
 
Models/Script_Loader.php CHANGED
@@ -143,7 +143,6 @@ class Script_Loader implements Model_Interface {
143
  }
144
  }
145
 
146
-
147
  if ( $screen->base === 'thirstylink_page_thirsty-settings' ) {
148
 
149
  // Settings
143
  }
144
  }
145
 
 
146
  if ( $screen->base === 'thirstylink_page_thirsty-settings' ) {
147
 
148
  // Settings
Models/Shortcodes.php CHANGED
@@ -220,8 +220,8 @@ class Shortcodes implements Model_Interface {
220
 
221
  // provide default class value if it is not set
222
  if ( empty( $link_attributes[ 'class' ] ) ){
223
-
224
- $link_attributes[ 'class' ] = get_option( 'ta_disable_thirsty_link_class' ) !== 'yes' ? 'thirstylink' : '';
225
 
226
  if ( $thirstylink->get_prop( 'css_classes' ) )
227
  $link_attributes[ 'class' ] = trim( $link_attributes[ 'class' ] . ' ' . $thirstylink->get_prop( 'css_classes' ) );
220
 
221
  // provide default class value if it is not set
222
  if ( empty( $link_attributes[ 'class' ] ) ){
223
+ $thirsty_link_class = strpos( $content , '<img ' ) !== false ? 'thirstylinkimg' : 'thirstylink';
224
+ $link_attributes[ 'class' ] = get_option( 'ta_disable_thirsty_link_class' ) !== 'yes' ? $thirsty_link_class : '';
225
 
226
  if ( $thirstylink->get_prop( 'css_classes' ) )
227
  $link_attributes[ 'class' ] = trim( $link_attributes[ 'class' ] . ' ' . $thirstylink->get_prop( 'css_classes' ) );
js/app/gutenberg_support/dist/gutenberg-support.css CHANGED
@@ -1,2 +1,2 @@
1
- .components-toolbar .ta-link-button path{fill:#30b2a6}.components-toolbar .ta-unlink-button svg{background:#30b2a6!important}ta{-webkit-box-shadow:inset 0 -1px 0 #30b2a6;box-shadow:inset 0 -1px 0 #30b2a6;color:#222;text-decoration:none;-webkit-transition:color 80ms ease-in,-webkit-box-shadow .13s ease-in-out;transition:color 80ms ease-in,-webkit-box-shadow .13s ease-in-out;transition:color 80ms ease-in,box-shadow .13s ease-in-out;transition:color 80ms ease-in,box-shadow .13s ease-in-out,-webkit-box-shadow .13s ease-in-out}ta:hover{color:#000;-webkit-box-shadow:inset 0 0 0 #30b2a6,0 3px 0 #30b2a6;box-shadow:inset 0 0 0 #30b2a6,0 3px 0 #30b2a6}.ta-search-input .components-base-control__field{margin-bottom:0}.ta-url-popover .ta-invalid-link{background:#e35a5b;color:#fff;padding:5px 10px}
2
  /*# sourceMappingURL=gutenberg-support.css.map*/
1
+ .components-toolbar .ta-link-button path{fill:#30b2a6}.components-toolbar .ta-edit-image-button svg,.components-toolbar .ta-unlink-button svg{background:#30b2a6!important;color:#fff!important}.editor-rich-text ta,ta{-webkit-box-shadow:inset 0 -1px 0 #30b2a6;box-shadow:inset 0 -1px 0 #30b2a6;color:#222;text-decoration:none;-webkit-transition:color 80ms ease-in,-webkit-box-shadow .13s ease-in-out;transition:color 80ms ease-in,-webkit-box-shadow .13s ease-in-out;transition:color 80ms ease-in,box-shadow .13s ease-in-out;transition:color 80ms ease-in,box-shadow .13s ease-in-out,-webkit-box-shadow .13s ease-in-out}.editor-rich-text ta:hover,ta:hover{color:#000;-webkit-box-shadow:inset 0 0 0 #30b2a6,0 3px 0 #30b2a6;box-shadow:inset 0 0 0 #30b2a6,0 3px 0 #30b2a6}.wp-block-ta-image ta{-webkit-box-shadow:none;box-shadow:none;color:inherit}.wp-block-ta-image figcaption ta{-webkit-box-shadow:inset 0 -1px 0 #30b2a6;box-shadow:inset 0 -1px 0 #30b2a6}.ta-search-input .components-base-control__field{margin-bottom:0}.ta-url-popover .ta-invalid-link{background:#e35a5b;color:#fff;padding:5px 10px}.editor-styles-wrapper .ta-image-sel-wrap{width:100%}.editor-styles-wrapper .ta-image-sel-wrap h3{font-size:16px;margin:0}.editor-styles-wrapper .ta-image-sel-wrap .ta-image-selection button{background:transparent;border:none;cursor:pointer}.editor-styles-wrapper .ta-image-sel-wrap .ta-image-selection button img{max-width:100px;height:auto;cursor:pointer}.wp-block-image{max-width:100%;margin-bottom:1em;margin-left:0;margin-right:0 img;margin-right-max-width:100%}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull img,.wp-block-image.alignwide img{width:100%}.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table;margin-left:0;margin-right:0}.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{display:table-caption;caption-side:bottom}.wp-block-image.alignleft{float:left;margin-right:1em}.wp-block-image.alignright{float:right;margin-left:1em}.wp-block-image.aligncenter{margin-left:auto;margin-right:auto}[data-type="ta/image"][data-align=center] .editor-block-list__block-edit figure,[data-type="ta/image"][data-align=left] .editor-block-list__block-edit figure,[data-type="ta/image"][data-align=right] .editor-block-list__block-edit figure{margin:0;display:table}[data-type="ta/image"][data-align=center] .editor-block-list__block-edit .editor-rich-text,[data-type="ta/image"][data-align=left] .editor-block-list__block-edit .editor-rich-text,[data-type="ta/image"][data-align=right] .editor-block-list__block-edit .editor-rich-text{display:table-caption;caption-side:bottom}[data-type="ta/image"][data-align=full] figure img,[data-type="ta/image"][data-align=wide] figure img{width:100%}[data-type="ta/image"] .editor-block-list__block-edit figure.is-resized{margin:0;display:table}[data-type="ta/image"] .editor-block-list__block-edit figure.is-resized .editor-rich-text{display:table-caption;caption-side:bottom}.editor-block-list__block[data-type="ta/image"][data-align=center] .wp-block-image,.editor-block-list__block[data-type="ta/image"][data-align=center][data-resized=false] .wp-block-ta-image>div{margin-left:auto;margin-right:auto}
2
  /*# sourceMappingURL=gutenberg-support.css.map*/
js/app/gutenberg_support/dist/gutenberg-support.js CHANGED
@@ -1,7 +1,7 @@
1
- !function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t,n){var o,i;/*!
2
  Copyright (c) 2017 Jed Watson.
3
  Licensed under the MIT License (MIT), see
4
  http://jedwatson.github.io/classnames
5
  */
6
- !function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var o=arguments[t];if(o){var i=typeof o;if("string"===i||"number"===i)e.push(o);else if(Array.isArray(o)&&o.length){var a=n.apply(null,o);a&&e.push(a)}else if("object"===i)for(var s in o)r.call(o,s)&&o[s]&&e.push(s)}}return e.join(" ")}var r={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(o=[],void 0!==(i=function(){return n}.apply(t,o))&&(e.exports=i))}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n(2),i=n(3),r=n(13);n.n(r);Object(o.a)(),Object(i.a)()},function(e,t,n){"use strict";function o(){[].forEach(function(e){if(e){var t=e.name,n=e.settings;i(t,n)}})}t.a=o;var i=wp.blocks.registerBlockType},function(e,t,n){"use strict";function o(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}function i(){[r.a].forEach(function(e){var t=e.name,n=o(e,["name"]);return a(t,n)})}t.a=i;var r=n(4),a=wp.richText.registerFormatType},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}n.d(t,"a",function(){return _});var a=n(5),s=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),l=wp.i18n.__,u=wp.element,c=u.Component,p=u.Fragment,f=wp.components.withSpokenMessages,d=wp.richText,h=d.getTextContent,v=d.applyFormat,g=d.removeFormat,m=d.slice,y=wp.url.isURL,w=wp.editor,b=w.RichTextToolbarButton,k=w.RichTextShortcut,S=wp.components,L=S.Path,O=S.SVG,_={name:"ta/link",title:l("Affiliate Link"),tagName:"ta",className:null,attributes:{url:"href",target:"target"},edit:f(function(e){function t(){o(this,t);var e=i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.addLink=e.addLink.bind(e),e.stopAddingLink=e.stopAddingLink.bind(e),e.onRemoveFormat=e.onRemoveFormat.bind(e),e.state={addingLink:!1},e}return r(t,e),s(t,[{key:"addLink",value:function(){var e=this.props,t=e.value,n=e.onChange,o=h(m(t));o&&y(o)?n(v(t,{type:"ta/link",attributes:{url:o}})):this.setState({addingLink:!0})}},{key:"stopAddingLink",value:function(){this.setState({addingLink:!1})}},{key:"onRemoveFormat",value:function(){var e=this.props,t=e.value,n=e.onChange,o=e.speak;n(g(t,"ta/link")),o(l("Affiliate Link removed."),"assertive")}},{key:"render",value:function(){var e=this.props,t=e.isActive,n=e.activeAttributes,o=e.value,i=e.onChange;return wp.element.createElement(p,null,wp.element.createElement(k,{type:"access",character:"s",onUse:this.onRemoveFormat}),wp.element.createElement(k,{type:"primary",character:"l",onUse:this.addLink}),wp.element.createElement(k,{type:"primaryShift",character:"l",onUse:this.onRemoveFormat}),t&&wp.element.createElement(b,{icon:"editor-unlink",title:l("Remove Affiliate Link"),className:"ta-unlink-button",onClick:this.onRemoveFormat,isActive:t,shortcutType:"primaryShift",shortcutCharacter:"l"}),!t&&wp.element.createElement(b,{icon:wp.element.createElement(O,{xmlns:"http://www.w3.org/2000/svg",width:"16.688",height:"9.875",viewBox:"0 0 16.688 9.875"},wp.element.createElement(L,{id:"TA.svg",fill:"black",class:"cls-1",d:"M2.115,15.12H4.847L6.836,7.7H9.777l0.63-2.381H1.821L1.177,7.7H4.118Zm4.758,0H9.829l1.177-1.751h3.782l0.238,1.751h2.858L16.357,5.245H13.7Zm5.5-3.866,1.835-2.816,0.35,2.816H12.378Z",transform:"translate(-1.188 -5.25)"})),title:l("Affiliate Link"),className:"ta-link-button",onClick:this.addLink,shortcutType:"primary",shortcutCharacter:"l"}),wp.element.createElement(a.a,{addingLink:this.state.addingLink,stopAddingLink:this.stopAddingLink,isActive:t,activeAttributes:n,value:o,onChange:i}))}}]),t}(c))}},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e){var t=e.url,n=e.linkid;e.text;return{type:"ta/link",attributes:{url:t,linkid:n.toString()}}}function s(e,t){return e.addingLink||t.editLink}var l=n(0),u=n.n(l),c=n(6),p=n(7),f=n(8),d=n(9),h=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),v=wp.i18n.__,g=wp.element,m=g.Component,y=g.createRef,w=wp.components,b=w.ExternalLink,k=(w.ToggleControl,w.IconButton),S=w.withSpokenMessages,L=wp.keycodes,O=L.LEFT,_=L.RIGHT,E=L.UP,C=L.DOWN,P=L.BACKSPACE,T=L.ENTER,R=wp.url,x=R.prependHTTP,j=R.safeDecodeURI,I=R.filterURLForDisplay,A=wp.richText,N=A.create,D=A.insert,V=A.isCollapsed,F=A.applyFormat,W=A.getTextContent,H=A.slice,K=function(e){return e.stopPropagation()},B=function(e){var t=e.value,n=e.onChangeInputValue,o=e.onKeyDown,i=e.submitLink,r=e.invalidLink,a=e.resetInvalidLink,s=e.autocompleteRef;return wp.element.createElement("form",{className:"editor-format-toolbar__link-container-content ta-link-search-popover",onKeyPress:K,onKeyDown:o,onSubmit:i},wp.element.createElement(d.a,{value:t,onChange:n,autocompleteRef:s,invalidLink:r,resetInvalidLink:a}),wp.element.createElement(k,{icon:"editor-break",label:v("Apply"),type:"submit"}))},U=function(e){var t=e.url,n=x(t),o=u()("editor-format-toolbar__link-container-value",{"has-invalid-link":!Object(p.a)(n)});return t?wp.element.createElement(b,{className:o,href:t},I(j(t))):wp.element.createElement("span",{className:o})},M=function(e){var t=e.url,n=e.editLink;return wp.element.createElement("div",{className:"editor-format-toolbar__link-container-content",onKeyPress:K},wp.element.createElement(U,{url:t}),wp.element.createElement(k,{icon:"edit",label:v("Edit"),onClick:n}))},q=function(e){function t(){o(this,t);var e=i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.editLink=e.editLink.bind(e),e.submitLink=e.submitLink.bind(e),e.onKeyDown=e.onKeyDown.bind(e),e.onChangeInputValue=e.onChangeInputValue.bind(e),e.onClickOutside=e.onClickOutside.bind(e),e.resetState=e.resetState.bind(e),e.autocompleteRef=y(),e.resetInvalidLink=e.resetInvalidLink.bind(e),e.state={inputValue:"",linkid:0,post:null,invalidLink:!1},e}return r(t,e),h(t,[{key:"onKeyDown",value:function(e){[O,C,_,E,P,T].indexOf(e.keyCode)>-1&&e.stopPropagation()}},{key:"onChangeInputValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=t?t.id:0;this.setState({inputValue:e,linkid:n,post:t})}},{key:"editLink",value:function(e){this.setState({editLink:!0}),e.preventDefault()}},{key:"submitLink",value:function(e){var t=this.props,n=t.isActive,o=t.value,i=t.onChange,r=t.speak,s=this.state,l=s.inputValue,u=s.linkid,c=s.post,f=x(l),d=W(H(o)),h=a({url:f,linkid:u,text:d});if(e.preventDefault(),!u||!c)return void this.setState({invalidLink:!0});if(V(o)&&!n){var g=F(N({text:c.title}),h,0,f.length);i(D(o,g))}else i(F(o,h));this.resetState(),Object(p.a)(f)?n?r(v("Link edited."),"assertive"):r(v("Link inserted"),"assertive"):r(v("Warning: the link has been inserted but may have errors. Please test it."),"assertive")}},{key:"onClickOutside",value:function(e){var t=this.autocompleteRef.current;t&&t.contains(e.target)||this.resetState()}},{key:"resetState",value:function(){this.props.stopAddingLink(),this.setState({inputValue:"",editLink:!1}),this.resetInvalidLink()}},{key:"resetInvalidLink",value:function(){this.setState({invalidLink:!1})}},{key:"render",value:function(){var e=this.props,t=e.isActive,n=e.activeAttributes,o=n.url,i=(n.linkid,e.addingLink),r=e.value;e.onChange;if(!t&&!i)return null;var a=this.state,l=a.inputValue,u=a.invalidLink,p=s(this.props,this.state);return wp.element.createElement(c.a,{key:""+r.start+r.end},wp.element.createElement(f.a,{onClickOutside:this.onClickOutside,onClose:this.resetState,focusOnMount:!!p&&"firstElement",invalidLink:u},p?wp.element.createElement(B,{value:l,onChangeInputValue:this.onChangeInputValue,onKeyDown:this.onKeyDown,submitLink:this.submitLink,autocompleteRef:this.autocompleteRef,updateLinkId:this.updateLinkId,invalidLink:u,resetInvalidLink:this.resetInvalidLink}):wp.element.createElement(M,{url:o,editLink:this.editLink})))}}]),t}(m);t.a=S(q)},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(){var e=window.getSelection();if(0===e.rangeCount)return{};var t=p(e.getRangeAt(0)),n=t.top+t.height,o=t.left+t.width/2,i=c(e.anchorNode);if(i){var r=i.getBoundingClientRect();n-=r.top,o-=r.left}return{top:n,left:o}}var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),l=wp.element.Component,u=wp.dom,c=u.getOffsetParent,p=u.getRectangleFromRange,f=function(e){function t(){o(this,t);var e=i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.state={style:a()},e}return r(t,e),s(t,[{key:"render",value:function(){var e=this.props.children,t=this.state.style;return wp.element.createElement("div",{className:"editor-format-toolbar__selection-position",style:t},e)}}]),t}(l);t.a=f},function(e,t,n){"use strict";function o(e){if(!e)return!1;var t=e.trim();if(!t)return!1;if(/^\S+:/.test(t)){var n=s(t);if(!l(n))return!1;if(r(n,"http")&&!/^https?:\/\/[^\/\s]/i.test(t))return!1;var o=u(t);if(!c(o))return!1;var i=p(t);if(i&&!f(i))return!1;var a=d(t);if(a&&!h(a))return!1;var m=v(t);if(m&&!g(m))return!1}return!(r(t,"#")&&!g(t))}t.a=o;var i=lodash,r=i.startsWith,a=wp.url,s=a.getProtocol,l=a.isValidProtocol,u=a.getAuthority,c=a.isValidAuthority,p=a.getPath,f=a.isValidPath,d=a.getQueryString,h=a.isValidQueryString,v=a.getFragment,g=a.isValidFragment},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),s=wp.i18n.__,l=wp.element.Component,u=wp.components,c=u.Popover,p=u.IconButton,f=function(e){function t(){o(this,t);var e=i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.toggleSettingsVisibility=e.toggleSettingsVisibility.bind(e),e.state={isSettingsExpanded:!1},e}return r(t,e),a(t,[{key:"toggleSettingsVisibility",value:function(){this.setState({isSettingsExpanded:!this.state.isSettingsExpanded})}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.renderSettings,o=e.onClose,i=e.onClickOutside,r=e.invalidLink,a=e.position,l=void 0===a?"bottom center":a,u=e.focusOnMount,f=void 0===u?"firstElement":u,d=this.state.isSettingsExpanded,h=!!n&&d;return wp.element.createElement(c,{className:"ta-url-popover editor-url-popover",focusOnMount:f,position:l,onClose:o,onClickOutside:i},wp.element.createElement("div",{className:"editor-url-popover__row"},t,!!n&&wp.element.createElement(p,{className:"editor-url-popover__settings-toggle",icon:"ellipsis",label:s("Link Settings"),onClick:this.toggleSettingsVisibility,"aria-expanded":d})),h&&wp.element.createElement("div",{className:"editor-url-popover__row editor-url-popover__settings"},n()),r&&wp.element.createElement("div",{class:"ta-invalid-link"},s("Invalid affiliate link")))}}]),t}(l);t.a=f},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var a=n(0),s=n.n(a),l=n(10),u=n.n(l),c=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),p=wp.i18n.__,f=lodash,d=f.throttle,h=wp.element,v=h.Component,g=h.createRef,m=wp.keycodes,y=m.UP,w=m.DOWN,b=m.ENTER,k=m.TAB,S=wp.components,L=S.Spinner,O=S.withSpokenMessages,_=S.Popover,E=wp.compose.withInstanceId,C=function(e){return e.stopPropagation()},P=function(e){function t(e){var n=e.autocompleteRef;o(this,t);var r=i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return r.onChange=r.onChange.bind(r),r.onKeyDown=r.onKeyDown.bind(r),r.autocompleteRef=n||g(),r.inputRef=g(),r.updateSuggestions=d(r.updateSuggestions.bind(r),200),r.suggestionNodes=[],r.state={posts:[],showSuggestions:!1,selectedSuggestion:null},r}return r(t,e),c(t,[{key:"componentDidUpdate",value:function(){var e=this,t=this.state,n=t.showSuggestions,o=t.selectedSuggestion;n&&null!==o&&!this.scrollingIntoView&&(this.scrollingIntoView=!0,u()(this.suggestionNodes[o],this.autocompleteRef.current,{onlyScrollIfNeeded:!0}),setTimeout(function(){e.scrollingIntoView=!1},100))}},{key:"componentWillUnmount",value:function(){delete this.suggestionsRequest}},{key:"bindSuggestionNode",value:function(e){var t=this;return function(n){t.suggestionNodes[e]=n}}},{key:"updateSuggestions",value:function(e){var t=this;if(e.length<2||/^https?:/.test(e))return void this.setState({showSuggestions:!1,selectedSuggestion:null,loading:!1});this.setState({showSuggestions:!0,selectedSuggestion:null,loading:!0});var n=new FormData;n.append("action","search_affiliate_links_query"),n.append("keyword",e),n.append("paged",1),n.append("gutenberg",!0);var o=fetch(ajaxurl,{method:"POST",body:n});o.then(function(e){return e.json()}).then(function(e){if(e.affiliate_links){var n=e.affiliate_links;t.suggestionsRequest===o&&(t.setState({posts:n,loading:!1}),n.length?t.props.debouncedSpeak(sprintf(_n("%d result found, use up and down arrow keys to navigate.","%d results found, use up and down arrow keys to navigate.",n.length),n.length),"assertive"):t.props.debouncedSpeak(p("No results."),"assertive"))}}).catch(function(){t.suggestionsRequest===o&&t.setState({loading:!1})}),this.suggestionsRequest=o}},{key:"onChange",value:function(e){this.props.resetInvalidLink();var t=e.target.value;this.props.onChange(t),this.updateSuggestions(t)}},{key:"onKeyDown",value:function(e){var t=this.state,n=t.showSuggestions,o=t.selectedSuggestion,i=t.posts,r=t.loading;if(n&&i.length&&!r){var a=this.state.posts[this.state.selectedSuggestion];switch(e.keyCode){case y:e.stopPropagation(),e.preventDefault();var s=o?o-1:i.length-1;this.setState({selectedSuggestion:s});break;case w:e.stopPropagation(),e.preventDefault();var l=null===o||o===i.length-1?0:o+1;this.setState({selectedSuggestion:l});break;case k:null!==this.state.selectedSuggestion&&(this.selectLink(a),this.props.speak(p("Link selected")));break;case b:null!==this.state.selectedSuggestion&&(e.stopPropagation(),this.selectLink(a))}}else switch(e.keyCode){case y:0!==e.target.selectionStart&&(e.stopPropagation(),e.preventDefault(),e.target.setSelectionRange(0,0));break;case w:this.props.value.length!==e.target.selectionStart&&(e.stopPropagation(),e.preventDefault(),e.target.setSelectionRange(this.props.value.length,this.props.value.length))}}},{key:"selectLink",value:function(e){this.props.onChange(e.link,e),this.setState({selectedSuggestion:null,showSuggestions:!1})}},{key:"handleOnClick",value:function(e){this.selectLink(e),this.inputRef.current.focus()}},{key:"render",value:function(){var e=this,t=this.props,n=t.value,o=void 0===n?"":n,i=t.autoFocus,r=void 0===i||i,a=t.instanceId,l=t.invalidLink,u=this.state,c=u.showSuggestions,f=u.posts,d=u.selectedSuggestion,h=u.loading;return wp.element.createElement("div",{className:"editor-url-input"},wp.element.createElement("input",{autoFocus:r,type:"text","aria-label":p("URL"),required:!0,value:o,onChange:this.onChange,onInput:C,placeholder:p("Paste URL or type to search"),onKeyDown:this.onKeyDown,role:"combobox","aria-expanded":c,"aria-autocomplete":"list","aria-owns":"editor-url-input-suggestions-"+a,"aria-activedescendant":null!==d?"editor-url-input-suggestion-"+a+"-"+d:void 0,ref:this.inputRef}),h&&wp.element.createElement(L,null),c&&!!f.length&&!l&&wp.element.createElement(_,{position:"bottom",noArrow:!0,focusOnMount:!1},wp.element.createElement("div",{className:"editor-url-input__suggestions",id:"editor-url-input-suggestions-"+a,ref:this.autocompleteRef,role:"listbox"},f.map(function(t,n){return wp.element.createElement("button",{key:t.id,role:"option",tabIndex:"-1",id:"editor-url-input-suggestion-"+a+"-"+n,ref:e.bindSuggestionNode(n),className:s()("editor-url-input__suggestion",{"is-selected":n===d}),onClick:function(){return e.handleOnClick(t)},"aria-selected":n===d},t.title||p("(no title)"))}))))}}]),t}(v);t.a=O(E(P))},function(e,t,n){"use strict";e.exports=n(11)},function(e,t,n){"use strict";function o(e,t,n){n=n||{},9===t.nodeType&&(t=i.getWindow(t));var o=n.allowHorizontalScroll,r=n.onlyScrollIfNeeded,a=n.alignWithTop,s=n.alignWithLeft,l=n.offsetTop||0,u=n.offsetLeft||0,c=n.offsetBottom||0,p=n.offsetRight||0;o=void 0===o||o;var f=i.isWindow(t),d=i.offset(e),h=i.outerHeight(e),v=i.outerWidth(e),g=void 0,m=void 0,y=void 0,w=void 0,b=void 0,k=void 0,S=void 0,L=void 0,O=void 0,_=void 0;f?(S=t,_=i.height(S),O=i.width(S),L={left:i.scrollLeft(S),top:i.scrollTop(S)},b={left:d.left-L.left-u,top:d.top-L.top-l},k={left:d.left+v-(L.left+O)+p,top:d.top+h-(L.top+_)+c},w=L):(g=i.offset(t),m=t.clientHeight,y=t.clientWidth,w={left:t.scrollLeft,top:t.scrollTop},b={left:d.left-(g.left+(parseFloat(i.css(t,"borderLeftWidth"))||0))-u,top:d.top-(g.top+(parseFloat(i.css(t,"borderTopWidth"))||0))-l},k={left:d.left+v-(g.left+y+(parseFloat(i.css(t,"borderRightWidth"))||0))+p,top:d.top+h-(g.top+m+(parseFloat(i.css(t,"borderBottomWidth"))||0))+c}),b.top<0||k.top>0?!0===a?i.scrollTop(t,w.top+b.top):!1===a?i.scrollTop(t,w.top+k.top):b.top<0?i.scrollTop(t,w.top+b.top):i.scrollTop(t,w.top+k.top):r||(a=void 0===a||!!a,a?i.scrollTop(t,w.top+b.top):i.scrollTop(t,w.top+k.top)),o&&(b.left<0||k.left>0?!0===s?i.scrollLeft(t,w.left+b.left):!1===s?i.scrollLeft(t,w.left+k.left):b.left<0?i.scrollLeft(t,w.left+b.left):i.scrollLeft(t,w.left+k.left):r||(s=void 0===s||!!s,s?i.scrollLeft(t,w.left+b.left):i.scrollLeft(t,w.left+k.left)))}var i=n(12);e.exports=o},function(e,t,n){"use strict";function o(e){var t=void 0,n=void 0,o=void 0,i=e.ownerDocument,r=i.body,a=i&&i.documentElement;return t=e.getBoundingClientRect(),n=t.left,o=t.top,n-=a.clientLeft||r.clientLeft||0,o-=a.clientTop||r.clientTop||0,{left:n,top:o}}function i(e,t){var n=e["page"+(t?"Y":"X")+"Offset"],o="scroll"+(t?"Top":"Left");if("number"!=typeof n){var i=e.document;n=i.documentElement[o],"number"!=typeof n&&(n=i.body[o])}return n}function r(e){return i(e)}function a(e){return i(e,!0)}function s(e){var t=o(e),n=e.ownerDocument,i=n.defaultView||n.parentWindow;return t.left+=r(i),t.top+=a(i),t}function l(e,t,n){var o="",i=e.ownerDocument,r=n||i.defaultView.getComputedStyle(e,null);return r&&(o=r.getPropertyValue(t)||r[t]),o}function u(e,t){var n=e[O]&&e[O][t];if(S.test(n)&&!L.test(t)){var o=e.style,i=o[E],r=e[_][E];e[_][E]=e[O][E],o[E]="fontSize"===t?"1em":n||0,n=o.pixelLeft+C,o[E]=i,e[_][E]=r}return""===n?"auto":n}function c(e,t){for(var n=0;n<e.length;n++)t(e[n])}function p(e){return"border-box"===P(e,"boxSizing")}function f(e,t,n){var o={},i=e.style,r=void 0;for(r in t)t.hasOwnProperty(r)&&(o[r]=i[r],i[r]=t[r]);n.call(e);for(r in t)t.hasOwnProperty(r)&&(i[r]=o[r])}function d(e,t,n){var o=0,i=void 0,r=void 0,a=void 0;for(r=0;r<t.length;r++)if(i=t[r])for(a=0;a<n.length;a++){var s=void 0;s="border"===i?i+n[a]+"Width":i+n[a],o+=parseFloat(P(e,s))||0}return o}function h(e){return null!=e&&e==e.window}function v(e,t,n){if(h(e))return"width"===t?I.viewportWidth(e):I.viewportHeight(e);if(9===e.nodeType)return"width"===t?I.docWidth(e):I.docHeight(e);var o="width"===t?["Left","Right"]:["Top","Bottom"],i="width"===t?e.offsetWidth:e.offsetHeight,r=P(e),a=p(e,r),s=0;(null==i||i<=0)&&(i=void 0,s=P(e,t),(null==s||Number(s)<0)&&(s=e.style[t]||0),s=parseFloat(s)||0),void 0===n&&(n=a?j:R);var l=void 0!==i||a,u=i||s;if(n===R)return l?u-d(e,["border","padding"],o,r):s;if(l){var c=n===x?-d(e,["border"],o,r):d(e,["margin"],o,r);return u+(n===j?0:c)}return s+d(e,T.slice(n),o,r)}function g(e){var t=void 0,n=arguments;return 0!==e.offsetWidth?t=v.apply(void 0,n):f(e,A,function(){t=v.apply(void 0,n)}),t}function m(e,t,n){var o=n;{if("object"!==(void 0===t?"undefined":b(t)))return void 0!==o?("number"==typeof o&&(o+="px"),void(e.style[t]=o)):P(e,t);for(var i in t)t.hasOwnProperty(i)&&m(e,i,t[i])}}function y(e,t){"static"===m(e,"position")&&(e.style.position="relative");var n=s(e),o={},i=void 0,r=void 0;for(r in t)t.hasOwnProperty(r)&&(i=parseFloat(m(e,r))||0,o[r]=i+t[r]-n[r]);m(e,o)}var w=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},k=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,S=new RegExp("^("+k+")(?!px)[a-z%]+$","i"),L=/^(top|right|bottom|left)$/,O="currentStyle",_="runtimeStyle",E="left",C="px",P=void 0;"undefined"!=typeof window&&(P=window.getComputedStyle?l:u);var T=["margin","border","padding"],R=-1,x=2,j=1,I={};c(["Width","Height"],function(e){I["doc"+e]=function(t){var n=t.document;return Math.max(n.documentElement["scroll"+e],n.body["scroll"+e],I["viewport"+e](n))},I["viewport"+e]=function(t){var n="client"+e,o=t.document,i=o.body,r=o.documentElement,a=r[n];return"CSS1Compat"===o.compatMode&&a||i&&i[n]||a}});var A={position:"absolute",visibility:"hidden",display:"block"};c(["width","height"],function(e){var t=e.charAt(0).toUpperCase()+e.slice(1);I["outer"+t]=function(t,n){return t&&g(t,e,n?0:j)};var n="width"===e?["Left","Right"]:["Top","Bottom"];I[e]=function(t,o){if(void 0===o)return t&&g(t,e,R);if(t){var i=P(t);return p(t)&&(o+=d(t,["padding","border"],n,i)),m(t,e,o)}}}),e.exports=w({getWindow:function(e){var t=e.ownerDocument||e;return t.defaultView||t.parentWindow},offset:function(e,t){if(void 0===t)return s(e);y(e,t)},isWindow:h,each:c,css:m,clone:function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);if(e.overflow)for(var n in e)e.hasOwnProperty(n)&&(t.overflow[n]=e.overflow[n]);return t},scrollLeft:function(e,t){if(h(e)){if(void 0===t)return r(e);window.scrollTo(t,a(e))}else{if(void 0===t)return e.scrollLeft;e.scrollLeft=t}},scrollTop:function(e,t){if(h(e)){if(void 0===t)return a(e);window.scrollTo(r(e),t)}else{if(void 0===t)return e.scrollTop;e.scrollTop=t}},viewportWidth:0,viewportHeight:0},I)},function(e,t){}]);
7
  //# sourceMappingURL=gutenberg-support.js.map
1
+ !function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t,n){var i,o;/*!
2
  Copyright (c) 2017 Jed Watson.
3
  Licensed under the MIT License (MIT), see
4
  http://jedwatson.github.io/classnames
5
  */
6
+ !function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var i=arguments[t];if(i){var o=typeof i;if("string"===o||"number"===o)e.push(i);else if(Array.isArray(i)&&i.length){var a=n.apply(null,i);a&&e.push(a)}else if("object"===o)for(var l in i)r.call(i,l)&&i[l]&&e.push(l)}}return e.join(" ")}var r={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(i=[],void 0!==(o=function(){return n}.apply(t,i))&&(e.exports=o))}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(2),o=n(8),r=n(18);n.n(r);Object(i.a)(),Object(o.a)()},function(e,t,n){"use strict";function i(){[o].forEach(function(e){if(e){var t=e.name,n=e.settings;r(t,n)}})}t.a=i;var o=n(3),r=wp.blocks.registerBlockType},function(e,t,n){"use strict";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"name",function(){return v}),n.d(t,"settings",function(){return k});var o=n(0),r=n.n(o),a=n(4),l=wp.element.Fragment,s=wp.i18n.__,u=wp.blocks,c=u.createBlock,p=u.getBlockAttributes,f=u.getPhrasingContentSchema,d=wp.editor.RichText,h=wp.components,m=h.Path,g=h.SVG,v="ta/image",w={url:{type:"string",source:"attribute",selector:"img",attribute:"src"},alt:{type:"string",source:"attribute",selector:"img",attribute:"alt",default:""},caption:{type:"string",source:"html",selector:"figcaption"},id:{type:"number"},align:{type:"string"},width:{type:"number"},height:{type:"number"},linkid:{type:"number"},href:{type:"string",source:"attribute",selector:"ta",attribute:"href"},affiliateLink:{type:"object"}},b={img:{attributes:["src","alt"],classes:["alignleft","aligncenter","alignright","alignnone",/^wp-image-\d+$/]}},y={figure:{require:["ta","img"],children:{ta:{attributes:["href","linkid"],children:b},figcaption:{children:f()}}}},k={title:s("ThirstyAffiliates Image"),description:s("Insert an image with an affiliate link to make a visual statement."),icon:wp.element.createElement(g,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement(m,{d:"M0,0h24v24H0V0z",fill:"none"}),wp.element.createElement(m,{d:"m19 5v14h-14v-14h14m0-2h-14c-1.1 0-2 0.9-2 2v14c0 1.1 0.9 2 2 2h14c1.1 0 2-0.9 2-2v-14c0-1.1-0.9-2-2-2z"}),wp.element.createElement(m,{d:"m14.14 11.86l-3 3.87-2.14-2.59-3 3.86h12l-3.86-5.14z"})),category:"common",keywords:["img",s("photo"),s("affiliate")],attributes:w,transforms:{from:[{type:"raw",isMatch:function(e){return"FIGURE"===e.nodeName&&!!e.querySelector("img")},schema:y,transform:function(e){var t=e.className+" "+e.querySelector("img").className,n=/(?:^|\s)align(left|center|right)(?:$|\s)/.exec(t),i=n?n[1]:void 0,o=/(?:^|\s)wp-image-(\d+)(?:$|\s)/.exec(t),r=o?Number(o[1]):void 0,a=e.querySelector("a"),l=a&&a.href?"custom":void 0,s=a&&a.href?a.href:void 0,u=a&&a.rel?a.rel:void 0,f=a&&a.className?a.className:void 0,d=p("ta/image",e.outerHTML,{align:i,id:r,linkDestination:l,linkid:linkid,href:s,rel:u,linkClass:f});return c("ta/image",d)}},{type:"files",isMatch:function(e){return 1===e.length&&0===e[0].type.indexOf("image/")},transform:function(e){var t=e[0];return c("ta/image",{url:createBlobURL(t)})}},{type:"shortcode",tag:"caption",attributes:{url:{type:"string",source:"attribute",attribute:"src",selector:"img"},alt:{type:"string",source:"attribute",attribute:"alt",selector:"img"},caption:{shortcode:function(e,t){var n=t.shortcode,i=document.implementation.createHTMLDocument(""),o=i.body;return o.innerHTML=n.content,o.removeChild(o.firstElementChild),o.innerHTML.trim()}},id:{type:"number",shortcode:function(e){var t=e.named.id;if(t)return parseInt(t.replace("attachment_",""),10)}},align:{type:"string",shortcode:function(e){var t=e.named.align;return(void 0===t?"alignnone":t).replace("align","")}},linkid:{type:"string",source:"attribute",selector:"wp-block-ta-image > ta",attribute:"linkid"},href:{type:"string",source:"attribute",selector:"ta",attribute:"href"}}}]},getEditWrapperProps:function(e){var t=e.align,n=e.width;if("left"===t||"center"===t||"right"===t||"wide"===t||"full"===t)return{"data-align":t,"data-resized":!!n}},edit:a.a,save:function(e){var t,n=e.attributes,o=n.url,a=n.alt,s=n.caption,u=n.align,c=n.width,p=n.height,f=n.id,h=n.linkid,m=n.href,g=r()((t={},i(t,"align"+u,u),i(t,"is-resized",c||p),t)),v=wp.element.createElement("img",{src:o,alt:a,className:f?"wp-image-"+f:null,width:c,height:p}),w=wp.element.createElement(l,null,wp.element.createElement("ta",{linkid:h,href:m},v),wp.element.createElement(d.Content,{tagName:"figcaption",value:s}));return"left"===u||"right"===u||"center"===u?wp.element.createElement("div",{className:"wp-block-image"},wp.element.createElement("figure",{className:g},w)):wp.element.createElement("figure",{className:"wp-block-image "+g},w)}}},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var a=n(0),l=n.n(a),s=n(5),u=n(6),c=n(7),p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},f=function(){function e(e,t){var n=[],i=!0,o=!1,r=void 0;try{for(var a,l=e[Symbol.iterator]();!(i=(a=l.next()).done)&&(n.push(a.value),!t||n.length!==t);i=!0);}catch(e){o=!0,r=e}finally{try{!i&&l.return&&l.return()}finally{if(o)throw r}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),d=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),h=lodash,m=h.get,g=h.isEmpty,v=h.map,w=h.last,b=h.pick,y=h.compact,k=wp.url.getPath,S=wp.i18n,E=S.__,_=S.sprintf,L=wp.element,O=L.Component,C=L.Fragment,I=L.createRef,T=wp.blob,R=T.getBlobByURL,P=T.revokeBlobURL,x=T.isBlobURL,A=wp.components,j=A.Placeholder,N=A.Button,F=A.ButtonGroup,W=A.IconButton,D=A.PanelBody,V=A.ResizableBox,H=A.SelectControl,z=A.Spinner,M=A.TextControl,B=A.TextareaControl,U=A.Toolbar,K=A.withNotices,q=(A.ToggleControl,A.Popover,wp.data.withSelect),G=wp.editor,$=G.RichText,Q=G.BlockControls,Z=G.InspectorControls,X=(G.MediaUpload,G.MediaUploadCheck,G.MediaPlaceholder,G.BlockAlignmentToolbar),Y=G.mediaUpload,J=wp.viewport.withViewportMatch,ee=wp.compose.compose,te=["image"],ne=function(e){var t=b(e,["alt","id","link","caption"]);return t.url=m(e,["sizes","large","url"])||m(e,["media_details","sizes","large","source_url"])||e.url,t},ie=function(e,t){return!e&&x(t)},oe=function(e){function t(e){var n=e.attributes;i(this,t);var r=o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return r.updateAlt=r.updateAlt.bind(r),r.updateAlignment=r.updateAlignment.bind(r),r.onFocusCaption=r.onFocusCaption.bind(r),r.onImageClick=r.onImageClick.bind(r),r.onSelectImage=r.onSelectImage.bind(r),r.updateImageURL=r.updateImageURL.bind(r),r.updateWidth=r.updateWidth.bind(r),r.updateHeight=r.updateHeight.bind(r),r.updateDimensions=r.updateDimensions.bind(r),r.getFilename=r.getFilename.bind(r),r.toggleIsEditing=r.toggleIsEditing.bind(r),r.onImageError=r.onImageError.bind(r),r.onChangeInputValue=r.onChangeInputValue.bind(r),r.autocompleteRef=I(),r.resetInvalidLink=r.resetInvalidLink.bind(r),r.updateImageSelection=r.updateImageSelection.bind(r),r.onSelectAffiliateImage=r.onSelectAffiliateImage.bind(r),r.editAFfiliateImage=r.editAFfiliateImage.bind(r),r.state={captionFocused:!1,isEditing:!n.url,inputValue:"",linkid:0,post:null,showSuggestions:!1,imageSelection:[],affiliateLink:null},r}return r(t,e),d(t,[{key:"componentDidMount",value:function(){var e=this,t=this.props,n=t.attributes,i=t.setAttributes,o=t.noticeOperations,r=n.id,a=n.url,l=void 0===a?"":a;if(ie(r,l)){var s=R(l);s&&Y({filesList:[s],onFileChange:function(e){var t=f(e,1),n=t[0];i(ne(n))},allowedTypes:te,onError:function(t){o.createErrorNotice(t),e.setState({isEditing:!0})}})}}},{key:"componentDidUpdate",value:function(e){var t=e.attributes,n=t.id,i=t.url,o=void 0===i?"":i,r=this.props.attributes,a=r.id,l=r.url,s=void 0===l?"":l;ie(n,o)&&!ie(a,s)&&P(s),!this.props.isSelected&&e.isSelected&&this.state.captionFocused&&this.setState({captionFocused:!1})}},{key:"onSelectImage",value:function(e){if(!e||!e.url)return void this.props.setAttributes({url:void 0,alt:void 0,id:void 0,caption:void 0});var t=this.state.affiliateLink;this.setState({isEditing:!1}),this.props.setAttributes(p({},ne(e),{linkid:t.id,href:t.link,affiliateLink:t,width:void 0,height:void 0}))}},{key:"onImageError",value:function(e){var t=Object(s.a)({attributes:{url:e}});void 0!==t&&this.props.onReplace(t)}},{key:"onFocusCaption",value:function(){this.state.captionFocused||this.setState({captionFocused:!0})}},{key:"onImageClick",value:function(){this.state.captionFocused&&this.setState({captionFocused:!1})}},{key:"updateAlt",value:function(e){this.props.setAttributes({alt:e})}},{key:"updateAlignment",value:function(e){var t=-1!==["wide","full"].indexOf(e)?{width:void 0,height:void 0}:{};this.props.setAttributes(p({},t,{align:e}))}},{key:"updateImageURL",value:function(e){this.props.setAttributes({url:e,width:void 0,height:void 0})}},{key:"updateWidth",value:function(e){this.props.setAttributes({width:parseInt(e,10)})}},{key:"updateHeight",value:function(e){this.props.setAttributes({height:parseInt(e,10)})}},{key:"updateDimensions",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;return function(){e.props.setAttributes({width:t,height:n})}}},{key:"getFilename",value:function(e){var t=k(e);if(t)return w(t.split("/"))}},{key:"getLinkDestinationOptions",value:function(){return[{value:"none",label:E("None")},{value:"media",label:E("Media File")},{value:"attachment",label:E("Attachment Page")},{value:"custom",label:E("Custom URL")}]}},{key:"toggleIsEditing",value:function(){this.setState({isEditing:!this.state.isEditing})}},{key:"getImageSizeOptions",value:function(){var e=this.props,t=e.imageSizes,n=e.image;return y(v(t,function(e){var t=e.name,i=e.slug,o=m(n,["media_details","sizes",i,"source_url"]);return o?{value:o,label:t}:null}))}},{key:"onChangeInputValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=t?t.id:0;this.setState({inputValue:e,linkid:n,post:t})}},{key:"resetInvalidLink",value:function(){this.setState({invalidLink:!1})}},{key:"updateImageSelection",value:function(e,t){this.setState({imageSelection:e,affiliateLink:t})}},{key:"onSelectAffiliateImage",value:function(e){var t=this;wp.apiFetch({path:wp.url.addQueryArgs("wp/v2/media/"+e.id,{context:"edit",_locale:"user"})}).then(function(e){e.url=e.source_url,t.onSelectImage(e)})}},{key:"editAFfiliateImage",value:function(){var e=this.props.attributes,t=e.affiliateLink;this.setState({isEditing:!0,imageSelection:t.images,affiliateLink:t})}},{key:"render",value:function(){var e=this,t=this.state,n=t.isEditing,i=t.imageSelection,o=t.affiliateLink,r=this.props,a=r.attributes,s=r.setAttributes,p=r.isLargeViewport,f=r.isSelected,d=r.className,h=r.maxWidth,m=r.toggleSelection,v=r.isRTL,w=a.url,b=a.alt,y=a.caption,k=a.align,S=(a.linkDestination,a.width),L=a.height,O=a.linkid,I=a.href,T=wp.element.createElement(U,null,wp.element.createElement(W,{className:"ta-edit-image-button components-icon-button components-toolbar__control",label:E("Edit ThirstyAffiliates Image"),icon:"edit",onClick:this.editAFfiliateImage})),R=wp.element.createElement(Q,null,wp.element.createElement(X,{value:k,onChange:this.updateAlignment}),T);if(n)return wp.element.createElement(C,null,R,wp.element.createElement(j,{icon:"format-image",label:E("ThirstyAffiliates Image"),instructions:E("Search for an affiliate link and select image to insert.")},wp.element.createElement(c.a,{updateImageSelection:this.updateImageSelection}),!!i.length&&wp.element.createElement("div",{className:"ta-image-sel-wrap"},wp.element.createElement("h3",null,o.title+" "+E("attached images:")),wp.element.createElement("div",{className:"ta-image-selection"},i.map(function(t,n){return wp.element.createElement("button",{onClick:function(){return e.onSelectAffiliateImage(t)}},wp.element.createElement("img",{src:t.src}))})))));var P=l()(d,{"wp-block-image":!0,"is-transient":x(w),"is-resized":!!S||!!L,"is-focused":f}),A=-1===["wide","full"].indexOf(k)&&p,K=this.getImageSizeOptions(),q=function(t,n){return wp.element.createElement(Z,null,wp.element.createElement(D,{title:E("Image Settings")},wp.element.createElement(B,{label:E("Alt Text (Alternative Text)"),value:b,onChange:e.updateAlt,help:E("Alternative text describes your image to people who can’t see it. Add a short description with its key details.")}),!g(K)&&wp.element.createElement(H,{label:E("Image Size"),value:w,options:K,onChange:e.updateImageURL}),A&&wp.element.createElement("div",{className:"block-library-image__dimensions"},wp.element.createElement("p",{className:"block-library-image__dimensions__row"},E("Image Dimensions")),wp.element.createElement("div",{className:"block-library-image__dimensions__row"},wp.element.createElement(M,{type:"number",className:"block-library-image__dimensions__width",label:E("Width"),value:void 0!==S?S:"",placeholder:t,min:1,onChange:e.updateWidth}),wp.element.createElement(M,{type:"number",className:"block-library-image__dimensions__height",label:E("Height"),value:void 0!==L?L:"",placeholder:n,min:1,onChange:e.updateHeight})),wp.element.createElement("div",{className:"block-library-image__dimensions__row"},wp.element.createElement(F,{"aria-label":E("Image Size")},[25,50,75,100].map(function(i){var o=Math.round(t*(i/100)),r=Math.round(n*(i/100)),a=S===o&&L===r;return wp.element.createElement(N,{key:i,isSmall:!0,isPrimary:a,"aria-pressed":a,onClick:e.updateDimensions(o,r)},i,"%")})),wp.element.createElement(N,{isSmall:!0,onClick:e.updateDimensions()},E("Reset"))))))};return wp.element.createElement(C,null,R,wp.element.createElement("figure",{className:P},wp.element.createElement(u.a,{src:w,dirtynessTrigger:k},function(t){var n=t.imageWidthWithinContainer,i=t.imageHeightWithinContainer,o=t.imageWidth,r=t.imageHeight,a=e.getFilename(w),l=void 0;l=b||(a?_(E("This image has an empty alt attribute; its file name is %s"),a):E("This image has an empty alt attribute"));var u=wp.element.createElement(C,null,wp.element.createElement("ta",{linkid:O,href:I},wp.element.createElement("img",{src:w,alt:l,onClick:e.onImageClick,onError:function(){return e.onImageError(w)}})),x(w)&&wp.element.createElement(z,null));if(!A||!n)return wp.element.createElement(C,null,q(o,r),wp.element.createElement("div",{style:{width:S,height:L}},u));var c=S||n,p=L||i,f=o/r,d=o<r?20:20*f,g=r<o?20:20/f,y=2.5*h,T=!1,R=!1;return"center"===k?(T=!0,R=!0):v?"left"===k?T=!0:R=!0:"right"===k?R=!0:T=!0,wp.element.createElement(C,null,q(o,r),wp.element.createElement(V,{size:S&&L?{width:S,height:L}:void 0,minWidth:d,maxWidth:y,minHeight:g,maxHeight:y/f,lockAspectRatio:!0,enable:{top:!1,right:T,bottom:!0,left:R},onResizeStart:function(){m(!1)},onResizeStop:function(e,t,n,i){s({width:parseInt(c+i.width,10),height:parseInt(p+i.height,10)}),m(!0)}},u))}),(!$.isEmpty(y)||f)&&wp.element.createElement($,{tagName:"figcaption",placeholder:E("Write caption…"),value:y,unstableOnFocus:this.onFocusCaption,onChange:function(e){return s({caption:e})},isSelected:this.state.captionFocused,inlineToolbar:!0})))}}]),t}(O);t.a=ee([q(function(e,t){var n=e("core"),i=n.getMedia,o=e("core/editor"),r=o.getEditorSettings,a=t.attributes.id,l=r(),s=l.maxWidth,u=l.isRTL,c=l.imageSizes;return{image:a?i(a):null,maxWidth:s,isRTL:u,imageSizes:c}}),J({isLargeViewport:"medium"}),K])(oe)},function(e,t,n){"use strict";n.d(t,"a",function(){return l});var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},o=lodash,r=o.includes,a=(wp.element.renderToString,wp.blocks.createBlock),l=function(e,t){var n=e.preview,o=e.name,r=e.attributes.url;if(r){var l=findBlock(r);if("core-embed/wordpress"!==o&&DEFAULT_EMBED_BLOCK!==l&&o!==l)return a(l,{url:r});if(n){var u=n.html;if(s(u)&&"core-embed/wordpress"!==o)return a("core-embed/wordpress",i({url:r},t))}}},s=function(e){return r(e,'class="wp-embedded-content" data-secret')}},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=lodash,s=l.noop,u=wp.compose.withGlobalEvents,c=wp.element.Component,p=function(e){function t(){i(this,t);var e=o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.state={width:void 0,height:void 0},e.bindContainer=e.bindContainer.bind(e),e.calculateSize=e.calculateSize.bind(e),e}return r(t,e),a(t,[{key:"bindContainer",value:function(e){this.container=e}},{key:"componentDidUpdate",value:function(e){this.props.src!==e.src&&(this.setState({width:void 0,height:void 0}),this.fetchImageSize()),this.props.dirtynessTrigger!==e.dirtynessTrigger&&this.calculateSize()}},{key:"componentDidMount",value:function(){this.fetchImageSize()}},{key:"componentWillUnmount",value:function(){this.image&&(this.image.onload=s)}},{key:"fetchImageSize",value:function(){this.image=new window.Image,this.image.onload=this.calculateSize,this.image.src=this.props.src}},{key:"calculateSize",value:function(){var e=this.container.clientWidth,t=this.image.width>e,n=this.image.height/this.image.width,i=t?e:this.image.width,o=t?e*n:this.image.height;this.setState({width:i,height:o})}},{key:"render",value:function(){var e={imageWidth:this.image&&this.image.width,imageHeight:this.image&&this.image.height,containerWidth:this.container&&this.container.clientWidth,containerHeight:this.container&&this.container.clientHeight,imageWidthWithinContainer:this.state.width,imageHeightWithinContainer:this.state.height};return wp.element.createElement("div",{ref:this.bindContainer},this.props.children(e))}}]),t}(c);t.a=u({resize:"calculateSize"})(p)},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var a=n(0),l=n.n(a),s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=wp.i18n.__,c=wp.element,p=c.Component,f=c.createRef,d=wp.components,h=d.Spinner,m=d.withSpokenMessages,g=d.Popover,v=d.TextControl,w=wp.compose.withInstanceId,b=function(e){function t(e){var n=e.autocompleteRef;i(this,t);var r=o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return r.autocompleteRef=n||f(),r.inputRef=f(),r.searchAffiliateLinks=r.searchAffiliateLinks.bind(r),r.suggestionNodes=[],r.state={posts:[],showSuggestions:!1,selectedSuggestion:null,loading:!1},r}return r(t,e),s(t,[{key:"componentDidUpdate",value:function(){var e=this,t=this.state,n=t.showSuggestions,i=t.selectedSuggestion;n&&null!==i&&!this.scrollingIntoView&&(this.scrollingIntoView=!0,scrollIntoView(this.suggestionNodes[i],this.autocompleteRef.current,{onlyScrollIfNeeded:!0}),setTimeout(function(){e.scrollingIntoView=!1},100))}},{key:"componentWillUnmount",value:function(){delete this.suggestionsRequest}},{key:"bindSuggestionNode",value:function(e){var t=this;return function(n){t.suggestionNodes[e]=n}}},{key:"searchAffiliateLinks",value:function(e){var t=this;if(e.length<2)return void this.setState({showSuggestions:!1,selectedSuggestion:null,loading:!1});this.setState({showSuggestions:!0,selectedSuggestion:null,loading:!0});var n=new FormData;n.append("action","search_affiliate_links_query"),n.append("keyword",e),n.append("paged",1),n.append("gutenberg",!0),n.append("with_images",!0);var i=fetch(ajaxurl,{method:"POST",body:n});i.then(function(e){return e.json()}).then(function(e){if(e.affiliate_links){var n=e.affiliate_links;t.suggestionsRequest===i&&(t.setState({posts:n,loading:!1}),n.length?t.props.debouncedSpeak(sprintf(_n("%d result found, use up and down arrow keys to navigate.","%d results found, use up and down arrow keys to navigate.",n.length),n.length),"assertive"):t.props.debouncedSpeak(u("No results."),"assertive"))}}).catch(function(){t.suggestionsRequest===i&&t.setState({loading:!1})}),this.suggestionsRequest=i}},{key:"selectLink",value:function(e){this.setState({selectedSuggestion:e,showSuggestions:!1}),this.props.updateImageSelection(e.images,e)}},{key:"handleOnClick",value:function(e){this.selectLink(e)}},{key:"render",value:function(){var e=this,t=this.props,n=(t.value,t.autoFocus,t.instanceId),i=this.state,o=i.showSuggestions,r=i.posts,a=i.selectedSuggestion,s=i.loading;return wp.element.createElement("div",{class:"edit-search-affiliate-links"},wp.element.createElement("form",{className:"editor-format-toolbar__link-container-content ta-link-search-popover",onSubmit:this.displayAffiliateImages},wp.element.createElement(v,{type:"text",className:"ta-search-affiliate-links",placeholder:u("Type to search affiliate links"),onChange:this.searchAffiliateLinks,autocomplete:"off"}),s&&wp.element.createElement(h,null),o&&!!r.length&&wp.element.createElement(g,{position:"bottom",focusOnMount:!1},wp.element.createElement("div",{class:"affilate-links-suggestions"},r.map(function(t,i){return wp.element.createElement("button",{key:t.id,role:"option",tabIndex:"-1",id:"editor-url-input-suggestion-"+n+"-"+i,ref:e.bindSuggestionNode(i),className:l()("editor-url-input__suggestion",{"is-selected":i===a}),onClick:function(){return e.handleOnClick(t)},"aria-selected":i===a},t.title||u("(no title)"))})))))}}]),t}(p);t.a=m(w(b))},function(e,t,n){"use strict";function i(e,t){var n={};for(var i in e)t.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(e,i)&&(n[i]=e[i]);return n}function o(){[r.a].forEach(function(e){var t=e.name,n=i(e,["name"]);return a(t,n)})}t.a=o;var r=n(9),a=wp.richText.registerFormatType},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}n.d(t,"a",function(){return L});var a=n(10),l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=wp.i18n.__,u=wp.element,c=u.Component,p=u.Fragment,f=wp.components.withSpokenMessages,d=wp.richText,h=d.getTextContent,m=d.applyFormat,g=d.removeFormat,v=d.slice,w=wp.url.isURL,b=wp.editor,y=b.RichTextToolbarButton,k=b.RichTextShortcut,S=wp.components,E=S.Path,_=S.SVG,L={name:"ta/link",title:s("Affiliate Link"),tagName:"ta",className:null,attributes:{url:"href",target:"target"},edit:f(function(e){function t(){i(this,t);var e=o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.addLink=e.addLink.bind(e),e.stopAddingLink=e.stopAddingLink.bind(e),e.onRemoveFormat=e.onRemoveFormat.bind(e),e.state={addingLink:!1},e}return r(t,e),l(t,[{key:"addLink",value:function(){var e=this.props,t=e.value,n=e.onChange,i=h(v(t));i&&w(i)?n(m(t,{type:"ta/link",attributes:{url:i}})):this.setState({addingLink:!0})}},{key:"stopAddingLink",value:function(){this.setState({addingLink:!1})}},{key:"onRemoveFormat",value:function(){var e=this.props,t=e.value,n=e.onChange,i=e.speak;n(g(t,"ta/link")),i(s("Affiliate Link removed."),"assertive")}},{key:"render",value:function(){var e=this.props,t=e.isActive,n=e.activeAttributes,i=e.value,o=e.onChange;return wp.element.createElement(p,null,wp.element.createElement(k,{type:"access",character:"s",onUse:this.onRemoveFormat}),wp.element.createElement(k,{type:"primary",character:"l",onUse:this.addLink}),wp.element.createElement(k,{type:"primaryShift",character:"l",onUse:this.onRemoveFormat}),t&&wp.element.createElement(y,{icon:"editor-unlink",title:s("Remove Affiliate Link"),className:"ta-unlink-button",onClick:this.onRemoveFormat,isActive:t,shortcutType:"primaryShift",shortcutCharacter:"l"}),!t&&wp.element.createElement(y,{icon:wp.element.createElement(_,{xmlns:"http://www.w3.org/2000/svg",width:"16.688",height:"9.875",viewBox:"0 0 16.688 9.875"},wp.element.createElement(E,{id:"TA.svg",fill:"black",class:"cls-1",d:"M2.115,15.12H4.847L6.836,7.7H9.777l0.63-2.381H1.821L1.177,7.7H4.118Zm4.758,0H9.829l1.177-1.751h3.782l0.238,1.751h2.858L16.357,5.245H13.7Zm5.5-3.866,1.835-2.816,0.35,2.816H12.378Z",transform:"translate(-1.188 -5.25)"})),title:s("Affiliate Link"),className:"ta-link-button",onClick:this.addLink,shortcutType:"primary",shortcutCharacter:"l"}),wp.element.createElement(a.a,{addingLink:this.state.addingLink,stopAddingLink:this.stopAddingLink,isActive:t,activeAttributes:n,value:i,onChange:o}))}}]),t}(c))}},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e){var t=e.url,n=e.linkid;e.text;return{type:"ta/link",attributes:{url:t,linkid:n.toString()}}}function l(e,t){return e.addingLink||t.editLink}var s=n(0),u=n.n(s),c=n(11),p=n(12),f=n(13),d=n(14),h=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),m=wp.i18n.__,g=wp.element,v=g.Component,w=g.createRef,b=wp.components,y=b.ExternalLink,k=(b.ToggleControl,b.IconButton),S=b.withSpokenMessages,E=wp.keycodes,_=E.LEFT,L=E.RIGHT,O=E.UP,C=E.DOWN,I=E.BACKSPACE,T=E.ENTER,R=wp.url,P=R.prependHTTP,x=R.safeDecodeURI,A=R.filterURLForDisplay,j=wp.richText,N=j.create,F=j.insert,W=j.isCollapsed,D=j.applyFormat,V=j.getTextContent,H=j.slice,z=function(e){return e.stopPropagation()},M=function(e){var t=e.value,n=e.onChangeInputValue,i=e.onKeyDown,o=e.submitLink,r=e.invalidLink,a=e.resetInvalidLink,l=e.autocompleteRef;return wp.element.createElement("form",{className:"editor-format-toolbar__link-container-content ta-link-search-popover",onKeyPress:z,onKeyDown:i,onSubmit:o},wp.element.createElement(d.a,{value:t,onChange:n,autocompleteRef:l,invalidLink:r,resetInvalidLink:a}),wp.element.createElement(k,{icon:"editor-break",label:m("Apply"),type:"submit"}))},B=function(e){var t=e.url,n=P(t),i=u()("editor-format-toolbar__link-container-value",{"has-invalid-link":!Object(p.a)(n)});return t?wp.element.createElement(y,{className:i,href:t},A(x(t))):wp.element.createElement("span",{className:i})},U=function(e){var t=e.url,n=e.editLink;return wp.element.createElement("div",{className:"editor-format-toolbar__link-container-content",onKeyPress:z},wp.element.createElement(B,{url:t}),wp.element.createElement(k,{icon:"edit",label:m("Edit"),onClick:n}))},K=function(e){function t(){i(this,t);var e=o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.editLink=e.editLink.bind(e),e.submitLink=e.submitLink.bind(e),e.onKeyDown=e.onKeyDown.bind(e),e.onChangeInputValue=e.onChangeInputValue.bind(e),e.onClickOutside=e.onClickOutside.bind(e),e.resetState=e.resetState.bind(e),e.autocompleteRef=w(),e.resetInvalidLink=e.resetInvalidLink.bind(e),e.state={inputValue:"",linkid:0,post:null,invalidLink:!1},e}return r(t,e),h(t,[{key:"onKeyDown",value:function(e){[_,C,L,O,I,T].indexOf(e.keyCode)>-1&&e.stopPropagation()}},{key:"onChangeInputValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=t?t.id:0;this.setState({inputValue:e,linkid:n,post:t})}},{key:"editLink",value:function(e){this.setState({editLink:!0}),e.preventDefault()}},{key:"submitLink",value:function(e){var t=this.props,n=t.isActive,i=t.value,o=t.onChange,r=t.speak,l=this.state,s=l.inputValue,u=l.linkid,c=l.post,f=P(s),d=V(H(i)),h=a({url:f,linkid:u,text:d});if(e.preventDefault(),!u||!c)return void this.setState({invalidLink:!0});if(W(i)&&!n){var g=D(N({text:c.title}),h,0,f.length);o(F(i,g))}else o(D(i,h));this.resetState(),Object(p.a)(f)?n?r(m("Link edited."),"assertive"):r(m("Link inserted"),"assertive"):r(m("Warning: the link has been inserted but may have errors. Please test it."),"assertive")}},{key:"onClickOutside",value:function(e){var t=this.autocompleteRef.current;t&&t.contains(e.target)||this.resetState()}},{key:"resetState",value:function(){this.props.stopAddingLink(),this.setState({inputValue:"",editLink:!1}),this.resetInvalidLink()}},{key:"resetInvalidLink",value:function(){this.setState({invalidLink:!1})}},{key:"render",value:function(){var e=this.props,t=e.isActive,n=e.activeAttributes,i=n.url,o=(n.linkid,e.addingLink),r=e.value;e.onChange;if(!t&&!o)return null;var a=this.state,s=a.inputValue,u=a.invalidLink,p=l(this.props,this.state);return wp.element.createElement(c.a,{key:""+r.start+r.end},wp.element.createElement(f.a,{onClickOutside:this.onClickOutside,onClose:this.resetState,focusOnMount:!!p&&"firstElement",invalidLink:u},p?wp.element.createElement(M,{value:s,onChangeInputValue:this.onChangeInputValue,onKeyDown:this.onKeyDown,submitLink:this.submitLink,autocompleteRef:this.autocompleteRef,updateLinkId:this.updateLinkId,invalidLink:u,resetInvalidLink:this.resetInvalidLink}):wp.element.createElement(U,{url:i,editLink:this.editLink})))}}]),t}(v);t.a=S(K)},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(){var e=window.getSelection();if(0===e.rangeCount)return{};var t=p(e.getRangeAt(0)),n=t.top+t.height,i=t.left+t.width/2,o=c(e.anchorNode);if(o){var r=o.getBoundingClientRect();n-=r.top,i-=r.left}return{top:n,left:i}}var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=wp.element.Component,u=wp.dom,c=u.getOffsetParent,p=u.getRectangleFromRange,f=function(e){function t(){i(this,t);var e=o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.state={style:a()},e}return r(t,e),l(t,[{key:"render",value:function(){var e=this.props.children,t=this.state.style;return wp.element.createElement("div",{className:"editor-format-toolbar__selection-position",style:t},e)}}]),t}(s);t.a=f},function(e,t,n){"use strict";function i(e){if(!e)return!1;var t=e.trim();if(!t)return!1;if(/^\S+:/.test(t)){var n=l(t);if(!s(n))return!1;if(r(n,"http")&&!/^https?:\/\/[^\/\s]/i.test(t))return!1;var i=u(t);if(!c(i))return!1;var o=p(t);if(o&&!f(o))return!1;var a=d(t);if(a&&!h(a))return!1;var v=m(t);if(v&&!g(v))return!1}return!(r(t,"#")&&!g(t))}t.a=i;var o=lodash,r=o.startsWith,a=wp.url,l=a.getProtocol,s=a.isValidProtocol,u=a.getAuthority,c=a.isValidAuthority,p=a.getPath,f=a.isValidPath,d=a.getQueryString,h=a.isValidQueryString,m=a.getFragment,g=a.isValidFragment},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=wp.i18n.__,s=wp.element.Component,u=wp.components,c=u.Popover,p=u.IconButton,f=function(e){function t(){i(this,t);var e=o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.toggleSettingsVisibility=e.toggleSettingsVisibility.bind(e),e.state={isSettingsExpanded:!1},e}return r(t,e),a(t,[{key:"toggleSettingsVisibility",value:function(){this.setState({isSettingsExpanded:!this.state.isSettingsExpanded})}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.renderSettings,i=e.onClose,o=e.onClickOutside,r=e.invalidLink,a=e.position,s=void 0===a?"bottom center":a,u=e.focusOnMount,f=void 0===u?"firstElement":u,d=this.state.isSettingsExpanded,h=!!n&&d;return wp.element.createElement(c,{className:"ta-url-popover editor-url-popover",focusOnMount:f,position:s,onClose:i,onClickOutside:o},wp.element.createElement("div",{className:"editor-url-popover__row"},t,!!n&&wp.element.createElement(p,{className:"editor-url-popover__settings-toggle",icon:"ellipsis",label:l("Link Settings"),onClick:this.toggleSettingsVisibility,"aria-expanded":d})),h&&wp.element.createElement("div",{className:"editor-url-popover__row editor-url-popover__settings"},n()),r&&wp.element.createElement("div",{class:"ta-invalid-link"},l("Invalid affiliate link")))}}]),t}(s);t.a=f},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var a=n(0),l=n.n(a),s=n(15),u=n.n(s),c=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),p=wp.i18n.__,f=lodash,d=f.throttle,h=wp.element,m=h.Component,g=h.createRef,v=wp.keycodes,w=v.UP,b=v.DOWN,y=v.ENTER,k=v.TAB,S=wp.components,E=S.Spinner,_=S.withSpokenMessages,L=S.Popover,O=wp.compose.withInstanceId,C=function(e){return e.stopPropagation()},I=function(e){function t(e){var n=e.autocompleteRef;i(this,t);var r=o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return r.onChange=r.onChange.bind(r),r.onKeyDown=r.onKeyDown.bind(r),r.autocompleteRef=n||g(),r.inputRef=g(),r.updateSuggestions=d(r.updateSuggestions.bind(r),200),r.suggestionNodes=[],r.state={posts:[],showSuggestions:!1,selectedSuggestion:null},r}return r(t,e),c(t,[{key:"componentDidUpdate",value:function(){var e=this,t=this.state,n=t.showSuggestions,i=t.selectedSuggestion;n&&null!==i&&!this.scrollingIntoView&&(this.scrollingIntoView=!0,u()(this.suggestionNodes[i],this.autocompleteRef.current,{onlyScrollIfNeeded:!0}),setTimeout(function(){e.scrollingIntoView=!1},100))}},{key:"componentWillUnmount",value:function(){delete this.suggestionsRequest}},{key:"bindSuggestionNode",value:function(e){var t=this;return function(n){t.suggestionNodes[e]=n}}},{key:"updateSuggestions",value:function(e){var t=this;if(e.length<2||/^https?:/.test(e))return void this.setState({showSuggestions:!1,selectedSuggestion:null,loading:!1});this.setState({showSuggestions:!0,selectedSuggestion:null,loading:!0});var n=new FormData;n.append("action","search_affiliate_links_query"),n.append("keyword",e),n.append("paged",1),n.append("gutenberg",!0);var i=fetch(ajaxurl,{method:"POST",body:n});i.then(function(e){return e.json()}).then(function(e){if(e.affiliate_links){var n=e.affiliate_links;t.suggestionsRequest===i&&(t.setState({posts:n,loading:!1}),n.length?t.props.debouncedSpeak(sprintf(_n("%d result found, use up and down arrow keys to navigate.","%d results found, use up and down arrow keys to navigate.",n.length),n.length),"assertive"):t.props.debouncedSpeak(p("No results."),"assertive"))}}).catch(function(){t.suggestionsRequest===i&&t.setState({loading:!1})}),this.suggestionsRequest=i}},{key:"onChange",value:function(e){this.props.resetInvalidLink();var t=e.target.value;this.props.onChange(t),this.updateSuggestions(t)}},{key:"onKeyDown",value:function(e){var t=this.state,n=t.showSuggestions,i=t.selectedSuggestion,o=t.posts,r=t.loading;if(n&&o.length&&!r){var a=this.state.posts[this.state.selectedSuggestion];switch(e.keyCode){case w:e.stopPropagation(),e.preventDefault();var l=i?i-1:o.length-1;this.setState({selectedSuggestion:l});break;case b:e.stopPropagation(),e.preventDefault();var s=null===i||i===o.length-1?0:i+1;this.setState({selectedSuggestion:s});break;case k:null!==this.state.selectedSuggestion&&(this.selectLink(a),this.props.speak(p("Link selected")));break;case y:null!==this.state.selectedSuggestion&&(e.stopPropagation(),this.selectLink(a))}}else switch(e.keyCode){case w:0!==e.target.selectionStart&&(e.stopPropagation(),e.preventDefault(),e.target.setSelectionRange(0,0));break;case b:this.props.value.length!==e.target.selectionStart&&(e.stopPropagation(),e.preventDefault(),e.target.setSelectionRange(this.props.value.length,this.props.value.length))}}},{key:"selectLink",value:function(e){this.props.onChange(e.link,e),this.setState({selectedSuggestion:null,showSuggestions:!1})}},{key:"handleOnClick",value:function(e){this.selectLink(e),this.inputRef.current.focus()}},{key:"render",value:function(){var e=this,t=this.props,n=t.value,i=void 0===n?"":n,o=t.autoFocus,r=void 0===o||o,a=t.instanceId,s=t.invalidLink,u=this.state,c=u.showSuggestions,f=u.posts,d=u.selectedSuggestion,h=u.loading;return wp.element.createElement("div",{className:"editor-url-input"},wp.element.createElement("input",{autoFocus:r,type:"text","aria-label":p("URL"),required:!0,value:i,onChange:this.onChange,onInput:C,placeholder:p("Paste URL or type to search"),onKeyDown:this.onKeyDown,role:"combobox","aria-expanded":c,"aria-autocomplete":"list","aria-owns":"editor-url-input-suggestions-"+a,"aria-activedescendant":null!==d?"editor-url-input-suggestion-"+a+"-"+d:void 0,ref:this.inputRef}),h&&wp.element.createElement(E,null),c&&!!f.length&&!s&&wp.element.createElement(L,{position:"bottom",noArrow:!0,focusOnMount:!1},wp.element.createElement("div",{className:"editor-url-input__suggestions",id:"editor-url-input-suggestions-"+a,ref:this.autocompleteRef,role:"listbox"},f.map(function(t,n){return wp.element.createElement("button",{key:t.id,role:"option",tabIndex:"-1",id:"editor-url-input-suggestion-"+a+"-"+n,ref:e.bindSuggestionNode(n),className:l()("editor-url-input__suggestion",{"is-selected":n===d}),onClick:function(){return e.handleOnClick(t)},"aria-selected":n===d},t.title||p("(no title)"))}))))}}]),t}(m);t.a=_(O(I))},function(e,t,n){"use strict";e.exports=n(16)},function(e,t,n){"use strict";function i(e,t,n){n=n||{},9===t.nodeType&&(t=o.getWindow(t));var i=n.allowHorizontalScroll,r=n.onlyScrollIfNeeded,a=n.alignWithTop,l=n.alignWithLeft,s=n.offsetTop||0,u=n.offsetLeft||0,c=n.offsetBottom||0,p=n.offsetRight||0;i=void 0===i||i;var f=o.isWindow(t),d=o.offset(e),h=o.outerHeight(e),m=o.outerWidth(e),g=void 0,v=void 0,w=void 0,b=void 0,y=void 0,k=void 0,S=void 0,E=void 0,_=void 0,L=void 0;f?(S=t,L=o.height(S),_=o.width(S),E={left:o.scrollLeft(S),top:o.scrollTop(S)},y={left:d.left-E.left-u,top:d.top-E.top-s},k={left:d.left+m-(E.left+_)+p,top:d.top+h-(E.top+L)+c},b=E):(g=o.offset(t),v=t.clientHeight,w=t.clientWidth,b={left:t.scrollLeft,top:t.scrollTop},y={left:d.left-(g.left+(parseFloat(o.css(t,"borderLeftWidth"))||0))-u,top:d.top-(g.top+(parseFloat(o.css(t,"borderTopWidth"))||0))-s},k={left:d.left+m-(g.left+w+(parseFloat(o.css(t,"borderRightWidth"))||0))+p,top:d.top+h-(g.top+v+(parseFloat(o.css(t,"borderBottomWidth"))||0))+c}),y.top<0||k.top>0?!0===a?o.scrollTop(t,b.top+y.top):!1===a?o.scrollTop(t,b.top+k.top):y.top<0?o.scrollTop(t,b.top+y.top):o.scrollTop(t,b.top+k.top):r||(a=void 0===a||!!a,a?o.scrollTop(t,b.top+y.top):o.scrollTop(t,b.top+k.top)),i&&(y.left<0||k.left>0?!0===l?o.scrollLeft(t,b.left+y.left):!1===l?o.scrollLeft(t,b.left+k.left):y.left<0?o.scrollLeft(t,b.left+y.left):o.scrollLeft(t,b.left+k.left):r||(l=void 0===l||!!l,l?o.scrollLeft(t,b.left+y.left):o.scrollLeft(t,b.left+k.left)))}var o=n(17);e.exports=i},function(e,t,n){"use strict";function i(e){var t=void 0,n=void 0,i=void 0,o=e.ownerDocument,r=o.body,a=o&&o.documentElement;return t=e.getBoundingClientRect(),n=t.left,i=t.top,n-=a.clientLeft||r.clientLeft||0,i-=a.clientTop||r.clientTop||0,{left:n,top:i}}function o(e,t){var n=e["page"+(t?"Y":"X")+"Offset"],i="scroll"+(t?"Top":"Left");if("number"!=typeof n){var o=e.document;n=o.documentElement[i],"number"!=typeof n&&(n=o.body[i])}return n}function r(e){return o(e)}function a(e){return o(e,!0)}function l(e){var t=i(e),n=e.ownerDocument,o=n.defaultView||n.parentWindow;return t.left+=r(o),t.top+=a(o),t}function s(e,t,n){var i="",o=e.ownerDocument,r=n||o.defaultView.getComputedStyle(e,null);return r&&(i=r.getPropertyValue(t)||r[t]),i}function u(e,t){var n=e[_]&&e[_][t];if(S.test(n)&&!E.test(t)){var i=e.style,o=i[O],r=e[L][O];e[L][O]=e[_][O],i[O]="fontSize"===t?"1em":n||0,n=i.pixelLeft+C,i[O]=o,e[L][O]=r}return""===n?"auto":n}function c(e,t){for(var n=0;n<e.length;n++)t(e[n])}function p(e){return"border-box"===I(e,"boxSizing")}function f(e,t,n){var i={},o=e.style,r=void 0;for(r in t)t.hasOwnProperty(r)&&(i[r]=o[r],o[r]=t[r]);n.call(e);for(r in t)t.hasOwnProperty(r)&&(o[r]=i[r])}function d(e,t,n){var i=0,o=void 0,r=void 0,a=void 0;for(r=0;r<t.length;r++)if(o=t[r])for(a=0;a<n.length;a++){var l=void 0;l="border"===o?o+n[a]+"Width":o+n[a],i+=parseFloat(I(e,l))||0}return i}function h(e){return null!=e&&e==e.window}function m(e,t,n){if(h(e))return"width"===t?A.viewportWidth(e):A.viewportHeight(e);if(9===e.nodeType)return"width"===t?A.docWidth(e):A.docHeight(e);var i="width"===t?["Left","Right"]:["Top","Bottom"],o="width"===t?e.offsetWidth:e.offsetHeight,r=I(e),a=p(e,r),l=0;(null==o||o<=0)&&(o=void 0,l=I(e,t),(null==l||Number(l)<0)&&(l=e.style[t]||0),l=parseFloat(l)||0),void 0===n&&(n=a?x:R);var s=void 0!==o||a,u=o||l;if(n===R)return s?u-d(e,["border","padding"],i,r):l;if(s){var c=n===P?-d(e,["border"],i,r):d(e,["margin"],i,r);return u+(n===x?0:c)}return l+d(e,T.slice(n),i,r)}function g(e){var t=void 0,n=arguments;return 0!==e.offsetWidth?t=m.apply(void 0,n):f(e,j,function(){t=m.apply(void 0,n)}),t}function v(e,t,n){var i=n;{if("object"!==(void 0===t?"undefined":y(t)))return void 0!==i?("number"==typeof i&&(i+="px"),void(e.style[t]=i)):I(e,t);for(var o in t)t.hasOwnProperty(o)&&v(e,o,t[o])}}function w(e,t){"static"===v(e,"position")&&(e.style.position="relative");var n=l(e),i={},o=void 0,r=void 0;for(r in t)t.hasOwnProperty(r)&&(o=parseFloat(v(e,r))||0,i[r]=o+t[r]-n[r]);v(e,i)}var b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},k=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,S=new RegExp("^("+k+")(?!px)[a-z%]+$","i"),E=/^(top|right|bottom|left)$/,_="currentStyle",L="runtimeStyle",O="left",C="px",I=void 0;"undefined"!=typeof window&&(I=window.getComputedStyle?s:u);var T=["margin","border","padding"],R=-1,P=2,x=1,A={};c(["Width","Height"],function(e){A["doc"+e]=function(t){var n=t.document;return Math.max(n.documentElement["scroll"+e],n.body["scroll"+e],A["viewport"+e](n))},A["viewport"+e]=function(t){var n="client"+e,i=t.document,o=i.body,r=i.documentElement,a=r[n];return"CSS1Compat"===i.compatMode&&a||o&&o[n]||a}});var j={position:"absolute",visibility:"hidden",display:"block"};c(["width","height"],function(e){var t=e.charAt(0).toUpperCase()+e.slice(1);A["outer"+t]=function(t,n){return t&&g(t,e,n?0:x)};var n="width"===e?["Left","Right"]:["Top","Bottom"];A[e]=function(t,i){if(void 0===i)return t&&g(t,e,R);if(t){var o=I(t);return p(t)&&(i+=d(t,["padding","border"],n,o)),v(t,e,i)}}}),e.exports=b({getWindow:function(e){var t=e.ownerDocument||e;return t.defaultView||t.parentWindow},offset:function(e,t){if(void 0===t)return l(e);w(e,t)},isWindow:h,each:c,css:v,clone:function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);if(e.overflow)for(var n in e)e.hasOwnProperty(n)&&(t.overflow[n]=e.overflow[n]);return t},scrollLeft:function(e,t){if(h(e)){if(void 0===t)return r(e);window.scrollTo(t,a(e))}else{if(void 0===t)return e.scrollLeft;e.scrollLeft=t}},scrollTop:function(e,t){if(h(e)){if(void 0===t)return a(e);window.scrollTo(r(e),t)}else{if(void 0===t)return e.scrollTop;e.scrollTop=t}},viewportWidth:0,viewportHeight:0},A)},function(e,t){}]);
7
  //# sourceMappingURL=gutenberg-support.js.map
js/app/gutenberg_support/dist/gutenberg-support.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///gutenberg-support.js","webpack:///webpack/bootstrap 915a0b557807f732895a","webpack:///./node_modules/classnames/index.js","webpack:///./src/index.js","webpack:///./src/blocks/index.js","webpack:///./src/formats/index.js","webpack:///./src/formats/ta-link/index.js","webpack:///./src/formats/ta-link/inline.js","webpack:///./src/formats/ta-link/positioned-at-selection.js","webpack:///./src/formats/ta-link/utils.js","webpack:///./src/formats/ta-link/url-popover.js","webpack:///./src/formats/ta-link/url-input.js","webpack:///./node_modules/dom-scroll-into-view/lib/index.js","webpack:///./node_modules/dom-scroll-into-view/lib/dom-scroll-into-view.js","webpack:///./node_modules/dom-scroll-into-view/lib/util.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","classNames","classes","arguments","length","arg","argType","push","Array","isArray","inner","apply","key","hasOwn","join","default","undefined","__webpack_exports__","value","__WEBPACK_IMPORTED_MODULE_0__blocks__","__WEBPACK_IMPORTED_MODULE_1__formats__","__WEBPACK_IMPORTED_MODULE_2__assets_styles_index_scss__","registerBlocks","registerFormats","forEach","block","settings","registerBlockType","wp","blocks","_objectWithoutProperties","obj","keys","target","indexOf","taLink","_ref","registerFormatType","__WEBPACK_IMPORTED_MODULE_0__ta_link__","richText","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","constructor","writable","setPrototypeOf","__proto__","__WEBPACK_IMPORTED_MODULE_0__inline__","_createClass","defineProperties","props","descriptor","protoProps","staticProps","__","i18n","_wp$element","element","Component","Fragment","withSpokenMessages","components","_wp$richText","getTextContent","applyFormat","removeFormat","slice","isURL","url","_wp$editor","editor","RichTextToolbarButton","RichTextShortcut","_wp$components","Path","SVG","title","tagName","className","attributes","edit","LinkEdit","this","_this","getPrototypeOf","addLink","bind","stopAddingLink","onRemoveFormat","state","addingLink","_Component","_props","onChange","text","type","setState","_props2","speak","_props3","isActive","activeAttributes","createElement","character","onUse","icon","onClick","shortcutType","shortcutCharacter","xmlns","width","height","viewBox","id","fill","class","transform","createLinkFormat","linkid","toString","isShowingInput","editLink","__WEBPACK_IMPORTED_MODULE_0_classnames__","__WEBPACK_IMPORTED_MODULE_0_classnames___default","__WEBPACK_IMPORTED_MODULE_1__positioned_at_selection__","__WEBPACK_IMPORTED_MODULE_2__utils__","__WEBPACK_IMPORTED_MODULE_3__url_popover__","__WEBPACK_IMPORTED_MODULE_4__url_input__","createRef","ExternalLink","IconButton","ToggleControl","_wp$keycodes","keycodes","LEFT","RIGHT","UP","DOWN","BACKSPACE","ENTER","_wp$url","prependHTTP","safeDecodeURI","filterURLForDisplay","insert","isCollapsed","stopKeyPropagation","event","stopPropagation","LinkEditor","_ref2","onChangeInputValue","onKeyDown","submitLink","invalidLink","resetInvalidLink","autocompleteRef","onKeyPress","onSubmit","label","LinkViewerUrl","_ref3","prependedURL","linkClassName","classnames","has-invalid-link","isValidHref","href","LinkViewer","_ref4","InlineAffiliateLinkUI","onClickOutside","resetState","inputValue","post","keyCode","preventDefault","_state","selectedText","format","toInsert","autocompleteElement","current","contains","_props2$activeAttribu","_state2","showInput","start","end","onClose","focusOnMount","updateLinkId","getCurrentCaretPositionStyle","selection","window","getSelection","rangeCount","rect","getRectangleFromRange","getRangeAt","top","left","offsetParent","getOffsetParent","anchorNode","parentRect","getBoundingClientRect","_wp$dom","dom","ThirstyPositionedAtSelection","style","children","trimmedHref","trim","test","protocol","getProtocol","isValidProtocol","startsWith","authority","getAuthority","isValidAuthority","path","getPath","isValidPath","queryString","getQueryString","isValidQueryString","fragment","getFragment","isValidFragment","_lodash","lodash","Popover","ThirstyURLPopover","toggleSettingsVisibility","isSettingsExpanded","renderSettings","_props$position","position","_props$focusOnMount","showSettings","aria-expanded","__WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view__","__WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view___default","throttle","TAB","Spinner","withInstanceId","compose","stopEventPropagation","ThirstyURLInput","inputRef","updateSuggestions","suggestionNodes","posts","showSuggestions","selectedSuggestion","_this2","scrollingIntoView","scrollIntoView","onlyScrollIfNeeded","setTimeout","suggestionsRequest","index","_this3","ref","_this4","loading","formData","FormData","append","request","fetch","ajaxurl","method","body","then","response","json","affiliate_links","debouncedSpeak","sprintf","_n","catch","previousIndex","nextIndex","selectLink","selectionStart","setSelectionRange","link","focus","_this5","_props$value","_props$autoFocus","autoFocus","instanceId","_state3","aria-label","required","onInput","placeholder","role","aria-autocomplete","aria-owns","aria-activedescendant","noArrow","map","tabIndex","bindSuggestionNode","is-selected","handleOnClick","aria-selected","elem","container","config","nodeType","util","getWindow","allowHorizontalScroll","alignWithTop","alignWithLeft","offsetTop","offsetLeft","offsetBottom","offsetRight","isWin","isWindow","elemOffset","offset","eh","outerHeight","ew","outerWidth","containerOffset","ch","cw","containerScroll","diffTop","diffBottom","win","winScroll","ww","wh","scrollLeft","scrollTop","clientHeight","clientWidth","parseFloat","css","getClientPosition","box","x","y","doc","ownerDocument","docElem","documentElement","clientLeft","clientTop","getScroll","w","ret","document","getScrollLeft","getScrollTop","getOffset","el","pos","defaultView","parentWindow","_getComputedStyle","computedStyle_","val","computedStyle","getComputedStyle","getPropertyValue","_getComputedStyleIE","CURRENT_STYLE","_RE_NUM_NO_PX","RE_POS","rsLeft","RUNTIME_STYLE","pixelLeft","PX","each","arr","fn","isBorderBoxFn","getComputedStyleX","swap","options","callback","old","getPBMWidth","which","prop","j","cssProp","getWH","extra","domUtils","viewportWidth","viewportHeight","docWidth","docHeight","borderBoxValue","offsetWidth","offsetHeight","isBorderBox","cssBoxValue","Number","BORDER_INDEX","CONTENT_INDEX","borderBoxValueOrIsBorderBox","padding","PADDING_INDEX","BOX_MODELS","getWHIgnoreDisplay","args","cssShow","v","_typeof","setOffset","_extends","assign","source","Symbol","iterator","RE_NUM","RegExp","refWin","Math","max","documentElementProp","compatMode","visibility","display","first","charAt","toUpperCase","includeMargin","node","clone","overflow","scrollTo"],"mappings":"CAAS,SAAUA,GCInB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QAvBA,GAAAD,KA4BAF,GAAAQ,EAAAT,EAGAC,EAAAS,EAAAP,EAGAF,EAAAU,EAAA,SAAAP,EAAAQ,EAAAC,GACAZ,EAAAa,EAAAV,EAAAQ,IACAG,OAAAC,eAAAZ,EAAAQ,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAZ,EAAAmB,EAAA,SAAAf,GACA,GAAAQ,GAAAR,KAAAgB,WACA,WAA2B,MAAAhB,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAQ,EAAAC,GAAsD,MAAAR,QAAAS,UAAAC,eAAAjB,KAAAc,EAAAC,IAGtDtB,EAAAyB,EAAA,GAGAzB,IAAA0B,EAAA,KDMM,SAAUtB,EAAQD,EAASH,GEnEjC,GAAA2B,GAAAC;;;;;CAOA,WACA,YAIA,SAAAC,KAGA,OAFAC,MAEAzB,EAAA,EAAiBA,EAAA0B,UAAAC,OAAsB3B,IAAA,CACvC,GAAA4B,GAAAF,UAAA1B,EACA,IAAA4B,EAAA,CAEA,GAAAC,SAAAD,EAEA,eAAAC,GAAA,WAAAA,EACAJ,EAAAK,KAAAF,OACI,IAAAG,MAAAC,QAAAJ,MAAAD,OAAA,CACJ,GAAAM,GAAAT,EAAAU,MAAA,KAAAN,EACAK,IACAR,EAAAK,KAAAG,OAEI,eAAAJ,EACJ,OAAAM,KAAAP,GACAQ,EAAAlC,KAAA0B,EAAAO,IAAAP,EAAAO,IACAV,EAAAK,KAAAK,IAMA,MAAAV,GAAAY,KAAA,KA3BA,GAAAD,MAAgBjB,mBA8BhB,KAAApB,KAAAD,SACA0B,EAAAc,QAAAd,EACAzB,EAAAD,QAAA0B,IAGEF,SAECiB,MAFsBhB,EAAA,WACzB,MAAAC,IACGU,MAAApC,EAAAwB,MAAAvB,EAAAD,QAAAyB,QF+EG,SAAUxB,EAAQyC,EAAqB7C,GAE7C,YGhIAc,QAAAC,eAAA8B,EAAA,cAAAC,OAAA,OAAAC,GAAA/C,EAAA,GAAAgD,EAAAhD,EAAA,GAAAiD,EAAAjD,EAAA,GAAAA,GAAAmB,EAAA8B,EAKAC,eACAC,eH0IM,SAAU/C,EAAQyC,EAAqB7C,GAE7C,YI3Ie,SAASkD,QAGlBE,QAAS,SAAEC,GACT,GAAOA,EAAP,CADoB,GAGZ1C,GAAoB0C,EAApB1C,KAAO2C,EAAaD,EAAbC,QACfC,GAAmB5C,EAAO2C,MJqIDT,EAAuB,EAAIK,CAC5D,IIpJQK,GAAsBC,GAAGC,OAAzBF,mBJ0KF,SAAUnD,EAAQyC,EAAqB7C,GAE7C,YAGA,SAAS0D,GAAyBC,EAAKC,GAAQ,GAAIC,KAAa,KAAK,GAAIxD,KAAKsD,GAAWC,EAAKE,QAAQzD,IAAM,GAAkBS,OAAOS,UAAUC,eAAejB,KAAKoD,EAAKtD,KAAcwD,EAAOxD,GAAKsD,EAAItD,GAAM,OAAOwD,GKtKpM,QAASV,MAGhBY,KACFX,QAAS,SAAAY,GAAA,GAAIrD,GAAJqD,EAAIrD,KAAU2C,EAAdI,EAAAM,GAAA,eAA8BC,GAAoBtD,EAAO2C,KLgKvCT,EAAuB,EAAIM,CACvC,IAAIe,GAAyClE,EAAoB,GK5K9EiE,EAAuBT,GAAGW,SAA1BF,oBLqMF,SAAU7D,EAAQyC,EAAqB7C,GAE7C,YAKA,SAASoE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASC,GAA2BC,EAAMlE,GAAQ,IAAKkE,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOnE,GAAyB,gBAATA,IAAqC,kBAATA,GAA8BkE,EAAPlE,EAElO,QAASoE,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIN,WAAU,iEAAoEM,GAAeD,GAASrD,UAAYT,OAAOgE,OAAOD,GAAcA,EAAWtD,WAAawD,aAAejC,MAAO8B,EAAU3D,YAAY,EAAO+D,UAAU,EAAMhE,cAAc,KAAe6D,IAAY/D,OAAOmE,eAAiBnE,OAAOmE,eAAeL,EAAUC,GAAcD,EAASM,UAAYL,GARlc7E,EAAoBU,EAAEmC,EAAqB,IAAK,WAAa,MAAOkB,IAC9E,IAAIoB,GAAwCnF,EAAoB,GACjFoF,EAAe,WAAc,QAASC,GAAiBxB,EAAQyB,GAAS,IAAK,GAAIjF,GAAI,EAAGA,EAAIiF,EAAMtD,OAAQ3B,IAAK,CAAE,GAAIkF,GAAaD,EAAMjF,EAAIkF,GAAWtE,WAAasE,EAAWtE,aAAc,EAAOsE,EAAWvE,cAAe,EAAU,SAAWuE,KAAYA,EAAWP,UAAW,GAAMlE,OAAOC,eAAe8C,EAAQ0B,EAAW/C,IAAK+C,IAAiB,MAAO,UAAUjB,EAAakB,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBf,EAAY/C,UAAWiE,GAAiBC,GAAaJ,EAAiBf,EAAamB,GAAqBnB,MM1MxhBoB,EAAOlC,GAAGmC,KAAVD,GNqNJE,EMpN6BpC,GAAGqC,QAA5BC,ENqNQF,EMrNRE,UAAYC,ENsNLH,EMtNKG,SACZC,EAAuBxC,GAAGyC,WAA1BD,mBNuNJE,EMtN4D1C,GAAGW,SAA3DgC,ENuNaD,EMvNbC,eAAiBC,ENwNPF,EMxNOE,YAAcC,ENyNpBH,EMzNoBG,aAAeC,EN0N1CJ,EM1N0CI,MAC9CC,EAAU/C,GAAGgD,IAAbD,MN2NJE,EM1NiDjD,GAAGkD,OAAhDC,EN2NoBF,EM3NpBE,sBAAwBC,EN4NTH,EM5NSG,iBN6N5BC,EM5NmBrD,GAAGyC,WAAlBa,EN6NGD,EM7NHC,KAAOC,EN8NLF,EM9NKE,IAWFhD,GACTpD,KAVS,UAWTqG,MAAatB,EAAI,kBACjBuB,QAAa,KACbC,UAAa,KACbC,YACFX,IAAS,OACT3C,OAAS,UAEPuD,KAAOpB,cAOT,QAAAqB,KAAcjD,EAAAkD,KAAAD,EAAA,IAAAE,GAAA/C,EAAA8C,MAAAD,EAAAnC,WAAApE,OAAA0G,eAAAH,IAAA9E,MAAA+E,KACHvF,WADG,OAGbwF,GAAKE,QAAUF,EAAKE,QAAQC,KAAbH,GACfA,EAAKI,eAAiBJ,EAAKI,eAAeD,KAApBH,GACtBA,EAAKK,eAAiBL,EAAKK,eAAeF,KAApBH,GACtBA,EAAKM,OACJC,YAAY,GAPAP,EAPL,MAAA5C,GAAA0C,EAAAU,GAAA3C,EAAAiC,IAAA7E,IAAA,UAAAM,MAAA,WAuBC,GAAAkF,GACmBV,KAAKhC,MAAzBxC,EADCkF,EACDlF,MAAOmF,EADND,EACMC,SACTC,EAAO/B,EAAgBG,EAAOxD,GAE/BoF,IAAQ3B,EAAO2B,GACnBD,EAAU7B,EAAatD,GAASqF,KA9CvB,UA8CmChB,YAAcX,IAAK0B,MAE/DZ,KAAKc,UAAYN,YAAY,OA9BtBtF,IAAA,iBAAAM,MAAA,WAwCRwE,KAAKc,UAAYN,YAAY,OAxCrBtF,IAAA,iBAAAM,MAAA,WAgDQ,GAAAuF,GACqBf,KAAKhC,MAAlCxC,EADQuF,EACRvF,MAAQmF,EADAI,EACAJ,SAAWK,EADXD,EACWC,KAE3BL,GAAU5B,EAAcvD,EArEd,YAsEVwF,EAAO5C,EAAI,2BAA6B,gBApDhClD,IAAA,SAAAM,MAAA,WA4DA,GAAAyF,GACmDjB,KAAKhC,MAAxDkD,EADAD,EACAC,SAAWC,EADXF,EACWE,iBAAmB3F,EAD9ByF,EAC8BzF,MAAQmF,EADtCM,EACsCN,QAE9C,OACCzE,IAAAqC,QAAA6C,cAAC3C,EAAD,KACCvC,GAAAqC,QAAA6C,cAAC9B,GACAuB,KAAK,SACLQ,UAAU,IACVC,MAAQtB,KAAKM,iBAEdpE,GAAAqC,QAAA6C,cAAC9B,GACAuB,KAAK,UACLQ,UAAU,IACVC,MAAQtB,KAAKG,UAEdjE,GAAAqC,QAAA6C,cAAC9B,GACAuB,KAAK,eACLQ,UAAU,IACVC,MAAQtB,KAAKM,iBAEZY,GAAYhF,GAAAqC,QAAA6C,cAAC/B,GACdkC,KAAK,gBACL7B,MAAQtB,EAAI,yBACZwB,UAAU,mBACV4B,QAAUxB,KAAKM,eACfY,SAAWA,EACXO,aAAa,eACbC,kBAAkB,OAEfR,GAAYhF,GAAAqC,QAAA6C,cAAC/B,GAChBkC,KAAOrF,GAAAqC,QAAA6C,cAAC3B,GAAIkC,MAAM,6BAA6BC,MAAM,SAASC,OAAO,QAAQC,QAAQ,oBAAmB5F,GAAAqC,QAAA6C,cAAC5B,GAAKuC,GAAG,SAASC,KAAK,QAAQC,MAAM,QAAQ7I,EAAE,qLAAqL8I,UAAU,6BACtVxC,MAAQtB,EAAI,kBACZwB,UAAU,iBACV4B,QAAUxB,KAAKG,QACfsB,aAAa,UACbC,kBAAkB,MAEnBxF,GAAAqC,QAAA6C,cAACvD,EAAA,GACA2C,WAAaR,KAAKO,MAAMC,WACxBH,eAAiBL,KAAKK,eACtBa,SAAWA,EACXC,iBAAmBA,EACnB3F,MAAQA,EACRmF,SAAWA,SAvGNZ,GAA2CvB,MNoXhD,SAAU1F,EAAQyC,EAAqB7C,GAE7C,YASA,SAASoE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASC,GAA2BC,EAAMlE,GAAQ,IAAKkE,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOnE,GAAyB,gBAATA,IAAqC,kBAATA,GAA8BkE,EAAPlE,EAElO,QAASoE,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIN,WAAU,iEAAoEM,GAAeD,GAASrD,UAAYT,OAAOgE,OAAOD,GAAcA,EAAWtD,WAAawD,aAAejC,MAAO8B,EAAU3D,YAAY,EAAO+D,UAAU,EAAMhE,cAAc,KAAe6D,IAAY/D,OAAOmE,eAAiBnE,OAAOmE,eAAeL,EAAUC,GAAcD,EAASM,UAAYL,GOrYje,QAAS4E,GAATzF,GAAqD,GAAxBwC,GAAwBxC,EAAxBwC,IAAMkD,EAAkB1F,EAAlB0F,MAAkB1F,GAATkE,IAS3C,QAPCC,KAAM,UACNhB,YACCX,MACAkD,OAASA,EAAOC,aAenB,QAASC,GAAgBtE,EAAQuC,GAChC,MAAOvC,GAAMwC,YAAcD,EAAMgC,SPoWb,GAAIC,GAA2C9J,EAAoB,GAC/D+J,EAAmD/J,EAAoBmB,EAAE2I,GACzEE,EAAyDhK,EAAoB,GAC7EiK,EAAuCjK,EAAoB,GAC3DkK,EAA6ClK,EAAoB,GACjEmK,EAA2CnK,EAAoB,GACpFoF,EAAe,WAAc,QAASC,GAAiBxB,EAAQyB,GAAS,IAAK,GAAIjF,GAAI,EAAGA,EAAIiF,EAAMtD,OAAQ3B,IAAK,CAAE,GAAIkF,GAAaD,EAAMjF,EAAIkF,GAAWtE,WAAasE,EAAWtE,aAAc,EAAOsE,EAAWvE,cAAe,EAAU,SAAWuE,KAAYA,EAAWP,UAAW,GAAMlE,OAAOC,eAAe8C,EAAQ0B,EAAW/C,IAAK+C,IAAiB,MAAO,UAAUjB,EAAakB,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBf,EAAY/C,UAAWiE,GAAiBC,GAAaJ,EAAiBf,EAAamB,GAAqBnB,MOnZxhBoB,EAAOlC,GAAGmC,KAAVD,GPkaJE,EOja8BpC,GAAGqC,QAA7BC,EPkaQF,EOlaRE,UAAYsE,EPmaJxE,EOnaIwE,UPoahBvD,EOnauErD,GAAGyC,WAAtEoE,EPoaWxD,EOpaXwD,aAA+BC,GPqanBzD,EOraG0D,cPsaN1D,EOtasByD,YAAatE,EPua3Ba,EOva2Bb,mBPwahDwE,EOvagDhH,GAAGiH,SAA/CC,EPwaGF,EOxaHE,KAAMC,EPyaFH,EOzaEG,MAAOC,EP0aZJ,EO1aYI,GAAIC,EP2adL,EO3acK,KAAMC,EP4afN,EO5aeM,UAAWC,EP6a9BP,EO7a8BO,MP8atCC,EO7a0DxH,GAAGgD,IAAzDyE,EP8aUD,EO9aVC,YAAcC,EP+aFF,EO/aEE,cAAgBC,EPgbZH,EOhbYG,oBPiblCjF,EOhb6E1C,GAAGW,SAA5EW,EPibKoB,EOjbLpB,OAASsG,EPkbJlF,EOlbIkF,OAASC,EPmbRnF,EOnbQmF,YAAcjF,EPobtBF,EOpbsBE,YAAcD,EPqbjCD,EOrbiCC,eAAiBG,EPsb3DJ,EOtb2DI,MAEjEgF,EAAqB,SAAEC,GAAF,MAAaA,GAAMC,mBA4CxCC,EAAa,SAAAC,GAAA,GAAI5I,GAAJ4I,EAAI5I,MAAQ6I,EAAZD,EAAYC,mBAAqBC,EAAjCF,EAAiCE,UAAYC,EAA7CH,EAA6CG,WAAYC,EAAzDJ,EAAyDI,YAAcC,EAAvEL,EAAuEK,iBAAmBC,EAA1FN,EAA0FM,eAA1F,OAGlBxI,IAAAqC,QAAA6C,cAAA,QACCxB,UAAU,uEACV+E,WAAaX,EACbM,UAAYA,EACZM,SAAWL,GAEXrI,GAAAqC,QAAA6C,cAACyB,EAAA,GACArH,MAAQA,EACRmF,SAAW0D,EACXK,gBAAkBA,EAClBF,YAAcA,EACdC,iBAAmBA,IAEpBvI,GAAAqC,QAAA6C,cAAC4B,GAAWzB,KAAK,eAAesD,MAAQzG,EAAI,SAAYyC,KAAK,aAUzDiE,EAAgB,SAAAC,GAAe,GAAX7F,GAAW6F,EAAX7F,IACnB8F,EAAerB,EAAazE,GAC5B+F,EAAgBC,IAAY,+CACjCC,oBAAsBC,YAAaJ,IAGpC,OAAO9F,GAKNhD,GAAAqC,QAAA6C,cAAC2B,GACAnD,UAAYqF,EACZI,KAAOnG,GAEL2E,EAAqBD,EAAe1E,KARhChD,GAAAqC,QAAA6C,cAAA,QAAMxB,UAAYqF,KAkBrBK,EAAa,SAAAC,GAAyB,GAArBrG,GAAqBqG,EAArBrG,IAAKqD,EAAgBgD,EAAhBhD,QAC3B,OAGCrG,IAAAqC,QAAA6C,cAAA,OACCxB,UAAU,gDACV+E,WAAaX,GAEb9H,GAAAqC,QAAA6C,cAAC0D,GAAc5F,IAAMA,IACrBhD,GAAAqC,QAAA6C,cAAC4B,GAAWzB,KAAK,OAAOsD,MAAQzG,EAAI,QAAWoD,QAAUe,MAatDiD,EPkdsB,SAAU/E,GOjdrC,QAAA+E,KAAc1I,EAAAkD,KAAAwF,EAAA,IAAAvF,GAAA/C,EAAA8C,MAAAwF,EAAA5H,WAAApE,OAAA0G,eAAAsF,IAAAvK,MAAA+E,KACHvF,WADG,OAGbwF,GAAKsC,SAAWtC,EAAKsC,SAASnC,KAAdH,GAChBA,EAAKsE,WAAatE,EAAKsE,WAAWnE,KAAhBH,GAClBA,EAAKqE,UAAYrE,EAAKqE,UAAUlE,KAAfH,GACjBA,EAAKoE,mBAAqBpE,EAAKoE,mBAAmBjE,KAAxBH,GAC1BA,EAAKwF,eAAiBxF,EAAKwF,eAAerF,KAApBH,GACtBA,EAAKyF,WAAazF,EAAKyF,WAAWtF,KAAhBH,GAClBA,EAAKyE,gBAAkB5B,IACvB7C,EAAKwE,iBAAmBxE,EAAKwE,iBAAiBrE,KAAtBH,GAExBA,EAAKM,OACJoF,WAAa,GACbvD,OAAS,EACTwD,KAAO,KACPpB,aAAc,GAhBFvE,EPgsBd,MA9OA5C,GAAUmI,EAAuB/E,GAkCjC3C,EAAa0H,IACZtK,IAAK,YACLM,MAAO,SO3dGyI,IACHb,EAAMG,EAAMF,EAAOC,EAAIE,EAAWC,GAAQjH,QAASyH,EAAM4B,UAAa,GAC5E5B,EAAMC,qBPyePhJ,IAAK,qBACLM,MAAO,SO9dYmK,GAA2B,GAAdC,GAAcnL,UAAAC,OAAA,OAAAY,KAAAb,UAAA,GAAAA,UAAA,GAAP,KACjC2H,EAASwD,EAAOA,EAAK7D,GAAK,CAChC/B,MAAKc,UAAY6E,aAAavD,SAASwD,YP4evC1K,IAAK,WACLM,MAAO,SOneEyI,GACTjE,KAAKc,UAAYyB,UAAU,IAC3B0B,EAAM6B,oBP+eN5K,IAAK,aACLM,MAAO,SOteIyI,GAAQ,GAAAvD,GAC0BV,KAAKhC,MAA1CkD,EADWR,EACXQ,SAAU1F,EADCkF,EACDlF,MAAOmF,EADND,EACMC,SAAUK,EADhBN,EACgBM,MADhB+E,EAEmB/F,KAAKO,MAAnCoF,EAFWI,EAEXJ,WAAYvD,EAFD2D,EAEC3D,OAASwD,EAFVG,EAEUH,KACvB1G,EAAMyE,EAAagC,GACnBK,EAAenH,EAAgBG,EAAOxD,IACtCyK,EAAS9D,GACdjD,MACAkD,SACAxB,KAAMoF,GAKP,IAFA/B,EAAM6B,kBAEC1D,IAAYwD,EAElB,WADA5F,MAAKc,UAAY0D,aAAc,GAIhC,IAAKT,EAAavI,KAAa0F,EAAW,CACzC,GAAMgF,GAAWpH,EAAatB,GAAUoD,KAAMgF,EAAKlG,QAAWuG,EAAQ,EAAG/G,EAAIxE,OAC7EiG,GAAUmD,EAAQtI,EAAO0K,QAEzBvF,GAAU7B,EAAatD,EAAOyK,GAG/BjG,MAAK0F,aAEEN,YAAalG,GAERgC,EACXF,EAAO5C,EAAI,gBAAkB,aAE7B4C,EAAO5C,EAAI,iBAAmB,aAJ9B4C,EAAO5C,EAAI,4EAA8E,gBP+f1FlD,IAAK,iBACLM,MAAO,SOjfQyI,GAKf,GAAMkC,GAAsBnG,KAAK0E,gBAAgB0B,OAC5CD,IAAuBA,EAAoBE,SAAUpC,EAAM1H,SAIhEyD,KAAK0F,gBP2fLxK,IAAK,aACLM,MAAO,WOnfPwE,KAAKhC,MAAMqC,iBACXL,KAAKc,UAAY6E,WAAa,GAAKpD,UAAU,IAC7CvC,KAAKyE,sBP8fLvJ,IAAK,mBACLM,MAAO,WOtfPwE,KAAKc,UAAY0D,aAAc,OPigB/BtJ,IAAK,SACLM,MAAO,WO1fC,GAAAuF,GAC8Ef,KAAKhC,MAAnFkD,EADAH,EACAG,SADAoF,EAAAvF,EACUI,iBAAoBjC,EAD9BoH,EAC8BpH,IAAgBsB,GAD9C8F,EACoClE,OADpCrB,EAC8CP,YAAYhF,EAD1DuF,EAC0DvF,KAD1DuF,GACiEJ,QAEzE,KAAOO,IAAcV,EACpB,MAAO,KAJA,IAAA+F,GAO6BvG,KAAKO,MAAlCoF,EAPAY,EAOAZ,WAAanB,EAPb+B,EAOa/B,YACfgC,EAAYlE,EAAgBtC,KAAKhC,MAAOgC,KAAKO,MAEnD,OACCrE,IAAAqC,QAAA6C,cAACsB,EAAA,GACAxH,IAAA,GAAUM,EAAMiL,MAAUjL,EAAMkL,KAEhCxK,GAAAqC,QAAA6C,cAACwB,EAAA,GACA6C,eAAiBzF,KAAKyF,eACtBkB,QAAU3G,KAAK0F,WACfkB,eAAeJ,GAAY,eAC3BhC,YAAcA,GAEZgC,EACDtK,GAAAqC,QAAA6C,cAAC+C,GACA3I,MAAQmK,EACRtB,mBAAqBrE,KAAKqE,mBAC1BC,UAAYtE,KAAKsE,UACjBC,WAAavE,KAAKuE,WAClBG,gBAAkB1E,KAAK0E,gBACvBmC,aAAgB7G,KAAK6G,aACrBrC,YAAcA,EACdC,iBAAmBzE,KAAKyE,mBAGzBvI,GAAAqC,QAAA6C,cAACkE,GACApG,IAAMA,EACNqD,SAAWvC,KAAKuC,iBP4gBfiD,GOjsB4BhH,EA8LrBE,OAAoB8G,IP0gB7B,SAAU1M,EAAQyC,EAAqB7C,GAE7C,YAGA,SAASoE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASC,GAA2BC,EAAMlE,GAAQ,IAAKkE,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOnE,GAAyB,gBAATA,IAAqC,kBAATA,GAA8BkE,EAAPlE,EAElO,QAASoE,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIN,WAAU,iEAAoEM,GAAeD,GAASrD,UAAYT,OAAOgE,OAAOD,GAAcA,EAAWtD,WAAawD,aAAejC,MAAO8B,EAAU3D,YAAY,EAAO+D,UAAU,EAAMhE,cAAc,KAAe6D,IAAY/D,OAAOmE,eAAiBnE,OAAOmE,eAAeL,EAAUC,GAAcD,EAASM,UAAYL,GQv0Bje,QAASuJ,KACR,GAAMC,GAAYC,OAAOC,cAIzB,IAA8B,IAAzBF,EAAUG,WACd,QAID,IAAMC,GAAOC,EAAuBL,EAAUM,WAAY,IACtDC,EAAMH,EAAKG,IAAMH,EAAKtF,OACtB0F,EAAOJ,EAAKI,KAASJ,EAAKvF,MAAQ,EAGhC4F,EAAeC,EAAiBV,EAAUW,WAChD,IAAKF,EAAe,CACnB,GAAMG,GAAaH,EAAaI,uBAChCN,IAAOK,EAAWL,IAClBC,GAAQI,EAAWJ,KAGpB,OAASD,MAAKC,QR2yBf,GAAIzJ,GAAe,WAAc,QAASC,GAAiBxB,EAAQyB,GAAS,IAAK,GAAIjF,GAAI,EAAGA,EAAIiF,EAAMtD,OAAQ3B,IAAK,CAAE,GAAIkF,GAAaD,EAAMjF,EAAIkF,GAAWtE,WAAasE,EAAWtE,aAAc,EAAOsE,EAAWvE,cAAe,EAAU,SAAWuE,KAAYA,EAAWP,UAAW,GAAMlE,OAAOC,eAAe8C,EAAQ0B,EAAW/C,IAAK+C,IAAiB,MAAO,UAAUjB,EAAakB,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBf,EAAY/C,UAAWiE,GAAiBC,GAAaJ,EAAiBf,EAAamB,GAAqBnB,MQ70BxhBwB,EAActC,GAAGqC,QAAjBC,URs1BJqJ,EQr1BgD3L,GAAG4L,IAA/CL,ERs1BcI,EQt1BdJ,gBAAkBL,ERu1BES,EQv1BFT,sBA6CpBW,ERy1B6B,SAAUtH,GQl1B5C,QAAAsH,KAAcjL,EAAAkD,KAAA+H,EAAA,IAAA9H,GAAA/C,EAAA8C,MAAA+H,EAAAnK,WAAApE,OAAA0G,eAAA6H,IAAA9M,MAAA+E,KACHvF,WADG,OAGbwF,GAAKM,OACJyH,MAAOlB,KAJK7G,ER23Bd,MAxCA5C,GAAU0K,EAA8BtH,GAyBxC3C,EAAaiK,IACZ7M,IAAK,SACLM,MAAO,WQj2BC,GACAyM,GAAajI,KAAKhC,MAAlBiK,SACAD,EAAUhI,KAAKO,MAAfyH,KAER,OACC9L,IAAAqC,QAAA6C,cAAA,OAAKxB,UAAU,4CAA4CoI,MAAQA,GAChEC,ORw2BEF,GQl4BmCvJ,EAgC5BuJ,QRy2BT,SAAUjP,EAAQyC,EAAqB7C,GAE7C,YSl6BO,SAAS0M,GAAaC,GAC5B,IAAOA,EACN,OAAO,CAGR,IAAM6C,GAAc7C,EAAK8C,MAEzB,KAAOD,EACN,OAAO,CAIR,IAAK,QAAQE,KAAMF,GAAgB,CAClC,GAAMG,GAAWC,EAAaJ,EAC9B,KAAOK,EAAiBF,GACvB,OAAO,CAKR,IAAKG,EAAYH,EAAU,UAAc,uBAAuBD,KAAMF,GACrE,OAAO,CAGR,IAAMO,GAAYC,EAAcR,EAChC,KAAOS,EAAkBF,GACxB,OAAO,CAGR,IAAMG,GAAOC,EAASX,EACtB,IAAKU,IAAUE,EAAaF,GAC3B,OAAO,CAGR,IAAMG,GAAcC,EAAgBd,EACpC,IAAKa,IAAiBE,EAAoBF,GACzC,OAAO,CAGR,IAAMG,GAAWC,EAAajB,EAC9B,IAAKgB,IAAcE,EAAiBF,GACnC,OAAO,EAKT,QAAKV,EAAYN,EAAa,OAAWkB,EAAiBlB,ITq3B1B3M,EAAuB,EAAI6J,CAC5D,IAAIiE,GS37BmBC,OAAfd,ET47BSa,ES57BTb,WT67BJ9E,ESh7BAxH,GAAGgD,IAVHoJ,ET27Bc5E,ES37Bd4E,YACHC,ET27BqB7E,ES37BrB6E,gBACAG,ET27BkBhF,ES37BlBgF,aACAC,ET27BsBjF,ES37BtBiF,iBACAE,ET27BanF,ES37BbmF,QACAC,ET27BiBpF,ES37BjBoF,YACAE,ET27BoBtF,ES37BpBsF,eACAC,ET27BwBvF,ES37BxBuF,mBACAE,ET27BiBzF,ES37BjByF,YACAC,ET27BqB1F,ES37BrB0F,iBT6/BK,SAAUtQ,EAAQyC,EAAqB7C,GAE7C,YAGA,SAASoE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASC,GAA2BC,EAAMlE,GAAQ,IAAKkE,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOnE,GAAyB,gBAATA,IAAqC,kBAATA,GAA8BkE,EAAPlE,EAElO,QAASoE,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIN,WAAU,iEAAoEM,GAAeD,GAASrD,UAAYT,OAAOgE,OAAOD,GAAcA,EAAWtD,WAAawD,aAAejC,MAAO8B,EAAU3D,YAAY,EAAO+D,UAAU,EAAMhE,cAAc,KAAe6D,IAAY/D,OAAOmE,eAAiBnE,OAAOmE,eAAeL,EAAUC,GAAcD,EAASM,UAAYL,GANje,GAAIO,GAAe,WAAc,QAASC,GAAiBxB,EAAQyB,GAAS,IAAK,GAAIjF,GAAI,EAAGA,EAAIiF,EAAMtD,OAAQ3B,IAAK,CAAE,GAAIkF,GAAaD,EAAMjF,EAAIkF,GAAWtE,WAAasE,EAAWtE,aAAc,EAAOsE,EAAWvE,cAAe,EAAU,SAAWuE,KAAYA,EAAWP,UAAW,GAAMlE,OAAOC,eAAe8C,EAAQ0B,EAAW/C,IAAK+C,IAAiB,MAAO,UAAUjB,EAAakB,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBf,EAAY/C,UAAWiE,GAAiBC,GAAaJ,EAAiBf,EAAamB,GAAqBnB,MU5gCxhBoB,EAAOlC,GAAGmC,KAAVD,GACAI,EAActC,GAAGqC,QAAjBC,UVqhCJe,EUphC6BrD,GAAGyC,WAA5B4K,EVqhCMhK,EUrhCNgK,QAAUvG,EVshCDzD,EUthCCyD,WAOZwG,EVuhCkB,SAAU/I,GUhhCjC,QAAA+I,KAAc1M,EAAAkD,KAAAwJ,EAAA,IAAAvJ,GAAA/C,EAAA8C,MAAAwJ,EAAA5L,WAAApE,OAAA0G,eAAAsJ,IAAAvO,MAAA+E,KACGvF,WADH,OAGPwF,GAAKwJ,yBAA2BxJ,EAAKwJ,yBAAyBrJ,KAA9BH,GAEtCA,EAAKM,OACJmJ,oBAAoB,GANRzJ,EV+mCd,MA9FA5C,GAAUmM,EAAmB/I,GA2B7B3C,EAAa0L,IACZtO,IAAK,2BACLM,MAAO,WU9hCPwE,KAAKc,UACJ4I,oBAAsB1J,KAAKO,MAAMmJ,wBV0iClCxO,IAAK,SACLM,MAAO,WUliCC,GAAAkF,GASJV,KAAKhC,MAPRiK,EAFOvH,EAEPuH,SACA0B,EAHOjJ,EAGPiJ,eACAhD,EAJOjG,EAIPiG,QACSlB,EALF/E,EAKE+E,eACAjB,EANF9D,EAME8D,YANFoF,EAAAlJ,EAOPmJ,eAPOvO,KAAAsO,EAOI,gBAPJA,EAAAE,EAAApJ,EAQPkG,mBAROtL,KAAAwO,EAQQ,eARRA,EAYPJ,EACS1J,KAAKO,MADdmJ,mBAGWK,IAAkBJ,GAAkBD,CAEhD,OACCxN,IAAAqC,QAAA6C,cAACmI,GACA3J,UAAU,oCACVgH,aAAeA,EACfiD,SAAWA,EACXlD,QAAUA,EACVlB,eAAiBA,GAEjBvJ,GAAAqC,QAAA6C,cAAA,OAAKxB,UAAU,2BACGqI,IACG0B,GACnBzN,GAAAqC,QAAA6C,cAAC4B,GACApD,UAAU,sCACV2B,KAAK,WACLsD,MAAQzG,EAAI,iBACZoD,QAAUxB,KAAKyJ,yBACfO,gBAAgBN,KAILK,GACb7N,GAAAqC,QAAA6C,cAAA,OAAKxB,UAAU,wDACZ+J,KAGUnF,GAAetI,GAAAqC,QAAA6C,cAAA,OAAKa,MAAM,mBAAoB7D,EAAI,gCV2iC5DoL,GUtnCwBhL,EAiFjBgL,QV4iCT,SAAU1Q,EAAQyC,EAAqB7C,GAE7C,YAOA,SAASoE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASC,GAA2BC,EAAMlE,GAAQ,IAAKkE,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOnE,GAAyB,gBAATA,IAAqC,kBAATA,GAA8BkE,EAAPlE,EAElO,QAASoE,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIN,WAAU,iEAAoEM,GAAeD,GAASrD,UAAYT,OAAOgE,OAAOD,GAAcA,EAAWtD,WAAawD,aAAejC,MAAO8B,EAAU3D,YAAY,EAAO+D,UAAU,EAAMhE,cAAc,KAAe6D,IAAY/D,OAAOmE,eAAiBnE,OAAOmE,eAAeL,EAAUC,GAAcD,EAASM,UAAYL,GAV5c,GAAIiF,GAA2C9J,EAAoB,GAC/D+J,EAAmD/J,EAAoBmB,EAAE2I,GACzEyH,EAAqDvR,EAAoB,IACzEwR,EAA6DxR,EAAoBmB,EAAEoQ,GACxGnM,EAAe,WAAc,QAASC,GAAiBxB,EAAQyB,GAAS,IAAK,GAAIjF,GAAI,EAAGA,EAAIiF,EAAMtD,OAAQ3B,IAAK,CAAE,GAAIkF,GAAaD,EAAMjF,EAAIkF,GAAWtE,WAAasE,EAAWtE,aAAc,EAAOsE,EAAWvE,cAAe,EAAU,SAAWuE,KAAYA,EAAWP,UAAW,GAAMlE,OAAOC,eAAe8C,EAAQ0B,EAAW/C,IAAK+C,IAAiB,MAAO,UAAUjB,EAAakB,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBf,EAAY/C,UAAWiE,GAAiBC,GAAaJ,EAAiBf,EAAamB,GAAqBnB,MW1oCxhBoB,EAAOlC,GAAGmC,KAAVD,GXspCJiL,EWrpCiBC,OAAba,EXspCOd,EWtpCPc,SXupCJ7L,EWtpC8BpC,GAAGqC,QAA7BC,EXupCQF,EWvpCRE,UAAYsE,EXwpCJxE,EWxpCIwE,UXypChBI,EWxpC6BhH,GAAGiH,SAA5BG,EXypCCJ,EWzpCDI,GAAIC,EX0pCDL,EW1pCCK,KAAME,EX2pCNP,EW3pCMO,MAAO2G,EX4pCflH,EW5pCekH,IX6pCrB7K,EW5pC6CrD,GAAGyC,WAA5C0L,EX6pCM9K,EW7pCN8K,QAAS3L,EX8pCQa,EW9pCRb,mBAAoB6K,EX+pCvBhK,EW/pCuBgK,QAC7Be,EAAmBpO,GAAGqO,QAAtBD,eAKFE,EAAuB,SAAEvG,GAAF,MAAaA,GAAMC,mBAO1CuG,EXmqCgB,SAAUhK,GW1pC/B,QAAAgK,GAAA/N,GAAmC,GAApBgI,GAAoBhI,EAApBgI,eAAoB5H,GAAAkD,KAAAyK,EAAA,IAAAxK,GAAA/C,EAAA8C,MAAAyK,EAAA7M,WAAApE,OAAA0G,eAAAuK,IAAAxP,MAAA+E,KACxBvF,WADwB,OAGlCwF,GAAKU,SAAWV,EAAKU,SAASP,KAAdH,GAChBA,EAAKqE,UAAYrE,EAAKqE,UAAUlE,KAAfH,GACjBA,EAAKyE,gBAAkBA,GAAmB5B,IAC1C7C,EAAKyK,SAAW5H,IAChB7C,EAAK0K,kBAAoBR,EAAUlK,EAAK0K,kBAAkBvK,KAAvBH,GAAqC,KAExEA,EAAK2K,mBAEL3K,EAAKM,OACJsK,SACAC,iBAAiB,EACjBC,mBAAoB,MAda9K,EX8iDnC,MAnZA5C,GAAUoN,EAAiBhK,GAuC3B3C,EAAa2M,IACZvP,IAAK,qBACLM,MAAO,WW7qCa,GAAAwP,GAAAhL,KAAA+F,EAC4B/F,KAAKO,MAA7CuK,EADY/E,EACZ+E,gBAAiBC,EADLhF,EACKgF,kBAGpBD,IAA0C,OAAvBC,IAAiC/K,KAAKiL,oBAC7DjL,KAAKiL,mBAAoB,EACzBC,IAAgBlL,KAAK4K,gBAAiBG,GAAsB/K,KAAK0E,gBAAgB0B,SAChF+E,oBAAoB,IAGrBC,WAAY,WACXJ,EAAKC,mBAAoB,GACvB,SX6rCJ/P,IAAK,uBACLM,MAAO,iBWprCAwE,MAAKqL,sBX+rCZnQ,IAAK,qBACLM,MAAO,SWxrCY8P,GAAQ,GAAAC,GAAAvL,IAC3B,OAAO,UAAEwL,GACRD,EAAKX,gBAAiBU,GAAUE,MXusCjCtQ,IAAK,oBACLM,MAAO,SW7rCWA,GAAQ,GAAAiQ,GAAAzL,IAG1B,IAAKxE,EAAMd,OAAS,GAAK,WAAW0N,KAAM5M,GAOzC,WANAwE,MAAKc,UACJgK,iBAAiB,EACjBC,mBAAoB,KACpBW,SAAS,GAMX1L,MAAKc,UACJgK,iBAAiB,EACjBC,mBAAoB,KACpBW,SAAS,GAGJ,IAAMC,GAAW,GAAIC,SACrBD,GAASE,OAAQ,SAAW,gCAC5BF,EAASE,OAAQ,UAAYrQ,GAC7BmQ,EAASE,OAAQ,QAAU,GAC3BF,EAASE,OAAQ,aAAc,EAI/B,IAAMC,GAAUC,MAAOC,SACnBC,OAAS,OACTC,KAASP,GAGbG,GACCK,KAAM,SAAAC,GAAA,MAAYA,GAASC,SAC3BF,KAAM,SAAEC,GAEL,GAAOA,EAASE,gBAAhB,CAEA,GAAMzB,GAAQuB,EAASE,eAK3Bb,GAAKJ,qBAAuBS,IAIjCL,EAAK3K,UACJ+J,QACAa,SAAS,IAGFb,EAAMnQ,OACb+Q,EAAKzN,MAAMuO,eAAgBC,QAASC,GACnC,2DACA,4DACA5B,EAAMnQ,QACJmQ,EAAMnQ,QAAU,aAEnB+Q,EAAKzN,MAAMuO,eAAgBnO,EAAI,eAAiB,iBAG9CsO,MAAO,WACLjB,EAAKJ,qBAAuBS,GAChCL,EAAK3K,UACJ4K,SAAS,MAKZ1L,KAAKqL,mBAAqBS,KXssC1B5Q,IAAK,WACLM,MAAO,SW7rCEyI,GACHjE,KAAKhC,MAAMyG,kBACjB,IAAMkB,GAAa1B,EAAM1H,OAAOf,KAChCwE,MAAKhC,MAAM2C,SAAUgF,GACrB3F,KAAK2K,kBAAmBhF,MXysCxBzK,IAAK,YACLM,MAAO,SWhsCGyI,GAAQ,GAAAsC,GAC8CvG,KAAKO,MAA7DuK,EADUvE,EACVuE,gBAAiBC,EADPxE,EACOwE,mBAAoBF,EAD3BtE,EAC2BsE,MAAOa,EADlCnF,EACkCmF,OAGpD,IAAOZ,GAAqBD,EAAMnQ,SAAUgR,EAA5C,CAoCA,GAAM9F,GAAO5F,KAAKO,MAAMsK,MAAO7K,KAAKO,MAAMwK,mBAE1C,QAAS9G,EAAM4B,SACd,IAAKvC,GACJW,EAAMC,kBACND,EAAM6B,gBACN,IAAM6G,GAAkB5B,EAAwCA,EAAqB,EAAxCF,EAAMnQ,OAAS,CAC5DsF,MAAKc,UACJiK,mBAAoB4B,GAErB,MAED,KAAKpJ,GACJU,EAAMC,kBACND,EAAM6B,gBACN,IAAM8G,GAAmC,OAAvB7B,GAAiCA,IAAuBF,EAAMnQ,OAAS,EAAM,EAAIqQ,EAAqB,CACxH/K,MAAKc,UACJiK,mBAAoB6B,GAErB,MAED,KAAKxC,GACmC,OAAlCpK,KAAKO,MAAMwK,qBACf/K,KAAK6M,WAAYjH,GAEjB5F,KAAKhC,MAAMgD,MAAO5C,EAAI,kBAEvB,MAED,KAAKqF,GACmC,OAAlCzD,KAAKO,MAAMwK,qBACf9G,EAAMC,kBACNlE,KAAK6M,WAAYjH,SA9DnB,QAAS3B,EAAM4B,SAGd,IAAKvC,GACC,IAAMW,EAAM1H,OAAOuQ,iBACvB7I,EAAMC,kBACND,EAAM6B,iBAGN7B,EAAM1H,OAAOwQ,kBAAmB,EAAG,GAEpC,MAID,KAAKxJ,GACCvD,KAAKhC,MAAMxC,MAAMd,SAAWuJ,EAAM1H,OAAOuQ,iBAC7C7I,EAAMC,kBACND,EAAM6B,iBAGN7B,EAAM1H,OAAOwQ,kBAAmB/M,KAAKhC,MAAMxC,MAAMd,OAAQsF,KAAKhC,MAAMxC,MAAMd,aXowC9EQ,IAAK,aACLM,MAAO,SW9sCIoK,GACX5F,KAAKhC,MAAM2C,SAAUiF,EAAKoH,KAAMpH,GAChC5F,KAAKc,UACJiK,mBAAoB,KACpBD,iBAAiB,OXytClB5P,IAAK,gBACLM,MAAO,SWjtCOoK,GACd5F,KAAK6M,WAAYjH,GAEjB5F,KAAK0K,SAAStE,QAAQ6G,WX2tCtB/R,IAAK,SACLM,MAAO,WWptCC,GAAA0R,GAAAlN,KAAAU,EAC2DV,KAAKhC,MADhEmP,EAAAzM,EACAlF,YADAF,KAAA6R,EACQ,GADRA,EAAAC,EAAA1M,EACY2M,gBADZ/R,KAAA8R,KAC8BE,EAD9B5M,EAC8B4M,WAAa9I,EAD3C9D,EAC2C8D,YAD3C+I,EAEwDvN,KAAKO,MAA7DuK,EAFAyC,EAEAzC,gBAAiBD,EAFjB0C,EAEiB1C,MAAOE,EAFxBwC,EAEwBxC,mBAAoBW,EAF5C6B,EAE4C7B,OAEpD,OACCxP,IAAAqC,QAAA6C,cAAA,OAAKxB,UAAU,oBACd1D,GAAAqC,QAAA6C,cAAA,SACCiM,UAAYA,EACZxM,KAAK,OACL2M,aAAapP,EAAI,OACjBqP,UAAA,EACAjS,MAAQA,EACRmF,SAAWX,KAAKW,SAChB+M,QAAUlD,EACVmD,YAAcvP,EAAI,+BAClBkG,UAAYtE,KAAKsE,UACjBsJ,KAAK,WACL5D,gBAAgBc,EAChB+C,oBAAkB,OAClBC,YAAA,gCAA6CR,EAC7CS,wBAA+C,OAAvBhD,EAAA,+BAA8DuC,EAA9D,IAA8EvC,MAAwBzP,GAC9HkQ,IAAMxL,KAAK0K,WAGRgB,GAAaxP,GAAAqC,QAAA6C,cAACiJ,EAAD,MAEfS,KAAsBD,EAAMnQ,SAAY8J,GACzCtI,GAAAqC,QAAA6C,cAACmI,GAAQM,SAAS,SAASmE,SAAA,EAAQpH,cAAe,GACjD1K,GAAAqC,QAAA6C,cAAA,OACCxB,UAAU,gCACVmC,GAAA,gCAAsCuL,EACtC9B,IAAMxL,KAAK0E,gBACXkJ,KAAK,WAEH/C,EAAMoD,IAAK,SAAErI,EAAM0F,GAAR,MACZpP,IAAAqC,QAAA6C,cAAA,UACClG,IAAM0K,EAAK7D,GACX6L,KAAK,SACLM,SAAS,KACTnM,GAAA,+BAAqCuL,EAArC,IAAqDhC,EACrDE,IAAM0B,EAAKiB,mBAAoB7C,GAC/B1L,UAAYsF,IAAY,gCACvBkJ,cAAe9C,IAAUP,IAE1BvJ,QAAU,iBAAM0L,GAAKmB,cAAezI,IACpC0I,gBAAgBhD,IAAUP,GAExBnF,EAAKlG,OAAStB,EAAI,wBXivCrBqM,GWvjDsBjM,EAkVfE,OAAoB4L,EAAgBG,KX4uC7C,SAAU3R,EAAQD,EAASH,GAEjC,YYllDAI,GAAAD,QAAiBH,EAAQ,KZylDnB,SAAUI,EAAQD,EAASH,GAEjC,YazlDA,SAAAwS,GAAAqD,EAAAC,EAAAC,GACAA,QAEA,IAAAD,EAAAE,WACAF,EAAAG,EAAAC,UAAAJ,GAGA,IAAAK,GAAAJ,EAAAI,sBACA1D,EAAAsD,EAAAtD,mBACA2D,EAAAL,EAAAK,aACAC,EAAAN,EAAAM,cACAC,EAAAP,EAAAO,WAAA,EACAC,EAAAR,EAAAQ,YAAA,EACAC,EAAAT,EAAAS,cAAA,EACAC,EAAAV,EAAAU,aAAA,CAEAN,OAAAvT,KAAAuT,IAEA,IAAAO,GAAAT,EAAAU,SAAAb,GACAc,EAAAX,EAAAY,OAAAhB,GACAiB,EAAAb,EAAAc,YAAAlB,GACAmB,EAAAf,EAAAgB,WAAApB,GACAqB,MAAAtU,GACAuU,MAAAvU,GACAwU,MAAAxU,GACAyU,MAAAzU,GACA0U,MAAA1U,GACA2U,MAAA3U,GACA4U,MAAA5U,GACA6U,MAAA7U,GACA8U,MAAA9U,GACA+U,MAAA/U,EAEA8T,IACAc,EAAA1B,EACA6B,EAAA1B,EAAA9M,OAAAqO,GACAE,EAAAzB,EAAA/M,MAAAsO,GACAC,GACA5I,KAAAoH,EAAA2B,WAAAJ,GACA5I,IAAAqH,EAAA4B,UAAAL,IAGAF,GACAzI,KAAA+H,EAAA/H,KAAA4I,EAAA5I,KAAA0H,EACA3H,IAAAgI,EAAAhI,IAAA6I,EAAA7I,IAAA0H,GAEAiB,GACA1I,KAAA+H,EAAA/H,KAAAmI,GAAAS,EAAA5I,KAAA6I,GAAAjB,EACA7H,IAAAgI,EAAAhI,IAAAkI,GAAAW,EAAA7I,IAAA+I,GAAAnB,GAEAa,EAAAI,IAEAP,EAAAjB,EAAAY,OAAAf,GACAqB,EAAArB,EAAAgC,aACAV,EAAAtB,EAAAiC,YACAV,GACAxI,KAAAiH,EAAA8B,WACAhJ,IAAAkH,EAAA+B,WAIAP,GACAzI,KAAA+H,EAAA/H,MAAAqI,EAAArI,MAAAmJ,WAAA/B,EAAAgC,IAAAnC,EAAA,yBAAAS,EACA3H,IAAAgI,EAAAhI,KAAAsI,EAAAtI,KAAAoJ,WAAA/B,EAAAgC,IAAAnC,EAAA,wBAAAQ,GAEAiB,GACA1I,KAAA+H,EAAA/H,KAAAmI,GAAAE,EAAArI,KAAAuI,GAAAY,WAAA/B,EAAAgC,IAAAnC,EAAA,0BAAAW,EACA7H,IAAAgI,EAAAhI,IAAAkI,GAAAI,EAAAtI,IAAAuI,GAAAa,WAAA/B,EAAAgC,IAAAnC,EAAA,2BAAAU,IAIAc,EAAA1I,IAAA,GAAA2I,EAAA3I,IAAA,GAEA,IAAAwH,EACAH,EAAA4B,UAAA/B,EAAAuB,EAAAzI,IAAA0I,EAAA1I,MACK,IAAAwH,EACLH,EAAA4B,UAAA/B,EAAAuB,EAAAzI,IAAA2I,EAAA3I,KAGA0I,EAAA1I,IAAA,EACAqH,EAAA4B,UAAA/B,EAAAuB,EAAAzI,IAAA0I,EAAA1I,KAEAqH,EAAA4B,UAAA/B,EAAAuB,EAAAzI,IAAA2I,EAAA3I,KAIA6D,IACA2D,MAAAxT,KAAAwT,OACAA,EACAH,EAAA4B,UAAA/B,EAAAuB,EAAAzI,IAAA0I,EAAA1I,KAEAqH,EAAA4B,UAAA/B,EAAAuB,EAAAzI,IAAA2I,EAAA3I,MAKAuH,IACAmB,EAAAzI,KAAA,GAAA0I,EAAA1I,KAAA,GAEA,IAAAwH,EACAJ,EAAA2B,WAAA9B,EAAAuB,EAAAxI,KAAAyI,EAAAzI,OACO,IAAAwH,EACPJ,EAAA2B,WAAA9B,EAAAuB,EAAAxI,KAAA0I,EAAA1I,MAGAyI,EAAAzI,KAAA,EACAoH,EAAA2B,WAAA9B,EAAAuB,EAAAxI,KAAAyI,EAAAzI,MAEAoH,EAAA2B,WAAA9B,EAAAuB,EAAAxI,KAAA0I,EAAA1I,MAIA4D,IACA4D,MAAAzT,KAAAyT,OACAA,EACAJ,EAAA2B,WAAA9B,EAAAuB,EAAAxI,KAAAyI,EAAAzI,MAEAoH,EAAA2B,WAAA9B,EAAAuB,EAAAxI,KAAA0I,EAAA1I,QAvHA,GAAAoH,GAAWjW,EAAQ,GA8HnBI,GAAAD,QAAAqS,GbkmDM,SAAUpS,EAAQD,EAASH,GAEjC,Yc5tDA,SAAAkY,GAAArC,GACA,GAAAsC,OAAAvV,GACAwV,MAAAxV,GACAyV,MAAAzV,GACA0V,EAAAzC,EAAA0C,cACA/E,EAAA8E,EAAA9E,KACAgF,EAAAF,KAAAG,eAkCA,OAhCAN,GAAAtC,EAAA3G,wBAMAkJ,EAAAD,EAAAtJ,KACAwJ,EAAAF,EAAAvJ,IAsBAwJ,GAAAI,EAAAE,YAAAlF,EAAAkF,YAAA,EACAL,GAAAG,EAAAG,WAAAnF,EAAAmF,WAAA,GAGA9J,KAAAuJ,EACAxJ,IAAAyJ,GAIA,QAAAO,GAAAC,EAAAjK,GACA,GAAAkK,GAAAD,EAAA,QAAAjK,EAAA,mBACA2E,EAAA,UAAA3E,EAAA,aACA,oBAAAkK,GAAA,CACA,GAAApY,GAAAmY,EAAAE,QAEAD,GAAApY,EAAA+X,gBAAAlF,GACA,gBAAAuF,KAEAA,EAAApY,EAAA8S,KAAAD,IAGA,MAAAuF,GAGA,QAAAE,GAAAH,GACA,MAAAD,GAAAC,GAGA,QAAAI,GAAAJ,GACA,MAAAD,GAAAC,GAAA,GAGA,QAAAK,GAAAC,GACA,GAAAC,GAAAlB,EAAAiB,GACAb,EAAAa,EAAAZ,cACAM,EAAAP,EAAAe,aAAAf,EAAAgB,YAGA,OAFAF,GAAAvK,MAAAmK,EAAAH,GACAO,EAAAxK,KAAAqK,EAAAJ,GACAO,EAEA,QAAAG,GAAA1D,EAAAlV,EAAA6Y,GACA,GAAAC,GAAA,GACA/Y,EAAAmV,EAAA0C,cACAmB,EAAAF,GAAA9Y,EAAA2Y,YAAAM,iBAAA9D,EAAA,KAOA,OAJA6D,KACAD,EAAAC,EAAAE,iBAAAjZ,IAAA+Y,EAAA/Y,IAGA8Y,EAUA,QAAAI,GAAAhE,EAAAlV,GAGA,GAAAmY,GAAAjD,EAAAiE,IAAAjE,EAAAiE,GAAAnZ,EAYA,IAAAoZ,EAAArK,KAAAoJ,KAAAkB,EAAAtK,KAAA/O,GAAA,CAEA,GAAA2O,GAAAuG,EAAAvG,MACAT,EAAAS,EAAA5E,GACAuP,EAAApE,EAAAqE,GAAAxP,EAGAmL,GAAAqE,GAAAxP,GAAAmL,EAAAiE,GAAApP,GAGA4E,EAAA5E,GAAA,aAAA/J,EAAA,MAAAmY,GAAA,EACAA,EAAAxJ,EAAA6K,UAAAC,EAGA9K,EAAA5E,GAAAmE,EAEAgH,EAAAqE,GAAAxP,GAAAuP,EAEA,WAAAnB,EAAA,OAAAA,EAQA,QAAAuB,GAAAC,EAAAC,GACA,OAAAla,GAAA,EAAiBA,EAAAia,EAAAtY,OAAgB3B,IACjCka,EAAAD,EAAAja,IAIA,QAAAma,GAAA3E,GACA,qBAAA4E,EAAA5E,EAAA,aASA,QAAA6E,GAAA7E,EAAA8E,EAAAC,GACA,GAAAC,MACAvL,EAAAuG,EAAAvG,MACA3O,MAAAiC,EAGA,KAAAjC,IAAAga,GACAA,EAAAnZ,eAAAb,KACAka,EAAAla,GAAA2O,EAAA3O,GACA2O,EAAA3O,GAAAga,EAAAha,GAIAia,GAAAra,KAAAsV,EAGA,KAAAlV,IAAAga,GACAA,EAAAnZ,eAAAb,KACA2O,EAAA3O,GAAAka,EAAAla,IAKA,QAAAma,GAAAjF,EAAAvQ,EAAAyV,GACA,GAAAjY,GAAA,EACAkY,MAAApY,GACAqY,MAAArY,GACAvC,MAAAuC,EACA,KAAAqY,EAAA,EAAaA,EAAA3V,EAAAtD,OAAkBiZ,IAE/B,GADAD,EAAA1V,EAAA2V,GAEA,IAAA5a,EAAA,EAAiBA,EAAA0a,EAAA/Y,OAAkB3B,IAAA,CACnC,GAAA6a,OAAAtY,EAEAsY,GADA,WAAAF,EACAA,EAAAD,EAAA1a,GAAA,QAEA2a,EAAAD,EAAA1a,GAEAyC,GAAAkV,WAAAyC,EAAA5E,EAAAqF,KAAA,EAIA,MAAApY,GAOA,QAAA6T,GAAAhT,GAGA,aAAAA,QAAA2K,OAqCA,QAAA6M,GAAAtF,EAAAlV,EAAAya,GACA,GAAAzE,EAAAd,GACA,gBAAAlV,EAAA0a,EAAAC,cAAAzF,GAAAwF,EAAAE,eAAA1F,EACG,QAAAA,EAAAG,SACH,gBAAArV,EAAA0a,EAAAG,SAAA3F,GAAAwF,EAAAI,UAAA5F,EAEA,IAAAkF,GAAA,UAAApa,GAAA,iCACA+a,EAAA,UAAA/a,EAAAkV,EAAA8F,YAAA9F,EAAA+F,aACAlC,EAAAe,EAAA5E,GACAgG,EAAArB,EAAA3E,EAAA6D,GACAoC,EAAA,GACA,MAAAJ,MAAA,KACAA,MAAA9Y,GAEAkZ,EAAArB,EAAA5E,EAAAlV,IACA,MAAAmb,GAAAC,OAAAD,GAAA,KACAA,EAAAjG,EAAAvG,MAAA3O,IAAA,GAGAmb,EAAA9D,WAAA8D,IAAA,OAEAlZ,KAAAwY,IACAA,EAAAS,EAAAG,EAAAC,EAEA,IAAAC,OAAAtZ,KAAA8Y,GAAAG,EACApC,EAAAiC,GAAAI,CACA,IAAAV,IAAAa,EACA,MAAAC,GACAzC,EAAAqB,EAAAjF,GAAA,oBAAAkF,EAAArB,GAEAoC,CAEA,IAAAI,EAAA,CACA,GAAAC,GAAAf,IAAAgB,GAAAtB,EAAAjF,GAAA,UAAAkF,EAAArB,GAAAoB,EAAAjF,GAAA,UAAAkF,EAAArB,EACA,OAAAD,IAAA2B,IAAAY,EAAA,EAAAG,GAEA,MAAAL,GAAAhB,EAAAjF,EAAAwG,EAAA/V,MAAA8U,GAAAL,EAAArB,GAUA,QAAA4C,GAAAzG,GACA,GAAA4D,OAAA7W,GACA2Z,EAAAxa,SAUA,OAPA,KAAA8T,EAAA8F,YACAlC,EAAA0B,EAAA5Y,UAAAK,GAAA2Z,GAEA7B,EAAA7E,EAAA2G,EAAA,WACA/C,EAAA0B,EAAA5Y,UAAAK,GAAA2Z,KAGA9C,EAGA,QAAAxB,GAAAkB,EAAAxY,EAAA8b,GACA,GAAA3Z,GAAA2Z,CACA,0BAAA9b,EAAA,YAAA+b,EAAA/b,IAQA,gBAAAmC,GACA,gBAAAA,KACAA,GAAA,WAEAqW,EAAA7J,MAAA3O,GAAAmC,IAGA2X,EAAAtB,EAAAxY,EAdA,QAAAN,KAAAM,GACAA,EAAAa,eAAAnB,IACA4X,EAAAkB,EAAA9Y,EAAAM,EAAAN,KAuCA,QAAAsc,GAAA9G,EAAAgB,GAEA,WAAAoB,EAAApC,EAAA,cACAA,EAAAvG,MAAA6B,SAAA,WAGA,IAAA0J,GAAA3B,EAAArD,GACAiD,KACApL,MAAA9K,GACAJ,MAAAI,EAEA,KAAAJ,IAAAqU,GACAA,EAAArV,eAAAgB,KACAkL,EAAAsK,WAAAC,EAAApC,EAAArT,KAAA,EACAsW,EAAAtW,GAAAkL,EAAAmJ,EAAArU,GAAAqY,EAAArY,GAGAyV,GAAApC,EAAAiD,GAnXA,GAAA8D,GAAA9b,OAAA+b,QAAA,SAAAhZ,GAAmD,OAAAxD,GAAA,EAAgBA,EAAA0B,UAAAC,OAAsB3B,IAAA,CAAO,GAAAyc,GAAA/a,UAAA1B,EAA2B,QAAAmC,KAAAsa,GAA0Bhc,OAAAS,UAAAC,eAAAjB,KAAAuc,EAAAta,KAAyDqB,EAAArB,GAAAsa,EAAAta,IAAiC,MAAAqB,IAE/O6Y,EAAA,kBAAAK,SAAA,gBAAAA,QAAAC,SAAA,SAAArZ,GAAoG,aAAAA,IAAqB,SAAAA,GAAmB,MAAAA,IAAA,kBAAAoZ,SAAApZ,EAAAoB,cAAAgY,OAAA,eAAApZ,IAE5IsZ,EAAA,wCAAAH,OA4FA/C,EAAA,GAAAmD,QAAA,KAAAD,EAAA,uBACAjD,EAAA,4BACAF,EAAA,eACAI,EAAA,eACAxP,EAAA,OACA0P,EAAA,KAsCAK,MAAA7X,EACA,oBAAA0L,UACAmM,EAAAnM,OAAAqL,iBAAAJ,EAAAM,EAaA,IAAAwC,IAAA,6BACAJ,GAAA,EACAG,EAAA,EACAJ,EAAA,EA0DAX,IAEAhB,IAAA,2BAAA1Z,GACA0a,EAAA,MAAA1a,GAAA,SAAAwc,GACA,GAAAzc,GAAAyc,EAAApE,QACA,OAAAqE,MAAAC,IAGA3c,EAAA+X,gBAAA,SAAA9X,GAEAD,EAAA8S,KAAA,SAAA7S,GAAA0a,EAAA,WAAA1a,GAAAD,KAGA2a,EAAA,WAAA1a,GAAA,SAAA6W,GAEA,GAAAwD,GAAA,SAAAra,EACA2X,EAAAd,EAAAuB,SACAvF,EAAA8E,EAAA9E,KACAiF,EAAAH,EAAAG,gBACA6E,EAAA7E,EAAAuC,EAGA,sBAAA1C,EAAAiF,YAAAD,GAAA9J,KAAAwH,IAAAsC,IAmDA,IAAAd,IACArL,SAAA,WACAqM,WAAA,SACAC,QAAA,QAuCApD,IAAA,2BAAA1Z,GACA,GAAA+c,GAAA/c,EAAAgd,OAAA,GAAAC,cAAAjd,EAAA2F,MAAA,EACA+U,GAAA,QAAAqC,GAAA,SAAAvE,EAAA0E,GACA,MAAA1E,IAAAmD,EAAAnD,EAAAxY,EAAAkd,EA/KA,EA+KA7B,GAEA,IAAAjB,GAAA,UAAApa,GAAA,gCAEA0a,GAAA1a,GAAA,SAAAkV,EAAA4D,GACA,OAAA7W,KAAA6W,EAWA,MAAA5D,IAAAyG,EAAAzG,EAAAlV,EAAAsb,EAVA,IAAApG,EAAA,CACA,GAAA6D,GAAAe,EAAA5E,EAKA,OAJA2E,GAAA3E,KAEA4D,GAAAqB,EAAAjF,GAAA,oBAAAkF,EAAArB,IAEAzB,EAAApC,EAAAlV,EAAA8Y,OA6BArZ,EAAAD,QAAAyc,GACA1G,UAAA,SAAA4H,GACA,GAAAxF,GAAAwF,EAAAvF,eAAAuF,CACA,OAAAxF,GAAAe,aAAAf,EAAAgB,cAEAzC,OAAA,SAAAsC,EAAArW,GACA,YAAAA,EAGA,MAAAoW,GAAAC,EAFAwD,GAAAxD,EAAArW,IAMA6T,WACA0D,OACApC,MACA8F,MAAA,SAAApa,GACA,GAAAmV,KACA,QAAAzY,KAAAsD,GACAA,EAAAnC,eAAAnB,KACAyY,EAAAzY,GAAAsD,EAAAtD,GAIA,IADAsD,EAAAqa,SAEA,OAAA3d,KAAAsD,GACAA,EAAAnC,eAAAnB,KACAyY,EAAAkF,SAAA3d,GAAAsD,EAAAqa,SAAA3d,GAIA,OAAAyY,IAEAlB,WAAA,SAAAiB,EAAA4D,GACA,GAAA9F,EAAAkC,GAAA,CACA,OAAAjW,KAAA6Z,EACA,MAAAzD,GAAAH,EAEAvK,QAAA2P,SAAAxB,EAAAxD,EAAAJ,QACK,CACL,OAAAjW,KAAA6Z,EACA,MAAA5D,GAAAjB,UAEAiB,GAAAjB,WAAA6E,IAGA5E,UAAA,SAAAgB,EAAA4D,GACA,GAAA9F,EAAAkC,GAAA,CACA,OAAAjW,KAAA6Z,EACA,MAAAxD,GAAAJ,EAEAvK,QAAA2P,SAAAjF,EAAAH,GAAA4D,OACK,CACL,OAAA7Z,KAAA6Z,EACA,MAAA5D,GAAAhB,SAEAgB,GAAAhB,UAAA4E,IAIAnB,cAAA,EACAC,eAAA,GACCF,IdyuDK,SAAUjb,EAAQD","file":"gutenberg-support.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__blocks__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__formats__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__assets_styles_index_scss__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__assets_styles_index_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__assets_styles_index_scss__);\n\n\n\n\n\nObject(__WEBPACK_IMPORTED_MODULE_0__blocks__[\"a\" /* default */])();\nObject(__WEBPACK_IMPORTED_MODULE_1__formats__[\"a\" /* default */])();\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = registerBlocks;\nvar registerBlockType = wp.blocks.registerBlockType;\n\n/**\n * Register gutenberg blocks.\n * \n * @since 3.6\n */\n\nfunction registerBlocks() {\n\n [].forEach(function (block) {\n if (!block) return;\n\n var name = block.name,\n settings = block.settings;\n\n registerBlockType(name, settings);\n });\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = registerFormats;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ta_link__ = __webpack_require__(4);\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n\n\nvar registerFormatType = wp.richText.registerFormatType;\n\n/**\n * Register custom formats.\n * \n * @since 3.6\n */\n\nfunction registerFormats() {\n\n [__WEBPACK_IMPORTED_MODULE_0__ta_link__[\"a\" /* taLink */]].forEach(function (_ref) {\n var name = _ref.name,\n settings = _objectWithoutProperties(_ref, [\"name\"]);\n\n return registerFormatType(name, settings);\n });\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return taLink; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__inline__ = __webpack_require__(5);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nvar __ = wp.i18n.__;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n Fragment = _wp$element.Fragment;\nvar withSpokenMessages = wp.components.withSpokenMessages;\nvar _wp$richText = wp.richText,\n getTextContent = _wp$richText.getTextContent,\n applyFormat = _wp$richText.applyFormat,\n removeFormat = _wp$richText.removeFormat,\n slice = _wp$richText.slice;\nvar isURL = wp.url.isURL;\nvar _wp$editor = wp.editor,\n RichTextToolbarButton = _wp$editor.RichTextToolbarButton,\n RichTextShortcut = _wp$editor.RichTextShortcut;\nvar _wp$components = wp.components,\n Path = _wp$components.Path,\n SVG = _wp$components.SVG;\n\n\nvar name = \"ta/link\";\n\n/**\n * Custom Affiliate link format. When applied will wrap selected text with <ta href=\"\" linkid=\"\"></ta> custom element.\n * Custom element is implemented here as we are not allowed to use <a> tag due to Gutenberg limitations.\n * Element is converted to normal <a> tag on frontend via PHP script filtered on 'the_content'.\n * \n * @since 3.6\n */\nvar taLink = {\n\tname: name,\n\ttitle: __(\"Affiliate Link\"),\n\ttagName: \"ta\",\n\tclassName: null,\n\tattributes: {\n\t\turl: \"href\",\n\t\ttarget: \"target\"\n\t},\n\tedit: withSpokenMessages(function (_Component) {\n\t\t_inherits(LinkEdit, _Component);\n\n\t\t/**\n * Component constructor.\n * \n * @since 3.6\n */\n\t\tfunction LinkEdit() {\n\t\t\t_classCallCheck(this, LinkEdit);\n\n\t\t\tvar _this = _possibleConstructorReturn(this, (LinkEdit.__proto__ || Object.getPrototypeOf(LinkEdit)).apply(this, arguments));\n\n\t\t\t_this.addLink = _this.addLink.bind(_this);\n\t\t\t_this.stopAddingLink = _this.stopAddingLink.bind(_this);\n\t\t\t_this.onRemoveFormat = _this.onRemoveFormat.bind(_this);\n\t\t\t_this.state = {\n\t\t\t\taddingLink: false\n\t\t\t};\n\t\t\treturn _this;\n\t\t}\n\n\t\t/**\n * Callback to set state to adding link status.\n * \n * @since 3.6\n */\n\n\n\t\t_createClass(LinkEdit, [{\n\t\t\tkey: \"addLink\",\n\t\t\tvalue: function addLink() {\n\t\t\t\tvar _props = this.props,\n\t\t\t\t value = _props.value,\n\t\t\t\t onChange = _props.onChange;\n\n\t\t\t\tvar text = getTextContent(slice(value));\n\n\t\t\t\tif (text && isURL(text)) {\n\t\t\t\t\tonChange(applyFormat(value, { type: name, attributes: { url: text } }));\n\t\t\t\t} else {\n\t\t\t\t\tthis.setState({ addingLink: true });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n * Callback to set state to stop adding link status.\n * \n * @since 3.6\n */\n\n\t\t}, {\n\t\t\tkey: \"stopAddingLink\",\n\t\t\tvalue: function stopAddingLink() {\n\t\t\t\tthis.setState({ addingLink: false });\n\t\t\t}\n\n\t\t\t/**\n * Remove format event callback.\n * \n * @since 3.6\n */\n\n\t\t}, {\n\t\t\tkey: \"onRemoveFormat\",\n\t\t\tvalue: function onRemoveFormat() {\n\t\t\t\tvar _props2 = this.props,\n\t\t\t\t value = _props2.value,\n\t\t\t\t onChange = _props2.onChange,\n\t\t\t\t speak = _props2.speak;\n\n\n\t\t\t\tonChange(removeFormat(value, name));\n\t\t\t\tspeak(__(\"Affiliate Link removed.\"), \"assertive\");\n\t\t\t}\n\n\t\t\t/**\n * Component render method.\n * \n * @since 3.6\n */\n\n\t\t}, {\n\t\t\tkey: \"render\",\n\t\t\tvalue: function render() {\n\t\t\t\tvar _props3 = this.props,\n\t\t\t\t isActive = _props3.isActive,\n\t\t\t\t activeAttributes = _props3.activeAttributes,\n\t\t\t\t value = _props3.value,\n\t\t\t\t onChange = _props3.onChange;\n\n\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\tFragment,\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(RichTextShortcut, {\n\t\t\t\t\t\ttype: \"access\",\n\t\t\t\t\t\tcharacter: \"s\",\n\t\t\t\t\t\tonUse: this.onRemoveFormat\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(RichTextShortcut, {\n\t\t\t\t\t\ttype: \"primary\",\n\t\t\t\t\t\tcharacter: \"l\",\n\t\t\t\t\t\tonUse: this.addLink\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(RichTextShortcut, {\n\t\t\t\t\t\ttype: \"primaryShift\",\n\t\t\t\t\t\tcharacter: \"l\",\n\t\t\t\t\t\tonUse: this.onRemoveFormat\n\t\t\t\t\t}),\n\t\t\t\t\tisActive && wp.element.createElement(RichTextToolbarButton, {\n\t\t\t\t\t\ticon: \"editor-unlink\",\n\t\t\t\t\t\ttitle: __('Remove Affiliate Link'),\n\t\t\t\t\t\tclassName: \"ta-unlink-button\",\n\t\t\t\t\t\tonClick: this.onRemoveFormat,\n\t\t\t\t\t\tisActive: isActive,\n\t\t\t\t\t\tshortcutType: \"primaryShift\",\n\t\t\t\t\t\tshortcutCharacter: \"l\"\n\t\t\t\t\t}),\n\t\t\t\t\t!isActive && wp.element.createElement(RichTextToolbarButton, {\n\t\t\t\t\t\ticon: wp.element.createElement(\n\t\t\t\t\t\t\tSVG,\n\t\t\t\t\t\t\t{ xmlns: \"http://www.w3.org/2000/svg\", width: \"16.688\", height: \"9.875\", viewBox: \"0 0 16.688 9.875\" },\n\t\t\t\t\t\t\twp.element.createElement(Path, { id: \"TA.svg\", fill: \"black\", \"class\": \"cls-1\", d: \"M2.115,15.12H4.847L6.836,7.7H9.777l0.63-2.381H1.821L1.177,7.7H4.118Zm4.758,0H9.829l1.177-1.751h3.782l0.238,1.751h2.858L16.357,5.245H13.7Zm5.5-3.866,1.835-2.816,0.35,2.816H12.378Z\", transform: \"translate(-1.188 -5.25)\" })\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttitle: __('Affiliate Link'),\n\t\t\t\t\t\tclassName: \"ta-link-button\",\n\t\t\t\t\t\tonClick: this.addLink,\n\t\t\t\t\t\tshortcutType: \"primary\",\n\t\t\t\t\t\tshortcutCharacter: \"l\"\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(__WEBPACK_IMPORTED_MODULE_0__inline__[\"a\" /* default */], {\n\t\t\t\t\t\taddingLink: this.state.addingLink,\n\t\t\t\t\t\tstopAddingLink: this.stopAddingLink,\n\t\t\t\t\t\tisActive: isActive,\n\t\t\t\t\t\tactiveAttributes: activeAttributes,\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tonChange: onChange\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t}]);\n\n\t\treturn LinkEdit;\n\t}(Component))\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__positioned_at_selection__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__url_popover__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__url_input__ = __webpack_require__(9);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\nvar __ = wp.i18n.__;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n createRef = _wp$element.createRef;\nvar _wp$components = wp.components,\n ExternalLink = _wp$components.ExternalLink,\n ToggleControl = _wp$components.ToggleControl,\n IconButton = _wp$components.IconButton,\n withSpokenMessages = _wp$components.withSpokenMessages;\nvar _wp$keycodes = wp.keycodes,\n LEFT = _wp$keycodes.LEFT,\n RIGHT = _wp$keycodes.RIGHT,\n UP = _wp$keycodes.UP,\n DOWN = _wp$keycodes.DOWN,\n BACKSPACE = _wp$keycodes.BACKSPACE,\n ENTER = _wp$keycodes.ENTER;\nvar _wp$url = wp.url,\n prependHTTP = _wp$url.prependHTTP,\n safeDecodeURI = _wp$url.safeDecodeURI,\n filterURLForDisplay = _wp$url.filterURLForDisplay;\nvar _wp$richText = wp.richText,\n create = _wp$richText.create,\n insert = _wp$richText.insert,\n isCollapsed = _wp$richText.isCollapsed,\n applyFormat = _wp$richText.applyFormat,\n getTextContent = _wp$richText.getTextContent,\n slice = _wp$richText.slice;\n\n\nvar stopKeyPropagation = function stopKeyPropagation(event) {\n\treturn event.stopPropagation();\n};\n\n/**\n * Generates the format object that will be applied to the link text.\n * \n * @since 3.6\n *\n * @param {string} url The href of the link.\n * @param {boolean} linkid Affiliate link ID.\n * @param {Object} text The text that is being hyperlinked.\n *\n * @return {Object} The final format object.\n */\nfunction createLinkFormat(_ref) {\n\tvar url = _ref.url,\n\t linkid = _ref.linkid,\n\t text = _ref.text;\n\n\tvar format = {\n\t\ttype: \"ta/link\",\n\t\tattributes: {\n\t\t\turl: url,\n\t\t\tlinkid: linkid.toString()\n\t\t}\n\t};\n\n\treturn format;\n}\n\n/**\n * Check if input is being show.\n * \n * @since 3.6\n * \n * @param {Object} props Component props.\n * @param {Object} state Component state.\n */\nfunction isShowingInput(props, state) {\n\treturn props.addingLink || state.editLink;\n}\n\n/**\n * Affiliate Link editor JSX element.\n * \n * @since 3.6\n * \n * @param {Object} param0 Component props (destructred).\n */\nvar LinkEditor = function LinkEditor(_ref2) {\n\tvar value = _ref2.value,\n\t onChangeInputValue = _ref2.onChangeInputValue,\n\t onKeyDown = _ref2.onKeyDown,\n\t submitLink = _ref2.submitLink,\n\t invalidLink = _ref2.invalidLink,\n\t resetInvalidLink = _ref2.resetInvalidLink,\n\t autocompleteRef = _ref2.autocompleteRef;\n\treturn (\n\t\t// Disable reason: KeyPress must be suppressed so the block doesn't hide the toolbar\n\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n\t\twp.element.createElement(\n\t\t\t'form',\n\t\t\t{\n\t\t\t\tclassName: 'editor-format-toolbar__link-container-content ta-link-search-popover',\n\t\t\t\tonKeyPress: stopKeyPropagation,\n\t\t\t\tonKeyDown: onKeyDown,\n\t\t\t\tonSubmit: submitLink\n\t\t\t},\n\t\t\twp.element.createElement(__WEBPACK_IMPORTED_MODULE_4__url_input__[\"a\" /* default */], {\n\t\t\t\tvalue: value,\n\t\t\t\tonChange: onChangeInputValue,\n\t\t\t\tautocompleteRef: autocompleteRef,\n\t\t\t\tinvalidLink: invalidLink,\n\t\t\t\tresetInvalidLink: resetInvalidLink\n\t\t\t}),\n\t\t\twp.element.createElement(IconButton, { icon: 'editor-break', label: __('Apply'), type: 'submit' })\n\t\t)\n\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions */\n\n\t);\n};\n\n/**\n * Affiliate link url viewer JSX element.\n * \n * @param {*} param0 Component props (destructred).\n */\nvar LinkViewerUrl = function LinkViewerUrl(_ref3) {\n\tvar url = _ref3.url;\n\n\tvar prependedURL = prependHTTP(url);\n\tvar linkClassName = __WEBPACK_IMPORTED_MODULE_0_classnames___default()('editor-format-toolbar__link-container-value', {\n\t\t'has-invalid-link': !Object(__WEBPACK_IMPORTED_MODULE_2__utils__[\"a\" /* isValidHref */])(prependedURL)\n\t});\n\n\tif (!url) {\n\t\treturn wp.element.createElement('span', { className: linkClassName });\n\t}\n\n\treturn wp.element.createElement(\n\t\tExternalLink,\n\t\t{\n\t\t\tclassName: linkClassName,\n\t\t\thref: url\n\t\t},\n\t\tfilterURLForDisplay(safeDecodeURI(url))\n\t);\n};\n\n/**\n * Affiliate link viewer JSX element.\n * \n * @param {*} param0 Component props (destructred).\n */\nvar LinkViewer = function LinkViewer(_ref4) {\n\tvar url = _ref4.url,\n\t editLink = _ref4.editLink;\n\n\treturn (\n\t\t// Disable reason: KeyPress must be suppressed so the block doesn't hide the toolbar\n\t\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\t\twp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: 'editor-format-toolbar__link-container-content',\n\t\t\t\tonKeyPress: stopKeyPropagation\n\t\t\t},\n\t\t\twp.element.createElement(LinkViewerUrl, { url: url }),\n\t\t\twp.element.createElement(IconButton, { icon: 'edit', label: __('Edit'), onClick: editLink })\n\t\t)\n\t\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n\n\t);\n};\n\n/**\n * Inline affiliate link UI Component.\n * \n * @since 3.6\n * \n * @param {*} param0 Component props (destructred).\n */\n\nvar InlineAffiliateLinkUI = function (_Component) {\n\t_inherits(InlineAffiliateLinkUI, _Component);\n\n\tfunction InlineAffiliateLinkUI() {\n\t\t_classCallCheck(this, InlineAffiliateLinkUI);\n\n\t\tvar _this = _possibleConstructorReturn(this, (InlineAffiliateLinkUI.__proto__ || Object.getPrototypeOf(InlineAffiliateLinkUI)).apply(this, arguments));\n\n\t\t_this.editLink = _this.editLink.bind(_this);\n\t\t_this.submitLink = _this.submitLink.bind(_this);\n\t\t_this.onKeyDown = _this.onKeyDown.bind(_this);\n\t\t_this.onChangeInputValue = _this.onChangeInputValue.bind(_this);\n\t\t_this.onClickOutside = _this.onClickOutside.bind(_this);\n\t\t_this.resetState = _this.resetState.bind(_this);\n\t\t_this.autocompleteRef = createRef();\n\t\t_this.resetInvalidLink = _this.resetInvalidLink.bind(_this);\n\n\t\t_this.state = {\n\t\t\tinputValue: '',\n\t\t\tlinkid: 0,\n\t\t\tpost: null,\n\t\t\tinvalidLink: false\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Stop the key event from propagating up to ObserveTyping.startTypingInTextField.\n * \n * @since 3.6\n * \n * @param {Object} event Event object.\n */\n\n\n\t_createClass(InlineAffiliateLinkUI, [{\n\t\tkey: 'onKeyDown',\n\t\tvalue: function onKeyDown(event) {\n\t\t\tif ([LEFT, DOWN, RIGHT, UP, BACKSPACE, ENTER].indexOf(event.keyCode) > -1) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Callback to set state when input value is changed.\n * \n * @since 3.6\n * \n * @param {*} inputValue \n * @param {*} post \n */\n\n\t}, {\n\t\tkey: 'onChangeInputValue',\n\t\tvalue: function onChangeInputValue(inputValue) {\n\t\t\tvar post = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\t\tvar linkid = post ? post.id : 0;\n\t\t\tthis.setState({ inputValue: inputValue, linkid: linkid, post: post });\n\t\t}\n\n\t\t/**\n * Callback to set state when edit affiliate link (already inserted) is triggered.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\n\t}, {\n\t\tkey: 'editLink',\n\t\tvalue: function editLink(event) {\n\t\t\tthis.setState({ editLink: true });\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\t/**\n * Callback to apply the affiliate link format to the selected text or position in the active block.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\n\t}, {\n\t\tkey: 'submitLink',\n\t\tvalue: function submitLink(event) {\n\t\t\tvar _props = this.props,\n\t\t\t isActive = _props.isActive,\n\t\t\t value = _props.value,\n\t\t\t onChange = _props.onChange,\n\t\t\t speak = _props.speak;\n\t\t\tvar _state = this.state,\n\t\t\t inputValue = _state.inputValue,\n\t\t\t linkid = _state.linkid,\n\t\t\t post = _state.post;\n\n\t\t\tvar url = prependHTTP(inputValue);\n\t\t\tvar selectedText = getTextContent(slice(value));\n\t\t\tvar format = createLinkFormat({\n\t\t\t\turl: url,\n\t\t\t\tlinkid: linkid,\n\t\t\t\ttext: selectedText\n\t\t\t});\n\n\t\t\tevent.preventDefault();\n\n\t\t\tif (!linkid || !post) {\n\t\t\t\tthis.setState({ invalidLink: true });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isCollapsed(value) && !isActive) {\n\t\t\t\tvar toInsert = applyFormat(create({ text: post.title }), format, 0, url.length);\n\t\t\t\tonChange(insert(value, toInsert));\n\t\t\t} else {\n\t\t\t\tonChange(applyFormat(value, format));\n\t\t\t}\n\n\t\t\tthis.resetState();\n\n\t\t\tif (!Object(__WEBPACK_IMPORTED_MODULE_2__utils__[\"a\" /* isValidHref */])(url)) {\n\t\t\t\tspeak(__('Warning: the link has been inserted but may have errors. Please test it.'), 'assertive');\n\t\t\t} else if (isActive) {\n\t\t\t\tspeak(__('Link edited.'), 'assertive');\n\t\t\t} else {\n\t\t\t\tspeak(__('Link inserted'), 'assertive');\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Callback to run when users clicks outside the popover UI.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\n\t}, {\n\t\tkey: 'onClickOutside',\n\t\tvalue: function onClickOutside(event) {\n\t\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t\t// so onClickOutside fails to detect that a click on a suggestion occured in the\n\t\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t\t// return to avoid the popover being closed.\n\t\t\tvar autocompleteElement = this.autocompleteRef.current;\n\t\t\tif (autocompleteElement && autocompleteElement.contains(event.target)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.resetState();\n\t\t}\n\n\t\t/**\n * Reset state callback.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'resetState',\n\t\tvalue: function resetState() {\n\t\t\tthis.props.stopAddingLink();\n\t\t\tthis.setState({ inputValue: '', editLink: false });\n\t\t\tthis.resetInvalidLink();\n\t\t}\n\n\t\t/**\n * Reset invalid link state callback. Separated as we need to run this independently from resetState() callback.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'resetInvalidLink',\n\t\tvalue: function resetInvalidLink() {\n\t\t\tthis.setState({ invalidLink: false });\n\t\t}\n\n\t\t/**\n * Component render method.\n *\n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _props2 = this.props,\n\t\t\t isActive = _props2.isActive,\n\t\t\t _props2$activeAttribu = _props2.activeAttributes,\n\t\t\t url = _props2$activeAttribu.url,\n\t\t\t linkid = _props2$activeAttribu.linkid,\n\t\t\t addingLink = _props2.addingLink,\n\t\t\t value = _props2.value,\n\t\t\t onChange = _props2.onChange;\n\n\n\t\t\tif (!isActive && !addingLink) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar _state2 = this.state,\n\t\t\t inputValue = _state2.inputValue,\n\t\t\t invalidLink = _state2.invalidLink;\n\n\t\t\tvar showInput = isShowingInput(this.props, this.state);\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_1__positioned_at_selection__[\"a\" /* default */],\n\t\t\t\t{\n\t\t\t\t\tkey: '' + value.start + value.end /* Used to force rerender on selection change */\n\t\t\t\t},\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_3__url_popover__[\"a\" /* default */],\n\t\t\t\t\t{\n\t\t\t\t\t\tonClickOutside: this.onClickOutside,\n\t\t\t\t\t\tonClose: this.resetState,\n\t\t\t\t\t\tfocusOnMount: showInput ? 'firstElement' : false,\n\t\t\t\t\t\tinvalidLink: invalidLink\n\t\t\t\t\t},\n\t\t\t\t\tshowInput ? wp.element.createElement(LinkEditor, {\n\t\t\t\t\t\tvalue: inputValue,\n\t\t\t\t\t\tonChangeInputValue: this.onChangeInputValue,\n\t\t\t\t\t\tonKeyDown: this.onKeyDown,\n\t\t\t\t\t\tsubmitLink: this.submitLink,\n\t\t\t\t\t\tautocompleteRef: this.autocompleteRef,\n\t\t\t\t\t\tupdateLinkId: this.updateLinkId,\n\t\t\t\t\t\tinvalidLink: invalidLink,\n\t\t\t\t\t\tresetInvalidLink: this.resetInvalidLink\n\t\t\t\t\t}) : wp.element.createElement(LinkViewer, {\n\t\t\t\t\t\turl: url,\n\t\t\t\t\t\teditLink: this.editLink\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn InlineAffiliateLinkUI;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (withSpokenMessages(InlineAffiliateLinkUI));\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Component = wp.element.Component;\nvar _wp$dom = wp.dom,\n getOffsetParent = _wp$dom.getOffsetParent,\n getRectangleFromRange = _wp$dom.getRectangleFromRange;\n\n/**\n * Returns a style object for applying as `position: absolute` for an element\n * relative to the bottom-center of the current selection. Includes `top` and\n * `left` style properties.\n * \n * @since 3.6\n *\n * @return {Object} Style object.\n */\n\nfunction getCurrentCaretPositionStyle() {\n\tvar selection = window.getSelection();\n\n\t// Unlikely, but in the case there is no selection, return empty styles so\n\t// as to avoid a thrown error by `Selection#getRangeAt` on invalid index.\n\tif (selection.rangeCount === 0) {\n\t\treturn {};\n\t}\n\n\t// Get position relative viewport.\n\tvar rect = getRectangleFromRange(selection.getRangeAt(0));\n\tvar top = rect.top + rect.height;\n\tvar left = rect.left + rect.width / 2;\n\n\t// Offset by positioned parent, if one exists.\n\tvar offsetParent = getOffsetParent(selection.anchorNode);\n\tif (offsetParent) {\n\t\tvar parentRect = offsetParent.getBoundingClientRect();\n\t\ttop -= parentRect.top;\n\t\tleft -= parentRect.left;\n\t}\n\n\treturn { top: top, left: left };\n}\n\n/**\n * Component which renders itself positioned under the current caret selection.\n * The position is calculated at the time of the component being mounted, so it\n * should only be mounted after the desired selection has been made.\n * \n * @since 3.6\n *\n * @type {WPComponent}\n */\n\nvar ThirstyPositionedAtSelection = function (_Component) {\n\t_inherits(ThirstyPositionedAtSelection, _Component);\n\n\t/**\n * Component constructor method.\n * \n * @since 3.6\n */\n\tfunction ThirstyPositionedAtSelection() {\n\t\t_classCallCheck(this, ThirstyPositionedAtSelection);\n\n\t\tvar _this = _possibleConstructorReturn(this, (ThirstyPositionedAtSelection.__proto__ || Object.getPrototypeOf(ThirstyPositionedAtSelection)).apply(this, arguments));\n\n\t\t_this.state = {\n\t\t\tstyle: getCurrentCaretPositionStyle()\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Component render method.\n * \n * @since 3.6\n */\n\n\n\t_createClass(ThirstyPositionedAtSelection, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar children = this.props.children;\n\t\t\tvar style = this.state.style;\n\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"editor-format-toolbar__selection-position\", style: style },\n\t\t\t\tchildren\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn ThirstyPositionedAtSelection;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (ThirstyPositionedAtSelection);\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isValidHref;\nvar _lodash = lodash,\n startsWith = _lodash.startsWith;\nvar _wp$url = wp.url,\n getProtocol = _wp$url.getProtocol,\n isValidProtocol = _wp$url.isValidProtocol,\n getAuthority = _wp$url.getAuthority,\n isValidAuthority = _wp$url.isValidAuthority,\n getPath = _wp$url.getPath,\n isValidPath = _wp$url.isValidPath,\n getQueryString = _wp$url.getQueryString,\n isValidQueryString = _wp$url.isValidQueryString,\n getFragment = _wp$url.getFragment,\n isValidFragment = _wp$url.isValidFragment;\n\n/**\n * Check for issues with the provided href.\n * \n * @since 3.6\n *\n * @param {string} href The href.\n * @return {boolean} Is the href invalid?\n */\n\nfunction isValidHref(href) {\n\tif (!href) {\n\t\treturn false;\n\t}\n\n\tvar trimmedHref = href.trim();\n\n\tif (!trimmedHref) {\n\t\treturn false;\n\t}\n\n\t// Does the href start with something that looks like a URL protocol?\n\tif (/^\\S+:/.test(trimmedHref)) {\n\t\tvar protocol = getProtocol(trimmedHref);\n\t\tif (!isValidProtocol(protocol)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Add some extra checks for http(s) URIs, since these are the most common use-case.\n\t\t// This ensures URIs with an http protocol have exactly two forward slashes following the protocol.\n\t\tif (startsWith(protocol, 'http') && !/^https?:\\/\\/[^\\/\\s]/i.test(trimmedHref)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar authority = getAuthority(trimmedHref);\n\t\tif (!isValidAuthority(authority)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar path = getPath(trimmedHref);\n\t\tif (path && !isValidPath(path)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar queryString = getQueryString(trimmedHref);\n\t\tif (queryString && !isValidQueryString(queryString)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar fragment = getFragment(trimmedHref);\n\t\tif (fragment && !isValidFragment(fragment)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Validate anchor links.\n\tif (startsWith(trimmedHref, '#') && !isValidFragment(trimmedHref)) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar __ = wp.i18n.__;\nvar Component = wp.element.Component;\nvar _wp$components = wp.components,\n Popover = _wp$components.Popover,\n IconButton = _wp$components.IconButton;\n\n/**\n * Custom URL Popover component.\n * \n * @since 3.6\n */\n\nvar ThirstyURLPopover = function (_Component) {\n\t_inherits(ThirstyURLPopover, _Component);\n\n\t/**\n * Component constructor method.\n * \n * @since 3.6\n */\n\tfunction ThirstyURLPopover() {\n\t\t_classCallCheck(this, ThirstyURLPopover);\n\n\t\tvar _this = _possibleConstructorReturn(this, (ThirstyURLPopover.__proto__ || Object.getPrototypeOf(ThirstyURLPopover)).apply(this, arguments));\n\n\t\t_this.toggleSettingsVisibility = _this.toggleSettingsVisibility.bind(_this);\n\n\t\t_this.state = {\n\t\t\tisSettingsExpanded: false\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Component constructor.\n * \n * @since 3.6\n */\n\n\n\t_createClass(ThirstyURLPopover, [{\n\t\tkey: 'toggleSettingsVisibility',\n\t\tvalue: function toggleSettingsVisibility() {\n\t\t\tthis.setState({\n\t\t\t\tisSettingsExpanded: !this.state.isSettingsExpanded\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Component render method.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _props = this.props,\n\t\t\t children = _props.children,\n\t\t\t renderSettings = _props.renderSettings,\n\t\t\t onClose = _props.onClose,\n\t\t\t onClickOutside = _props.onClickOutside,\n\t\t\t invalidLink = _props.invalidLink,\n\t\t\t _props$position = _props.position,\n\t\t\t position = _props$position === undefined ? 'bottom center' : _props$position,\n\t\t\t _props$focusOnMount = _props.focusOnMount,\n\t\t\t focusOnMount = _props$focusOnMount === undefined ? 'firstElement' : _props$focusOnMount;\n\t\t\tvar isSettingsExpanded = this.state.isSettingsExpanded;\n\n\n\t\t\tvar showSettings = !!renderSettings && isSettingsExpanded;\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\tPopover,\n\t\t\t\t{\n\t\t\t\t\tclassName: 'ta-url-popover editor-url-popover',\n\t\t\t\t\tfocusOnMount: focusOnMount,\n\t\t\t\t\tposition: position,\n\t\t\t\t\tonClose: onClose,\n\t\t\t\t\tonClickOutside: onClickOutside\n\t\t\t\t},\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'editor-url-popover__row' },\n\t\t\t\t\tchildren,\n\t\t\t\t\t!!renderSettings && wp.element.createElement(IconButton, {\n\t\t\t\t\t\tclassName: 'editor-url-popover__settings-toggle',\n\t\t\t\t\t\ticon: 'ellipsis',\n\t\t\t\t\t\tlabel: __('Link Settings'),\n\t\t\t\t\t\tonClick: this.toggleSettingsVisibility,\n\t\t\t\t\t\t'aria-expanded': isSettingsExpanded\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\tshowSettings && wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'editor-url-popover__row editor-url-popover__settings' },\n\t\t\t\t\trenderSettings()\n\t\t\t\t),\n\t\t\t\tinvalidLink && wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ 'class': 'ta-invalid-link' },\n\t\t\t\t\t__('Invalid affiliate link')\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn ThirstyURLPopover;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (ThirstyURLPopover);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view__);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\nvar __ = wp.i18n.__;\nvar _lodash = lodash,\n throttle = _lodash.throttle;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n createRef = _wp$element.createRef;\nvar _wp$keycodes = wp.keycodes,\n UP = _wp$keycodes.UP,\n DOWN = _wp$keycodes.DOWN,\n ENTER = _wp$keycodes.ENTER,\n TAB = _wp$keycodes.TAB;\nvar _wp$components = wp.components,\n Spinner = _wp$components.Spinner,\n withSpokenMessages = _wp$components.withSpokenMessages,\n Popover = _wp$components.Popover;\nvar withInstanceId = wp.compose.withInstanceId;\n\n// Since URLInput is rendered in the context of other inputs, but should be\n// considered a separate modal node, prevent keyboard events from propagating\n// as being considered from the input.\n\nvar stopEventPropagation = function stopEventPropagation(event) {\n\treturn event.stopPropagation();\n};\n\n/**\n * Custom URL Input component.\n * \n * @since 3.6\n */\n\nvar ThirstyURLInput = function (_Component) {\n\t_inherits(ThirstyURLInput, _Component);\n\n\t/**\n * Component constructor method.\n * \n * @since 3.6\n * \n * @param {*} param0 \n */\n\tfunction ThirstyURLInput(_ref) {\n\t\tvar autocompleteRef = _ref.autocompleteRef;\n\n\t\t_classCallCheck(this, ThirstyURLInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (ThirstyURLInput.__proto__ || Object.getPrototypeOf(ThirstyURLInput)).apply(this, arguments));\n\n\t\t_this.onChange = _this.onChange.bind(_this);\n\t\t_this.onKeyDown = _this.onKeyDown.bind(_this);\n\t\t_this.autocompleteRef = autocompleteRef || createRef();\n\t\t_this.inputRef = createRef();\n\t\t_this.updateSuggestions = throttle(_this.updateSuggestions.bind(_this), 200);\n\n\t\t_this.suggestionNodes = [];\n\n\t\t_this.state = {\n\t\t\tposts: [],\n\t\t\tshowSuggestions: false,\n\t\t\tselectedSuggestion: null\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Component did update method.\n * \n * @since 3.6\n */\n\n\n\t_createClass(ThirstyURLInput, [{\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar _state = this.state,\n\t\t\t showSuggestions = _state.showSuggestions,\n\t\t\t selectedSuggestion = _state.selectedSuggestion;\n\t\t\t// only have to worry about scrolling selected suggestion into view\n\t\t\t// when already expanded\n\n\t\t\tif (showSuggestions && selectedSuggestion !== null && !this.scrollingIntoView) {\n\t\t\t\tthis.scrollingIntoView = true;\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view___default()(this.suggestionNodes[selectedSuggestion], this.autocompleteRef.current, {\n\t\t\t\t\tonlyScrollIfNeeded: true\n\t\t\t\t});\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t_this2.scrollingIntoView = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Component unmount method.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tdelete this.suggestionsRequest;\n\t\t}\n\n\t\t/**\n * Bind suggestion to node.\n * \n * @param {*} index \n */\n\n\t}, {\n\t\tkey: 'bindSuggestionNode',\n\t\tvalue: function bindSuggestionNode(index) {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn function (ref) {\n\t\t\t\t_this3.suggestionNodes[index] = ref;\n\t\t\t};\n\t\t}\n\n\t\t/**\n * Callback to show suggestions based on value inputted on search field.\n * \n * @since 3.6\n * \n * @param {*} value \n */\n\n\t}, {\n\t\tkey: 'updateSuggestions',\n\t\tvalue: function updateSuggestions(value) {\n\t\t\tvar _this4 = this;\n\n\t\t\t// Show the suggestions after typing at least 2 characters\n\t\t\t// and also for URLs\n\t\t\tif (value.length < 2 || /^https?:/.test(value)) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tshowSuggestions: false,\n\t\t\t\t\tselectedSuggestion: null,\n\t\t\t\t\tloading: false\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.setState({\n\t\t\t\tshowSuggestions: true,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: true\n\t\t\t});\n\n\t\t\tvar formData = new FormData();\n\t\t\tformData.append(\"action\", \"search_affiliate_links_query\");\n\t\t\tformData.append(\"keyword\", value);\n\t\t\tformData.append(\"paged\", 1);\n\t\t\tformData.append(\"gutenberg\", true);\n\n\t\t\t// We are getting data via the WP AJAX instead of rest API as it is not possible yet\n\t\t\t// to filter results with category value. This is to prepare next update to add category filter.\n\t\t\tvar request = fetch(ajaxurl, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: formData\n\t\t\t});\n\n\t\t\trequest.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t}).then(function (response) {\n\n\t\t\t\tif (!response.affiliate_links) return;\n\n\t\t\t\tvar posts = response.affiliate_links;\n\n\t\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\t\tif (_this4.suggestionsRequest !== request) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_this4.setState({\n\t\t\t\t\tposts: posts,\n\t\t\t\t\tloading: false\n\t\t\t\t});\n\n\t\t\t\tif (!!posts.length) {\n\t\t\t\t\t_this4.props.debouncedSpeak(sprintf(_n('%d result found, use up and down arrow keys to navigate.', '%d results found, use up and down arrow keys to navigate.', posts.length), posts.length), 'assertive');\n\t\t\t\t} else {\n\t\t\t\t\t_this4.props.debouncedSpeak(__('No results.'), 'assertive');\n\t\t\t\t}\n\t\t\t}).catch(function () {\n\t\t\t\tif (_this4.suggestionsRequest === request) {\n\t\t\t\t\t_this4.setState({\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.suggestionsRequest = request;\n\t\t}\n\n\t\t/**\n * Search input value change event callback method.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\n\t}, {\n\t\tkey: 'onChange',\n\t\tvalue: function onChange(event) {\n\t\t\tthis.props.resetInvalidLink();\n\t\t\tvar inputValue = event.target.value;\n\t\t\tthis.props.onChange(inputValue);\n\t\t\tthis.updateSuggestions(inputValue);\n\t\t}\n\n\t\t/**\n * Keydown event callback. Handles selecting result via keyboard.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\n\t}, {\n\t\tkey: 'onKeyDown',\n\t\tvalue: function onKeyDown(event) {\n\t\t\tvar _state2 = this.state,\n\t\t\t showSuggestions = _state2.showSuggestions,\n\t\t\t selectedSuggestion = _state2.selectedSuggestion,\n\t\t\t posts = _state2.posts,\n\t\t\t loading = _state2.loading;\n\t\t\t// If the suggestions are not shown or loading, we shouldn't handle the arrow keys\n\t\t\t// We shouldn't preventDefault to allow block arrow keys navigation\n\n\t\t\tif (!showSuggestions || !posts.length || loading) {\n\t\t\t\t// In the Windows version of Firefox the up and down arrows don't move the caret\n\t\t\t\t// within an input field like they do for Mac Firefox/Chrome/Safari. This causes\n\t\t\t\t// a form of focus trapping that is disruptive to the user experience. This disruption\n\t\t\t\t// only happens if the caret is not in the first or last position in the text input.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747\n\t\t\t\tswitch (event.keyCode) {\n\t\t\t\t\t// When UP is pressed, if the caret is at the start of the text, move it to the 0\n\t\t\t\t\t// position.\n\t\t\t\t\tcase UP:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (0 !== event.target.selectionStart) {\n\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\t\t// Set the input caret to position 0\n\t\t\t\t\t\t\t\tevent.target.setSelectionRange(0, 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t// When DOWN is pressed, if the caret is not at the end of the text, move it to the\n\t\t\t\t\t// last position.\n\t\t\t\t\tcase DOWN:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (this.props.value.length !== event.target.selectionStart) {\n\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\t\t// Set the input caret to the last position\n\t\t\t\t\t\t\t\tevent.target.setSelectionRange(this.props.value.length, this.props.value.length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar post = this.state.posts[this.state.selectedSuggestion];\n\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase UP:\n\t\t\t\t\t{\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tvar previousIndex = !selectedSuggestion ? posts.length - 1 : selectedSuggestion - 1;\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tselectedSuggestion: previousIndex\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase DOWN:\n\t\t\t\t\t{\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tvar nextIndex = selectedSuggestion === null || selectedSuggestion === posts.length - 1 ? 0 : selectedSuggestion + 1;\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tselectedSuggestion: nextIndex\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase TAB:\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.state.selectedSuggestion !== null) {\n\t\t\t\t\t\t\tthis.selectLink(post);\n\t\t\t\t\t\t\t// Announce a link has been selected when tabbing away from the input field.\n\t\t\t\t\t\t\tthis.props.speak(__('Link selected'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase ENTER:\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.state.selectedSuggestion !== null) {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\tthis.selectLink(post);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Set state when an affiliate link is selected.\n * \n * @since 3.6\n * \n * @param {*} post \n */\n\n\t}, {\n\t\tkey: 'selectLink',\n\t\tvalue: function selectLink(post) {\n\t\t\tthis.props.onChange(post.link, post);\n\t\t\tthis.setState({\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tshowSuggestions: false\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Callback handler for when affiliate link is selected.\n * \n * @param {*} post \n */\n\n\t}, {\n\t\tkey: 'handleOnClick',\n\t\tvalue: function handleOnClick(post) {\n\t\t\tthis.selectLink(post);\n\t\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\t\tthis.inputRef.current.focus();\n\t\t}\n\n\t\t/**\n * Component render method.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar _props = this.props,\n\t\t\t _props$value = _props.value,\n\t\t\t value = _props$value === undefined ? '' : _props$value,\n\t\t\t _props$autoFocus = _props.autoFocus,\n\t\t\t autoFocus = _props$autoFocus === undefined ? true : _props$autoFocus,\n\t\t\t instanceId = _props.instanceId,\n\t\t\t invalidLink = _props.invalidLink;\n\t\t\tvar _state3 = this.state,\n\t\t\t showSuggestions = _state3.showSuggestions,\n\t\t\t posts = _state3.posts,\n\t\t\t selectedSuggestion = _state3.selectedSuggestion,\n\t\t\t loading = _state3.loading;\n\t\t\t/* eslint-disable jsx-a11y/no-autofocus */\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'editor-url-input' },\n\t\t\t\twp.element.createElement('input', {\n\t\t\t\t\tautoFocus: autoFocus,\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\t'aria-label': __('URL'),\n\t\t\t\t\trequired: true,\n\t\t\t\t\tvalue: value,\n\t\t\t\t\tonChange: this.onChange,\n\t\t\t\t\tonInput: stopEventPropagation,\n\t\t\t\t\tplaceholder: __('Paste URL or type to search'),\n\t\t\t\t\tonKeyDown: this.onKeyDown,\n\t\t\t\t\trole: 'combobox',\n\t\t\t\t\t'aria-expanded': showSuggestions,\n\t\t\t\t\t'aria-autocomplete': 'list',\n\t\t\t\t\t'aria-owns': 'editor-url-input-suggestions-' + instanceId,\n\t\t\t\t\t'aria-activedescendant': selectedSuggestion !== null ? 'editor-url-input-suggestion-' + instanceId + '-' + selectedSuggestion : undefined,\n\t\t\t\t\tref: this.inputRef\n\t\t\t\t}),\n\t\t\t\tloading && wp.element.createElement(Spinner, null),\n\t\t\t\tshowSuggestions && !!posts.length && !invalidLink && wp.element.createElement(\n\t\t\t\t\tPopover,\n\t\t\t\t\t{ position: 'bottom', noArrow: true, focusOnMount: false },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclassName: 'editor-url-input__suggestions',\n\t\t\t\t\t\t\tid: 'editor-url-input-suggestions-' + instanceId,\n\t\t\t\t\t\t\tref: this.autocompleteRef,\n\t\t\t\t\t\t\trole: 'listbox'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tposts.map(function (post, index) {\n\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tkey: post.id,\n\t\t\t\t\t\t\t\t\trole: 'option',\n\t\t\t\t\t\t\t\t\ttabIndex: '-1',\n\t\t\t\t\t\t\t\t\tid: 'editor-url-input-suggestion-' + instanceId + '-' + index,\n\t\t\t\t\t\t\t\t\tref: _this5.bindSuggestionNode(index),\n\t\t\t\t\t\t\t\t\tclassName: __WEBPACK_IMPORTED_MODULE_0_classnames___default()('editor-url-input__suggestion', {\n\t\t\t\t\t\t\t\t\t\t'is-selected': index === selectedSuggestion\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\treturn _this5.handleOnClick(post);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t'aria-selected': index === selectedSuggestion\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tpost.title || __('(no title)')\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/* eslint-enable jsx-a11y/no-autofocus */\n\t\t}\n\t}]);\n\n\treturn ThirstyURLInput;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (withSpokenMessages(withInstanceId(ThirstyURLInput)));\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(11);\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar util = __webpack_require__(12);\n\nfunction scrollIntoView(elem, container, config) {\n config = config || {};\n // document 归一化到 window\n if (container.nodeType === 9) {\n container = util.getWindow(container);\n }\n\n var allowHorizontalScroll = config.allowHorizontalScroll;\n var onlyScrollIfNeeded = config.onlyScrollIfNeeded;\n var alignWithTop = config.alignWithTop;\n var alignWithLeft = config.alignWithLeft;\n var offsetTop = config.offsetTop || 0;\n var offsetLeft = config.offsetLeft || 0;\n var offsetBottom = config.offsetBottom || 0;\n var offsetRight = config.offsetRight || 0;\n\n allowHorizontalScroll = allowHorizontalScroll === undefined ? true : allowHorizontalScroll;\n\n var isWin = util.isWindow(container);\n var elemOffset = util.offset(elem);\n var eh = util.outerHeight(elem);\n var ew = util.outerWidth(elem);\n var containerOffset = undefined;\n var ch = undefined;\n var cw = undefined;\n var containerScroll = undefined;\n var diffTop = undefined;\n var diffBottom = undefined;\n var win = undefined;\n var winScroll = undefined;\n var ww = undefined;\n var wh = undefined;\n\n if (isWin) {\n win = container;\n wh = util.height(win);\n ww = util.width(win);\n winScroll = {\n left: util.scrollLeft(win),\n top: util.scrollTop(win)\n };\n // elem 相对 container 可视视窗的距离\n diffTop = {\n left: elemOffset.left - winScroll.left - offsetLeft,\n top: elemOffset.top - winScroll.top - offsetTop\n };\n diffBottom = {\n left: elemOffset.left + ew - (winScroll.left + ww) + offsetRight,\n top: elemOffset.top + eh - (winScroll.top + wh) + offsetBottom\n };\n containerScroll = winScroll;\n } else {\n containerOffset = util.offset(container);\n ch = container.clientHeight;\n cw = container.clientWidth;\n containerScroll = {\n left: container.scrollLeft,\n top: container.scrollTop\n };\n // elem 相对 container 可视视窗的距离\n // 注意边框, offset 是边框到根节点\n diffTop = {\n left: elemOffset.left - (containerOffset.left + (parseFloat(util.css(container, 'borderLeftWidth')) || 0)) - offsetLeft,\n top: elemOffset.top - (containerOffset.top + (parseFloat(util.css(container, 'borderTopWidth')) || 0)) - offsetTop\n };\n diffBottom = {\n left: elemOffset.left + ew - (containerOffset.left + cw + (parseFloat(util.css(container, 'borderRightWidth')) || 0)) + offsetRight,\n top: elemOffset.top + eh - (containerOffset.top + ch + (parseFloat(util.css(container, 'borderBottomWidth')) || 0)) + offsetBottom\n };\n }\n\n if (diffTop.top < 0 || diffBottom.top > 0) {\n // 强制向上\n if (alignWithTop === true) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else if (alignWithTop === false) {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n } else {\n // 自动调整\n if (diffTop.top < 0) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithTop = alignWithTop === undefined ? true : !!alignWithTop;\n if (alignWithTop) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n }\n\n if (allowHorizontalScroll) {\n if (diffTop.left < 0 || diffBottom.left > 0) {\n // 强制向上\n if (alignWithLeft === true) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else if (alignWithLeft === false) {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n } else {\n // 自动调整\n if (diffTop.left < 0) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithLeft = alignWithLeft === undefined ? true : !!alignWithLeft;\n if (alignWithLeft) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n }\n }\n}\n\nmodule.exports = scrollIntoView;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nfunction getClientPosition(elem) {\n var box = undefined;\n var x = undefined;\n var y = undefined;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top;\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];\n var method = 'scroll' + (top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\nfunction _getComputedStyle(elem, name, computedStyle_) {\n var val = '';\n var d = elem.ownerDocument;\n var computedStyle = computedStyle_ || d.defaultView.getComputedStyle(elem, null);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nvar getComputedStyleX = undefined;\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name = undefined;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop = undefined;\n var j = undefined;\n var i = undefined;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = undefined;\n if (prop === 'border') {\n cssProp = prop + which[i] + 'Width';\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj != null && obj == obj.window;\n}\n\nvar domUtils = {};\n\neach(['Width', 'Height'], function (name) {\n domUtils['doc' + name] = function (refWin) {\n var d = refWin.document;\n return Math.max(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement['scroll' + name],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body['scroll' + name], domUtils['viewport' + name](d));\n };\n\n domUtils['viewport' + name] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = 'client' + name;\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, extra) {\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem, computedStyle);\n var cssBoxValue = 0;\n if (borderBoxValue == null || borderBoxValue <= 0) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (cssBoxValue == null || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle);\n }\n return cssBoxValue;\n }\n if (borderBoxValueOrIsBorderBox) {\n var padding = extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle);\n return val + (extra === BORDER_INDEX ? 0 : padding);\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(elem) {\n var val = undefined;\n var args = arguments;\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\nfunction css(el, name, v) {\n var value = v;\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value += 'px';\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils['outer' + first] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, val) {\n if (val !== undefined) {\n if (elem) {\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setOffset(elem, offset) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var old = getOffset(elem);\n var ret = {};\n var current = undefined;\n var key = undefined;\n\n for (key in offset) {\n if (offset.hasOwnProperty(key)) {\n current = parseFloat(css(elem, key)) || 0;\n ret[key] = current + offset[key] - old[key];\n }\n }\n css(elem, ret);\n}\n\nmodule.exports = _extends({\n getWindow: function getWindow(node) {\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n offset: function offset(el, value) {\n if (typeof value !== 'undefined') {\n setOffset(el, value);\n } else {\n return getOffset(el);\n }\n },\n\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var ret = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n var overflow = obj.overflow;\n if (overflow) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n return ret;\n },\n scrollLeft: function scrollLeft(w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollLeft(w);\n }\n window.scrollTo(v, getScrollTop(w));\n } else {\n if (v === undefined) {\n return w.scrollLeft;\n }\n w.scrollLeft = v;\n }\n },\n scrollTop: function scrollTop(w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollTop(w);\n }\n window.scrollTo(getScrollLeft(w), v);\n } else {\n if (v === undefined) {\n return w.scrollTop;\n }\n w.scrollTop = v;\n }\n },\n\n viewportWidth: 0,\n viewportHeight: 0\n}, domUtils);\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// gutenberg-support.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 915a0b557807f732895a","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 0\n// module chunks = 0","import registerBlocks from \"./blocks\";\nimport registerFormats from \"./formats\";\n\nimport \"./assets/styles/index.scss\";\n\nregisterBlocks();\nregisterFormats();\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","const { registerBlockType } = wp.blocks;\n\n/**\n * Register gutenberg blocks.\n * \n * @since 3.6\n */\nexport default function registerBlocks() {\n\n [\n ].forEach( ( block ) => {\n if ( ! block ) return;\n\n const { name , settings } = block;\n registerBlockType( name , settings );\n } );\n}\n\n\n// WEBPACK FOOTER //\n// ./src/blocks/index.js","import { taLink } from \"./ta-link\";\n\nconst { registerFormatType } = wp.richText;\n\n/**\n * Register custom formats.\n * \n * @since 3.6\n */\nexport default function registerFormats() {\n\n [\n taLink\n ].forEach( ( { name , ...settings } ) => registerFormatType( name , settings ) );\n}\n\n\n// WEBPACK FOOTER //\n// ./src/formats/index.js","import InlineAffiliateLinkUI from './inline';\n\nconst { __ } = wp.i18n;\nconst { Component , Fragment } = wp.element;\nconst { withSpokenMessages } = wp.components;\nconst { getTextContent , applyFormat , removeFormat , slice } = wp.richText;\nconst { isURL } = wp.url;\nconst { RichTextToolbarButton , RichTextShortcut } = wp.editor;\nconst { Path , SVG } = wp.components;\n\nconst name = \"ta/link\";\n\n/**\n * Custom Affiliate link format. When applied will wrap selected text with <ta href=\"\" linkid=\"\"></ta> custom element.\n * Custom element is implemented here as we are not allowed to use <a> tag due to Gutenberg limitations.\n * Element is converted to normal <a> tag on frontend via PHP script filtered on 'the_content'.\n * \n * @since 3.6\n */\nexport const taLink = {\n name,\n title : __( \"Affiliate Link\" ),\n tagName : \"ta\",\n className : null,\n attributes : {\n\t\turl : \"href\",\n\t\ttarget : \"target\"\n },\n edit : withSpokenMessages( class LinkEdit extends Component {\n\t\t\n\t\t/**\n\t\t * Component constructor.\n\t\t * \n\t\t * @since 3.6\n\t\t */\n\t\tconstructor() {\n\t\t\tsuper( ...arguments );\n\n\t\t\tthis.addLink = this.addLink.bind( this );\n\t\t\tthis.stopAddingLink = this.stopAddingLink.bind( this );\n\t\t\tthis.onRemoveFormat = this.onRemoveFormat.bind( this );\n\t\t\tthis.state = {\n\t\t\t\taddingLink: false,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Callback to set state to adding link status.\n\t\t * \n\t\t * @since 3.6\n\t\t */\n\t\taddLink() {\n\t\t\tconst { value, onChange } = this.props;\n\t\t\tconst text = getTextContent( slice( value ) );\n\n\t\t\tif ( text && isURL( text ) ) {\n\t\t\t\tonChange( applyFormat( value, { type: name, attributes: { url: text } } ) );\n\t\t\t} else {\n\t\t\t\tthis.setState( { addingLink: true } );\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Callback to set state to stop adding link status.\n\t\t * \n\t\t * @since 3.6\n\t\t */\n\t\tstopAddingLink() {\n\t\t\tthis.setState( { addingLink: false } );\n\t\t}\n\n\t\t/**\n\t\t * Remove format event callback.\n\t\t * \n\t\t * @since 3.6\n\t\t */\n\t\tonRemoveFormat() {\n\t\t\tconst { value , onChange , speak } = this.props;\n\n\t\t\tonChange( removeFormat( value , name ) );\n\t\t\tspeak( __( \"Affiliate Link removed.\" ), \"assertive\" );\n\t\t}\n\n\t\t/**\n\t\t * Component render method.\n\t\t * \n\t\t * @since 3.6\n\t\t */\n\t\trender() {\n\t\t\tconst { isActive , activeAttributes , value , onChange } = this.props;\n\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<RichTextShortcut\n\t\t\t\t\t\ttype=\"access\"\n\t\t\t\t\t\tcharacter=\"s\"\n\t\t\t\t\t\tonUse={ this.onRemoveFormat }\n\t\t\t\t\t/>\n\t\t\t\t\t<RichTextShortcut\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\tcharacter=\"l\"\n\t\t\t\t\t\tonUse={ this.addLink }\n\t\t\t\t\t/>\n\t\t\t\t\t<RichTextShortcut\n\t\t\t\t\t\ttype=\"primaryShift\"\n\t\t\t\t\t\tcharacter=\"l\"\n\t\t\t\t\t\tonUse={ this.onRemoveFormat }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isActive && <RichTextToolbarButton\n\t\t\t\t\t\ticon=\"editor-unlink\"\n\t\t\t\t\t\ttitle={ __( 'Remove Affiliate Link' ) }\n\t\t\t\t\t\tclassName=\"ta-unlink-button\"\n\t\t\t\t\t\tonClick={ this.onRemoveFormat }\n\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\tshortcutType=\"primaryShift\"\n\t\t\t\t\t\tshortcutCharacter=\"l\"\n\t\t\t\t\t/> }\n\t\t\t\t\t{ ! isActive && <RichTextToolbarButton\n\t\t\t\t\t\ticon={ <SVG xmlns=\"http://www.w3.org/2000/svg\" width=\"16.688\" height=\"9.875\" viewBox=\"0 0 16.688 9.875\"><Path id=\"TA.svg\" fill=\"black\" class=\"cls-1\" d=\"M2.115,15.12H4.847L6.836,7.7H9.777l0.63-2.381H1.821L1.177,7.7H4.118Zm4.758,0H9.829l1.177-1.751h3.782l0.238,1.751h2.858L16.357,5.245H13.7Zm5.5-3.866,1.835-2.816,0.35,2.816H12.378Z\" transform=\"translate(-1.188 -5.25)\"/></SVG> }\n\t\t\t\t\t\ttitle={ __( 'Affiliate Link' ) }\n\t\t\t\t\t\tclassName=\"ta-link-button\"\n\t\t\t\t\t\tonClick={ this.addLink }\n\t\t\t\t\t\tshortcutType=\"primary\"\n\t\t\t\t\t\tshortcutCharacter=\"l\"\n\t\t\t\t\t/> }\n\t\t\t\t\t<InlineAffiliateLinkUI\n\t\t\t\t\t\taddingLink={ this.state.addingLink }\n\t\t\t\t\t\tstopAddingLink={ this.stopAddingLink }\n\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t}\n } )\n}\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/index.js","import classnames from \"classnames\";\nimport ThirstyPositionedAtSelection from './positioned-at-selection';\nimport { isValidHref } from './utils';\nimport ThirstyURLPopover from './url-popover';\nimport ThirstyURLInput from './url-input';\n\nconst { __ } = wp.i18n;\nconst { Component , createRef } = wp.element;\nconst { ExternalLink , ToggleControl , IconButton , withSpokenMessages } = wp.components;\nconst { LEFT, RIGHT, UP, DOWN, BACKSPACE, ENTER } = wp.keycodes;\nconst { prependHTTP , safeDecodeURI , filterURLForDisplay } = wp.url;\nconst { create , insert , isCollapsed , applyFormat , getTextContent , slice } = wp.richText;\n\nconst stopKeyPropagation = ( event ) => event.stopPropagation();\n\n/**\n * Generates the format object that will be applied to the link text.\n * \n * @since 3.6\n *\n * @param {string} url The href of the link.\n * @param {boolean} linkid Affiliate link ID.\n * @param {Object} text The text that is being hyperlinked.\n *\n * @return {Object} The final format object.\n */\nfunction createLinkFormat( { url , linkid , text } ) {\n\tconst format = {\n\t\ttype: \"ta/link\",\n\t\tattributes: {\n\t\t\turl,\n\t\t\tlinkid : linkid.toString()\n\t\t},\n\t};\n\n\treturn format;\n}\n\n/**\n * Check if input is being show.\n * \n * @since 3.6\n * \n * @param {Object} props Component props.\n * @param {Object} state Component state.\n */\nfunction isShowingInput( props , state ) {\n\treturn props.addingLink || state.editLink;\n}\n\n/**\n * Affiliate Link editor JSX element.\n * \n * @since 3.6\n * \n * @param {Object} param0 Component props (destructred).\n */\nconst LinkEditor = ( { value , onChangeInputValue , onKeyDown , submitLink, invalidLink , resetInvalidLink , autocompleteRef } ) => (\n\t// Disable reason: KeyPress must be suppressed so the block doesn't hide the toolbar\n\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n\t<form\n\t\tclassName=\"editor-format-toolbar__link-container-content ta-link-search-popover\"\n\t\tonKeyPress={ stopKeyPropagation }\n\t\tonKeyDown={ onKeyDown }\n\t\tonSubmit={ submitLink }\n\t>\n\t\t<ThirstyURLInput\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChangeInputValue }\n\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\tinvalidLink={ invalidLink }\n\t\t\tresetInvalidLink={ resetInvalidLink }\n\t\t/>\n\t\t<IconButton icon=\"editor-break\" label={ __( 'Apply' ) } type=\"submit\" />\n\t</form>\n\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions */\n);\n\n/**\n * Affiliate link url viewer JSX element.\n * \n * @param {*} param0 Component props (destructred).\n */\nconst LinkViewerUrl = ( { url } ) => {\n\tconst prependedURL = prependHTTP( url );\n\tconst linkClassName = classnames( 'editor-format-toolbar__link-container-value', {\n\t\t'has-invalid-link': ! isValidHref( prependedURL ),\n\t} );\n\n\tif ( ! url ) {\n\t\treturn <span className={ linkClassName }></span>;\n\t}\n\n\treturn (\n\t\t<ExternalLink\n\t\t\tclassName={ linkClassName }\n\t\t\thref={ url }\n\t\t>\n\t\t\t{ filterURLForDisplay( safeDecodeURI( url ) ) }\n\t\t</ExternalLink>\n\t);\n};\n\n/**\n * Affiliate link viewer JSX element.\n * \n * @param {*} param0 Component props (destructred).\n */\nconst LinkViewer = ( { url, editLink } ) => {\n\treturn (\n\t\t// Disable reason: KeyPress must be suppressed so the block doesn't hide the toolbar\n\t\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\t\t<div\n\t\t\tclassName=\"editor-format-toolbar__link-container-content\"\n\t\t\tonKeyPress={ stopKeyPropagation }\n\t\t>\n\t\t\t<LinkViewerUrl url={ url } />\n\t\t\t<IconButton icon=\"edit\" label={ __( 'Edit' ) } onClick={ editLink } />\n\t\t</div>\n\t\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n\t);\n};\n\n/**\n * Inline affiliate link UI Component.\n * \n * @since 3.6\n * \n * @param {*} param0 Component props (destructred).\n */\nclass InlineAffiliateLinkUI extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.editLink = this.editLink.bind( this );\n\t\tthis.submitLink = this.submitLink.bind( this );\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.onChangeInputValue = this.onChangeInputValue.bind( this );\n\t\tthis.onClickOutside = this.onClickOutside.bind( this );\n\t\tthis.resetState = this.resetState.bind( this );\n\t\tthis.autocompleteRef = createRef();\n\t\tthis.resetInvalidLink = this.resetInvalidLink.bind( this );\n\n\t\tthis.state = {\n\t\t\tinputValue : '',\n\t\t\tlinkid : 0,\n\t\t\tpost : null,\n\t\t\tinvalidLink : false\n\t\t};\n\t}\n\n\t/**\n\t * Stop the key event from propagating up to ObserveTyping.startTypingInTextField.\n\t * \n\t * @since 3.6\n\t * \n\t * @param {Object} event Event object.\n\t */\n\tonKeyDown( event ) {\n\t\tif ( [ LEFT, DOWN, RIGHT, UP, BACKSPACE, ENTER ].indexOf( event.keyCode ) > -1 ) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n\n\t/**\n\t * Callback to set state when input value is changed.\n\t * \n\t * @since 3.6\n\t * \n\t * @param {*} inputValue \n\t * @param {*} post \n\t */\n\tonChangeInputValue( inputValue , post = null ) {\n\t\tconst linkid = post ? post.id : 0;\n\t\tthis.setState( { inputValue , linkid , post } );\n\t}\n\n\t/**\n\t * Callback to set state when edit affiliate link (already inserted) is triggered.\n\t * \n\t * @since 3.6\n\t * \n\t * @param {*} event \n\t */\n\teditLink( event ) {\n\t\tthis.setState( { editLink: true } );\n\t\tevent.preventDefault();\n\t}\n\n\t/**\n\t * Callback to apply the affiliate link format to the selected text or position in the active block.\n\t * \n\t * @since 3.6\n\t * \n\t * @param {*} event \n\t */\n\tsubmitLink( event ) {\n\t\tconst { isActive, value, onChange, speak } = this.props;\n\t\tconst { inputValue, linkid , post } = this.state;\n\t\tconst url = prependHTTP( inputValue );\n\t\tconst selectedText = getTextContent( slice( value ) );\n\t\tconst format = createLinkFormat( {\n\t\t\turl,\n\t\t\tlinkid,\n\t\t\ttext: selectedText,\n\t\t} );\n\n\t\tevent.preventDefault();\n\n\t\tif ( ! linkid || ! post ) {\n\t\t\tthis.setState( { invalidLink : true } )\n\t\t\treturn;\n\t\t} \n\n\t\tif ( isCollapsed( value ) && ! isActive ) {\n\t\t\tconst toInsert = applyFormat( create( { text: post.title } ), format, 0, url.length );\n\t\t\tonChange( insert( value, toInsert ) );\n\t\t} else {\n\t\t\tonChange( applyFormat( value, format ) );\n\t\t}\n\n\t\tthis.resetState();\n\n\t\tif ( ! isValidHref( url ) ) {\n\t\t\tspeak( __( 'Warning: the link has been inserted but may have errors. Please test it.' ), 'assertive' );\n\t\t} else if ( isActive ) {\n\t\t\tspeak( __( 'Link edited.' ), 'assertive' );\n\t\t} else {\n\t\t\tspeak( __( 'Link inserted' ), 'assertive' );\n\t\t}\n\t}\n\n\t/**\n\t * Callback to run when users clicks outside the popover UI.\n\t * \n\t * @since 3.6\n\t * \n\t * @param {*} event \n\t */\n\tonClickOutside( event ) {\n\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t// so onClickOutside fails to detect that a click on a suggestion occured in the\n\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t// return to avoid the popover being closed.\n\t\tconst autocompleteElement = this.autocompleteRef.current;\n\t\tif ( autocompleteElement && autocompleteElement.contains( event.target ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.resetState();\n\t}\n\n\t/**\n\t * Reset state callback.\n\t * \n\t * @since 3.6\n\t */\n\tresetState() {\n\t\tthis.props.stopAddingLink();\n\t\tthis.setState( { inputValue : '' , editLink: false } );\n\t\tthis.resetInvalidLink();\n\t}\n\n\t/**\n\t * Reset invalid link state callback. Separated as we need to run this independently from resetState() callback.\n\t * \n\t * @since 3.6\n\t */\n\tresetInvalidLink() {\n\t\tthis.setState( { invalidLink : false } );\n\t}\n\n\t/**\n\t * Component render method.\n\t *\n\t * @since 3.6\n\t */\n\trender() {\n\t\tconst { isActive, activeAttributes: { url , linkid }, addingLink, value, onChange } = this.props;\n\n\t\tif ( ! isActive && ! addingLink ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { inputValue , invalidLink } = this.state;\n\t\tconst showInput = isShowingInput( this.props, this.state );\n\n\t\treturn (\n\t\t\t<ThirstyPositionedAtSelection\n\t\t\t\tkey={ `${ value.start }${ value.end }` /* Used to force rerender on selection change */ }\n\t\t\t>\n\t\t\t\t<ThirstyURLPopover\n\t\t\t\t\tonClickOutside={ this.onClickOutside }\n\t\t\t\t\tonClose={ this.resetState }\n\t\t\t\t\tfocusOnMount={ showInput ? 'firstElement' : false }\n\t\t\t\t\tinvalidLink={ invalidLink }\n\t\t\t\t>\n\t\t\t\t\t{ showInput ? (\n\t\t\t\t\t\t<LinkEditor\n\t\t\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\t\t\tonChangeInputValue={ this.onChangeInputValue }\n\t\t\t\t\t\t\tonKeyDown={ this.onKeyDown }\n\t\t\t\t\t\t\tsubmitLink={ this.submitLink }\n\t\t\t\t\t\t\tautocompleteRef={ this.autocompleteRef }\n\t\t\t\t\t\t\tupdateLinkId= { this.updateLinkId }\n\t\t\t\t\t\t\tinvalidLink={ invalidLink }\n\t\t\t\t\t\t\tresetInvalidLink={ this.resetInvalidLink }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<LinkViewer\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\teditLink={ this.editLink }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ThirstyURLPopover>\n\t\t\t</ThirstyPositionedAtSelection>\n\t\t);\n\t}\n}\n\nexport default withSpokenMessages( InlineAffiliateLinkUI );\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/inline.js","const { Component } = wp.element;\nconst { getOffsetParent , getRectangleFromRange } = wp.dom;\n\n/**\n * Returns a style object for applying as `position: absolute` for an element\n * relative to the bottom-center of the current selection. Includes `top` and\n * `left` style properties.\n * \n * @since 3.6\n *\n * @return {Object} Style object.\n */\nfunction getCurrentCaretPositionStyle() {\n\tconst selection = window.getSelection();\n\n\t// Unlikely, but in the case there is no selection, return empty styles so\n\t// as to avoid a thrown error by `Selection#getRangeAt` on invalid index.\n\tif ( selection.rangeCount === 0 ) {\n\t\treturn {};\n\t}\n\n\t// Get position relative viewport.\n\tconst rect = getRectangleFromRange( selection.getRangeAt( 0 ) );\n\tlet top = rect.top + rect.height;\n\tlet left = rect.left + ( rect.width / 2 );\n\n\t// Offset by positioned parent, if one exists.\n\tconst offsetParent = getOffsetParent( selection.anchorNode );\n\tif ( offsetParent ) {\n\t\tconst parentRect = offsetParent.getBoundingClientRect();\n\t\ttop -= parentRect.top;\n\t\tleft -= parentRect.left;\n\t}\n\n\treturn { top, left };\n}\n\n/**\n * Component which renders itself positioned under the current caret selection.\n * The position is calculated at the time of the component being mounted, so it\n * should only be mounted after the desired selection has been made.\n * \n * @since 3.6\n *\n * @type {WPComponent}\n */\nclass ThirstyPositionedAtSelection extends Component {\n\n\t/**\n\t * Component constructor method.\n\t * \n\t * @since 3.6\n\t */\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.state = {\n\t\t\tstyle: getCurrentCaretPositionStyle(),\n\t\t};\n\t}\n\n\t/**\n\t * Component render method.\n\t * \n\t * @since 3.6\n\t */\n\trender() {\n\t\tconst { children } = this.props;\n\t\tconst { style } = this.state;\n\n\t\treturn (\n\t\t\t<div className=\"editor-format-toolbar__selection-position\" style={ style }>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default ThirstyPositionedAtSelection;\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/positioned-at-selection.js","const { startsWith } = lodash;\n\nconst {\n getProtocol,\n\tisValidProtocol,\n\tgetAuthority,\n\tisValidAuthority,\n\tgetPath,\n\tisValidPath,\n\tgetQueryString,\n\tisValidQueryString,\n\tgetFragment,\n\tisValidFragment,\n} = wp.url;\n\n/**\n * Check for issues with the provided href.\n * \n * @since 3.6\n *\n * @param {string} href The href.\n * @return {boolean} Is the href invalid?\n */\nexport function isValidHref( href ) {\n\tif ( ! href ) {\n\t\treturn false;\n\t}\n\n\tconst trimmedHref = href.trim();\n\n\tif ( ! trimmedHref ) {\n\t\treturn false;\n\t}\n\n\t// Does the href start with something that looks like a URL protocol?\n\tif ( /^\\S+:/.test( trimmedHref ) ) {\n\t\tconst protocol = getProtocol( trimmedHref );\n\t\tif ( ! isValidProtocol( protocol ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Add some extra checks for http(s) URIs, since these are the most common use-case.\n\t\t// This ensures URIs with an http protocol have exactly two forward slashes following the protocol.\n\t\tif ( startsWith( protocol, 'http' ) && ! /^https?:\\/\\/[^\\/\\s]/i.test( trimmedHref ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst authority = getAuthority( trimmedHref );\n\t\tif ( ! isValidAuthority( authority ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst path = getPath( trimmedHref );\n\t\tif ( path && ! isValidPath( path ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst queryString = getQueryString( trimmedHref );\n\t\tif ( queryString && ! isValidQueryString( queryString ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst fragment = getFragment( trimmedHref );\n\t\tif ( fragment && ! isValidFragment( fragment ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Validate anchor links.\n\tif ( startsWith( trimmedHref, '#' ) && ! isValidFragment( trimmedHref ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/utils.js","const { __ } = wp.i18n;\nconst { Component } = wp.element;\nconst { Popover , IconButton } = wp.components;\n\n/**\n * Custom URL Popover component.\n * \n * @since 3.6\n */\nclass ThirstyURLPopover extends Component {\n\n /**\n * Component constructor method.\n * \n * @since 3.6\n */\n\tconstructor() {\n super( ...arguments );\n \n this.toggleSettingsVisibility = this.toggleSettingsVisibility.bind( this );\n\n\t\tthis.state = {\n\t\t\tisSettingsExpanded: false,\n\t\t};\n }\n \n /**\n * Component constructor.\n * \n * @since 3.6\n */\n toggleSettingsVisibility() {\n\t\tthis.setState( {\n\t\t\tisSettingsExpanded: ! this.state.isSettingsExpanded,\n\t\t} );\n\t}\n\n /**\n * Component render method.\n * \n * @since 3.6\n */\n\trender() {\n\t\tconst {\n\t\t\tchildren,\n\t\t\trenderSettings,\n\t\t\tonClose,\n onClickOutside,\n invalidLink,\n\t\t\tposition = 'bottom center',\n\t\t\tfocusOnMount = 'firstElement',\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tisSettingsExpanded,\n } = this.state;\n \n const showSettings = !! renderSettings && isSettingsExpanded;\n\n\t\treturn (\n\t\t\t<Popover\n\t\t\t\tclassName=\"ta-url-popover editor-url-popover\"\n\t\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t\tposition={ position }\n\t\t\t\tonClose={ onClose }\n\t\t\t\tonClickOutside={ onClickOutside }\n\t\t\t>\n\t\t\t\t<div className=\"editor-url-popover__row\">\n { children }\n { !! renderSettings && (\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tclassName=\"editor-url-popover__settings-toggle\"\n\t\t\t\t\t\t\ticon=\"ellipsis\"\n\t\t\t\t\t\t\tlabel={ __( 'Link Settings' ) }\n\t\t\t\t\t\t\tonClick={ this.toggleSettingsVisibility }\n\t\t\t\t\t\t\taria-expanded={ isSettingsExpanded }\n\t\t\t\t\t\t/>\n ) }\n\t\t\t\t</div>\n { showSettings && (\n\t\t\t\t\t<div className=\"editor-url-popover__row editor-url-popover__settings\">\n\t\t\t\t\t\t{ renderSettings() }\n\t\t\t\t\t</div>\n ) }\n { invalidLink && <div class=\"ta-invalid-link\">{ __( 'Invalid affiliate link' ) }</div> }\n\t\t\t</Popover>\n\t\t);\n\t}\n}\n\nexport default ThirstyURLPopover;\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/url-popover.js","import classnames from 'classnames';\nimport scrollIntoView from 'dom-scroll-into-view';\n\nconst { __ } = wp.i18n;\nconst { throttle } = lodash;\nconst { Component , createRef } = wp.element;\nconst { UP, DOWN, ENTER, TAB } = wp.keycodes;\nconst { Spinner, withSpokenMessages, Popover } = wp.components;\nconst { withInstanceId } = wp.compose;\n\n// Since URLInput is rendered in the context of other inputs, but should be\n// considered a separate modal node, prevent keyboard events from propagating\n// as being considered from the input.\nconst stopEventPropagation = ( event ) => event.stopPropagation();\n\n/**\n * Custom URL Input component.\n * \n * @since 3.6\n */\nclass ThirstyURLInput extends Component {\n\n /**\n * Component constructor method.\n * \n * @since 3.6\n * \n * @param {*} param0 \n */\n\tconstructor( { autocompleteRef } ) {\n\t\tsuper( ...arguments );\n\n\t\tthis.onChange = this.onChange.bind( this );\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.autocompleteRef = autocompleteRef || createRef();\n\t\tthis.inputRef = createRef();\n\t\tthis.updateSuggestions = throttle( this.updateSuggestions.bind( this ), 200 );\n\n\t\tthis.suggestionNodes = [];\n\n\t\tthis.state = {\n\t\t\tposts: [],\n\t\t\tshowSuggestions: false,\n\t\t\tselectedSuggestion: null,\n\t\t};\n\t}\n\n /**\n * Component did update method.\n * \n * @since 3.6\n */\n\tcomponentDidUpdate() {\n\t\tconst { showSuggestions, selectedSuggestion } = this.state;\n\t\t// only have to worry about scrolling selected suggestion into view\n\t\t// when already expanded\n\t\tif ( showSuggestions && selectedSuggestion !== null && ! this.scrollingIntoView ) {\n\t\t\tthis.scrollingIntoView = true;\n\t\t\tscrollIntoView( this.suggestionNodes[ selectedSuggestion ], this.autocompleteRef.current, {\n\t\t\t\tonlyScrollIfNeeded: true,\n\t\t\t} );\n\n\t\t\tsetTimeout( () => {\n\t\t\t\tthis.scrollingIntoView = false;\n\t\t\t}, 100 );\n\t\t}\n\t}\n\n /**\n * Component unmount method.\n * \n * @since 3.6\n */\n\tcomponentWillUnmount() {\n\t\tdelete this.suggestionsRequest;\n\t}\n\n /**\n * Bind suggestion to node.\n * \n * @param {*} index \n */\n\tbindSuggestionNode( index ) {\n\t\treturn ( ref ) => {\n\t\t\tthis.suggestionNodes[ index ] = ref;\n\t\t};\n\t}\n\n /**\n * Callback to show suggestions based on value inputted on search field.\n * \n * @since 3.6\n * \n * @param {*} value \n */\n\tupdateSuggestions( value ) {\n\t\t// Show the suggestions after typing at least 2 characters\n\t\t// and also for URLs\n\t\tif ( value.length < 2 || /^https?:/.test( value ) ) {\n\t\t\tthis.setState( {\n\t\t\t\tshowSuggestions: false,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: false,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tshowSuggestions: true,\n\t\t\tselectedSuggestion: null,\n\t\t\tloading: true,\n\t\t} );\n\n const formData = new FormData();\n formData.append( \"action\" , \"search_affiliate_links_query\" );\n formData.append( \"keyword\" , value );\n formData.append( \"paged\" , 1 );\n formData.append( \"gutenberg\" , true );\n \n // We are getting data via the WP AJAX instead of rest API as it is not possible yet\n // to filter results with category value. This is to prepare next update to add category filter.\n const request = fetch( ajaxurl , {\n method : \"POST\",\n body : formData\n } );\n\n request\n .then( response => response.json() )\n .then( ( response ) => {\n\n if ( ! response.affiliate_links ) return;\n\n const posts = response.affiliate_links;\n\n\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\treturn;\n }\n\n\t\t\tthis.setState( {\n\t\t\t\tposts,\n\t\t\t\tloading: false,\n } );\n\n\t\t\tif ( !! posts.length ) {\n\t\t\t\tthis.props.debouncedSpeak( sprintf( _n(\n\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\tposts.length\n\t\t\t\t), posts.length ), 'assertive' );\n\t\t\t} else {\n\t\t\t\tthis.props.debouncedSpeak( __( 'No results.' ), 'assertive' );\n }\n\n\t\t} ).catch( () => {\n\t\t\tif ( this.suggestionsRequest === request ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\tloading: false,\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tthis.suggestionsRequest = request;\n\t}\n\n /**\n * Search input value change event callback method.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\tonChange( event ) {\n this.props.resetInvalidLink();\n\t\tconst inputValue = event.target.value;\n\t\tthis.props.onChange( inputValue );\n\t\tthis.updateSuggestions( inputValue );\n\t}\n\n /**\n * Keydown event callback. Handles selecting result via keyboard.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\tonKeyDown( event ) {\n\t\tconst { showSuggestions, selectedSuggestion, posts, loading } = this.state;\n\t\t// If the suggestions are not shown or loading, we shouldn't handle the arrow keys\n\t\t// We shouldn't preventDefault to allow block arrow keys navigation\n\t\tif ( ! showSuggestions || ! posts.length || loading ) {\n\t\t\t// In the Windows version of Firefox the up and down arrows don't move the caret\n\t\t\t// within an input field like they do for Mac Firefox/Chrome/Safari. This causes\n\t\t\t// a form of focus trapping that is disruptive to the user experience. This disruption\n\t\t\t// only happens if the caret is not in the first or last position in the text input.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t// When UP is pressed, if the caret is at the start of the text, move it to the 0\n\t\t\t\t// position.\n\t\t\t\tcase UP: {\n\t\t\t\t\tif ( 0 !== event.target.selectionStart ) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to position 0\n\t\t\t\t\t\tevent.target.setSelectionRange( 0, 0 );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// When DOWN is pressed, if the caret is not at the end of the text, move it to the\n\t\t\t\t// last position.\n\t\t\t\tcase DOWN: {\n\t\t\t\t\tif ( this.props.value.length !== event.target.selectionStart ) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to the last position\n\t\t\t\t\t\tevent.target.setSelectionRange( this.props.value.length, this.props.value.length );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst post = this.state.posts[ this.state.selectedSuggestion ];\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase UP: {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst previousIndex = ! selectedSuggestion ? posts.length - 1 : selectedSuggestion - 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: previousIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase DOWN: {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = selectedSuggestion === null || ( selectedSuggestion === posts.length - 1 ) ? 0 : selectedSuggestion + 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: nextIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TAB: {\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( post );\n\t\t\t\t\t// Announce a link has been selected when tabbing away from the input field.\n\t\t\t\t\tthis.props.speak( __( 'Link selected' ) );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ENTER: {\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tthis.selectLink( post );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n /**\n * Set state when an affiliate link is selected.\n * \n * @since 3.6\n * \n * @param {*} post \n */\n\tselectLink( post ) {\n\t\tthis.props.onChange( post.link, post );\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tshowSuggestions: false,\n\t\t} );\n\t}\n\n /**\n * Callback handler for when affiliate link is selected.\n * \n * @param {*} post \n */\n\thandleOnClick( post ) {\n\t\tthis.selectLink( post );\n\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\tthis.inputRef.current.focus();\n\t}\n\n /**\n * Component render method.\n * \n * @since 3.6\n */\n\trender() {\n\t\tconst { value = '', autoFocus = true, instanceId , invalidLink } = this.props;\n\t\tconst { showSuggestions, posts, selectedSuggestion, loading } = this.state;\n\t\t/* eslint-disable jsx-a11y/no-autofocus */\n\t\treturn (\n\t\t\t<div className=\"editor-url-input\">\n\t\t\t\t<input\n\t\t\t\t\tautoFocus={ autoFocus }\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\taria-label={ __( 'URL' ) }\n\t\t\t\t\trequired\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ this.onChange }\n\t\t\t\t\tonInput={ stopEventPropagation }\n\t\t\t\t\tplaceholder={ __( 'Paste URL or type to search' ) }\n\t\t\t\t\tonKeyDown={ this.onKeyDown }\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-expanded={ showSuggestions }\n\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\taria-owns={ `editor-url-input-suggestions-${ instanceId }` }\n\t\t\t\t\taria-activedescendant={ selectedSuggestion !== null ? `editor-url-input-suggestion-${ instanceId }-${ selectedSuggestion }` : undefined }\n\t\t\t\t\tref={ this.inputRef }\n\t\t\t\t/>\n\n\t\t\t\t{ ( loading ) && <Spinner /> }\n\n\t\t\t\t{ showSuggestions && !! posts.length && ! invalidLink &&\n\t\t\t\t\t<Popover position=\"bottom\" noArrow focusOnMount={ false }>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"editor-url-input__suggestions\"\n\t\t\t\t\t\t\tid={ `editor-url-input-suggestions-${ instanceId }` }\n\t\t\t\t\t\t\tref={ this.autocompleteRef }\n\t\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ posts.map( ( post, index ) => (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={ post.id }\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t\tid={ `editor-url-input-suggestion-${ instanceId }-${ index }` }\n\t\t\t\t\t\t\t\t\tref={ this.bindSuggestionNode( index ) }\n\t\t\t\t\t\t\t\t\tclassName={ classnames( 'editor-url-input__suggestion', {\n\t\t\t\t\t\t\t\t\t\t'is-selected': index === selectedSuggestion,\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\tonClick={ () => this.handleOnClick( post ) }\n\t\t\t\t\t\t\t\t\taria-selected={ index === selectedSuggestion }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ post.title || __( '(no title)' ) }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popover>\n\t\t\t\t}\n\t\t\t</div>\n\t\t);\n\t\t/* eslint-enable jsx-a11y/no-autofocus */\n\t}\n}\n\nexport default withSpokenMessages( withInstanceId( ThirstyURLInput ) );\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/url-input.js","'use strict';\n\nmodule.exports = require('./dom-scroll-into-view');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-scroll-into-view/lib/index.js\n// module id = 10\n// module chunks = 0","'use strict';\n\nvar util = require('./util');\n\nfunction scrollIntoView(elem, container, config) {\n config = config || {};\n // document 归一化到 window\n if (container.nodeType === 9) {\n container = util.getWindow(container);\n }\n\n var allowHorizontalScroll = config.allowHorizontalScroll;\n var onlyScrollIfNeeded = config.onlyScrollIfNeeded;\n var alignWithTop = config.alignWithTop;\n var alignWithLeft = config.alignWithLeft;\n var offsetTop = config.offsetTop || 0;\n var offsetLeft = config.offsetLeft || 0;\n var offsetBottom = config.offsetBottom || 0;\n var offsetRight = config.offsetRight || 0;\n\n allowHorizontalScroll = allowHorizontalScroll === undefined ? true : allowHorizontalScroll;\n\n var isWin = util.isWindow(container);\n var elemOffset = util.offset(elem);\n var eh = util.outerHeight(elem);\n var ew = util.outerWidth(elem);\n var containerOffset = undefined;\n var ch = undefined;\n var cw = undefined;\n var containerScroll = undefined;\n var diffTop = undefined;\n var diffBottom = undefined;\n var win = undefined;\n var winScroll = undefined;\n var ww = undefined;\n var wh = undefined;\n\n if (isWin) {\n win = container;\n wh = util.height(win);\n ww = util.width(win);\n winScroll = {\n left: util.scrollLeft(win),\n top: util.scrollTop(win)\n };\n // elem 相对 container 可视视窗的距离\n diffTop = {\n left: elemOffset.left - winScroll.left - offsetLeft,\n top: elemOffset.top - winScroll.top - offsetTop\n };\n diffBottom = {\n left: elemOffset.left + ew - (winScroll.left + ww) + offsetRight,\n top: elemOffset.top + eh - (winScroll.top + wh) + offsetBottom\n };\n containerScroll = winScroll;\n } else {\n containerOffset = util.offset(container);\n ch = container.clientHeight;\n cw = container.clientWidth;\n containerScroll = {\n left: container.scrollLeft,\n top: container.scrollTop\n };\n // elem 相对 container 可视视窗的距离\n // 注意边框, offset 是边框到根节点\n diffTop = {\n left: elemOffset.left - (containerOffset.left + (parseFloat(util.css(container, 'borderLeftWidth')) || 0)) - offsetLeft,\n top: elemOffset.top - (containerOffset.top + (parseFloat(util.css(container, 'borderTopWidth')) || 0)) - offsetTop\n };\n diffBottom = {\n left: elemOffset.left + ew - (containerOffset.left + cw + (parseFloat(util.css(container, 'borderRightWidth')) || 0)) + offsetRight,\n top: elemOffset.top + eh - (containerOffset.top + ch + (parseFloat(util.css(container, 'borderBottomWidth')) || 0)) + offsetBottom\n };\n }\n\n if (diffTop.top < 0 || diffBottom.top > 0) {\n // 强制向上\n if (alignWithTop === true) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else if (alignWithTop === false) {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n } else {\n // 自动调整\n if (diffTop.top < 0) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithTop = alignWithTop === undefined ? true : !!alignWithTop;\n if (alignWithTop) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n }\n\n if (allowHorizontalScroll) {\n if (diffTop.left < 0 || diffBottom.left > 0) {\n // 强制向上\n if (alignWithLeft === true) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else if (alignWithLeft === false) {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n } else {\n // 自动调整\n if (diffTop.left < 0) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithLeft = alignWithLeft === undefined ? true : !!alignWithLeft;\n if (alignWithLeft) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n }\n }\n}\n\nmodule.exports = scrollIntoView;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-scroll-into-view/lib/dom-scroll-into-view.js\n// module id = 11\n// module chunks = 0","'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nfunction getClientPosition(elem) {\n var box = undefined;\n var x = undefined;\n var y = undefined;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top;\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];\n var method = 'scroll' + (top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\nfunction _getComputedStyle(elem, name, computedStyle_) {\n var val = '';\n var d = elem.ownerDocument;\n var computedStyle = computedStyle_ || d.defaultView.getComputedStyle(elem, null);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nvar getComputedStyleX = undefined;\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name = undefined;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop = undefined;\n var j = undefined;\n var i = undefined;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = undefined;\n if (prop === 'border') {\n cssProp = prop + which[i] + 'Width';\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj != null && obj == obj.window;\n}\n\nvar domUtils = {};\n\neach(['Width', 'Height'], function (name) {\n domUtils['doc' + name] = function (refWin) {\n var d = refWin.document;\n return Math.max(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement['scroll' + name],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body['scroll' + name], domUtils['viewport' + name](d));\n };\n\n domUtils['viewport' + name] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = 'client' + name;\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, extra) {\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem, computedStyle);\n var cssBoxValue = 0;\n if (borderBoxValue == null || borderBoxValue <= 0) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (cssBoxValue == null || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle);\n }\n return cssBoxValue;\n }\n if (borderBoxValueOrIsBorderBox) {\n var padding = extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle);\n return val + (extra === BORDER_INDEX ? 0 : padding);\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(elem) {\n var val = undefined;\n var args = arguments;\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\nfunction css(el, name, v) {\n var value = v;\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value += 'px';\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils['outer' + first] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, val) {\n if (val !== undefined) {\n if (elem) {\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setOffset(elem, offset) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var old = getOffset(elem);\n var ret = {};\n var current = undefined;\n var key = undefined;\n\n for (key in offset) {\n if (offset.hasOwnProperty(key)) {\n current = parseFloat(css(elem, key)) || 0;\n ret[key] = current + offset[key] - old[key];\n }\n }\n css(elem, ret);\n}\n\nmodule.exports = _extends({\n getWindow: function getWindow(node) {\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n offset: function offset(el, value) {\n if (typeof value !== 'undefined') {\n setOffset(el, value);\n } else {\n return getOffset(el);\n }\n },\n\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var ret = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n var overflow = obj.overflow;\n if (overflow) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n return ret;\n },\n scrollLeft: function scrollLeft(w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollLeft(w);\n }\n window.scrollTo(v, getScrollTop(w));\n } else {\n if (v === undefined) {\n return w.scrollLeft;\n }\n w.scrollLeft = v;\n }\n },\n scrollTop: function scrollTop(w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollTop(w);\n }\n window.scrollTo(getScrollLeft(w), v);\n } else {\n if (v === undefined) {\n return w.scrollTop;\n }\n w.scrollTop = v;\n }\n },\n\n viewportWidth: 0,\n viewportHeight: 0\n}, domUtils);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-scroll-into-view/lib/util.js\n// module id = 12\n// module chunks = 0"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///gutenberg-support.js","webpack:///webpack/bootstrap b4e546eb9d17ec651f70","webpack:///./node_modules/classnames/index.js","webpack:///./src/index.js","webpack:///./src/blocks/index.js","webpack:///./src/blocks/ta-image/index.js","webpack:///./src/blocks/ta-image/edit.js","webpack:///./src/blocks/ta-image/util.js","webpack:///./src/blocks/ta-image/image-size.js","webpack:///./src/blocks/ta-image/search-input.js","webpack:///./src/formats/index.js","webpack:///./src/formats/ta-link/index.js","webpack:///./src/formats/ta-link/inline.js","webpack:///./src/formats/ta-link/positioned-at-selection.js","webpack:///./src/formats/ta-link/utils.js","webpack:///./src/formats/ta-link/url-popover.js","webpack:///./src/formats/ta-link/url-input.js","webpack:///./node_modules/dom-scroll-into-view/lib/index.js","webpack:///./node_modules/dom-scroll-into-view/lib/dom-scroll-into-view.js","webpack:///./node_modules/dom-scroll-into-view/lib/util.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","classNames","classes","arguments","length","arg","argType","push","Array","isArray","inner","apply","key","hasOwn","join","default","undefined","__webpack_exports__","value","__WEBPACK_IMPORTED_MODULE_0__blocks__","__WEBPACK_IMPORTED_MODULE_1__formats__","__WEBPACK_IMPORTED_MODULE_2__assets_styles_index_scss__","registerBlocks","registerFormats","taimage","forEach","block","settings","registerBlockType","__WEBPACK_IMPORTED_MODULE_0__ta_image__","wp","blocks","_defineProperty","obj","writable","__WEBPACK_IMPORTED_MODULE_0_classnames__","__WEBPACK_IMPORTED_MODULE_0_classnames___default","__WEBPACK_IMPORTED_MODULE_1__edit__","Fragment","element","__","i18n","_wp$blocks","createBlock","getBlockAttributes","getPhrasingContentSchema","RichText","editor","_wp$components","components","Path","SVG","blockAttributes","url","type","source","selector","attribute","alt","caption","id","align","width","height","linkid","href","affiliateLink","imageSchema","img","attributes","schema","figure","require","children","ta","figcaption","title","description","icon","createElement","viewBox","xmlns","fill","category","keywords","transforms","from","isMatch","node","nodeName","querySelector","transform","className","alignMatches","exec","idMatches","Number","anchorElement","linkDestination","rel","linkClass","outerHTML","files","indexOf","file","createBlobURL","tag","shortcode","_ref","_document$implementat2","document","implementation","createHTMLDocument","body","innerHTML","content","removeChild","firstElementChild","trim","_ref2","named","parseInt","replace","_ref3","_ref3$named$align","getEditWrapperProps","data-align","data-resized","edit","save","_ref4","_classnames","classnames","image","src","Content","tagName","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","__WEBPACK_IMPORTED_MODULE_1__util__","__WEBPACK_IMPORTED_MODULE_2__image_size__","__WEBPACK_IMPORTED_MODULE_3__search_input__","_extends","assign","target","_slicedToArray","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","Symbol","iterator","next","done","err","_createClass","defineProperties","props","descriptor","protoProps","staticProps","_lodash","lodash","isEmpty","map","last","pick","compact","getPath","_wp$i18n","sprintf","_wp$element","Component","createRef","_wp$blob","blob","getBlobByURL","revokeBlobURL","isBlobURL","Placeholder","Button","ButtonGroup","IconButton","PanelBody","ResizableBox","SelectControl","Spinner","TextControl","TextareaControl","Toolbar","withNotices","withSelect","ToggleControl","Popover","data","_wp$editor","BlockControls","InspectorControls","BlockAlignmentToolbar","MediaUpload","MediaUploadCheck","MediaPlaceholder","mediaUpload","withViewportMatch","viewport","compose","ALLOWED_MEDIA_TYPES","pickRelevantMediaFiles","imageProps","isTemporaryImage","ImageEdit","_Component","this","_this","getPrototypeOf","updateAlt","bind","updateAlignment","onFocusCaption","onImageClick","onSelectImage","updateImageURL","updateWidth","updateHeight","updateDimensions","getFilename","toggleIsEditing","onImageError","onChangeInputValue","autocompleteRef","resetInvalidLink","updateImageSelection","onSelectAffiliateImage","editAFfiliateImage","state","captionFocused","isEditing","inputValue","post","showSuggestions","imageSelection","_this2","_props","setAttributes","noticeOperations","_attributes$url","filesList","onFileChange","allowedTypes","onError","message","createErrorNotice","setState","prevProps","_prevProps$attributes","prevID","_prevProps$attributes2","prevURL","_props$attributes","_props$attributes$url","isSelected","media","link","embedBlock","createUpgradedEmbedBlock","onReplace","newAlt","nextAlign","extraUpdatedAttributes","_this3","path","split","label","_props2","imageSizes","slug","sizeUrl","invalidLink","_this4","apiFetch","addQueryArgs","context","_locale","then","source_url","images","_this5","_state","_props3","isLargeViewport","maxWidth","toggleSelection","isRTL","toolbarEditButton","onClick","controls","onChange","instructions","index","wp-block-image","is-transient","is-resized","is-focused","isResizable","imageSizeOptions","getImageSizeOptions","getInspectorControls","imageWidth","imageHeight","help","options","placeholder","min","aria-label","scale","scaledWidth","Math","round","scaledHeight","isCurrent","isSmall","isPrimary","aria-pressed","dirtynessTrigger","sizes","imageWidthWithinContainer","imageHeightWithinContainer","filename","defaultedAlt","style","currentWidth","currentHeight","ratio","minWidth","minHeight","maxWidthBuffer","showRightHandle","showLeftHandle","size","maxHeight","lockAspectRatio","enable","top","right","bottom","left","onResizeStart","onResizeStop","event","direction","elt","delta","unstableOnFocus","inlineToolbar","select","_select","getMedia","_select2","getEditorSettings","_getEditorSettings","includes","renderToString","attributesFromPreview","preview","matchingBlock","findBlock","DEFAULT_EMBED_BLOCK","html","isFromWordPress","noop","withGlobalEvents","ImageSize","bindContainer","calculateSize","ref","container","fetchImageSize","onload","window","Image","clientWidth","exceedMaxWidth","containerWidth","containerHeight","clientHeight","resize","withSpokenMessages","withInstanceId","ThirstyURLInput","inputRef","searchAffiliateLinks","suggestionNodes","posts","selectedSuggestion","loading","scrollingIntoView","scrollIntoView","current","onlyScrollIfNeeded","setTimeout","suggestionsRequest","formData","FormData","append","request","fetch","ajaxurl","method","response","json","affiliate_links","debouncedSpeak","catch","selectLink","instanceId","autoFocus","_state2","class","onSubmit","displayAffiliateImages","autocomplete","position","focusOnMount","role","tabIndex","bindSuggestionNode","is-selected","handleOnClick","aria-selected","_objectWithoutProperties","keys","taLink","registerFormatType","__WEBPACK_IMPORTED_MODULE_0__ta_link__","richText","__WEBPACK_IMPORTED_MODULE_0__inline__","_wp$richText","getTextContent","applyFormat","removeFormat","slice","isURL","RichTextToolbarButton","RichTextShortcut","LinkEdit","addLink","stopAddingLink","onRemoveFormat","addingLink","text","speak","isActive","activeAttributes","character","onUse","shortcutType","shortcutCharacter","createLinkFormat","toString","isShowingInput","editLink","__WEBPACK_IMPORTED_MODULE_1__positioned_at_selection__","__WEBPACK_IMPORTED_MODULE_2__utils__","__WEBPACK_IMPORTED_MODULE_3__url_popover__","__WEBPACK_IMPORTED_MODULE_4__url_input__","ExternalLink","_wp$keycodes","keycodes","LEFT","RIGHT","UP","DOWN","BACKSPACE","ENTER","_wp$url","prependHTTP","safeDecodeURI","filterURLForDisplay","insert","isCollapsed","stopKeyPropagation","stopPropagation","LinkEditor","onKeyDown","submitLink","onKeyPress","LinkViewerUrl","prependedURL","linkClassName","has-invalid-link","isValidHref","LinkViewer","InlineAffiliateLinkUI","onClickOutside","resetState","keyCode","preventDefault","selectedText","format","toInsert","autocompleteElement","contains","_props2$activeAttribu","showInput","start","end","onClose","updateLinkId","getCurrentCaretPositionStyle","selection","getSelection","rangeCount","rect","getRectangleFromRange","getRangeAt","offsetParent","getOffsetParent","anchorNode","parentRect","getBoundingClientRect","_wp$dom","dom","ThirstyPositionedAtSelection","trimmedHref","test","protocol","getProtocol","isValidProtocol","startsWith","authority","getAuthority","isValidAuthority","isValidPath","queryString","getQueryString","isValidQueryString","fragment","getFragment","isValidFragment","ThirstyURLPopover","toggleSettingsVisibility","isSettingsExpanded","renderSettings","_props$position","_props$focusOnMount","showSettings","aria-expanded","__WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view__","__WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view___default","throttle","TAB","stopEventPropagation","updateSuggestions","previousIndex","nextIndex","selectionStart","setSelectionRange","focus","_props$value","_props$autoFocus","_state3","required","onInput","aria-autocomplete","aria-owns","aria-activedescendant","noArrow","elem","config","nodeType","util","getWindow","allowHorizontalScroll","alignWithTop","alignWithLeft","offsetTop","offsetLeft","offsetBottom","offsetRight","isWin","isWindow","elemOffset","offset","eh","outerHeight","ew","outerWidth","containerOffset","ch","cw","containerScroll","diffTop","diffBottom","win","winScroll","ww","wh","scrollLeft","scrollTop","parseFloat","css","getClientPosition","box","x","y","doc","ownerDocument","docElem","documentElement","clientLeft","clientTop","getScroll","w","ret","getScrollLeft","getScrollTop","getOffset","el","pos","defaultView","parentWindow","_getComputedStyle","computedStyle_","val","computedStyle","getComputedStyle","getPropertyValue","_getComputedStyleIE","CURRENT_STYLE","_RE_NUM_NO_PX","RE_POS","rsLeft","RUNTIME_STYLE","pixelLeft","PX","each","fn","isBorderBoxFn","getComputedStyleX","swap","callback","old","getPBMWidth","which","prop","j","cssProp","getWH","extra","domUtils","viewportWidth","viewportHeight","docWidth","docHeight","borderBoxValue","offsetWidth","offsetHeight","isBorderBox","cssBoxValue","BORDER_INDEX","CONTENT_INDEX","borderBoxValueOrIsBorderBox","padding","PADDING_INDEX","BOX_MODELS","getWHIgnoreDisplay","args","cssShow","v","_typeof","setOffset","RE_NUM","RegExp","refWin","max","documentElementProp","compatMode","visibility","display","first","charAt","toUpperCase","includeMargin","clone","overflow","scrollTo"],"mappings":"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","file":"gutenberg-support.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__blocks__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__formats__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__assets_styles_index_scss__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__assets_styles_index_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__assets_styles_index_scss__);\n\n\n\n\n\nObject(__WEBPACK_IMPORTED_MODULE_0__blocks__[\"a\" /* default */])();\nObject(__WEBPACK_IMPORTED_MODULE_1__formats__[\"a\" /* default */])();\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = registerBlocks;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ta_image__ = __webpack_require__(3);\n\n\nvar registerBlockType = wp.blocks.registerBlockType;\n\n/**\n * Register gutenberg blocks.\n * \n * @since 3.6\n */\n\nfunction registerBlocks() {\n\n [__WEBPACK_IMPORTED_MODULE_0__ta_image__].forEach(function (block) {\n if (!block) return;\n\n var name = block.name,\n settings = block.settings;\n\n registerBlockType(name, settings);\n });\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"name\", function() { return name; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"settings\", function() { return settings; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__edit__ = __webpack_require__(4);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nvar Fragment = wp.element.Fragment;\nvar __ = wp.i18n.__;\nvar _wp$blocks = wp.blocks,\n createBlock = _wp$blocks.createBlock,\n getBlockAttributes = _wp$blocks.getBlockAttributes,\n getPhrasingContentSchema = _wp$blocks.getPhrasingContentSchema;\nvar RichText = wp.editor.RichText;\nvar _wp$components = wp.components,\n Path = _wp$components.Path,\n SVG = _wp$components.SVG;\n\n\n\n\nvar name = 'ta/image';\n\nvar blockAttributes = {\n\turl: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'img',\n\t\tattribute: 'src'\n\t},\n\talt: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'img',\n\t\tattribute: 'alt',\n\t\tdefault: ''\n\t},\n\tcaption: {\n\t\ttype: 'string',\n\t\tsource: 'html',\n\t\tselector: 'figcaption'\n\t},\n\tid: {\n\t\ttype: 'number'\n\t},\n\talign: {\n\t\ttype: 'string'\n\t},\n\twidth: {\n\t\ttype: 'number'\n\t},\n\theight: {\n\t\ttype: 'number'\n\t},\n\tlinkid: {\n\t\ttype: 'number'\n\t},\n\thref: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'ta',\n\t\tattribute: 'href'\n\t},\n\taffiliateLink: {\n\t\ttype: 'object'\n\t}\n};\n\nvar imageSchema = {\n\timg: {\n\t\tattributes: ['src', 'alt'],\n\t\tclasses: ['alignleft', 'aligncenter', 'alignright', 'alignnone', /^wp-image-\\d+$/]\n\t}\n};\n\nvar schema = {\n\tfigure: {\n\t\trequire: ['ta', 'img'],\n\t\tchildren: {\n\t\t\tta: {\n\t\t\t\tattributes: ['href', 'linkid'],\n\t\t\t\tchildren: imageSchema\n\t\t\t},\n\t\t\tfigcaption: {\n\t\t\t\tchildren: getPhrasingContentSchema()\n\t\t\t}\n\t\t}\n\t}\n};\n\nfunction getFirstAnchorAttributeFormHTML(html, attributeName) {\n\tvar _document$implementat = document.implementation.createHTMLDocument(''),\n\t body = _document$implementat.body;\n\n\tbody.innerHTML = html;\n\n\tvar firstElementChild = body.firstElementChild;\n\n\n\tif (firstElementChild && firstElementChild.nodeName === 'A') {\n\t\treturn firstElementChild.getAttribute(attributeName) || undefined;\n\t}\n}\n\nvar settings = {\n\ttitle: __('ThirstyAffiliates Image'),\n\n\tdescription: __('Insert an image with an affiliate link to make a visual statement.'),\n\n\ticon: wp.element.createElement(\n\t\tSVG,\n\t\t{ viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t\twp.element.createElement(Path, { d: \"M0,0h24v24H0V0z\", fill: \"none\" }),\n\t\twp.element.createElement(Path, { d: \"m19 5v14h-14v-14h14m0-2h-14c-1.1 0-2 0.9-2 2v14c0 1.1 0.9 2 2 2h14c1.1 0 2-0.9 2-2v-14c0-1.1-0.9-2-2-2z\" }),\n\t\twp.element.createElement(Path, { d: \"m14.14 11.86l-3 3.87-2.14-2.59-3 3.86h12l-3.86-5.14z\" })\n\t),\n\n\tcategory: 'common',\n\n\tkeywords: ['img', // \"img\" is not translated as it is intended to reflect the HTML <img> tag.\n\t__('photo'), __('affiliate')],\n\n\tattributes: blockAttributes,\n\n\ttransforms: {\n\t\tfrom: [{\n\t\t\ttype: 'raw',\n\t\t\tisMatch: function isMatch(node) {\n\t\t\t\treturn node.nodeName === 'FIGURE' && !!node.querySelector('img');\n\t\t\t},\n\t\t\tschema: schema,\n\t\t\ttransform: function transform(node) {\n\n\t\t\t\t// Search both figure and image classes. Alignment could be\n\t\t\t\t// set on either. ID is set on the image.\n\t\t\t\tvar className = node.className + ' ' + node.querySelector('img').className;\n\t\t\t\tvar alignMatches = /(?:^|\\s)align(left|center|right)(?:$|\\s)/.exec(className);\n\t\t\t\tvar align = alignMatches ? alignMatches[1] : undefined;\n\t\t\t\tvar idMatches = /(?:^|\\s)wp-image-(\\d+)(?:$|\\s)/.exec(className);\n\t\t\t\tvar id = idMatches ? Number(idMatches[1]) : undefined;\n\t\t\t\tvar anchorElement = node.querySelector('a');\n\t\t\t\tvar linkDestination = anchorElement && anchorElement.href ? 'custom' : undefined;\n\t\t\t\tvar href = anchorElement && anchorElement.href ? anchorElement.href : undefined;\n\t\t\t\tvar rel = anchorElement && anchorElement.rel ? anchorElement.rel : undefined;\n\t\t\t\tvar linkClass = anchorElement && anchorElement.className ? anchorElement.className : undefined;\n\t\t\t\tvar attributes = getBlockAttributes('ta/image', node.outerHTML, { align: align, id: id, linkDestination: linkDestination, linkid: linkid, href: href, rel: rel, linkClass: linkClass });\n\t\t\t\treturn createBlock('ta/image', attributes);\n\t\t\t}\n\t\t}, {\n\t\t\ttype: 'files',\n\t\t\tisMatch: function isMatch(files) {\n\t\t\t\treturn files.length === 1 && files[0].type.indexOf('image/') === 0;\n\t\t\t},\n\t\t\ttransform: function transform(files) {\n\t\t\t\tvar file = files[0];\n\t\t\t\t// We don't need to upload the media directly here\n\t\t\t\t// It's already done as part of the `componentDidMount`\n\t\t\t\t// int the image block\n\t\t\t\tvar block = createBlock('ta/image', {\n\t\t\t\t\turl: createBlobURL(file)\n\t\t\t\t});\n\n\t\t\t\treturn block;\n\t\t\t}\n\t\t}, {\n\t\t\ttype: 'shortcode',\n\t\t\ttag: 'caption',\n\t\t\tattributes: {\n\t\t\t\turl: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tattribute: 'src',\n\t\t\t\t\tselector: 'img'\n\t\t\t\t},\n\t\t\t\talt: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tattribute: 'alt',\n\t\t\t\t\tselector: 'img'\n\t\t\t\t},\n\t\t\t\tcaption: {\n\t\t\t\t\tshortcode: function shortcode(attributes, _ref) {\n\t\t\t\t\t\tvar _shortcode = _ref.shortcode;\n\n\t\t\t\t\t\tvar _document$implementat2 = document.implementation.createHTMLDocument(''),\n\t\t\t\t\t\t body = _document$implementat2.body;\n\n\t\t\t\t\t\tbody.innerHTML = _shortcode.content;\n\t\t\t\t\t\tbody.removeChild(body.firstElementChild);\n\n\t\t\t\t\t\treturn body.innerHTML.trim();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tid: {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tshortcode: function shortcode(_ref2) {\n\t\t\t\t\t\tvar id = _ref2.named.id;\n\n\t\t\t\t\t\tif (!id) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn parseInt(id.replace('attachment_', ''), 10);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\talign: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: function shortcode(_ref3) {\n\t\t\t\t\t\tvar _ref3$named$align = _ref3.named.align,\n\t\t\t\t\t\t align = _ref3$named$align === undefined ? 'alignnone' : _ref3$named$align;\n\n\t\t\t\t\t\treturn align.replace('align', '');\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlinkid: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'wp-block-ta-image > ta',\n\t\t\t\t\tattribute: 'linkid'\n\t\t\t\t},\n\t\t\t\thref: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'ta',\n\t\t\t\t\tattribute: 'href'\n\t\t\t\t}\n\t\t\t}\n\t\t}]\n\t},\n\n\tgetEditWrapperProps: function getEditWrapperProps(attributes) {\n\t\tvar align = attributes.align,\n\t\t width = attributes.width;\n\n\t\tif ('left' === align || 'center' === align || 'right' === align || 'wide' === align || 'full' === align) {\n\t\t\treturn { 'data-align': align, 'data-resized': !!width };\n\t\t}\n\t},\n\n\n\tedit: __WEBPACK_IMPORTED_MODULE_1__edit__[\"a\" /* default */],\n\n\tsave: function save(_ref4) {\n\t\tvar _classnames;\n\n\t\tvar attributes = _ref4.attributes;\n\t\tvar url = attributes.url,\n\t\t alt = attributes.alt,\n\t\t caption = attributes.caption,\n\t\t align = attributes.align,\n\t\t width = attributes.width,\n\t\t height = attributes.height,\n\t\t id = attributes.id,\n\t\t linkid = attributes.linkid,\n\t\t href = attributes.href;\n\n\n\t\tvar classes = __WEBPACK_IMPORTED_MODULE_0_classnames___default()((_classnames = {}, _defineProperty(_classnames, \"align\" + align, align), _defineProperty(_classnames, 'is-resized', width || height), _classnames));\n\n\t\tvar image = wp.element.createElement(\"img\", {\n\t\t\tsrc: url,\n\t\t\talt: alt,\n\t\t\tclassName: id ? \"wp-image-\" + id : null,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t});\n\n\t\tvar figure = wp.element.createElement(\n\t\t\tFragment,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\t\"ta\",\n\t\t\t\t{ linkid: linkid, href: href },\n\t\t\t\timage\n\t\t\t),\n\t\t\twp.element.createElement(RichText.Content, { tagName: \"figcaption\", value: caption })\n\t\t);\n\n\t\tif ('left' === align || 'right' === align || 'center' === align) {\n\t\t\treturn wp.element.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"wp-block-image\" },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t\"figure\",\n\t\t\t\t\t{ className: classes },\n\t\t\t\t\tfigure\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn wp.element.createElement(\n\t\t\t\"figure\",\n\t\t\t{ className: \"wp-block-image \" + classes },\n\t\t\tfigure\n\t\t);\n\t}\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export pickRelevantMediaFiles */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__image_size__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__search_input__ = __webpack_require__(7);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nvar _lodash = lodash,\n get = _lodash.get,\n isEmpty = _lodash.isEmpty,\n map = _lodash.map,\n last = _lodash.last,\n pick = _lodash.pick,\n compact = _lodash.compact;\nvar getPath = wp.url.getPath;\nvar _wp$i18n = wp.i18n,\n __ = _wp$i18n.__,\n sprintf = _wp$i18n.sprintf;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n Fragment = _wp$element.Fragment,\n createRef = _wp$element.createRef;\nvar _wp$blob = wp.blob,\n getBlobByURL = _wp$blob.getBlobByURL,\n revokeBlobURL = _wp$blob.revokeBlobURL,\n isBlobURL = _wp$blob.isBlobURL;\nvar _wp$components = wp.components,\n Placeholder = _wp$components.Placeholder,\n Button = _wp$components.Button,\n ButtonGroup = _wp$components.ButtonGroup,\n IconButton = _wp$components.IconButton,\n PanelBody = _wp$components.PanelBody,\n ResizableBox = _wp$components.ResizableBox,\n SelectControl = _wp$components.SelectControl,\n Spinner = _wp$components.Spinner,\n TextControl = _wp$components.TextControl,\n TextareaControl = _wp$components.TextareaControl,\n Toolbar = _wp$components.Toolbar,\n withNotices = _wp$components.withNotices,\n ToggleControl = _wp$components.ToggleControl,\n Popover = _wp$components.Popover;\nvar withSelect = wp.data.withSelect;\nvar _wp$editor = wp.editor,\n RichText = _wp$editor.RichText,\n BlockControls = _wp$editor.BlockControls,\n InspectorControls = _wp$editor.InspectorControls,\n MediaUpload = _wp$editor.MediaUpload,\n MediaUploadCheck = _wp$editor.MediaUploadCheck,\n MediaPlaceholder = _wp$editor.MediaPlaceholder,\n BlockAlignmentToolbar = _wp$editor.BlockAlignmentToolbar,\n mediaUpload = _wp$editor.mediaUpload;\nvar withViewportMatch = wp.viewport.withViewportMatch;\nvar compose = wp.compose.compose;\n\n\n\n\n\n\n/**\n * Module constants\n */\nvar MIN_SIZE = 20;\nvar LINK_DESTINATION_NONE = 'none';\nvar LINK_DESTINATION_MEDIA = 'media';\nvar LINK_DESTINATION_ATTACHMENT = 'attachment';\nvar LINK_DESTINATION_CUSTOM = 'custom';\nvar NEW_TAB_REL = 'noreferrer noopener';\nvar ALLOWED_MEDIA_TYPES = ['image'];\n\nvar pickRelevantMediaFiles = function pickRelevantMediaFiles(image) {\n\tvar imageProps = pick(image, ['alt', 'id', 'link', 'caption']);\n\timageProps.url = get(image, ['sizes', 'large', 'url']) || get(image, ['media_details', 'sizes', 'large', 'source_url']) || image.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nvar isTemporaryImage = function isTemporaryImage(id, url) {\n\treturn !id && isBlobURL(url);\n};\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no id\n * and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nvar isExternalImage = function isExternalImage(id, url) {\n\treturn url && !id && !isBlobURL(url);\n};\n\nvar ImageEdit = function (_Component) {\n\t_inherits(ImageEdit, _Component);\n\n\tfunction ImageEdit(_ref) {\n\t\tvar attributes = _ref.attributes;\n\n\t\t_classCallCheck(this, ImageEdit);\n\n\t\tvar _this = _possibleConstructorReturn(this, (ImageEdit.__proto__ || Object.getPrototypeOf(ImageEdit)).apply(this, arguments));\n\n\t\t_this.updateAlt = _this.updateAlt.bind(_this);\n\t\t_this.updateAlignment = _this.updateAlignment.bind(_this);\n\t\t_this.onFocusCaption = _this.onFocusCaption.bind(_this);\n\t\t_this.onImageClick = _this.onImageClick.bind(_this);\n\t\t_this.onSelectImage = _this.onSelectImage.bind(_this);\n\t\t_this.updateImageURL = _this.updateImageURL.bind(_this);\n\t\t_this.updateWidth = _this.updateWidth.bind(_this);\n\t\t_this.updateHeight = _this.updateHeight.bind(_this);\n\t\t_this.updateDimensions = _this.updateDimensions.bind(_this);\n\t\t_this.getFilename = _this.getFilename.bind(_this);\n\t\t_this.toggleIsEditing = _this.toggleIsEditing.bind(_this);\n\t\t_this.onImageError = _this.onImageError.bind(_this);\n\t\t_this.onChangeInputValue = _this.onChangeInputValue.bind(_this);\n\t\t_this.autocompleteRef = createRef();\n\t\t_this.resetInvalidLink = _this.resetInvalidLink.bind(_this);\n\t\t_this.updateImageSelection = _this.updateImageSelection.bind(_this);\n\t\t_this.onSelectAffiliateImage = _this.onSelectAffiliateImage.bind(_this);\n\t\t_this.editAFfiliateImage = _this.editAFfiliateImage.bind(_this);\n\n\t\t_this.state = {\n\t\t\tcaptionFocused: false,\n\t\t\tisEditing: !attributes.url,\n\t\t\tinputValue: '',\n\t\t\tlinkid: 0,\n\t\t\tpost: null,\n\t\t\tshowSuggestions: false,\n\t\t\timageSelection: [],\n\t\t\taffiliateLink: null\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(ImageEdit, [{\n\t\tkey: \"componentDidMount\",\n\t\tvalue: function componentDidMount() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar _props = this.props,\n\t\t\t attributes = _props.attributes,\n\t\t\t setAttributes = _props.setAttributes,\n\t\t\t noticeOperations = _props.noticeOperations;\n\t\t\tvar id = attributes.id,\n\t\t\t _attributes$url = attributes.url,\n\t\t\t url = _attributes$url === undefined ? '' : _attributes$url;\n\n\n\t\t\tif (isTemporaryImage(id, url)) {\n\t\t\t\tvar file = getBlobByURL(url);\n\n\t\t\t\tif (file) {\n\t\t\t\t\tmediaUpload({\n\t\t\t\t\t\tfilesList: [file],\n\t\t\t\t\t\tonFileChange: function onFileChange(_ref2) {\n\t\t\t\t\t\t\tvar _ref3 = _slicedToArray(_ref2, 1),\n\t\t\t\t\t\t\t image = _ref3[0];\n\n\t\t\t\t\t\t\tsetAttributes(pickRelevantMediaFiles(image));\n\t\t\t\t\t\t},\n\t\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t\t\tonError: function onError(message) {\n\t\t\t\t\t\t\tnoticeOperations.createErrorNotice(message);\n\t\t\t\t\t\t\t_this2.setState({ isEditing: true });\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}\n\t}, {\n\t\tkey: \"componentDidUpdate\",\n\t\tvalue: function componentDidUpdate(prevProps) {\n\t\t\tvar _prevProps$attributes = prevProps.attributes,\n\t\t\t prevID = _prevProps$attributes.id,\n\t\t\t _prevProps$attributes2 = _prevProps$attributes.url,\n\t\t\t prevURL = _prevProps$attributes2 === undefined ? '' : _prevProps$attributes2;\n\t\t\tvar _props$attributes = this.props.attributes,\n\t\t\t id = _props$attributes.id,\n\t\t\t _props$attributes$url = _props$attributes.url,\n\t\t\t url = _props$attributes$url === undefined ? '' : _props$attributes$url;\n\n\n\t\t\tif (isTemporaryImage(prevID, prevURL) && !isTemporaryImage(id, url)) {\n\t\t\t\trevokeBlobURL(url);\n\t\t\t}\n\n\t\t\tif (!this.props.isSelected && prevProps.isSelected && this.state.captionFocused) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tcaptionFocused: false\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"onSelectImage\",\n\t\tvalue: function onSelectImage(media) {\n\n\t\t\tif (!media || !media.url) {\n\t\t\t\tthis.props.setAttributes({\n\t\t\t\t\turl: undefined,\n\t\t\t\t\talt: undefined,\n\t\t\t\t\tid: undefined,\n\t\t\t\t\tcaption: undefined\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar affiliateLink = this.state.affiliateLink;\n\n\n\t\t\tthis.setState({\n\t\t\t\tisEditing: false\n\t\t\t});\n\n\t\t\tthis.props.setAttributes(_extends({}, pickRelevantMediaFiles(media), {\n\t\t\t\tlinkid: affiliateLink.id,\n\t\t\t\thref: affiliateLink.link,\n\t\t\t\taffiliateLink: affiliateLink,\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined\n\t\t\t}));\n\t\t}\n\t}, {\n\t\tkey: \"onImageError\",\n\t\tvalue: function onImageError(url) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tvar embedBlock = Object(__WEBPACK_IMPORTED_MODULE_1__util__[\"a\" /* createUpgradedEmbedBlock */])({ attributes: { url: url } });\n\t\t\tif (undefined !== embedBlock) {\n\t\t\t\tthis.props.onReplace(embedBlock);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"onFocusCaption\",\n\t\tvalue: function onFocusCaption() {\n\t\t\tif (!this.state.captionFocused) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tcaptionFocused: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"onImageClick\",\n\t\tvalue: function onImageClick() {\n\t\t\tif (this.state.captionFocused) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tcaptionFocused: false\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"updateAlt\",\n\t\tvalue: function updateAlt(newAlt) {\n\t\t\tthis.props.setAttributes({ alt: newAlt });\n\t\t}\n\t}, {\n\t\tkey: \"updateAlignment\",\n\t\tvalue: function updateAlignment(nextAlign) {\n\t\t\tvar extraUpdatedAttributes = ['wide', 'full'].indexOf(nextAlign) !== -1 ? { width: undefined, height: undefined } : {};\n\t\t\tthis.props.setAttributes(_extends({}, extraUpdatedAttributes, { align: nextAlign }));\n\t\t}\n\t}, {\n\t\tkey: \"updateImageURL\",\n\t\tvalue: function updateImageURL(url) {\n\t\t\tthis.props.setAttributes({ url: url, width: undefined, height: undefined });\n\t\t}\n\t}, {\n\t\tkey: \"updateWidth\",\n\t\tvalue: function updateWidth(width) {\n\t\t\tthis.props.setAttributes({ width: parseInt(width, 10) });\n\t\t}\n\t}, {\n\t\tkey: \"updateHeight\",\n\t\tvalue: function updateHeight(height) {\n\t\t\tthis.props.setAttributes({ height: parseInt(height, 10) });\n\t\t}\n\t}, {\n\t\tkey: \"updateDimensions\",\n\t\tvalue: function updateDimensions() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\t\t\tvar height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\t\treturn function () {\n\t\t\t\t_this3.props.setAttributes({ width: width, height: height });\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"getFilename\",\n\t\tvalue: function getFilename(url) {\n\t\t\tvar path = getPath(url);\n\t\t\tif (path) {\n\t\t\t\treturn last(path.split('/'));\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"getLinkDestinationOptions\",\n\t\tvalue: function getLinkDestinationOptions() {\n\t\t\treturn [{ value: LINK_DESTINATION_NONE, label: __('None') }, { value: LINK_DESTINATION_MEDIA, label: __('Media File') }, { value: LINK_DESTINATION_ATTACHMENT, label: __('Attachment Page') }, { value: LINK_DESTINATION_CUSTOM, label: __('Custom URL') }];\n\t\t}\n\t}, {\n\t\tkey: \"toggleIsEditing\",\n\t\tvalue: function toggleIsEditing() {\n\t\t\tthis.setState({\n\t\t\t\tisEditing: !this.state.isEditing\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: \"getImageSizeOptions\",\n\t\tvalue: function getImageSizeOptions() {\n\t\t\tvar _props2 = this.props,\n\t\t\t imageSizes = _props2.imageSizes,\n\t\t\t image = _props2.image;\n\n\t\t\treturn compact(map(imageSizes, function (_ref4) {\n\t\t\t\tvar name = _ref4.name,\n\t\t\t\t slug = _ref4.slug;\n\n\t\t\t\tvar sizeUrl = get(image, ['media_details', 'sizes', slug, 'source_url']);\n\t\t\t\tif (!sizeUrl) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tvalue: sizeUrl,\n\t\t\t\t\tlabel: name\n\t\t\t\t};\n\t\t\t}));\n\t\t}\n\t}, {\n\t\tkey: \"onChangeInputValue\",\n\t\tvalue: function onChangeInputValue(inputValue) {\n\t\t\tvar post = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\t\tvar linkid = post ? post.id : 0;\n\t\t\tthis.setState({ inputValue: inputValue, linkid: linkid, post: post });\n\t\t}\n\t}, {\n\t\tkey: \"resetInvalidLink\",\n\t\tvalue: function resetInvalidLink() {\n\t\t\tthis.setState({ invalidLink: false });\n\t\t}\n\t}, {\n\t\tkey: \"updateImageSelection\",\n\t\tvalue: function updateImageSelection(imageSelection, affiliateLink) {\n\t\t\tthis.setState({\n\t\t\t\timageSelection: imageSelection,\n\t\t\t\taffiliateLink: affiliateLink\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: \"onSelectAffiliateImage\",\n\t\tvalue: function onSelectAffiliateImage(image) {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar request = wp.apiFetch({\n\t\t\t\tpath: wp.url.addQueryArgs('wp/v2/media/' + image.id, {\n\t\t\t\t\tcontext: 'edit',\n\t\t\t\t\t_locale: 'user'\n\t\t\t\t})\n\t\t\t});\n\n\t\t\trequest.then(function (media) {\n\t\t\t\tmedia.url = media.source_url;\n\t\t\t\t_this4.onSelectImage(media);\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: \"editAFfiliateImage\",\n\t\tvalue: function editAFfiliateImage() {\n\t\t\tvar attributes = this.props.attributes;\n\t\t\tvar affiliateLink = attributes.affiliateLink;\n\n\n\t\t\tthis.setState({\n\t\t\t\tisEditing: true,\n\t\t\t\timageSelection: affiliateLink.images,\n\t\t\t\taffiliateLink: affiliateLink\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar _state = this.state,\n\t\t\t isEditing = _state.isEditing,\n\t\t\t imageSelection = _state.imageSelection,\n\t\t\t affiliateLink = _state.affiliateLink;\n\t\t\tvar _props3 = this.props,\n\t\t\t attributes = _props3.attributes,\n\t\t\t setAttributes = _props3.setAttributes,\n\t\t\t isLargeViewport = _props3.isLargeViewport,\n\t\t\t isSelected = _props3.isSelected,\n\t\t\t className = _props3.className,\n\t\t\t maxWidth = _props3.maxWidth,\n\t\t\t toggleSelection = _props3.toggleSelection,\n\t\t\t isRTL = _props3.isRTL;\n\t\t\tvar url = attributes.url,\n\t\t\t alt = attributes.alt,\n\t\t\t caption = attributes.caption,\n\t\t\t align = attributes.align,\n\t\t\t linkDestination = attributes.linkDestination,\n\t\t\t width = attributes.width,\n\t\t\t height = attributes.height,\n\t\t\t linkid = attributes.linkid,\n\t\t\t href = attributes.href;\n\n\t\t\tvar toolbarEditButton = wp.element.createElement(\n\t\t\t\tToolbar,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(IconButton, {\n\t\t\t\t\tclassName: \"ta-edit-image-button components-icon-button components-toolbar__control\",\n\t\t\t\t\tlabel: __('Edit ThirstyAffiliates Image'),\n\t\t\t\t\ticon: \"edit\",\n\t\t\t\t\tonClick: this.editAFfiliateImage\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tvar controls = wp.element.createElement(\n\t\t\t\tBlockControls,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(BlockAlignmentToolbar, {\n\t\t\t\t\tvalue: align,\n\t\t\t\t\tonChange: this.updateAlignment\n\t\t\t\t}),\n\t\t\t\ttoolbarEditButton\n\t\t\t);\n\n\t\t\tif (isEditing) {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\tFragment,\n\t\t\t\t\tnull,\n\t\t\t\t\tcontrols,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPlaceholder,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ticon: \"format-image\",\n\t\t\t\t\t\t\tlabel: __(\"ThirstyAffiliates Image\"),\n\t\t\t\t\t\t\tinstructions: __(\"Search for an affiliate link and select image to insert.\")\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(__WEBPACK_IMPORTED_MODULE_3__search_input__[\"a\" /* default */], {\n\t\t\t\t\t\t\tupdateImageSelection: this.updateImageSelection\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t!!imageSelection.length && wp.element.createElement(\n\t\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t\t{ className: \"ta-image-sel-wrap\" },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\"h3\",\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\taffiliateLink.title + \" \" + __('attached images:')\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t\t\t{ className: \"ta-image-selection\" },\n\t\t\t\t\t\t\t\timageSelection.map(function (image, index) {\n\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\t\t\treturn _this5.onSelectAffiliateImage(image);\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\twp.element.createElement(\"img\", { src: image.src })\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);\n\t\t\t}\n\n\t\t\tvar classes = __WEBPACK_IMPORTED_MODULE_0_classnames___default()(className, {\n\t\t\t\t'wp-block-image': true,\n\t\t\t\t'is-transient': isBlobURL(url),\n\t\t\t\t'is-resized': !!width || !!height,\n\t\t\t\t'is-focused': isSelected\n\t\t\t});\n\n\t\t\tvar isResizable = ['wide', 'full'].indexOf(align) === -1 && isLargeViewport;\n\t\t\tvar imageSizeOptions = this.getImageSizeOptions();\n\n\t\t\tvar getInspectorControls = function getInspectorControls(imageWidth, imageHeight) {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\tInspectorControls,\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{ title: __('Image Settings') },\n\t\t\t\t\t\twp.element.createElement(TextareaControl, {\n\t\t\t\t\t\t\tlabel: __('Alt Text (Alternative Text)'),\n\t\t\t\t\t\t\tvalue: alt,\n\t\t\t\t\t\t\tonChange: _this5.updateAlt,\n\t\t\t\t\t\t\thelp: __('Alternative text describes your image to people who can’t see it. Add a short description with its key details.')\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t!isEmpty(imageSizeOptions) && wp.element.createElement(SelectControl, {\n\t\t\t\t\t\t\tlabel: __('Image Size'),\n\t\t\t\t\t\t\tvalue: url,\n\t\t\t\t\t\t\toptions: imageSizeOptions,\n\t\t\t\t\t\t\tonChange: _this5.updateImageURL\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tisResizable && wp.element.createElement(\n\t\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t\t{ className: \"block-library-image__dimensions\" },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\"p\",\n\t\t\t\t\t\t\t\t{ className: \"block-library-image__dimensions__row\" },\n\t\t\t\t\t\t\t\t__('Image Dimensions')\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t\t\t{ className: \"block-library-image__dimensions__row\" },\n\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t\t\t\tclassName: \"block-library-image__dimensions__width\",\n\t\t\t\t\t\t\t\t\tlabel: __('Width'),\n\t\t\t\t\t\t\t\t\tvalue: width !== undefined ? width : '',\n\t\t\t\t\t\t\t\t\tplaceholder: imageWidth,\n\t\t\t\t\t\t\t\t\tmin: 1,\n\t\t\t\t\t\t\t\t\tonChange: _this5.updateWidth\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t\t\t\tclassName: \"block-library-image__dimensions__height\",\n\t\t\t\t\t\t\t\t\tlabel: __('Height'),\n\t\t\t\t\t\t\t\t\tvalue: height !== undefined ? height : '',\n\t\t\t\t\t\t\t\t\tplaceholder: imageHeight,\n\t\t\t\t\t\t\t\t\tmin: 1,\n\t\t\t\t\t\t\t\t\tonChange: _this5.updateHeight\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t\t\t{ className: \"block-library-image__dimensions__row\" },\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\tButtonGroup,\n\t\t\t\t\t\t\t\t\t{ \"aria-label\": __('Image Size') },\n\t\t\t\t\t\t\t\t\t[25, 50, 75, 100].map(function (scale) {\n\t\t\t\t\t\t\t\t\t\tvar scaledWidth = Math.round(imageWidth * (scale / 100));\n\t\t\t\t\t\t\t\t\t\tvar scaledHeight = Math.round(imageHeight * (scale / 100));\n\n\t\t\t\t\t\t\t\t\t\tvar isCurrent = width === scaledWidth && height === scaledHeight;\n\n\t\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tkey: scale,\n\t\t\t\t\t\t\t\t\t\t\t\tisSmall: true,\n\t\t\t\t\t\t\t\t\t\t\t\tisPrimary: isCurrent,\n\t\t\t\t\t\t\t\t\t\t\t\t\"aria-pressed\": isCurrent,\n\t\t\t\t\t\t\t\t\t\t\t\tonClick: _this5.updateDimensions(scaledWidth, scaledHeight)\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tscale,\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\twp.element.createElement(\n\t\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tisSmall: true,\n\t\t\t\t\t\t\t\t\t\tonClick: _this5.updateDimensions()\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t__('Reset')\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};\n\n\t\t\t// Disable reason: Each block can be selected by clicking on it\n\t\t\t/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/onclick-has-role, jsx-a11y/click-events-have-key-events */\n\t\t\treturn wp.element.createElement(\n\t\t\t\tFragment,\n\t\t\t\tnull,\n\t\t\t\tcontrols,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t\"figure\",\n\t\t\t\t\t{ className: classes },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_2__image_size__[\"a\" /* default */],\n\t\t\t\t\t\t{ src: url, dirtynessTrigger: align },\n\t\t\t\t\t\tfunction (sizes) {\n\t\t\t\t\t\t\tvar imageWidthWithinContainer = sizes.imageWidthWithinContainer,\n\t\t\t\t\t\t\t imageHeightWithinContainer = sizes.imageHeightWithinContainer,\n\t\t\t\t\t\t\t imageWidth = sizes.imageWidth,\n\t\t\t\t\t\t\t imageHeight = sizes.imageHeight;\n\n\n\t\t\t\t\t\t\tvar filename = _this5.getFilename(url);\n\t\t\t\t\t\t\tvar defaultedAlt = void 0;\n\t\t\t\t\t\t\tif (alt) {\n\t\t\t\t\t\t\t\tdefaultedAlt = alt;\n\t\t\t\t\t\t\t} else if (filename) {\n\t\t\t\t\t\t\t\tdefaultedAlt = sprintf(__('This image has an empty alt attribute; its file name is %s'), filename);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdefaultedAlt = __('This image has an empty alt attribute');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar img =\n\t\t\t\t\t\t\t// Disable reason: Image itself is not meant to be interactive, but\n\t\t\t\t\t\t\t// should direct focus to block.\n\t\t\t\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\tFragment,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\"ta\",\n\t\t\t\t\t\t\t\t\t{ linkid: linkid, href: href },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\"img\", { src: url, alt: defaultedAlt, onClick: _this5.onImageClick, onError: function onError() {\n\t\t\t\t\t\t\t\t\t\t\treturn _this5.onImageError(url);\n\t\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\tisBlobURL(url) && wp.element.createElement(Spinner, null)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t\t\t\t\t;\n\n\t\t\t\t\t\t\tif (!isResizable || !imageWidthWithinContainer) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\tFragment,\n\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\tgetInspectorControls(imageWidth, imageHeight),\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t\t\t\t\t{ style: { width: width, height: height } },\n\t\t\t\t\t\t\t\t\t\timg\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\n\t\t\t\t\t\t\tvar currentWidth = width || imageWidthWithinContainer;\n\t\t\t\t\t\t\tvar currentHeight = height || imageHeightWithinContainer;\n\n\t\t\t\t\t\t\tvar ratio = imageWidth / imageHeight;\n\t\t\t\t\t\t\tvar minWidth = imageWidth < imageHeight ? MIN_SIZE : MIN_SIZE * ratio;\n\t\t\t\t\t\t\tvar minHeight = imageHeight < imageWidth ? MIN_SIZE : MIN_SIZE / ratio;\n\n\t\t\t\t\t\t\t// With the current implementation of ResizableBox, an image needs an explicit pixel value for the max-width.\n\t\t\t\t\t\t\t// In absence of being able to set the content-width, this max-width is currently dictated by the vanilla editor style.\n\t\t\t\t\t\t\t// The following variable adds a buffer to this vanilla style, so 3rd party themes have some wiggleroom.\n\t\t\t\t\t\t\t// This does, in most cases, allow you to scale the image beyond the width of the main column, though not infinitely.\n\t\t\t\t\t\t\t// @todo It would be good to revisit this once a content-width variable becomes available.\n\t\t\t\t\t\t\tvar maxWidthBuffer = maxWidth * 2.5;\n\n\t\t\t\t\t\t\tvar showRightHandle = false;\n\t\t\t\t\t\t\tvar showLeftHandle = false;\n\n\t\t\t\t\t\t\t/* eslint-disable no-lonely-if */\n\t\t\t\t\t\t\t// See https://github.com/WordPress/gutenberg/issues/7584.\n\t\t\t\t\t\t\tif (align === 'center') {\n\t\t\t\t\t\t\t\t// When the image is centered, show both handles.\n\t\t\t\t\t\t\t\tshowRightHandle = true;\n\t\t\t\t\t\t\t\tshowLeftHandle = true;\n\t\t\t\t\t\t\t} else if (isRTL) {\n\t\t\t\t\t\t\t\t// In RTL mode the image is on the right by default.\n\t\t\t\t\t\t\t\t// Show the right handle and hide the left handle only when it is aligned left.\n\t\t\t\t\t\t\t\t// Otherwise always show the left handle.\n\t\t\t\t\t\t\t\tif (align === 'left') {\n\t\t\t\t\t\t\t\t\tshowRightHandle = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tshowLeftHandle = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Show the left handle and hide the right handle only when the image is aligned right.\n\t\t\t\t\t\t\t\t// Otherwise always show the right handle.\n\t\t\t\t\t\t\t\tif (align === 'right') {\n\t\t\t\t\t\t\t\t\tshowLeftHandle = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tshowRightHandle = true;\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/* eslint-enable no-lonely-if */\n\n\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\tFragment,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tgetInspectorControls(imageWidth, imageHeight),\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\tResizableBox,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsize: width && height ? {\n\t\t\t\t\t\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\t\t\t\t\t\theight: height\n\t\t\t\t\t\t\t\t\t\t} : undefined,\n\t\t\t\t\t\t\t\t\t\tminWidth: minWidth,\n\t\t\t\t\t\t\t\t\t\tmaxWidth: maxWidthBuffer,\n\t\t\t\t\t\t\t\t\t\tminHeight: minHeight,\n\t\t\t\t\t\t\t\t\t\tmaxHeight: maxWidthBuffer / ratio,\n\t\t\t\t\t\t\t\t\t\tlockAspectRatio: true,\n\t\t\t\t\t\t\t\t\t\tenable: {\n\t\t\t\t\t\t\t\t\t\t\ttop: false,\n\t\t\t\t\t\t\t\t\t\t\tright: showRightHandle,\n\t\t\t\t\t\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\t\t\t\t\t\tleft: showLeftHandle\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tonResizeStart: function onResizeStart() {\n\t\t\t\t\t\t\t\t\t\t\ttoggleSelection(false);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tonResizeStop: function onResizeStop(event, direction, elt, delta) {\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes({\n\t\t\t\t\t\t\t\t\t\t\t\twidth: parseInt(currentWidth + delta.width, 10),\n\t\t\t\t\t\t\t\t\t\t\t\theight: parseInt(currentHeight + delta.height, 10)\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\ttoggleSelection(true);\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\timg\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(!RichText.isEmpty(caption) || isSelected) && wp.element.createElement(RichText, {\n\t\t\t\t\t\ttagName: \"figcaption\",\n\t\t\t\t\t\tplaceholder: __('Write caption…'),\n\t\t\t\t\t\tvalue: caption,\n\t\t\t\t\t\tunstableOnFocus: this.onFocusCaption,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ caption: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tisSelected: this.state.captionFocused,\n\t\t\t\t\t\tinlineToolbar: true\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t);\n\t\t\t/* eslint-enable jsx-a11y/no-static-element-interactions, jsx-a11y/onclick-has-role, jsx-a11y/click-events-have-key-events */\n\t\t}\n\t}]);\n\n\treturn ImageEdit;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (compose([withSelect(function (select, props) {\n\tvar _select = select('core'),\n\t getMedia = _select.getMedia;\n\n\tvar _select2 = select('core/editor'),\n\t getEditorSettings = _select2.getEditorSettings;\n\n\tvar id = props.attributes.id;\n\n\tvar _getEditorSettings = getEditorSettings(),\n\t maxWidth = _getEditorSettings.maxWidth,\n\t isRTL = _getEditorSettings.isRTL,\n\t imageSizes = _getEditorSettings.imageSizes;\n\n\treturn {\n\t\timage: id ? getMedia(id) : null,\n\t\tmaxWidth: maxWidth,\n\t\tisRTL: isRTL,\n\t\timageSizes: imageSizes\n\t};\n}), withViewportMatch({ isLargeViewport: 'medium' }), withNotices])(ImageEdit));\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return createUpgradedEmbedBlock; });\n/* unused harmony export isFromWordPress */\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar WORDPRESS_EMBED_BLOCK = 'core-embed/wordpress';\n\nvar _lodash = lodash,\n includes = _lodash.includes;\nvar renderToString = wp.element.renderToString;\nvar createBlock = wp.blocks.createBlock;\n\n/***\n * Creates a more suitable embed block based on the passed in props\n * and attributes generated from an embed block's preview.\n *\n * We require `attributesFromPreview` to be generated from the latest attributes\n * and preview, and because of the way the react lifecycle operates, we can't\n * guarantee that the attributes contained in the block's props are the latest\n * versions, so we require that these are generated separately.\n * See `getAttributesFromPreview` in the generated embed edit component.\n *\n * @param {Object} props The block's props.\n * @param {Object} attributesFromPreview Attributes generated from the block's most up to date preview.\n * @return {Object|undefined} A more suitable embed block if one exists.\n */\n\nvar createUpgradedEmbedBlock = function createUpgradedEmbedBlock(props, attributesFromPreview) {\n\tvar preview = props.preview,\n\t name = props.name;\n\tvar url = props.attributes.url;\n\n\n\tif (!url) {\n\t\treturn;\n\t}\n\n\tvar matchingBlock = findBlock(url);\n\n\t// WordPress blocks can work on multiple sites, and so don't have patterns,\n\t// so if we're in a WordPress block, assume the user has chosen it for a WordPress URL.\n\tif (WORDPRESS_EMBED_BLOCK !== name && DEFAULT_EMBED_BLOCK !== matchingBlock) {\n\t\t// At this point, we have discovered a more suitable block for this url, so transform it.\n\t\tif (name !== matchingBlock) {\n\t\t\treturn createBlock(matchingBlock, { url: url });\n\t\t}\n\t}\n\n\tif (preview) {\n\t\tvar html = preview.html;\n\n\t\t// We can't match the URL for WordPress embeds, we have to check the HTML instead.\n\n\t\tif (isFromWordPress(html)) {\n\t\t\t// If this is not the WordPress embed block, transform it into one.\n\t\t\tif (WORDPRESS_EMBED_BLOCK !== name) {\n\t\t\t\treturn createBlock(WORDPRESS_EMBED_BLOCK, _extends({\n\t\t\t\t\turl: url\n\t\t\t\t}, attributesFromPreview));\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar isFromWordPress = function isFromWordPress(html) {\n\treturn includes(html, 'class=\"wp-embedded-content\" data-secret');\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _lodash = lodash,\n noop = _lodash.noop;\nvar withGlobalEvents = wp.compose.withGlobalEvents;\nvar Component = wp.element.Component;\n\nvar ImageSize = function (_Component) {\n\t_inherits(ImageSize, _Component);\n\n\tfunction ImageSize() {\n\t\t_classCallCheck(this, ImageSize);\n\n\t\tvar _this = _possibleConstructorReturn(this, (ImageSize.__proto__ || Object.getPrototypeOf(ImageSize)).apply(this, arguments));\n\n\t\t_this.state = {\n\t\t\twidth: undefined,\n\t\t\theight: undefined\n\t\t};\n\t\t_this.bindContainer = _this.bindContainer.bind(_this);\n\t\t_this.calculateSize = _this.calculateSize.bind(_this);\n\t\treturn _this;\n\t}\n\n\t_createClass(ImageSize, [{\n\t\tkey: 'bindContainer',\n\t\tvalue: function bindContainer(ref) {\n\t\t\tthis.container = ref;\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps) {\n\t\t\tif (this.props.src !== prevProps.src) {\n\t\t\t\tthis.setState({\n\t\t\t\t\twidth: undefined,\n\t\t\t\t\theight: undefined\n\t\t\t\t});\n\t\t\t\tthis.fetchImageSize();\n\t\t\t}\n\n\t\t\tif (this.props.dirtynessTrigger !== prevProps.dirtynessTrigger) {\n\t\t\t\tthis.calculateSize();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.fetchImageSize();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tif (this.image) {\n\t\t\t\tthis.image.onload = noop;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'fetchImageSize',\n\t\tvalue: function fetchImageSize() {\n\t\t\tthis.image = new window.Image();\n\t\t\tthis.image.onload = this.calculateSize;\n\t\t\tthis.image.src = this.props.src;\n\t\t}\n\t}, {\n\t\tkey: 'calculateSize',\n\t\tvalue: function calculateSize() {\n\t\t\tvar maxWidth = this.container.clientWidth;\n\t\t\tvar exceedMaxWidth = this.image.width > maxWidth;\n\t\t\tvar ratio = this.image.height / this.image.width;\n\t\t\tvar width = exceedMaxWidth ? maxWidth : this.image.width;\n\t\t\tvar height = exceedMaxWidth ? maxWidth * ratio : this.image.height;\n\t\t\tthis.setState({ width: width, height: height });\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizes = {\n\t\t\t\timageWidth: this.image && this.image.width,\n\t\t\t\timageHeight: this.image && this.image.height,\n\t\t\t\tcontainerWidth: this.container && this.container.clientWidth,\n\t\t\t\tcontainerHeight: this.container && this.container.clientHeight,\n\t\t\t\timageWidthWithinContainer: this.state.width,\n\t\t\t\timageHeightWithinContainer: this.state.height\n\t\t\t};\n\t\t\treturn wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ ref: this.bindContainer },\n\t\t\t\tthis.props.children(sizes)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn ImageSize;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (withGlobalEvents({\n\tresize: 'calculateSize'\n})(ImageSize));\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_classnames__);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nvar __ = wp.i18n.__;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n createRef = _wp$element.createRef;\nvar _wp$components = wp.components,\n Spinner = _wp$components.Spinner,\n withSpokenMessages = _wp$components.withSpokenMessages,\n Popover = _wp$components.Popover,\n TextControl = _wp$components.TextControl;\nvar withInstanceId = wp.compose.withInstanceId;\n\nvar ThirstyURLInput = function (_Component) {\n\t_inherits(ThirstyURLInput, _Component);\n\n\t/**\n * Component constructor method.\n * \n * @since 3.6\n * \n * @param {*} param0 \n */\n\tfunction ThirstyURLInput(_ref) {\n\t\tvar autocompleteRef = _ref.autocompleteRef;\n\n\t\t_classCallCheck(this, ThirstyURLInput);\n\n\t\t// this.onChange = this.onChange.bind( this );\n\t\t// this.onKeyDown = this.onKeyDown.bind( this );\n\t\tvar _this = _possibleConstructorReturn(this, (ThirstyURLInput.__proto__ || Object.getPrototypeOf(ThirstyURLInput)).apply(this, arguments));\n\n\t\t_this.autocompleteRef = autocompleteRef || createRef();\n\t\t_this.inputRef = createRef();\n\t\t_this.searchAffiliateLinks = _this.searchAffiliateLinks.bind(_this);\n\t\t// this.updateSuggestions = throttle( this.updateSuggestions.bind( this ), 200 );\n\n\t\t_this.suggestionNodes = [];\n\n\t\t_this.state = {\n\t\t\tposts: [],\n\t\t\tshowSuggestions: false,\n\t\t\tselectedSuggestion: null,\n\t\t\tloading: false\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Component did update method.\n * \n * @since 3.6\n */\n\n\n\t_createClass(ThirstyURLInput, [{\n\t\tkey: \"componentDidUpdate\",\n\t\tvalue: function componentDidUpdate() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar _state = this.state,\n\t\t\t showSuggestions = _state.showSuggestions,\n\t\t\t selectedSuggestion = _state.selectedSuggestion;\n\t\t\t// only have to worry about scrolling selected suggestion into view\n\t\t\t// when already expanded\n\n\t\t\tif (showSuggestions && selectedSuggestion !== null && !this.scrollingIntoView) {\n\t\t\t\tthis.scrollingIntoView = true;\n\t\t\t\tscrollIntoView(this.suggestionNodes[selectedSuggestion], this.autocompleteRef.current, {\n\t\t\t\t\tonlyScrollIfNeeded: true\n\t\t\t\t});\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t_this2.scrollingIntoView = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Component unmount method.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: \"componentWillUnmount\",\n\t\tvalue: function componentWillUnmount() {\n\t\t\tdelete this.suggestionsRequest;\n\t\t}\n\n\t\t/**\n * Bind suggestion to node.\n * \n * @param {*} index \n */\n\n\t}, {\n\t\tkey: \"bindSuggestionNode\",\n\t\tvalue: function bindSuggestionNode(index) {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn function (ref) {\n\t\t\t\t_this3.suggestionNodes[index] = ref;\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"searchAffiliateLinks\",\n\t\tvalue: function searchAffiliateLinks(value) {\n\t\t\tvar _this4 = this;\n\n\t\t\t// Show the suggestions after typing at least 2 characters=\n\t\t\tif (value.length < 2) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tshowSuggestions: false,\n\t\t\t\t\tselectedSuggestion: null,\n\t\t\t\t\tloading: false\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.setState({\n\t\t\t\tshowSuggestions: true,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: true\n\t\t\t});\n\n\t\t\tvar formData = new FormData();\n\t\t\tformData.append(\"action\", \"search_affiliate_links_query\");\n\t\t\tformData.append(\"keyword\", value);\n\t\t\tformData.append(\"paged\", 1);\n\t\t\tformData.append(\"gutenberg\", true);\n\t\t\tformData.append(\"with_images\", true);\n\n\t\t\t// We are getting data via the WP AJAX instead of rest API as it is not possible yet\n\t\t\t// to filter results with category value. This is to prepare next update to add category filter.\n\t\t\tvar request = fetch(ajaxurl, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: formData\n\t\t\t});\n\n\t\t\trequest.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t}).then(function (response) {\n\n\t\t\t\tif (!response.affiliate_links) return;\n\n\t\t\t\tvar posts = response.affiliate_links;\n\n\t\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\t\tif (_this4.suggestionsRequest !== request) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_this4.setState({\n\t\t\t\t\tposts: posts,\n\t\t\t\t\tloading: false\n\t\t\t\t});\n\n\t\t\t\tif (!!posts.length) {\n\t\t\t\t\t_this4.props.debouncedSpeak(sprintf(_n('%d result found, use up and down arrow keys to navigate.', '%d results found, use up and down arrow keys to navigate.', posts.length), posts.length), 'assertive');\n\t\t\t\t} else {\n\t\t\t\t\t_this4.props.debouncedSpeak(__('No results.'), 'assertive');\n\t\t\t\t}\n\t\t\t}).catch(function () {\n\t\t\t\tif (_this4.suggestionsRequest === request) {\n\t\t\t\t\t_this4.setState({\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.suggestionsRequest = request;\n\t\t}\n\n\t\t/**\n * Set state when an affiliate link is selected.\n * \n * @since 3.6\n * \n * @param {*} post \n */\n\n\t}, {\n\t\tkey: \"selectLink\",\n\t\tvalue: function selectLink(post) {\n\t\t\t// this.props.onChange( post.link, post );\n\t\t\tthis.setState({\n\t\t\t\tselectedSuggestion: post,\n\t\t\t\tshowSuggestions: false\n\t\t\t});\n\n\t\t\tthis.props.updateImageSelection(post.images, post);\n\t\t}\n\n\t\t/**\n * Callback handler for when affiliate link is selected.\n * \n * @param {*} post \n */\n\n\t}, {\n\t\tkey: \"handleOnClick\",\n\t\tvalue: function handleOnClick(post) {\n\t\t\tthis.selectLink(post);\n\t\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\t\t// this.inputRef.current.focus();\n\t\t}\n\t}, {\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar _props = this.props,\n\t\t\t _props$value = _props.value,\n\t\t\t value = _props$value === undefined ? '' : _props$value,\n\t\t\t _props$autoFocus = _props.autoFocus,\n\t\t\t autoFocus = _props$autoFocus === undefined ? true : _props$autoFocus,\n\t\t\t instanceId = _props.instanceId;\n\t\t\tvar _state2 = this.state,\n\t\t\t showSuggestions = _state2.showSuggestions,\n\t\t\t posts = _state2.posts,\n\t\t\t selectedSuggestion = _state2.selectedSuggestion,\n\t\t\t loading = _state2.loading;\n\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ \"class\": \"edit-search-affiliate-links\" },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t\"form\",\n\t\t\t\t\t{\n\t\t\t\t\t\tclassName: \"editor-format-toolbar__link-container-content ta-link-search-popover\",\n\t\t\t\t\t\tonSubmit: this.displayAffiliateImages\n\t\t\t\t\t},\n\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\tclassName: \"ta-search-affiliate-links\",\n\t\t\t\t\t\tplaceholder: __(\"Type to search affiliate links\"),\n\t\t\t\t\t\tonChange: this.searchAffiliateLinks,\n\t\t\t\t\t\tautocomplete: \"off\"\n\t\t\t\t\t}),\n\t\t\t\t\tloading && wp.element.createElement(Spinner, null),\n\t\t\t\t\tshowSuggestions && !!posts.length && wp.element.createElement(\n\t\t\t\t\t\tPopover,\n\t\t\t\t\t\t{ position: \"bottom\", focusOnMount: false },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t\t{ \"class\": \"affilate-links-suggestions\" },\n\t\t\t\t\t\t\tposts.map(function (post, index) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tkey: post.id,\n\t\t\t\t\t\t\t\t\t\trole: \"option\",\n\t\t\t\t\t\t\t\t\t\ttabIndex: \"-1\",\n\t\t\t\t\t\t\t\t\t\tid: \"editor-url-input-suggestion-\" + instanceId + \"-\" + index,\n\t\t\t\t\t\t\t\t\t\tref: _this5.bindSuggestionNode(index),\n\t\t\t\t\t\t\t\t\t\tclassName: __WEBPACK_IMPORTED_MODULE_0_classnames___default()('editor-url-input__suggestion', {\n\t\t\t\t\t\t\t\t\t\t\t'is-selected': index === selectedSuggestion\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\t\treturn _this5.handleOnClick(post);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"aria-selected\": index === selectedSuggestion\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tpost.title || __('(no title)')\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);\n\t\t}\n\t}]);\n\n\treturn ThirstyURLInput;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (withSpokenMessages(withInstanceId(ThirstyURLInput)));\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = registerFormats;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ta_link__ = __webpack_require__(9);\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n\n\nvar registerFormatType = wp.richText.registerFormatType;\n\n/**\n * Register custom formats.\n * \n * @since 3.6\n */\n\nfunction registerFormats() {\n\n [__WEBPACK_IMPORTED_MODULE_0__ta_link__[\"a\" /* taLink */]].forEach(function (_ref) {\n var name = _ref.name,\n settings = _objectWithoutProperties(_ref, [\"name\"]);\n\n return registerFormatType(name, settings);\n });\n}\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return taLink; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__inline__ = __webpack_require__(10);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nvar __ = wp.i18n.__;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n Fragment = _wp$element.Fragment;\nvar withSpokenMessages = wp.components.withSpokenMessages;\nvar _wp$richText = wp.richText,\n getTextContent = _wp$richText.getTextContent,\n applyFormat = _wp$richText.applyFormat,\n removeFormat = _wp$richText.removeFormat,\n slice = _wp$richText.slice;\nvar isURL = wp.url.isURL;\nvar _wp$editor = wp.editor,\n RichTextToolbarButton = _wp$editor.RichTextToolbarButton,\n RichTextShortcut = _wp$editor.RichTextShortcut;\nvar _wp$components = wp.components,\n Path = _wp$components.Path,\n SVG = _wp$components.SVG;\n\n\nvar name = \"ta/link\";\n\n/**\n * Custom Affiliate link format. When applied will wrap selected text with <ta href=\"\" linkid=\"\"></ta> custom element.\n * Custom element is implemented here as we are not allowed to use <a> tag due to Gutenberg limitations.\n * Element is converted to normal <a> tag on frontend via PHP script filtered on 'the_content'.\n * \n * @since 3.6\n */\nvar taLink = {\n\tname: name,\n\ttitle: __(\"Affiliate Link\"),\n\ttagName: \"ta\",\n\tclassName: null,\n\tattributes: {\n\t\turl: \"href\",\n\t\ttarget: \"target\"\n\t},\n\tedit: withSpokenMessages(function (_Component) {\n\t\t_inherits(LinkEdit, _Component);\n\n\t\t/**\n * Component constructor.\n * \n * @since 3.6\n */\n\t\tfunction LinkEdit() {\n\t\t\t_classCallCheck(this, LinkEdit);\n\n\t\t\tvar _this = _possibleConstructorReturn(this, (LinkEdit.__proto__ || Object.getPrototypeOf(LinkEdit)).apply(this, arguments));\n\n\t\t\t_this.addLink = _this.addLink.bind(_this);\n\t\t\t_this.stopAddingLink = _this.stopAddingLink.bind(_this);\n\t\t\t_this.onRemoveFormat = _this.onRemoveFormat.bind(_this);\n\t\t\t_this.state = {\n\t\t\t\taddingLink: false\n\t\t\t};\n\t\t\treturn _this;\n\t\t}\n\n\t\t/**\n * Callback to set state to adding link status.\n * \n * @since 3.6\n */\n\n\n\t\t_createClass(LinkEdit, [{\n\t\t\tkey: \"addLink\",\n\t\t\tvalue: function addLink() {\n\t\t\t\tvar _props = this.props,\n\t\t\t\t value = _props.value,\n\t\t\t\t onChange = _props.onChange;\n\n\t\t\t\tvar text = getTextContent(slice(value));\n\n\t\t\t\tif (text && isURL(text)) {\n\t\t\t\t\tonChange(applyFormat(value, { type: name, attributes: { url: text } }));\n\t\t\t\t} else {\n\t\t\t\t\tthis.setState({ addingLink: true });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n * Callback to set state to stop adding link status.\n * \n * @since 3.6\n */\n\n\t\t}, {\n\t\t\tkey: \"stopAddingLink\",\n\t\t\tvalue: function stopAddingLink() {\n\t\t\t\tthis.setState({ addingLink: false });\n\t\t\t}\n\n\t\t\t/**\n * Remove format event callback.\n * \n * @since 3.6\n */\n\n\t\t}, {\n\t\t\tkey: \"onRemoveFormat\",\n\t\t\tvalue: function onRemoveFormat() {\n\t\t\t\tvar _props2 = this.props,\n\t\t\t\t value = _props2.value,\n\t\t\t\t onChange = _props2.onChange,\n\t\t\t\t speak = _props2.speak;\n\n\n\t\t\t\tonChange(removeFormat(value, name));\n\t\t\t\tspeak(__(\"Affiliate Link removed.\"), \"assertive\");\n\t\t\t}\n\n\t\t\t/**\n * Component render method.\n * \n * @since 3.6\n */\n\n\t\t}, {\n\t\t\tkey: \"render\",\n\t\t\tvalue: function render() {\n\t\t\t\tvar _props3 = this.props,\n\t\t\t\t isActive = _props3.isActive,\n\t\t\t\t activeAttributes = _props3.activeAttributes,\n\t\t\t\t value = _props3.value,\n\t\t\t\t onChange = _props3.onChange;\n\n\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\tFragment,\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(RichTextShortcut, {\n\t\t\t\t\t\ttype: \"access\",\n\t\t\t\t\t\tcharacter: \"s\",\n\t\t\t\t\t\tonUse: this.onRemoveFormat\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(RichTextShortcut, {\n\t\t\t\t\t\ttype: \"primary\",\n\t\t\t\t\t\tcharacter: \"l\",\n\t\t\t\t\t\tonUse: this.addLink\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(RichTextShortcut, {\n\t\t\t\t\t\ttype: \"primaryShift\",\n\t\t\t\t\t\tcharacter: \"l\",\n\t\t\t\t\t\tonUse: this.onRemoveFormat\n\t\t\t\t\t}),\n\t\t\t\t\tisActive && wp.element.createElement(RichTextToolbarButton, {\n\t\t\t\t\t\ticon: \"editor-unlink\",\n\t\t\t\t\t\ttitle: __('Remove Affiliate Link'),\n\t\t\t\t\t\tclassName: \"ta-unlink-button\",\n\t\t\t\t\t\tonClick: this.onRemoveFormat,\n\t\t\t\t\t\tisActive: isActive,\n\t\t\t\t\t\tshortcutType: \"primaryShift\",\n\t\t\t\t\t\tshortcutCharacter: \"l\"\n\t\t\t\t\t}),\n\t\t\t\t\t!isActive && wp.element.createElement(RichTextToolbarButton, {\n\t\t\t\t\t\ticon: wp.element.createElement(\n\t\t\t\t\t\t\tSVG,\n\t\t\t\t\t\t\t{ xmlns: \"http://www.w3.org/2000/svg\", width: \"16.688\", height: \"9.875\", viewBox: \"0 0 16.688 9.875\" },\n\t\t\t\t\t\t\twp.element.createElement(Path, { id: \"TA.svg\", fill: \"black\", \"class\": \"cls-1\", d: \"M2.115,15.12H4.847L6.836,7.7H9.777l0.63-2.381H1.821L1.177,7.7H4.118Zm4.758,0H9.829l1.177-1.751h3.782l0.238,1.751h2.858L16.357,5.245H13.7Zm5.5-3.866,1.835-2.816,0.35,2.816H12.378Z\", transform: \"translate(-1.188 -5.25)\" })\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttitle: __('Affiliate Link'),\n\t\t\t\t\t\tclassName: \"ta-link-button\",\n\t\t\t\t\t\tonClick: this.addLink,\n\t\t\t\t\t\tshortcutType: \"primary\",\n\t\t\t\t\t\tshortcutCharacter: \"l\"\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(__WEBPACK_IMPORTED_MODULE_0__inline__[\"a\" /* default */], {\n\t\t\t\t\t\taddingLink: this.state.addingLink,\n\t\t\t\t\t\tstopAddingLink: this.stopAddingLink,\n\t\t\t\t\t\tisActive: isActive,\n\t\t\t\t\t\tactiveAttributes: activeAttributes,\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tonChange: onChange\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t}]);\n\n\t\treturn LinkEdit;\n\t}(Component))\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__positioned_at_selection__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__url_popover__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__url_input__ = __webpack_require__(14);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\nvar __ = wp.i18n.__;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n createRef = _wp$element.createRef;\nvar _wp$components = wp.components,\n ExternalLink = _wp$components.ExternalLink,\n ToggleControl = _wp$components.ToggleControl,\n IconButton = _wp$components.IconButton,\n withSpokenMessages = _wp$components.withSpokenMessages;\nvar _wp$keycodes = wp.keycodes,\n LEFT = _wp$keycodes.LEFT,\n RIGHT = _wp$keycodes.RIGHT,\n UP = _wp$keycodes.UP,\n DOWN = _wp$keycodes.DOWN,\n BACKSPACE = _wp$keycodes.BACKSPACE,\n ENTER = _wp$keycodes.ENTER;\nvar _wp$url = wp.url,\n prependHTTP = _wp$url.prependHTTP,\n safeDecodeURI = _wp$url.safeDecodeURI,\n filterURLForDisplay = _wp$url.filterURLForDisplay;\nvar _wp$richText = wp.richText,\n create = _wp$richText.create,\n insert = _wp$richText.insert,\n isCollapsed = _wp$richText.isCollapsed,\n applyFormat = _wp$richText.applyFormat,\n getTextContent = _wp$richText.getTextContent,\n slice = _wp$richText.slice;\n\n\nvar stopKeyPropagation = function stopKeyPropagation(event) {\n\treturn event.stopPropagation();\n};\n\n/**\n * Generates the format object that will be applied to the link text.\n * \n * @since 3.6\n *\n * @param {string} url The href of the link.\n * @param {boolean} linkid Affiliate link ID.\n * @param {Object} text The text that is being hyperlinked.\n *\n * @return {Object} The final format object.\n */\nfunction createLinkFormat(_ref) {\n\tvar url = _ref.url,\n\t linkid = _ref.linkid,\n\t text = _ref.text;\n\n\tvar format = {\n\t\ttype: \"ta/link\",\n\t\tattributes: {\n\t\t\turl: url,\n\t\t\tlinkid: linkid.toString()\n\t\t}\n\t};\n\n\treturn format;\n}\n\n/**\n * Check if input is being show.\n * \n * @since 3.6\n * \n * @param {Object} props Component props.\n * @param {Object} state Component state.\n */\nfunction isShowingInput(props, state) {\n\treturn props.addingLink || state.editLink;\n}\n\n/**\n * Affiliate Link editor JSX element.\n * \n * @since 3.6\n * \n * @param {Object} param0 Component props (destructred).\n */\nvar LinkEditor = function LinkEditor(_ref2) {\n\tvar value = _ref2.value,\n\t onChangeInputValue = _ref2.onChangeInputValue,\n\t onKeyDown = _ref2.onKeyDown,\n\t submitLink = _ref2.submitLink,\n\t invalidLink = _ref2.invalidLink,\n\t resetInvalidLink = _ref2.resetInvalidLink,\n\t autocompleteRef = _ref2.autocompleteRef;\n\treturn (\n\t\t// Disable reason: KeyPress must be suppressed so the block doesn't hide the toolbar\n\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n\t\twp.element.createElement(\n\t\t\t'form',\n\t\t\t{\n\t\t\t\tclassName: 'editor-format-toolbar__link-container-content ta-link-search-popover',\n\t\t\t\tonKeyPress: stopKeyPropagation,\n\t\t\t\tonKeyDown: onKeyDown,\n\t\t\t\tonSubmit: submitLink\n\t\t\t},\n\t\t\twp.element.createElement(__WEBPACK_IMPORTED_MODULE_4__url_input__[\"a\" /* default */], {\n\t\t\t\tvalue: value,\n\t\t\t\tonChange: onChangeInputValue,\n\t\t\t\tautocompleteRef: autocompleteRef,\n\t\t\t\tinvalidLink: invalidLink,\n\t\t\t\tresetInvalidLink: resetInvalidLink\n\t\t\t}),\n\t\t\twp.element.createElement(IconButton, { icon: 'editor-break', label: __('Apply'), type: 'submit' })\n\t\t)\n\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions */\n\n\t);\n};\n\n/**\n * Affiliate link url viewer JSX element.\n * \n * @param {*} param0 Component props (destructred).\n */\nvar LinkViewerUrl = function LinkViewerUrl(_ref3) {\n\tvar url = _ref3.url;\n\n\tvar prependedURL = prependHTTP(url);\n\tvar linkClassName = __WEBPACK_IMPORTED_MODULE_0_classnames___default()('editor-format-toolbar__link-container-value', {\n\t\t'has-invalid-link': !Object(__WEBPACK_IMPORTED_MODULE_2__utils__[\"a\" /* isValidHref */])(prependedURL)\n\t});\n\n\tif (!url) {\n\t\treturn wp.element.createElement('span', { className: linkClassName });\n\t}\n\n\treturn wp.element.createElement(\n\t\tExternalLink,\n\t\t{\n\t\t\tclassName: linkClassName,\n\t\t\thref: url\n\t\t},\n\t\tfilterURLForDisplay(safeDecodeURI(url))\n\t);\n};\n\n/**\n * Affiliate link viewer JSX element.\n * \n * @param {*} param0 Component props (destructred).\n */\nvar LinkViewer = function LinkViewer(_ref4) {\n\tvar url = _ref4.url,\n\t editLink = _ref4.editLink;\n\n\treturn (\n\t\t// Disable reason: KeyPress must be suppressed so the block doesn't hide the toolbar\n\t\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\t\twp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: 'editor-format-toolbar__link-container-content',\n\t\t\t\tonKeyPress: stopKeyPropagation\n\t\t\t},\n\t\t\twp.element.createElement(LinkViewerUrl, { url: url }),\n\t\t\twp.element.createElement(IconButton, { icon: 'edit', label: __('Edit'), onClick: editLink })\n\t\t)\n\t\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n\n\t);\n};\n\n/**\n * Inline affiliate link UI Component.\n * \n * @since 3.6\n * \n * @param {*} param0 Component props (destructred).\n */\n\nvar InlineAffiliateLinkUI = function (_Component) {\n\t_inherits(InlineAffiliateLinkUI, _Component);\n\n\tfunction InlineAffiliateLinkUI() {\n\t\t_classCallCheck(this, InlineAffiliateLinkUI);\n\n\t\tvar _this = _possibleConstructorReturn(this, (InlineAffiliateLinkUI.__proto__ || Object.getPrototypeOf(InlineAffiliateLinkUI)).apply(this, arguments));\n\n\t\t_this.editLink = _this.editLink.bind(_this);\n\t\t_this.submitLink = _this.submitLink.bind(_this);\n\t\t_this.onKeyDown = _this.onKeyDown.bind(_this);\n\t\t_this.onChangeInputValue = _this.onChangeInputValue.bind(_this);\n\t\t_this.onClickOutside = _this.onClickOutside.bind(_this);\n\t\t_this.resetState = _this.resetState.bind(_this);\n\t\t_this.autocompleteRef = createRef();\n\t\t_this.resetInvalidLink = _this.resetInvalidLink.bind(_this);\n\n\t\t_this.state = {\n\t\t\tinputValue: '',\n\t\t\tlinkid: 0,\n\t\t\tpost: null,\n\t\t\tinvalidLink: false\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Stop the key event from propagating up to ObserveTyping.startTypingInTextField.\n * \n * @since 3.6\n * \n * @param {Object} event Event object.\n */\n\n\n\t_createClass(InlineAffiliateLinkUI, [{\n\t\tkey: 'onKeyDown',\n\t\tvalue: function onKeyDown(event) {\n\t\t\tif ([LEFT, DOWN, RIGHT, UP, BACKSPACE, ENTER].indexOf(event.keyCode) > -1) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Callback to set state when input value is changed.\n * \n * @since 3.6\n * \n * @param {*} inputValue \n * @param {*} post \n */\n\n\t}, {\n\t\tkey: 'onChangeInputValue',\n\t\tvalue: function onChangeInputValue(inputValue) {\n\t\t\tvar post = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\t\tvar linkid = post ? post.id : 0;\n\t\t\tthis.setState({ inputValue: inputValue, linkid: linkid, post: post });\n\t\t}\n\n\t\t/**\n * Callback to set state when edit affiliate link (already inserted) is triggered.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\n\t}, {\n\t\tkey: 'editLink',\n\t\tvalue: function editLink(event) {\n\t\t\tthis.setState({ editLink: true });\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\t/**\n * Callback to apply the affiliate link format to the selected text or position in the active block.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\n\t}, {\n\t\tkey: 'submitLink',\n\t\tvalue: function submitLink(event) {\n\t\t\tvar _props = this.props,\n\t\t\t isActive = _props.isActive,\n\t\t\t value = _props.value,\n\t\t\t onChange = _props.onChange,\n\t\t\t speak = _props.speak;\n\t\t\tvar _state = this.state,\n\t\t\t inputValue = _state.inputValue,\n\t\t\t linkid = _state.linkid,\n\t\t\t post = _state.post;\n\n\t\t\tvar url = prependHTTP(inputValue);\n\t\t\tvar selectedText = getTextContent(slice(value));\n\t\t\tvar format = createLinkFormat({\n\t\t\t\turl: url,\n\t\t\t\tlinkid: linkid,\n\t\t\t\ttext: selectedText\n\t\t\t});\n\n\t\t\tevent.preventDefault();\n\n\t\t\tif (!linkid || !post) {\n\t\t\t\tthis.setState({ invalidLink: true });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isCollapsed(value) && !isActive) {\n\t\t\t\tvar toInsert = applyFormat(create({ text: post.title }), format, 0, url.length);\n\t\t\t\tonChange(insert(value, toInsert));\n\t\t\t} else {\n\t\t\t\tonChange(applyFormat(value, format));\n\t\t\t}\n\n\t\t\tthis.resetState();\n\n\t\t\tif (!Object(__WEBPACK_IMPORTED_MODULE_2__utils__[\"a\" /* isValidHref */])(url)) {\n\t\t\t\tspeak(__('Warning: the link has been inserted but may have errors. Please test it.'), 'assertive');\n\t\t\t} else if (isActive) {\n\t\t\t\tspeak(__('Link edited.'), 'assertive');\n\t\t\t} else {\n\t\t\t\tspeak(__('Link inserted'), 'assertive');\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Callback to run when users clicks outside the popover UI.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\n\t}, {\n\t\tkey: 'onClickOutside',\n\t\tvalue: function onClickOutside(event) {\n\t\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t\t// so onClickOutside fails to detect that a click on a suggestion occured in the\n\t\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t\t// return to avoid the popover being closed.\n\t\t\tvar autocompleteElement = this.autocompleteRef.current;\n\t\t\tif (autocompleteElement && autocompleteElement.contains(event.target)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.resetState();\n\t\t}\n\n\t\t/**\n * Reset state callback.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'resetState',\n\t\tvalue: function resetState() {\n\t\t\tthis.props.stopAddingLink();\n\t\t\tthis.setState({ inputValue: '', editLink: false });\n\t\t\tthis.resetInvalidLink();\n\t\t}\n\n\t\t/**\n * Reset invalid link state callback. Separated as we need to run this independently from resetState() callback.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'resetInvalidLink',\n\t\tvalue: function resetInvalidLink() {\n\t\t\tthis.setState({ invalidLink: false });\n\t\t}\n\n\t\t/**\n * Component render method.\n *\n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _props2 = this.props,\n\t\t\t isActive = _props2.isActive,\n\t\t\t _props2$activeAttribu = _props2.activeAttributes,\n\t\t\t url = _props2$activeAttribu.url,\n\t\t\t linkid = _props2$activeAttribu.linkid,\n\t\t\t addingLink = _props2.addingLink,\n\t\t\t value = _props2.value,\n\t\t\t onChange = _props2.onChange;\n\n\n\t\t\tif (!isActive && !addingLink) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar _state2 = this.state,\n\t\t\t inputValue = _state2.inputValue,\n\t\t\t invalidLink = _state2.invalidLink;\n\n\t\t\tvar showInput = isShowingInput(this.props, this.state);\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_1__positioned_at_selection__[\"a\" /* default */],\n\t\t\t\t{\n\t\t\t\t\tkey: '' + value.start + value.end /* Used to force rerender on selection change */\n\t\t\t\t},\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_3__url_popover__[\"a\" /* default */],\n\t\t\t\t\t{\n\t\t\t\t\t\tonClickOutside: this.onClickOutside,\n\t\t\t\t\t\tonClose: this.resetState,\n\t\t\t\t\t\tfocusOnMount: showInput ? 'firstElement' : false,\n\t\t\t\t\t\tinvalidLink: invalidLink\n\t\t\t\t\t},\n\t\t\t\t\tshowInput ? wp.element.createElement(LinkEditor, {\n\t\t\t\t\t\tvalue: inputValue,\n\t\t\t\t\t\tonChangeInputValue: this.onChangeInputValue,\n\t\t\t\t\t\tonKeyDown: this.onKeyDown,\n\t\t\t\t\t\tsubmitLink: this.submitLink,\n\t\t\t\t\t\tautocompleteRef: this.autocompleteRef,\n\t\t\t\t\t\tupdateLinkId: this.updateLinkId,\n\t\t\t\t\t\tinvalidLink: invalidLink,\n\t\t\t\t\t\tresetInvalidLink: this.resetInvalidLink\n\t\t\t\t\t}) : wp.element.createElement(LinkViewer, {\n\t\t\t\t\t\turl: url,\n\t\t\t\t\t\teditLink: this.editLink\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn InlineAffiliateLinkUI;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (withSpokenMessages(InlineAffiliateLinkUI));\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Component = wp.element.Component;\nvar _wp$dom = wp.dom,\n getOffsetParent = _wp$dom.getOffsetParent,\n getRectangleFromRange = _wp$dom.getRectangleFromRange;\n\n/**\n * Returns a style object for applying as `position: absolute` for an element\n * relative to the bottom-center of the current selection. Includes `top` and\n * `left` style properties.\n * \n * @since 3.6\n *\n * @return {Object} Style object.\n */\n\nfunction getCurrentCaretPositionStyle() {\n\tvar selection = window.getSelection();\n\n\t// Unlikely, but in the case there is no selection, return empty styles so\n\t// as to avoid a thrown error by `Selection#getRangeAt` on invalid index.\n\tif (selection.rangeCount === 0) {\n\t\treturn {};\n\t}\n\n\t// Get position relative viewport.\n\tvar rect = getRectangleFromRange(selection.getRangeAt(0));\n\tvar top = rect.top + rect.height;\n\tvar left = rect.left + rect.width / 2;\n\n\t// Offset by positioned parent, if one exists.\n\tvar offsetParent = getOffsetParent(selection.anchorNode);\n\tif (offsetParent) {\n\t\tvar parentRect = offsetParent.getBoundingClientRect();\n\t\ttop -= parentRect.top;\n\t\tleft -= parentRect.left;\n\t}\n\n\treturn { top: top, left: left };\n}\n\n/**\n * Component which renders itself positioned under the current caret selection.\n * The position is calculated at the time of the component being mounted, so it\n * should only be mounted after the desired selection has been made.\n * \n * @since 3.6\n *\n * @type {WPComponent}\n */\n\nvar ThirstyPositionedAtSelection = function (_Component) {\n\t_inherits(ThirstyPositionedAtSelection, _Component);\n\n\t/**\n * Component constructor method.\n * \n * @since 3.6\n */\n\tfunction ThirstyPositionedAtSelection() {\n\t\t_classCallCheck(this, ThirstyPositionedAtSelection);\n\n\t\tvar _this = _possibleConstructorReturn(this, (ThirstyPositionedAtSelection.__proto__ || Object.getPrototypeOf(ThirstyPositionedAtSelection)).apply(this, arguments));\n\n\t\t_this.state = {\n\t\t\tstyle: getCurrentCaretPositionStyle()\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Component render method.\n * \n * @since 3.6\n */\n\n\n\t_createClass(ThirstyPositionedAtSelection, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar children = this.props.children;\n\t\t\tvar style = this.state.style;\n\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"editor-format-toolbar__selection-position\", style: style },\n\t\t\t\tchildren\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn ThirstyPositionedAtSelection;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (ThirstyPositionedAtSelection);\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isValidHref;\nvar _lodash = lodash,\n startsWith = _lodash.startsWith;\nvar _wp$url = wp.url,\n getProtocol = _wp$url.getProtocol,\n isValidProtocol = _wp$url.isValidProtocol,\n getAuthority = _wp$url.getAuthority,\n isValidAuthority = _wp$url.isValidAuthority,\n getPath = _wp$url.getPath,\n isValidPath = _wp$url.isValidPath,\n getQueryString = _wp$url.getQueryString,\n isValidQueryString = _wp$url.isValidQueryString,\n getFragment = _wp$url.getFragment,\n isValidFragment = _wp$url.isValidFragment;\n\n/**\n * Check for issues with the provided href.\n * \n * @since 3.6\n *\n * @param {string} href The href.\n * @return {boolean} Is the href invalid?\n */\n\nfunction isValidHref(href) {\n\tif (!href) {\n\t\treturn false;\n\t}\n\n\tvar trimmedHref = href.trim();\n\n\tif (!trimmedHref) {\n\t\treturn false;\n\t}\n\n\t// Does the href start with something that looks like a URL protocol?\n\tif (/^\\S+:/.test(trimmedHref)) {\n\t\tvar protocol = getProtocol(trimmedHref);\n\t\tif (!isValidProtocol(protocol)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Add some extra checks for http(s) URIs, since these are the most common use-case.\n\t\t// This ensures URIs with an http protocol have exactly two forward slashes following the protocol.\n\t\tif (startsWith(protocol, 'http') && !/^https?:\\/\\/[^\\/\\s]/i.test(trimmedHref)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar authority = getAuthority(trimmedHref);\n\t\tif (!isValidAuthority(authority)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar path = getPath(trimmedHref);\n\t\tif (path && !isValidPath(path)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar queryString = getQueryString(trimmedHref);\n\t\tif (queryString && !isValidQueryString(queryString)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar fragment = getFragment(trimmedHref);\n\t\tif (fragment && !isValidFragment(fragment)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Validate anchor links.\n\tif (startsWith(trimmedHref, '#') && !isValidFragment(trimmedHref)) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar __ = wp.i18n.__;\nvar Component = wp.element.Component;\nvar _wp$components = wp.components,\n Popover = _wp$components.Popover,\n IconButton = _wp$components.IconButton;\n\n/**\n * Custom URL Popover component.\n * \n * @since 3.6\n */\n\nvar ThirstyURLPopover = function (_Component) {\n\t_inherits(ThirstyURLPopover, _Component);\n\n\t/**\n * Component constructor method.\n * \n * @since 3.6\n */\n\tfunction ThirstyURLPopover() {\n\t\t_classCallCheck(this, ThirstyURLPopover);\n\n\t\tvar _this = _possibleConstructorReturn(this, (ThirstyURLPopover.__proto__ || Object.getPrototypeOf(ThirstyURLPopover)).apply(this, arguments));\n\n\t\t_this.toggleSettingsVisibility = _this.toggleSettingsVisibility.bind(_this);\n\n\t\t_this.state = {\n\t\t\tisSettingsExpanded: false\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Component constructor.\n * \n * @since 3.6\n */\n\n\n\t_createClass(ThirstyURLPopover, [{\n\t\tkey: 'toggleSettingsVisibility',\n\t\tvalue: function toggleSettingsVisibility() {\n\t\t\tthis.setState({\n\t\t\t\tisSettingsExpanded: !this.state.isSettingsExpanded\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Component render method.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _props = this.props,\n\t\t\t children = _props.children,\n\t\t\t renderSettings = _props.renderSettings,\n\t\t\t onClose = _props.onClose,\n\t\t\t onClickOutside = _props.onClickOutside,\n\t\t\t invalidLink = _props.invalidLink,\n\t\t\t _props$position = _props.position,\n\t\t\t position = _props$position === undefined ? 'bottom center' : _props$position,\n\t\t\t _props$focusOnMount = _props.focusOnMount,\n\t\t\t focusOnMount = _props$focusOnMount === undefined ? 'firstElement' : _props$focusOnMount;\n\t\t\tvar isSettingsExpanded = this.state.isSettingsExpanded;\n\n\n\t\t\tvar showSettings = !!renderSettings && isSettingsExpanded;\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\tPopover,\n\t\t\t\t{\n\t\t\t\t\tclassName: 'ta-url-popover editor-url-popover',\n\t\t\t\t\tfocusOnMount: focusOnMount,\n\t\t\t\t\tposition: position,\n\t\t\t\t\tonClose: onClose,\n\t\t\t\t\tonClickOutside: onClickOutside\n\t\t\t\t},\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'editor-url-popover__row' },\n\t\t\t\t\tchildren,\n\t\t\t\t\t!!renderSettings && wp.element.createElement(IconButton, {\n\t\t\t\t\t\tclassName: 'editor-url-popover__settings-toggle',\n\t\t\t\t\t\ticon: 'ellipsis',\n\t\t\t\t\t\tlabel: __('Link Settings'),\n\t\t\t\t\t\tonClick: this.toggleSettingsVisibility,\n\t\t\t\t\t\t'aria-expanded': isSettingsExpanded\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\tshowSettings && wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'editor-url-popover__row editor-url-popover__settings' },\n\t\t\t\t\trenderSettings()\n\t\t\t\t),\n\t\t\t\tinvalidLink && wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ 'class': 'ta-invalid-link' },\n\t\t\t\t\t__('Invalid affiliate link')\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn ThirstyURLPopover;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (ThirstyURLPopover);\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view__);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\nvar __ = wp.i18n.__;\nvar _lodash = lodash,\n throttle = _lodash.throttle;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n createRef = _wp$element.createRef;\nvar _wp$keycodes = wp.keycodes,\n UP = _wp$keycodes.UP,\n DOWN = _wp$keycodes.DOWN,\n ENTER = _wp$keycodes.ENTER,\n TAB = _wp$keycodes.TAB;\nvar _wp$components = wp.components,\n Spinner = _wp$components.Spinner,\n withSpokenMessages = _wp$components.withSpokenMessages,\n Popover = _wp$components.Popover;\nvar withInstanceId = wp.compose.withInstanceId;\n\n// Since URLInput is rendered in the context of other inputs, but should be\n// considered a separate modal node, prevent keyboard events from propagating\n// as being considered from the input.\n\nvar stopEventPropagation = function stopEventPropagation(event) {\n\treturn event.stopPropagation();\n};\n\n/**\n * Custom URL Input component.\n * \n * @since 3.6\n */\n\nvar ThirstyURLInput = function (_Component) {\n\t_inherits(ThirstyURLInput, _Component);\n\n\t/**\n * Component constructor method.\n * \n * @since 3.6\n * \n * @param {*} param0 \n */\n\tfunction ThirstyURLInput(_ref) {\n\t\tvar autocompleteRef = _ref.autocompleteRef;\n\n\t\t_classCallCheck(this, ThirstyURLInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (ThirstyURLInput.__proto__ || Object.getPrototypeOf(ThirstyURLInput)).apply(this, arguments));\n\n\t\t_this.onChange = _this.onChange.bind(_this);\n\t\t_this.onKeyDown = _this.onKeyDown.bind(_this);\n\t\t_this.autocompleteRef = autocompleteRef || createRef();\n\t\t_this.inputRef = createRef();\n\t\t_this.updateSuggestions = throttle(_this.updateSuggestions.bind(_this), 200);\n\n\t\t_this.suggestionNodes = [];\n\n\t\t_this.state = {\n\t\t\tposts: [],\n\t\t\tshowSuggestions: false,\n\t\t\tselectedSuggestion: null\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Component did update method.\n * \n * @since 3.6\n */\n\n\n\t_createClass(ThirstyURLInput, [{\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar _state = this.state,\n\t\t\t showSuggestions = _state.showSuggestions,\n\t\t\t selectedSuggestion = _state.selectedSuggestion;\n\t\t\t// only have to worry about scrolling selected suggestion into view\n\t\t\t// when already expanded\n\n\t\t\tif (showSuggestions && selectedSuggestion !== null && !this.scrollingIntoView) {\n\t\t\t\tthis.scrollingIntoView = true;\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_dom_scroll_into_view___default()(this.suggestionNodes[selectedSuggestion], this.autocompleteRef.current, {\n\t\t\t\t\tonlyScrollIfNeeded: true\n\t\t\t\t});\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t_this2.scrollingIntoView = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Component unmount method.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tdelete this.suggestionsRequest;\n\t\t}\n\n\t\t/**\n * Bind suggestion to node.\n * \n * @param {*} index \n */\n\n\t}, {\n\t\tkey: 'bindSuggestionNode',\n\t\tvalue: function bindSuggestionNode(index) {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn function (ref) {\n\t\t\t\t_this3.suggestionNodes[index] = ref;\n\t\t\t};\n\t\t}\n\n\t\t/**\n * Callback to show suggestions based on value inputted on search field.\n * \n * @since 3.6\n * \n * @param {*} value \n */\n\n\t}, {\n\t\tkey: 'updateSuggestions',\n\t\tvalue: function updateSuggestions(value) {\n\t\t\tvar _this4 = this;\n\n\t\t\t// Show the suggestions after typing at least 2 characters\n\t\t\t// and also for URLs\n\t\t\tif (value.length < 2 || /^https?:/.test(value)) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tshowSuggestions: false,\n\t\t\t\t\tselectedSuggestion: null,\n\t\t\t\t\tloading: false\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.setState({\n\t\t\t\tshowSuggestions: true,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: true\n\t\t\t});\n\n\t\t\tvar formData = new FormData();\n\t\t\tformData.append(\"action\", \"search_affiliate_links_query\");\n\t\t\tformData.append(\"keyword\", value);\n\t\t\tformData.append(\"paged\", 1);\n\t\t\tformData.append(\"gutenberg\", true);\n\n\t\t\t// We are getting data via the WP AJAX instead of rest API as it is not possible yet\n\t\t\t// to filter results with category value. This is to prepare next update to add category filter.\n\t\t\tvar request = fetch(ajaxurl, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: formData\n\t\t\t});\n\n\t\t\trequest.then(function (response) {\n\t\t\t\treturn response.json();\n\t\t\t}).then(function (response) {\n\n\t\t\t\tif (!response.affiliate_links) return;\n\n\t\t\t\tvar posts = response.affiliate_links;\n\n\t\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\t\tif (_this4.suggestionsRequest !== request) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_this4.setState({\n\t\t\t\t\tposts: posts,\n\t\t\t\t\tloading: false\n\t\t\t\t});\n\n\t\t\t\tif (!!posts.length) {\n\t\t\t\t\t_this4.props.debouncedSpeak(sprintf(_n('%d result found, use up and down arrow keys to navigate.', '%d results found, use up and down arrow keys to navigate.', posts.length), posts.length), 'assertive');\n\t\t\t\t} else {\n\t\t\t\t\t_this4.props.debouncedSpeak(__('No results.'), 'assertive');\n\t\t\t\t}\n\t\t\t}).catch(function () {\n\t\t\t\tif (_this4.suggestionsRequest === request) {\n\t\t\t\t\t_this4.setState({\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.suggestionsRequest = request;\n\t\t}\n\n\t\t/**\n * Search input value change event callback method.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\n\t}, {\n\t\tkey: 'onChange',\n\t\tvalue: function onChange(event) {\n\t\t\tthis.props.resetInvalidLink();\n\t\t\tvar inputValue = event.target.value;\n\t\t\tthis.props.onChange(inputValue);\n\t\t\tthis.updateSuggestions(inputValue);\n\t\t}\n\n\t\t/**\n * Keydown event callback. Handles selecting result via keyboard.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\n\t}, {\n\t\tkey: 'onKeyDown',\n\t\tvalue: function onKeyDown(event) {\n\t\t\tvar _state2 = this.state,\n\t\t\t showSuggestions = _state2.showSuggestions,\n\t\t\t selectedSuggestion = _state2.selectedSuggestion,\n\t\t\t posts = _state2.posts,\n\t\t\t loading = _state2.loading;\n\t\t\t// If the suggestions are not shown or loading, we shouldn't handle the arrow keys\n\t\t\t// We shouldn't preventDefault to allow block arrow keys navigation\n\n\t\t\tif (!showSuggestions || !posts.length || loading) {\n\t\t\t\t// In the Windows version of Firefox the up and down arrows don't move the caret\n\t\t\t\t// within an input field like they do for Mac Firefox/Chrome/Safari. This causes\n\t\t\t\t// a form of focus trapping that is disruptive to the user experience. This disruption\n\t\t\t\t// only happens if the caret is not in the first or last position in the text input.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747\n\t\t\t\tswitch (event.keyCode) {\n\t\t\t\t\t// When UP is pressed, if the caret is at the start of the text, move it to the 0\n\t\t\t\t\t// position.\n\t\t\t\t\tcase UP:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (0 !== event.target.selectionStart) {\n\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\t\t// Set the input caret to position 0\n\t\t\t\t\t\t\t\tevent.target.setSelectionRange(0, 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t// When DOWN is pressed, if the caret is not at the end of the text, move it to the\n\t\t\t\t\t// last position.\n\t\t\t\t\tcase DOWN:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (this.props.value.length !== event.target.selectionStart) {\n\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\t\t// Set the input caret to the last position\n\t\t\t\t\t\t\t\tevent.target.setSelectionRange(this.props.value.length, this.props.value.length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar post = this.state.posts[this.state.selectedSuggestion];\n\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase UP:\n\t\t\t\t\t{\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tvar previousIndex = !selectedSuggestion ? posts.length - 1 : selectedSuggestion - 1;\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tselectedSuggestion: previousIndex\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase DOWN:\n\t\t\t\t\t{\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tvar nextIndex = selectedSuggestion === null || selectedSuggestion === posts.length - 1 ? 0 : selectedSuggestion + 1;\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tselectedSuggestion: nextIndex\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase TAB:\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.state.selectedSuggestion !== null) {\n\t\t\t\t\t\t\tthis.selectLink(post);\n\t\t\t\t\t\t\t// Announce a link has been selected when tabbing away from the input field.\n\t\t\t\t\t\t\tthis.props.speak(__('Link selected'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase ENTER:\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.state.selectedSuggestion !== null) {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\tthis.selectLink(post);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Set state when an affiliate link is selected.\n * \n * @since 3.6\n * \n * @param {*} post \n */\n\n\t}, {\n\t\tkey: 'selectLink',\n\t\tvalue: function selectLink(post) {\n\t\t\tthis.props.onChange(post.link, post);\n\t\t\tthis.setState({\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tshowSuggestions: false\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Callback handler for when affiliate link is selected.\n * \n * @param {*} post \n */\n\n\t}, {\n\t\tkey: 'handleOnClick',\n\t\tvalue: function handleOnClick(post) {\n\t\t\tthis.selectLink(post);\n\t\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\t\tthis.inputRef.current.focus();\n\t\t}\n\n\t\t/**\n * Component render method.\n * \n * @since 3.6\n */\n\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar _props = this.props,\n\t\t\t _props$value = _props.value,\n\t\t\t value = _props$value === undefined ? '' : _props$value,\n\t\t\t _props$autoFocus = _props.autoFocus,\n\t\t\t autoFocus = _props$autoFocus === undefined ? true : _props$autoFocus,\n\t\t\t instanceId = _props.instanceId,\n\t\t\t invalidLink = _props.invalidLink;\n\t\t\tvar _state3 = this.state,\n\t\t\t showSuggestions = _state3.showSuggestions,\n\t\t\t posts = _state3.posts,\n\t\t\t selectedSuggestion = _state3.selectedSuggestion,\n\t\t\t loading = _state3.loading;\n\t\t\t/* eslint-disable jsx-a11y/no-autofocus */\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'editor-url-input' },\n\t\t\t\twp.element.createElement('input', {\n\t\t\t\t\tautoFocus: autoFocus,\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\t'aria-label': __('URL'),\n\t\t\t\t\trequired: true,\n\t\t\t\t\tvalue: value,\n\t\t\t\t\tonChange: this.onChange,\n\t\t\t\t\tonInput: stopEventPropagation,\n\t\t\t\t\tplaceholder: __('Paste URL or type to search'),\n\t\t\t\t\tonKeyDown: this.onKeyDown,\n\t\t\t\t\trole: 'combobox',\n\t\t\t\t\t'aria-expanded': showSuggestions,\n\t\t\t\t\t'aria-autocomplete': 'list',\n\t\t\t\t\t'aria-owns': 'editor-url-input-suggestions-' + instanceId,\n\t\t\t\t\t'aria-activedescendant': selectedSuggestion !== null ? 'editor-url-input-suggestion-' + instanceId + '-' + selectedSuggestion : undefined,\n\t\t\t\t\tref: this.inputRef\n\t\t\t\t}),\n\t\t\t\tloading && wp.element.createElement(Spinner, null),\n\t\t\t\tshowSuggestions && !!posts.length && !invalidLink && wp.element.createElement(\n\t\t\t\t\tPopover,\n\t\t\t\t\t{ position: 'bottom', noArrow: true, focusOnMount: false },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclassName: 'editor-url-input__suggestions',\n\t\t\t\t\t\t\tid: 'editor-url-input-suggestions-' + instanceId,\n\t\t\t\t\t\t\tref: this.autocompleteRef,\n\t\t\t\t\t\t\trole: 'listbox'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tposts.map(function (post, index) {\n\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tkey: post.id,\n\t\t\t\t\t\t\t\t\trole: 'option',\n\t\t\t\t\t\t\t\t\ttabIndex: '-1',\n\t\t\t\t\t\t\t\t\tid: 'editor-url-input-suggestion-' + instanceId + '-' + index,\n\t\t\t\t\t\t\t\t\tref: _this5.bindSuggestionNode(index),\n\t\t\t\t\t\t\t\t\tclassName: __WEBPACK_IMPORTED_MODULE_0_classnames___default()('editor-url-input__suggestion', {\n\t\t\t\t\t\t\t\t\t\t'is-selected': index === selectedSuggestion\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\treturn _this5.handleOnClick(post);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t'aria-selected': index === selectedSuggestion\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tpost.title || __('(no title)')\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/* eslint-enable jsx-a11y/no-autofocus */\n\t\t}\n\t}]);\n\n\treturn ThirstyURLInput;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (withSpokenMessages(withInstanceId(ThirstyURLInput)));\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(16);\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar util = __webpack_require__(17);\n\nfunction scrollIntoView(elem, container, config) {\n config = config || {};\n // document 归一化到 window\n if (container.nodeType === 9) {\n container = util.getWindow(container);\n }\n\n var allowHorizontalScroll = config.allowHorizontalScroll;\n var onlyScrollIfNeeded = config.onlyScrollIfNeeded;\n var alignWithTop = config.alignWithTop;\n var alignWithLeft = config.alignWithLeft;\n var offsetTop = config.offsetTop || 0;\n var offsetLeft = config.offsetLeft || 0;\n var offsetBottom = config.offsetBottom || 0;\n var offsetRight = config.offsetRight || 0;\n\n allowHorizontalScroll = allowHorizontalScroll === undefined ? true : allowHorizontalScroll;\n\n var isWin = util.isWindow(container);\n var elemOffset = util.offset(elem);\n var eh = util.outerHeight(elem);\n var ew = util.outerWidth(elem);\n var containerOffset = undefined;\n var ch = undefined;\n var cw = undefined;\n var containerScroll = undefined;\n var diffTop = undefined;\n var diffBottom = undefined;\n var win = undefined;\n var winScroll = undefined;\n var ww = undefined;\n var wh = undefined;\n\n if (isWin) {\n win = container;\n wh = util.height(win);\n ww = util.width(win);\n winScroll = {\n left: util.scrollLeft(win),\n top: util.scrollTop(win)\n };\n // elem 相对 container 可视视窗的距离\n diffTop = {\n left: elemOffset.left - winScroll.left - offsetLeft,\n top: elemOffset.top - winScroll.top - offsetTop\n };\n diffBottom = {\n left: elemOffset.left + ew - (winScroll.left + ww) + offsetRight,\n top: elemOffset.top + eh - (winScroll.top + wh) + offsetBottom\n };\n containerScroll = winScroll;\n } else {\n containerOffset = util.offset(container);\n ch = container.clientHeight;\n cw = container.clientWidth;\n containerScroll = {\n left: container.scrollLeft,\n top: container.scrollTop\n };\n // elem 相对 container 可视视窗的距离\n // 注意边框, offset 是边框到根节点\n diffTop = {\n left: elemOffset.left - (containerOffset.left + (parseFloat(util.css(container, 'borderLeftWidth')) || 0)) - offsetLeft,\n top: elemOffset.top - (containerOffset.top + (parseFloat(util.css(container, 'borderTopWidth')) || 0)) - offsetTop\n };\n diffBottom = {\n left: elemOffset.left + ew - (containerOffset.left + cw + (parseFloat(util.css(container, 'borderRightWidth')) || 0)) + offsetRight,\n top: elemOffset.top + eh - (containerOffset.top + ch + (parseFloat(util.css(container, 'borderBottomWidth')) || 0)) + offsetBottom\n };\n }\n\n if (diffTop.top < 0 || diffBottom.top > 0) {\n // 强制向上\n if (alignWithTop === true) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else if (alignWithTop === false) {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n } else {\n // 自动调整\n if (diffTop.top < 0) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithTop = alignWithTop === undefined ? true : !!alignWithTop;\n if (alignWithTop) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n }\n\n if (allowHorizontalScroll) {\n if (diffTop.left < 0 || diffBottom.left > 0) {\n // 强制向上\n if (alignWithLeft === true) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else if (alignWithLeft === false) {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n } else {\n // 自动调整\n if (diffTop.left < 0) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithLeft = alignWithLeft === undefined ? true : !!alignWithLeft;\n if (alignWithLeft) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n }\n }\n}\n\nmodule.exports = scrollIntoView;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nfunction getClientPosition(elem) {\n var box = undefined;\n var x = undefined;\n var y = undefined;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top;\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];\n var method = 'scroll' + (top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\nfunction _getComputedStyle(elem, name, computedStyle_) {\n var val = '';\n var d = elem.ownerDocument;\n var computedStyle = computedStyle_ || d.defaultView.getComputedStyle(elem, null);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nvar getComputedStyleX = undefined;\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name = undefined;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop = undefined;\n var j = undefined;\n var i = undefined;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = undefined;\n if (prop === 'border') {\n cssProp = prop + which[i] + 'Width';\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj != null && obj == obj.window;\n}\n\nvar domUtils = {};\n\neach(['Width', 'Height'], function (name) {\n domUtils['doc' + name] = function (refWin) {\n var d = refWin.document;\n return Math.max(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement['scroll' + name],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body['scroll' + name], domUtils['viewport' + name](d));\n };\n\n domUtils['viewport' + name] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = 'client' + name;\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, extra) {\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem, computedStyle);\n var cssBoxValue = 0;\n if (borderBoxValue == null || borderBoxValue <= 0) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (cssBoxValue == null || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle);\n }\n return cssBoxValue;\n }\n if (borderBoxValueOrIsBorderBox) {\n var padding = extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle);\n return val + (extra === BORDER_INDEX ? 0 : padding);\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(elem) {\n var val = undefined;\n var args = arguments;\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\nfunction css(el, name, v) {\n var value = v;\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value += 'px';\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils['outer' + first] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, val) {\n if (val !== undefined) {\n if (elem) {\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setOffset(elem, offset) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var old = getOffset(elem);\n var ret = {};\n var current = undefined;\n var key = undefined;\n\n for (key in offset) {\n if (offset.hasOwnProperty(key)) {\n current = parseFloat(css(elem, key)) || 0;\n ret[key] = current + offset[key] - old[key];\n }\n }\n css(elem, ret);\n}\n\nmodule.exports = _extends({\n getWindow: function getWindow(node) {\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n offset: function offset(el, value) {\n if (typeof value !== 'undefined') {\n setOffset(el, value);\n } else {\n return getOffset(el);\n }\n },\n\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var ret = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n var overflow = obj.overflow;\n if (overflow) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n return ret;\n },\n scrollLeft: function scrollLeft(w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollLeft(w);\n }\n window.scrollTo(v, getScrollTop(w));\n } else {\n if (v === undefined) {\n return w.scrollLeft;\n }\n w.scrollLeft = v;\n }\n },\n scrollTop: function scrollTop(w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollTop(w);\n }\n window.scrollTo(getScrollLeft(w), v);\n } else {\n if (v === undefined) {\n return w.scrollTop;\n }\n w.scrollTop = v;\n }\n },\n\n viewportWidth: 0,\n viewportHeight: 0\n}, domUtils);\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// gutenberg-support.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b4e546eb9d17ec651f70","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 0\n// module chunks = 0","import registerBlocks from \"./blocks\";\nimport registerFormats from \"./formats\";\n\nimport \"./assets/styles/index.scss\";\n\nregisterBlocks();\nregisterFormats();\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","import * as taimage from \"./ta-image\";\n\nconst { registerBlockType } = wp.blocks;\n\n/**\n * Register gutenberg blocks.\n * \n * @since 3.6\n */\nexport default function registerBlocks() {\n\n [\n taimage\n ].forEach( ( block ) => {\n if ( ! block ) return;\n\n const { name , settings } = block;\n registerBlockType( name , settings );\n } );\n}\n\n\n// WEBPACK FOOTER //\n// ./src/blocks/index.js","import classnames from \"classnames\";\n\nconst { Fragment } = wp.element;\nconst { __ } = wp.i18n;\nconst { createBlock, getBlockAttributes, getPhrasingContentSchema } = wp.blocks;\nconst { RichText } = wp.editor;\nconst { Path , SVG } = wp.components;\n\nimport edit from \"./edit\";\n\nexport const name = 'ta/image';\n\nconst blockAttributes = {\n\turl: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'img',\n\t\tattribute: 'src',\n\t},\n\talt: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'img',\n\t\tattribute: 'alt',\n\t\tdefault: '',\n\t},\n\tcaption: {\n\t\ttype: 'string',\n\t\tsource: 'html',\n\t\tselector: 'figcaption',\n\t},\n\tid: {\n\t\ttype: 'number',\n\t},\n\talign: {\n\t\ttype: 'string',\n\t},\n\twidth: {\n\t\ttype: 'number',\n\t},\n\theight: {\n\t\ttype: 'number',\n\t},\n\tlinkid: {\n\t\ttype: 'number',\n\t},\n\thref: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'ta',\n\t\tattribute: 'href'\n\t},\n\taffiliateLink: {\n\t\ttype: 'object'\n\t}\n};\n\nconst imageSchema = {\n\timg: {\n\t\tattributes: [ 'src', 'alt' ],\n\t\tclasses: [ 'alignleft', 'aligncenter', 'alignright', 'alignnone', /^wp-image-\\d+$/ ],\n\t},\n};\n\nconst schema = {\n\tfigure: {\n\t\trequire: [ 'ta' , 'img' ],\n\t\tchildren: {\n\t\t\tta: {\n\t\t\t\tattributes: [ 'href', 'linkid' ],\n\t\t\t\tchildren: imageSchema,\n\t\t\t},\n\t\t\tfigcaption: {\n\t\t\t\tchildren: getPhrasingContentSchema(),\n\t\t\t},\n\t\t},\n\t},\n};\n\nfunction getFirstAnchorAttributeFormHTML( html, attributeName ) {\n\tconst { body } = document.implementation.createHTMLDocument( '' );\n\n\tbody.innerHTML = html;\n\n\tconst { firstElementChild } = body;\n\n\tif (\n\t\tfirstElementChild &&\n\t\tfirstElementChild.nodeName === 'A'\n\t) {\n\t\treturn firstElementChild.getAttribute( attributeName ) || undefined;\n\t}\n}\n\nexport const settings = {\n\ttitle: __( 'ThirstyAffiliates Image' ),\n\n\tdescription: __( 'Insert an image with an affiliate link to make a visual statement.' ),\n\n\ticon: <SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><Path d=\"M0,0h24v24H0V0z\" fill=\"none\" /><Path d=\"m19 5v14h-14v-14h14m0-2h-14c-1.1 0-2 0.9-2 2v14c0 1.1 0.9 2 2 2h14c1.1 0 2-0.9 2-2v-14c0-1.1-0.9-2-2-2z\" /><Path d=\"m14.14 11.86l-3 3.87-2.14-2.59-3 3.86h12l-3.86-5.14z\" /></SVG>,\n\n\tcategory: 'common',\n\n\tkeywords: [\n\t\t'img', // \"img\" is not translated as it is intended to reflect the HTML <img> tag.\n\t\t__( 'photo' ),\n\t\t__( 'affiliate' )\n\t],\n\n\tattributes: blockAttributes,\n\n\ttransforms: {\n\t\tfrom: [\n\t\t\t{\n\t\t\t\ttype: 'raw',\n\t\t\t\tisMatch: ( node ) => node.nodeName === 'FIGURE' && !! node.querySelector( 'img' ),\n\t\t\t\tschema,\n\t\t\t\ttransform: ( node ) => {\n\n\t\t\t\t\t// Search both figure and image classes. Alignment could be\n\t\t\t\t\t// set on either. ID is set on the image.\n\t\t\t\t\tconst className = node.className + ' ' + node.querySelector( 'img' ).className;\n\t\t\t\t\tconst alignMatches = /(?:^|\\s)align(left|center|right)(?:$|\\s)/.exec( className );\n\t\t\t\t\tconst align = alignMatches ? alignMatches[ 1 ] : undefined;\n\t\t\t\t\tconst idMatches = /(?:^|\\s)wp-image-(\\d+)(?:$|\\s)/.exec( className );\n\t\t\t\t\tconst id = idMatches ? Number( idMatches[ 1 ] ) : undefined;\n\t\t\t\t\tconst anchorElement = node.querySelector( 'a' );\n\t\t\t\t\tconst linkDestination = anchorElement && anchorElement.href ? 'custom' : undefined;\n\t\t\t\t\tconst href = anchorElement && anchorElement.href ? anchorElement.href : undefined;\n\t\t\t\t\tconst rel = anchorElement && anchorElement.rel ? anchorElement.rel : undefined;\n\t\t\t\t\tconst linkClass = anchorElement && anchorElement.className ? anchorElement.className : undefined;\n\t\t\t\t\tconst attributes = getBlockAttributes( 'ta/image', node.outerHTML, { align, id, linkDestination, linkid , href, rel, linkClass } );\n\t\t\t\t\treturn createBlock( 'ta/image', attributes );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'files',\n\t\t\t\tisMatch( files ) {\n\t\t\t\t\treturn files.length === 1 && files[ 0 ].type.indexOf( 'image/' ) === 0;\n\t\t\t\t},\n\t\t\t\ttransform( files ) {\n\t\t\t\t\tconst file = files[ 0 ];\n\t\t\t\t\t// We don't need to upload the media directly here\n\t\t\t\t\t// It's already done as part of the `componentDidMount`\n\t\t\t\t\t// int the image block\n\t\t\t\t\tconst block = createBlock( 'ta/image', {\n\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn block;\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'shortcode',\n\t\t\t\ttag: 'caption',\n\t\t\t\tattributes: {\n\t\t\t\t\turl: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\tattribute: 'src',\n\t\t\t\t\t\tselector: 'img',\n\t\t\t\t\t},\n\t\t\t\t\talt: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\tattribute: 'alt',\n\t\t\t\t\t\tselector: 'img',\n\t\t\t\t\t},\n\t\t\t\t\tcaption: {\n\t\t\t\t\t\tshortcode: ( attributes, { shortcode } ) => {\n\t\t\t\t\t\t\tconst { body } = document.implementation.createHTMLDocument( '' );\n\n\t\t\t\t\t\t\tbody.innerHTML = shortcode.content;\n\t\t\t\t\t\t\tbody.removeChild( body.firstElementChild );\n\n\t\t\t\t\t\t\treturn body.innerHTML.trim();\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tshortcode: ( { named: { id } } ) => {\n\t\t\t\t\t\t\tif ( ! id ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn parseInt( id.replace( 'attachment_', '' ), 10 );\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\talign: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tshortcode: ( { named: { align = 'alignnone' } } ) => {\n\t\t\t\t\t\t\treturn align.replace( 'align', '' );\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tlinkid: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\tselector: 'wp-block-ta-image > ta',\n\t\t\t\t\t\tattribute: 'linkid'\n\t\t\t\t\t},\n\t\t\t\t\thref: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\tselector: 'ta',\n\t\t\t\t\t\tattribute: 'href'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\n\tgetEditWrapperProps( attributes ) {\n\t\tconst { align, width } = attributes;\n\t\tif ( 'left' === align || 'center' === align || 'right' === align || 'wide' === align || 'full' === align ) {\n\t\t\treturn { 'data-align': align, 'data-resized': !! width };\n\t\t}\n\t},\n\n\tedit,\n\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\turl,\n\t\t\talt,\n\t\t\tcaption,\n\t\t\talign,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tid,\n\t\t\tlinkid,\n\t\t\thref\n\t\t} = attributes;\n\n\t\tconst classes = classnames( {\n\t\t\t[ `align${ align }` ]: align,\n\t\t\t'is-resized': width || height,\n\t\t} );\n\n\t\tconst image = (\n\t\t\t<img\n\t\t\t\tsrc={ url }\n\t\t\t\talt={ alt }\n\t\t\t\tclassName={ id ? `wp-image-${ id }` : null }\n\t\t\t\twidth={ width }\n\t\t\t\theight={ height }\n\t\t\t/>\n\t\t);\n\n\t\tconst figure = (\n\t\t\t<Fragment>\n\t\t\t\t<ta linkid={ linkid } href={ href }>\n\t\t\t\t{ image }\n\t\t\t\t</ta>\n\t\t\t\t<RichText.Content tagName=\"figcaption\" value={ caption } />\n\t\t\t</Fragment>\n\t\t);\n\n\t\tif ( 'left' === align || 'right' === align || 'center' === align ) {\n\t\t\treturn (\n\t\t\t\t<div className='wp-block-image'>\n\t\t\t\t\t<figure className={ classes }>\n\t\t\t\t\t\t{ figure }\n\t\t\t\t\t</figure>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<figure className={ `wp-block-image ${classes}` }>\n\t\t\t\t{ figure }\n\t\t\t</figure>\n\t\t);\n\t}\n};\n\n\n// WEBPACK FOOTER //\n// ./src/blocks/ta-image/index.js","import classnames from \"classnames\";\n\nconst { get , isEmpty , map , last , pick , compact } = lodash;\nconst { getPath } = wp.url;\nconst { __, sprintf } = wp.i18n;\nconst { Component, Fragment , createRef } = wp.element;\nconst { getBlobByURL, revokeBlobURL, isBlobURL } = wp.blob;\nconst { Placeholder , Button , ButtonGroup , IconButton , PanelBody , ResizableBox , SelectControl , Spinner , TextControl , TextareaControl , Toolbar , withNotices , ToggleControl , Popover } = wp.components;\nconst { withSelect } = wp.data;\nconst { RichText , BlockControls , InspectorControls , MediaUpload , MediaUploadCheck , MediaPlaceholder , BlockAlignmentToolbar , mediaUpload } = wp.editor;\nconst { withViewportMatch } = wp.viewport;\nconst { compose } = wp.compose;\n\nimport { createUpgradedEmbedBlock } from \"./util\";\nimport ImageSize from \"./image-size\";\nimport ThirstyURLInput from './search-input';\n\n/**\n * Module constants\n */\nconst MIN_SIZE = 20;\nconst LINK_DESTINATION_NONE = 'none';\nconst LINK_DESTINATION_MEDIA = 'media';\nconst LINK_DESTINATION_ATTACHMENT = 'attachment';\nconst LINK_DESTINATION_CUSTOM = 'custom';\nconst NEW_TAB_REL = 'noreferrer noopener';\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nexport const pickRelevantMediaFiles = ( image ) => {\n\tconst imageProps = pick( image, [ 'alt', 'id', 'link', 'caption' ] );\n\timageProps.url = get( image, [ 'sizes', 'large', 'url' ] ) || get( image, [ 'media_details', 'sizes', 'large', 'source_url' ] ) || image.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no id\n * and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nconst isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\nclass ImageEdit extends Component {\n\tconstructor( { attributes } ) {\n\t\tsuper( ...arguments );\n\t\tthis.updateAlt = this.updateAlt.bind( this );\n\t\tthis.updateAlignment = this.updateAlignment.bind( this );\n\t\tthis.onFocusCaption = this.onFocusCaption.bind( this );\n\t\tthis.onImageClick = this.onImageClick.bind( this );\n\t\tthis.onSelectImage = this.onSelectImage.bind( this );\n\t\tthis.updateImageURL = this.updateImageURL.bind( this );\n\t\tthis.updateWidth = this.updateWidth.bind( this );\n\t\tthis.updateHeight = this.updateHeight.bind( this );\n\t\tthis.updateDimensions = this.updateDimensions.bind( this );\n\t\tthis.getFilename = this.getFilename.bind( this );\n\t\tthis.toggleIsEditing = this.toggleIsEditing.bind( this );\n\t\tthis.onImageError = this.onImageError.bind( this );\n\t\tthis.onChangeInputValue = this.onChangeInputValue.bind( this );\n\t\tthis.autocompleteRef = createRef();\n\t\tthis.resetInvalidLink = this.resetInvalidLink.bind( this );\n\t\tthis.updateImageSelection = this.updateImageSelection.bind( this );\n\t\tthis.onSelectAffiliateImage = this.onSelectAffiliateImage.bind( this );\n\t\tthis.editAFfiliateImage = this.editAFfiliateImage.bind( this );\n\n\t\tthis.state = {\n\t\t\tcaptionFocused: false,\n\t\t\tisEditing: ! attributes.url,\n\t\t\tinputValue : '',\n\t\t\tlinkid : 0,\n\t\t\tpost : null,\n\t\t\tshowSuggestions : false,\n\t\t\timageSelection : [],\n\t\t\taffiliateLink : null\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tconst { attributes, setAttributes, noticeOperations } = this.props;\n\t\tconst { id, url = '' } = attributes;\n\n\t\tif ( isTemporaryImage( id, url ) ) {\n\t\t\tconst file = getBlobByURL( url );\n\n\t\t\tif ( file ) {\n\t\t\t\tmediaUpload( {\n\t\t\t\t\tfilesList: [ file ],\n\t\t\t\t\tonFileChange: ( [ image ] ) => {\n\t\t\t\t\t\tsetAttributes( pickRelevantMediaFiles( image ) );\n\t\t\t\t\t},\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t\tonError: ( message ) => {\n\t\t\t\t\t\tnoticeOperations.createErrorNotice( message );\n\t\t\t\t\t\tthis.setState( { isEditing: true } );\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tconst { id: prevID, url: prevURL = '' } = prevProps.attributes;\n\t\tconst { id, url = '' } = this.props.attributes;\n\n\t\tif ( isTemporaryImage( prevID, prevURL ) && ! isTemporaryImage( id, url ) ) {\n\t\t\trevokeBlobURL( url );\n\t\t}\n\n\t\tif ( ! this.props.isSelected && prevProps.isSelected && this.state.captionFocused ) {\n\t\t\tthis.setState( {\n\t\t\t\tcaptionFocused: false,\n\t\t\t} );\n\t\t}\n\t}\n\n\tonSelectImage( media ) {\n\n\t\tif ( ! media || ! media.url ) {\n\t\t\tthis.props.setAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tcaption: undefined\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tconst { affiliateLink } = this.state;\n\n\t\tthis.setState( {\n\t\t\tisEditing: false,\n\t\t} );\n\n\t\tthis.props.setAttributes( {\n\t\t\t...pickRelevantMediaFiles( media ),\n\t\t\tlinkid: affiliateLink.id,\n\t\t\thref: affiliateLink.link,\n\t\t\taffiliateLink : affiliateLink,\n\t\t\twidth: undefined,\n\t\t\theight: undefined,\n\t\t} );\n\t}\n\n\tonImageError( url ) {\n\t\t// Check if there's an embed block that handles this URL.\n\t\tconst embedBlock = createUpgradedEmbedBlock(\n\t\t\t{ attributes: { url } }\n\t\t);\n\t\tif ( undefined !== embedBlock ) {\n\t\t\tthis.props.onReplace( embedBlock );\n\t\t}\n\t}\n\n\tonFocusCaption() {\n\t\tif ( ! this.state.captionFocused ) {\n\t\t\tthis.setState( {\n\t\t\t\tcaptionFocused: true,\n\t\t\t} );\n\t\t}\n\t}\n\n\tonImageClick() {\n\t\tif ( this.state.captionFocused ) {\n\t\t\tthis.setState( {\n\t\t\t\tcaptionFocused: false,\n\t\t\t} );\n\t\t}\n\t}\n\n\tupdateAlt( newAlt ) {\n\t\tthis.props.setAttributes( { alt: newAlt } );\n\t}\n\n\tupdateAlignment( nextAlign ) {\n\t\tconst extraUpdatedAttributes = [ 'wide', 'full' ].indexOf( nextAlign ) !== -1 ?\n\t\t\t{ width: undefined, height: undefined } :\n\t\t\t{};\n\t\tthis.props.setAttributes( { ...extraUpdatedAttributes, align: nextAlign } );\n\t}\n\n\tupdateImageURL( url ) {\n\t\tthis.props.setAttributes( { url, width: undefined, height: undefined } );\n\t}\n\n\tupdateWidth( width ) {\n\t\tthis.props.setAttributes( { width: parseInt( width, 10 ) } );\n\t}\n\n\tupdateHeight( height ) {\n\t\tthis.props.setAttributes( { height: parseInt( height, 10 ) } );\n\t}\n\n\tupdateDimensions( width = undefined, height = undefined ) {\n\t\treturn () => {\n\t\t\tthis.props.setAttributes( { width, height } );\n\t\t};\n\t}\n\n\tgetFilename( url ) {\n\t\tconst path = getPath( url );\n\t\tif ( path ) {\n\t\t\treturn last( path.split( '/' ) );\n\t\t}\n\t}\n\n\tgetLinkDestinationOptions() {\n\t\treturn [\n\t\t\t{ value: LINK_DESTINATION_NONE, label: __( 'None' ) },\n\t\t\t{ value: LINK_DESTINATION_MEDIA, label: __( 'Media File' ) },\n\t\t\t{ value: LINK_DESTINATION_ATTACHMENT, label: __( 'Attachment Page' ) },\n\t\t\t{ value: LINK_DESTINATION_CUSTOM, label: __( 'Custom URL' ) },\n\t\t];\n\t}\n\n\ttoggleIsEditing() {\n\t\tthis.setState( {\n\t\t\tisEditing: ! this.state.isEditing,\n\t\t} );\n\t}\n\n\tgetImageSizeOptions() {\n\t\tconst { imageSizes, image } = this.props;\n\t\treturn compact( map( imageSizes, ( { name, slug } ) => {\n\t\t\tconst sizeUrl = get( image, [ 'media_details', 'sizes', slug, 'source_url' ] );\n\t\t\tif ( ! sizeUrl ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tvalue: sizeUrl,\n\t\t\t\tlabel: name,\n\t\t\t};\n\t\t} ) );\n\t}\n\n\tonChangeInputValue( inputValue , post = null ) {\n\t\tconst linkid = post ? post.id : 0;\n\t\tthis.setState( { inputValue , linkid , post } );\n\t}\n\n\tresetInvalidLink() {\n\t\tthis.setState( { invalidLink : false } );\n\t}\n\n\tupdateImageSelection( imageSelection , affiliateLink ) {\n\t\tthis.setState({\n\t\t\timageSelection,\n\t\t\taffiliateLink\n\t\t});\n\t}\n\n\tonSelectAffiliateImage( image ) {\n\n\t\tconst request = wp.apiFetch( {\n\t\t\tpath: wp.url.addQueryArgs( 'wp/v2/media/' + image.id , {\n\t\t\t\tcontext: 'edit',\n\t\t\t\t_locale: 'user'\n\t\t\t} ),\n\t\t} );\n\n\t\trequest.then( (media) => {\n\t\t\tmedia.url = media.source_url;\n\t\t\tthis.onSelectImage( media );\n\t\t} );\n\t}\n\n\teditAFfiliateImage() {\n\n\t\tconst { attributes } = this.props;\n\t\tconst { affiliateLink } = attributes;\n\n\t\tthis.setState({\n\t\t\tisEditing : true,\n\t\t\timageSelection : affiliateLink.images,\n\t\t\taffiliateLink\n\t\t});\n\t}\n\n\trender() {\n\t\tconst { \n\t\t\tisEditing,\n\t\t\timageSelection,\n\t\t\taffiliateLink,\n\t\t} = this.state;\n\t\tconst {\n\t\t\tattributes,\n\t\t\tsetAttributes,\n\t\t\tisLargeViewport,\n\t\t\tisSelected,\n\t\t\tclassName,\n\t\t\tmaxWidth,\n\t\t\ttoggleSelection,\n\t\t\tisRTL,\n\t\t} = this.props;\n\t\tconst {\n\t\t\turl,\n\t\t\talt,\n\t\t\tcaption,\n\t\t\talign,\n\t\t\tlinkDestination,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tlinkid,\n\t\t\thref\n\t\t} = attributes;\n\t\tconst toolbarEditButton = (\n\t\t\t<Toolbar>\n\t\t\t\t<IconButton\n\t\t\t\t\tclassName=\"ta-edit-image-button components-icon-button components-toolbar__control\"\n\t\t\t\t\tlabel={ __( 'Edit ThirstyAffiliates Image' ) }\n\t\t\t\t\ticon=\"edit\"\n\t\t\t\t\tonClick={ this.editAFfiliateImage }\n\t\t\t\t/>\n\t\t\t</Toolbar>\n\t\t);\n\n\t\tconst controls = (\n\t\t\t<BlockControls>\n\t\t\t\t<BlockAlignmentToolbar\n\t\t\t\t\tvalue={ align }\n\t\t\t\t\tonChange={ this.updateAlignment }\n\t\t\t\t/>\n\t\t\t\t{ toolbarEditButton }\n\t\t\t</BlockControls>\n\t\t);\n\n\t\tif ( isEditing ) {\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{ controls }\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\ticon={ \"format-image\" }\n\t\t\t\t\t\tlabel={ __( \"ThirstyAffiliates Image\" ) }\n\t\t\t\t\t\tinstructions={ __( \"Search for an affiliate link and select image to insert.\" ) } \n\t\t\t\t\t>\t\n\n\t\t\t\t\t\t<ThirstyURLInput\n\t\t\t\t\t\t\tupdateImageSelection={ this.updateImageSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{ !! imageSelection.length &&\n\t\t\t\t\t\t\t<div className=\"ta-image-sel-wrap\">\n\t\t\t\t\t\t\t\t<h3>{ `${affiliateLink.title} ${ __( 'attached images:' ) }` }</h3>\n\t\t\t\t\t\t\t\t<div className=\"ta-image-selection\">\n\t\t\t\t\t\t\t\t\t{ imageSelection.map( ( image , index ) => (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => this.onSelectAffiliateImage( image ) }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<img src={ image.src } />\n\t\t\t\t\t\t\t\t\t\t</button>\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</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t</Placeholder>\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t}\n\n\t\tconst classes = classnames( className, {\n\t\t\t'wp-block-image' : true,\n\t\t\t'is-transient': isBlobURL( url ),\n\t\t\t'is-resized': !! width || !! height,\n\t\t\t'is-focused': isSelected,\n\t\t} );\n\n\t\tconst isResizable = [ 'wide', 'full' ].indexOf( align ) === -1 && isLargeViewport;\n\t\tconst imageSizeOptions = this.getImageSizeOptions();\n\n\t\tconst getInspectorControls = ( imageWidth, imageHeight ) => (\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Image Settings' ) }>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\tlabel={ __( 'Alt Text (Alternative Text)' ) }\n\t\t\t\t\t\tvalue={ alt }\n\t\t\t\t\t\tonChange={ this.updateAlt }\n\t\t\t\t\t\thelp={ __( 'Alternative text describes your image to people who can’t see it. Add a short description with its key details.' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! isEmpty( imageSizeOptions ) && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Image Size' ) }\n\t\t\t\t\t\t\tvalue={ url }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\tonChange={ this.updateImageURL }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isResizable && (\n\t\t\t\t\t\t<div className=\"block-library-image__dimensions\">\n\t\t\t\t\t\t\t<p className=\"block-library-image__dimensions__row\">\n\t\t\t\t\t\t\t\t{ __( 'Image Dimensions' ) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<div className=\"block-library-image__dimensions__row\">\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\tclassName=\"block-library-image__dimensions__width\"\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\t\t\t\tvalue={ width !== undefined ? width : '' }\n\t\t\t\t\t\t\t\t\tplaceholder={ imageWidth }\n\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\tonChange={ this.updateWidth }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\tclassName=\"block-library-image__dimensions__height\"\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\t\t\t\t\tvalue={ height !== undefined ? height : '' }\n\t\t\t\t\t\t\t\t\tplaceholder={ imageHeight }\n\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\tonChange={ this.updateHeight }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"block-library-image__dimensions__row\">\n\t\t\t\t\t\t\t\t<ButtonGroup aria-label={ __( 'Image Size' ) }>\n\t\t\t\t\t\t\t\t\t{ [ 25, 50, 75, 100 ].map( ( scale ) => {\n\t\t\t\t\t\t\t\t\t\tconst scaledWidth = Math.round( imageWidth * ( scale / 100 ) );\n\t\t\t\t\t\t\t\t\t\tconst scaledHeight = Math.round( imageHeight * ( scale / 100 ) );\n\n\t\t\t\t\t\t\t\t\t\tconst isCurrent = width === scaledWidth && height === scaledHeight;\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ scale }\n\t\t\t\t\t\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\t\t\t\t\t\tisPrimary={ isCurrent }\n\t\t\t\t\t\t\t\t\t\t\t\taria-pressed={ isCurrent }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ this.updateDimensions( scaledWidth, scaledHeight ) }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ scale }%\n\t\t\t\t\t\t\t\t\t\t\t</Button>\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</ButtonGroup>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\t\t\tonClick={ this.updateDimensions() }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t);\n\n\t\t// Disable reason: Each block can be selected by clicking on it\n\t\t/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/onclick-has-role, jsx-a11y/click-events-have-key-events */\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t{ controls }\n\t\t\t\t<figure className={ classes }>\n\t\t\t\t\t<ImageSize src={ url } dirtynessTrigger={ align }>\n\t\t\t\t\t\t{ ( sizes ) => {\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\timageWidthWithinContainer,\n\t\t\t\t\t\t\t\timageHeightWithinContainer,\n\t\t\t\t\t\t\t\timageWidth,\n\t\t\t\t\t\t\t\timageHeight,\n\t\t\t\t\t\t\t} = sizes;\n\n\t\t\t\t\t\t\tconst filename = this.getFilename( url );\n\t\t\t\t\t\t\tlet defaultedAlt;\n\t\t\t\t\t\t\tif ( alt ) {\n\t\t\t\t\t\t\t\tdefaultedAlt = alt;\n\t\t\t\t\t\t\t} else if ( filename ) {\n\t\t\t\t\t\t\t\tdefaultedAlt = sprintf( __( 'This image has an empty alt attribute; its file name is %s' ), filename );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdefaultedAlt = __( 'This image has an empty alt attribute' );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst img = (\n\t\t\t\t\t\t\t\t// Disable reason: Image itself is not meant to be interactive, but\n\t\t\t\t\t\t\t\t// should direct focus to block.\n\t\t\t\t\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<ta linkid={ linkid } href={ href }>\n\t\t\t\t\t\t\t\t\t\t<img src={ url } alt={ defaultedAlt } onClick={ this.onImageClick } onError={ () => this.onImageError( url ) } />\n\t\t\t\t\t\t\t\t\t</ta>\n\t\t\t\t\t\t\t\t\t{ isBlobURL( url ) && <Spinner /> }\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( ! isResizable || ! imageWidthWithinContainer ) {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t{ getInspectorControls( imageWidth, imageHeight ) }\n\t\t\t\t\t\t\t\t\t\t<div style={ { width, height } }>\n\t\t\t\t\t\t\t\t\t\t\t{ img }\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</Fragment>\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\tconst currentWidth = width || imageWidthWithinContainer;\n\t\t\t\t\t\t\tconst currentHeight = height || imageHeightWithinContainer;\n\n\t\t\t\t\t\t\tconst ratio = imageWidth / imageHeight;\n\t\t\t\t\t\t\tconst minWidth = imageWidth < imageHeight ? MIN_SIZE : MIN_SIZE * ratio;\n\t\t\t\t\t\t\tconst minHeight = imageHeight < imageWidth ? MIN_SIZE : MIN_SIZE / ratio;\n\n\t\t\t\t\t\t\t// With the current implementation of ResizableBox, an image needs an explicit pixel value for the max-width.\n\t\t\t\t\t\t\t// In absence of being able to set the content-width, this max-width is currently dictated by the vanilla editor style.\n\t\t\t\t\t\t\t// The following variable adds a buffer to this vanilla style, so 3rd party themes have some wiggleroom.\n\t\t\t\t\t\t\t// This does, in most cases, allow you to scale the image beyond the width of the main column, though not infinitely.\n\t\t\t\t\t\t\t// @todo It would be good to revisit this once a content-width variable becomes available.\n\t\t\t\t\t\t\tconst maxWidthBuffer = maxWidth * 2.5;\n\n\t\t\t\t\t\t\tlet showRightHandle = false;\n\t\t\t\t\t\t\tlet showLeftHandle = false;\n\n\t\t\t\t\t\t\t/* eslint-disable no-lonely-if */\n\t\t\t\t\t\t\t// See https://github.com/WordPress/gutenberg/issues/7584.\n\t\t\t\t\t\t\tif ( align === 'center' ) {\n\t\t\t\t\t\t\t\t// When the image is centered, show both handles.\n\t\t\t\t\t\t\t\tshowRightHandle = true;\n\t\t\t\t\t\t\t\tshowLeftHandle = true;\n\t\t\t\t\t\t\t} else if ( isRTL ) {\n\t\t\t\t\t\t\t\t// In RTL mode the image is on the right by default.\n\t\t\t\t\t\t\t\t// Show the right handle and hide the left handle only when it is aligned left.\n\t\t\t\t\t\t\t\t// Otherwise always show the left handle.\n\t\t\t\t\t\t\t\tif ( align === 'left' ) {\n\t\t\t\t\t\t\t\t\tshowRightHandle = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tshowLeftHandle = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Show the left handle and hide the right handle only when the image is aligned right.\n\t\t\t\t\t\t\t\t// Otherwise always show the right handle.\n\t\t\t\t\t\t\t\tif ( align === 'right' ) {\n\t\t\t\t\t\t\t\t\tshowLeftHandle = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tshowRightHandle = true;\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/* eslint-enable no-lonely-if */\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t{ getInspectorControls( imageWidth, imageHeight ) }\n\t\t\t\t\t\t\t\t\t<ResizableBox\n\t\t\t\t\t\t\t\t\t\tsize={\n\t\t\t\t\t\t\t\t\t\t\twidth && height ? {\n\t\t\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\t\t\t\t\t} : undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tminWidth={ minWidth }\n\t\t\t\t\t\t\t\t\t\tmaxWidth={ maxWidthBuffer }\n\t\t\t\t\t\t\t\t\t\tminHeight={ minHeight }\n\t\t\t\t\t\t\t\t\t\tmaxHeight={ maxWidthBuffer / ratio }\n\t\t\t\t\t\t\t\t\t\tlockAspectRatio\n\t\t\t\t\t\t\t\t\t\tenable={ {\n\t\t\t\t\t\t\t\t\t\t\ttop: false,\n\t\t\t\t\t\t\t\t\t\t\tright: showRightHandle,\n\t\t\t\t\t\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\t\t\t\t\t\tleft: showLeftHandle,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tonResizeStart={ () => {\n\t\t\t\t\t\t\t\t\t\t\ttoggleSelection( false );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tonResizeStop={ ( event, direction, elt, delta ) => {\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\twidth: parseInt( currentWidth + delta.width, 10 ),\n\t\t\t\t\t\t\t\t\t\t\t\theight: parseInt( currentHeight + delta.height, 10 ),\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\ttoggleSelection( true );\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\t\t{ img }\n\t\t\t\t\t\t\t\t\t</ResizableBox>\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t</ImageSize>\n\t\t\t\t\t{ ( ! RichText.isEmpty( caption ) || isSelected ) && (\n\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\tplaceholder={ __( 'Write caption…' ) }\n\t\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\t\tunstableOnFocus={ this.onFocusCaption }\n\t\t\t\t\t\t\tonChange={ ( value ) => setAttributes( { caption: value } ) }\n\t\t\t\t\t\t\tisSelected={ this.state.captionFocused }\n\t\t\t\t\t\t\tinlineToolbar\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</figure>\n\t\t\t</Fragment>\n\t\t);\n\t\t/* eslint-enable jsx-a11y/no-static-element-interactions, jsx-a11y/onclick-has-role, jsx-a11y/click-events-have-key-events */\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, props ) => {\n\t\tconst { getMedia } = select( 'core' );\n\t\tconst { getEditorSettings } = select( 'core/editor' );\n\t\tconst { id } = props.attributes;\n\t\tconst { maxWidth, isRTL, imageSizes } = getEditorSettings();\n\n\t\treturn {\n\t\t\timage: id ? getMedia( id ) : null,\n\t\t\tmaxWidth,\n\t\t\tisRTL,\n\t\t\timageSizes,\n\t\t};\n\t} ),\n\twithViewportMatch( { isLargeViewport: 'medium' } ),\n\twithNotices,\n] )( ImageEdit );\n\n\n// WEBPACK FOOTER //\n// ./src/blocks/ta-image/edit.js","const WORDPRESS_EMBED_BLOCK = 'core-embed/wordpress';\n\nconst { includes } = lodash;\nconst { renderToString } = wp.element;\nconst { createBlock } = wp.blocks;\n\n/***\n * Creates a more suitable embed block based on the passed in props\n * and attributes generated from an embed block's preview.\n *\n * We require `attributesFromPreview` to be generated from the latest attributes\n * and preview, and because of the way the react lifecycle operates, we can't\n * guarantee that the attributes contained in the block's props are the latest\n * versions, so we require that these are generated separately.\n * See `getAttributesFromPreview` in the generated embed edit component.\n *\n * @param {Object} props The block's props.\n * @param {Object} attributesFromPreview Attributes generated from the block's most up to date preview.\n * @return {Object|undefined} A more suitable embed block if one exists.\n */\nexport const createUpgradedEmbedBlock = ( props, attributesFromPreview ) => {\n\tconst { preview, name } = props;\n\tconst { url } = props.attributes;\n\n\tif ( ! url ) {\n\t\treturn;\n\t}\n\n\tconst matchingBlock = findBlock( url );\n\n\t// WordPress blocks can work on multiple sites, and so don't have patterns,\n\t// so if we're in a WordPress block, assume the user has chosen it for a WordPress URL.\n\tif ( WORDPRESS_EMBED_BLOCK !== name && DEFAULT_EMBED_BLOCK !== matchingBlock ) {\n\t\t// At this point, we have discovered a more suitable block for this url, so transform it.\n\t\tif ( name !== matchingBlock ) {\n\t\t\treturn createBlock( matchingBlock, { url } );\n\t\t}\n\t}\n\n\tif ( preview ) {\n\t\tconst { html } = preview;\n\n\t\t// We can't match the URL for WordPress embeds, we have to check the HTML instead.\n\t\tif ( isFromWordPress( html ) ) {\n\t\t\t// If this is not the WordPress embed block, transform it into one.\n\t\t\tif ( WORDPRESS_EMBED_BLOCK !== name ) {\n\t\t\t\treturn createBlock(\n\t\t\t\t\tWORDPRESS_EMBED_BLOCK,\n\t\t\t\t\t{\n\t\t\t\t\t\turl,\n\t\t\t\t\t\t// By now we have the preview, but when the new block first renders, it\n\t\t\t\t\t\t// won't have had all the attributes set, and so won't get the correct\n\t\t\t\t\t\t// type and it won't render correctly. So, we pass through the current attributes\n\t\t\t\t\t\t// here so that the initial render works when we switch to the WordPress\n\t\t\t\t\t\t// block. This only affects the WordPress block because it can't be\n\t\t\t\t\t\t// rendered in the usual Sandbox (it has a sandbox of its own) and it\n\t\t\t\t\t\t// relies on the preview to set the correct render type.\n\t\t\t\t\t\t...attributesFromPreview,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport const isFromWordPress = ( html ) => {\n\treturn includes( html, 'class=\"wp-embedded-content\" data-secret' );\n};\n\n\n// WEBPACK FOOTER //\n// ./src/blocks/ta-image/util.js","const { noop } = lodash;\n\nconst { withGlobalEvents } = wp.compose;\nconst { Component } = wp.element;\n\nclass ImageSize extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.state = {\n\t\t\twidth: undefined,\n\t\t\theight: undefined,\n\t\t};\n\t\tthis.bindContainer = this.bindContainer.bind( this );\n\t\tthis.calculateSize = this.calculateSize.bind( this );\n\t}\n\n\tbindContainer( ref ) {\n\t\tthis.container = ref;\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( this.props.src !== prevProps.src ) {\n\t\t\tthis.setState( {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t} );\n\t\t\tthis.fetchImageSize();\n\t\t}\n\n\t\tif ( this.props.dirtynessTrigger !== prevProps.dirtynessTrigger ) {\n\t\t\tthis.calculateSize();\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.fetchImageSize();\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif ( this.image ) {\n\t\t\tthis.image.onload = noop;\n\t\t}\n\t}\n\n\tfetchImageSize() {\n\t\tthis.image = new window.Image();\n\t\tthis.image.onload = this.calculateSize;\n\t\tthis.image.src = this.props.src;\n\t}\n\n\tcalculateSize() {\n\t\tconst maxWidth = this.container.clientWidth;\n\t\tconst exceedMaxWidth = this.image.width > maxWidth;\n\t\tconst ratio = this.image.height / this.image.width;\n\t\tconst width = exceedMaxWidth ? maxWidth : this.image.width;\n\t\tconst height = exceedMaxWidth ? maxWidth * ratio : this.image.height;\n\t\tthis.setState( { width, height } );\n\t}\n\n\trender() {\n\t\tconst sizes = {\n\t\t\timageWidth: this.image && this.image.width,\n\t\t\timageHeight: this.image && this.image.height,\n\t\t\tcontainerWidth: this.container && this.container.clientWidth,\n\t\t\tcontainerHeight: this.container && this.container.clientHeight,\n\t\t\timageWidthWithinContainer: this.state.width,\n\t\t\timageHeightWithinContainer: this.state.height,\n\t\t};\n\t\treturn (\n\t\t\t<div ref={ this.bindContainer }>\n\t\t\t\t{ this.props.children( sizes ) }\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default withGlobalEvents( {\n\tresize: 'calculateSize',\n} )( ImageSize );\n\n\n// WEBPACK FOOTER //\n// ./src/blocks/ta-image/image-size.js","import classnames from \"classnames\";\n\nconst { __ } = wp.i18n;\nconst { Component , createRef } = wp.element;\nconst { Spinner, withSpokenMessages, Popover , TextControl } = wp.components;\nconst { withInstanceId } = wp.compose;\n\nclass ThirstyURLInput extends Component {\n\n /**\n * Component constructor method.\n * \n * @since 3.6\n * \n * @param {*} param0 \n */\n\tconstructor( { autocompleteRef } ) {\n\t\tsuper( ...arguments );\n\n\t\t// this.onChange = this.onChange.bind( this );\n\t\t// this.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.autocompleteRef = autocompleteRef || createRef();\n\t\tthis.inputRef = createRef();\n\t\tthis.searchAffiliateLinks = this.searchAffiliateLinks.bind( this );\n\t\t// this.updateSuggestions = throttle( this.updateSuggestions.bind( this ), 200 );\n\n\t\tthis.suggestionNodes = [];\n\n\t\tthis.state = {\n\t\t\tposts : [],\n\t\t\tshowSuggestions : false,\n\t\t\tselectedSuggestion : null,\n\t\t\tloading : false\n\t\t};\n\t}\n\n\t/**\n * Component did update method.\n * \n * @since 3.6\n */\n\tcomponentDidUpdate() {\n\t\tconst { showSuggestions, selectedSuggestion } = this.state;\n\t\t// only have to worry about scrolling selected suggestion into view\n\t\t// when already expanded\n\t\tif ( showSuggestions && selectedSuggestion !== null && ! this.scrollingIntoView ) {\n\t\t\tthis.scrollingIntoView = true;\n\t\t\tscrollIntoView( this.suggestionNodes[ selectedSuggestion ], this.autocompleteRef.current, {\n\t\t\t\tonlyScrollIfNeeded: true,\n\t\t\t} );\n\n\t\t\tsetTimeout( () => {\n\t\t\t\tthis.scrollingIntoView = false;\n\t\t\t}, 100 );\n\t\t}\n\t}\n\n\t/**\n * Component unmount method.\n * \n * @since 3.6\n */\n\tcomponentWillUnmount() {\n\t\tdelete this.suggestionsRequest;\n\t}\n\n\t/**\n * Bind suggestion to node.\n * \n * @param {*} index \n */\n\tbindSuggestionNode( index ) {\n\t\treturn ( ref ) => {\n\t\t\tthis.suggestionNodes[ index ] = ref;\n\t\t};\n\t}\n\t\n\tsearchAffiliateLinks( value ) {\n\n\t\t// Show the suggestions after typing at least 2 characters=\n\t\tif ( value.length < 2 ) {\n\t\t\tthis.setState( {\n\t\t\t\tshowSuggestions: false,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: false,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({\n\t\t\tshowSuggestions : true,\n\t\t\tselectedSuggestion : null,\n\t\t\tloading : true\n\t\t});\n\n\t\tconst formData = new FormData();\n formData.append( \"action\" , \"search_affiliate_links_query\" );\n formData.append( \"keyword\" , value );\n formData.append( \"paged\" , 1 );\n\t\tformData.append( \"gutenberg\" , true );\n\t\tformData.append( \"with_images\" , true );\n\t\t\n\t\t// We are getting data via the WP AJAX instead of rest API as it is not possible yet\n // to filter results with category value. This is to prepare next update to add category filter.\n const request = fetch( ajaxurl , {\n method : \"POST\",\n body : formData\n\t\t} );\n\t\t\n\t\trequest\n .then( response => response.json() )\n .then( ( response ) => {\n\n if ( ! response.affiliate_links ) return;\n\n const posts = response.affiliate_links;\n\n\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\treturn;\n }\n\n\t\t\tthis.setState( {\n\t\t\t\tposts,\n\t\t\t\tloading: false,\n } );\n\n\t\t\tif ( !! posts.length ) {\n\t\t\t\tthis.props.debouncedSpeak( sprintf( _n(\n\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\tposts.length\n\t\t\t\t), posts.length ), 'assertive' );\n\t\t\t} else {\n\t\t\t\tthis.props.debouncedSpeak( __( 'No results.' ), 'assertive' );\n }\n\n\t\t} ).catch( () => {\n\t\t\tif ( this.suggestionsRequest === request ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\tloading: false,\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tthis.suggestionsRequest = request;\n\t}\n\n\t/**\n * Set state when an affiliate link is selected.\n * \n * @since 3.6\n * \n * @param {*} post \n */\n\tselectLink( post ) {\n\t\t// this.props.onChange( post.link, post );\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: post,\n\t\t\tshowSuggestions: false,\n\t\t} );\n\n\t\tthis.props.updateImageSelection( post.images , post );\n\t}\n\n\t/**\n * Callback handler for when affiliate link is selected.\n * \n * @param {*} post \n */\n\thandleOnClick( post ) {\n\t\tthis.selectLink( post );\n\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\t// this.inputRef.current.focus();\n\t}\n\n render() {\n const { value = '', autoFocus = true, instanceId } = this.props;\n const { showSuggestions , posts, selectedSuggestion , loading } = this.state;\n \n return (\n <div class=\"edit-search-affiliate-links\">\n\t\t\t\t<form\n\t\t\t\t\tclassName=\"editor-format-toolbar__link-container-content ta-link-search-popover\"\n\t\t\t\t\tonSubmit={ this.displayAffiliateImages }\n\t\t\t\t>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tclassName=\"ta-search-affiliate-links\"\n\t\t\t\t\t\tplaceholder={ __( \"Type to search affiliate links\" ) }\n\t\t\t\t\t\tonChange={ this.searchAffiliateLinks }\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ ( loading ) && <Spinner /> }\n\n\t\t\t\t\t{ showSuggestions && !! posts.length && \n\t\t\t\t\t\t<Popover position=\"bottom\" focusOnMount={ false }>\n\t\t\t\t\t\t\t<div class=\"affilate-links-suggestions\">\n\t\t\t\t\t\t\t\t{ posts.map( ( post, index ) => (\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\tkey={ post.id }\n\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t\t\tid={ `editor-url-input-suggestion-${ instanceId }-${ index }` }\n\t\t\t\t\t\t\t\t\t\tref={ this.bindSuggestionNode( index ) }\n\t\t\t\t\t\t\t\t\t\tclassName={ classnames( 'editor-url-input__suggestion', {\n\t\t\t\t\t\t\t\t\t\t\t'is-selected': index === selectedSuggestion,\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => this.handleOnClick( post ) }\n\t\t\t\t\t\t\t\t\t\taria-selected={ index === selectedSuggestion }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ post.title || __( '(no title)' ) }\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</Popover>\n\t\t\t\t\t}\n\t\t\t\t</form>\n </div>\n );\n }\n}\n\nexport default withSpokenMessages( withInstanceId( ThirstyURLInput ) );\n\n\n// WEBPACK FOOTER //\n// ./src/blocks/ta-image/search-input.js","import { taLink } from \"./ta-link\";\n\nconst { registerFormatType } = wp.richText;\n\n/**\n * Register custom formats.\n * \n * @since 3.6\n */\nexport default function registerFormats() {\n\n [\n taLink\n ].forEach( ( { name , ...settings } ) => registerFormatType( name , settings ) );\n}\n\n\n// WEBPACK FOOTER //\n// ./src/formats/index.js","import InlineAffiliateLinkUI from './inline';\n\nconst { __ } = wp.i18n;\nconst { Component , Fragment } = wp.element;\nconst { withSpokenMessages } = wp.components;\nconst { getTextContent , applyFormat , removeFormat , slice } = wp.richText;\nconst { isURL } = wp.url;\nconst { RichTextToolbarButton , RichTextShortcut } = wp.editor;\nconst { Path , SVG } = wp.components;\n\nconst name = \"ta/link\";\n\n/**\n * Custom Affiliate link format. When applied will wrap selected text with <ta href=\"\" linkid=\"\"></ta> custom element.\n * Custom element is implemented here as we are not allowed to use <a> tag due to Gutenberg limitations.\n * Element is converted to normal <a> tag on frontend via PHP script filtered on 'the_content'.\n * \n * @since 3.6\n */\nexport const taLink = {\n name,\n title : __( \"Affiliate Link\" ),\n tagName : \"ta\",\n className : null,\n attributes : {\n\t\turl : \"href\",\n\t\ttarget : \"target\"\n },\n edit : withSpokenMessages( class LinkEdit extends Component {\n\t\t\n\t\t/**\n\t\t * Component constructor.\n\t\t * \n\t\t * @since 3.6\n\t\t */\n\t\tconstructor() {\n\t\t\tsuper( ...arguments );\n\n\t\t\tthis.addLink = this.addLink.bind( this );\n\t\t\tthis.stopAddingLink = this.stopAddingLink.bind( this );\n\t\t\tthis.onRemoveFormat = this.onRemoveFormat.bind( this );\n\t\t\tthis.state = {\n\t\t\t\taddingLink: false,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Callback to set state to adding link status.\n\t\t * \n\t\t * @since 3.6\n\t\t */\n\t\taddLink() {\n\t\t\tconst { value, onChange } = this.props;\n\t\t\tconst text = getTextContent( slice( value ) );\n\n\t\t\tif ( text && isURL( text ) ) {\n\t\t\t\tonChange( applyFormat( value, { type: name, attributes: { url: text } } ) );\n\t\t\t} else {\n\t\t\t\tthis.setState( { addingLink: true } );\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Callback to set state to stop adding link status.\n\t\t * \n\t\t * @since 3.6\n\t\t */\n\t\tstopAddingLink() {\n\t\t\tthis.setState( { addingLink: false } );\n\t\t}\n\n\t\t/**\n\t\t * Remove format event callback.\n\t\t * \n\t\t * @since 3.6\n\t\t */\n\t\tonRemoveFormat() {\n\t\t\tconst { value , onChange , speak } = this.props;\n\n\t\t\tonChange( removeFormat( value , name ) );\n\t\t\tspeak( __( \"Affiliate Link removed.\" ), \"assertive\" );\n\t\t}\n\n\t\t/**\n\t\t * Component render method.\n\t\t * \n\t\t * @since 3.6\n\t\t */\n\t\trender() {\n\t\t\tconst { isActive , activeAttributes , value , onChange } = this.props;\n\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<RichTextShortcut\n\t\t\t\t\t\ttype=\"access\"\n\t\t\t\t\t\tcharacter=\"s\"\n\t\t\t\t\t\tonUse={ this.onRemoveFormat }\n\t\t\t\t\t/>\n\t\t\t\t\t<RichTextShortcut\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\tcharacter=\"l\"\n\t\t\t\t\t\tonUse={ this.addLink }\n\t\t\t\t\t/>\n\t\t\t\t\t<RichTextShortcut\n\t\t\t\t\t\ttype=\"primaryShift\"\n\t\t\t\t\t\tcharacter=\"l\"\n\t\t\t\t\t\tonUse={ this.onRemoveFormat }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isActive && <RichTextToolbarButton\n\t\t\t\t\t\ticon=\"editor-unlink\"\n\t\t\t\t\t\ttitle={ __( 'Remove Affiliate Link' ) }\n\t\t\t\t\t\tclassName=\"ta-unlink-button\"\n\t\t\t\t\t\tonClick={ this.onRemoveFormat }\n\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\tshortcutType=\"primaryShift\"\n\t\t\t\t\t\tshortcutCharacter=\"l\"\n\t\t\t\t\t/> }\n\t\t\t\t\t{ ! isActive && <RichTextToolbarButton\n\t\t\t\t\t\ticon={ <SVG xmlns=\"http://www.w3.org/2000/svg\" width=\"16.688\" height=\"9.875\" viewBox=\"0 0 16.688 9.875\"><Path id=\"TA.svg\" fill=\"black\" class=\"cls-1\" d=\"M2.115,15.12H4.847L6.836,7.7H9.777l0.63-2.381H1.821L1.177,7.7H4.118Zm4.758,0H9.829l1.177-1.751h3.782l0.238,1.751h2.858L16.357,5.245H13.7Zm5.5-3.866,1.835-2.816,0.35,2.816H12.378Z\" transform=\"translate(-1.188 -5.25)\"/></SVG> }\n\t\t\t\t\t\ttitle={ __( 'Affiliate Link' ) }\n\t\t\t\t\t\tclassName=\"ta-link-button\"\n\t\t\t\t\t\tonClick={ this.addLink }\n\t\t\t\t\t\tshortcutType=\"primary\"\n\t\t\t\t\t\tshortcutCharacter=\"l\"\n\t\t\t\t\t/> }\n\t\t\t\t\t<InlineAffiliateLinkUI\n\t\t\t\t\t\taddingLink={ this.state.addingLink }\n\t\t\t\t\t\tstopAddingLink={ this.stopAddingLink }\n\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t}\n } )\n}\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/index.js","import classnames from \"classnames\";\nimport ThirstyPositionedAtSelection from './positioned-at-selection';\nimport { isValidHref } from './utils';\nimport ThirstyURLPopover from './url-popover';\nimport ThirstyURLInput from './url-input';\n\nconst { __ } = wp.i18n;\nconst { Component , createRef } = wp.element;\nconst { ExternalLink , ToggleControl , IconButton , withSpokenMessages } = wp.components;\nconst { LEFT, RIGHT, UP, DOWN, BACKSPACE, ENTER } = wp.keycodes;\nconst { prependHTTP , safeDecodeURI , filterURLForDisplay } = wp.url;\nconst { create , insert , isCollapsed , applyFormat , getTextContent , slice } = wp.richText;\n\nconst stopKeyPropagation = ( event ) => event.stopPropagation();\n\n/**\n * Generates the format object that will be applied to the link text.\n * \n * @since 3.6\n *\n * @param {string} url The href of the link.\n * @param {boolean} linkid Affiliate link ID.\n * @param {Object} text The text that is being hyperlinked.\n *\n * @return {Object} The final format object.\n */\nfunction createLinkFormat( { url , linkid , text } ) {\n\tconst format = {\n\t\ttype: \"ta/link\",\n\t\tattributes: {\n\t\t\turl,\n\t\t\tlinkid : linkid.toString()\n\t\t},\n\t};\n\n\treturn format;\n}\n\n/**\n * Check if input is being show.\n * \n * @since 3.6\n * \n * @param {Object} props Component props.\n * @param {Object} state Component state.\n */\nfunction isShowingInput( props , state ) {\n\treturn props.addingLink || state.editLink;\n}\n\n/**\n * Affiliate Link editor JSX element.\n * \n * @since 3.6\n * \n * @param {Object} param0 Component props (destructred).\n */\nconst LinkEditor = ( { value , onChangeInputValue , onKeyDown , submitLink, invalidLink , resetInvalidLink , autocompleteRef } ) => (\n\t// Disable reason: KeyPress must be suppressed so the block doesn't hide the toolbar\n\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n\t<form\n\t\tclassName=\"editor-format-toolbar__link-container-content ta-link-search-popover\"\n\t\tonKeyPress={ stopKeyPropagation }\n\t\tonKeyDown={ onKeyDown }\n\t\tonSubmit={ submitLink }\n\t>\n\t\t<ThirstyURLInput\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChangeInputValue }\n\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\tinvalidLink={ invalidLink }\n\t\t\tresetInvalidLink={ resetInvalidLink }\n\t\t/>\n\t\t<IconButton icon=\"editor-break\" label={ __( 'Apply' ) } type=\"submit\" />\n\t</form>\n\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions */\n);\n\n/**\n * Affiliate link url viewer JSX element.\n * \n * @param {*} param0 Component props (destructred).\n */\nconst LinkViewerUrl = ( { url } ) => {\n\tconst prependedURL = prependHTTP( url );\n\tconst linkClassName = classnames( 'editor-format-toolbar__link-container-value', {\n\t\t'has-invalid-link': ! isValidHref( prependedURL ),\n\t} );\n\n\tif ( ! url ) {\n\t\treturn <span className={ linkClassName }></span>;\n\t}\n\n\treturn (\n\t\t<ExternalLink\n\t\t\tclassName={ linkClassName }\n\t\t\thref={ url }\n\t\t>\n\t\t\t{ filterURLForDisplay( safeDecodeURI( url ) ) }\n\t\t</ExternalLink>\n\t);\n};\n\n/**\n * Affiliate link viewer JSX element.\n * \n * @param {*} param0 Component props (destructred).\n */\nconst LinkViewer = ( { url, editLink } ) => {\n\treturn (\n\t\t// Disable reason: KeyPress must be suppressed so the block doesn't hide the toolbar\n\t\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\t\t<div\n\t\t\tclassName=\"editor-format-toolbar__link-container-content\"\n\t\t\tonKeyPress={ stopKeyPropagation }\n\t\t>\n\t\t\t<LinkViewerUrl url={ url } />\n\t\t\t<IconButton icon=\"edit\" label={ __( 'Edit' ) } onClick={ editLink } />\n\t\t</div>\n\t\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n\t);\n};\n\n/**\n * Inline affiliate link UI Component.\n * \n * @since 3.6\n * \n * @param {*} param0 Component props (destructred).\n */\nclass InlineAffiliateLinkUI extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.editLink = this.editLink.bind( this );\n\t\tthis.submitLink = this.submitLink.bind( this );\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.onChangeInputValue = this.onChangeInputValue.bind( this );\n\t\tthis.onClickOutside = this.onClickOutside.bind( this );\n\t\tthis.resetState = this.resetState.bind( this );\n\t\tthis.autocompleteRef = createRef();\n\t\tthis.resetInvalidLink = this.resetInvalidLink.bind( this );\n\n\t\tthis.state = {\n\t\t\tinputValue : '',\n\t\t\tlinkid : 0,\n\t\t\tpost : null,\n\t\t\tinvalidLink : false\n\t\t};\n\t}\n\n\t/**\n\t * Stop the key event from propagating up to ObserveTyping.startTypingInTextField.\n\t * \n\t * @since 3.6\n\t * \n\t * @param {Object} event Event object.\n\t */\n\tonKeyDown( event ) {\n\t\tif ( [ LEFT, DOWN, RIGHT, UP, BACKSPACE, ENTER ].indexOf( event.keyCode ) > -1 ) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n\n\t/**\n\t * Callback to set state when input value is changed.\n\t * \n\t * @since 3.6\n\t * \n\t * @param {*} inputValue \n\t * @param {*} post \n\t */\n\tonChangeInputValue( inputValue , post = null ) {\n\t\tconst linkid = post ? post.id : 0;\n\t\tthis.setState( { inputValue , linkid , post } );\n\t}\n\n\t/**\n\t * Callback to set state when edit affiliate link (already inserted) is triggered.\n\t * \n\t * @since 3.6\n\t * \n\t * @param {*} event \n\t */\n\teditLink( event ) {\n\t\tthis.setState( { editLink: true } );\n\t\tevent.preventDefault();\n\t}\n\n\t/**\n\t * Callback to apply the affiliate link format to the selected text or position in the active block.\n\t * \n\t * @since 3.6\n\t * \n\t * @param {*} event \n\t */\n\tsubmitLink( event ) {\n\t\tconst { isActive, value, onChange, speak } = this.props;\n\t\tconst { inputValue, linkid , post } = this.state;\n\t\tconst url = prependHTTP( inputValue );\n\t\tconst selectedText = getTextContent( slice( value ) );\n\t\tconst format = createLinkFormat( {\n\t\t\turl,\n\t\t\tlinkid,\n\t\t\ttext: selectedText,\n\t\t} );\n\n\t\tevent.preventDefault();\n\n\t\tif ( ! linkid || ! post ) {\n\t\t\tthis.setState( { invalidLink : true } )\n\t\t\treturn;\n\t\t} \n\n\t\tif ( isCollapsed( value ) && ! isActive ) {\n\t\t\tconst toInsert = applyFormat( create( { text: post.title } ), format, 0, url.length );\n\t\t\tonChange( insert( value, toInsert ) );\n\t\t} else {\n\t\t\tonChange( applyFormat( value, format ) );\n\t\t}\n\n\t\tthis.resetState();\n\n\t\tif ( ! isValidHref( url ) ) {\n\t\t\tspeak( __( 'Warning: the link has been inserted but may have errors. Please test it.' ), 'assertive' );\n\t\t} else if ( isActive ) {\n\t\t\tspeak( __( 'Link edited.' ), 'assertive' );\n\t\t} else {\n\t\t\tspeak( __( 'Link inserted' ), 'assertive' );\n\t\t}\n\t}\n\n\t/**\n\t * Callback to run when users clicks outside the popover UI.\n\t * \n\t * @since 3.6\n\t * \n\t * @param {*} event \n\t */\n\tonClickOutside( event ) {\n\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t// so onClickOutside fails to detect that a click on a suggestion occured in the\n\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t// return to avoid the popover being closed.\n\t\tconst autocompleteElement = this.autocompleteRef.current;\n\t\tif ( autocompleteElement && autocompleteElement.contains( event.target ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.resetState();\n\t}\n\n\t/**\n\t * Reset state callback.\n\t * \n\t * @since 3.6\n\t */\n\tresetState() {\n\t\tthis.props.stopAddingLink();\n\t\tthis.setState( { inputValue : '' , editLink: false } );\n\t\tthis.resetInvalidLink();\n\t}\n\n\t/**\n\t * Reset invalid link state callback. Separated as we need to run this independently from resetState() callback.\n\t * \n\t * @since 3.6\n\t */\n\tresetInvalidLink() {\n\t\tthis.setState( { invalidLink : false } );\n\t}\n\n\t/**\n\t * Component render method.\n\t *\n\t * @since 3.6\n\t */\n\trender() {\n\t\tconst { isActive, activeAttributes: { url , linkid }, addingLink, value, onChange } = this.props;\n\n\t\tif ( ! isActive && ! addingLink ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { inputValue , invalidLink } = this.state;\n\t\tconst showInput = isShowingInput( this.props, this.state );\n\n\t\treturn (\n\t\t\t<ThirstyPositionedAtSelection\n\t\t\t\tkey={ `${ value.start }${ value.end }` /* Used to force rerender on selection change */ }\n\t\t\t>\n\t\t\t\t<ThirstyURLPopover\n\t\t\t\t\tonClickOutside={ this.onClickOutside }\n\t\t\t\t\tonClose={ this.resetState }\n\t\t\t\t\tfocusOnMount={ showInput ? 'firstElement' : false }\n\t\t\t\t\tinvalidLink={ invalidLink }\n\t\t\t\t>\n\t\t\t\t\t{ showInput ? (\n\t\t\t\t\t\t<LinkEditor\n\t\t\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\t\t\tonChangeInputValue={ this.onChangeInputValue }\n\t\t\t\t\t\t\tonKeyDown={ this.onKeyDown }\n\t\t\t\t\t\t\tsubmitLink={ this.submitLink }\n\t\t\t\t\t\t\tautocompleteRef={ this.autocompleteRef }\n\t\t\t\t\t\t\tupdateLinkId= { this.updateLinkId }\n\t\t\t\t\t\t\tinvalidLink={ invalidLink }\n\t\t\t\t\t\t\tresetInvalidLink={ this.resetInvalidLink }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<LinkViewer\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\teditLink={ this.editLink }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ThirstyURLPopover>\n\t\t\t</ThirstyPositionedAtSelection>\n\t\t);\n\t}\n}\n\nexport default withSpokenMessages( InlineAffiliateLinkUI );\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/inline.js","const { Component } = wp.element;\nconst { getOffsetParent , getRectangleFromRange } = wp.dom;\n\n/**\n * Returns a style object for applying as `position: absolute` for an element\n * relative to the bottom-center of the current selection. Includes `top` and\n * `left` style properties.\n * \n * @since 3.6\n *\n * @return {Object} Style object.\n */\nfunction getCurrentCaretPositionStyle() {\n\tconst selection = window.getSelection();\n\n\t// Unlikely, but in the case there is no selection, return empty styles so\n\t// as to avoid a thrown error by `Selection#getRangeAt` on invalid index.\n\tif ( selection.rangeCount === 0 ) {\n\t\treturn {};\n\t}\n\n\t// Get position relative viewport.\n\tconst rect = getRectangleFromRange( selection.getRangeAt( 0 ) );\n\tlet top = rect.top + rect.height;\n\tlet left = rect.left + ( rect.width / 2 );\n\n\t// Offset by positioned parent, if one exists.\n\tconst offsetParent = getOffsetParent( selection.anchorNode );\n\tif ( offsetParent ) {\n\t\tconst parentRect = offsetParent.getBoundingClientRect();\n\t\ttop -= parentRect.top;\n\t\tleft -= parentRect.left;\n\t}\n\n\treturn { top, left };\n}\n\n/**\n * Component which renders itself positioned under the current caret selection.\n * The position is calculated at the time of the component being mounted, so it\n * should only be mounted after the desired selection has been made.\n * \n * @since 3.6\n *\n * @type {WPComponent}\n */\nclass ThirstyPositionedAtSelection extends Component {\n\n\t/**\n\t * Component constructor method.\n\t * \n\t * @since 3.6\n\t */\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.state = {\n\t\t\tstyle: getCurrentCaretPositionStyle(),\n\t\t};\n\t}\n\n\t/**\n\t * Component render method.\n\t * \n\t * @since 3.6\n\t */\n\trender() {\n\t\tconst { children } = this.props;\n\t\tconst { style } = this.state;\n\n\t\treturn (\n\t\t\t<div className=\"editor-format-toolbar__selection-position\" style={ style }>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default ThirstyPositionedAtSelection;\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/positioned-at-selection.js","const { startsWith } = lodash;\n\nconst {\n getProtocol,\n\tisValidProtocol,\n\tgetAuthority,\n\tisValidAuthority,\n\tgetPath,\n\tisValidPath,\n\tgetQueryString,\n\tisValidQueryString,\n\tgetFragment,\n\tisValidFragment,\n} = wp.url;\n\n/**\n * Check for issues with the provided href.\n * \n * @since 3.6\n *\n * @param {string} href The href.\n * @return {boolean} Is the href invalid?\n */\nexport function isValidHref( href ) {\n\tif ( ! href ) {\n\t\treturn false;\n\t}\n\n\tconst trimmedHref = href.trim();\n\n\tif ( ! trimmedHref ) {\n\t\treturn false;\n\t}\n\n\t// Does the href start with something that looks like a URL protocol?\n\tif ( /^\\S+:/.test( trimmedHref ) ) {\n\t\tconst protocol = getProtocol( trimmedHref );\n\t\tif ( ! isValidProtocol( protocol ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Add some extra checks for http(s) URIs, since these are the most common use-case.\n\t\t// This ensures URIs with an http protocol have exactly two forward slashes following the protocol.\n\t\tif ( startsWith( protocol, 'http' ) && ! /^https?:\\/\\/[^\\/\\s]/i.test( trimmedHref ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst authority = getAuthority( trimmedHref );\n\t\tif ( ! isValidAuthority( authority ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst path = getPath( trimmedHref );\n\t\tif ( path && ! isValidPath( path ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst queryString = getQueryString( trimmedHref );\n\t\tif ( queryString && ! isValidQueryString( queryString ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst fragment = getFragment( trimmedHref );\n\t\tif ( fragment && ! isValidFragment( fragment ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Validate anchor links.\n\tif ( startsWith( trimmedHref, '#' ) && ! isValidFragment( trimmedHref ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/utils.js","const { __ } = wp.i18n;\nconst { Component } = wp.element;\nconst { Popover , IconButton } = wp.components;\n\n/**\n * Custom URL Popover component.\n * \n * @since 3.6\n */\nclass ThirstyURLPopover extends Component {\n\n /**\n * Component constructor method.\n * \n * @since 3.6\n */\n\tconstructor() {\n super( ...arguments );\n \n this.toggleSettingsVisibility = this.toggleSettingsVisibility.bind( this );\n\n\t\tthis.state = {\n\t\t\tisSettingsExpanded: false,\n\t\t};\n }\n \n /**\n * Component constructor.\n * \n * @since 3.6\n */\n toggleSettingsVisibility() {\n\t\tthis.setState( {\n\t\t\tisSettingsExpanded: ! this.state.isSettingsExpanded,\n\t\t} );\n\t}\n\n /**\n * Component render method.\n * \n * @since 3.6\n */\n\trender() {\n\t\tconst {\n\t\t\tchildren,\n\t\t\trenderSettings,\n\t\t\tonClose,\n onClickOutside,\n invalidLink,\n\t\t\tposition = 'bottom center',\n\t\t\tfocusOnMount = 'firstElement',\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tisSettingsExpanded,\n } = this.state;\n \n const showSettings = !! renderSettings && isSettingsExpanded;\n\n\t\treturn (\n\t\t\t<Popover\n\t\t\t\tclassName=\"ta-url-popover editor-url-popover\"\n\t\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t\tposition={ position }\n\t\t\t\tonClose={ onClose }\n\t\t\t\tonClickOutside={ onClickOutside }\n\t\t\t>\n\t\t\t\t<div className=\"editor-url-popover__row\">\n { children }\n { !! renderSettings && (\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tclassName=\"editor-url-popover__settings-toggle\"\n\t\t\t\t\t\t\ticon=\"ellipsis\"\n\t\t\t\t\t\t\tlabel={ __( 'Link Settings' ) }\n\t\t\t\t\t\t\tonClick={ this.toggleSettingsVisibility }\n\t\t\t\t\t\t\taria-expanded={ isSettingsExpanded }\n\t\t\t\t\t\t/>\n ) }\n\t\t\t\t</div>\n { showSettings && (\n\t\t\t\t\t<div className=\"editor-url-popover__row editor-url-popover__settings\">\n\t\t\t\t\t\t{ renderSettings() }\n\t\t\t\t\t</div>\n ) }\n { invalidLink && <div class=\"ta-invalid-link\">{ __( 'Invalid affiliate link' ) }</div> }\n\t\t\t</Popover>\n\t\t);\n\t}\n}\n\nexport default ThirstyURLPopover;\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/url-popover.js","import classnames from 'classnames';\nimport scrollIntoView from 'dom-scroll-into-view';\n\nconst { __ } = wp.i18n;\nconst { throttle } = lodash;\nconst { Component , createRef } = wp.element;\nconst { UP, DOWN, ENTER, TAB } = wp.keycodes;\nconst { Spinner, withSpokenMessages, Popover } = wp.components;\nconst { withInstanceId } = wp.compose;\n\n// Since URLInput is rendered in the context of other inputs, but should be\n// considered a separate modal node, prevent keyboard events from propagating\n// as being considered from the input.\nconst stopEventPropagation = ( event ) => event.stopPropagation();\n\n/**\n * Custom URL Input component.\n * \n * @since 3.6\n */\nclass ThirstyURLInput extends Component {\n\n /**\n * Component constructor method.\n * \n * @since 3.6\n * \n * @param {*} param0 \n */\n\tconstructor( { autocompleteRef } ) {\n\t\tsuper( ...arguments );\n\n\t\tthis.onChange = this.onChange.bind( this );\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.autocompleteRef = autocompleteRef || createRef();\n\t\tthis.inputRef = createRef();\n\t\tthis.updateSuggestions = throttle( this.updateSuggestions.bind( this ), 200 );\n\n\t\tthis.suggestionNodes = [];\n\n\t\tthis.state = {\n\t\t\tposts: [],\n\t\t\tshowSuggestions: false,\n\t\t\tselectedSuggestion: null,\n\t\t};\n\t}\n\n /**\n * Component did update method.\n * \n * @since 3.6\n */\n\tcomponentDidUpdate() {\n\t\tconst { showSuggestions, selectedSuggestion } = this.state;\n\t\t// only have to worry about scrolling selected suggestion into view\n\t\t// when already expanded\n\t\tif ( showSuggestions && selectedSuggestion !== null && ! this.scrollingIntoView ) {\n\t\t\tthis.scrollingIntoView = true;\n\t\t\tscrollIntoView( this.suggestionNodes[ selectedSuggestion ], this.autocompleteRef.current, {\n\t\t\t\tonlyScrollIfNeeded: true,\n\t\t\t} );\n\n\t\t\tsetTimeout( () => {\n\t\t\t\tthis.scrollingIntoView = false;\n\t\t\t}, 100 );\n\t\t}\n\t}\n\n /**\n * Component unmount method.\n * \n * @since 3.6\n */\n\tcomponentWillUnmount() {\n\t\tdelete this.suggestionsRequest;\n\t}\n\n /**\n * Bind suggestion to node.\n * \n * @param {*} index \n */\n\tbindSuggestionNode( index ) {\n\t\treturn ( ref ) => {\n\t\t\tthis.suggestionNodes[ index ] = ref;\n\t\t};\n\t}\n\n /**\n * Callback to show suggestions based on value inputted on search field.\n * \n * @since 3.6\n * \n * @param {*} value \n */\n\tupdateSuggestions( value ) {\n\t\t// Show the suggestions after typing at least 2 characters\n\t\t// and also for URLs\n\t\tif ( value.length < 2 || /^https?:/.test( value ) ) {\n\t\t\tthis.setState( {\n\t\t\t\tshowSuggestions: false,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: false,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tshowSuggestions: true,\n\t\t\tselectedSuggestion: null,\n\t\t\tloading: true,\n\t\t} );\n\n const formData = new FormData();\n formData.append( \"action\" , \"search_affiliate_links_query\" );\n formData.append( \"keyword\" , value );\n formData.append( \"paged\" , 1 );\n formData.append( \"gutenberg\" , true );\n \n // We are getting data via the WP AJAX instead of rest API as it is not possible yet\n // to filter results with category value. This is to prepare next update to add category filter.\n const request = fetch( ajaxurl , {\n method : \"POST\",\n body : formData\n } );\n\n request\n .then( response => response.json() )\n .then( ( response ) => {\n\n if ( ! response.affiliate_links ) return;\n\n const posts = response.affiliate_links;\n\n\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\treturn;\n }\n\n\t\t\tthis.setState( {\n\t\t\t\tposts,\n\t\t\t\tloading: false,\n } );\n\n\t\t\tif ( !! posts.length ) {\n\t\t\t\tthis.props.debouncedSpeak( sprintf( _n(\n\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\tposts.length\n\t\t\t\t), posts.length ), 'assertive' );\n\t\t\t} else {\n\t\t\t\tthis.props.debouncedSpeak( __( 'No results.' ), 'assertive' );\n }\n\n\t\t} ).catch( () => {\n\t\t\tif ( this.suggestionsRequest === request ) {\n\t\t\t\tthis.setState( {\n\t\t\t\t\tloading: false,\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tthis.suggestionsRequest = request;\n\t}\n\n /**\n * Search input value change event callback method.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\tonChange( event ) {\n this.props.resetInvalidLink();\n\t\tconst inputValue = event.target.value;\n\t\tthis.props.onChange( inputValue );\n\t\tthis.updateSuggestions( inputValue );\n\t}\n\n /**\n * Keydown event callback. Handles selecting result via keyboard.\n * \n * @since 3.6\n * \n * @param {*} event \n */\n\tonKeyDown( event ) {\n\t\tconst { showSuggestions, selectedSuggestion, posts, loading } = this.state;\n\t\t// If the suggestions are not shown or loading, we shouldn't handle the arrow keys\n\t\t// We shouldn't preventDefault to allow block arrow keys navigation\n\t\tif ( ! showSuggestions || ! posts.length || loading ) {\n\t\t\t// In the Windows version of Firefox the up and down arrows don't move the caret\n\t\t\t// within an input field like they do for Mac Firefox/Chrome/Safari. This causes\n\t\t\t// a form of focus trapping that is disruptive to the user experience. This disruption\n\t\t\t// only happens if the caret is not in the first or last position in the text input.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t// When UP is pressed, if the caret is at the start of the text, move it to the 0\n\t\t\t\t// position.\n\t\t\t\tcase UP: {\n\t\t\t\t\tif ( 0 !== event.target.selectionStart ) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to position 0\n\t\t\t\t\t\tevent.target.setSelectionRange( 0, 0 );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// When DOWN is pressed, if the caret is not at the end of the text, move it to the\n\t\t\t\t// last position.\n\t\t\t\tcase DOWN: {\n\t\t\t\t\tif ( this.props.value.length !== event.target.selectionStart ) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to the last position\n\t\t\t\t\t\tevent.target.setSelectionRange( this.props.value.length, this.props.value.length );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst post = this.state.posts[ this.state.selectedSuggestion ];\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase UP: {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst previousIndex = ! selectedSuggestion ? posts.length - 1 : selectedSuggestion - 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: previousIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase DOWN: {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = selectedSuggestion === null || ( selectedSuggestion === posts.length - 1 ) ? 0 : selectedSuggestion + 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: nextIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TAB: {\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( post );\n\t\t\t\t\t// Announce a link has been selected when tabbing away from the input field.\n\t\t\t\t\tthis.props.speak( __( 'Link selected' ) );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ENTER: {\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tthis.selectLink( post );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n /**\n * Set state when an affiliate link is selected.\n * \n * @since 3.6\n * \n * @param {*} post \n */\n\tselectLink( post ) {\n\t\tthis.props.onChange( post.link, post );\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tshowSuggestions: false,\n\t\t} );\n\t}\n\n /**\n * Callback handler for when affiliate link is selected.\n * \n * @param {*} post \n */\n\thandleOnClick( post ) {\n\t\tthis.selectLink( post );\n\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\tthis.inputRef.current.focus();\n\t}\n\n /**\n * Component render method.\n * \n * @since 3.6\n */\n\trender() {\n\t\tconst { value = '', autoFocus = true, instanceId , invalidLink } = this.props;\n\t\tconst { showSuggestions, posts, selectedSuggestion, loading } = this.state;\n\t\t/* eslint-disable jsx-a11y/no-autofocus */\n\t\treturn (\n\t\t\t<div className=\"editor-url-input\">\n\t\t\t\t<input\n\t\t\t\t\tautoFocus={ autoFocus }\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\taria-label={ __( 'URL' ) }\n\t\t\t\t\trequired\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ this.onChange }\n\t\t\t\t\tonInput={ stopEventPropagation }\n\t\t\t\t\tplaceholder={ __( 'Paste URL or type to search' ) }\n\t\t\t\t\tonKeyDown={ this.onKeyDown }\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-expanded={ showSuggestions }\n\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\taria-owns={ `editor-url-input-suggestions-${ instanceId }` }\n\t\t\t\t\taria-activedescendant={ selectedSuggestion !== null ? `editor-url-input-suggestion-${ instanceId }-${ selectedSuggestion }` : undefined }\n\t\t\t\t\tref={ this.inputRef }\n\t\t\t\t/>\n\n\t\t\t\t{ ( loading ) && <Spinner /> }\n\n\t\t\t\t{ showSuggestions && !! posts.length && ! invalidLink &&\n\t\t\t\t\t<Popover position=\"bottom\" noArrow focusOnMount={ false }>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"editor-url-input__suggestions\"\n\t\t\t\t\t\t\tid={ `editor-url-input-suggestions-${ instanceId }` }\n\t\t\t\t\t\t\tref={ this.autocompleteRef }\n\t\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ posts.map( ( post, index ) => (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={ post.id }\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t\tid={ `editor-url-input-suggestion-${ instanceId }-${ index }` }\n\t\t\t\t\t\t\t\t\tref={ this.bindSuggestionNode( index ) }\n\t\t\t\t\t\t\t\t\tclassName={ classnames( 'editor-url-input__suggestion', {\n\t\t\t\t\t\t\t\t\t\t'is-selected': index === selectedSuggestion,\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\tonClick={ () => this.handleOnClick( post ) }\n\t\t\t\t\t\t\t\t\taria-selected={ index === selectedSuggestion }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ post.title || __( '(no title)' ) }\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popover>\n\t\t\t\t}\n\t\t\t</div>\n\t\t);\n\t\t/* eslint-enable jsx-a11y/no-autofocus */\n\t}\n}\n\nexport default withSpokenMessages( withInstanceId( ThirstyURLInput ) );\n\n\n// WEBPACK FOOTER //\n// ./src/formats/ta-link/url-input.js","'use strict';\n\nmodule.exports = require('./dom-scroll-into-view');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-scroll-into-view/lib/index.js\n// module id = 15\n// module chunks = 0","'use strict';\n\nvar util = require('./util');\n\nfunction scrollIntoView(elem, container, config) {\n config = config || {};\n // document 归一化到 window\n if (container.nodeType === 9) {\n container = util.getWindow(container);\n }\n\n var allowHorizontalScroll = config.allowHorizontalScroll;\n var onlyScrollIfNeeded = config.onlyScrollIfNeeded;\n var alignWithTop = config.alignWithTop;\n var alignWithLeft = config.alignWithLeft;\n var offsetTop = config.offsetTop || 0;\n var offsetLeft = config.offsetLeft || 0;\n var offsetBottom = config.offsetBottom || 0;\n var offsetRight = config.offsetRight || 0;\n\n allowHorizontalScroll = allowHorizontalScroll === undefined ? true : allowHorizontalScroll;\n\n var isWin = util.isWindow(container);\n var elemOffset = util.offset(elem);\n var eh = util.outerHeight(elem);\n var ew = util.outerWidth(elem);\n var containerOffset = undefined;\n var ch = undefined;\n var cw = undefined;\n var containerScroll = undefined;\n var diffTop = undefined;\n var diffBottom = undefined;\n var win = undefined;\n var winScroll = undefined;\n var ww = undefined;\n var wh = undefined;\n\n if (isWin) {\n win = container;\n wh = util.height(win);\n ww = util.width(win);\n winScroll = {\n left: util.scrollLeft(win),\n top: util.scrollTop(win)\n };\n // elem 相对 container 可视视窗的距离\n diffTop = {\n left: elemOffset.left - winScroll.left - offsetLeft,\n top: elemOffset.top - winScroll.top - offsetTop\n };\n diffBottom = {\n left: elemOffset.left + ew - (winScroll.left + ww) + offsetRight,\n top: elemOffset.top + eh - (winScroll.top + wh) + offsetBottom\n };\n containerScroll = winScroll;\n } else {\n containerOffset = util.offset(container);\n ch = container.clientHeight;\n cw = container.clientWidth;\n containerScroll = {\n left: container.scrollLeft,\n top: container.scrollTop\n };\n // elem 相对 container 可视视窗的距离\n // 注意边框, offset 是边框到根节点\n diffTop = {\n left: elemOffset.left - (containerOffset.left + (parseFloat(util.css(container, 'borderLeftWidth')) || 0)) - offsetLeft,\n top: elemOffset.top - (containerOffset.top + (parseFloat(util.css(container, 'borderTopWidth')) || 0)) - offsetTop\n };\n diffBottom = {\n left: elemOffset.left + ew - (containerOffset.left + cw + (parseFloat(util.css(container, 'borderRightWidth')) || 0)) + offsetRight,\n top: elemOffset.top + eh - (containerOffset.top + ch + (parseFloat(util.css(container, 'borderBottomWidth')) || 0)) + offsetBottom\n };\n }\n\n if (diffTop.top < 0 || diffBottom.top > 0) {\n // 强制向上\n if (alignWithTop === true) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else if (alignWithTop === false) {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n } else {\n // 自动调整\n if (diffTop.top < 0) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithTop = alignWithTop === undefined ? true : !!alignWithTop;\n if (alignWithTop) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n }\n\n if (allowHorizontalScroll) {\n if (diffTop.left < 0 || diffBottom.left > 0) {\n // 强制向上\n if (alignWithLeft === true) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else if (alignWithLeft === false) {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n } else {\n // 自动调整\n if (diffTop.left < 0) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithLeft = alignWithLeft === undefined ? true : !!alignWithLeft;\n if (alignWithLeft) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n }\n }\n}\n\nmodule.exports = scrollIntoView;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-scroll-into-view/lib/dom-scroll-into-view.js\n// module id = 16\n// module chunks = 0","'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nfunction getClientPosition(elem) {\n var box = undefined;\n var x = undefined;\n var y = undefined;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top;\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];\n var method = 'scroll' + (top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\nfunction _getComputedStyle(elem, name, computedStyle_) {\n var val = '';\n var d = elem.ownerDocument;\n var computedStyle = computedStyle_ || d.defaultView.getComputedStyle(elem, null);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nvar getComputedStyleX = undefined;\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name = undefined;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop = undefined;\n var j = undefined;\n var i = undefined;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = undefined;\n if (prop === 'border') {\n cssProp = prop + which[i] + 'Width';\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj != null && obj == obj.window;\n}\n\nvar domUtils = {};\n\neach(['Width', 'Height'], function (name) {\n domUtils['doc' + name] = function (refWin) {\n var d = refWin.document;\n return Math.max(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement['scroll' + name],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body['scroll' + name], domUtils['viewport' + name](d));\n };\n\n domUtils['viewport' + name] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = 'client' + name;\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, extra) {\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem, computedStyle);\n var cssBoxValue = 0;\n if (borderBoxValue == null || borderBoxValue <= 0) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (cssBoxValue == null || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle);\n }\n return cssBoxValue;\n }\n if (borderBoxValueOrIsBorderBox) {\n var padding = extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle);\n return val + (extra === BORDER_INDEX ? 0 : padding);\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(elem) {\n var val = undefined;\n var args = arguments;\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\nfunction css(el, name, v) {\n var value = v;\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value += 'px';\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils['outer' + first] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, val) {\n if (val !== undefined) {\n if (elem) {\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setOffset(elem, offset) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var old = getOffset(elem);\n var ret = {};\n var current = undefined;\n var key = undefined;\n\n for (key in offset) {\n if (offset.hasOwnProperty(key)) {\n current = parseFloat(css(elem, key)) || 0;\n ret[key] = current + offset[key] - old[key];\n }\n }\n css(elem, ret);\n}\n\nmodule.exports = _extends({\n getWindow: function getWindow(node) {\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n offset: function offset(el, value) {\n if (typeof value !== 'undefined') {\n setOffset(el, value);\n } else {\n return getOffset(el);\n }\n },\n\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var ret = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n var overflow = obj.overflow;\n if (overflow) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n return ret;\n },\n scrollLeft: function scrollLeft(w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollLeft(w);\n }\n window.scrollTo(v, getScrollTop(w));\n } else {\n if (v === undefined) {\n return w.scrollLeft;\n }\n w.scrollLeft = v;\n }\n },\n scrollTop: function scrollTop(w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollTop(w);\n }\n window.scrollTo(getScrollLeft(w), v);\n } else {\n if (v === undefined) {\n return w.scrollTop;\n }\n w.scrollTop = v;\n }\n },\n\n viewportWidth: 0,\n viewportHeight: 0\n}, domUtils);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-scroll-into-view/lib/util.js\n// module id = 17\n// module chunks = 0"],"sourceRoot":""}
js/app/gutenberg_support/package-lock.json ADDED
@@ -0,0 +1,7417 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "gutenberg-tests",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 1,
5
+ "requires": true,
6
+ "dependencies": {
7
+ "abbrev": {
8
+ "version": "1.1.1",
9
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
10
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
11
+ "dev": true
12
+ },
13
+ "acorn": {
14
+ "version": "5.7.3",
15
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
16
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
17
+ "dev": true
18
+ },
19
+ "acorn-dynamic-import": {
20
+ "version": "2.0.2",
21
+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz",
22
+ "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
23
+ "dev": true,
24
+ "requires": {
25
+ "acorn": "^4.0.3"
26
+ },
27
+ "dependencies": {
28
+ "acorn": {
29
+ "version": "4.0.13",
30
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
31
+ "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
32
+ "dev": true
33
+ }
34
+ }
35
+ },
36
+ "acorn-jsx": {
37
+ "version": "3.0.1",
38
+ "resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
39
+ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
40
+ "dev": true,
41
+ "requires": {
42
+ "acorn": "^3.0.4"
43
+ },
44
+ "dependencies": {
45
+ "acorn": {
46
+ "version": "3.3.0",
47
+ "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
48
+ "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
49
+ "dev": true
50
+ }
51
+ }
52
+ },
53
+ "ajv": {
54
+ "version": "4.11.8",
55
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
56
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
57
+ "dev": true,
58
+ "requires": {
59
+ "co": "^4.6.0",
60
+ "json-stable-stringify": "^1.0.1"
61
+ }
62
+ },
63
+ "ajv-keywords": {
64
+ "version": "1.5.1",
65
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
66
+ "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
67
+ "dev": true
68
+ },
69
+ "align-text": {
70
+ "version": "0.1.4",
71
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
72
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
73
+ "dev": true,
74
+ "requires": {
75
+ "kind-of": "^3.0.2",
76
+ "longest": "^1.0.1",
77
+ "repeat-string": "^1.5.2"
78
+ },
79
+ "dependencies": {
80
+ "kind-of": {
81
+ "version": "3.2.2",
82
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
83
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
84
+ "dev": true,
85
+ "requires": {
86
+ "is-buffer": "^1.1.5"
87
+ }
88
+ }
89
+ }
90
+ },
91
+ "alphanum-sort": {
92
+ "version": "1.0.2",
93
+ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
94
+ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
95
+ "dev": true
96
+ },
97
+ "amdefine": {
98
+ "version": "1.0.1",
99
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
100
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
101
+ "dev": true
102
+ },
103
+ "ansi-escapes": {
104
+ "version": "1.4.0",
105
+ "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
106
+ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
107
+ "dev": true
108
+ },
109
+ "ansi-regex": {
110
+ "version": "2.1.1",
111
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
112
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
113
+ "dev": true
114
+ },
115
+ "ansi-styles": {
116
+ "version": "2.2.1",
117
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
118
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
119
+ "dev": true
120
+ },
121
+ "anymatch": {
122
+ "version": "2.0.0",
123
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
124
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
125
+ "dev": true,
126
+ "requires": {
127
+ "micromatch": "^3.1.4",
128
+ "normalize-path": "^2.1.1"
129
+ }
130
+ },
131
+ "aproba": {
132
+ "version": "1.2.0",
133
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
134
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
135
+ "dev": true
136
+ },
137
+ "are-we-there-yet": {
138
+ "version": "1.1.5",
139
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
140
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
141
+ "dev": true,
142
+ "requires": {
143
+ "delegates": "^1.0.0",
144
+ "readable-stream": "^2.0.6"
145
+ }
146
+ },
147
+ "argparse": {
148
+ "version": "1.0.10",
149
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
150
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
151
+ "dev": true,
152
+ "requires": {
153
+ "sprintf-js": "~1.0.2"
154
+ }
155
+ },
156
+ "arr-diff": {
157
+ "version": "4.0.0",
158
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
159
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
160
+ "dev": true
161
+ },
162
+ "arr-flatten": {
163
+ "version": "1.1.0",
164
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
165
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
166
+ "dev": true
167
+ },
168
+ "arr-union": {
169
+ "version": "3.1.0",
170
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
171
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
172
+ "dev": true
173
+ },
174
+ "array-find-index": {
175
+ "version": "1.0.2",
176
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
177
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
178
+ "dev": true
179
+ },
180
+ "array-unique": {
181
+ "version": "0.3.2",
182
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
183
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
184
+ "dev": true
185
+ },
186
+ "asn1": {
187
+ "version": "0.2.4",
188
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
189
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
190
+ "dev": true,
191
+ "requires": {
192
+ "safer-buffer": "~2.1.0"
193
+ }
194
+ },
195
+ "asn1.js": {
196
+ "version": "4.10.1",
197
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
198
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
199
+ "dev": true,
200
+ "requires": {
201
+ "bn.js": "^4.0.0",
202
+ "inherits": "^2.0.1",
203
+ "minimalistic-assert": "^1.0.0"
204
+ }
205
+ },
206
+ "assert": {
207
+ "version": "1.4.1",
208
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
209
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
210
+ "dev": true,
211
+ "requires": {
212
+ "util": "0.10.3"
213
+ },
214
+ "dependencies": {
215
+ "inherits": {
216
+ "version": "2.0.1",
217
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
218
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
219
+ "dev": true
220
+ },
221
+ "util": {
222
+ "version": "0.10.3",
223
+ "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz",
224
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
225
+ "dev": true,
226
+ "requires": {
227
+ "inherits": "2.0.1"
228
+ }
229
+ }
230
+ }
231
+ },
232
+ "assert-plus": {
233
+ "version": "1.0.0",
234
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
235
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
236
+ "dev": true
237
+ },
238
+ "assign-symbols": {
239
+ "version": "1.0.0",
240
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
241
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
242
+ "dev": true
243
+ },
244
+ "async": {
245
+ "version": "2.6.1",
246
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
247
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
248
+ "dev": true,
249
+ "requires": {
250
+ "lodash": "^4.17.10"
251
+ }
252
+ },
253
+ "async-each": {
254
+ "version": "1.0.1",
255
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
256
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
257
+ "dev": true
258
+ },
259
+ "async-foreach": {
260
+ "version": "0.1.3",
261
+ "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
262
+ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
263
+ "dev": true
264
+ },
265
+ "asynckit": {
266
+ "version": "0.4.0",
267
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
268
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
269
+ "dev": true
270
+ },
271
+ "atob": {
272
+ "version": "2.1.2",
273
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
274
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
275
+ "dev": true
276
+ },
277
+ "autoprefixer": {
278
+ "version": "6.7.7",
279
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
280
+ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
281
+ "dev": true,
282
+ "requires": {
283
+ "browserslist": "^1.7.6",
284
+ "caniuse-db": "^1.0.30000634",
285
+ "normalize-range": "^0.1.2",
286
+ "num2fraction": "^1.2.2",
287
+ "postcss": "^5.2.16",
288
+ "postcss-value-parser": "^3.2.3"
289
+ },
290
+ "dependencies": {
291
+ "browserslist": {
292
+ "version": "1.7.7",
293
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
294
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
295
+ "dev": true,
296
+ "requires": {
297
+ "caniuse-db": "^1.0.30000639",
298
+ "electron-to-chromium": "^1.2.7"
299
+ }
300
+ }
301
+ }
302
+ },
303
+ "aws-sign2": {
304
+ "version": "0.7.0",
305
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
306
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
307
+ "dev": true
308
+ },
309
+ "aws4": {
310
+ "version": "1.8.0",
311
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
312
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
313
+ "dev": true
314
+ },
315
+ "babel-code-frame": {
316
+ "version": "6.26.0",
317
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
318
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
319
+ "dev": true,
320
+ "requires": {
321
+ "chalk": "^1.1.3",
322
+ "esutils": "^2.0.2",
323
+ "js-tokens": "^3.0.2"
324
+ }
325
+ },
326
+ "babel-core": {
327
+ "version": "6.26.3",
328
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
329
+ "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
330
+ "dev": true,
331
+ "requires": {
332
+ "babel-code-frame": "^6.26.0",
333
+ "babel-generator": "^6.26.0",
334
+ "babel-helpers": "^6.24.1",
335
+ "babel-messages": "^6.23.0",
336
+ "babel-register": "^6.26.0",
337
+ "babel-runtime": "^6.26.0",
338
+ "babel-template": "^6.26.0",
339
+ "babel-traverse": "^6.26.0",
340
+ "babel-types": "^6.26.0",
341
+ "babylon": "^6.18.0",
342
+ "convert-source-map": "^1.5.1",
343
+ "debug": "^2.6.9",
344
+ "json5": "^0.5.1",
345
+ "lodash": "^4.17.4",
346
+ "minimatch": "^3.0.4",
347
+ "path-is-absolute": "^1.0.1",
348
+ "private": "^0.1.8",
349
+ "slash": "^1.0.0",
350
+ "source-map": "^0.5.7"
351
+ }
352
+ },
353
+ "babel-generator": {
354
+ "version": "6.26.1",
355
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
356
+ "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
357
+ "dev": true,
358
+ "requires": {
359
+ "babel-messages": "^6.23.0",
360
+ "babel-runtime": "^6.26.0",
361
+ "babel-types": "^6.26.0",
362
+ "detect-indent": "^4.0.0",
363
+ "jsesc": "^1.3.0",
364
+ "lodash": "^4.17.4",
365
+ "source-map": "^0.5.7",
366
+ "trim-right": "^1.0.1"
367
+ }
368
+ },
369
+ "babel-helper-builder-binary-assignment-operator-visitor": {
370
+ "version": "6.24.1",
371
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
372
+ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
373
+ "dev": true,
374
+ "requires": {
375
+ "babel-helper-explode-assignable-expression": "^6.24.1",
376
+ "babel-runtime": "^6.22.0",
377
+ "babel-types": "^6.24.1"
378
+ }
379
+ },
380
+ "babel-helper-builder-react-jsx": {
381
+ "version": "6.26.0",
382
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz",
383
+ "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=",
384
+ "dev": true,
385
+ "requires": {
386
+ "babel-runtime": "^6.26.0",
387
+ "babel-types": "^6.26.0",
388
+ "esutils": "^2.0.2"
389
+ }
390
+ },
391
+ "babel-helper-call-delegate": {
392
+ "version": "6.24.1",
393
+ "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
394
+ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
395
+ "dev": true,
396
+ "requires": {
397
+ "babel-helper-hoist-variables": "^6.24.1",
398
+ "babel-runtime": "^6.22.0",
399
+ "babel-traverse": "^6.24.1",
400
+ "babel-types": "^6.24.1"
401
+ }
402
+ },
403
+ "babel-helper-define-map": {
404
+ "version": "6.26.0",
405
+ "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
406
+ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
407
+ "dev": true,
408
+ "requires": {
409
+ "babel-helper-function-name": "^6.24.1",
410
+ "babel-runtime": "^6.26.0",
411
+ "babel-types": "^6.26.0",
412
+ "lodash": "^4.17.4"
413
+ }
414
+ },
415
+ "babel-helper-explode-assignable-expression": {
416
+ "version": "6.24.1",
417
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
418
+ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
419
+ "dev": true,
420
+ "requires": {
421
+ "babel-runtime": "^6.22.0",
422
+ "babel-traverse": "^6.24.1",
423
+ "babel-types": "^6.24.1"
424
+ }
425
+ },
426
+ "babel-helper-function-name": {
427
+ "version": "6.24.1",
428
+ "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
429
+ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
430
+ "dev": true,
431
+ "requires": {
432
+ "babel-helper-get-function-arity": "^6.24.1",
433
+ "babel-runtime": "^6.22.0",
434
+ "babel-template": "^6.24.1",
435
+ "babel-traverse": "^6.24.1",
436
+ "babel-types": "^6.24.1"
437
+ }
438
+ },
439
+ "babel-helper-get-function-arity": {
440
+ "version": "6.24.1",
441
+ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
442
+ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
443
+ "dev": true,
444
+ "requires": {
445
+ "babel-runtime": "^6.22.0",
446
+ "babel-types": "^6.24.1"
447
+ }
448
+ },
449
+ "babel-helper-hoist-variables": {
450
+ "version": "6.24.1",
451
+ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
452
+ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
453
+ "dev": true,
454
+ "requires": {
455
+ "babel-runtime": "^6.22.0",
456
+ "babel-types": "^6.24.1"
457
+ }
458
+ },
459
+ "babel-helper-optimise-call-expression": {
460
+ "version": "6.24.1",
461
+ "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
462
+ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
463
+ "dev": true,
464
+ "requires": {
465
+ "babel-runtime": "^6.22.0",
466
+ "babel-types": "^6.24.1"
467
+ }
468
+ },
469
+ "babel-helper-regex": {
470
+ "version": "6.26.0",
471
+ "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
472
+ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
473
+ "dev": true,
474
+ "requires": {
475
+ "babel-runtime": "^6.26.0",
476
+ "babel-types": "^6.26.0",
477
+ "lodash": "^4.17.4"
478
+ }
479
+ },
480
+ "babel-helper-remap-async-to-generator": {
481
+ "version": "6.24.1",
482
+ "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
483
+ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
484
+ "dev": true,
485
+ "requires": {
486
+ "babel-helper-function-name": "^6.24.1",
487
+ "babel-runtime": "^6.22.0",
488
+ "babel-template": "^6.24.1",
489
+ "babel-traverse": "^6.24.1",
490
+ "babel-types": "^6.24.1"
491
+ }
492
+ },
493
+ "babel-helper-replace-supers": {
494
+ "version": "6.24.1",
495
+ "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
496
+ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
497
+ "dev": true,
498
+ "requires": {
499
+ "babel-helper-optimise-call-expression": "^6.24.1",
500
+ "babel-messages": "^6.23.0",
501
+ "babel-runtime": "^6.22.0",
502
+ "babel-template": "^6.24.1",
503
+ "babel-traverse": "^6.24.1",
504
+ "babel-types": "^6.24.1"
505
+ }
506
+ },
507
+ "babel-helpers": {
508
+ "version": "6.24.1",
509
+ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
510
+ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
511
+ "dev": true,
512
+ "requires": {
513
+ "babel-runtime": "^6.22.0",
514
+ "babel-template": "^6.24.1"
515
+ }
516
+ },
517
+ "babel-loader": {
518
+ "version": "7.1.5",
519
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz",
520
+ "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==",
521
+ "dev": true,
522
+ "requires": {
523
+ "find-cache-dir": "^1.0.0",
524
+ "loader-utils": "^1.0.2",
525
+ "mkdirp": "^0.5.1"
526
+ }
527
+ },
528
+ "babel-messages": {
529
+ "version": "6.23.0",
530
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
531
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
532
+ "dev": true,
533
+ "requires": {
534
+ "babel-runtime": "^6.22.0"
535
+ }
536
+ },
537
+ "babel-plugin-check-es2015-constants": {
538
+ "version": "6.22.0",
539
+ "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
540
+ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
541
+ "dev": true,
542
+ "requires": {
543
+ "babel-runtime": "^6.22.0"
544
+ }
545
+ },
546
+ "babel-plugin-syntax-async-functions": {
547
+ "version": "6.13.0",
548
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
549
+ "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
550
+ "dev": true
551
+ },
552
+ "babel-plugin-syntax-exponentiation-operator": {
553
+ "version": "6.13.0",
554
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
555
+ "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
556
+ "dev": true
557
+ },
558
+ "babel-plugin-syntax-jsx": {
559
+ "version": "6.18.0",
560
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
561
+ "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=",
562
+ "dev": true
563
+ },
564
+ "babel-plugin-syntax-object-rest-spread": {
565
+ "version": "6.13.0",
566
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
567
+ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
568
+ "dev": true
569
+ },
570
+ "babel-plugin-syntax-trailing-function-commas": {
571
+ "version": "6.22.0",
572
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
573
+ "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
574
+ "dev": true
575
+ },
576
+ "babel-plugin-transform-async-to-generator": {
577
+ "version": "6.24.1",
578
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
579
+ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
580
+ "dev": true,
581
+ "requires": {
582
+ "babel-helper-remap-async-to-generator": "^6.24.1",
583
+ "babel-plugin-syntax-async-functions": "^6.8.0",
584
+ "babel-runtime": "^6.22.0"
585
+ }
586
+ },
587
+ "babel-plugin-transform-es2015-arrow-functions": {
588
+ "version": "6.22.0",
589
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
590
+ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
591
+ "dev": true,
592
+ "requires": {
593
+ "babel-runtime": "^6.22.0"
594
+ }
595
+ },
596
+ "babel-plugin-transform-es2015-block-scoped-functions": {
597
+ "version": "6.22.0",
598
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
599
+ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
600
+ "dev": true,
601
+ "requires": {
602
+ "babel-runtime": "^6.22.0"
603
+ }
604
+ },
605
+ "babel-plugin-transform-es2015-block-scoping": {
606
+ "version": "6.26.0",
607
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
608
+ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
609
+ "dev": true,
610
+ "requires": {
611
+ "babel-runtime": "^6.26.0",
612
+ "babel-template": "^6.26.0",
613
+ "babel-traverse": "^6.26.0",
614
+ "babel-types": "^6.26.0",
615
+ "lodash": "^4.17.4"
616
+ }
617
+ },
618
+ "babel-plugin-transform-es2015-classes": {
619
+ "version": "6.24.1",
620
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
621
+ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
622
+ "dev": true,
623
+ "requires": {
624
+ "babel-helper-define-map": "^6.24.1",
625
+ "babel-helper-function-name": "^6.24.1",
626
+ "babel-helper-optimise-call-expression": "^6.24.1",
627
+ "babel-helper-replace-supers": "^6.24.1",
628
+ "babel-messages": "^6.23.0",
629
+ "babel-runtime": "^6.22.0",
630
+ "babel-template": "^6.24.1",
631
+ "babel-traverse": "^6.24.1",
632
+ "babel-types": "^6.24.1"
633
+ }
634
+ },
635
+ "babel-plugin-transform-es2015-computed-properties": {
636
+ "version": "6.24.1",
637
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
638
+ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
639
+ "dev": true,
640
+ "requires": {
641
+ "babel-runtime": "^6.22.0",
642
+ "babel-template": "^6.24.1"
643
+ }
644
+ },
645
+ "babel-plugin-transform-es2015-destructuring": {
646
+ "version": "6.23.0",
647
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
648
+ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
649
+ "dev": true,
650
+ "requires": {
651
+ "babel-runtime": "^6.22.0"
652
+ }
653
+ },
654
+ "babel-plugin-transform-es2015-duplicate-keys": {
655
+ "version": "6.24.1",
656
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
657
+ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
658
+ "dev": true,
659
+ "requires": {
660
+ "babel-runtime": "^6.22.0",
661
+ "babel-types": "^6.24.1"
662
+ }
663
+ },
664
+ "babel-plugin-transform-es2015-for-of": {
665
+ "version": "6.23.0",
666
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
667
+ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
668
+ "dev": true,
669
+ "requires": {
670
+ "babel-runtime": "^6.22.0"
671
+ }
672
+ },
673
+ "babel-plugin-transform-es2015-function-name": {
674
+ "version": "6.24.1",
675
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
676
+ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
677
+ "dev": true,
678
+ "requires": {
679
+ "babel-helper-function-name": "^6.24.1",
680
+ "babel-runtime": "^6.22.0",
681
+ "babel-types": "^6.24.1"
682
+ }
683
+ },
684
+ "babel-plugin-transform-es2015-literals": {
685
+ "version": "6.22.0",
686
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
687
+ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
688
+ "dev": true,
689
+ "requires": {
690
+ "babel-runtime": "^6.22.0"
691
+ }
692
+ },
693
+ "babel-plugin-transform-es2015-modules-amd": {
694
+ "version": "6.24.1",
695
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
696
+ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
697
+ "dev": true,
698
+ "requires": {
699
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
700
+ "babel-runtime": "^6.22.0",
701
+ "babel-template": "^6.24.1"
702
+ }
703
+ },
704
+ "babel-plugin-transform-es2015-modules-commonjs": {
705
+ "version": "6.26.2",
706
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
707
+ "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
708
+ "dev": true,
709
+ "requires": {
710
+ "babel-plugin-transform-strict-mode": "^6.24.1",
711
+ "babel-runtime": "^6.26.0",
712
+ "babel-template": "^6.26.0",
713
+ "babel-types": "^6.26.0"
714
+ }
715
+ },
716
+ "babel-plugin-transform-es2015-modules-systemjs": {
717
+ "version": "6.24.1",
718
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
719
+ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
720
+ "dev": true,
721
+ "requires": {
722
+ "babel-helper-hoist-variables": "^6.24.1",
723
+ "babel-runtime": "^6.22.0",
724
+ "babel-template": "^6.24.1"
725
+ }
726
+ },
727
+ "babel-plugin-transform-es2015-modules-umd": {
728
+ "version": "6.24.1",
729
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
730
+ "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
731
+ "dev": true,
732
+ "requires": {
733
+ "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
734
+ "babel-runtime": "^6.22.0",
735
+ "babel-template": "^6.24.1"
736
+ }
737
+ },
738
+ "babel-plugin-transform-es2015-object-super": {
739
+ "version": "6.24.1",
740
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
741
+ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
742
+ "dev": true,
743
+ "requires": {
744
+ "babel-helper-replace-supers": "^6.24.1",
745
+ "babel-runtime": "^6.22.0"
746
+ }
747
+ },
748
+ "babel-plugin-transform-es2015-parameters": {
749
+ "version": "6.24.1",
750
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
751
+ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
752
+ "dev": true,
753
+ "requires": {
754
+ "babel-helper-call-delegate": "^6.24.1",
755
+ "babel-helper-get-function-arity": "^6.24.1",
756
+ "babel-runtime": "^6.22.0",
757
+ "babel-template": "^6.24.1",
758
+ "babel-traverse": "^6.24.1",
759
+ "babel-types": "^6.24.1"
760
+ }
761
+ },
762
+ "babel-plugin-transform-es2015-shorthand-properties": {
763
+ "version": "6.24.1",
764
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
765
+ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
766
+ "dev": true,
767
+ "requires": {
768
+ "babel-runtime": "^6.22.0",
769
+ "babel-types": "^6.24.1"
770
+ }
771
+ },
772
+ "babel-plugin-transform-es2015-spread": {
773
+ "version": "6.22.0",
774
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
775
+ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
776
+ "dev": true,
777
+ "requires": {
778
+ "babel-runtime": "^6.22.0"
779
+ }
780
+ },
781
+ "babel-plugin-transform-es2015-sticky-regex": {
782
+ "version": "6.24.1",
783
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
784
+ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
785
+ "dev": true,
786
+ "requires": {
787
+ "babel-helper-regex": "^6.24.1",
788
+ "babel-runtime": "^6.22.0",
789
+ "babel-types": "^6.24.1"
790
+ }
791
+ },
792
+ "babel-plugin-transform-es2015-template-literals": {
793
+ "version": "6.22.0",
794
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
795
+ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
796
+ "dev": true,
797
+ "requires": {
798
+ "babel-runtime": "^6.22.0"
799
+ }
800
+ },
801
+ "babel-plugin-transform-es2015-typeof-symbol": {
802
+ "version": "6.23.0",
803
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
804
+ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
805
+ "dev": true,
806
+ "requires": {
807
+ "babel-runtime": "^6.22.0"
808
+ }
809
+ },
810
+ "babel-plugin-transform-es2015-unicode-regex": {
811
+ "version": "6.24.1",
812
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
813
+ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
814
+ "dev": true,
815
+ "requires": {
816
+ "babel-helper-regex": "^6.24.1",
817
+ "babel-runtime": "^6.22.0",
818
+ "regexpu-core": "^2.0.0"
819
+ }
820
+ },
821
+ "babel-plugin-transform-exponentiation-operator": {
822
+ "version": "6.24.1",
823
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
824
+ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
825
+ "dev": true,
826
+ "requires": {
827
+ "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1",
828
+ "babel-plugin-syntax-exponentiation-operator": "^6.8.0",
829
+ "babel-runtime": "^6.22.0"
830
+ }
831
+ },
832
+ "babel-plugin-transform-object-rest-spread": {
833
+ "version": "6.26.0",
834
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
835
+ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
836
+ "dev": true,
837
+ "requires": {
838
+ "babel-plugin-syntax-object-rest-spread": "^6.8.0",
839
+ "babel-runtime": "^6.26.0"
840
+ }
841
+ },
842
+ "babel-plugin-transform-react-jsx": {
843
+ "version": "6.24.1",
844
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz",
845
+ "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=",
846
+ "dev": true,
847
+ "requires": {
848
+ "babel-helper-builder-react-jsx": "^6.24.1",
849
+ "babel-plugin-syntax-jsx": "^6.8.0",
850
+ "babel-runtime": "^6.22.0"
851
+ }
852
+ },
853
+ "babel-plugin-transform-regenerator": {
854
+ "version": "6.26.0",
855
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
856
+ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
857
+ "dev": true,
858
+ "requires": {
859
+ "regenerator-transform": "^0.10.0"
860
+ }
861
+ },
862
+ "babel-plugin-transform-strict-mode": {
863
+ "version": "6.24.1",
864
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
865
+ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
866
+ "dev": true,
867
+ "requires": {
868
+ "babel-runtime": "^6.22.0",
869
+ "babel-types": "^6.24.1"
870
+ }
871
+ },
872
+ "babel-preset-env": {
873
+ "version": "1.7.0",
874
+ "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz",
875
+ "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==",
876
+ "dev": true,
877
+ "requires": {
878
+ "babel-plugin-check-es2015-constants": "^6.22.0",
879
+ "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
880
+ "babel-plugin-transform-async-to-generator": "^6.22.0",
881
+ "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
882
+ "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0",
883
+ "babel-plugin-transform-es2015-block-scoping": "^6.23.0",
884
+ "babel-plugin-transform-es2015-classes": "^6.23.0",
885
+ "babel-plugin-transform-es2015-computed-properties": "^6.22.0",
886
+ "babel-plugin-transform-es2015-destructuring": "^6.23.0",
887
+ "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0",
888
+ "babel-plugin-transform-es2015-for-of": "^6.23.0",
889
+ "babel-plugin-transform-es2015-function-name": "^6.22.0",
890
+ "babel-plugin-transform-es2015-literals": "^6.22.0",
891
+ "babel-plugin-transform-es2015-modules-amd": "^6.22.0",
892
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0",
893
+ "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0",
894
+ "babel-plugin-transform-es2015-modules-umd": "^6.23.0",
895
+ "babel-plugin-transform-es2015-object-super": "^6.22.0",
896
+ "babel-plugin-transform-es2015-parameters": "^6.23.0",
897
+ "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0",
898
+ "babel-plugin-transform-es2015-spread": "^6.22.0",
899
+ "babel-plugin-transform-es2015-sticky-regex": "^6.22.0",
900
+ "babel-plugin-transform-es2015-template-literals": "^6.22.0",
901
+ "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0",
902
+ "babel-plugin-transform-es2015-unicode-regex": "^6.22.0",
903
+ "babel-plugin-transform-exponentiation-operator": "^6.22.0",
904
+ "babel-plugin-transform-regenerator": "^6.22.0",
905
+ "browserslist": "^3.2.6",
906
+ "invariant": "^2.2.2",
907
+ "semver": "^5.3.0"
908
+ }
909
+ },
910
+ "babel-register": {
911
+ "version": "6.26.0",
912
+ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
913
+ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
914
+ "dev": true,
915
+ "requires": {
916
+ "babel-core": "^6.26.0",
917
+ "babel-runtime": "^6.26.0",
918
+ "core-js": "^2.5.0",
919
+ "home-or-tmp": "^2.0.0",
920
+ "lodash": "^4.17.4",
921
+ "mkdirp": "^0.5.1",
922
+ "source-map-support": "^0.4.15"
923
+ }
924
+ },
925
+ "babel-runtime": {
926
+ "version": "6.26.0",
927
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
928
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
929
+ "dev": true,
930
+ "requires": {
931
+ "core-js": "^2.4.0",
932
+ "regenerator-runtime": "^0.11.0"
933
+ }
934
+ },
935
+ "babel-template": {
936
+ "version": "6.26.0",
937
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
938
+ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
939
+ "dev": true,
940
+ "requires": {
941
+ "babel-runtime": "^6.26.0",
942
+ "babel-traverse": "^6.26.0",
943
+ "babel-types": "^6.26.0",
944
+ "babylon": "^6.18.0",
945
+ "lodash": "^4.17.4"
946
+ }
947
+ },
948
+ "babel-traverse": {
949
+ "version": "6.26.0",
950
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
951
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
952
+ "dev": true,
953
+ "requires": {
954
+ "babel-code-frame": "^6.26.0",
955
+ "babel-messages": "^6.23.0",
956
+ "babel-runtime": "^6.26.0",
957
+ "babel-types": "^6.26.0",
958
+ "babylon": "^6.18.0",
959
+ "debug": "^2.6.8",
960
+ "globals": "^9.18.0",
961
+ "invariant": "^2.2.2",
962
+ "lodash": "^4.17.4"
963
+ }
964
+ },
965
+ "babel-types": {
966
+ "version": "6.26.0",
967
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
968
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
969
+ "dev": true,
970
+ "requires": {
971
+ "babel-runtime": "^6.26.0",
972
+ "esutils": "^2.0.2",
973
+ "lodash": "^4.17.4",
974
+ "to-fast-properties": "^1.0.3"
975
+ }
976
+ },
977
+ "babylon": {
978
+ "version": "6.18.0",
979
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
980
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
981
+ "dev": true
982
+ },
983
+ "balanced-match": {
984
+ "version": "1.0.0",
985
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
986
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
987
+ "dev": true
988
+ },
989
+ "base": {
990
+ "version": "0.11.2",
991
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
992
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
993
+ "dev": true,
994
+ "requires": {
995
+ "cache-base": "^1.0.1",
996
+ "class-utils": "^0.3.5",
997
+ "component-emitter": "^1.2.1",
998
+ "define-property": "^1.0.0",
999
+ "isobject": "^3.0.1",
1000
+ "mixin-deep": "^1.2.0",
1001
+ "pascalcase": "^0.1.1"
1002
+ },
1003
+ "dependencies": {
1004
+ "define-property": {
1005
+ "version": "1.0.0",
1006
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
1007
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
1008
+ "dev": true,
1009
+ "requires": {
1010
+ "is-descriptor": "^1.0.0"
1011
+ }
1012
+ },
1013
+ "is-accessor-descriptor": {
1014
+ "version": "1.0.0",
1015
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1016
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1017
+ "dev": true,
1018
+ "requires": {
1019
+ "kind-of": "^6.0.0"
1020
+ }
1021
+ },
1022
+ "is-data-descriptor": {
1023
+ "version": "1.0.0",
1024
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1025
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1026
+ "dev": true,
1027
+ "requires": {
1028
+ "kind-of": "^6.0.0"
1029
+ }
1030
+ },
1031
+ "is-descriptor": {
1032
+ "version": "1.0.2",
1033
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1034
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1035
+ "dev": true,
1036
+ "requires": {
1037
+ "is-accessor-descriptor": "^1.0.0",
1038
+ "is-data-descriptor": "^1.0.0",
1039
+ "kind-of": "^6.0.2"
1040
+ }
1041
+ }
1042
+ }
1043
+ },
1044
+ "base64-js": {
1045
+ "version": "1.3.0",
1046
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
1047
+ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
1048
+ "dev": true
1049
+ },
1050
+ "bcrypt-pbkdf": {
1051
+ "version": "1.0.2",
1052
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
1053
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
1054
+ "dev": true,
1055
+ "requires": {
1056
+ "tweetnacl": "^0.14.3"
1057
+ }
1058
+ },
1059
+ "big.js": {
1060
+ "version": "3.2.0",
1061
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
1062
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
1063
+ "dev": true
1064
+ },
1065
+ "binary-extensions": {
1066
+ "version": "1.12.0",
1067
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
1068
+ "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
1069
+ "dev": true
1070
+ },
1071
+ "block-stream": {
1072
+ "version": "0.0.9",
1073
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
1074
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
1075
+ "dev": true,
1076
+ "requires": {
1077
+ "inherits": "~2.0.0"
1078
+ }
1079
+ },
1080
+ "bn.js": {
1081
+ "version": "4.11.8",
1082
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
1083
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
1084
+ "dev": true
1085
+ },
1086
+ "brace-expansion": {
1087
+ "version": "1.1.11",
1088
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1089
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1090
+ "dev": true,
1091
+ "requires": {
1092
+ "balanced-match": "^1.0.0",
1093
+ "concat-map": "0.0.1"
1094
+ }
1095
+ },
1096
+ "braces": {
1097
+ "version": "2.3.2",
1098
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
1099
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
1100
+ "dev": true,
1101
+ "requires": {
1102
+ "arr-flatten": "^1.1.0",
1103
+ "array-unique": "^0.3.2",
1104
+ "extend-shallow": "^2.0.1",
1105
+ "fill-range": "^4.0.0",
1106
+ "isobject": "^3.0.1",
1107
+ "repeat-element": "^1.1.2",
1108
+ "snapdragon": "^0.8.1",
1109
+ "snapdragon-node": "^2.0.1",
1110
+ "split-string": "^3.0.2",
1111
+ "to-regex": "^3.0.1"
1112
+ },
1113
+ "dependencies": {
1114
+ "extend-shallow": {
1115
+ "version": "2.0.1",
1116
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1117
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1118
+ "dev": true,
1119
+ "requires": {
1120
+ "is-extendable": "^0.1.0"
1121
+ }
1122
+ }
1123
+ }
1124
+ },
1125
+ "brorand": {
1126
+ "version": "1.1.0",
1127
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
1128
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
1129
+ "dev": true
1130
+ },
1131
+ "browserify-aes": {
1132
+ "version": "1.2.0",
1133
+ "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
1134
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
1135
+ "dev": true,
1136
+ "requires": {
1137
+ "buffer-xor": "^1.0.3",
1138
+ "cipher-base": "^1.0.0",
1139
+ "create-hash": "^1.1.0",
1140
+ "evp_bytestokey": "^1.0.3",
1141
+ "inherits": "^2.0.1",
1142
+ "safe-buffer": "^5.0.1"
1143
+ }
1144
+ },
1145
+ "browserify-cipher": {
1146
+ "version": "1.0.1",
1147
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
1148
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
1149
+ "dev": true,
1150
+ "requires": {
1151
+ "browserify-aes": "^1.0.4",
1152
+ "browserify-des": "^1.0.0",
1153
+ "evp_bytestokey": "^1.0.0"
1154
+ }
1155
+ },
1156
+ "browserify-des": {
1157
+ "version": "1.0.2",
1158
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
1159
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
1160
+ "dev": true,
1161
+ "requires": {
1162
+ "cipher-base": "^1.0.1",
1163
+ "des.js": "^1.0.0",
1164
+ "inherits": "^2.0.1",
1165
+ "safe-buffer": "^5.1.2"
1166
+ }
1167
+ },
1168
+ "browserify-rsa": {
1169
+ "version": "4.0.1",
1170
+ "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
1171
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
1172
+ "dev": true,
1173
+ "requires": {
1174
+ "bn.js": "^4.1.0",
1175
+ "randombytes": "^2.0.1"
1176
+ }
1177
+ },
1178
+ "browserify-sign": {
1179
+ "version": "4.0.4",
1180
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
1181
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
1182
+ "dev": true,
1183
+ "requires": {
1184
+ "bn.js": "^4.1.1",
1185
+ "browserify-rsa": "^4.0.0",
1186
+ "create-hash": "^1.1.0",
1187
+ "create-hmac": "^1.1.2",
1188
+ "elliptic": "^6.0.0",
1189
+ "inherits": "^2.0.1",
1190
+ "parse-asn1": "^5.0.0"
1191
+ }
1192
+ },
1193
+ "browserify-zlib": {
1194
+ "version": "0.2.0",
1195
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
1196
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
1197
+ "dev": true,
1198
+ "requires": {
1199
+ "pako": "~1.0.5"
1200
+ }
1201
+ },
1202
+ "browserslist": {
1203
+ "version": "3.2.8",
1204
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
1205
+ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
1206
+ "dev": true,
1207
+ "requires": {
1208
+ "caniuse-lite": "^1.0.30000844",
1209
+ "electron-to-chromium": "^1.3.47"
1210
+ }
1211
+ },
1212
+ "buffer": {
1213
+ "version": "4.9.1",
1214
+ "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
1215
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
1216
+ "dev": true,
1217
+ "requires": {
1218
+ "base64-js": "^1.0.2",
1219
+ "ieee754": "^1.1.4",
1220
+ "isarray": "^1.0.0"
1221
+ }
1222
+ },
1223
+ "buffer-from": {
1224
+ "version": "1.1.1",
1225
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
1226
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
1227
+ "dev": true
1228
+ },
1229
+ "buffer-xor": {
1230
+ "version": "1.0.3",
1231
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
1232
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
1233
+ "dev": true
1234
+ },
1235
+ "builtin-modules": {
1236
+ "version": "1.1.1",
1237
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
1238
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
1239
+ "dev": true
1240
+ },
1241
+ "builtin-status-codes": {
1242
+ "version": "3.0.0",
1243
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
1244
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
1245
+ "dev": true
1246
+ },
1247
+ "cache-base": {
1248
+ "version": "1.0.1",
1249
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
1250
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
1251
+ "dev": true,
1252
+ "requires": {
1253
+ "collection-visit": "^1.0.0",
1254
+ "component-emitter": "^1.2.1",
1255
+ "get-value": "^2.0.6",
1256
+ "has-value": "^1.0.0",
1257
+ "isobject": "^3.0.1",
1258
+ "set-value": "^2.0.0",
1259
+ "to-object-path": "^0.3.0",
1260
+ "union-value": "^1.0.0",
1261
+ "unset-value": "^1.0.0"
1262
+ }
1263
+ },
1264
+ "caller-path": {
1265
+ "version": "0.1.0",
1266
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
1267
+ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
1268
+ "dev": true,
1269
+ "requires": {
1270
+ "callsites": "^0.2.0"
1271
+ }
1272
+ },
1273
+ "callsites": {
1274
+ "version": "0.2.0",
1275
+ "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
1276
+ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
1277
+ "dev": true
1278
+ },
1279
+ "camelcase": {
1280
+ "version": "2.1.1",
1281
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
1282
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
1283
+ "dev": true
1284
+ },
1285
+ "camelcase-keys": {
1286
+ "version": "2.1.0",
1287
+ "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
1288
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
1289
+ "dev": true,
1290
+ "requires": {
1291
+ "camelcase": "^2.0.0",
1292
+ "map-obj": "^1.0.0"
1293
+ }
1294
+ },
1295
+ "caniuse-api": {
1296
+ "version": "1.6.1",
1297
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz",
1298
+ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
1299
+ "dev": true,
1300
+ "requires": {
1301
+ "browserslist": "^1.3.6",
1302
+ "caniuse-db": "^1.0.30000529",
1303
+ "lodash.memoize": "^4.1.2",
1304
+ "lodash.uniq": "^4.5.0"
1305
+ },
1306
+ "dependencies": {
1307
+ "browserslist": {
1308
+ "version": "1.7.7",
1309
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
1310
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
1311
+ "dev": true,
1312
+ "requires": {
1313
+ "caniuse-db": "^1.0.30000639",
1314
+ "electron-to-chromium": "^1.2.7"
1315
+ }
1316
+ }
1317
+ }
1318
+ },
1319
+ "caniuse-db": {
1320
+ "version": "1.0.30000912",
1321
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000912.tgz",
1322
+ "integrity": "sha512-uiepPdHcJ06Na9t15L5l+pp3NWQU4IETbmleghD6tqCqbIYqhHSu7nVfbK2gqPjfy+9jl/wHF1UQlyTszh9tJQ==",
1323
+ "dev": true
1324
+ },
1325
+ "caniuse-lite": {
1326
+ "version": "1.0.30000912",
1327
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000912.tgz",
1328
+ "integrity": "sha512-M3zAtV36U+xw5mMROlTXpAHClmPAor6GPKAMD5Yi7glCB5sbMPFtnQ3rGpk4XqPdUrrTIaVYSJZxREZWNy8QJg==",
1329
+ "dev": true
1330
+ },
1331
+ "caseless": {
1332
+ "version": "0.12.0",
1333
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
1334
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
1335
+ "dev": true
1336
+ },
1337
+ "center-align": {
1338
+ "version": "0.1.3",
1339
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
1340
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
1341
+ "dev": true,
1342
+ "requires": {
1343
+ "align-text": "^0.1.3",
1344
+ "lazy-cache": "^1.0.3"
1345
+ }
1346
+ },
1347
+ "chalk": {
1348
+ "version": "1.1.3",
1349
+ "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
1350
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
1351
+ "dev": true,
1352
+ "requires": {
1353
+ "ansi-styles": "^2.2.1",
1354
+ "escape-string-regexp": "^1.0.2",
1355
+ "has-ansi": "^2.0.0",
1356
+ "strip-ansi": "^3.0.0",
1357
+ "supports-color": "^2.0.0"
1358
+ }
1359
+ },
1360
+ "chokidar": {
1361
+ "version": "2.0.4",
1362
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
1363
+ "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
1364
+ "dev": true,
1365
+ "requires": {
1366
+ "anymatch": "^2.0.0",
1367
+ "async-each": "^1.0.0",
1368
+ "braces": "^2.3.0",
1369
+ "fsevents": "^1.2.2",
1370
+ "glob-parent": "^3.1.0",
1371
+ "inherits": "^2.0.1",
1372
+ "is-binary-path": "^1.0.0",
1373
+ "is-glob": "^4.0.0",
1374
+ "lodash.debounce": "^4.0.8",
1375
+ "normalize-path": "^2.1.1",
1376
+ "path-is-absolute": "^1.0.0",
1377
+ "readdirp": "^2.0.0",
1378
+ "upath": "^1.0.5"
1379
+ }
1380
+ },
1381
+ "cipher-base": {
1382
+ "version": "1.0.4",
1383
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
1384
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
1385
+ "dev": true,
1386
+ "requires": {
1387
+ "inherits": "^2.0.1",
1388
+ "safe-buffer": "^5.0.1"
1389
+ }
1390
+ },
1391
+ "circular-json": {
1392
+ "version": "0.3.3",
1393
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
1394
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
1395
+ "dev": true
1396
+ },
1397
+ "clap": {
1398
+ "version": "1.2.3",
1399
+ "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
1400
+ "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
1401
+ "dev": true,
1402
+ "requires": {
1403
+ "chalk": "^1.1.3"
1404
+ }
1405
+ },
1406
+ "class-utils": {
1407
+ "version": "0.3.6",
1408
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
1409
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
1410
+ "dev": true,
1411
+ "requires": {
1412
+ "arr-union": "^3.1.0",
1413
+ "define-property": "^0.2.5",
1414
+ "isobject": "^3.0.0",
1415
+ "static-extend": "^0.1.1"
1416
+ },
1417
+ "dependencies": {
1418
+ "define-property": {
1419
+ "version": "0.2.5",
1420
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1421
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1422
+ "dev": true,
1423
+ "requires": {
1424
+ "is-descriptor": "^0.1.0"
1425
+ }
1426
+ }
1427
+ }
1428
+ },
1429
+ "classnames": {
1430
+ "version": "2.2.6",
1431
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
1432
+ "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==",
1433
+ "dev": true
1434
+ },
1435
+ "cli-cursor": {
1436
+ "version": "1.0.2",
1437
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
1438
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
1439
+ "dev": true,
1440
+ "requires": {
1441
+ "restore-cursor": "^1.0.1"
1442
+ }
1443
+ },
1444
+ "cli-width": {
1445
+ "version": "2.2.0",
1446
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
1447
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
1448
+ "dev": true
1449
+ },
1450
+ "cliui": {
1451
+ "version": "3.2.0",
1452
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
1453
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
1454
+ "dev": true,
1455
+ "requires": {
1456
+ "string-width": "^1.0.1",
1457
+ "strip-ansi": "^3.0.1",
1458
+ "wrap-ansi": "^2.0.0"
1459
+ }
1460
+ },
1461
+ "clone": {
1462
+ "version": "1.0.4",
1463
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
1464
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
1465
+ "dev": true
1466
+ },
1467
+ "clone-deep": {
1468
+ "version": "2.0.2",
1469
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz",
1470
+ "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==",
1471
+ "dev": true,
1472
+ "requires": {
1473
+ "for-own": "^1.0.0",
1474
+ "is-plain-object": "^2.0.4",
1475
+ "kind-of": "^6.0.0",
1476
+ "shallow-clone": "^1.0.0"
1477
+ }
1478
+ },
1479
+ "co": {
1480
+ "version": "4.6.0",
1481
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
1482
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
1483
+ "dev": true
1484
+ },
1485
+ "coa": {
1486
+ "version": "1.0.4",
1487
+ "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
1488
+ "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
1489
+ "dev": true,
1490
+ "requires": {
1491
+ "q": "^1.1.2"
1492
+ }
1493
+ },
1494
+ "code-point-at": {
1495
+ "version": "1.1.0",
1496
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
1497
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
1498
+ "dev": true
1499
+ },
1500
+ "collection-visit": {
1501
+ "version": "1.0.0",
1502
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
1503
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
1504
+ "dev": true,
1505
+ "requires": {
1506
+ "map-visit": "^1.0.0",
1507
+ "object-visit": "^1.0.0"
1508
+ }
1509
+ },
1510
+ "color": {
1511
+ "version": "0.11.4",
1512
+ "resolved": "http://registry.npmjs.org/color/-/color-0.11.4.tgz",
1513
+ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
1514
+ "dev": true,
1515
+ "requires": {
1516
+ "clone": "^1.0.2",
1517
+ "color-convert": "^1.3.0",
1518
+ "color-string": "^0.3.0"
1519
+ }
1520
+ },
1521
+ "color-convert": {
1522
+ "version": "1.9.3",
1523
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1524
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1525
+ "dev": true,
1526
+ "requires": {
1527
+ "color-name": "1.1.3"
1528
+ }
1529
+ },
1530
+ "color-name": {
1531
+ "version": "1.1.3",
1532
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1533
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
1534
+ "dev": true
1535
+ },
1536
+ "color-string": {
1537
+ "version": "0.3.0",
1538
+ "resolved": "http://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
1539
+ "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
1540
+ "dev": true,
1541
+ "requires": {
1542
+ "color-name": "^1.0.0"
1543
+ }
1544
+ },
1545
+ "colormin": {
1546
+ "version": "1.1.2",
1547
+ "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz",
1548
+ "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
1549
+ "dev": true,
1550
+ "requires": {
1551
+ "color": "^0.11.0",
1552
+ "css-color-names": "0.0.4",
1553
+ "has": "^1.0.1"
1554
+ }
1555
+ },
1556
+ "colors": {
1557
+ "version": "1.1.2",
1558
+ "resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
1559
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
1560
+ "dev": true
1561
+ },
1562
+ "combined-stream": {
1563
+ "version": "1.0.7",
1564
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
1565
+ "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
1566
+ "dev": true,
1567
+ "requires": {
1568
+ "delayed-stream": "~1.0.0"
1569
+ }
1570
+ },
1571
+ "commondir": {
1572
+ "version": "1.0.1",
1573
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
1574
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
1575
+ "dev": true
1576
+ },
1577
+ "component-emitter": {
1578
+ "version": "1.2.1",
1579
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
1580
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
1581
+ "dev": true
1582
+ },
1583
+ "concat-map": {
1584
+ "version": "0.0.1",
1585
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1586
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
1587
+ "dev": true
1588
+ },
1589
+ "concat-stream": {
1590
+ "version": "1.6.2",
1591
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
1592
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
1593
+ "dev": true,
1594
+ "requires": {
1595
+ "buffer-from": "^1.0.0",
1596
+ "inherits": "^2.0.3",
1597
+ "readable-stream": "^2.2.2",
1598
+ "typedarray": "^0.0.6"
1599
+ }
1600
+ },
1601
+ "console-browserify": {
1602
+ "version": "1.1.0",
1603
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
1604
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
1605
+ "dev": true,
1606
+ "requires": {
1607
+ "date-now": "^0.1.4"
1608
+ }
1609
+ },
1610
+ "console-control-strings": {
1611
+ "version": "1.1.0",
1612
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
1613
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
1614
+ "dev": true
1615
+ },
1616
+ "constants-browserify": {
1617
+ "version": "1.0.0",
1618
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
1619
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
1620
+ "dev": true
1621
+ },
1622
+ "convert-source-map": {
1623
+ "version": "1.6.0",
1624
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
1625
+ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
1626
+ "dev": true,
1627
+ "requires": {
1628
+ "safe-buffer": "~5.1.1"
1629
+ }
1630
+ },
1631
+ "copy-descriptor": {
1632
+ "version": "0.1.1",
1633
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
1634
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
1635
+ "dev": true
1636
+ },
1637
+ "core-js": {
1638
+ "version": "2.5.7",
1639
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
1640
+ "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
1641
+ "dev": true
1642
+ },
1643
+ "core-util-is": {
1644
+ "version": "1.0.2",
1645
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
1646
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
1647
+ "dev": true
1648
+ },
1649
+ "create-ecdh": {
1650
+ "version": "4.0.3",
1651
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
1652
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
1653
+ "dev": true,
1654
+ "requires": {
1655
+ "bn.js": "^4.1.0",
1656
+ "elliptic": "^6.0.0"
1657
+ }
1658
+ },
1659
+ "create-hash": {
1660
+ "version": "1.2.0",
1661
+ "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
1662
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
1663
+ "dev": true,
1664
+ "requires": {
1665
+ "cipher-base": "^1.0.1",
1666
+ "inherits": "^2.0.1",
1667
+ "md5.js": "^1.3.4",
1668
+ "ripemd160": "^2.0.1",
1669
+ "sha.js": "^2.4.0"
1670
+ }
1671
+ },
1672
+ "create-hmac": {
1673
+ "version": "1.1.7",
1674
+ "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
1675
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
1676
+ "dev": true,
1677
+ "requires": {
1678
+ "cipher-base": "^1.0.3",
1679
+ "create-hash": "^1.1.0",
1680
+ "inherits": "^2.0.1",
1681
+ "ripemd160": "^2.0.0",
1682
+ "safe-buffer": "^5.0.1",
1683
+ "sha.js": "^2.4.8"
1684
+ }
1685
+ },
1686
+ "cross-env": {
1687
+ "version": "5.2.0",
1688
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz",
1689
+ "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==",
1690
+ "dev": true,
1691
+ "requires": {
1692
+ "cross-spawn": "^6.0.5",
1693
+ "is-windows": "^1.0.0"
1694
+ }
1695
+ },
1696
+ "cross-spawn": {
1697
+ "version": "6.0.5",
1698
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
1699
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
1700
+ "dev": true,
1701
+ "requires": {
1702
+ "nice-try": "^1.0.4",
1703
+ "path-key": "^2.0.1",
1704
+ "semver": "^5.5.0",
1705
+ "shebang-command": "^1.2.0",
1706
+ "which": "^1.2.9"
1707
+ }
1708
+ },
1709
+ "crypto-browserify": {
1710
+ "version": "3.12.0",
1711
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
1712
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
1713
+ "dev": true,
1714
+ "requires": {
1715
+ "browserify-cipher": "^1.0.0",
1716
+ "browserify-sign": "^4.0.0",
1717
+ "create-ecdh": "^4.0.0",
1718
+ "create-hash": "^1.1.0",
1719
+ "create-hmac": "^1.1.0",
1720
+ "diffie-hellman": "^5.0.0",
1721
+ "inherits": "^2.0.1",
1722
+ "pbkdf2": "^3.0.3",
1723
+ "public-encrypt": "^4.0.0",
1724
+ "randombytes": "^2.0.0",
1725
+ "randomfill": "^1.0.3"
1726
+ }
1727
+ },
1728
+ "css-color-names": {
1729
+ "version": "0.0.4",
1730
+ "resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
1731
+ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
1732
+ "dev": true
1733
+ },
1734
+ "css-loader": {
1735
+ "version": "0.28.11",
1736
+ "resolved": "http://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz",
1737
+ "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==",
1738
+ "dev": true,
1739
+ "requires": {
1740
+ "babel-code-frame": "^6.26.0",
1741
+ "css-selector-tokenizer": "^0.7.0",
1742
+ "cssnano": "^3.10.0",
1743
+ "icss-utils": "^2.1.0",
1744
+ "loader-utils": "^1.0.2",
1745
+ "lodash.camelcase": "^4.3.0",
1746
+ "object-assign": "^4.1.1",
1747
+ "postcss": "^5.0.6",
1748
+ "postcss-modules-extract-imports": "^1.2.0",
1749
+ "postcss-modules-local-by-default": "^1.2.0",
1750
+ "postcss-modules-scope": "^1.1.0",
1751
+ "postcss-modules-values": "^1.3.0",
1752
+ "postcss-value-parser": "^3.3.0",
1753
+ "source-list-map": "^2.0.0"
1754
+ }
1755
+ },
1756
+ "css-selector-tokenizer": {
1757
+ "version": "0.7.1",
1758
+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz",
1759
+ "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==",
1760
+ "dev": true,
1761
+ "requires": {
1762
+ "cssesc": "^0.1.0",
1763
+ "fastparse": "^1.1.1",
1764
+ "regexpu-core": "^1.0.0"
1765
+ },
1766
+ "dependencies": {
1767
+ "regexpu-core": {
1768
+ "version": "1.0.0",
1769
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
1770
+ "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
1771
+ "dev": true,
1772
+ "requires": {
1773
+ "regenerate": "^1.2.1",
1774
+ "regjsgen": "^0.2.0",
1775
+ "regjsparser": "^0.1.4"
1776
+ }
1777
+ }
1778
+ }
1779
+ },
1780
+ "cssesc": {
1781
+ "version": "0.1.0",
1782
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
1783
+ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
1784
+ "dev": true
1785
+ },
1786
+ "cssnano": {
1787
+ "version": "3.10.0",
1788
+ "resolved": "http://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
1789
+ "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
1790
+ "dev": true,
1791
+ "requires": {
1792
+ "autoprefixer": "^6.3.1",
1793
+ "decamelize": "^1.1.2",
1794
+ "defined": "^1.0.0",
1795
+ "has": "^1.0.1",
1796
+ "object-assign": "^4.0.1",
1797
+ "postcss": "^5.0.14",
1798
+ "postcss-calc": "^5.2.0",
1799
+ "postcss-colormin": "^2.1.8",
1800
+ "postcss-convert-values": "^2.3.4",
1801
+ "postcss-discard-comments": "^2.0.4",
1802
+ "postcss-discard-duplicates": "^2.0.1",
1803
+ "postcss-discard-empty": "^2.0.1",
1804
+ "postcss-discard-overridden": "^0.1.1",
1805
+ "postcss-discard-unused": "^2.2.1",
1806
+ "postcss-filter-plugins": "^2.0.0",
1807
+ "postcss-merge-idents": "^2.1.5",
1808
+ "postcss-merge-longhand": "^2.0.1",
1809
+ "postcss-merge-rules": "^2.0.3",
1810
+ "postcss-minify-font-values": "^1.0.2",
1811
+ "postcss-minify-gradients": "^1.0.1",
1812
+ "postcss-minify-params": "^1.0.4",
1813
+ "postcss-minify-selectors": "^2.0.4",
1814
+ "postcss-normalize-charset": "^1.1.0",
1815
+ "postcss-normalize-url": "^3.0.7",
1816
+ "postcss-ordered-values": "^2.1.0",
1817
+ "postcss-reduce-idents": "^2.2.2",
1818
+ "postcss-reduce-initial": "^1.0.0",
1819
+ "postcss-reduce-transforms": "^1.0.3",
1820
+ "postcss-svgo": "^2.1.1",
1821
+ "postcss-unique-selectors": "^2.0.2",
1822
+ "postcss-value-parser": "^3.2.3",
1823
+ "postcss-zindex": "^2.0.1"
1824
+ }
1825
+ },
1826
+ "csso": {
1827
+ "version": "2.3.2",
1828
+ "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz",
1829
+ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
1830
+ "dev": true,
1831
+ "requires": {
1832
+ "clap": "^1.0.9",
1833
+ "source-map": "^0.5.3"
1834
+ }
1835
+ },
1836
+ "currently-unhandled": {
1837
+ "version": "0.4.1",
1838
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
1839
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
1840
+ "dev": true,
1841
+ "requires": {
1842
+ "array-find-index": "^1.0.1"
1843
+ }
1844
+ },
1845
+ "d": {
1846
+ "version": "1.0.0",
1847
+ "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz",
1848
+ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
1849
+ "dev": true,
1850
+ "requires": {
1851
+ "es5-ext": "^0.10.9"
1852
+ }
1853
+ },
1854
+ "dashdash": {
1855
+ "version": "1.14.1",
1856
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
1857
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
1858
+ "dev": true,
1859
+ "requires": {
1860
+ "assert-plus": "^1.0.0"
1861
+ }
1862
+ },
1863
+ "date-now": {
1864
+ "version": "0.1.4",
1865
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
1866
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
1867
+ "dev": true
1868
+ },
1869
+ "debug": {
1870
+ "version": "2.6.9",
1871
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1872
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1873
+ "dev": true,
1874
+ "requires": {
1875
+ "ms": "2.0.0"
1876
+ }
1877
+ },
1878
+ "decamelize": {
1879
+ "version": "1.2.0",
1880
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
1881
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
1882
+ "dev": true
1883
+ },
1884
+ "decode-uri-component": {
1885
+ "version": "0.2.0",
1886
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
1887
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
1888
+ "dev": true
1889
+ },
1890
+ "deep-is": {
1891
+ "version": "0.1.3",
1892
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
1893
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
1894
+ "dev": true
1895
+ },
1896
+ "define-property": {
1897
+ "version": "2.0.2",
1898
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
1899
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
1900
+ "dev": true,
1901
+ "requires": {
1902
+ "is-descriptor": "^1.0.2",
1903
+ "isobject": "^3.0.1"
1904
+ },
1905
+ "dependencies": {
1906
+ "is-accessor-descriptor": {
1907
+ "version": "1.0.0",
1908
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1909
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1910
+ "dev": true,
1911
+ "requires": {
1912
+ "kind-of": "^6.0.0"
1913
+ }
1914
+ },
1915
+ "is-data-descriptor": {
1916
+ "version": "1.0.0",
1917
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1918
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1919
+ "dev": true,
1920
+ "requires": {
1921
+ "kind-of": "^6.0.0"
1922
+ }
1923
+ },
1924
+ "is-descriptor": {
1925
+ "version": "1.0.2",
1926
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1927
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1928
+ "dev": true,
1929
+ "requires": {
1930
+ "is-accessor-descriptor": "^1.0.0",
1931
+ "is-data-descriptor": "^1.0.0",
1932
+ "kind-of": "^6.0.2"
1933
+ }
1934
+ }
1935
+ }
1936
+ },
1937
+ "defined": {
1938
+ "version": "1.0.0",
1939
+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
1940
+ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
1941
+ "dev": true
1942
+ },
1943
+ "delayed-stream": {
1944
+ "version": "1.0.0",
1945
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
1946
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
1947
+ "dev": true
1948
+ },
1949
+ "delegates": {
1950
+ "version": "1.0.0",
1951
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
1952
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
1953
+ "dev": true
1954
+ },
1955
+ "des.js": {
1956
+ "version": "1.0.0",
1957
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
1958
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
1959
+ "dev": true,
1960
+ "requires": {
1961
+ "inherits": "^2.0.1",
1962
+ "minimalistic-assert": "^1.0.0"
1963
+ }
1964
+ },
1965
+ "detect-indent": {
1966
+ "version": "4.0.0",
1967
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
1968
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
1969
+ "dev": true,
1970
+ "requires": {
1971
+ "repeating": "^2.0.0"
1972
+ }
1973
+ },
1974
+ "diffie-hellman": {
1975
+ "version": "5.0.3",
1976
+ "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
1977
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
1978
+ "dev": true,
1979
+ "requires": {
1980
+ "bn.js": "^4.1.0",
1981
+ "miller-rabin": "^4.0.0",
1982
+ "randombytes": "^2.0.0"
1983
+ }
1984
+ },
1985
+ "doctrine": {
1986
+ "version": "2.1.0",
1987
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
1988
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
1989
+ "dev": true,
1990
+ "requires": {
1991
+ "esutils": "^2.0.2"
1992
+ }
1993
+ },
1994
+ "dom-scroll-into-view": {
1995
+ "version": "1.2.1",
1996
+ "resolved": "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz",
1997
+ "integrity": "sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4="
1998
+ },
1999
+ "domain-browser": {
2000
+ "version": "1.2.0",
2001
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
2002
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
2003
+ "dev": true
2004
+ },
2005
+ "ecc-jsbn": {
2006
+ "version": "0.1.2",
2007
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
2008
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
2009
+ "dev": true,
2010
+ "requires": {
2011
+ "jsbn": "~0.1.0",
2012
+ "safer-buffer": "^2.1.0"
2013
+ }
2014
+ },
2015
+ "electron-to-chromium": {
2016
+ "version": "1.3.85",
2017
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.85.tgz",
2018
+ "integrity": "sha512-kWSDVVF9t3mft2OHVZy4K85X2beP6c6mFm3teFS/mLSDJpQwuFIWHrULCX+w6H1E55ZYmFRlT+ATAFRwhrYzsw==",
2019
+ "dev": true
2020
+ },
2021
+ "elliptic": {
2022
+ "version": "6.4.1",
2023
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
2024
+ "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
2025
+ "dev": true,
2026
+ "requires": {
2027
+ "bn.js": "^4.4.0",
2028
+ "brorand": "^1.0.1",
2029
+ "hash.js": "^1.0.0",
2030
+ "hmac-drbg": "^1.0.0",
2031
+ "inherits": "^2.0.1",
2032
+ "minimalistic-assert": "^1.0.0",
2033
+ "minimalistic-crypto-utils": "^1.0.0"
2034
+ }
2035
+ },
2036
+ "emojis-list": {
2037
+ "version": "2.1.0",
2038
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
2039
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
2040
+ "dev": true
2041
+ },
2042
+ "enhanced-resolve": {
2043
+ "version": "3.4.1",
2044
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
2045
+ "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=",
2046
+ "dev": true,
2047
+ "requires": {
2048
+ "graceful-fs": "^4.1.2",
2049
+ "memory-fs": "^0.4.0",
2050
+ "object-assign": "^4.0.1",
2051
+ "tapable": "^0.2.7"
2052
+ }
2053
+ },
2054
+ "errno": {
2055
+ "version": "0.1.7",
2056
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
2057
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
2058
+ "dev": true,
2059
+ "requires": {
2060
+ "prr": "~1.0.1"
2061
+ }
2062
+ },
2063
+ "error-ex": {
2064
+ "version": "1.3.2",
2065
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
2066
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
2067
+ "dev": true,
2068
+ "requires": {
2069
+ "is-arrayish": "^0.2.1"
2070
+ }
2071
+ },
2072
+ "es5-ext": {
2073
+ "version": "0.10.46",
2074
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz",
2075
+ "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==",
2076
+ "dev": true,
2077
+ "requires": {
2078
+ "es6-iterator": "~2.0.3",
2079
+ "es6-symbol": "~3.1.1",
2080
+ "next-tick": "1"
2081
+ }
2082
+ },
2083
+ "es6-iterator": {
2084
+ "version": "2.0.3",
2085
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
2086
+ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
2087
+ "dev": true,
2088
+ "requires": {
2089
+ "d": "1",
2090
+ "es5-ext": "^0.10.35",
2091
+ "es6-symbol": "^3.1.1"
2092
+ }
2093
+ },
2094
+ "es6-map": {
2095
+ "version": "0.1.5",
2096
+ "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
2097
+ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
2098
+ "dev": true,
2099
+ "requires": {
2100
+ "d": "1",
2101
+ "es5-ext": "~0.10.14",
2102
+ "es6-iterator": "~2.0.1",
2103
+ "es6-set": "~0.1.5",
2104
+ "es6-symbol": "~3.1.1",
2105
+ "event-emitter": "~0.3.5"
2106
+ }
2107
+ },
2108
+ "es6-set": {
2109
+ "version": "0.1.5",
2110
+ "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
2111
+ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
2112
+ "dev": true,
2113
+ "requires": {
2114
+ "d": "1",
2115
+ "es5-ext": "~0.10.14",
2116
+ "es6-iterator": "~2.0.1",
2117
+ "es6-symbol": "3.1.1",
2118
+ "event-emitter": "~0.3.5"
2119
+ }
2120
+ },
2121
+ "es6-symbol": {
2122
+ "version": "3.1.1",
2123
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
2124
+ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
2125
+ "dev": true,
2126
+ "requires": {
2127
+ "d": "1",
2128
+ "es5-ext": "~0.10.14"
2129
+ }
2130
+ },
2131
+ "es6-weak-map": {
2132
+ "version": "2.0.2",
2133
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
2134
+ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
2135
+ "dev": true,
2136
+ "requires": {
2137
+ "d": "1",
2138
+ "es5-ext": "^0.10.14",
2139
+ "es6-iterator": "^2.0.1",
2140
+ "es6-symbol": "^3.1.1"
2141
+ }
2142
+ },
2143
+ "escape-string-regexp": {
2144
+ "version": "1.0.5",
2145
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2146
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
2147
+ "dev": true
2148
+ },
2149
+ "escope": {
2150
+ "version": "3.6.0",
2151
+ "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
2152
+ "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
2153
+ "dev": true,
2154
+ "requires": {
2155
+ "es6-map": "^0.1.3",
2156
+ "es6-weak-map": "^2.0.1",
2157
+ "esrecurse": "^4.1.0",
2158
+ "estraverse": "^4.1.1"
2159
+ }
2160
+ },
2161
+ "eslint": {
2162
+ "version": "3.19.0",
2163
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz",
2164
+ "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=",
2165
+ "dev": true,
2166
+ "requires": {
2167
+ "babel-code-frame": "^6.16.0",
2168
+ "chalk": "^1.1.3",
2169
+ "concat-stream": "^1.5.2",
2170
+ "debug": "^2.1.1",
2171
+ "doctrine": "^2.0.0",
2172
+ "escope": "^3.6.0",
2173
+ "espree": "^3.4.0",
2174
+ "esquery": "^1.0.0",
2175
+ "estraverse": "^4.2.0",
2176
+ "esutils": "^2.0.2",
2177
+ "file-entry-cache": "^2.0.0",
2178
+ "glob": "^7.0.3",
2179
+ "globals": "^9.14.0",
2180
+ "ignore": "^3.2.0",
2181
+ "imurmurhash": "^0.1.4",
2182
+ "inquirer": "^0.12.0",
2183
+ "is-my-json-valid": "^2.10.0",
2184
+ "is-resolvable": "^1.0.0",
2185
+ "js-yaml": "^3.5.1",
2186
+ "json-stable-stringify": "^1.0.0",
2187
+ "levn": "^0.3.0",
2188
+ "lodash": "^4.0.0",
2189
+ "mkdirp": "^0.5.0",
2190
+ "natural-compare": "^1.4.0",
2191
+ "optionator": "^0.8.2",
2192
+ "path-is-inside": "^1.0.1",
2193
+ "pluralize": "^1.2.1",
2194
+ "progress": "^1.1.8",
2195
+ "require-uncached": "^1.0.2",
2196
+ "shelljs": "^0.7.5",
2197
+ "strip-bom": "^3.0.0",
2198
+ "strip-json-comments": "~2.0.1",
2199
+ "table": "^3.7.8",
2200
+ "text-table": "~0.2.0",
2201
+ "user-home": "^2.0.0"
2202
+ }
2203
+ },
2204
+ "espree": {
2205
+ "version": "3.5.4",
2206
+ "resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
2207
+ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
2208
+ "dev": true,
2209
+ "requires": {
2210
+ "acorn": "^5.5.0",
2211
+ "acorn-jsx": "^3.0.0"
2212
+ }
2213
+ },
2214
+ "esprima": {
2215
+ "version": "2.7.3",
2216
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
2217
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
2218
+ "dev": true
2219
+ },
2220
+ "esquery": {
2221
+ "version": "1.0.1",
2222
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
2223
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
2224
+ "dev": true,
2225
+ "requires": {
2226
+ "estraverse": "^4.0.0"
2227
+ }
2228
+ },
2229
+ "esrecurse": {
2230
+ "version": "4.2.1",
2231
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
2232
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
2233
+ "dev": true,
2234
+ "requires": {
2235
+ "estraverse": "^4.1.0"
2236
+ }
2237
+ },
2238
+ "estraverse": {
2239
+ "version": "4.2.0",
2240
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
2241
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
2242
+ "dev": true
2243
+ },
2244
+ "esutils": {
2245
+ "version": "2.0.2",
2246
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
2247
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
2248
+ "dev": true
2249
+ },
2250
+ "event-emitter": {
2251
+ "version": "0.3.5",
2252
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
2253
+ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
2254
+ "dev": true,
2255
+ "requires": {
2256
+ "d": "1",
2257
+ "es5-ext": "~0.10.14"
2258
+ }
2259
+ },
2260
+ "events": {
2261
+ "version": "1.1.1",
2262
+ "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz",
2263
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
2264
+ "dev": true
2265
+ },
2266
+ "evp_bytestokey": {
2267
+ "version": "1.0.3",
2268
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
2269
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
2270
+ "dev": true,
2271
+ "requires": {
2272
+ "md5.js": "^1.3.4",
2273
+ "safe-buffer": "^5.1.1"
2274
+ }
2275
+ },
2276
+ "execa": {
2277
+ "version": "0.7.0",
2278
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
2279
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
2280
+ "dev": true,
2281
+ "requires": {
2282
+ "cross-spawn": "^5.0.1",
2283
+ "get-stream": "^3.0.0",
2284
+ "is-stream": "^1.1.0",
2285
+ "npm-run-path": "^2.0.0",
2286
+ "p-finally": "^1.0.0",
2287
+ "signal-exit": "^3.0.0",
2288
+ "strip-eof": "^1.0.0"
2289
+ },
2290
+ "dependencies": {
2291
+ "cross-spawn": {
2292
+ "version": "5.1.0",
2293
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
2294
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
2295
+ "dev": true,
2296
+ "requires": {
2297
+ "lru-cache": "^4.0.1",
2298
+ "shebang-command": "^1.2.0",
2299
+ "which": "^1.2.9"
2300
+ }
2301
+ }
2302
+ }
2303
+ },
2304
+ "exit-hook": {
2305
+ "version": "1.1.1",
2306
+ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
2307
+ "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
2308
+ "dev": true
2309
+ },
2310
+ "expand-brackets": {
2311
+ "version": "2.1.4",
2312
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
2313
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
2314
+ "dev": true,
2315
+ "requires": {
2316
+ "debug": "^2.3.3",
2317
+ "define-property": "^0.2.5",
2318
+ "extend-shallow": "^2.0.1",
2319
+ "posix-character-classes": "^0.1.0",
2320
+ "regex-not": "^1.0.0",
2321
+ "snapdragon": "^0.8.1",
2322
+ "to-regex": "^3.0.1"
2323
+ },
2324
+ "dependencies": {
2325
+ "define-property": {
2326
+ "version": "0.2.5",
2327
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
2328
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
2329
+ "dev": true,
2330
+ "requires": {
2331
+ "is-descriptor": "^0.1.0"
2332
+ }
2333
+ },
2334
+ "extend-shallow": {
2335
+ "version": "2.0.1",
2336
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2337
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2338
+ "dev": true,
2339
+ "requires": {
2340
+ "is-extendable": "^0.1.0"
2341
+ }
2342
+ }
2343
+ }
2344
+ },
2345
+ "extend": {
2346
+ "version": "3.0.2",
2347
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
2348
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
2349
+ "dev": true
2350
+ },
2351
+ "extend-shallow": {
2352
+ "version": "3.0.2",
2353
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
2354
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
2355
+ "dev": true,
2356
+ "requires": {
2357
+ "assign-symbols": "^1.0.0",
2358
+ "is-extendable": "^1.0.1"
2359
+ },
2360
+ "dependencies": {
2361
+ "is-extendable": {
2362
+ "version": "1.0.1",
2363
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
2364
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
2365
+ "dev": true,
2366
+ "requires": {
2367
+ "is-plain-object": "^2.0.4"
2368
+ }
2369
+ }
2370
+ }
2371
+ },
2372
+ "extglob": {
2373
+ "version": "2.0.4",
2374
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
2375
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
2376
+ "dev": true,
2377
+ "requires": {
2378
+ "array-unique": "^0.3.2",
2379
+ "define-property": "^1.0.0",
2380
+ "expand-brackets": "^2.1.4",
2381
+ "extend-shallow": "^2.0.1",
2382
+ "fragment-cache": "^0.2.1",
2383
+ "regex-not": "^1.0.0",
2384
+ "snapdragon": "^0.8.1",
2385
+ "to-regex": "^3.0.1"
2386
+ },
2387
+ "dependencies": {
2388
+ "define-property": {
2389
+ "version": "1.0.0",
2390
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
2391
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
2392
+ "dev": true,
2393
+ "requires": {
2394
+ "is-descriptor": "^1.0.0"
2395
+ }
2396
+ },
2397
+ "extend-shallow": {
2398
+ "version": "2.0.1",
2399
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2400
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2401
+ "dev": true,
2402
+ "requires": {
2403
+ "is-extendable": "^0.1.0"
2404
+ }
2405
+ },
2406
+ "is-accessor-descriptor": {
2407
+ "version": "1.0.0",
2408
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
2409
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
2410
+ "dev": true,
2411
+ "requires": {
2412
+ "kind-of": "^6.0.0"
2413
+ }
2414
+ },
2415
+ "is-data-descriptor": {
2416
+ "version": "1.0.0",
2417
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
2418
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
2419
+ "dev": true,
2420
+ "requires": {
2421
+ "kind-of": "^6.0.0"
2422
+ }
2423
+ },
2424
+ "is-descriptor": {
2425
+ "version": "1.0.2",
2426
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
2427
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
2428
+ "dev": true,
2429
+ "requires": {
2430
+ "is-accessor-descriptor": "^1.0.0",
2431
+ "is-data-descriptor": "^1.0.0",
2432
+ "kind-of": "^6.0.2"
2433
+ }
2434
+ }
2435
+ }
2436
+ },
2437
+ "extract-text-webpack-plugin": {
2438
+ "version": "2.1.2",
2439
+ "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz",
2440
+ "integrity": "sha1-dW7076gVXDaBgz+8NNpTuUF0bWw=",
2441
+ "dev": true,
2442
+ "requires": {
2443
+ "async": "^2.1.2",
2444
+ "loader-utils": "^1.0.2",
2445
+ "schema-utils": "^0.3.0",
2446
+ "webpack-sources": "^1.0.1"
2447
+ }
2448
+ },
2449
+ "extsprintf": {
2450
+ "version": "1.3.0",
2451
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
2452
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
2453
+ "dev": true
2454
+ },
2455
+ "fast-deep-equal": {
2456
+ "version": "1.1.0",
2457
+ "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
2458
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
2459
+ "dev": true
2460
+ },
2461
+ "fast-json-stable-stringify": {
2462
+ "version": "2.0.0",
2463
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
2464
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
2465
+ "dev": true
2466
+ },
2467
+ "fast-levenshtein": {
2468
+ "version": "2.0.6",
2469
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
2470
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
2471
+ "dev": true
2472
+ },
2473
+ "fastparse": {
2474
+ "version": "1.1.2",
2475
+ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
2476
+ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
2477
+ "dev": true
2478
+ },
2479
+ "figures": {
2480
+ "version": "1.7.0",
2481
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
2482
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
2483
+ "dev": true,
2484
+ "requires": {
2485
+ "escape-string-regexp": "^1.0.5",
2486
+ "object-assign": "^4.1.0"
2487
+ }
2488
+ },
2489
+ "file-entry-cache": {
2490
+ "version": "2.0.0",
2491
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
2492
+ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
2493
+ "dev": true,
2494
+ "requires": {
2495
+ "flat-cache": "^1.2.1",
2496
+ "object-assign": "^4.0.1"
2497
+ }
2498
+ },
2499
+ "fill-range": {
2500
+ "version": "4.0.0",
2501
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
2502
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
2503
+ "dev": true,
2504
+ "requires": {
2505
+ "extend-shallow": "^2.0.1",
2506
+ "is-number": "^3.0.0",
2507
+ "repeat-string": "^1.6.1",
2508
+ "to-regex-range": "^2.1.0"
2509
+ },
2510
+ "dependencies": {
2511
+ "extend-shallow": {
2512
+ "version": "2.0.1",
2513
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2514
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2515
+ "dev": true,
2516
+ "requires": {
2517
+ "is-extendable": "^0.1.0"
2518
+ }
2519
+ }
2520
+ }
2521
+ },
2522
+ "find-cache-dir": {
2523
+ "version": "1.0.0",
2524
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
2525
+ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
2526
+ "dev": true,
2527
+ "requires": {
2528
+ "commondir": "^1.0.1",
2529
+ "make-dir": "^1.0.0",
2530
+ "pkg-dir": "^2.0.0"
2531
+ }
2532
+ },
2533
+ "find-up": {
2534
+ "version": "2.1.0",
2535
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
2536
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
2537
+ "dev": true,
2538
+ "requires": {
2539
+ "locate-path": "^2.0.0"
2540
+ }
2541
+ },
2542
+ "flat-cache": {
2543
+ "version": "1.3.4",
2544
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
2545
+ "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
2546
+ "dev": true,
2547
+ "requires": {
2548
+ "circular-json": "^0.3.1",
2549
+ "graceful-fs": "^4.1.2",
2550
+ "rimraf": "~2.6.2",
2551
+ "write": "^0.2.1"
2552
+ }
2553
+ },
2554
+ "flatten": {
2555
+ "version": "1.0.2",
2556
+ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
2557
+ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
2558
+ "dev": true
2559
+ },
2560
+ "for-in": {
2561
+ "version": "1.0.2",
2562
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
2563
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
2564
+ "dev": true
2565
+ },
2566
+ "for-own": {
2567
+ "version": "1.0.0",
2568
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
2569
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
2570
+ "dev": true,
2571
+ "requires": {
2572
+ "for-in": "^1.0.1"
2573
+ }
2574
+ },
2575
+ "forever-agent": {
2576
+ "version": "0.6.1",
2577
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
2578
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
2579
+ "dev": true
2580
+ },
2581
+ "form-data": {
2582
+ "version": "2.3.3",
2583
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
2584
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
2585
+ "dev": true,
2586
+ "requires": {
2587
+ "asynckit": "^0.4.0",
2588
+ "combined-stream": "^1.0.6",
2589
+ "mime-types": "^2.1.12"
2590
+ }
2591
+ },
2592
+ "fragment-cache": {
2593
+ "version": "0.2.1",
2594
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
2595
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
2596
+ "dev": true,
2597
+ "requires": {
2598
+ "map-cache": "^0.2.2"
2599
+ }
2600
+ },
2601
+ "fs.realpath": {
2602
+ "version": "1.0.0",
2603
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
2604
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
2605
+ "dev": true
2606
+ },
2607
+ "fsevents": {
2608
+ "version": "1.2.4",
2609
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
2610
+ "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
2611
+ "dev": true,
2612
+ "optional": true,
2613
+ "requires": {
2614
+ "nan": "^2.9.2",
2615
+ "node-pre-gyp": "^0.10.0"
2616
+ },
2617
+ "dependencies": {
2618
+ "abbrev": {
2619
+ "version": "1.1.1",
2620
+ "bundled": true,
2621
+ "dev": true,
2622
+ "optional": true
2623
+ },
2624
+ "ansi-regex": {
2625
+ "version": "2.1.1",
2626
+ "bundled": true,
2627
+ "dev": true
2628
+ },
2629
+ "aproba": {
2630
+ "version": "1.2.0",
2631
+ "bundled": true,
2632
+ "dev": true,
2633
+ "optional": true
2634
+ },
2635
+ "are-we-there-yet": {
2636
+ "version": "1.1.4",
2637
+ "bundled": true,
2638
+ "dev": true,
2639
+ "optional": true,
2640
+ "requires": {
2641
+ "delegates": "^1.0.0",
2642
+ "readable-stream": "^2.0.6"
2643
+ }
2644
+ },
2645
+ "balanced-match": {
2646
+ "version": "1.0.0",
2647
+ "bundled": true,
2648
+ "dev": true
2649
+ },
2650
+ "brace-expansion": {
2651
+ "version": "1.1.11",
2652
+ "bundled": true,
2653
+ "dev": true,
2654
+ "requires": {
2655
+ "balanced-match": "^1.0.0",
2656
+ "concat-map": "0.0.1"
2657
+ }
2658
+ },
2659
+ "chownr": {
2660
+ "version": "1.0.1",
2661
+ "bundled": true,
2662
+ "dev": true,
2663
+ "optional": true
2664
+ },
2665
+ "code-point-at": {
2666
+ "version": "1.1.0",
2667
+ "bundled": true,
2668
+ "dev": true
2669
+ },
2670
+ "concat-map": {
2671
+ "version": "0.0.1",
2672
+ "bundled": true,
2673
+ "dev": true
2674
+ },
2675
+ "console-control-strings": {
2676
+ "version": "1.1.0",
2677
+ "bundled": true,
2678
+ "dev": true
2679
+ },
2680
+ "core-util-is": {
2681
+ "version": "1.0.2",
2682
+ "bundled": true,
2683
+ "dev": true,
2684
+ "optional": true
2685
+ },
2686
+ "debug": {
2687
+ "version": "2.6.9",
2688
+ "bundled": true,
2689
+ "dev": true,
2690
+ "optional": true,
2691
+ "requires": {
2692
+ "ms": "2.0.0"
2693
+ }
2694
+ },
2695
+ "deep-extend": {
2696
+ "version": "0.5.1",
2697
+ "bundled": true,
2698
+ "dev": true,
2699
+ "optional": true
2700
+ },
2701
+ "delegates": {
2702
+ "version": "1.0.0",
2703
+ "bundled": true,
2704
+ "dev": true,
2705
+ "optional": true
2706
+ },
2707
+ "detect-libc": {
2708
+ "version": "1.0.3",
2709
+ "bundled": true,
2710
+ "dev": true,
2711
+ "optional": true
2712
+ },
2713
+ "fs-minipass": {
2714
+ "version": "1.2.5",
2715
+ "bundled": true,
2716
+ "dev": true,
2717
+ "optional": true,
2718
+ "requires": {
2719
+ "minipass": "^2.2.1"
2720
+ }
2721
+ },
2722
+ "fs.realpath": {
2723
+ "version": "1.0.0",
2724
+ "bundled": true,
2725
+ "dev": true,
2726
+ "optional": true
2727
+ },
2728
+ "gauge": {
2729
+ "version": "2.7.4",
2730
+ "bundled": true,
2731
+ "dev": true,
2732
+ "optional": true,
2733
+ "requires": {
2734
+ "aproba": "^1.0.3",
2735
+ "console-control-strings": "^1.0.0",
2736
+ "has-unicode": "^2.0.0",
2737
+ "object-assign": "^4.1.0",
2738
+ "signal-exit": "^3.0.0",
2739
+ "string-width": "^1.0.1",
2740
+ "strip-ansi": "^3.0.1",
2741
+ "wide-align": "^1.1.0"
2742
+ }
2743
+ },
2744
+ "glob": {
2745
+ "version": "7.1.2",
2746
+ "bundled": true,
2747
+ "dev": true,
2748
+ "optional": true,
2749
+ "requires": {
2750
+ "fs.realpath": "^1.0.0",
2751
+ "inflight": "^1.0.4",
2752
+ "inherits": "2",
2753
+ "minimatch": "^3.0.4",
2754
+ "once": "^1.3.0",
2755
+ "path-is-absolute": "^1.0.0"
2756
+ }
2757
+ },
2758
+ "has-unicode": {
2759
+ "version": "2.0.1",
2760
+ "bundled": true,
2761
+ "dev": true,
2762
+ "optional": true
2763
+ },
2764
+ "iconv-lite": {
2765
+ "version": "0.4.21",
2766
+ "bundled": true,
2767
+ "dev": true,
2768
+ "optional": true,
2769
+ "requires": {
2770
+ "safer-buffer": "^2.1.0"
2771
+ }
2772
+ },
2773
+ "ignore-walk": {
2774
+ "version": "3.0.1",
2775
+ "bundled": true,
2776
+ "dev": true,
2777
+ "optional": true,
2778
+ "requires": {
2779
+ "minimatch": "^3.0.4"
2780
+ }
2781
+ },
2782
+ "inflight": {
2783
+ "version": "1.0.6",
2784
+ "bundled": true,
2785
+ "dev": true,
2786
+ "optional": true,
2787
+ "requires": {
2788
+ "once": "^1.3.0",
2789
+ "wrappy": "1"
2790
+ }
2791
+ },
2792
+ "inherits": {
2793
+ "version": "2.0.3",
2794
+ "bundled": true,
2795
+ "dev": true
2796
+ },
2797
+ "ini": {
2798
+ "version": "1.3.5",
2799
+ "bundled": true,
2800
+ "dev": true,
2801
+ "optional": true
2802
+ },
2803
+ "is-fullwidth-code-point": {
2804
+ "version": "1.0.0",
2805
+ "bundled": true,
2806
+ "dev": true,
2807
+ "requires": {
2808
+ "number-is-nan": "^1.0.0"
2809
+ }
2810
+ },
2811
+ "isarray": {
2812
+ "version": "1.0.0",
2813
+ "bundled": true,
2814
+ "dev": true,
2815
+ "optional": true
2816
+ },
2817
+ "minimatch": {
2818
+ "version": "3.0.4",
2819
+ "bundled": true,
2820
+ "dev": true,
2821
+ "requires": {
2822
+ "brace-expansion": "^1.1.7"
2823
+ }
2824
+ },
2825
+ "minimist": {
2826
+ "version": "0.0.8",
2827
+ "bundled": true,
2828
+ "dev": true
2829
+ },
2830
+ "minipass": {
2831
+ "version": "2.2.4",
2832
+ "bundled": true,
2833
+ "dev": true,
2834
+ "requires": {
2835
+ "safe-buffer": "^5.1.1",
2836
+ "yallist": "^3.0.0"
2837
+ }
2838
+ },
2839
+ "minizlib": {
2840
+ "version": "1.1.0",
2841
+ "bundled": true,
2842
+ "dev": true,
2843
+ "optional": true,
2844
+ "requires": {
2845
+ "minipass": "^2.2.1"
2846
+ }
2847
+ },
2848
+ "mkdirp": {
2849
+ "version": "0.5.1",
2850
+ "bundled": true,
2851
+ "dev": true,
2852
+ "requires": {
2853
+ "minimist": "0.0.8"
2854
+ }
2855
+ },
2856
+ "ms": {
2857
+ "version": "2.0.0",
2858
+ "bundled": true,
2859
+ "dev": true,
2860
+ "optional": true
2861
+ },
2862
+ "needle": {
2863
+ "version": "2.2.0",
2864
+ "bundled": true,
2865
+ "dev": true,
2866
+ "optional": true,
2867
+ "requires": {
2868
+ "debug": "^2.1.2",
2869
+ "iconv-lite": "^0.4.4",
2870
+ "sax": "^1.2.4"
2871
+ }
2872
+ },
2873
+ "node-pre-gyp": {
2874
+ "version": "0.10.0",
2875
+ "bundled": true,
2876
+ "dev": true,
2877
+ "optional": true,
2878
+ "requires": {
2879
+ "detect-libc": "^1.0.2",
2880
+ "mkdirp": "^0.5.1",
2881
+ "needle": "^2.2.0",
2882
+ "nopt": "^4.0.1",
2883
+ "npm-packlist": "^1.1.6",
2884
+ "npmlog": "^4.0.2",
2885
+ "rc": "^1.1.7",
2886
+ "rimraf": "^2.6.1",
2887
+ "semver": "^5.3.0",
2888
+ "tar": "^4"
2889
+ }
2890
+ },
2891
+ "nopt": {
2892
+ "version": "4.0.1",
2893
+ "bundled": true,
2894
+ "dev": true,
2895
+ "optional": true,
2896
+ "requires": {
2897
+ "abbrev": "1",
2898
+ "osenv": "^0.1.4"
2899
+ }
2900
+ },
2901
+ "npm-bundled": {
2902
+ "version": "1.0.3",
2903
+ "bundled": true,
2904
+ "dev": true,
2905
+ "optional": true
2906
+ },
2907
+ "npm-packlist": {
2908
+ "version": "1.1.10",
2909
+ "bundled": true,
2910
+ "dev": true,
2911
+ "optional": true,
2912
+ "requires": {
2913
+ "ignore-walk": "^3.0.1",
2914
+ "npm-bundled": "^1.0.1"
2915
+ }
2916
+ },
2917
+ "npmlog": {
2918
+ "version": "4.1.2",
2919
+ "bundled": true,
2920
+ "dev": true,
2921
+ "optional": true,
2922
+ "requires": {
2923
+ "are-we-there-yet": "~1.1.2",
2924
+ "console-control-strings": "~1.1.0",
2925
+ "gauge": "~2.7.3",
2926
+ "set-blocking": "~2.0.0"
2927
+ }
2928
+ },
2929
+ "number-is-nan": {
2930
+ "version": "1.0.1",
2931
+ "bundled": true,
2932
+ "dev": true
2933
+ },
2934
+ "object-assign": {
2935
+ "version": "4.1.1",
2936
+ "bundled": true,
2937
+ "dev": true,
2938
+ "optional": true
2939
+ },
2940
+ "once": {
2941
+ "version": "1.4.0",
2942
+ "bundled": true,
2943
+ "dev": true,
2944
+ "requires": {
2945
+ "wrappy": "1"
2946
+ }
2947
+ },
2948
+ "os-homedir": {
2949
+ "version": "1.0.2",
2950
+ "bundled": true,
2951
+ "dev": true,
2952
+ "optional": true
2953
+ },
2954
+ "os-tmpdir": {
2955
+ "version": "1.0.2",
2956
+ "bundled": true,
2957
+ "dev": true,
2958
+ "optional": true
2959
+ },
2960
+ "osenv": {
2961
+ "version": "0.1.5",
2962
+ "bundled": true,
2963
+ "dev": true,
2964
+ "optional": true,
2965
+ "requires": {
2966
+ "os-homedir": "^1.0.0",
2967
+ "os-tmpdir": "^1.0.0"
2968
+ }
2969
+ },
2970
+ "path-is-absolute": {
2971
+ "version": "1.0.1",
2972
+ "bundled": true,
2973
+ "dev": true,
2974
+ "optional": true
2975
+ },
2976
+ "process-nextick-args": {
2977
+ "version": "2.0.0",
2978
+ "bundled": true,
2979
+ "dev": true,
2980
+ "optional": true
2981
+ },
2982
+ "rc": {
2983
+ "version": "1.2.7",
2984
+ "bundled": true,
2985
+ "dev": true,
2986
+ "optional": true,
2987
+ "requires": {
2988
+ "deep-extend": "^0.5.1",
2989
+ "ini": "~1.3.0",
2990
+ "minimist": "^1.2.0",
2991
+ "strip-json-comments": "~2.0.1"
2992
+ },
2993
+ "dependencies": {
2994
+ "minimist": {
2995
+ "version": "1.2.0",
2996
+ "bundled": true,
2997
+ "dev": true,
2998
+ "optional": true
2999
+ }
3000
+ }
3001
+ },
3002
+ "readable-stream": {
3003
+ "version": "2.3.6",
3004
+ "bundled": true,
3005
+ "dev": true,
3006
+ "optional": true,
3007
+ "requires": {
3008
+ "core-util-is": "~1.0.0",
3009
+ "inherits": "~2.0.3",
3010
+ "isarray": "~1.0.0",
3011
+ "process-nextick-args": "~2.0.0",
3012
+ "safe-buffer": "~5.1.1",
3013
+ "string_decoder": "~1.1.1",
3014
+ "util-deprecate": "~1.0.1"
3015
+ }
3016
+ },
3017
+ "rimraf": {
3018
+ "version": "2.6.2",
3019
+ "bundled": true,
3020
+ "dev": true,
3021
+ "optional": true,
3022
+ "requires": {
3023
+ "glob": "^7.0.5"
3024
+ }
3025
+ },
3026
+ "safe-buffer": {
3027
+ "version": "5.1.1",
3028
+ "bundled": true,
3029
+ "dev": true
3030
+ },
3031
+ "safer-buffer": {
3032
+ "version": "2.1.2",
3033
+ "bundled": true,
3034
+ "dev": true,
3035
+ "optional": true
3036
+ },
3037
+ "sax": {
3038
+ "version": "1.2.4",
3039
+ "bundled": true,
3040
+ "dev": true,
3041
+ "optional": true
3042
+ },
3043
+ "semver": {
3044
+ "version": "5.5.0",
3045
+ "bundled": true,
3046
+ "dev": true,
3047
+ "optional": true
3048
+ },
3049
+ "set-blocking": {
3050
+ "version": "2.0.0",
3051
+ "bundled": true,
3052
+ "dev": true,
3053
+ "optional": true
3054
+ },
3055
+ "signal-exit": {
3056
+ "version": "3.0.2",
3057
+ "bundled": true,
3058
+ "dev": true,
3059
+ "optional": true
3060
+ },
3061
+ "string-width": {
3062
+ "version": "1.0.2",
3063
+ "bundled": true,
3064
+ "dev": true,
3065
+ "requires": {
3066
+ "code-point-at": "^1.0.0",
3067
+ "is-fullwidth-code-point": "^1.0.0",
3068
+ "strip-ansi": "^3.0.0"
3069
+ }
3070
+ },
3071
+ "string_decoder": {
3072
+ "version": "1.1.1",
3073
+ "bundled": true,
3074
+ "dev": true,
3075
+ "optional": true,
3076
+ "requires": {
3077
+ "safe-buffer": "~5.1.0"
3078
+ }
3079
+ },
3080
+ "strip-ansi": {
3081
+ "version": "3.0.1",
3082
+ "bundled": true,
3083
+ "dev": true,
3084
+ "requires": {
3085
+ "ansi-regex": "^2.0.0"
3086
+ }
3087
+ },
3088
+ "strip-json-comments": {
3089
+ "version": "2.0.1",
3090
+ "bundled": true,
3091
+ "dev": true,
3092
+ "optional": true
3093
+ },
3094
+ "tar": {
3095
+ "version": "4.4.1",
3096
+ "bundled": true,
3097
+ "dev": true,
3098
+ "optional": true,
3099
+ "requires": {
3100
+ "chownr": "^1.0.1",
3101
+ "fs-minipass": "^1.2.5",
3102
+ "minipass": "^2.2.4",
3103
+ "minizlib": "^1.1.0",
3104
+ "mkdirp": "^0.5.0",
3105
+ "safe-buffer": "^5.1.1",
3106
+ "yallist": "^3.0.2"
3107
+ }
3108
+ },
3109
+ "util-deprecate": {
3110
+ "version": "1.0.2",
3111
+ "bundled": true,
3112
+ "dev": true,
3113
+ "optional": true
3114
+ },
3115
+ "wide-align": {
3116
+ "version": "1.1.2",
3117
+ "bundled": true,
3118
+ "dev": true,
3119
+ "optional": true,
3120
+ "requires": {
3121
+ "string-width": "^1.0.2"
3122
+ }
3123
+ },
3124
+ "wrappy": {
3125
+ "version": "1.0.2",
3126
+ "bundled": true,
3127
+ "dev": true
3128
+ },
3129
+ "yallist": {
3130
+ "version": "3.0.2",
3131
+ "bundled": true,
3132
+ "dev": true
3133
+ }
3134
+ }
3135
+ },
3136
+ "fstream": {
3137
+ "version": "1.0.11",
3138
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
3139
+ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
3140
+ "dev": true,
3141
+ "requires": {
3142
+ "graceful-fs": "^4.1.2",
3143
+ "inherits": "~2.0.0",
3144
+ "mkdirp": ">=0.5 0",
3145
+ "rimraf": "2"
3146
+ }
3147
+ },
3148
+ "function-bind": {
3149
+ "version": "1.1.1",
3150
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
3151
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
3152
+ "dev": true
3153
+ },
3154
+ "gauge": {
3155
+ "version": "2.7.4",
3156
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
3157
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
3158
+ "dev": true,
3159
+ "requires": {
3160
+ "aproba": "^1.0.3",
3161
+ "console-control-strings": "^1.0.0",
3162
+ "has-unicode": "^2.0.0",
3163
+ "object-assign": "^4.1.0",
3164
+ "signal-exit": "^3.0.0",
3165
+ "string-width": "^1.0.1",
3166
+ "strip-ansi": "^3.0.1",
3167
+ "wide-align": "^1.1.0"
3168
+ }
3169
+ },
3170
+ "gaze": {
3171
+ "version": "1.1.3",
3172
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
3173
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
3174
+ "dev": true,
3175
+ "requires": {
3176
+ "globule": "^1.0.0"
3177
+ }
3178
+ },
3179
+ "generate-function": {
3180
+ "version": "2.3.1",
3181
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
3182
+ "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
3183
+ "dev": true,
3184
+ "requires": {
3185
+ "is-property": "^1.0.2"
3186
+ }
3187
+ },
3188
+ "generate-object-property": {
3189
+ "version": "1.2.0",
3190
+ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
3191
+ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
3192
+ "dev": true,
3193
+ "requires": {
3194
+ "is-property": "^1.0.0"
3195
+ }
3196
+ },
3197
+ "get-caller-file": {
3198
+ "version": "1.0.3",
3199
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
3200
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
3201
+ "dev": true
3202
+ },
3203
+ "get-stdin": {
3204
+ "version": "4.0.1",
3205
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
3206
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
3207
+ "dev": true
3208
+ },
3209
+ "get-stream": {
3210
+ "version": "3.0.0",
3211
+ "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
3212
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
3213
+ "dev": true
3214
+ },
3215
+ "get-value": {
3216
+ "version": "2.0.6",
3217
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
3218
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
3219
+ "dev": true
3220
+ },
3221
+ "getpass": {
3222
+ "version": "0.1.7",
3223
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
3224
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
3225
+ "dev": true,
3226
+ "requires": {
3227
+ "assert-plus": "^1.0.0"
3228
+ }
3229
+ },
3230
+ "glob": {
3231
+ "version": "7.1.3",
3232
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
3233
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
3234
+ "dev": true,
3235
+ "requires": {
3236
+ "fs.realpath": "^1.0.0",
3237
+ "inflight": "^1.0.4",
3238
+ "inherits": "2",
3239
+ "minimatch": "^3.0.4",
3240
+ "once": "^1.3.0",
3241
+ "path-is-absolute": "^1.0.0"
3242
+ }
3243
+ },
3244
+ "glob-parent": {
3245
+ "version": "3.1.0",
3246
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
3247
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
3248
+ "dev": true,
3249
+ "requires": {
3250
+ "is-glob": "^3.1.0",
3251
+ "path-dirname": "^1.0.0"
3252
+ },
3253
+ "dependencies": {
3254
+ "is-glob": {
3255
+ "version": "3.1.0",
3256
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
3257
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
3258
+ "dev": true,
3259
+ "requires": {
3260
+ "is-extglob": "^2.1.0"
3261
+ }
3262
+ }
3263
+ }
3264
+ },
3265
+ "globals": {
3266
+ "version": "9.18.0",
3267
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
3268
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
3269
+ "dev": true
3270
+ },
3271
+ "globule": {
3272
+ "version": "1.2.1",
3273
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
3274
+ "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
3275
+ "dev": true,
3276
+ "requires": {
3277
+ "glob": "~7.1.1",
3278
+ "lodash": "~4.17.10",
3279
+ "minimatch": "~3.0.2"
3280
+ }
3281
+ },
3282
+ "graceful-fs": {
3283
+ "version": "4.1.15",
3284
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
3285
+ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
3286
+ "dev": true
3287
+ },
3288
+ "har-schema": {
3289
+ "version": "2.0.0",
3290
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
3291
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
3292
+ "dev": true
3293
+ },
3294
+ "har-validator": {
3295
+ "version": "5.1.3",
3296
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
3297
+ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
3298
+ "dev": true,
3299
+ "requires": {
3300
+ "ajv": "^6.5.5",
3301
+ "har-schema": "^2.0.0"
3302
+ },
3303
+ "dependencies": {
3304
+ "ajv": {
3305
+ "version": "6.5.5",
3306
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz",
3307
+ "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==",
3308
+ "dev": true,
3309
+ "requires": {
3310
+ "fast-deep-equal": "^2.0.1",
3311
+ "fast-json-stable-stringify": "^2.0.0",
3312
+ "json-schema-traverse": "^0.4.1",
3313
+ "uri-js": "^4.2.2"
3314
+ }
3315
+ },
3316
+ "fast-deep-equal": {
3317
+ "version": "2.0.1",
3318
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
3319
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
3320
+ "dev": true
3321
+ },
3322
+ "json-schema-traverse": {
3323
+ "version": "0.4.1",
3324
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
3325
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
3326
+ "dev": true
3327
+ }
3328
+ }
3329
+ },
3330
+ "has": {
3331
+ "version": "1.0.3",
3332
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
3333
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
3334
+ "dev": true,
3335
+ "requires": {
3336
+ "function-bind": "^1.1.1"
3337
+ }
3338
+ },
3339
+ "has-ansi": {
3340
+ "version": "2.0.0",
3341
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
3342
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
3343
+ "dev": true,
3344
+ "requires": {
3345
+ "ansi-regex": "^2.0.0"
3346
+ }
3347
+ },
3348
+ "has-flag": {
3349
+ "version": "1.0.0",
3350
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
3351
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
3352
+ "dev": true
3353
+ },
3354
+ "has-unicode": {
3355
+ "version": "2.0.1",
3356
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
3357
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
3358
+ "dev": true
3359
+ },
3360
+ "has-value": {
3361
+ "version": "1.0.0",
3362
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
3363
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
3364
+ "dev": true,
3365
+ "requires": {
3366
+ "get-value": "^2.0.6",
3367
+ "has-values": "^1.0.0",
3368
+ "isobject": "^3.0.0"
3369
+ }
3370
+ },
3371
+ "has-values": {
3372
+ "version": "1.0.0",
3373
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
3374
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
3375
+ "dev": true,
3376
+ "requires": {
3377
+ "is-number": "^3.0.0",
3378
+ "kind-of": "^4.0.0"
3379
+ },
3380
+ "dependencies": {
3381
+ "kind-of": {
3382
+ "version": "4.0.0",
3383
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
3384
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
3385
+ "dev": true,
3386
+ "requires": {
3387
+ "is-buffer": "^1.1.5"
3388
+ }
3389
+ }
3390
+ }
3391
+ },
3392
+ "hash-base": {
3393
+ "version": "3.0.4",
3394
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
3395
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
3396
+ "dev": true,
3397
+ "requires": {
3398
+ "inherits": "^2.0.1",
3399
+ "safe-buffer": "^5.0.1"
3400
+ }
3401
+ },
3402
+ "hash.js": {
3403
+ "version": "1.1.5",
3404
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz",
3405
+ "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==",
3406
+ "dev": true,
3407
+ "requires": {
3408
+ "inherits": "^2.0.3",
3409
+ "minimalistic-assert": "^1.0.1"
3410
+ }
3411
+ },
3412
+ "hmac-drbg": {
3413
+ "version": "1.0.1",
3414
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
3415
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
3416
+ "dev": true,
3417
+ "requires": {
3418
+ "hash.js": "^1.0.3",
3419
+ "minimalistic-assert": "^1.0.0",
3420
+ "minimalistic-crypto-utils": "^1.0.1"
3421
+ }
3422
+ },
3423
+ "home-or-tmp": {
3424
+ "version": "2.0.0",
3425
+ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
3426
+ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
3427
+ "dev": true,
3428
+ "requires": {
3429
+ "os-homedir": "^1.0.0",
3430
+ "os-tmpdir": "^1.0.1"
3431
+ }
3432
+ },
3433
+ "hosted-git-info": {
3434
+ "version": "2.7.1",
3435
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
3436
+ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
3437
+ "dev": true
3438
+ },
3439
+ "html-comment-regex": {
3440
+ "version": "1.1.2",
3441
+ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
3442
+ "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
3443
+ "dev": true
3444
+ },
3445
+ "http-signature": {
3446
+ "version": "1.2.0",
3447
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
3448
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
3449
+ "dev": true,
3450
+ "requires": {
3451
+ "assert-plus": "^1.0.0",
3452
+ "jsprim": "^1.2.2",
3453
+ "sshpk": "^1.7.0"
3454
+ }
3455
+ },
3456
+ "https-browserify": {
3457
+ "version": "1.0.0",
3458
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
3459
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
3460
+ "dev": true
3461
+ },
3462
+ "icss-replace-symbols": {
3463
+ "version": "1.1.0",
3464
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
3465
+ "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
3466
+ "dev": true
3467
+ },
3468
+ "icss-utils": {
3469
+ "version": "2.1.0",
3470
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz",
3471
+ "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
3472
+ "dev": true,
3473
+ "requires": {
3474
+ "postcss": "^6.0.1"
3475
+ },
3476
+ "dependencies": {
3477
+ "ansi-styles": {
3478
+ "version": "3.2.1",
3479
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
3480
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
3481
+ "dev": true,
3482
+ "requires": {
3483
+ "color-convert": "^1.9.0"
3484
+ }
3485
+ },
3486
+ "chalk": {
3487
+ "version": "2.4.1",
3488
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
3489
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
3490
+ "dev": true,
3491
+ "requires": {
3492
+ "ansi-styles": "^3.2.1",
3493
+ "escape-string-regexp": "^1.0.5",
3494
+ "supports-color": "^5.3.0"
3495
+ }
3496
+ },
3497
+ "has-flag": {
3498
+ "version": "3.0.0",
3499
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
3500
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
3501
+ "dev": true
3502
+ },
3503
+ "postcss": {
3504
+ "version": "6.0.23",
3505
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
3506
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
3507
+ "dev": true,
3508
+ "requires": {
3509
+ "chalk": "^2.4.1",
3510
+ "source-map": "^0.6.1",
3511
+ "supports-color": "^5.4.0"
3512
+ }
3513
+ },
3514
+ "source-map": {
3515
+ "version": "0.6.1",
3516
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3517
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3518
+ "dev": true
3519
+ },
3520
+ "supports-color": {
3521
+ "version": "5.5.0",
3522
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
3523
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
3524
+ "dev": true,
3525
+ "requires": {
3526
+ "has-flag": "^3.0.0"
3527
+ }
3528
+ }
3529
+ }
3530
+ },
3531
+ "ieee754": {
3532
+ "version": "1.1.12",
3533
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
3534
+ "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
3535
+ "dev": true
3536
+ },
3537
+ "ignore": {
3538
+ "version": "3.3.10",
3539
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
3540
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
3541
+ "dev": true
3542
+ },
3543
+ "imurmurhash": {
3544
+ "version": "0.1.4",
3545
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
3546
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
3547
+ "dev": true
3548
+ },
3549
+ "in-publish": {
3550
+ "version": "2.0.0",
3551
+ "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
3552
+ "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
3553
+ "dev": true
3554
+ },
3555
+ "indent-string": {
3556
+ "version": "2.1.0",
3557
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
3558
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
3559
+ "dev": true,
3560
+ "requires": {
3561
+ "repeating": "^2.0.0"
3562
+ }
3563
+ },
3564
+ "indexes-of": {
3565
+ "version": "1.0.1",
3566
+ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
3567
+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
3568
+ "dev": true
3569
+ },
3570
+ "indexof": {
3571
+ "version": "0.0.1",
3572
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
3573
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
3574
+ "dev": true
3575
+ },
3576
+ "inflight": {
3577
+ "version": "1.0.6",
3578
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
3579
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
3580
+ "dev": true,
3581
+ "requires": {
3582
+ "once": "^1.3.0",
3583
+ "wrappy": "1"
3584
+ }
3585
+ },
3586
+ "inherits": {
3587
+ "version": "2.0.3",
3588
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
3589
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
3590
+ "dev": true
3591
+ },
3592
+ "inquirer": {
3593
+ "version": "0.12.0",
3594
+ "resolved": "http://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
3595
+ "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
3596
+ "dev": true,
3597
+ "requires": {
3598
+ "ansi-escapes": "^1.1.0",
3599
+ "ansi-regex": "^2.0.0",
3600
+ "chalk": "^1.0.0",
3601
+ "cli-cursor": "^1.0.1",
3602
+ "cli-width": "^2.0.0",
3603
+ "figures": "^1.3.5",
3604
+ "lodash": "^4.3.0",
3605
+ "readline2": "^1.0.1",
3606
+ "run-async": "^0.1.0",
3607
+ "rx-lite": "^3.1.2",
3608
+ "string-width": "^1.0.1",
3609
+ "strip-ansi": "^3.0.0",
3610
+ "through": "^2.3.6"
3611
+ }
3612
+ },
3613
+ "interpret": {
3614
+ "version": "1.1.0",
3615
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
3616
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
3617
+ "dev": true
3618
+ },
3619
+ "invariant": {
3620
+ "version": "2.2.4",
3621
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
3622
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
3623
+ "dev": true,
3624
+ "requires": {
3625
+ "loose-envify": "^1.0.0"
3626
+ }
3627
+ },
3628
+ "invert-kv": {
3629
+ "version": "1.0.0",
3630
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
3631
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
3632
+ "dev": true
3633
+ },
3634
+ "is-absolute-url": {
3635
+ "version": "2.1.0",
3636
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
3637
+ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
3638
+ "dev": true
3639
+ },
3640
+ "is-accessor-descriptor": {
3641
+ "version": "0.1.6",
3642
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
3643
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
3644
+ "dev": true,
3645
+ "requires": {
3646
+ "kind-of": "^3.0.2"
3647
+ },
3648
+ "dependencies": {
3649
+ "kind-of": {
3650
+ "version": "3.2.2",
3651
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
3652
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
3653
+ "dev": true,
3654
+ "requires": {
3655
+ "is-buffer": "^1.1.5"
3656
+ }
3657
+ }
3658
+ }
3659
+ },
3660
+ "is-arrayish": {
3661
+ "version": "0.2.1",
3662
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
3663
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
3664
+ "dev": true
3665
+ },
3666
+ "is-binary-path": {
3667
+ "version": "1.0.1",
3668
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
3669
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
3670
+ "dev": true,
3671
+ "requires": {
3672
+ "binary-extensions": "^1.0.0"
3673
+ }
3674
+ },
3675
+ "is-buffer": {
3676
+ "version": "1.1.6",
3677
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
3678
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
3679
+ "dev": true
3680
+ },
3681
+ "is-builtin-module": {
3682
+ "version": "1.0.0",
3683
+ "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
3684
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
3685
+ "dev": true,
3686
+ "requires": {
3687
+ "builtin-modules": "^1.0.0"
3688
+ }
3689
+ },
3690
+ "is-data-descriptor": {
3691
+ "version": "0.1.4",
3692
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
3693
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
3694
+ "dev": true,
3695
+ "requires": {
3696
+ "kind-of": "^3.0.2"
3697
+ },
3698
+ "dependencies": {
3699
+ "kind-of": {
3700
+ "version": "3.2.2",
3701
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
3702
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
3703
+ "dev": true,
3704
+ "requires": {
3705
+ "is-buffer": "^1.1.5"
3706
+ }
3707
+ }
3708
+ }
3709
+ },
3710
+ "is-descriptor": {
3711
+ "version": "0.1.6",
3712
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
3713
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
3714
+ "dev": true,
3715
+ "requires": {
3716
+ "is-accessor-descriptor": "^0.1.6",
3717
+ "is-data-descriptor": "^0.1.4",
3718
+ "kind-of": "^5.0.0"
3719
+ },
3720
+ "dependencies": {
3721
+ "kind-of": {
3722
+ "version": "5.1.0",
3723
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
3724
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
3725
+ "dev": true
3726
+ }
3727
+ }
3728
+ },
3729
+ "is-extendable": {
3730
+ "version": "0.1.1",
3731
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
3732
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
3733
+ "dev": true
3734
+ },
3735
+ "is-extglob": {
3736
+ "version": "2.1.1",
3737
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
3738
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
3739
+ "dev": true
3740
+ },
3741
+ "is-finite": {
3742
+ "version": "1.0.2",
3743
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
3744
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
3745
+ "dev": true,
3746
+ "requires": {
3747
+ "number-is-nan": "^1.0.0"
3748
+ }
3749
+ },
3750
+ "is-fullwidth-code-point": {
3751
+ "version": "1.0.0",
3752
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
3753
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
3754
+ "dev": true,
3755
+ "requires": {
3756
+ "number-is-nan": "^1.0.0"
3757
+ }
3758
+ },
3759
+ "is-glob": {
3760
+ "version": "4.0.0",
3761
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
3762
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
3763
+ "dev": true,
3764
+ "requires": {
3765
+ "is-extglob": "^2.1.1"
3766
+ }
3767
+ },
3768
+ "is-my-ip-valid": {
3769
+ "version": "1.0.0",
3770
+ "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
3771
+ "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==",
3772
+ "dev": true
3773
+ },
3774
+ "is-my-json-valid": {
3775
+ "version": "2.19.0",
3776
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz",
3777
+ "integrity": "sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q==",
3778
+ "dev": true,
3779
+ "requires": {
3780
+ "generate-function": "^2.0.0",
3781
+ "generate-object-property": "^1.1.0",
3782
+ "is-my-ip-valid": "^1.0.0",
3783
+ "jsonpointer": "^4.0.0",
3784
+ "xtend": "^4.0.0"
3785
+ }
3786
+ },
3787
+ "is-number": {
3788
+ "version": "3.0.0",
3789
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
3790
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
3791
+ "dev": true,
3792
+ "requires": {
3793
+ "kind-of": "^3.0.2"
3794
+ },
3795
+ "dependencies": {
3796
+ "kind-of": {
3797
+ "version": "3.2.2",
3798
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
3799
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
3800
+ "dev": true,
3801
+ "requires": {
3802
+ "is-buffer": "^1.1.5"
3803
+ }
3804
+ }
3805
+ }
3806
+ },
3807
+ "is-plain-obj": {
3808
+ "version": "1.1.0",
3809
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
3810
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
3811
+ "dev": true
3812
+ },
3813
+ "is-plain-object": {
3814
+ "version": "2.0.4",
3815
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
3816
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
3817
+ "dev": true,
3818
+ "requires": {
3819
+ "isobject": "^3.0.1"
3820
+ }
3821
+ },
3822
+ "is-property": {
3823
+ "version": "1.0.2",
3824
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
3825
+ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
3826
+ "dev": true
3827
+ },
3828
+ "is-resolvable": {
3829
+ "version": "1.1.0",
3830
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
3831
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
3832
+ "dev": true
3833
+ },
3834
+ "is-stream": {
3835
+ "version": "1.1.0",
3836
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
3837
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
3838
+ "dev": true
3839
+ },
3840
+ "is-svg": {
3841
+ "version": "2.1.0",
3842
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
3843
+ "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
3844
+ "dev": true,
3845
+ "requires": {
3846
+ "html-comment-regex": "^1.1.0"
3847
+ }
3848
+ },
3849
+ "is-typedarray": {
3850
+ "version": "1.0.0",
3851
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
3852
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
3853
+ "dev": true
3854
+ },
3855
+ "is-utf8": {
3856
+ "version": "0.2.1",
3857
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
3858
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
3859
+ "dev": true
3860
+ },
3861
+ "is-windows": {
3862
+ "version": "1.0.2",
3863
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
3864
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
3865
+ "dev": true
3866
+ },
3867
+ "isarray": {
3868
+ "version": "1.0.0",
3869
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
3870
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
3871
+ "dev": true
3872
+ },
3873
+ "isexe": {
3874
+ "version": "2.0.0",
3875
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
3876
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
3877
+ "dev": true
3878
+ },
3879
+ "isobject": {
3880
+ "version": "3.0.1",
3881
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
3882
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
3883
+ "dev": true
3884
+ },
3885
+ "isstream": {
3886
+ "version": "0.1.2",
3887
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
3888
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
3889
+ "dev": true
3890
+ },
3891
+ "js-base64": {
3892
+ "version": "2.4.9",
3893
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz",
3894
+ "integrity": "sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ==",
3895
+ "dev": true
3896
+ },
3897
+ "js-tokens": {
3898
+ "version": "3.0.2",
3899
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
3900
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
3901
+ "dev": true
3902
+ },
3903
+ "js-yaml": {
3904
+ "version": "3.7.0",
3905
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
3906
+ "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
3907
+ "dev": true,
3908
+ "requires": {
3909
+ "argparse": "^1.0.7",
3910
+ "esprima": "^2.6.0"
3911
+ }
3912
+ },
3913
+ "jsbn": {
3914
+ "version": "0.1.1",
3915
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
3916
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
3917
+ "dev": true
3918
+ },
3919
+ "jsesc": {
3920
+ "version": "1.3.0",
3921
+ "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
3922
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
3923
+ "dev": true
3924
+ },
3925
+ "json-loader": {
3926
+ "version": "0.5.7",
3927
+ "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz",
3928
+ "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
3929
+ "dev": true
3930
+ },
3931
+ "json-schema": {
3932
+ "version": "0.2.3",
3933
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
3934
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
3935
+ "dev": true
3936
+ },
3937
+ "json-schema-traverse": {
3938
+ "version": "0.3.1",
3939
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
3940
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
3941
+ "dev": true
3942
+ },
3943
+ "json-stable-stringify": {
3944
+ "version": "1.0.1",
3945
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
3946
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
3947
+ "dev": true,
3948
+ "requires": {
3949
+ "jsonify": "~0.0.0"
3950
+ }
3951
+ },
3952
+ "json-stringify-safe": {
3953
+ "version": "5.0.1",
3954
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
3955
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
3956
+ "dev": true
3957
+ },
3958
+ "json5": {
3959
+ "version": "0.5.1",
3960
+ "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
3961
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
3962
+ "dev": true
3963
+ },
3964
+ "jsonify": {
3965
+ "version": "0.0.0",
3966
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
3967
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
3968
+ "dev": true
3969
+ },
3970
+ "jsonpointer": {
3971
+ "version": "4.0.1",
3972
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
3973
+ "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
3974
+ "dev": true
3975
+ },
3976
+ "jsprim": {
3977
+ "version": "1.4.1",
3978
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
3979
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
3980
+ "dev": true,
3981
+ "requires": {
3982
+ "assert-plus": "1.0.0",
3983
+ "extsprintf": "1.3.0",
3984
+ "json-schema": "0.2.3",
3985
+ "verror": "1.10.0"
3986
+ }
3987
+ },
3988
+ "kind-of": {
3989
+ "version": "6.0.2",
3990
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
3991
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
3992
+ "dev": true
3993
+ },
3994
+ "lazy-cache": {
3995
+ "version": "1.0.4",
3996
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
3997
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
3998
+ "dev": true
3999
+ },
4000
+ "lcid": {
4001
+ "version": "1.0.0",
4002
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
4003
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
4004
+ "dev": true,
4005
+ "requires": {
4006
+ "invert-kv": "^1.0.0"
4007
+ }
4008
+ },
4009
+ "levn": {
4010
+ "version": "0.3.0",
4011
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
4012
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
4013
+ "dev": true,
4014
+ "requires": {
4015
+ "prelude-ls": "~1.1.2",
4016
+ "type-check": "~0.3.2"
4017
+ }
4018
+ },
4019
+ "load-json-file": {
4020
+ "version": "1.1.0",
4021
+ "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
4022
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
4023
+ "dev": true,
4024
+ "requires": {
4025
+ "graceful-fs": "^4.1.2",
4026
+ "parse-json": "^2.2.0",
4027
+ "pify": "^2.0.0",
4028
+ "pinkie-promise": "^2.0.0",
4029
+ "strip-bom": "^2.0.0"
4030
+ },
4031
+ "dependencies": {
4032
+ "pify": {
4033
+ "version": "2.3.0",
4034
+ "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
4035
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
4036
+ "dev": true
4037
+ },
4038
+ "strip-bom": {
4039
+ "version": "2.0.0",
4040
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
4041
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
4042
+ "dev": true,
4043
+ "requires": {
4044
+ "is-utf8": "^0.2.0"
4045
+ }
4046
+ }
4047
+ }
4048
+ },
4049
+ "loader-runner": {
4050
+ "version": "2.3.1",
4051
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz",
4052
+ "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==",
4053
+ "dev": true
4054
+ },
4055
+ "loader-utils": {
4056
+ "version": "1.1.0",
4057
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
4058
+ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
4059
+ "dev": true,
4060
+ "requires": {
4061
+ "big.js": "^3.1.3",
4062
+ "emojis-list": "^2.0.0",
4063
+ "json5": "^0.5.0"
4064
+ }
4065
+ },
4066
+ "locate-path": {
4067
+ "version": "2.0.0",
4068
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
4069
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
4070
+ "dev": true,
4071
+ "requires": {
4072
+ "p-locate": "^2.0.0",
4073
+ "path-exists": "^3.0.0"
4074
+ }
4075
+ },
4076
+ "lodash": {
4077
+ "version": "4.17.10",
4078
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
4079
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
4080
+ "dev": true
4081
+ },
4082
+ "lodash.assign": {
4083
+ "version": "4.2.0",
4084
+ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
4085
+ "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
4086
+ "dev": true
4087
+ },
4088
+ "lodash.camelcase": {
4089
+ "version": "4.3.0",
4090
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
4091
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
4092
+ "dev": true
4093
+ },
4094
+ "lodash.clonedeep": {
4095
+ "version": "4.5.0",
4096
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
4097
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
4098
+ "dev": true
4099
+ },
4100
+ "lodash.debounce": {
4101
+ "version": "4.0.8",
4102
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
4103
+ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
4104
+ "dev": true
4105
+ },
4106
+ "lodash.memoize": {
4107
+ "version": "4.1.2",
4108
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
4109
+ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
4110
+ "dev": true
4111
+ },
4112
+ "lodash.mergewith": {
4113
+ "version": "4.6.1",
4114
+ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
4115
+ "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
4116
+ "dev": true
4117
+ },
4118
+ "lodash.tail": {
4119
+ "version": "4.1.1",
4120
+ "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
4121
+ "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
4122
+ "dev": true
4123
+ },
4124
+ "lodash.uniq": {
4125
+ "version": "4.5.0",
4126
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
4127
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
4128
+ "dev": true
4129
+ },
4130
+ "longest": {
4131
+ "version": "1.0.1",
4132
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
4133
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
4134
+ "dev": true
4135
+ },
4136
+ "loose-envify": {
4137
+ "version": "1.4.0",
4138
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
4139
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
4140
+ "dev": true,
4141
+ "requires": {
4142
+ "js-tokens": "^3.0.0 || ^4.0.0"
4143
+ }
4144
+ },
4145
+ "loud-rejection": {
4146
+ "version": "1.6.0",
4147
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
4148
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
4149
+ "dev": true,
4150
+ "requires": {
4151
+ "currently-unhandled": "^0.4.1",
4152
+ "signal-exit": "^3.0.0"
4153
+ }
4154
+ },
4155
+ "lru-cache": {
4156
+ "version": "4.1.4",
4157
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.4.tgz",
4158
+ "integrity": "sha512-EPstzZ23znHUVLKj+lcXO1KvZkrlw+ZirdwvOmnAnA/1PB4ggyXJ77LRkCqkff+ShQ+cqoxCxLQOh4cKITO5iA==",
4159
+ "dev": true,
4160
+ "requires": {
4161
+ "pseudomap": "^1.0.2",
4162
+ "yallist": "^3.0.2"
4163
+ }
4164
+ },
4165
+ "make-dir": {
4166
+ "version": "1.3.0",
4167
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
4168
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
4169
+ "dev": true,
4170
+ "requires": {
4171
+ "pify": "^3.0.0"
4172
+ }
4173
+ },
4174
+ "map-cache": {
4175
+ "version": "0.2.2",
4176
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
4177
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
4178
+ "dev": true
4179
+ },
4180
+ "map-obj": {
4181
+ "version": "1.0.1",
4182
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
4183
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
4184
+ "dev": true
4185
+ },
4186
+ "map-visit": {
4187
+ "version": "1.0.0",
4188
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
4189
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
4190
+ "dev": true,
4191
+ "requires": {
4192
+ "object-visit": "^1.0.0"
4193
+ }
4194
+ },
4195
+ "math-expression-evaluator": {
4196
+ "version": "1.2.17",
4197
+ "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
4198
+ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
4199
+ "dev": true
4200
+ },
4201
+ "md5.js": {
4202
+ "version": "1.3.5",
4203
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
4204
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
4205
+ "dev": true,
4206
+ "requires": {
4207
+ "hash-base": "^3.0.0",
4208
+ "inherits": "^2.0.1",
4209
+ "safe-buffer": "^5.1.2"
4210
+ }
4211
+ },
4212
+ "mem": {
4213
+ "version": "1.1.0",
4214
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
4215
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
4216
+ "dev": true,
4217
+ "requires": {
4218
+ "mimic-fn": "^1.0.0"
4219
+ }
4220
+ },
4221
+ "memory-fs": {
4222
+ "version": "0.4.1",
4223
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
4224
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
4225
+ "dev": true,
4226
+ "requires": {
4227
+ "errno": "^0.1.3",
4228
+ "readable-stream": "^2.0.1"
4229
+ }
4230
+ },
4231
+ "meow": {
4232
+ "version": "3.7.0",
4233
+ "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
4234
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
4235
+ "dev": true,
4236
+ "requires": {
4237
+ "camelcase-keys": "^2.0.0",
4238
+ "decamelize": "^1.1.2",
4239
+ "loud-rejection": "^1.0.0",
4240
+ "map-obj": "^1.0.1",
4241
+ "minimist": "^1.1.3",
4242
+ "normalize-package-data": "^2.3.4",
4243
+ "object-assign": "^4.0.1",
4244
+ "read-pkg-up": "^1.0.1",
4245
+ "redent": "^1.0.0",
4246
+ "trim-newlines": "^1.0.0"
4247
+ },
4248
+ "dependencies": {
4249
+ "minimist": {
4250
+ "version": "1.2.0",
4251
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
4252
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
4253
+ "dev": true
4254
+ }
4255
+ }
4256
+ },
4257
+ "micromatch": {
4258
+ "version": "3.1.10",
4259
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
4260
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
4261
+ "dev": true,
4262
+ "requires": {
4263
+ "arr-diff": "^4.0.0",
4264
+ "array-unique": "^0.3.2",
4265
+ "braces": "^2.3.1",
4266
+ "define-property": "^2.0.2",
4267
+ "extend-shallow": "^3.0.2",
4268
+ "extglob": "^2.0.4",
4269
+ "fragment-cache": "^0.2.1",
4270
+ "kind-of": "^6.0.2",
4271
+ "nanomatch": "^1.2.9",
4272
+ "object.pick": "^1.3.0",
4273
+ "regex-not": "^1.0.0",
4274
+ "snapdragon": "^0.8.1",
4275
+ "to-regex": "^3.0.2"
4276
+ }
4277
+ },
4278
+ "miller-rabin": {
4279
+ "version": "4.0.1",
4280
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
4281
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
4282
+ "dev": true,
4283
+ "requires": {
4284
+ "bn.js": "^4.0.0",
4285
+ "brorand": "^1.0.1"
4286
+ }
4287
+ },
4288
+ "mime-db": {
4289
+ "version": "1.37.0",
4290
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
4291
+ "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
4292
+ "dev": true
4293
+ },
4294
+ "mime-types": {
4295
+ "version": "2.1.21",
4296
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
4297
+ "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
4298
+ "dev": true,
4299
+ "requires": {
4300
+ "mime-db": "~1.37.0"
4301
+ }
4302
+ },
4303
+ "mimic-fn": {
4304
+ "version": "1.2.0",
4305
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
4306
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
4307
+ "dev": true
4308
+ },
4309
+ "minimalistic-assert": {
4310
+ "version": "1.0.1",
4311
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
4312
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
4313
+ "dev": true
4314
+ },
4315
+ "minimalistic-crypto-utils": {
4316
+ "version": "1.0.1",
4317
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
4318
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
4319
+ "dev": true
4320
+ },
4321
+ "minimatch": {
4322
+ "version": "3.0.4",
4323
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
4324
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
4325
+ "dev": true,
4326
+ "requires": {
4327
+ "brace-expansion": "^1.1.7"
4328
+ }
4329
+ },
4330
+ "minimist": {
4331
+ "version": "0.0.8",
4332
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
4333
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
4334
+ "dev": true
4335
+ },
4336
+ "mixin-deep": {
4337
+ "version": "1.3.1",
4338
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
4339
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
4340
+ "dev": true,
4341
+ "requires": {
4342
+ "for-in": "^1.0.2",
4343
+ "is-extendable": "^1.0.1"
4344
+ },
4345
+ "dependencies": {
4346
+ "is-extendable": {
4347
+ "version": "1.0.1",
4348
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
4349
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
4350
+ "dev": true,
4351
+ "requires": {
4352
+ "is-plain-object": "^2.0.4"
4353
+ }
4354
+ }
4355
+ }
4356
+ },
4357
+ "mixin-object": {
4358
+ "version": "2.0.1",
4359
+ "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
4360
+ "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
4361
+ "dev": true,
4362
+ "requires": {
4363
+ "for-in": "^0.1.3",
4364
+ "is-extendable": "^0.1.1"
4365
+ },
4366
+ "dependencies": {
4367
+ "for-in": {
4368
+ "version": "0.1.8",
4369
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
4370
+ "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=",
4371
+ "dev": true
4372
+ }
4373
+ }
4374
+ },
4375
+ "mkdirp": {
4376
+ "version": "0.5.1",
4377
+ "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
4378
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
4379
+ "dev": true,
4380
+ "requires": {
4381
+ "minimist": "0.0.8"
4382
+ }
4383
+ },
4384
+ "ms": {
4385
+ "version": "2.0.0",
4386
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
4387
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
4388
+ "dev": true
4389
+ },
4390
+ "mute-stream": {
4391
+ "version": "0.0.5",
4392
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
4393
+ "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=",
4394
+ "dev": true
4395
+ },
4396
+ "nan": {
4397
+ "version": "2.11.1",
4398
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz",
4399
+ "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==",
4400
+ "dev": true
4401
+ },
4402
+ "nanomatch": {
4403
+ "version": "1.2.13",
4404
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
4405
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
4406
+ "dev": true,
4407
+ "requires": {
4408
+ "arr-diff": "^4.0.0",
4409
+ "array-unique": "^0.3.2",
4410
+ "define-property": "^2.0.2",
4411
+ "extend-shallow": "^3.0.2",
4412
+ "fragment-cache": "^0.2.1",
4413
+ "is-windows": "^1.0.2",
4414
+ "kind-of": "^6.0.2",
4415
+ "object.pick": "^1.3.0",
4416
+ "regex-not": "^1.0.0",
4417
+ "snapdragon": "^0.8.1",
4418
+ "to-regex": "^3.0.1"
4419
+ }
4420
+ },
4421
+ "natural-compare": {
4422
+ "version": "1.4.0",
4423
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
4424
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
4425
+ "dev": true
4426
+ },
4427
+ "neo-async": {
4428
+ "version": "2.6.0",
4429
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
4430
+ "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
4431
+ "dev": true
4432
+ },
4433
+ "next-tick": {
4434
+ "version": "1.0.0",
4435
+ "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
4436
+ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
4437
+ "dev": true
4438
+ },
4439
+ "nice-try": {
4440
+ "version": "1.0.5",
4441
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
4442
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
4443
+ "dev": true
4444
+ },
4445
+ "node-gyp": {
4446
+ "version": "3.8.0",
4447
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
4448
+ "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
4449
+ "dev": true,
4450
+ "requires": {
4451
+ "fstream": "^1.0.0",
4452
+ "glob": "^7.0.3",
4453
+ "graceful-fs": "^4.1.2",
4454
+ "mkdirp": "^0.5.0",
4455
+ "nopt": "2 || 3",
4456
+ "npmlog": "0 || 1 || 2 || 3 || 4",
4457
+ "osenv": "0",
4458
+ "request": "^2.87.0",
4459
+ "rimraf": "2",
4460
+ "semver": "~5.3.0",
4461
+ "tar": "^2.0.0",
4462
+ "which": "1"
4463
+ },
4464
+ "dependencies": {
4465
+ "semver": {
4466
+ "version": "5.3.0",
4467
+ "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
4468
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
4469
+ "dev": true
4470
+ }
4471
+ }
4472
+ },
4473
+ "node-libs-browser": {
4474
+ "version": "2.1.0",
4475
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
4476
+ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
4477
+ "dev": true,
4478
+ "requires": {
4479
+ "assert": "^1.1.1",
4480
+ "browserify-zlib": "^0.2.0",
4481
+ "buffer": "^4.3.0",
4482
+ "console-browserify": "^1.1.0",
4483
+ "constants-browserify": "^1.0.0",
4484
+ "crypto-browserify": "^3.11.0",
4485
+ "domain-browser": "^1.1.1",
4486
+ "events": "^1.0.0",
4487
+ "https-browserify": "^1.0.0",
4488
+ "os-browserify": "^0.3.0",
4489
+ "path-browserify": "0.0.0",
4490
+ "process": "^0.11.10",
4491
+ "punycode": "^1.2.4",
4492
+ "querystring-es3": "^0.2.0",
4493
+ "readable-stream": "^2.3.3",
4494
+ "stream-browserify": "^2.0.1",
4495
+ "stream-http": "^2.7.2",
4496
+ "string_decoder": "^1.0.0",
4497
+ "timers-browserify": "^2.0.4",
4498
+ "tty-browserify": "0.0.0",
4499
+ "url": "^0.11.0",
4500
+ "util": "^0.10.3",
4501
+ "vm-browserify": "0.0.4"
4502
+ },
4503
+ "dependencies": {
4504
+ "punycode": {
4505
+ "version": "1.4.1",
4506
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
4507
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
4508
+ "dev": true
4509
+ }
4510
+ }
4511
+ },
4512
+ "node-sass": {
4513
+ "version": "4.10.0",
4514
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.10.0.tgz",
4515
+ "integrity": "sha512-fDQJfXszw6vek63Fe/ldkYXmRYK/QS6NbvM3i5oEo9ntPDy4XX7BcKZyTKv+/kSSxRtXXc7l+MSwEmYc0CSy6Q==",
4516
+ "dev": true,
4517
+ "requires": {
4518
+ "async-foreach": "^0.1.3",
4519
+ "chalk": "^1.1.1",
4520
+ "cross-spawn": "^3.0.0",
4521
+ "gaze": "^1.0.0",
4522
+ "get-stdin": "^4.0.1",
4523
+ "glob": "^7.0.3",
4524
+ "in-publish": "^2.0.0",
4525
+ "lodash.assign": "^4.2.0",
4526
+ "lodash.clonedeep": "^4.3.2",
4527
+ "lodash.mergewith": "^4.6.0",
4528
+ "meow": "^3.7.0",
4529
+ "mkdirp": "^0.5.1",
4530
+ "nan": "^2.10.0",
4531
+ "node-gyp": "^3.8.0",
4532
+ "npmlog": "^4.0.0",
4533
+ "request": "^2.88.0",
4534
+ "sass-graph": "^2.2.4",
4535
+ "stdout-stream": "^1.4.0",
4536
+ "true-case-path": "^1.0.2"
4537
+ },
4538
+ "dependencies": {
4539
+ "cross-spawn": {
4540
+ "version": "3.0.1",
4541
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
4542
+ "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
4543
+ "dev": true,
4544
+ "requires": {
4545
+ "lru-cache": "^4.0.1",
4546
+ "which": "^1.2.9"
4547
+ }
4548
+ }
4549
+ }
4550
+ },
4551
+ "nopt": {
4552
+ "version": "3.0.6",
4553
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
4554
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
4555
+ "dev": true,
4556
+ "requires": {
4557
+ "abbrev": "1"
4558
+ }
4559
+ },
4560
+ "normalize-package-data": {
4561
+ "version": "2.4.0",
4562
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
4563
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
4564
+ "dev": true,
4565
+ "requires": {
4566
+ "hosted-git-info": "^2.1.4",
4567
+ "is-builtin-module": "^1.0.0",
4568
+ "semver": "2 || 3 || 4 || 5",
4569
+ "validate-npm-package-license": "^3.0.1"
4570
+ }
4571
+ },
4572
+ "normalize-path": {
4573
+ "version": "2.1.1",
4574
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
4575
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
4576
+ "dev": true,
4577
+ "requires": {
4578
+ "remove-trailing-separator": "^1.0.1"
4579
+ }
4580
+ },
4581
+ "normalize-range": {
4582
+ "version": "0.1.2",
4583
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
4584
+ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
4585
+ "dev": true
4586
+ },
4587
+ "normalize-url": {
4588
+ "version": "1.9.1",
4589
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
4590
+ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
4591
+ "dev": true,
4592
+ "requires": {
4593
+ "object-assign": "^4.0.1",
4594
+ "prepend-http": "^1.0.0",
4595
+ "query-string": "^4.1.0",
4596
+ "sort-keys": "^1.0.0"
4597
+ }
4598
+ },
4599
+ "npm-run-path": {
4600
+ "version": "2.0.2",
4601
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
4602
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
4603
+ "dev": true,
4604
+ "requires": {
4605
+ "path-key": "^2.0.0"
4606
+ }
4607
+ },
4608
+ "npmlog": {
4609
+ "version": "4.1.2",
4610
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
4611
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
4612
+ "dev": true,
4613
+ "requires": {
4614
+ "are-we-there-yet": "~1.1.2",
4615
+ "console-control-strings": "~1.1.0",
4616
+ "gauge": "~2.7.3",
4617
+ "set-blocking": "~2.0.0"
4618
+ }
4619
+ },
4620
+ "num2fraction": {
4621
+ "version": "1.2.2",
4622
+ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
4623
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
4624
+ "dev": true
4625
+ },
4626
+ "number-is-nan": {
4627
+ "version": "1.0.1",
4628
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
4629
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
4630
+ "dev": true
4631
+ },
4632
+ "oauth-sign": {
4633
+ "version": "0.9.0",
4634
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
4635
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
4636
+ "dev": true
4637
+ },
4638
+ "object-assign": {
4639
+ "version": "4.1.1",
4640
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
4641
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
4642
+ "dev": true
4643
+ },
4644
+ "object-copy": {
4645
+ "version": "0.1.0",
4646
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
4647
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
4648
+ "dev": true,
4649
+ "requires": {
4650
+ "copy-descriptor": "^0.1.0",
4651
+ "define-property": "^0.2.5",
4652
+ "kind-of": "^3.0.3"
4653
+ },
4654
+ "dependencies": {
4655
+ "define-property": {
4656
+ "version": "0.2.5",
4657
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
4658
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
4659
+ "dev": true,
4660
+ "requires": {
4661
+ "is-descriptor": "^0.1.0"
4662
+ }
4663
+ },
4664
+ "kind-of": {
4665
+ "version": "3.2.2",
4666
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
4667
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
4668
+ "dev": true,
4669
+ "requires": {
4670
+ "is-buffer": "^1.1.5"
4671
+ }
4672
+ }
4673
+ }
4674
+ },
4675
+ "object-visit": {
4676
+ "version": "1.0.1",
4677
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
4678
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
4679
+ "dev": true,
4680
+ "requires": {
4681
+ "isobject": "^3.0.0"
4682
+ }
4683
+ },
4684
+ "object.pick": {
4685
+ "version": "1.3.0",
4686
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
4687
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
4688
+ "dev": true,
4689
+ "requires": {
4690
+ "isobject": "^3.0.1"
4691
+ }
4692
+ },
4693
+ "once": {
4694
+ "version": "1.4.0",
4695
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
4696
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
4697
+ "dev": true,
4698
+ "requires": {
4699
+ "wrappy": "1"
4700
+ }
4701
+ },
4702
+ "onetime": {
4703
+ "version": "1.1.0",
4704
+ "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
4705
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
4706
+ "dev": true
4707
+ },
4708
+ "optionator": {
4709
+ "version": "0.8.2",
4710
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
4711
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
4712
+ "dev": true,
4713
+ "requires": {
4714
+ "deep-is": "~0.1.3",
4715
+ "fast-levenshtein": "~2.0.4",
4716
+ "levn": "~0.3.0",
4717
+ "prelude-ls": "~1.1.2",
4718
+ "type-check": "~0.3.2",
4719
+ "wordwrap": "~1.0.0"
4720
+ }
4721
+ },
4722
+ "os-browserify": {
4723
+ "version": "0.3.0",
4724
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
4725
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
4726
+ "dev": true
4727
+ },
4728
+ "os-homedir": {
4729
+ "version": "1.0.2",
4730
+ "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
4731
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
4732
+ "dev": true
4733
+ },
4734
+ "os-locale": {
4735
+ "version": "1.4.0",
4736
+ "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
4737
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
4738
+ "dev": true,
4739
+ "requires": {
4740
+ "lcid": "^1.0.0"
4741
+ }
4742
+ },
4743
+ "os-tmpdir": {
4744
+ "version": "1.0.2",
4745
+ "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
4746
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
4747
+ "dev": true
4748
+ },
4749
+ "osenv": {
4750
+ "version": "0.1.5",
4751
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
4752
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
4753
+ "dev": true,
4754
+ "requires": {
4755
+ "os-homedir": "^1.0.0",
4756
+ "os-tmpdir": "^1.0.0"
4757
+ }
4758
+ },
4759
+ "p-finally": {
4760
+ "version": "1.0.0",
4761
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
4762
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
4763
+ "dev": true
4764
+ },
4765
+ "p-limit": {
4766
+ "version": "1.3.0",
4767
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
4768
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
4769
+ "dev": true,
4770
+ "requires": {
4771
+ "p-try": "^1.0.0"
4772
+ }
4773
+ },
4774
+ "p-locate": {
4775
+ "version": "2.0.0",
4776
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
4777
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
4778
+ "dev": true,
4779
+ "requires": {
4780
+ "p-limit": "^1.1.0"
4781
+ }
4782
+ },
4783
+ "p-try": {
4784
+ "version": "1.0.0",
4785
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
4786
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
4787
+ "dev": true
4788
+ },
4789
+ "pako": {
4790
+ "version": "1.0.6",
4791
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
4792
+ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
4793
+ "dev": true
4794
+ },
4795
+ "parse-asn1": {
4796
+ "version": "5.1.1",
4797
+ "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
4798
+ "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
4799
+ "dev": true,
4800
+ "requires": {
4801
+ "asn1.js": "^4.0.0",
4802
+ "browserify-aes": "^1.0.0",
4803
+ "create-hash": "^1.1.0",
4804
+ "evp_bytestokey": "^1.0.0",
4805
+ "pbkdf2": "^3.0.3"
4806
+ }
4807
+ },
4808
+ "parse-json": {
4809
+ "version": "2.2.0",
4810
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
4811
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
4812
+ "dev": true,
4813
+ "requires": {
4814
+ "error-ex": "^1.2.0"
4815
+ }
4816
+ },
4817
+ "pascalcase": {
4818
+ "version": "0.1.1",
4819
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
4820
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
4821
+ "dev": true
4822
+ },
4823
+ "path-browserify": {
4824
+ "version": "0.0.0",
4825
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
4826
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
4827
+ "dev": true
4828
+ },
4829
+ "path-dirname": {
4830
+ "version": "1.0.2",
4831
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
4832
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
4833
+ "dev": true
4834
+ },
4835
+ "path-exists": {
4836
+ "version": "3.0.0",
4837
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
4838
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
4839
+ "dev": true
4840
+ },
4841
+ "path-is-absolute": {
4842
+ "version": "1.0.1",
4843
+ "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
4844
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
4845
+ "dev": true
4846
+ },
4847
+ "path-is-inside": {
4848
+ "version": "1.0.2",
4849
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
4850
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
4851
+ "dev": true
4852
+ },
4853
+ "path-key": {
4854
+ "version": "2.0.1",
4855
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
4856
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
4857
+ "dev": true
4858
+ },
4859
+ "path-parse": {
4860
+ "version": "1.0.6",
4861
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
4862
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
4863
+ "dev": true
4864
+ },
4865
+ "path-type": {
4866
+ "version": "1.1.0",
4867
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
4868
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
4869
+ "dev": true,
4870
+ "requires": {
4871
+ "graceful-fs": "^4.1.2",
4872
+ "pify": "^2.0.0",
4873
+ "pinkie-promise": "^2.0.0"
4874
+ },
4875
+ "dependencies": {
4876
+ "pify": {
4877
+ "version": "2.3.0",
4878
+ "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
4879
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
4880
+ "dev": true
4881
+ }
4882
+ }
4883
+ },
4884
+ "pbkdf2": {
4885
+ "version": "3.0.17",
4886
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
4887
+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
4888
+ "dev": true,
4889
+ "requires": {
4890
+ "create-hash": "^1.1.2",
4891
+ "create-hmac": "^1.1.4",
4892
+ "ripemd160": "^2.0.1",
4893
+ "safe-buffer": "^5.0.1",
4894
+ "sha.js": "^2.4.8"
4895
+ }
4896
+ },
4897
+ "performance-now": {
4898
+ "version": "2.1.0",
4899
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
4900
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
4901
+ "dev": true
4902
+ },
4903
+ "pify": {
4904
+ "version": "3.0.0",
4905
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
4906
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
4907
+ "dev": true
4908
+ },
4909
+ "pinkie": {
4910
+ "version": "2.0.4",
4911
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
4912
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
4913
+ "dev": true
4914
+ },
4915
+ "pinkie-promise": {
4916
+ "version": "2.0.1",
4917
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
4918
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
4919
+ "dev": true,
4920
+ "requires": {
4921
+ "pinkie": "^2.0.0"
4922
+ }
4923
+ },
4924
+ "pkg-dir": {
4925
+ "version": "2.0.0",
4926
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
4927
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
4928
+ "dev": true,
4929
+ "requires": {
4930
+ "find-up": "^2.1.0"
4931
+ }
4932
+ },
4933
+ "pluralize": {
4934
+ "version": "1.2.1",
4935
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
4936
+ "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=",
4937
+ "dev": true
4938
+ },
4939
+ "posix-character-classes": {
4940
+ "version": "0.1.1",
4941
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
4942
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
4943
+ "dev": true
4944
+ },
4945
+ "postcss": {
4946
+ "version": "5.2.18",
4947
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
4948
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
4949
+ "dev": true,
4950
+ "requires": {
4951
+ "chalk": "^1.1.3",
4952
+ "js-base64": "^2.1.9",
4953
+ "source-map": "^0.5.6",
4954
+ "supports-color": "^3.2.3"
4955
+ },
4956
+ "dependencies": {
4957
+ "supports-color": {
4958
+ "version": "3.2.3",
4959
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
4960
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
4961
+ "dev": true,
4962
+ "requires": {
4963
+ "has-flag": "^1.0.0"
4964
+ }
4965
+ }
4966
+ }
4967
+ },
4968
+ "postcss-calc": {
4969
+ "version": "5.3.1",
4970
+ "resolved": "http://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz",
4971
+ "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
4972
+ "dev": true,
4973
+ "requires": {
4974
+ "postcss": "^5.0.2",
4975
+ "postcss-message-helpers": "^2.0.0",
4976
+ "reduce-css-calc": "^1.2.6"
4977
+ }
4978
+ },
4979
+ "postcss-colormin": {
4980
+ "version": "2.2.2",
4981
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz",
4982
+ "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
4983
+ "dev": true,
4984
+ "requires": {
4985
+ "colormin": "^1.0.5",
4986
+ "postcss": "^5.0.13",
4987
+ "postcss-value-parser": "^3.2.3"
4988
+ }
4989
+ },
4990
+ "postcss-convert-values": {
4991
+ "version": "2.6.1",
4992
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz",
4993
+ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
4994
+ "dev": true,
4995
+ "requires": {
4996
+ "postcss": "^5.0.11",
4997
+ "postcss-value-parser": "^3.1.2"
4998
+ }
4999
+ },
5000
+ "postcss-discard-comments": {
5001
+ "version": "2.0.4",
5002
+ "resolved": "http://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz",
5003
+ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
5004
+ "dev": true,
5005
+ "requires": {
5006
+ "postcss": "^5.0.14"
5007
+ }
5008
+ },
5009
+ "postcss-discard-duplicates": {
5010
+ "version": "2.1.0",
5011
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz",
5012
+ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
5013
+ "dev": true,
5014
+ "requires": {
5015
+ "postcss": "^5.0.4"
5016
+ }
5017
+ },
5018
+ "postcss-discard-empty": {
5019
+ "version": "2.1.0",
5020
+ "resolved": "http://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz",
5021
+ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
5022
+ "dev": true,
5023
+ "requires": {
5024
+ "postcss": "^5.0.14"
5025
+ }
5026
+ },
5027
+ "postcss-discard-overridden": {
5028
+ "version": "0.1.1",
5029
+ "resolved": "http://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz",
5030
+ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
5031
+ "dev": true,
5032
+ "requires": {
5033
+ "postcss": "^5.0.16"
5034
+ }
5035
+ },
5036
+ "postcss-discard-unused": {
5037
+ "version": "2.2.3",
5038
+ "resolved": "http://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz",
5039
+ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
5040
+ "dev": true,
5041
+ "requires": {
5042
+ "postcss": "^5.0.14",
5043
+ "uniqs": "^2.0.0"
5044
+ }
5045
+ },
5046
+ "postcss-filter-plugins": {
5047
+ "version": "2.0.3",
5048
+ "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz",
5049
+ "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==",
5050
+ "dev": true,
5051
+ "requires": {
5052
+ "postcss": "^5.0.4"
5053
+ }
5054
+ },
5055
+ "postcss-merge-idents": {
5056
+ "version": "2.1.7",
5057
+ "resolved": "http://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz",
5058
+ "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
5059
+ "dev": true,
5060
+ "requires": {
5061
+ "has": "^1.0.1",
5062
+ "postcss": "^5.0.10",
5063
+ "postcss-value-parser": "^3.1.1"
5064
+ }
5065
+ },
5066
+ "postcss-merge-longhand": {
5067
+ "version": "2.0.2",
5068
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz",
5069
+ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
5070
+ "dev": true,
5071
+ "requires": {
5072
+ "postcss": "^5.0.4"
5073
+ }
5074
+ },
5075
+ "postcss-merge-rules": {
5076
+ "version": "2.1.2",
5077
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz",
5078
+ "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
5079
+ "dev": true,
5080
+ "requires": {
5081
+ "browserslist": "^1.5.2",
5082
+ "caniuse-api": "^1.5.2",
5083
+ "postcss": "^5.0.4",
5084
+ "postcss-selector-parser": "^2.2.2",
5085
+ "vendors": "^1.0.0"
5086
+ },
5087
+ "dependencies": {
5088
+ "browserslist": {
5089
+ "version": "1.7.7",
5090
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
5091
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
5092
+ "dev": true,
5093
+ "requires": {
5094
+ "caniuse-db": "^1.0.30000639",
5095
+ "electron-to-chromium": "^1.2.7"
5096
+ }
5097
+ }
5098
+ }
5099
+ },
5100
+ "postcss-message-helpers": {
5101
+ "version": "2.0.0",
5102
+ "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz",
5103
+ "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=",
5104
+ "dev": true
5105
+ },
5106
+ "postcss-minify-font-values": {
5107
+ "version": "1.0.5",
5108
+ "resolved": "http://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz",
5109
+ "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
5110
+ "dev": true,
5111
+ "requires": {
5112
+ "object-assign": "^4.0.1",
5113
+ "postcss": "^5.0.4",
5114
+ "postcss-value-parser": "^3.0.2"
5115
+ }
5116
+ },
5117
+ "postcss-minify-gradients": {
5118
+ "version": "1.0.5",
5119
+ "resolved": "http://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz",
5120
+ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
5121
+ "dev": true,
5122
+ "requires": {
5123
+ "postcss": "^5.0.12",
5124
+ "postcss-value-parser": "^3.3.0"
5125
+ }
5126
+ },
5127
+ "postcss-minify-params": {
5128
+ "version": "1.2.2",
5129
+ "resolved": "http://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz",
5130
+ "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
5131
+ "dev": true,
5132
+ "requires": {
5133
+ "alphanum-sort": "^1.0.1",
5134
+ "postcss": "^5.0.2",
5135
+ "postcss-value-parser": "^3.0.2",
5136
+ "uniqs": "^2.0.0"
5137
+ }
5138
+ },
5139
+ "postcss-minify-selectors": {
5140
+ "version": "2.1.1",
5141
+ "resolved": "http://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz",
5142
+ "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
5143
+ "dev": true,
5144
+ "requires": {
5145
+ "alphanum-sort": "^1.0.2",
5146
+ "has": "^1.0.1",
5147
+ "postcss": "^5.0.14",
5148
+ "postcss-selector-parser": "^2.0.0"
5149
+ }
5150
+ },
5151
+ "postcss-modules-extract-imports": {
5152
+ "version": "1.2.1",
5153
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz",
5154
+ "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==",
5155
+ "dev": true,
5156
+ "requires": {
5157
+ "postcss": "^6.0.1"
5158
+ },
5159
+ "dependencies": {
5160
+ "ansi-styles": {
5161
+ "version": "3.2.1",
5162
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
5163
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
5164
+ "dev": true,
5165
+ "requires": {
5166
+ "color-convert": "^1.9.0"
5167
+ }
5168
+ },
5169
+ "chalk": {
5170
+ "version": "2.4.1",
5171
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
5172
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
5173
+ "dev": true,
5174
+ "requires": {
5175
+ "ansi-styles": "^3.2.1",
5176
+ "escape-string-regexp": "^1.0.5",
5177
+ "supports-color": "^5.3.0"
5178
+ }
5179
+ },
5180
+ "has-flag": {
5181
+ "version": "3.0.0",
5182
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
5183
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
5184
+ "dev": true
5185
+ },
5186
+ "postcss": {
5187
+ "version": "6.0.23",
5188
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
5189
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
5190
+ "dev": true,
5191
+ "requires": {
5192
+ "chalk": "^2.4.1",
5193
+ "source-map": "^0.6.1",
5194
+ "supports-color": "^5.4.0"
5195
+ }
5196
+ },
5197
+ "source-map": {
5198
+ "version": "0.6.1",
5199
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
5200
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
5201
+ "dev": true
5202
+ },
5203
+ "supports-color": {
5204
+ "version": "5.5.0",
5205
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
5206
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
5207
+ "dev": true,
5208
+ "requires": {
5209
+ "has-flag": "^3.0.0"
5210
+ }
5211
+ }
5212
+ }
5213
+ },
5214
+ "postcss-modules-local-by-default": {
5215
+ "version": "1.2.0",
5216
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
5217
+ "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
5218
+ "dev": true,
5219
+ "requires": {
5220
+ "css-selector-tokenizer": "^0.7.0",
5221
+ "postcss": "^6.0.1"
5222
+ },
5223
+ "dependencies": {
5224
+ "ansi-styles": {
5225
+ "version": "3.2.1",
5226
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
5227
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
5228
+ "dev": true,
5229
+ "requires": {
5230
+ "color-convert": "^1.9.0"
5231
+ }
5232
+ },
5233
+ "chalk": {
5234
+ "version": "2.4.1",
5235
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
5236
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
5237
+ "dev": true,
5238
+ "requires": {
5239
+ "ansi-styles": "^3.2.1",
5240
+ "escape-string-regexp": "^1.0.5",
5241
+ "supports-color": "^5.3.0"
5242
+ }
5243
+ },
5244
+ "has-flag": {
5245
+ "version": "3.0.0",
5246
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
5247
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
5248
+ "dev": true
5249
+ },
5250
+ "postcss": {
5251
+ "version": "6.0.23",
5252
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
5253
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
5254
+ "dev": true,
5255
+ "requires": {
5256
+ "chalk": "^2.4.1",
5257
+ "source-map": "^0.6.1",
5258
+ "supports-color": "^5.4.0"
5259
+ }
5260
+ },
5261
+ "source-map": {
5262
+ "version": "0.6.1",
5263
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
5264
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
5265
+ "dev": true
5266
+ },
5267
+ "supports-color": {
5268
+ "version": "5.5.0",
5269
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
5270
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
5271
+ "dev": true,
5272
+ "requires": {
5273
+ "has-flag": "^3.0.0"
5274
+ }
5275
+ }
5276
+ }
5277
+ },
5278
+ "postcss-modules-scope": {
5279
+ "version": "1.1.0",
5280
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
5281
+ "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
5282
+ "dev": true,
5283
+ "requires": {
5284
+ "css-selector-tokenizer": "^0.7.0",
5285
+ "postcss": "^6.0.1"
5286
+ },
5287
+ "dependencies": {
5288
+ "ansi-styles": {
5289
+ "version": "3.2.1",
5290
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
5291
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
5292
+ "dev": true,
5293
+ "requires": {
5294
+ "color-convert": "^1.9.0"
5295
+ }
5296
+ },
5297
+ "chalk": {
5298
+ "version": "2.4.1",
5299
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
5300
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
5301
+ "dev": true,
5302
+ "requires": {
5303
+ "ansi-styles": "^3.2.1",
5304
+ "escape-string-regexp": "^1.0.5",
5305
+ "supports-color": "^5.3.0"
5306
+ }
5307
+ },
5308
+ "has-flag": {
5309
+ "version": "3.0.0",
5310
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
5311
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
5312
+ "dev": true
5313
+ },
5314
+ "postcss": {
5315
+ "version": "6.0.23",
5316
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
5317
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
5318
+ "dev": true,
5319
+ "requires": {
5320
+ "chalk": "^2.4.1",
5321
+ "source-map": "^0.6.1",
5322
+ "supports-color": "^5.4.0"
5323
+ }
5324
+ },
5325
+ "source-map": {
5326
+ "version": "0.6.1",
5327
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
5328
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
5329
+ "dev": true
5330
+ },
5331
+ "supports-color": {
5332
+ "version": "5.5.0",
5333
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
5334
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
5335
+ "dev": true,
5336
+ "requires": {
5337
+ "has-flag": "^3.0.0"
5338
+ }
5339
+ }
5340
+ }
5341
+ },
5342
+ "postcss-modules-values": {
5343
+ "version": "1.3.0",
5344
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
5345
+ "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
5346
+ "dev": true,
5347
+ "requires": {
5348
+ "icss-replace-symbols": "^1.1.0",
5349
+ "postcss": "^6.0.1"
5350
+ },
5351
+ "dependencies": {
5352
+ "ansi-styles": {
5353
+ "version": "3.2.1",
5354
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
5355
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
5356
+ "dev": true,
5357
+ "requires": {
5358
+ "color-convert": "^1.9.0"
5359
+ }
5360
+ },
5361
+ "chalk": {
5362
+ "version": "2.4.1",
5363
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
5364
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
5365
+ "dev": true,
5366
+ "requires": {
5367
+ "ansi-styles": "^3.2.1",
5368
+ "escape-string-regexp": "^1.0.5",
5369
+ "supports-color": "^5.3.0"
5370
+ }
5371
+ },
5372
+ "has-flag": {
5373
+ "version": "3.0.0",
5374
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
5375
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
5376
+ "dev": true
5377
+ },
5378
+ "postcss": {
5379
+ "version": "6.0.23",
5380
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
5381
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
5382
+ "dev": true,
5383
+ "requires": {
5384
+ "chalk": "^2.4.1",
5385
+ "source-map": "^0.6.1",
5386
+ "supports-color": "^5.4.0"
5387
+ }
5388
+ },
5389
+ "source-map": {
5390
+ "version": "0.6.1",
5391
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
5392
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
5393
+ "dev": true
5394
+ },
5395
+ "supports-color": {
5396
+ "version": "5.5.0",
5397
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
5398
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
5399
+ "dev": true,
5400
+ "requires": {
5401
+ "has-flag": "^3.0.0"
5402
+ }
5403
+ }
5404
+ }
5405
+ },
5406
+ "postcss-normalize-charset": {
5407
+ "version": "1.1.1",
5408
+ "resolved": "http://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz",
5409
+ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
5410
+ "dev": true,
5411
+ "requires": {
5412
+ "postcss": "^5.0.5"
5413
+ }
5414
+ },
5415
+ "postcss-normalize-url": {
5416
+ "version": "3.0.8",
5417
+ "resolved": "http://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz",
5418
+ "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
5419
+ "dev": true,
5420
+ "requires": {
5421
+ "is-absolute-url": "^2.0.0",
5422
+ "normalize-url": "^1.4.0",
5423
+ "postcss": "^5.0.14",
5424
+ "postcss-value-parser": "^3.2.3"
5425
+ }
5426
+ },
5427
+ "postcss-ordered-values": {
5428
+ "version": "2.2.3",
5429
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz",
5430
+ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
5431
+ "dev": true,
5432
+ "requires": {
5433
+ "postcss": "^5.0.4",
5434
+ "postcss-value-parser": "^3.0.1"
5435
+ }
5436
+ },
5437
+ "postcss-reduce-idents": {
5438
+ "version": "2.4.0",
5439
+ "resolved": "http://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz",
5440
+ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
5441
+ "dev": true,
5442
+ "requires": {
5443
+ "postcss": "^5.0.4",
5444
+ "postcss-value-parser": "^3.0.2"
5445
+ }
5446
+ },
5447
+ "postcss-reduce-initial": {
5448
+ "version": "1.0.1",
5449
+ "resolved": "http://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz",
5450
+ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
5451
+ "dev": true,
5452
+ "requires": {
5453
+ "postcss": "^5.0.4"
5454
+ }
5455
+ },
5456
+ "postcss-reduce-transforms": {
5457
+ "version": "1.0.4",
5458
+ "resolved": "http://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz",
5459
+ "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
5460
+ "dev": true,
5461
+ "requires": {
5462
+ "has": "^1.0.1",
5463
+ "postcss": "^5.0.8",
5464
+ "postcss-value-parser": "^3.0.1"
5465
+ }
5466
+ },
5467
+ "postcss-selector-parser": {
5468
+ "version": "2.2.3",
5469
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
5470
+ "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
5471
+ "dev": true,
5472
+ "requires": {
5473
+ "flatten": "^1.0.2",
5474
+ "indexes-of": "^1.0.1",
5475
+ "uniq": "^1.0.1"
5476
+ }
5477
+ },
5478
+ "postcss-svgo": {
5479
+ "version": "2.1.6",
5480
+ "resolved": "http://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz",
5481
+ "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
5482
+ "dev": true,
5483
+ "requires": {
5484
+ "is-svg": "^2.0.0",
5485
+ "postcss": "^5.0.14",
5486
+ "postcss-value-parser": "^3.2.3",
5487
+ "svgo": "^0.7.0"
5488
+ }
5489
+ },
5490
+ "postcss-unique-selectors": {
5491
+ "version": "2.0.2",
5492
+ "resolved": "http://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz",
5493
+ "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
5494
+ "dev": true,
5495
+ "requires": {
5496
+ "alphanum-sort": "^1.0.1",
5497
+ "postcss": "^5.0.4",
5498
+ "uniqs": "^2.0.0"
5499
+ }
5500
+ },
5501
+ "postcss-value-parser": {
5502
+ "version": "3.3.1",
5503
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
5504
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
5505
+ "dev": true
5506
+ },
5507
+ "postcss-zindex": {
5508
+ "version": "2.2.0",
5509
+ "resolved": "http://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz",
5510
+ "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
5511
+ "dev": true,
5512
+ "requires": {
5513
+ "has": "^1.0.1",
5514
+ "postcss": "^5.0.4",
5515
+ "uniqs": "^2.0.0"
5516
+ }
5517
+ },
5518
+ "prelude-ls": {
5519
+ "version": "1.1.2",
5520
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
5521
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
5522
+ "dev": true
5523
+ },
5524
+ "prepend-http": {
5525
+ "version": "1.0.4",
5526
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
5527
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
5528
+ "dev": true
5529
+ },
5530
+ "private": {
5531
+ "version": "0.1.8",
5532
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
5533
+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
5534
+ "dev": true
5535
+ },
5536
+ "process": {
5537
+ "version": "0.11.10",
5538
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
5539
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
5540
+ "dev": true
5541
+ },
5542
+ "process-nextick-args": {
5543
+ "version": "2.0.0",
5544
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
5545
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
5546
+ "dev": true
5547
+ },
5548
+ "progress": {
5549
+ "version": "1.1.8",
5550
+ "resolved": "http://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
5551
+ "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
5552
+ "dev": true
5553
+ },
5554
+ "prr": {
5555
+ "version": "1.0.1",
5556
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
5557
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
5558
+ "dev": true
5559
+ },
5560
+ "pseudomap": {
5561
+ "version": "1.0.2",
5562
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
5563
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
5564
+ "dev": true
5565
+ },
5566
+ "psl": {
5567
+ "version": "1.1.29",
5568
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
5569
+ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
5570
+ "dev": true
5571
+ },
5572
+ "public-encrypt": {
5573
+ "version": "4.0.3",
5574
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
5575
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
5576
+ "dev": true,
5577
+ "requires": {
5578
+ "bn.js": "^4.1.0",
5579
+ "browserify-rsa": "^4.0.0",
5580
+ "create-hash": "^1.1.0",
5581
+ "parse-asn1": "^5.0.0",
5582
+ "randombytes": "^2.0.1",
5583
+ "safe-buffer": "^5.1.2"
5584
+ }
5585
+ },
5586
+ "punycode": {
5587
+ "version": "2.1.1",
5588
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
5589
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
5590
+ "dev": true
5591
+ },
5592
+ "q": {
5593
+ "version": "1.5.1",
5594
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
5595
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
5596
+ "dev": true
5597
+ },
5598
+ "qs": {
5599
+ "version": "6.5.2",
5600
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
5601
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
5602
+ "dev": true
5603
+ },
5604
+ "query-string": {
5605
+ "version": "4.3.4",
5606
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
5607
+ "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
5608
+ "dev": true,
5609
+ "requires": {
5610
+ "object-assign": "^4.1.0",
5611
+ "strict-uri-encode": "^1.0.0"
5612
+ }
5613
+ },
5614
+ "querystring": {
5615
+ "version": "0.2.0",
5616
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
5617
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
5618
+ "dev": true
5619
+ },
5620
+ "querystring-es3": {
5621
+ "version": "0.2.1",
5622
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
5623
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
5624
+ "dev": true
5625
+ },
5626
+ "randombytes": {
5627
+ "version": "2.0.6",
5628
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
5629
+ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
5630
+ "dev": true,
5631
+ "requires": {
5632
+ "safe-buffer": "^5.1.0"
5633
+ }
5634
+ },
5635
+ "randomfill": {
5636
+ "version": "1.0.4",
5637
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
5638
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
5639
+ "dev": true,
5640
+ "requires": {
5641
+ "randombytes": "^2.0.5",
5642
+ "safe-buffer": "^5.1.0"
5643
+ }
5644
+ },
5645
+ "read-pkg": {
5646
+ "version": "1.1.0",
5647
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
5648
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
5649
+ "dev": true,
5650
+ "requires": {
5651
+ "load-json-file": "^1.0.0",
5652
+ "normalize-package-data": "^2.3.2",
5653
+ "path-type": "^1.0.0"
5654
+ }
5655
+ },
5656
+ "read-pkg-up": {
5657
+ "version": "1.0.1",
5658
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
5659
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
5660
+ "dev": true,
5661
+ "requires": {
5662
+ "find-up": "^1.0.0",
5663
+ "read-pkg": "^1.0.0"
5664
+ },
5665
+ "dependencies": {
5666
+ "find-up": {
5667
+ "version": "1.1.2",
5668
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
5669
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
5670
+ "dev": true,
5671
+ "requires": {
5672
+ "path-exists": "^2.0.0",
5673
+ "pinkie-promise": "^2.0.0"
5674
+ }
5675
+ },
5676
+ "path-exists": {
5677
+ "version": "2.1.0",
5678
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
5679
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
5680
+ "dev": true,
5681
+ "requires": {
5682
+ "pinkie-promise": "^2.0.0"
5683
+ }
5684
+ }
5685
+ }
5686
+ },
5687
+ "readable-stream": {
5688
+ "version": "2.3.6",
5689
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
5690
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
5691
+ "dev": true,
5692
+ "requires": {
5693
+ "core-util-is": "~1.0.0",
5694
+ "inherits": "~2.0.3",
5695
+ "isarray": "~1.0.0",
5696
+ "process-nextick-args": "~2.0.0",
5697
+ "safe-buffer": "~5.1.1",
5698
+ "string_decoder": "~1.1.1",
5699
+ "util-deprecate": "~1.0.1"
5700
+ }
5701
+ },
5702
+ "readdirp": {
5703
+ "version": "2.2.1",
5704
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
5705
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
5706
+ "dev": true,
5707
+ "requires": {
5708
+ "graceful-fs": "^4.1.11",
5709
+ "micromatch": "^3.1.10",
5710
+ "readable-stream": "^2.0.2"
5711
+ }
5712
+ },
5713
+ "readline2": {
5714
+ "version": "1.0.1",
5715
+ "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
5716
+ "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=",
5717
+ "dev": true,
5718
+ "requires": {
5719
+ "code-point-at": "^1.0.0",
5720
+ "is-fullwidth-code-point": "^1.0.0",
5721
+ "mute-stream": "0.0.5"
5722
+ }
5723
+ },
5724
+ "rechoir": {
5725
+ "version": "0.6.2",
5726
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
5727
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
5728
+ "dev": true,
5729
+ "requires": {
5730
+ "resolve": "^1.1.6"
5731
+ }
5732
+ },
5733
+ "redent": {
5734
+ "version": "1.0.0",
5735
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
5736
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
5737
+ "dev": true,
5738
+ "requires": {
5739
+ "indent-string": "^2.1.0",
5740
+ "strip-indent": "^1.0.1"
5741
+ }
5742
+ },
5743
+ "reduce-css-calc": {
5744
+ "version": "1.3.0",
5745
+ "resolved": "http://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz",
5746
+ "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
5747
+ "dev": true,
5748
+ "requires": {
5749
+ "balanced-match": "^0.4.2",
5750
+ "math-expression-evaluator": "^1.2.14",
5751
+ "reduce-function-call": "^1.0.1"
5752
+ },
5753
+ "dependencies": {
5754
+ "balanced-match": {
5755
+ "version": "0.4.2",
5756
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
5757
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
5758
+ "dev": true
5759
+ }
5760
+ }
5761
+ },
5762
+ "reduce-function-call": {
5763
+ "version": "1.0.2",
5764
+ "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz",
5765
+ "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
5766
+ "dev": true,
5767
+ "requires": {
5768
+ "balanced-match": "^0.4.2"
5769
+ },
5770
+ "dependencies": {
5771
+ "balanced-match": {
5772
+ "version": "0.4.2",
5773
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
5774
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
5775
+ "dev": true
5776
+ }
5777
+ }
5778
+ },
5779
+ "regenerate": {
5780
+ "version": "1.4.0",
5781
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
5782
+ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
5783
+ "dev": true
5784
+ },
5785
+ "regenerator-runtime": {
5786
+ "version": "0.11.1",
5787
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
5788
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
5789
+ "dev": true
5790
+ },
5791
+ "regenerator-transform": {
5792
+ "version": "0.10.1",
5793
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
5794
+ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
5795
+ "dev": true,
5796
+ "requires": {
5797
+ "babel-runtime": "^6.18.0",
5798
+ "babel-types": "^6.19.0",
5799
+ "private": "^0.1.6"
5800
+ }
5801
+ },
5802
+ "regex-not": {
5803
+ "version": "1.0.2",
5804
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
5805
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
5806
+ "dev": true,
5807
+ "requires": {
5808
+ "extend-shallow": "^3.0.2",
5809
+ "safe-regex": "^1.1.0"
5810
+ }
5811
+ },
5812
+ "regexpu-core": {
5813
+ "version": "2.0.0",
5814
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
5815
+ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
5816
+ "dev": true,
5817
+ "requires": {
5818
+ "regenerate": "^1.2.1",
5819
+ "regjsgen": "^0.2.0",
5820
+ "regjsparser": "^0.1.4"
5821
+ }
5822
+ },
5823
+ "regjsgen": {
5824
+ "version": "0.2.0",
5825
+ "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
5826
+ "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
5827
+ "dev": true
5828
+ },
5829
+ "regjsparser": {
5830
+ "version": "0.1.5",
5831
+ "resolved": "http://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
5832
+ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
5833
+ "dev": true,
5834
+ "requires": {
5835
+ "jsesc": "~0.5.0"
5836
+ },
5837
+ "dependencies": {
5838
+ "jsesc": {
5839
+ "version": "0.5.0",
5840
+ "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
5841
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
5842
+ "dev": true
5843
+ }
5844
+ }
5845
+ },
5846
+ "remove-trailing-separator": {
5847
+ "version": "1.1.0",
5848
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
5849
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
5850
+ "dev": true
5851
+ },
5852
+ "repeat-element": {
5853
+ "version": "1.1.3",
5854
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
5855
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
5856
+ "dev": true
5857
+ },
5858
+ "repeat-string": {
5859
+ "version": "1.6.1",
5860
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
5861
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
5862
+ "dev": true
5863
+ },
5864
+ "repeating": {
5865
+ "version": "2.0.1",
5866
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
5867
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
5868
+ "dev": true,
5869
+ "requires": {
5870
+ "is-finite": "^1.0.0"
5871
+ }
5872
+ },
5873
+ "request": {
5874
+ "version": "2.88.0",
5875
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
5876
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
5877
+ "dev": true,
5878
+ "requires": {
5879
+ "aws-sign2": "~0.7.0",
5880
+ "aws4": "^1.8.0",
5881
+ "caseless": "~0.12.0",
5882
+ "combined-stream": "~1.0.6",
5883
+ "extend": "~3.0.2",
5884
+ "forever-agent": "~0.6.1",
5885
+ "form-data": "~2.3.2",
5886
+ "har-validator": "~5.1.0",
5887
+ "http-signature": "~1.2.0",
5888
+ "is-typedarray": "~1.0.0",
5889
+ "isstream": "~0.1.2",
5890
+ "json-stringify-safe": "~5.0.1",
5891
+ "mime-types": "~2.1.19",
5892
+ "oauth-sign": "~0.9.0",
5893
+ "performance-now": "^2.1.0",
5894
+ "qs": "~6.5.2",
5895
+ "safe-buffer": "^5.1.2",
5896
+ "tough-cookie": "~2.4.3",
5897
+ "tunnel-agent": "^0.6.0",
5898
+ "uuid": "^3.3.2"
5899
+ }
5900
+ },
5901
+ "require-directory": {
5902
+ "version": "2.1.1",
5903
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
5904
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
5905
+ "dev": true
5906
+ },
5907
+ "require-main-filename": {
5908
+ "version": "1.0.1",
5909
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
5910
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
5911
+ "dev": true
5912
+ },
5913
+ "require-uncached": {
5914
+ "version": "1.0.3",
5915
+ "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
5916
+ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
5917
+ "dev": true,
5918
+ "requires": {
5919
+ "caller-path": "^0.1.0",
5920
+ "resolve-from": "^1.0.0"
5921
+ }
5922
+ },
5923
+ "resolve": {
5924
+ "version": "1.8.1",
5925
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
5926
+ "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
5927
+ "dev": true,
5928
+ "requires": {
5929
+ "path-parse": "^1.0.5"
5930
+ }
5931
+ },
5932
+ "resolve-from": {
5933
+ "version": "1.0.1",
5934
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
5935
+ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
5936
+ "dev": true
5937
+ },
5938
+ "resolve-url": {
5939
+ "version": "0.2.1",
5940
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
5941
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
5942
+ "dev": true
5943
+ },
5944
+ "restore-cursor": {
5945
+ "version": "1.0.1",
5946
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
5947
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
5948
+ "dev": true,
5949
+ "requires": {
5950
+ "exit-hook": "^1.0.0",
5951
+ "onetime": "^1.0.0"
5952
+ }
5953
+ },
5954
+ "ret": {
5955
+ "version": "0.1.15",
5956
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
5957
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
5958
+ "dev": true
5959
+ },
5960
+ "right-align": {
5961
+ "version": "0.1.3",
5962
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
5963
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
5964
+ "dev": true,
5965
+ "requires": {
5966
+ "align-text": "^0.1.1"
5967
+ }
5968
+ },
5969
+ "rimraf": {
5970
+ "version": "2.6.2",
5971
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
5972
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
5973
+ "dev": true,
5974
+ "requires": {
5975
+ "glob": "^7.0.5"
5976
+ }
5977
+ },
5978
+ "ripemd160": {
5979
+ "version": "2.0.2",
5980
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
5981
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
5982
+ "dev": true,
5983
+ "requires": {
5984
+ "hash-base": "^3.0.0",
5985
+ "inherits": "^2.0.1"
5986
+ }
5987
+ },
5988
+ "run-async": {
5989
+ "version": "0.1.0",
5990
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
5991
+ "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
5992
+ "dev": true,
5993
+ "requires": {
5994
+ "once": "^1.3.0"
5995
+ }
5996
+ },
5997
+ "rx-lite": {
5998
+ "version": "3.1.2",
5999
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
6000
+ "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=",
6001
+ "dev": true
6002
+ },
6003
+ "safe-buffer": {
6004
+ "version": "5.1.2",
6005
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
6006
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
6007
+ "dev": true
6008
+ },
6009
+ "safe-regex": {
6010
+ "version": "1.1.0",
6011
+ "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
6012
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
6013
+ "dev": true,
6014
+ "requires": {
6015
+ "ret": "~0.1.10"
6016
+ }
6017
+ },
6018
+ "safer-buffer": {
6019
+ "version": "2.1.2",
6020
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
6021
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
6022
+ "dev": true
6023
+ },
6024
+ "sass-graph": {
6025
+ "version": "2.2.4",
6026
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
6027
+ "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
6028
+ "dev": true,
6029
+ "requires": {
6030
+ "glob": "^7.0.0",
6031
+ "lodash": "^4.0.0",
6032
+ "scss-tokenizer": "^0.2.3",
6033
+ "yargs": "^7.0.0"
6034
+ }
6035
+ },
6036
+ "sass-loader": {
6037
+ "version": "6.0.7",
6038
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.7.tgz",
6039
+ "integrity": "sha512-JoiyD00Yo1o61OJsoP2s2kb19L1/Y2p3QFcCdWdF6oomBGKVYuZyqHWemRBfQ2uGYsk+CH3eCguXNfpjzlcpaA==",
6040
+ "dev": true,
6041
+ "requires": {
6042
+ "clone-deep": "^2.0.1",
6043
+ "loader-utils": "^1.0.1",
6044
+ "lodash.tail": "^4.1.1",
6045
+ "neo-async": "^2.5.0",
6046
+ "pify": "^3.0.0"
6047
+ }
6048
+ },
6049
+ "sax": {
6050
+ "version": "1.2.4",
6051
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
6052
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
6053
+ "dev": true
6054
+ },
6055
+ "schema-utils": {
6056
+ "version": "0.3.0",
6057
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
6058
+ "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
6059
+ "dev": true,
6060
+ "requires": {
6061
+ "ajv": "^5.0.0"
6062
+ },
6063
+ "dependencies": {
6064
+ "ajv": {
6065
+ "version": "5.5.2",
6066
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
6067
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
6068
+ "dev": true,
6069
+ "requires": {
6070
+ "co": "^4.6.0",
6071
+ "fast-deep-equal": "^1.0.0",
6072
+ "fast-json-stable-stringify": "^2.0.0",
6073
+ "json-schema-traverse": "^0.3.0"
6074
+ }
6075
+ }
6076
+ }
6077
+ },
6078
+ "scss-tokenizer": {
6079
+ "version": "0.2.3",
6080
+ "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
6081
+ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
6082
+ "dev": true,
6083
+ "requires": {
6084
+ "js-base64": "^2.1.8",
6085
+ "source-map": "^0.4.2"
6086
+ },
6087
+ "dependencies": {
6088
+ "source-map": {
6089
+ "version": "0.4.4",
6090
+ "resolved": "http://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
6091
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
6092
+ "dev": true,
6093
+ "requires": {
6094
+ "amdefine": ">=0.0.4"
6095
+ }
6096
+ }
6097
+ }
6098
+ },
6099
+ "semver": {
6100
+ "version": "5.6.0",
6101
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
6102
+ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
6103
+ "dev": true
6104
+ },
6105
+ "set-blocking": {
6106
+ "version": "2.0.0",
6107
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
6108
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
6109
+ "dev": true
6110
+ },
6111
+ "set-value": {
6112
+ "version": "2.0.0",
6113
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
6114
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
6115
+ "dev": true,
6116
+ "requires": {
6117
+ "extend-shallow": "^2.0.1",
6118
+ "is-extendable": "^0.1.1",
6119
+ "is-plain-object": "^2.0.3",
6120
+ "split-string": "^3.0.1"
6121
+ },
6122
+ "dependencies": {
6123
+ "extend-shallow": {
6124
+ "version": "2.0.1",
6125
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
6126
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
6127
+ "dev": true,
6128
+ "requires": {
6129
+ "is-extendable": "^0.1.0"
6130
+ }
6131
+ }
6132
+ }
6133
+ },
6134
+ "setimmediate": {
6135
+ "version": "1.0.5",
6136
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
6137
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
6138
+ "dev": true
6139
+ },
6140
+ "sha.js": {
6141
+ "version": "2.4.11",
6142
+ "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
6143
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
6144
+ "dev": true,
6145
+ "requires": {
6146
+ "inherits": "^2.0.1",
6147
+ "safe-buffer": "^5.0.1"
6148
+ }
6149
+ },
6150
+ "shallow-clone": {
6151
+ "version": "1.0.0",
6152
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
6153
+ "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
6154
+ "dev": true,
6155
+ "requires": {
6156
+ "is-extendable": "^0.1.1",
6157
+ "kind-of": "^5.0.0",
6158
+ "mixin-object": "^2.0.1"
6159
+ },
6160
+ "dependencies": {
6161
+ "kind-of": {
6162
+ "version": "5.1.0",
6163
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
6164
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
6165
+ "dev": true
6166
+ }
6167
+ }
6168
+ },
6169
+ "shebang-command": {
6170
+ "version": "1.2.0",
6171
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
6172
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
6173
+ "dev": true,
6174
+ "requires": {
6175
+ "shebang-regex": "^1.0.0"
6176
+ }
6177
+ },
6178
+ "shebang-regex": {
6179
+ "version": "1.0.0",
6180
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
6181
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
6182
+ "dev": true
6183
+ },
6184
+ "shelljs": {
6185
+ "version": "0.7.8",
6186
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
6187
+ "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
6188
+ "dev": true,
6189
+ "requires": {
6190
+ "glob": "^7.0.0",
6191
+ "interpret": "^1.0.0",
6192
+ "rechoir": "^0.6.2"
6193
+ }
6194
+ },
6195
+ "signal-exit": {
6196
+ "version": "3.0.2",
6197
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
6198
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
6199
+ "dev": true
6200
+ },
6201
+ "slash": {
6202
+ "version": "1.0.0",
6203
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
6204
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
6205
+ "dev": true
6206
+ },
6207
+ "slice-ansi": {
6208
+ "version": "0.0.4",
6209
+ "resolved": "http://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
6210
+ "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
6211
+ "dev": true
6212
+ },
6213
+ "snapdragon": {
6214
+ "version": "0.8.2",
6215
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
6216
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
6217
+ "dev": true,
6218
+ "requires": {
6219
+ "base": "^0.11.1",
6220
+ "debug": "^2.2.0",
6221
+ "define-property": "^0.2.5",
6222
+ "extend-shallow": "^2.0.1",
6223
+ "map-cache": "^0.2.2",
6224
+ "source-map": "^0.5.6",
6225
+ "source-map-resolve": "^0.5.0",
6226
+ "use": "^3.1.0"
6227
+ },
6228
+ "dependencies": {
6229
+ "define-property": {
6230
+ "version": "0.2.5",
6231
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
6232
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
6233
+ "dev": true,
6234
+ "requires": {
6235
+ "is-descriptor": "^0.1.0"
6236
+ }
6237
+ },
6238
+ "extend-shallow": {
6239
+ "version": "2.0.1",
6240
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
6241
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
6242
+ "dev": true,
6243
+ "requires": {
6244
+ "is-extendable": "^0.1.0"
6245
+ }
6246
+ }
6247
+ }
6248
+ },
6249
+ "snapdragon-node": {
6250
+ "version": "2.1.1",
6251
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
6252
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
6253
+ "dev": true,
6254
+ "requires": {
6255
+ "define-property": "^1.0.0",
6256
+ "isobject": "^3.0.0",
6257
+ "snapdragon-util": "^3.0.1"
6258
+ },
6259
+ "dependencies": {
6260
+ "define-property": {
6261
+ "version": "1.0.0",
6262
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
6263
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
6264
+ "dev": true,
6265
+ "requires": {
6266
+ "is-descriptor": "^1.0.0"
6267
+ }
6268
+ },
6269
+ "is-accessor-descriptor": {
6270
+ "version": "1.0.0",
6271
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
6272
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
6273
+ "dev": true,
6274
+ "requires": {
6275
+ "kind-of": "^6.0.0"
6276
+ }
6277
+ },
6278
+ "is-data-descriptor": {
6279
+ "version": "1.0.0",
6280
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
6281
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
6282
+ "dev": true,
6283
+ "requires": {
6284
+ "kind-of": "^6.0.0"
6285
+ }
6286
+ },
6287
+ "is-descriptor": {
6288
+ "version": "1.0.2",
6289
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
6290
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
6291
+ "dev": true,
6292
+ "requires": {
6293
+ "is-accessor-descriptor": "^1.0.0",
6294
+ "is-data-descriptor": "^1.0.0",
6295
+ "kind-of": "^6.0.2"
6296
+ }
6297
+ }
6298
+ }
6299
+ },
6300
+ "snapdragon-util": {
6301
+ "version": "3.0.1",
6302
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
6303
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
6304
+ "dev": true,
6305
+ "requires": {
6306
+ "kind-of": "^3.2.0"
6307
+ },
6308
+ "dependencies": {
6309
+ "kind-of": {
6310
+ "version": "3.2.2",
6311
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
6312
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
6313
+ "dev": true,
6314
+ "requires": {
6315
+ "is-buffer": "^1.1.5"
6316
+ }
6317
+ }
6318
+ }
6319
+ },
6320
+ "sort-keys": {
6321
+ "version": "1.1.2",
6322
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
6323
+ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
6324
+ "dev": true,
6325
+ "requires": {
6326
+ "is-plain-obj": "^1.0.0"
6327
+ }
6328
+ },
6329
+ "source-list-map": {
6330
+ "version": "2.0.1",
6331
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
6332
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
6333
+ "dev": true
6334
+ },
6335
+ "source-map": {
6336
+ "version": "0.5.7",
6337
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
6338
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
6339
+ "dev": true
6340
+ },
6341
+ "source-map-resolve": {
6342
+ "version": "0.5.2",
6343
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
6344
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
6345
+ "dev": true,
6346
+ "requires": {
6347
+ "atob": "^2.1.1",
6348
+ "decode-uri-component": "^0.2.0",
6349
+ "resolve-url": "^0.2.1",
6350
+ "source-map-url": "^0.4.0",
6351
+ "urix": "^0.1.0"
6352
+ }
6353
+ },
6354
+ "source-map-support": {
6355
+ "version": "0.4.18",
6356
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
6357
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
6358
+ "dev": true,
6359
+ "requires": {
6360
+ "source-map": "^0.5.6"
6361
+ }
6362
+ },
6363
+ "source-map-url": {
6364
+ "version": "0.4.0",
6365
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
6366
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
6367
+ "dev": true
6368
+ },
6369
+ "spdx-correct": {
6370
+ "version": "3.0.2",
6371
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz",
6372
+ "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==",
6373
+ "dev": true,
6374
+ "requires": {
6375
+ "spdx-expression-parse": "^3.0.0",
6376
+ "spdx-license-ids": "^3.0.0"
6377
+ }
6378
+ },
6379
+ "spdx-exceptions": {
6380
+ "version": "2.2.0",
6381
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
6382
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
6383
+ "dev": true
6384
+ },
6385
+ "spdx-expression-parse": {
6386
+ "version": "3.0.0",
6387
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
6388
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
6389
+ "dev": true,
6390
+ "requires": {
6391
+ "spdx-exceptions": "^2.1.0",
6392
+ "spdx-license-ids": "^3.0.0"
6393
+ }
6394
+ },
6395
+ "spdx-license-ids": {
6396
+ "version": "3.0.2",
6397
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz",
6398
+ "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==",
6399
+ "dev": true
6400
+ },
6401
+ "split-string": {
6402
+ "version": "3.1.0",
6403
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
6404
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
6405
+ "dev": true,
6406
+ "requires": {
6407
+ "extend-shallow": "^3.0.0"
6408
+ }
6409
+ },
6410
+ "sprintf-js": {
6411
+ "version": "1.0.3",
6412
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
6413
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
6414
+ "dev": true
6415
+ },
6416
+ "sshpk": {
6417
+ "version": "1.15.2",
6418
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz",
6419
+ "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==",
6420
+ "dev": true,
6421
+ "requires": {
6422
+ "asn1": "~0.2.3",
6423
+ "assert-plus": "^1.0.0",
6424
+ "bcrypt-pbkdf": "^1.0.0",
6425
+ "dashdash": "^1.12.0",
6426
+ "ecc-jsbn": "~0.1.1",
6427
+ "getpass": "^0.1.1",
6428
+ "jsbn": "~0.1.0",
6429
+ "safer-buffer": "^2.0.2",
6430
+ "tweetnacl": "~0.14.0"
6431
+ }
6432
+ },
6433
+ "static-extend": {
6434
+ "version": "0.1.2",
6435
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
6436
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
6437
+ "dev": true,
6438
+ "requires": {
6439
+ "define-property": "^0.2.5",
6440
+ "object-copy": "^0.1.0"
6441
+ },
6442
+ "dependencies": {
6443
+ "define-property": {
6444
+ "version": "0.2.5",
6445
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
6446
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
6447
+ "dev": true,
6448
+ "requires": {
6449
+ "is-descriptor": "^0.1.0"
6450
+ }
6451
+ }
6452
+ }
6453
+ },
6454
+ "stdout-stream": {
6455
+ "version": "1.4.1",
6456
+ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
6457
+ "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
6458
+ "dev": true,
6459
+ "requires": {
6460
+ "readable-stream": "^2.0.1"
6461
+ }
6462
+ },
6463
+ "stream-browserify": {
6464
+ "version": "2.0.1",
6465
+ "resolved": "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
6466
+ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
6467
+ "dev": true,
6468
+ "requires": {
6469
+ "inherits": "~2.0.1",
6470
+ "readable-stream": "^2.0.2"
6471
+ }
6472
+ },
6473
+ "stream-http": {
6474
+ "version": "2.8.3",
6475
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
6476
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
6477
+ "dev": true,
6478
+ "requires": {
6479
+ "builtin-status-codes": "^3.0.0",
6480
+ "inherits": "^2.0.1",
6481
+ "readable-stream": "^2.3.6",
6482
+ "to-arraybuffer": "^1.0.0",
6483
+ "xtend": "^4.0.0"
6484
+ }
6485
+ },
6486
+ "strict-uri-encode": {
6487
+ "version": "1.1.0",
6488
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
6489
+ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
6490
+ "dev": true
6491
+ },
6492
+ "string-width": {
6493
+ "version": "1.0.2",
6494
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
6495
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
6496
+ "dev": true,
6497
+ "requires": {
6498
+ "code-point-at": "^1.0.0",
6499
+ "is-fullwidth-code-point": "^1.0.0",
6500
+ "strip-ansi": "^3.0.0"
6501
+ }
6502
+ },
6503
+ "string_decoder": {
6504
+ "version": "1.1.1",
6505
+ "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
6506
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
6507
+ "dev": true,
6508
+ "requires": {
6509
+ "safe-buffer": "~5.1.0"
6510
+ }
6511
+ },
6512
+ "strip-ansi": {
6513
+ "version": "3.0.1",
6514
+ "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
6515
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
6516
+ "dev": true,
6517
+ "requires": {
6518
+ "ansi-regex": "^2.0.0"
6519
+ }
6520
+ },
6521
+ "strip-bom": {
6522
+ "version": "3.0.0",
6523
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
6524
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
6525
+ "dev": true
6526
+ },
6527
+ "strip-eof": {
6528
+ "version": "1.0.0",
6529
+ "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
6530
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
6531
+ "dev": true
6532
+ },
6533
+ "strip-indent": {
6534
+ "version": "1.0.1",
6535
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
6536
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
6537
+ "dev": true,
6538
+ "requires": {
6539
+ "get-stdin": "^4.0.1"
6540
+ }
6541
+ },
6542
+ "strip-json-comments": {
6543
+ "version": "2.0.1",
6544
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
6545
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
6546
+ "dev": true
6547
+ },
6548
+ "supports-color": {
6549
+ "version": "2.0.0",
6550
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
6551
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
6552
+ "dev": true
6553
+ },
6554
+ "svgo": {
6555
+ "version": "0.7.2",
6556
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz",
6557
+ "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
6558
+ "dev": true,
6559
+ "requires": {
6560
+ "coa": "~1.0.1",
6561
+ "colors": "~1.1.2",
6562
+ "csso": "~2.3.1",
6563
+ "js-yaml": "~3.7.0",
6564
+ "mkdirp": "~0.5.1",
6565
+ "sax": "~1.2.1",
6566
+ "whet.extend": "~0.9.9"
6567
+ }
6568
+ },
6569
+ "table": {
6570
+ "version": "3.8.3",
6571
+ "resolved": "http://registry.npmjs.org/table/-/table-3.8.3.tgz",
6572
+ "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=",
6573
+ "dev": true,
6574
+ "requires": {
6575
+ "ajv": "^4.7.0",
6576
+ "ajv-keywords": "^1.0.0",
6577
+ "chalk": "^1.1.1",
6578
+ "lodash": "^4.0.0",
6579
+ "slice-ansi": "0.0.4",
6580
+ "string-width": "^2.0.0"
6581
+ },
6582
+ "dependencies": {
6583
+ "ansi-regex": {
6584
+ "version": "3.0.0",
6585
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
6586
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
6587
+ "dev": true
6588
+ },
6589
+ "is-fullwidth-code-point": {
6590
+ "version": "2.0.0",
6591
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
6592
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
6593
+ "dev": true
6594
+ },
6595
+ "string-width": {
6596
+ "version": "2.1.1",
6597
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
6598
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
6599
+ "dev": true,
6600
+ "requires": {
6601
+ "is-fullwidth-code-point": "^2.0.0",
6602
+ "strip-ansi": "^4.0.0"
6603
+ }
6604
+ },
6605
+ "strip-ansi": {
6606
+ "version": "4.0.0",
6607
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
6608
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
6609
+ "dev": true,
6610
+ "requires": {
6611
+ "ansi-regex": "^3.0.0"
6612
+ }
6613
+ }
6614
+ }
6615
+ },
6616
+ "tapable": {
6617
+ "version": "0.2.9",
6618
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz",
6619
+ "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==",
6620
+ "dev": true
6621
+ },
6622
+ "tar": {
6623
+ "version": "2.2.1",
6624
+ "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
6625
+ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
6626
+ "dev": true,
6627
+ "requires": {
6628
+ "block-stream": "*",
6629
+ "fstream": "^1.0.2",
6630
+ "inherits": "2"
6631
+ }
6632
+ },
6633
+ "text-table": {
6634
+ "version": "0.2.0",
6635
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
6636
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
6637
+ "dev": true
6638
+ },
6639
+ "through": {
6640
+ "version": "2.3.8",
6641
+ "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
6642
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
6643
+ "dev": true
6644
+ },
6645
+ "timers-browserify": {
6646
+ "version": "2.0.10",
6647
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
6648
+ "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
6649
+ "dev": true,
6650
+ "requires": {
6651
+ "setimmediate": "^1.0.4"
6652
+ }
6653
+ },
6654
+ "to-arraybuffer": {
6655
+ "version": "1.0.1",
6656
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
6657
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
6658
+ "dev": true
6659
+ },
6660
+ "to-fast-properties": {
6661
+ "version": "1.0.3",
6662
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
6663
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
6664
+ "dev": true
6665
+ },
6666
+ "to-object-path": {
6667
+ "version": "0.3.0",
6668
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
6669
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
6670
+ "dev": true,
6671
+ "requires": {
6672
+ "kind-of": "^3.0.2"
6673
+ },
6674
+ "dependencies": {
6675
+ "kind-of": {
6676
+ "version": "3.2.2",
6677
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
6678
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
6679
+ "dev": true,
6680
+ "requires": {
6681
+ "is-buffer": "^1.1.5"
6682
+ }
6683
+ }
6684
+ }
6685
+ },
6686
+ "to-regex": {
6687
+ "version": "3.0.2",
6688
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
6689
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
6690
+ "dev": true,
6691
+ "requires": {
6692
+ "define-property": "^2.0.2",
6693
+ "extend-shallow": "^3.0.2",
6694
+ "regex-not": "^1.0.2",
6695
+ "safe-regex": "^1.1.0"
6696
+ }
6697
+ },
6698
+ "to-regex-range": {
6699
+ "version": "2.1.1",
6700
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
6701
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
6702
+ "dev": true,
6703
+ "requires": {
6704
+ "is-number": "^3.0.0",
6705
+ "repeat-string": "^1.6.1"
6706
+ }
6707
+ },
6708
+ "tough-cookie": {
6709
+ "version": "2.4.3",
6710
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
6711
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
6712
+ "dev": true,
6713
+ "requires": {
6714
+ "psl": "^1.1.24",
6715
+ "punycode": "^1.4.1"
6716
+ },
6717
+ "dependencies": {
6718
+ "punycode": {
6719
+ "version": "1.4.1",
6720
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
6721
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
6722
+ "dev": true
6723
+ }
6724
+ }
6725
+ },
6726
+ "trim-newlines": {
6727
+ "version": "1.0.0",
6728
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
6729
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
6730
+ "dev": true
6731
+ },
6732
+ "trim-right": {
6733
+ "version": "1.0.1",
6734
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
6735
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
6736
+ "dev": true
6737
+ },
6738
+ "true-case-path": {
6739
+ "version": "1.0.3",
6740
+ "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
6741
+ "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
6742
+ "dev": true,
6743
+ "requires": {
6744
+ "glob": "^7.1.2"
6745
+ }
6746
+ },
6747
+ "tty-browserify": {
6748
+ "version": "0.0.0",
6749
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
6750
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
6751
+ "dev": true
6752
+ },
6753
+ "tunnel-agent": {
6754
+ "version": "0.6.0",
6755
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
6756
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
6757
+ "dev": true,
6758
+ "requires": {
6759
+ "safe-buffer": "^5.0.1"
6760
+ }
6761
+ },
6762
+ "tweetnacl": {
6763
+ "version": "0.14.5",
6764
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
6765
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
6766
+ "dev": true
6767
+ },
6768
+ "type-check": {
6769
+ "version": "0.3.2",
6770
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
6771
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
6772
+ "dev": true,
6773
+ "requires": {
6774
+ "prelude-ls": "~1.1.2"
6775
+ }
6776
+ },
6777
+ "typedarray": {
6778
+ "version": "0.0.6",
6779
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
6780
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
6781
+ "dev": true
6782
+ },
6783
+ "uglify-js": {
6784
+ "version": "2.8.29",
6785
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
6786
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
6787
+ "dev": true,
6788
+ "requires": {
6789
+ "source-map": "~0.5.1",
6790
+ "uglify-to-browserify": "~1.0.0",
6791
+ "yargs": "~3.10.0"
6792
+ },
6793
+ "dependencies": {
6794
+ "camelcase": {
6795
+ "version": "1.2.1",
6796
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
6797
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
6798
+ "dev": true
6799
+ },
6800
+ "cliui": {
6801
+ "version": "2.1.0",
6802
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
6803
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
6804
+ "dev": true,
6805
+ "requires": {
6806
+ "center-align": "^0.1.1",
6807
+ "right-align": "^0.1.1",
6808
+ "wordwrap": "0.0.2"
6809
+ }
6810
+ },
6811
+ "wordwrap": {
6812
+ "version": "0.0.2",
6813
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
6814
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
6815
+ "dev": true
6816
+ },
6817
+ "yargs": {
6818
+ "version": "3.10.0",
6819
+ "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
6820
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
6821
+ "dev": true,
6822
+ "requires": {
6823
+ "camelcase": "^1.0.2",
6824
+ "cliui": "^2.1.0",
6825
+ "decamelize": "^1.0.0",
6826
+ "window-size": "0.1.0"
6827
+ }
6828
+ }
6829
+ }
6830
+ },
6831
+ "uglify-to-browserify": {
6832
+ "version": "1.0.2",
6833
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
6834
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
6835
+ "dev": true,
6836
+ "optional": true
6837
+ },
6838
+ "uglifyjs-webpack-plugin": {
6839
+ "version": "0.4.6",
6840
+ "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz",
6841
+ "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
6842
+ "dev": true,
6843
+ "requires": {
6844
+ "source-map": "^0.5.6",
6845
+ "uglify-js": "^2.8.29",
6846
+ "webpack-sources": "^1.0.1"
6847
+ }
6848
+ },
6849
+ "union-value": {
6850
+ "version": "1.0.0",
6851
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
6852
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
6853
+ "dev": true,
6854
+ "requires": {
6855
+ "arr-union": "^3.1.0",
6856
+ "get-value": "^2.0.6",
6857
+ "is-extendable": "^0.1.1",
6858
+ "set-value": "^0.4.3"
6859
+ },
6860
+ "dependencies": {
6861
+ "extend-shallow": {
6862
+ "version": "2.0.1",
6863
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
6864
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
6865
+ "dev": true,
6866
+ "requires": {
6867
+ "is-extendable": "^0.1.0"
6868
+ }
6869
+ },
6870
+ "set-value": {
6871
+ "version": "0.4.3",
6872
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
6873
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
6874
+ "dev": true,
6875
+ "requires": {
6876
+ "extend-shallow": "^2.0.1",
6877
+ "is-extendable": "^0.1.1",
6878
+ "is-plain-object": "^2.0.1",
6879
+ "to-object-path": "^0.3.0"
6880
+ }
6881
+ }
6882
+ }
6883
+ },
6884
+ "uniq": {
6885
+ "version": "1.0.1",
6886
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
6887
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
6888
+ "dev": true
6889
+ },
6890
+ "uniqs": {
6891
+ "version": "2.0.0",
6892
+ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
6893
+ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
6894
+ "dev": true
6895
+ },
6896
+ "unset-value": {
6897
+ "version": "1.0.0",
6898
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
6899
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
6900
+ "dev": true,
6901
+ "requires": {
6902
+ "has-value": "^0.3.1",
6903
+ "isobject": "^3.0.0"
6904
+ },
6905
+ "dependencies": {
6906
+ "has-value": {
6907
+ "version": "0.3.1",
6908
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
6909
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
6910
+ "dev": true,
6911
+ "requires": {
6912
+ "get-value": "^2.0.3",
6913
+ "has-values": "^0.1.4",
6914
+ "isobject": "^2.0.0"
6915
+ },
6916
+ "dependencies": {
6917
+ "isobject": {
6918
+ "version": "2.1.0",
6919
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
6920
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
6921
+ "dev": true,
6922
+ "requires": {
6923
+ "isarray": "1.0.0"
6924
+ }
6925
+ }
6926
+ }
6927
+ },
6928
+ "has-values": {
6929
+ "version": "0.1.4",
6930
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
6931
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
6932
+ "dev": true
6933
+ }
6934
+ }
6935
+ },
6936
+ "upath": {
6937
+ "version": "1.1.0",
6938
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
6939
+ "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
6940
+ "dev": true
6941
+ },
6942
+ "uri-js": {
6943
+ "version": "4.2.2",
6944
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
6945
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
6946
+ "dev": true,
6947
+ "requires": {
6948
+ "punycode": "^2.1.0"
6949
+ }
6950
+ },
6951
+ "urix": {
6952
+ "version": "0.1.0",
6953
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
6954
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
6955
+ "dev": true
6956
+ },
6957
+ "url": {
6958
+ "version": "0.11.0",
6959
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
6960
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
6961
+ "dev": true,
6962
+ "requires": {
6963
+ "punycode": "1.3.2",
6964
+ "querystring": "0.2.0"
6965
+ },
6966
+ "dependencies": {
6967
+ "punycode": {
6968
+ "version": "1.3.2",
6969
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
6970
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
6971
+ "dev": true
6972
+ }
6973
+ }
6974
+ },
6975
+ "use": {
6976
+ "version": "3.1.1",
6977
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
6978
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
6979
+ "dev": true
6980
+ },
6981
+ "user-home": {
6982
+ "version": "2.0.0",
6983
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
6984
+ "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=",
6985
+ "dev": true,
6986
+ "requires": {
6987
+ "os-homedir": "^1.0.0"
6988
+ }
6989
+ },
6990
+ "util": {
6991
+ "version": "0.10.4",
6992
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
6993
+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
6994
+ "dev": true,
6995
+ "requires": {
6996
+ "inherits": "2.0.3"
6997
+ }
6998
+ },
6999
+ "util-deprecate": {
7000
+ "version": "1.0.2",
7001
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
7002
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
7003
+ "dev": true
7004
+ },
7005
+ "uuid": {
7006
+ "version": "3.3.2",
7007
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
7008
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
7009
+ "dev": true
7010
+ },
7011
+ "validate-npm-package-license": {
7012
+ "version": "3.0.4",
7013
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
7014
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
7015
+ "dev": true,
7016
+ "requires": {
7017
+ "spdx-correct": "^3.0.0",
7018
+ "spdx-expression-parse": "^3.0.0"
7019
+ }
7020
+ },
7021
+ "vendors": {
7022
+ "version": "1.0.2",
7023
+ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz",
7024
+ "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==",
7025
+ "dev": true
7026
+ },
7027
+ "verror": {
7028
+ "version": "1.10.0",
7029
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
7030
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
7031
+ "dev": true,
7032
+ "requires": {
7033
+ "assert-plus": "^1.0.0",
7034
+ "core-util-is": "1.0.2",
7035
+ "extsprintf": "^1.2.0"
7036
+ }
7037
+ },
7038
+ "vm-browserify": {
7039
+ "version": "0.0.4",
7040
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
7041
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
7042
+ "dev": true,
7043
+ "requires": {
7044
+ "indexof": "0.0.1"
7045
+ }
7046
+ },
7047
+ "watchpack": {
7048
+ "version": "1.6.0",
7049
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
7050
+ "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
7051
+ "dev": true,
7052
+ "requires": {
7053
+ "chokidar": "^2.0.2",
7054
+ "graceful-fs": "^4.1.2",
7055
+ "neo-async": "^2.5.0"
7056
+ }
7057
+ },
7058
+ "webpack": {
7059
+ "version": "3.12.0",
7060
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz",
7061
+ "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==",
7062
+ "dev": true,
7063
+ "requires": {
7064
+ "acorn": "^5.0.0",
7065
+ "acorn-dynamic-import": "^2.0.0",
7066
+ "ajv": "^6.1.0",
7067
+ "ajv-keywords": "^3.1.0",
7068
+ "async": "^2.1.2",
7069
+ "enhanced-resolve": "^3.4.0",
7070
+ "escope": "^3.6.0",
7071
+ "interpret": "^1.0.0",
7072
+ "json-loader": "^0.5.4",
7073
+ "json5": "^0.5.1",
7074
+ "loader-runner": "^2.3.0",
7075
+ "loader-utils": "^1.1.0",
7076
+ "memory-fs": "~0.4.1",
7077
+ "mkdirp": "~0.5.0",
7078
+ "node-libs-browser": "^2.0.0",
7079
+ "source-map": "^0.5.3",
7080
+ "supports-color": "^4.2.1",
7081
+ "tapable": "^0.2.7",
7082
+ "uglifyjs-webpack-plugin": "^0.4.6",
7083
+ "watchpack": "^1.4.0",
7084
+ "webpack-sources": "^1.0.1",
7085
+ "yargs": "^8.0.2"
7086
+ },
7087
+ "dependencies": {
7088
+ "ajv": {
7089
+ "version": "6.5.5",
7090
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz",
7091
+ "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==",
7092
+ "dev": true,
7093
+ "requires": {
7094
+ "fast-deep-equal": "^2.0.1",
7095
+ "fast-json-stable-stringify": "^2.0.0",
7096
+ "json-schema-traverse": "^0.4.1",
7097
+ "uri-js": "^4.2.2"
7098
+ }
7099
+ },
7100
+ "ajv-keywords": {
7101
+ "version": "3.2.0",
7102
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
7103
+ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
7104
+ "dev": true
7105
+ },
7106
+ "ansi-regex": {
7107
+ "version": "3.0.0",
7108
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
7109
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
7110
+ "dev": true
7111
+ },
7112
+ "camelcase": {
7113
+ "version": "4.1.0",
7114
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
7115
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
7116
+ "dev": true
7117
+ },
7118
+ "fast-deep-equal": {
7119
+ "version": "2.0.1",
7120
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
7121
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
7122
+ "dev": true
7123
+ },
7124
+ "has-flag": {
7125
+ "version": "2.0.0",
7126
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
7127
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
7128
+ "dev": true
7129
+ },
7130
+ "is-fullwidth-code-point": {
7131
+ "version": "2.0.0",
7132
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
7133
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
7134
+ "dev": true
7135
+ },
7136
+ "json-schema-traverse": {
7137
+ "version": "0.4.1",
7138
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
7139
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
7140
+ "dev": true
7141
+ },
7142
+ "load-json-file": {
7143
+ "version": "2.0.0",
7144
+ "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
7145
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
7146
+ "dev": true,
7147
+ "requires": {
7148
+ "graceful-fs": "^4.1.2",
7149
+ "parse-json": "^2.2.0",
7150
+ "pify": "^2.0.0",
7151
+ "strip-bom": "^3.0.0"
7152
+ }
7153
+ },
7154
+ "os-locale": {
7155
+ "version": "2.1.0",
7156
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
7157
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
7158
+ "dev": true,
7159
+ "requires": {
7160
+ "execa": "^0.7.0",
7161
+ "lcid": "^1.0.0",
7162
+ "mem": "^1.1.0"
7163
+ }
7164
+ },
7165
+ "path-type": {
7166
+ "version": "2.0.0",
7167
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
7168
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
7169
+ "dev": true,
7170
+ "requires": {
7171
+ "pify": "^2.0.0"
7172
+ }
7173
+ },
7174
+ "pify": {
7175
+ "version": "2.3.0",
7176
+ "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
7177
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
7178
+ "dev": true
7179
+ },
7180
+ "read-pkg": {
7181
+ "version": "2.0.0",
7182
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
7183
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
7184
+ "dev": true,
7185
+ "requires": {
7186
+ "load-json-file": "^2.0.0",
7187
+ "normalize-package-data": "^2.3.2",
7188
+ "path-type": "^2.0.0"
7189
+ }
7190
+ },
7191
+ "read-pkg-up": {
7192
+ "version": "2.0.0",
7193
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
7194
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
7195
+ "dev": true,
7196
+ "requires": {
7197
+ "find-up": "^2.0.0",
7198
+ "read-pkg": "^2.0.0"
7199
+ }
7200
+ },
7201
+ "string-width": {
7202
+ "version": "2.1.1",
7203
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
7204
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
7205
+ "dev": true,
7206
+ "requires": {
7207
+ "is-fullwidth-code-point": "^2.0.0",
7208
+ "strip-ansi": "^4.0.0"
7209
+ }
7210
+ },
7211
+ "strip-ansi": {
7212
+ "version": "4.0.0",
7213
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
7214
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
7215
+ "dev": true,
7216
+ "requires": {
7217
+ "ansi-regex": "^3.0.0"
7218
+ }
7219
+ },
7220
+ "supports-color": {
7221
+ "version": "4.5.0",
7222
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
7223
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
7224
+ "dev": true,
7225
+ "requires": {
7226
+ "has-flag": "^2.0.0"
7227
+ }
7228
+ },
7229
+ "which-module": {
7230
+ "version": "2.0.0",
7231
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
7232
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
7233
+ "dev": true
7234
+ },
7235
+ "yargs": {
7236
+ "version": "8.0.2",
7237
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
7238
+ "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
7239
+ "dev": true,
7240
+ "requires": {
7241
+ "camelcase": "^4.1.0",
7242
+ "cliui": "^3.2.0",
7243
+ "decamelize": "^1.1.1",
7244
+ "get-caller-file": "^1.0.1",
7245
+ "os-locale": "^2.0.0",
7246
+ "read-pkg-up": "^2.0.0",
7247
+ "require-directory": "^2.1.1",
7248
+ "require-main-filename": "^1.0.1",
7249
+ "set-blocking": "^2.0.0",
7250
+ "string-width": "^2.0.0",
7251
+ "which-module": "^2.0.0",
7252
+ "y18n": "^3.2.1",
7253
+ "yargs-parser": "^7.0.0"
7254
+ }
7255
+ },
7256
+ "yargs-parser": {
7257
+ "version": "7.0.0",
7258
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
7259
+ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
7260
+ "dev": true,
7261
+ "requires": {
7262
+ "camelcase": "^4.1.0"
7263
+ }
7264
+ }
7265
+ }
7266
+ },
7267
+ "webpack-sources": {
7268
+ "version": "1.3.0",
7269
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
7270
+ "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
7271
+ "dev": true,
7272
+ "requires": {
7273
+ "source-list-map": "^2.0.0",
7274
+ "source-map": "~0.6.1"
7275
+ },
7276
+ "dependencies": {
7277
+ "source-map": {
7278
+ "version": "0.6.1",
7279
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
7280
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
7281
+ "dev": true
7282
+ }
7283
+ }
7284
+ },
7285
+ "whet.extend": {
7286
+ "version": "0.9.9",
7287
+ "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
7288
+ "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=",
7289
+ "dev": true
7290
+ },
7291
+ "which": {
7292
+ "version": "1.3.1",
7293
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
7294
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
7295
+ "dev": true,
7296
+ "requires": {
7297
+ "isexe": "^2.0.0"
7298
+ }
7299
+ },
7300
+ "which-module": {
7301
+ "version": "1.0.0",
7302
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
7303
+ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
7304
+ "dev": true
7305
+ },
7306
+ "wide-align": {
7307
+ "version": "1.1.3",
7308
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
7309
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
7310
+ "dev": true,
7311
+ "requires": {
7312
+ "string-width": "^1.0.2 || 2"
7313
+ }
7314
+ },
7315
+ "window-size": {
7316
+ "version": "0.1.0",
7317
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
7318
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
7319
+ "dev": true
7320
+ },
7321
+ "wordwrap": {
7322
+ "version": "1.0.0",
7323
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
7324
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
7325
+ "dev": true
7326
+ },
7327
+ "wrap-ansi": {
7328
+ "version": "2.1.0",
7329
+ "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
7330
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
7331
+ "dev": true,
7332
+ "requires": {
7333
+ "string-width": "^1.0.1",
7334
+ "strip-ansi": "^3.0.1"
7335
+ }
7336
+ },
7337
+ "wrappy": {
7338
+ "version": "1.0.2",
7339
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
7340
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
7341
+ "dev": true
7342
+ },
7343
+ "write": {
7344
+ "version": "0.2.1",
7345
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
7346
+ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
7347
+ "dev": true,
7348
+ "requires": {
7349
+ "mkdirp": "^0.5.1"
7350
+ }
7351
+ },
7352
+ "xtend": {
7353
+ "version": "4.0.1",
7354
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
7355
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
7356
+ "dev": true
7357
+ },
7358
+ "y18n": {
7359
+ "version": "3.2.1",
7360
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
7361
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
7362
+ "dev": true
7363
+ },
7364
+ "yallist": {
7365
+ "version": "3.0.3",
7366
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
7367
+ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
7368
+ "dev": true
7369
+ },
7370
+ "yargs": {
7371
+ "version": "7.1.0",
7372
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
7373
+ "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
7374
+ "dev": true,
7375
+ "requires": {
7376
+ "camelcase": "^3.0.0",
7377
+ "cliui": "^3.2.0",
7378
+ "decamelize": "^1.1.1",
7379
+ "get-caller-file": "^1.0.1",
7380
+ "os-locale": "^1.4.0",
7381
+ "read-pkg-up": "^1.0.1",
7382
+ "require-directory": "^2.1.1",
7383
+ "require-main-filename": "^1.0.1",
7384
+ "set-blocking": "^2.0.0",
7385
+ "string-width": "^1.0.2",
7386
+ "which-module": "^1.0.0",
7387
+ "y18n": "^3.2.1",
7388
+ "yargs-parser": "^5.0.0"
7389
+ },
7390
+ "dependencies": {
7391
+ "camelcase": {
7392
+ "version": "3.0.0",
7393
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
7394
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
7395
+ "dev": true
7396
+ }
7397
+ }
7398
+ },
7399
+ "yargs-parser": {
7400
+ "version": "5.0.0",
7401
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
7402
+ "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
7403
+ "dev": true,
7404
+ "requires": {
7405
+ "camelcase": "^3.0.0"
7406
+ },
7407
+ "dependencies": {
7408
+ "camelcase": {
7409
+ "version": "3.0.0",
7410
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
7411
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
7412
+ "dev": true
7413
+ }
7414
+ }
7415
+ }
7416
+ }
7417
+ }
js/app/gutenberg_support/src/assets/styles/index.scss CHANGED
@@ -2,13 +2,16 @@
2
  .ta-link-button path {
3
  fill: #30b2a6;
4
  }
5
- .ta-unlink-button svg {
 
6
  background: #30b2a6 !important;
 
7
  }
8
  }
9
 
10
 
11
- ta {
 
12
  -webkit-box-shadow: inset 0 -1px 0 #30b2a6;
13
  box-shadow: inset 0 -1px 0 #30b2a6;
14
  color: #222;
@@ -24,6 +27,17 @@ ta {
24
  box-shadow: inset 0 0 0 #30b2a6, 0 3px 0 #30b2a6;
25
  }
26
  }
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  .ta-search-input {
29
 
@@ -38,4 +52,149 @@ ta {
38
  color: #fff;
39
  padding: 5px 10px;
40
  }
41
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  .ta-link-button path {
3
  fill: #30b2a6;
4
  }
5
+ .ta-unlink-button svg,
6
+ .ta-edit-image-button svg {
7
  background: #30b2a6 !important;
8
+ color: #ffffff !important;
9
  }
10
  }
11
 
12
 
13
+ ta,
14
+ .editor-rich-text ta {
15
  -webkit-box-shadow: inset 0 -1px 0 #30b2a6;
16
  box-shadow: inset 0 -1px 0 #30b2a6;
17
  color: #222;
27
  box-shadow: inset 0 0 0 #30b2a6, 0 3px 0 #30b2a6;
28
  }
29
  }
30
+ .wp-block-ta-image {
31
+ ta {
32
+ -webkit-box-shadow: none;
33
+ box-shadow: none;
34
+ color: inherit;
35
+ }
36
+ figcaption ta {
37
+ -webkit-box-shadow: inset 0 -1px 0 #30b2a6;
38
+ box-shadow: inset 0 -1px 0 #30b2a6;
39
+ }
40
+ }
41
 
42
  .ta-search-input {
43
 
52
  color: #fff;
53
  padding: 5px 10px;
54
  }
55
+ }
56
+
57
+ .editor-styles-wrapper {
58
+ .ta-image-sel-wrap {
59
+ width: 100%;
60
+
61
+ h3 {
62
+ font-size: 16px;
63
+ margin: 0;
64
+ }
65
+
66
+ .ta-image-selection {
67
+
68
+ button {
69
+ background: transparent;
70
+ border: none;
71
+ cursor: pointer;
72
+
73
+ img {
74
+ max-width: 100px;
75
+ height: auto;
76
+ cursor: pointer;
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+
83
+
84
+ .wp-block-image {
85
+ max-width: 100%;
86
+ margin-bottom: 1em;
87
+ margin-left: 0;
88
+ margin-right: 0
89
+
90
+ img {
91
+ max-width: 100%;
92
+ }
93
+
94
+ &.aligncenter {
95
+ text-align: center;
96
+ }
97
+
98
+ &.alignfull,
99
+ &.alignwide {
100
+
101
+ img {
102
+ width: 100%;
103
+ }
104
+ }
105
+
106
+ &.aligncenter,
107
+ &.alignleft,
108
+ &.alignright {
109
+ display: table;
110
+ margin-left: 0;
111
+ margin-right: 0;
112
+
113
+ > figcaption {
114
+ display: table-caption;
115
+ caption-side: bottom
116
+ }
117
+ }
118
+
119
+ &.alignleft {
120
+ float: left;
121
+ margin-right: 1em
122
+ }
123
+
124
+ &.alignright {
125
+ float: right;
126
+ margin-left: 1em
127
+ }
128
+
129
+ &.aligncenter {
130
+ margin-left: auto;
131
+ margin-right: auto
132
+ }
133
+ }
134
+
135
+ [data-type="ta/image"][data-align=center],
136
+ [data-type="ta/image"][data-align=left],
137
+ [data-type="ta/image"][data-align=right] {
138
+
139
+ .editor-block-list__block-edit {
140
+
141
+ figure {
142
+ margin: 0;
143
+ display: table;
144
+ }
145
+
146
+ .editor-rich-text {
147
+ display: table-caption;
148
+ caption-side: bottom
149
+ }
150
+ }
151
+ }
152
+
153
+ [data-type="ta/image"][data-align=full],
154
+ [data-type="ta/image"][data-align=wide] {
155
+
156
+ figure {
157
+
158
+ img {
159
+ width: 100%
160
+ }
161
+ }
162
+ }
163
+
164
+ [data-type="ta/image"] {
165
+
166
+ .editor-block-list__block-edit {
167
+
168
+ figure {
169
+
170
+ &.is-resized {
171
+ margin: 0;
172
+ display: table;
173
+
174
+ .editor-rich-text {
175
+ display: table-caption;
176
+ caption-side: bottom;
177
+ }
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ .editor-block-list__block[data-type="ta/image"] {
184
+
185
+ &[data-align=center] {
186
+
187
+ .wp-block-image {
188
+ margin-left: auto;
189
+ margin-right: auto
190
+ }
191
+
192
+ &[data-resized=false] {
193
+
194
+ .wp-block-ta-image>div {
195
+ margin-left: auto;
196
+ margin-right: auto
197
+ }
198
+ }
199
+ }
200
+ }
js/app/gutenberg_support/src/blocks/index.js CHANGED
@@ -1,3 +1,5 @@
 
 
1
  const { registerBlockType } = wp.blocks;
2
 
3
  /**
@@ -8,6 +10,7 @@ const { registerBlockType } = wp.blocks;
8
  export default function registerBlocks() {
9
 
10
  [
 
11
  ].forEach( ( block ) => {
12
  if ( ! block ) return;
13
 
1
+ import * as taimage from "./ta-image";
2
+
3
  const { registerBlockType } = wp.blocks;
4
 
5
  /**
10
  export default function registerBlocks() {
11
 
12
  [
13
+ taimage
14
  ].forEach( ( block ) => {
15
  if ( ! block ) return;
16
 
js/app/gutenberg_support/src/blocks/ta-image/edit.js ADDED
@@ -0,0 +1,625 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import classnames from "classnames";
2
+
3
+ const { get , isEmpty , map , last , pick , compact } = lodash;
4
+ const { getPath } = wp.url;
5
+ const { __, sprintf } = wp.i18n;
6
+ const { Component, Fragment , createRef } = wp.element;
7
+ const { getBlobByURL, revokeBlobURL, isBlobURL } = wp.blob;
8
+ const { Placeholder , Button , ButtonGroup , IconButton , PanelBody , ResizableBox , SelectControl , Spinner , TextControl , TextareaControl , Toolbar , withNotices , ToggleControl , Popover } = wp.components;
9
+ const { withSelect } = wp.data;
10
+ const { RichText , BlockControls , InspectorControls , MediaUpload , MediaUploadCheck , MediaPlaceholder , BlockAlignmentToolbar , mediaUpload } = wp.editor;
11
+ const { withViewportMatch } = wp.viewport;
12
+ const { compose } = wp.compose;
13
+
14
+ import { createUpgradedEmbedBlock } from "./util";
15
+ import ImageSize from "./image-size";
16
+ import ThirstyURLInput from './search-input';
17
+
18
+ /**
19
+ * Module constants
20
+ */
21
+ const MIN_SIZE = 20;
22
+ const LINK_DESTINATION_NONE = 'none';
23
+ const LINK_DESTINATION_MEDIA = 'media';
24
+ const LINK_DESTINATION_ATTACHMENT = 'attachment';
25
+ const LINK_DESTINATION_CUSTOM = 'custom';
26
+ const NEW_TAB_REL = 'noreferrer noopener';
27
+ const ALLOWED_MEDIA_TYPES = [ 'image' ];
28
+
29
+ export const pickRelevantMediaFiles = ( image ) => {
30
+ const imageProps = pick( image, [ 'alt', 'id', 'link', 'caption' ] );
31
+ imageProps.url = get( image, [ 'sizes', 'large', 'url' ] ) || get( image, [ 'media_details', 'sizes', 'large', 'source_url' ] ) || image.url;
32
+ return imageProps;
33
+ };
34
+
35
+ /**
36
+ * Is the URL a temporary blob URL? A blob URL is one that is used temporarily
37
+ * while the image is being uploaded and will not have an id yet allocated.
38
+ *
39
+ * @param {number=} id The id of the image.
40
+ * @param {string=} url The url of the image.
41
+ *
42
+ * @return {boolean} Is the URL a Blob URL
43
+ */
44
+ const isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );
45
+
46
+ /**
47
+ * Is the url for the image hosted externally. An externally hosted image has no id
48
+ * and is not a blob url.
49
+ *
50
+ * @param {number=} id The id of the image.
51
+ * @param {string=} url The url of the image.
52
+ *
53
+ * @return {boolean} Is the url an externally hosted url?
54
+ */
55
+ const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );
56
+
57
+ class ImageEdit extends Component {
58
+ constructor( { attributes } ) {
59
+ super( ...arguments );
60
+ this.updateAlt = this.updateAlt.bind( this );
61
+ this.updateAlignment = this.updateAlignment.bind( this );
62
+ this.onFocusCaption = this.onFocusCaption.bind( this );
63
+ this.onImageClick = this.onImageClick.bind( this );
64
+ this.onSelectImage = this.onSelectImage.bind( this );
65
+ this.updateImageURL = this.updateImageURL.bind( this );
66
+ this.updateWidth = this.updateWidth.bind( this );
67
+ this.updateHeight = this.updateHeight.bind( this );
68
+ this.updateDimensions = this.updateDimensions.bind( this );
69
+ this.getFilename = this.getFilename.bind( this );
70
+ this.toggleIsEditing = this.toggleIsEditing.bind( this );
71
+ this.onImageError = this.onImageError.bind( this );
72
+ this.onChangeInputValue = this.onChangeInputValue.bind( this );
73
+ this.autocompleteRef = createRef();
74
+ this.resetInvalidLink = this.resetInvalidLink.bind( this );
75
+ this.updateImageSelection = this.updateImageSelection.bind( this );
76
+ this.onSelectAffiliateImage = this.onSelectAffiliateImage.bind( this );
77
+ this.editAFfiliateImage = this.editAFfiliateImage.bind( this );
78
+
79
+ this.state = {
80
+ captionFocused: false,
81
+ isEditing: ! attributes.url,
82
+ inputValue : '',
83
+ linkid : 0,
84
+ post : null,
85
+ showSuggestions : false,
86
+ imageSelection : [],
87
+ affiliateLink : null
88
+ };
89
+ }
90
+
91
+ componentDidMount() {
92
+ const { attributes, setAttributes, noticeOperations } = this.props;
93
+ const { id, url = '' } = attributes;
94
+
95
+ if ( isTemporaryImage( id, url ) ) {
96
+ const file = getBlobByURL( url );
97
+
98
+ if ( file ) {
99
+ mediaUpload( {
100
+ filesList: [ file ],
101
+ onFileChange: ( [ image ] ) => {
102
+ setAttributes( pickRelevantMediaFiles( image ) );
103
+ },
104
+ allowedTypes: ALLOWED_MEDIA_TYPES,
105
+ onError: ( message ) => {
106
+ noticeOperations.createErrorNotice( message );
107
+ this.setState( { isEditing: true } );
108
+ },
109
+ } );
110
+ }
111
+ }
112
+ }
113
+
114
+ componentDidUpdate( prevProps ) {
115
+ const { id: prevID, url: prevURL = '' } = prevProps.attributes;
116
+ const { id, url = '' } = this.props.attributes;
117
+
118
+ if ( isTemporaryImage( prevID, prevURL ) && ! isTemporaryImage( id, url ) ) {
119
+ revokeBlobURL( url );
120
+ }
121
+
122
+ if ( ! this.props.isSelected && prevProps.isSelected && this.state.captionFocused ) {
123
+ this.setState( {
124
+ captionFocused: false,
125
+ } );
126
+ }
127
+ }
128
+
129
+ onSelectImage( media ) {
130
+
131
+ if ( ! media || ! media.url ) {
132
+ this.props.setAttributes( {
133
+ url: undefined,
134
+ alt: undefined,
135
+ id: undefined,
136
+ caption: undefined
137
+ } );
138
+ return;
139
+ }
140
+
141
+ const { affiliateLink } = this.state;
142
+
143
+ this.setState( {
144
+ isEditing: false,
145
+ } );
146
+
147
+ this.props.setAttributes( {
148
+ ...pickRelevantMediaFiles( media ),
149
+ linkid: affiliateLink.id,
150
+ href: affiliateLink.link,
151
+ affiliateLink : affiliateLink,
152
+ width: undefined,
153
+ height: undefined,
154
+ } );
155
+ }
156
+
157
+ onImageError( url ) {
158
+ // Check if there's an embed block that handles this URL.
159
+ const embedBlock = createUpgradedEmbedBlock(
160
+ { attributes: { url } }
161
+ );
162
+ if ( undefined !== embedBlock ) {
163
+ this.props.onReplace( embedBlock );
164
+ }
165
+ }
166
+
167
+ onFocusCaption() {
168
+ if ( ! this.state.captionFocused ) {
169
+ this.setState( {
170
+ captionFocused: true,
171
+ } );
172
+ }
173
+ }
174
+
175
+ onImageClick() {
176
+ if ( this.state.captionFocused ) {
177
+ this.setState( {
178
+ captionFocused: false,
179
+ } );
180
+ }
181
+ }
182
+
183
+ updateAlt( newAlt ) {
184
+ this.props.setAttributes( { alt: newAlt } );
185
+ }
186
+
187
+ updateAlignment( nextAlign ) {
188
+ const extraUpdatedAttributes = [ 'wide', 'full' ].indexOf( nextAlign ) !== -1 ?
189
+ { width: undefined, height: undefined } :
190
+ {};
191
+ this.props.setAttributes( { ...extraUpdatedAttributes, align: nextAlign } );
192
+ }
193
+
194
+ updateImageURL( url ) {
195
+ this.props.setAttributes( { url, width: undefined, height: undefined } );
196
+ }
197
+
198
+ updateWidth( width ) {
199
+ this.props.setAttributes( { width: parseInt( width, 10 ) } );
200
+ }
201
+
202
+ updateHeight( height ) {
203
+ this.props.setAttributes( { height: parseInt( height, 10 ) } );
204
+ }
205
+
206
+ updateDimensions( width = undefined, height = undefined ) {
207
+ return () => {
208
+ this.props.setAttributes( { width, height } );
209
+ };
210
+ }
211
+
212
+ getFilename( url ) {
213
+ const path = getPath( url );
214
+ if ( path ) {
215
+ return last( path.split( '/' ) );
216
+ }
217
+ }
218
+
219
+ getLinkDestinationOptions() {
220
+ return [
221
+ { value: LINK_DESTINATION_NONE, label: __( 'None' ) },
222
+ { value: LINK_DESTINATION_MEDIA, label: __( 'Media File' ) },
223
+ { value: LINK_DESTINATION_ATTACHMENT, label: __( 'Attachment Page' ) },
224
+ { value: LINK_DESTINATION_CUSTOM, label: __( 'Custom URL' ) },
225
+ ];
226
+ }
227
+
228
+ toggleIsEditing() {
229
+ this.setState( {
230
+ isEditing: ! this.state.isEditing,
231
+ } );
232
+ }
233
+
234
+ getImageSizeOptions() {
235
+ const { imageSizes, image } = this.props;
236
+ return compact( map( imageSizes, ( { name, slug } ) => {
237
+ const sizeUrl = get( image, [ 'media_details', 'sizes', slug, 'source_url' ] );
238
+ if ( ! sizeUrl ) {
239
+ return null;
240
+ }
241
+ return {
242
+ value: sizeUrl,
243
+ label: name,
244
+ };
245
+ } ) );
246
+ }
247
+
248
+ onChangeInputValue( inputValue , post = null ) {
249
+ const linkid = post ? post.id : 0;
250
+ this.setState( { inputValue , linkid , post } );
251
+ }
252
+
253
+ resetInvalidLink() {
254
+ this.setState( { invalidLink : false } );
255
+ }
256
+
257
+ updateImageSelection( imageSelection , affiliateLink ) {
258
+ this.setState({
259
+ imageSelection,
260
+ affiliateLink
261
+ });
262
+ }
263
+
264
+ onSelectAffiliateImage( image ) {
265
+
266
+ const request = wp.apiFetch( {
267
+ path: wp.url.addQueryArgs( 'wp/v2/media/' + image.id , {
268
+ context: 'edit',
269
+ _locale: 'user'
270
+ } ),
271
+ } );
272
+
273
+ request.then( (media) => {
274
+ media.url = media.source_url;
275
+ this.onSelectImage( media );
276
+ } );
277
+ }
278
+
279
+ editAFfiliateImage() {
280
+
281
+ const { attributes } = this.props;
282
+ const { affiliateLink } = attributes;
283
+
284
+ this.setState({
285
+ isEditing : true,
286
+ imageSelection : affiliateLink.images,
287
+ affiliateLink
288
+ });
289
+ }
290
+
291
+ render() {
292
+ const {
293
+ isEditing,
294
+ imageSelection,
295
+ affiliateLink,
296
+ } = this.state;
297
+ const {
298
+ attributes,
299
+ setAttributes,
300
+ isLargeViewport,
301
+ isSelected,
302
+ className,
303
+ maxWidth,
304
+ toggleSelection,
305
+ isRTL,
306
+ } = this.props;
307
+ const {
308
+ url,
309
+ alt,
310
+ caption,
311
+ align,
312
+ linkDestination,
313
+ width,
314
+ height,
315
+ linkid,
316
+ href
317
+ } = attributes;
318
+ const toolbarEditButton = (
319
+ <Toolbar>
320
+ <IconButton
321
+ className="ta-edit-image-button components-icon-button components-toolbar__control"
322
+ label={ __( 'Edit ThirstyAffiliates Image' ) }
323
+ icon="edit"
324
+ onClick={ this.editAFfiliateImage }
325
+ />
326
+ </Toolbar>
327
+ );
328
+
329
+ const controls = (
330
+ <BlockControls>
331
+ <BlockAlignmentToolbar
332
+ value={ align }
333
+ onChange={ this.updateAlignment }
334
+ />
335
+ { toolbarEditButton }
336
+ </BlockControls>
337
+ );
338
+
339
+ if ( isEditing ) {
340
+ return (
341
+ <Fragment>
342
+ { controls }
343
+ <Placeholder
344
+ icon={ "format-image" }
345
+ label={ __( "ThirstyAffiliates Image" ) }
346
+ instructions={ __( "Search for an affiliate link and select image to insert." ) }
347
+ >
348
+
349
+ <ThirstyURLInput
350
+ updateImageSelection={ this.updateImageSelection }
351
+ />
352
+
353
+ { !! imageSelection.length &&
354
+ <div className="ta-image-sel-wrap">
355
+ <h3>{ `${affiliateLink.title} ${ __( 'attached images:' ) }` }</h3>
356
+ <div className="ta-image-selection">
357
+ { imageSelection.map( ( image , index ) => (
358
+ <button
359
+ onClick={ () => this.onSelectAffiliateImage( image ) }
360
+ >
361
+ <img src={ image.src } />
362
+ </button>
363
+
364
+ ) ) }
365
+ </div>
366
+ </div>
367
+ }
368
+
369
+
370
+ </Placeholder>
371
+ </Fragment>
372
+ );
373
+ }
374
+
375
+ const classes = classnames( className, {
376
+ 'wp-block-image' : true,
377
+ 'is-transient': isBlobURL( url ),
378
+ 'is-resized': !! width || !! height,
379
+ 'is-focused': isSelected,
380
+ } );
381
+
382
+ const isResizable = [ 'wide', 'full' ].indexOf( align ) === -1 && isLargeViewport;
383
+ const imageSizeOptions = this.getImageSizeOptions();
384
+
385
+ const getInspectorControls = ( imageWidth, imageHeight ) => (
386
+ <InspectorControls>
387
+ <PanelBody title={ __( 'Image Settings' ) }>
388
+ <TextareaControl
389
+ label={ __( 'Alt Text (Alternative Text)' ) }
390
+ value={ alt }
391
+ onChange={ this.updateAlt }
392
+ help={ __( 'Alternative text describes your image to people who can’t see it. Add a short description with its key details.' ) }
393
+ />
394
+ { ! isEmpty( imageSizeOptions ) && (
395
+ <SelectControl
396
+ label={ __( 'Image Size' ) }
397
+ value={ url }
398
+ options={ imageSizeOptions }
399
+ onChange={ this.updateImageURL }
400
+ />
401
+ ) }
402
+ { isResizable && (
403
+ <div className="block-library-image__dimensions">
404
+ <p className="block-library-image__dimensions__row">
405
+ { __( 'Image Dimensions' ) }
406
+ </p>
407
+ <div className="block-library-image__dimensions__row">
408
+ <TextControl
409
+ type="number"
410
+ className="block-library-image__dimensions__width"
411
+ label={ __( 'Width' ) }
412
+ value={ width !== undefined ? width : '' }
413
+ placeholder={ imageWidth }
414
+ min={ 1 }
415
+ onChange={ this.updateWidth }
416
+ />
417
+ <TextControl
418
+ type="number"
419
+ className="block-library-image__dimensions__height"
420
+ label={ __( 'Height' ) }
421
+ value={ height !== undefined ? height : '' }
422
+ placeholder={ imageHeight }
423
+ min={ 1 }
424
+ onChange={ this.updateHeight }
425
+ />
426
+ </div>
427
+ <div className="block-library-image__dimensions__row">
428
+ <ButtonGroup aria-label={ __( 'Image Size' ) }>
429
+ { [ 25, 50, 75, 100 ].map( ( scale ) => {
430
+ const scaledWidth = Math.round( imageWidth * ( scale / 100 ) );
431
+ const scaledHeight = Math.round( imageHeight * ( scale / 100 ) );
432
+
433
+ const isCurrent = width === scaledWidth && height === scaledHeight;
434
+
435
+ return (
436
+ <Button
437
+ key={ scale }
438
+ isSmall
439
+ isPrimary={ isCurrent }
440
+ aria-pressed={ isCurrent }
441
+ onClick={ this.updateDimensions( scaledWidth, scaledHeight ) }
442
+ >
443
+ { scale }%
444
+ </Button>
445
+ );
446
+ } ) }
447
+ </ButtonGroup>
448
+ <Button
449
+ isSmall
450
+ onClick={ this.updateDimensions() }
451
+ >
452
+ { __( 'Reset' ) }
453
+ </Button>
454
+ </div>
455
+ </div>
456
+ ) }
457
+ </PanelBody>
458
+ </InspectorControls>
459
+ );
460
+
461
+ // Disable reason: Each block can be selected by clicking on it
462
+ /* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/onclick-has-role, jsx-a11y/click-events-have-key-events */
463
+ return (
464
+ <Fragment>
465
+ { controls }
466
+ <figure className={ classes }>
467
+ <ImageSize src={ url } dirtynessTrigger={ align }>
468
+ { ( sizes ) => {
469
+ const {
470
+ imageWidthWithinContainer,
471
+ imageHeightWithinContainer,
472
+ imageWidth,
473
+ imageHeight,
474
+ } = sizes;
475
+
476
+ const filename = this.getFilename( url );
477
+ let defaultedAlt;
478
+ if ( alt ) {
479
+ defaultedAlt = alt;
480
+ } else if ( filename ) {
481
+ defaultedAlt = sprintf( __( 'This image has an empty alt attribute; its file name is %s' ), filename );
482
+ } else {
483
+ defaultedAlt = __( 'This image has an empty alt attribute' );
484
+ }
485
+
486
+ const img = (
487
+ // Disable reason: Image itself is not meant to be interactive, but
488
+ // should direct focus to block.
489
+ /* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
490
+ <Fragment>
491
+ <ta linkid={ linkid } href={ href }>
492
+ <img src={ url } alt={ defaultedAlt } onClick={ this.onImageClick } onError={ () => this.onImageError( url ) } />
493
+ </ta>
494
+ { isBlobURL( url ) && <Spinner /> }
495
+ </Fragment>
496
+ /* eslint-enable jsx-a11y/no-noninteractive-element-interactions */
497
+ );
498
+
499
+ if ( ! isResizable || ! imageWidthWithinContainer ) {
500
+ return (
501
+ <Fragment>
502
+ { getInspectorControls( imageWidth, imageHeight ) }
503
+ <div style={ { width, height } }>
504
+ { img }
505
+ </div>
506
+ </Fragment>
507
+ );
508
+ }
509
+
510
+ const currentWidth = width || imageWidthWithinContainer;
511
+ const currentHeight = height || imageHeightWithinContainer;
512
+
513
+ const ratio = imageWidth / imageHeight;
514
+ const minWidth = imageWidth < imageHeight ? MIN_SIZE : MIN_SIZE * ratio;
515
+ const minHeight = imageHeight < imageWidth ? MIN_SIZE : MIN_SIZE / ratio;
516
+
517
+ // With the current implementation of ResizableBox, an image needs an explicit pixel value for the max-width.
518
+ // In absence of being able to set the content-width, this max-width is currently dictated by the vanilla editor style.
519
+ // The following variable adds a buffer to this vanilla style, so 3rd party themes have some wiggleroom.
520
+ // This does, in most cases, allow you to scale the image beyond the width of the main column, though not infinitely.
521
+ // @todo It would be good to revisit this once a content-width variable becomes available.
522
+ const maxWidthBuffer = maxWidth * 2.5;
523
+
524
+ let showRightHandle = false;
525
+ let showLeftHandle = false;
526
+
527
+ /* eslint-disable no-lonely-if */
528
+ // See https://github.com/WordPress/gutenberg/issues/7584.
529
+ if ( align === 'center' ) {
530
+ // When the image is centered, show both handles.
531
+ showRightHandle = true;
532
+ showLeftHandle = true;
533
+ } else if ( isRTL ) {
534
+ // In RTL mode the image is on the right by default.
535
+ // Show the right handle and hide the left handle only when it is aligned left.
536
+ // Otherwise always show the left handle.
537
+ if ( align === 'left' ) {
538
+ showRightHandle = true;
539
+ } else {
540
+ showLeftHandle = true;
541
+ }
542
+ } else {
543
+ // Show the left handle and hide the right handle only when the image is aligned right.
544
+ // Otherwise always show the right handle.
545
+ if ( align === 'right' ) {
546
+ showLeftHandle = true;
547
+ } else {
548
+ showRightHandle = true;
549
+ }
550
+ }
551
+ /* eslint-enable no-lonely-if */
552
+
553
+ return (
554
+ <Fragment>
555
+ { getInspectorControls( imageWidth, imageHeight ) }
556
+ <ResizableBox
557
+ size={
558
+ width && height ? {
559
+ width,
560
+ height,
561
+ } : undefined
562
+ }
563
+ minWidth={ minWidth }
564
+ maxWidth={ maxWidthBuffer }
565
+ minHeight={ minHeight }
566
+ maxHeight={ maxWidthBuffer / ratio }
567
+ lockAspectRatio
568
+ enable={ {
569
+ top: false,
570
+ right: showRightHandle,
571
+ bottom: true,
572
+ left: showLeftHandle,
573
+ } }
574
+ onResizeStart={ () => {
575
+ toggleSelection( false );
576
+ } }
577
+ onResizeStop={ ( event, direction, elt, delta ) => {
578
+ setAttributes( {
579
+ width: parseInt( currentWidth + delta.width, 10 ),
580
+ height: parseInt( currentHeight + delta.height, 10 ),
581
+ } );
582
+ toggleSelection( true );
583
+ } }
584
+ >
585
+ { img }
586
+ </ResizableBox>
587
+ </Fragment>
588
+ );
589
+ } }
590
+ </ImageSize>
591
+ { ( ! RichText.isEmpty( caption ) || isSelected ) && (
592
+ <RichText
593
+ tagName="figcaption"
594
+ placeholder={ __( 'Write caption…' ) }
595
+ value={ caption }
596
+ unstableOnFocus={ this.onFocusCaption }
597
+ onChange={ ( value ) => setAttributes( { caption: value } ) }
598
+ isSelected={ this.state.captionFocused }
599
+ inlineToolbar
600
+ />
601
+ ) }
602
+ </figure>
603
+ </Fragment>
604
+ );
605
+ /* eslint-enable jsx-a11y/no-static-element-interactions, jsx-a11y/onclick-has-role, jsx-a11y/click-events-have-key-events */
606
+ }
607
+ }
608
+
609
+ export default compose( [
610
+ withSelect( ( select, props ) => {
611
+ const { getMedia } = select( 'core' );
612
+ const { getEditorSettings } = select( 'core/editor' );
613
+ const { id } = props.attributes;
614
+ const { maxWidth, isRTL, imageSizes } = getEditorSettings();
615
+
616
+ return {
617
+ image: id ? getMedia( id ) : null,
618
+ maxWidth,
619
+ isRTL,
620
+ imageSizes,
621
+ };
622
+ } ),
623
+ withViewportMatch( { isLargeViewport: 'medium' } ),
624
+ withNotices,
625
+ ] )( ImageEdit );
js/app/gutenberg_support/src/blocks/ta-image/image-size.js ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const { noop } = lodash;
2
+
3
+ const { withGlobalEvents } = wp.compose;
4
+ const { Component } = wp.element;
5
+
6
+ class ImageSize extends Component {
7
+ constructor() {
8
+ super( ...arguments );
9
+ this.state = {
10
+ width: undefined,
11
+ height: undefined,
12
+ };
13
+ this.bindContainer = this.bindContainer.bind( this );
14
+ this.calculateSize = this.calculateSize.bind( this );
15
+ }
16
+
17
+ bindContainer( ref ) {
18
+ this.container = ref;
19
+ }
20
+
21
+ componentDidUpdate( prevProps ) {
22
+ if ( this.props.src !== prevProps.src ) {
23
+ this.setState( {
24
+ width: undefined,
25
+ height: undefined,
26
+ } );
27
+ this.fetchImageSize();
28
+ }
29
+
30
+ if ( this.props.dirtynessTrigger !== prevProps.dirtynessTrigger ) {
31
+ this.calculateSize();
32
+ }
33
+ }
34
+
35
+ componentDidMount() {
36
+ this.fetchImageSize();
37
+ }
38
+
39
+ componentWillUnmount() {
40
+ if ( this.image ) {
41
+ this.image.onload = noop;
42
+ }
43
+ }
44
+
45
+ fetchImageSize() {
46
+ this.image = new window.Image();
47
+ this.image.onload = this.calculateSize;
48
+ this.image.src = this.props.src;
49
+ }
50
+
51
+ calculateSize() {
52
+ const maxWidth = this.container.clientWidth;
53
+ const exceedMaxWidth = this.image.width > maxWidth;
54
+ const ratio = this.image.height / this.image.width;
55
+ const width = exceedMaxWidth ? maxWidth : this.image.width;
56
+ const height = exceedMaxWidth ? maxWidth * ratio : this.image.height;
57
+ this.setState( { width, height } );
58
+ }
59
+
60
+ render() {
61
+ const sizes = {
62
+ imageWidth: this.image && this.image.width,
63
+ imageHeight: this.image && this.image.height,
64
+ containerWidth: this.container && this.container.clientWidth,
65
+ containerHeight: this.container && this.container.clientHeight,
66
+ imageWidthWithinContainer: this.state.width,
67
+ imageHeightWithinContainer: this.state.height,
68
+ };
69
+ return (
70
+ <div ref={ this.bindContainer }>
71
+ { this.props.children( sizes ) }
72
+ </div>
73
+ );
74
+ }
75
+ }
76
+
77
+ export default withGlobalEvents( {
78
+ resize: 'calculateSize',
79
+ } )( ImageSize );
js/app/gutenberg_support/src/blocks/ta-image/index.js ADDED
@@ -0,0 +1,274 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import classnames from "classnames";
2
+
3
+ const { Fragment } = wp.element;
4
+ const { __ } = wp.i18n;
5
+ const { createBlock, getBlockAttributes, getPhrasingContentSchema } = wp.blocks;
6
+ const { RichText } = wp.editor;
7
+ const { Path , SVG } = wp.components;
8
+
9
+ import edit from "./edit";
10
+
11
+ export const name = 'ta/image';
12
+
13
+ const blockAttributes = {
14
+ url: {
15
+ type: 'string',
16
+ source: 'attribute',
17
+ selector: 'img',
18
+ attribute: 'src',
19
+ },
20
+ alt: {
21
+ type: 'string',
22
+ source: 'attribute',
23
+ selector: 'img',
24
+ attribute: 'alt',
25
+ default: '',
26
+ },
27
+ caption: {
28
+ type: 'string',
29
+ source: 'html',
30
+ selector: 'figcaption',
31
+ },
32
+ id: {
33
+ type: 'number',
34
+ },
35
+ align: {
36
+ type: 'string',
37
+ },
38
+ width: {
39
+ type: 'number',
40
+ },
41
+ height: {
42
+ type: 'number',
43
+ },
44
+ linkid: {
45
+ type: 'number',
46
+ },
47
+ href: {
48
+ type: 'string',
49
+ source: 'attribute',
50
+ selector: 'ta',
51
+ attribute: 'href'
52
+ },
53
+ affiliateLink: {
54
+ type: 'object'
55
+ }
56
+ };
57
+
58
+ const imageSchema = {
59
+ img: {
60
+ attributes: [ 'src', 'alt' ],
61
+ classes: [ 'alignleft', 'aligncenter', 'alignright', 'alignnone', /^wp-image-\d+$/ ],
62
+ },
63
+ };
64
+
65
+ const schema = {
66
+ figure: {
67
+ require: [ 'ta' , 'img' ],
68
+ children: {
69
+ ta: {
70
+ attributes: [ 'href', 'linkid' ],
71
+ children: imageSchema,
72
+ },
73
+ figcaption: {
74
+ children: getPhrasingContentSchema(),
75
+ },
76
+ },
77
+ },
78
+ };
79
+
80
+ function getFirstAnchorAttributeFormHTML( html, attributeName ) {
81
+ const { body } = document.implementation.createHTMLDocument( '' );
82
+
83
+ body.innerHTML = html;
84
+
85
+ const { firstElementChild } = body;
86
+
87
+ if (
88
+ firstElementChild &&
89
+ firstElementChild.nodeName === 'A'
90
+ ) {
91
+ return firstElementChild.getAttribute( attributeName ) || undefined;
92
+ }
93
+ }
94
+
95
+ export const settings = {
96
+ title: __( 'ThirstyAffiliates Image' ),
97
+
98
+ description: __( 'Insert an image with an affiliate link to make a visual statement.' ),
99
+
100
+ icon: <SVG viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><Path d="M0,0h24v24H0V0z" fill="none" /><Path d="m19 5v14h-14v-14h14m0-2h-14c-1.1 0-2 0.9-2 2v14c0 1.1 0.9 2 2 2h14c1.1 0 2-0.9 2-2v-14c0-1.1-0.9-2-2-2z" /><Path d="m14.14 11.86l-3 3.87-2.14-2.59-3 3.86h12l-3.86-5.14z" /></SVG>,
101
+
102
+ category: 'common',
103
+
104
+ keywords: [
105
+ 'img', // "img" is not translated as it is intended to reflect the HTML <img> tag.
106
+ __( 'photo' ),
107
+ __( 'affiliate' )
108
+ ],
109
+
110
+ attributes: blockAttributes,
111
+
112
+ transforms: {
113
+ from: [
114
+ {
115
+ type: 'raw',
116
+ isMatch: ( node ) => node.nodeName === 'FIGURE' && !! node.querySelector( 'img' ),
117
+ schema,
118
+ transform: ( node ) => {
119
+
120
+ // Search both figure and image classes. Alignment could be
121
+ // set on either. ID is set on the image.
122
+ const className = node.className + ' ' + node.querySelector( 'img' ).className;
123
+ const alignMatches = /(?:^|\s)align(left|center|right)(?:$|\s)/.exec( className );
124
+ const align = alignMatches ? alignMatches[ 1 ] : undefined;
125
+ const idMatches = /(?:^|\s)wp-image-(\d+)(?:$|\s)/.exec( className );
126
+ const id = idMatches ? Number( idMatches[ 1 ] ) : undefined;
127
+ const anchorElement = node.querySelector( 'a' );
128
+ const linkDestination = anchorElement && anchorElement.href ? 'custom' : undefined;
129
+ const href = anchorElement && anchorElement.href ? anchorElement.href : undefined;
130
+ const rel = anchorElement && anchorElement.rel ? anchorElement.rel : undefined;
131
+ const linkClass = anchorElement && anchorElement.className ? anchorElement.className : undefined;
132
+ const attributes = getBlockAttributes( 'ta/image', node.outerHTML, { align, id, linkDestination, linkid , href, rel, linkClass } );
133
+ return createBlock( 'ta/image', attributes );
134
+ },
135
+ },
136
+ {
137
+ type: 'files',
138
+ isMatch( files ) {
139
+ return files.length === 1 && files[ 0 ].type.indexOf( 'image/' ) === 0;
140
+ },
141
+ transform( files ) {
142
+ const file = files[ 0 ];
143
+ // We don't need to upload the media directly here
144
+ // It's already done as part of the `componentDidMount`
145
+ // int the image block
146
+ const block = createBlock( 'ta/image', {
147
+ url: createBlobURL( file ),
148
+ } );
149
+
150
+ return block;
151
+ },
152
+ },
153
+ {
154
+ type: 'shortcode',
155
+ tag: 'caption',
156
+ attributes: {
157
+ url: {
158
+ type: 'string',
159
+ source: 'attribute',
160
+ attribute: 'src',
161
+ selector: 'img',
162
+ },
163
+ alt: {
164
+ type: 'string',
165
+ source: 'attribute',
166
+ attribute: 'alt',
167
+ selector: 'img',
168
+ },
169
+ caption: {
170
+ shortcode: ( attributes, { shortcode } ) => {
171
+ const { body } = document.implementation.createHTMLDocument( '' );
172
+
173
+ body.innerHTML = shortcode.content;
174
+ body.removeChild( body.firstElementChild );
175
+
176
+ return body.innerHTML.trim();
177
+ },
178
+ },
179
+ id: {
180
+ type: 'number',
181
+ shortcode: ( { named: { id } } ) => {
182
+ if ( ! id ) {
183
+ return;
184
+ }
185
+
186
+ return parseInt( id.replace( 'attachment_', '' ), 10 );
187
+ },
188
+ },
189
+ align: {
190
+ type: 'string',
191
+ shortcode: ( { named: { align = 'alignnone' } } ) => {
192
+ return align.replace( 'align', '' );
193
+ },
194
+ },
195
+ linkid: {
196
+ type: 'string',
197
+ source: 'attribute',
198
+ selector: 'wp-block-ta-image > ta',
199
+ attribute: 'linkid'
200
+ },
201
+ href: {
202
+ type: 'string',
203
+ source: 'attribute',
204
+ selector: 'ta',
205
+ attribute: 'href'
206
+ },
207
+ },
208
+ },
209
+ ],
210
+ },
211
+
212
+ getEditWrapperProps( attributes ) {
213
+ const { align, width } = attributes;
214
+ if ( 'left' === align || 'center' === align || 'right' === align || 'wide' === align || 'full' === align ) {
215
+ return { 'data-align': align, 'data-resized': !! width };
216
+ }
217
+ },
218
+
219
+ edit,
220
+
221
+ save( { attributes } ) {
222
+ const {
223
+ url,
224
+ alt,
225
+ caption,
226
+ align,
227
+ width,
228
+ height,
229
+ id,
230
+ linkid,
231
+ href
232
+ } = attributes;
233
+
234
+ const classes = classnames( {
235
+ [ `align${ align }` ]: align,
236
+ 'is-resized': width || height,
237
+ } );
238
+
239
+ const image = (
240
+ <img
241
+ src={ url }
242
+ alt={ alt }
243
+ className={ id ? `wp-image-${ id }` : null }
244
+ width={ width }
245
+ height={ height }
246
+ />
247
+ );
248
+
249
+ const figure = (
250
+ <Fragment>
251
+ <ta linkid={ linkid } href={ href }>
252
+ { image }
253
+ </ta>
254
+ <RichText.Content tagName="figcaption" value={ caption } />
255
+ </Fragment>
256
+ );
257
+
258
+ if ( 'left' === align || 'right' === align || 'center' === align ) {
259
+ return (
260
+ <div className='wp-block-image'>
261
+ <figure className={ classes }>
262
+ { figure }
263
+ </figure>
264
+ </div>
265
+ );
266
+ }
267
+
268
+ return (
269
+ <figure className={ `wp-block-image ${classes}` }>
270
+ { figure }
271
+ </figure>
272
+ );
273
+ }
274
+ };
js/app/gutenberg_support/src/blocks/ta-image/search-input.js ADDED
@@ -0,0 +1,228 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import classnames from "classnames";
2
+
3
+ const { __ } = wp.i18n;
4
+ const { Component , createRef } = wp.element;
5
+ const { Spinner, withSpokenMessages, Popover , TextControl } = wp.components;
6
+ const { withInstanceId } = wp.compose;
7
+
8
+ class ThirstyURLInput extends Component {
9
+
10
+ /**
11
+ * Component constructor method.
12
+ *
13
+ * @since 3.6
14
+ *
15
+ * @param {*} param0
16
+ */
17
+ constructor( { autocompleteRef } ) {
18
+ super( ...arguments );
19
+
20
+ // this.onChange = this.onChange.bind( this );
21
+ // this.onKeyDown = this.onKeyDown.bind( this );
22
+ this.autocompleteRef = autocompleteRef || createRef();
23
+ this.inputRef = createRef();
24
+ this.searchAffiliateLinks = this.searchAffiliateLinks.bind( this );
25
+ // this.updateSuggestions = throttle( this.updateSuggestions.bind( this ), 200 );
26
+
27
+ this.suggestionNodes = [];
28
+
29
+ this.state = {
30
+ posts : [],
31
+ showSuggestions : false,
32
+ selectedSuggestion : null,
33
+ loading : false
34
+ };
35
+ }
36
+
37
+ /**
38
+ * Component did update method.
39
+ *
40
+ * @since 3.6
41
+ */
42
+ componentDidUpdate() {
43
+ const { showSuggestions, selectedSuggestion } = this.state;
44
+ // only have to worry about scrolling selected suggestion into view
45
+ // when already expanded
46
+ if ( showSuggestions && selectedSuggestion !== null && ! this.scrollingIntoView ) {
47
+ this.scrollingIntoView = true;
48
+ scrollIntoView( this.suggestionNodes[ selectedSuggestion ], this.autocompleteRef.current, {
49
+ onlyScrollIfNeeded: true,
50
+ } );
51
+
52
+ setTimeout( () => {
53
+ this.scrollingIntoView = false;
54
+ }, 100 );
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Component unmount method.
60
+ *
61
+ * @since 3.6
62
+ */
63
+ componentWillUnmount() {
64
+ delete this.suggestionsRequest;
65
+ }
66
+
67
+ /**
68
+ * Bind suggestion to node.
69
+ *
70
+ * @param {*} index
71
+ */
72
+ bindSuggestionNode( index ) {
73
+ return ( ref ) => {
74
+ this.suggestionNodes[ index ] = ref;
75
+ };
76
+ }
77
+
78
+ searchAffiliateLinks( value ) {
79
+
80
+ // Show the suggestions after typing at least 2 characters=
81
+ if ( value.length < 2 ) {
82
+ this.setState( {
83
+ showSuggestions: false,
84
+ selectedSuggestion: null,
85
+ loading: false,
86
+ } );
87
+
88
+ return;
89
+ }
90
+
91
+ this.setState({
92
+ showSuggestions : true,
93
+ selectedSuggestion : null,
94
+ loading : true
95
+ });
96
+
97
+ const formData = new FormData();
98
+ formData.append( "action" , "search_affiliate_links_query" );
99
+ formData.append( "keyword" , value );
100
+ formData.append( "paged" , 1 );
101
+ formData.append( "gutenberg" , true );
102
+ formData.append( "with_images" , true );
103
+
104
+ // We are getting data via the WP AJAX instead of rest API as it is not possible yet
105
+ // to filter results with category value. This is to prepare next update to add category filter.
106
+ const request = fetch( ajaxurl , {
107
+ method : "POST",
108
+ body : formData
109
+ } );
110
+
111
+ request
112
+ .then( response => response.json() )
113
+ .then( ( response ) => {
114
+
115
+ if ( ! response.affiliate_links ) return;
116
+
117
+ const posts = response.affiliate_links;
118
+
119
+ // A fetch Promise doesn't have an abort option. It's mimicked by
120
+ // comparing the request reference in on the instance, which is
121
+ // reset or deleted on subsequent requests or unmounting.
122
+ if ( this.suggestionsRequest !== request ) {
123
+ return;
124
+ }
125
+
126
+ this.setState( {
127
+ posts,
128
+ loading: false,
129
+ } );
130
+
131
+ if ( !! posts.length ) {
132
+ this.props.debouncedSpeak( sprintf( _n(
133
+ '%d result found, use up and down arrow keys to navigate.',
134
+ '%d results found, use up and down arrow keys to navigate.',
135
+ posts.length
136
+ ), posts.length ), 'assertive' );
137
+ } else {
138
+ this.props.debouncedSpeak( __( 'No results.' ), 'assertive' );
139
+ }
140
+
141
+ } ).catch( () => {
142
+ if ( this.suggestionsRequest === request ) {
143
+ this.setState( {
144
+ loading: false,
145
+ } );
146
+ }
147
+ } );
148
+
149
+ this.suggestionsRequest = request;
150
+ }
151
+
152
+ /**
153
+ * Set state when an affiliate link is selected.
154
+ *
155
+ * @since 3.6
156
+ *
157
+ * @param {*} post
158
+ */
159
+ selectLink( post ) {
160
+ // this.props.onChange( post.link, post );
161
+ this.setState( {
162
+ selectedSuggestion: post,
163
+ showSuggestions: false,
164
+ } );
165
+
166
+ this.props.updateImageSelection( post.images , post );
167
+ }
168
+
169
+ /**
170
+ * Callback handler for when affiliate link is selected.
171
+ *
172
+ * @param {*} post
173
+ */
174
+ handleOnClick( post ) {
175
+ this.selectLink( post );
176
+ // Move focus to the input field when a link suggestion is clicked.
177
+ // this.inputRef.current.focus();
178
+ }
179
+
180
+ render() {
181
+ const { value = '', autoFocus = true, instanceId } = this.props;
182
+ const { showSuggestions , posts, selectedSuggestion , loading } = this.state;
183
+
184
+ return (
185
+ <div class="edit-search-affiliate-links">
186
+ <form
187
+ className="editor-format-toolbar__link-container-content ta-link-search-popover"
188
+ onSubmit={ this.displayAffiliateImages }
189
+ >
190
+ <TextControl
191
+ type="text"
192
+ className="ta-search-affiliate-links"
193
+ placeholder={ __( "Type to search affiliate links" ) }
194
+ onChange={ this.searchAffiliateLinks }
195
+ autocomplete="off"
196
+ />
197
+
198
+ { ( loading ) && <Spinner /> }
199
+
200
+ { showSuggestions && !! posts.length &&
201
+ <Popover position="bottom" focusOnMount={ false }>
202
+ <div class="affilate-links-suggestions">
203
+ { posts.map( ( post, index ) => (
204
+ <button
205
+ key={ post.id }
206
+ role="option"
207
+ tabIndex="-1"
208
+ id={ `editor-url-input-suggestion-${ instanceId }-${ index }` }
209
+ ref={ this.bindSuggestionNode( index ) }
210
+ className={ classnames( 'editor-url-input__suggestion', {
211
+ 'is-selected': index === selectedSuggestion,
212
+ } ) }
213
+ onClick={ () => this.handleOnClick( post ) }
214
+ aria-selected={ index === selectedSuggestion }
215
+ >
216
+ { post.title || __( '(no title)' ) }
217
+ </button>
218
+ ) ) }
219
+ </div>
220
+ </Popover>
221
+ }
222
+ </form>
223
+ </div>
224
+ );
225
+ }
226
+ }
227
+
228
+ export default withSpokenMessages( withInstanceId( ThirstyURLInput ) );
js/app/gutenberg_support/src/blocks/ta-image/util.js ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const WORDPRESS_EMBED_BLOCK = 'core-embed/wordpress';
2
+
3
+ const { includes } = lodash;
4
+ const { renderToString } = wp.element;
5
+ const { createBlock } = wp.blocks;
6
+
7
+ /***
8
+ * Creates a more suitable embed block based on the passed in props
9
+ * and attributes generated from an embed block's preview.
10
+ *
11
+ * We require `attributesFromPreview` to be generated from the latest attributes
12
+ * and preview, and because of the way the react lifecycle operates, we can't
13
+ * guarantee that the attributes contained in the block's props are the latest
14
+ * versions, so we require that these are generated separately.
15
+ * See `getAttributesFromPreview` in the generated embed edit component.
16
+ *
17
+ * @param {Object} props The block's props.
18
+ * @param {Object} attributesFromPreview Attributes generated from the block's most up to date preview.
19
+ * @return {Object|undefined} A more suitable embed block if one exists.
20
+ */
21
+ export const createUpgradedEmbedBlock = ( props, attributesFromPreview ) => {
22
+ const { preview, name } = props;
23
+ const { url } = props.attributes;
24
+
25
+ if ( ! url ) {
26
+ return;
27
+ }
28
+
29
+ const matchingBlock = findBlock( url );
30
+
31
+ // WordPress blocks can work on multiple sites, and so don't have patterns,
32
+ // so if we're in a WordPress block, assume the user has chosen it for a WordPress URL.
33
+ if ( WORDPRESS_EMBED_BLOCK !== name && DEFAULT_EMBED_BLOCK !== matchingBlock ) {
34
+ // At this point, we have discovered a more suitable block for this url, so transform it.
35
+ if ( name !== matchingBlock ) {
36
+ return createBlock( matchingBlock, { url } );
37
+ }
38
+ }
39
+
40
+ if ( preview ) {
41
+ const { html } = preview;
42
+
43
+ // We can't match the URL for WordPress embeds, we have to check the HTML instead.
44
+ if ( isFromWordPress( html ) ) {
45
+ // If this is not the WordPress embed block, transform it into one.
46
+ if ( WORDPRESS_EMBED_BLOCK !== name ) {
47
+ return createBlock(
48
+ WORDPRESS_EMBED_BLOCK,
49
+ {
50
+ url,
51
+ // By now we have the preview, but when the new block first renders, it
52
+ // won't have had all the attributes set, and so won't get the correct
53
+ // type and it won't render correctly. So, we pass through the current attributes
54
+ // here so that the initial render works when we switch to the WordPress
55
+ // block. This only affects the WordPress block because it can't be
56
+ // rendered in the usual Sandbox (it has a sandbox of its own) and it
57
+ // relies on the preview to set the correct render type.
58
+ ...attributesFromPreview,
59
+ }
60
+ );
61
+ }
62
+ }
63
+ }
64
+ };
65
+
66
+ export const isFromWordPress = ( html ) => {
67
+ return includes( html, 'class="wp-embedded-content" data-secret' );
68
+ };
readme.txt CHANGED
@@ -4,8 +4,8 @@ Donate link:
4
  Tags: affiliate, link, affiliate link management, link cloaker, link redirect, shortlink, thirstyaffiliates, thirsty affiliates
5
  Requires at least: 3.4
6
  Requires PHP: 5.6
7
- Tested up to: 5.0.2
8
- Stable tag: 3.6
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -159,6 +159,10 @@ See our [Knowledge Base](https://thirstyaffiliates.com/knowledge-base/?utm_sourc
159
 
160
  == Changelog ==
161
 
 
 
 
 
162
  = 3.6 =
163
  * Feature: Gutenberg integration with core blocks
164
  * Bug Fix: Affiliate links with "Open In New Tab" not working correctly in Instgram's in-app browser
4
  Tags: affiliate, link, affiliate link management, link cloaker, link redirect, shortlink, thirstyaffiliates, thirsty affiliates
5
  Requires at least: 3.4
6
  Requires PHP: 5.6
7
+ Tested up to: 5.0.3
8
+ Stable tag: 3.7
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
159
 
160
  == Changelog ==
161
 
162
+ = 3.7 =
163
+ * Feature: ThirstyAffiliates "Affiliate Link Images" Gutenburg block
164
+ * Bug Fix: Editor/Author unable to access "Edit Post" when plugin visibility is set to enabled & plugin visibility settings are set to same role or higher (roles below it will be affected)
165
+
166
  = 3.6 =
167
  * Feature: Gutenberg integration with core blocks
168
  * Bug Fix: Affiliate links with "Open In New Tab" not working correctly in Instgram's in-app browser
thirstyaffiliates.php CHANGED
@@ -3,11 +3,11 @@
3
  * Plugin Name: ThirstyAffiliates
4
  * Plugin URI: http://thirstyaffiliates.com/
5
  * Description: ThirstyAffiliates is a revolution in affiliate link management. Collect, collate and store your affiliate links for use in your posts and pages.
6
- * Version: 3.6
7
  * Author: Rymera Web Co
8
  * Author URI: https://rymera.com.au/
9
  * Requires at least: 4.5
10
- * Tested up to: 5.0.2
11
  *
12
  * Text Domain: thirstyaffiliates
13
  * Domain Path: /languages/
3
  * Plugin Name: ThirstyAffiliates
4
  * Plugin URI: http://thirstyaffiliates.com/
5
  * Description: ThirstyAffiliates is a revolution in affiliate link management. Collect, collate and store your affiliate links for use in your posts and pages.
6
+ * Version: 3.7
7
  * Author: Rymera Web Co
8
  * Author URI: https://rymera.com.au/
9
  * Requires at least: 4.5
10
+ * Tested up to: 5.0.3
11
  *
12
  * Text Domain: thirstyaffiliates
13
  * Domain Path: /languages/