Full Site Editing - Version 3.37709

Version Description

Download this release

Release Info

Developer mreishus
Plugin Icon wp plugin Full Site Editing
Version 3.37709
Comparing to
See all releases

Code changes from version 3.37689 to 3.37709

build_meta.txt CHANGED
@@ -1,3 +1,3 @@
1
- commit_hash=86591aa33aa00f665b3d447f91bd08f6c0bc4a4e
2
- commit_url=https://github.com/Automattic/wp-calypso/commit/86591aa33aa00f665b3d447f91bd08f6c0bc4a4e
3
- build_number=3.37689
1
+ commit_hash=d47dae3e89d32a442ce20547850069cf500e5a81
2
+ commit_url=https://github.com/Automattic/wp-calypso/commit/d47dae3e89d32a442ce20547850069cf500e5a81
3
+ build_number=3.37709
full-site-editing-plugin.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: WordPress.com Editing Toolkit
4
  * Description: Enhances your page creation workflow within the Block Editor.
5
- * Version: 3.37689
6
  * Author: Automattic
7
  * Author URI: https://automattic.com/wordpress-plugins/
8
  * License: GPLv2 or later
@@ -42,7 +42,7 @@ namespace A8C\FSE;
42
  *
43
  * @var string
44
  */
45
- define( 'A8C_ETK_PLUGIN_VERSION', '3.37689' );
46
 
47
  // Always include these helper files for dotcom FSE.
48
  require_once __DIR__ . '/dotcom-fse/helpers.php';
2
  /**
3
  * Plugin Name: WordPress.com Editing Toolkit
4
  * Description: Enhances your page creation workflow within the Block Editor.
5
+ * Version: 3.37709
6
  * Author: Automattic
7
  * Author URI: https://automattic.com/wordpress-plugins/
8
  * License: GPLv2 or later
42
  *
43
  * @var string
44
  */
45
+ define( 'A8C_ETK_PLUGIN_VERSION', '3.37709' );
46
 
47
  // Always include these helper files for dotcom FSE.
48
  require_once __DIR__ . '/dotcom-fse/helpers.php';
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: automattic
3
  Tags: block, blocks, editor, gutenberg, page
4
  Requires at least: 5.5
5
  Tested up to: 6.0
6
- Stable tag: 3.37689
7
  Requires PHP: 5.6.20
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
3
  Tags: block, blocks, editor, gutenberg, page
4
  Requires at least: 5.5
5
  Tested up to: 6.0
6
+ Stable tag: 3.37709
7
  Requires PHP: 5.6.20
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
wpcom-block-editor-nux/dist/wpcom-block-editor-nux.asset.php CHANGED
@@ -1 +1 @@
1
- <?php return array('dependencies' => array('a8c-fse-common-data-stores', 'lodash', 'react', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-data-controls', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-nux', 'wp-plugins', 'wp-polyfill', 'wp-primitives', 'wp-url'), 'version' => '1ed62afba3b56ac5df2f');
1
+ <?php return array('dependencies' => array('a8c-fse-common-data-stores', 'lodash', 'react', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-data-controls', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-nux', 'wp-plugins', 'wp-polyfill', 'wp-primitives', 'wp-url'), 'version' => 'd2bcbdc6d3f4075c5ece');
wpcom-block-editor-nux/dist/wpcom-block-editor-nux.js CHANGED
@@ -6369,7 +6369,7 @@ const __ = _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__;
6369
  * Show the seller celebration modal
6370
  */
6371
 
6372
- const SellerCelebrationModal = () => {
6373
  const {
6374
  addEntities
6375
  } = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_3__.useDispatch)('core');
@@ -6403,10 +6403,10 @@ const SellerCelebrationModal = () => {
6403
  if (isSiteEditor) {
6404
  var _page$context, _pageEntity$content, _pageEntity$content$r;
6405
 
6406
- const isSavingSite = select('core').isSavingEntityRecord('root', 'site');
6407
  const page = select('core/edit-site').getPage();
6408
  const pageId = parseInt(page === null || page === void 0 ? void 0 : (_page$context = page.context) === null || _page$context === void 0 ? void 0 : _page$context.postId);
6409
- const isSavingEntity = select('core').isSavingEntityRecord('postType', 'page', pageId);
6410
  const pageEntity = select('core').getEntityRecord('postType', 'page', pageId);
6411
  const paymentsBlock = (pageEntity === null || pageEntity === void 0 ? void 0 : (_pageEntity$content = pageEntity.content) === null || _pageEntity$content === void 0 ? void 0 : (_pageEntity$content$r = _pageEntity$content.raw) === null || _pageEntity$content$r === void 0 ? void 0 : _pageEntity$content$r.includes('<!-- wp:jetpack/recurring-payments -->')) ?? false;
6412
  return {
@@ -6417,7 +6417,7 @@ const SellerCelebrationModal = () => {
6417
  }
6418
 
6419
  const currentPost = select('core/editor').getCurrentPost();
6420
- const isSavingEntity = select('core').isSavingEntityRecord('postType', currentPost === null || currentPost === void 0 ? void 0 : currentPost.type, currentPost === null || currentPost === void 0 ? void 0 : currentPost.id);
6421
  const globalBlockCount = select('core/block-editor').getGlobalBlockCount('jetpack/recurring-payments');
6422
  return {
6423
  isEditorSaving: isSavingEntity,
@@ -6463,6 +6463,16 @@ const SellerCelebrationModal = () => {
6463
  });
6464
  };
6465
 
 
 
 
 
 
 
 
 
 
 
6466
  /* harmony default export */ __webpack_exports__["Z"] = (SellerCelebrationModal);
6467
 
6468
  /***/ }),
6369
  * Show the seller celebration modal
6370
  */
6371
 
6372
+ const SellerCelebrationModalInner = () => {
6373
  const {
6374
  addEntities
6375
  } = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_3__.useDispatch)('core');
6403
  if (isSiteEditor) {
6404
  var _page$context, _pageEntity$content, _pageEntity$content$r;
6405
 
6406
+ const isSavingSite = select('core').isSavingEntityRecord('root', 'site') && !select('core').isAutosavingEntityRecord('root', 'site');
6407
  const page = select('core/edit-site').getPage();
6408
  const pageId = parseInt(page === null || page === void 0 ? void 0 : (_page$context = page.context) === null || _page$context === void 0 ? void 0 : _page$context.postId);
6409
+ const isSavingEntity = select('core').isSavingEntityRecord('postType', 'page', pageId) && !select('core').isAutosavingEntityRecord('postType', 'page', pageId);
6410
  const pageEntity = select('core').getEntityRecord('postType', 'page', pageId);
6411
  const paymentsBlock = (pageEntity === null || pageEntity === void 0 ? void 0 : (_pageEntity$content = pageEntity.content) === null || _pageEntity$content === void 0 ? void 0 : (_pageEntity$content$r = _pageEntity$content.raw) === null || _pageEntity$content$r === void 0 ? void 0 : _pageEntity$content$r.includes('<!-- wp:jetpack/recurring-payments -->')) ?? false;
6412
  return {
6417
  }
6418
 
6419
  const currentPost = select('core/editor').getCurrentPost();
6420
+ const isSavingEntity = select('core').isSavingEntityRecord('postType', currentPost === null || currentPost === void 0 ? void 0 : currentPost.type, currentPost === null || currentPost === void 0 ? void 0 : currentPost.id) && !select('core').isAutosavingEntityRecord('postType', currentPost === null || currentPost === void 0 ? void 0 : currentPost.type, currentPost === null || currentPost === void 0 ? void 0 : currentPost.id);
6421
  const globalBlockCount = select('core/block-editor').getGlobalBlockCount('jetpack/recurring-payments');
6422
  return {
6423
  isEditorSaving: isSavingEntity,
6463
  });
6464
  };
6465
 
6466
+ const SellerCelebrationModal = () => {
6467
+ const intent = (0,_dotcom_fse_lib_site_intent_use_site_intent__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)();
6468
+
6469
+ if (intent === 'sell') {
6470
+ return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(SellerCelebrationModalInner, null);
6471
+ }
6472
+
6473
+ return null;
6474
+ };
6475
+
6476
  /* harmony default export */ __webpack_exports__["Z"] = (SellerCelebrationModal);
6477
 
6478
  /***/ }),
wpcom-block-editor-nux/dist/wpcom-block-editor-nux.min.js CHANGED
@@ -3,7 +3,7 @@
3
  Copyright (c) 2018 Jed Watson.
4
  Licensed under the MIT License (MIT), see
5
  http://jedwatson.github.io/classnames
6
- */!function(){"use strict";var o={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var i=typeof n;if("string"===i||"number"===i)e.push(n);else if(Array.isArray(n)){if(n.length){var s=r.apply(null,n);s&&e.push(s)}}else if("object"===i)if(n.toString===Object.prototype.toString)for(var a in n)o.call(n,a)&&n[a]&&e.push(a);else e.push(n.toString())}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(n=function(){return r}.apply(t,[]))||(e.exports=n)}()},3421:function(e,t){"use strict";var n=decodeURIComponent,o=encodeURIComponent,r=/; */,i=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function s(e,t){try{return t(e)}catch(n){return e}}},5881:function(e){var t=1e3,n=60*t,o=60*n,r=24*o,i=7*r,s=365.25*r;function a(e,t,n,o){var r=t>=1.5*n;return Math.round(e/n)+" "+o+(r?"s":"")}e.exports=function(e,c){c=c||{};var u=typeof e;if("string"===u&&e.length>0)return function(e){if((e=String(e)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!a)return;var c=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*s;case"weeks":case"week":case"w":return c*i;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*o;case"minutes":case"minute":case"mins":case"min":case"m":return c*n;case"seconds":case"second":case"secs":case"sec":case"s":return c*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(e);if("number"===u&&isFinite(e))return c.long?function(e){var i=Math.abs(e);if(i>=r)return a(e,i,r,"day");if(i>=o)return a(e,i,o,"hour");if(i>=n)return a(e,i,n,"minute");if(i>=t)return a(e,i,t,"second");return e+" ms"}(e):function(e){var i=Math.abs(e);if(i>=r)return Math.round(e/r)+"d";if(i>=o)return Math.round(e/o)+"h";if(i>=n)return Math.round(e/n)+"m";if(i>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},2699:function(e){"use strict";var t,n="object"==typeof Reflect?Reflect:null,o=n&&"function"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var r=Number.isNaN||function(e){return e!=e};function i(){i.init.call(this)}e.exports=i,e.exports.once=function(e,t){return new Promise((function(n,o){function r(n){e.removeListener(t,i),o(n)}function i(){"function"==typeof e.removeListener&&e.removeListener("error",r),n([].slice.call(arguments))}h(e,t,i,{once:!0}),"error"!==t&&function(e,t,n){"function"==typeof e.on&&h(e,"error",t,n)}(e,r,{once:!0})}))},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var s=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function u(e,t,n,o){var r,i,s,u;if(a(n),void 0===(i=e._events)?(i=e._events=Object.create(null),e._eventsCount=0):(void 0!==i.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),i=e._events),s=i[t]),void 0===s)s=i[t]=n,++e._eventsCount;else if("function"==typeof s?s=i[t]=o?[n,s]:[s,n]:o?s.unshift(n):s.push(n),(r=c(e))>0&&s.length>r&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,u=l,console&&console.warn&&console.warn(u)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,n){var o={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},r=l.bind(o);return r.listener=n,o.wrapFn=r,r}function p(e,t,n){var o=e._events;if(void 0===o)return[];var r=o[t];return void 0===r?[]:"function"==typeof r?n?[r.listener||r]:[r]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(r):m(r,r.length)}function f(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function m(e,t){for(var n=new Array(t),o=0;o<t;++o)n[o]=e[o];return n}function h(e,t,n,o){if("function"==typeof e.on)o.once?e.once(t,n):e.on(t,n);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function r(i){o.once&&e.removeEventListener(t,r),n(i)}))}}Object.defineProperty(i,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");s=e}}),i.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},i.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},i.prototype.getMaxListeners=function(){return c(this)},i.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r="error"===e,i=this._events;if(void 0!==i)r=r&&void 0===i.error;else if(!r)return!1;if(r){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var c=i[e];if(void 0===c)return!1;if("function"==typeof c)o(c,this,t);else{var u=c.length,l=m(c,u);for(n=0;n<u;++n)o(l[n],this,t)}return!0},i.prototype.addListener=function(e,t){return u(this,e,t,!1)},i.prototype.on=i.prototype.addListener,i.prototype.prependListener=function(e,t){return u(this,e,t,!0)},i.prototype.once=function(e,t){return a(t),this.on(e,d(this,e,t)),this},i.prototype.prependOnceListener=function(e,t){return a(t),this.prependListener(e,d(this,e,t)),this},i.prototype.removeListener=function(e,t){var n,o,r,i,s;if(a(t),void 0===(o=this._events))return this;if(void 0===(n=o[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(r=-1,i=n.length-1;i>=0;i--)if(n[i]===t||n[i].listener===t){s=n[i].listener,r=i;break}if(r<0)return this;0===r?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,r),1===n.length&&(o[e]=n[0]),void 0!==o.removeListener&&this.emit("removeListener",e,s||t)}return this},i.prototype.off=i.prototype.removeListener,i.prototype.removeAllListeners=function(e){var t,n,o;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var r,i=Object.keys(n);for(o=0;o<i.length;++o)"removeListener"!==(r=i[o])&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(o=t.length-1;o>=0;o--)this.removeListener(e,t[o]);return this},i.prototype.listeners=function(e){return p(this,e,!0)},i.prototype.rawListeners=function(e){return p(this,e,!1)},i.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},i.prototype.listenerCount=f,i.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},4495:function(e,t,n){"use strict";var o=n(212),r=n(9561);function i(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=i,i.prototype.update=function(e,t){if(e=o.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=o.join32(e,0,e.length-n,this.endian);for(var r=0;r<e.length;r+=this._delta32)this._update(e,r,r+this._delta32)}return this},i.prototype.digest=function(e){return this.update(this._pad()),r(null===this.pending),this._digest(e)},i.prototype._pad=function(){var e=this.pendingTotal,t=this._delta8,n=t-(e+this.padLength)%t,o=new Array(n+this.padLength);o[0]=128;for(var r=1;r<n;r++)o[r]=0;if(e<<=3,"big"===this.endian){for(var i=8;i<this.padLength;i++)o[r++]=0;o[r++]=0,o[r++]=0,o[r++]=0,o[r++]=0,o[r++]=e>>>24&255,o[r++]=e>>>16&255,o[r++]=e>>>8&255,o[r++]=255&e}else for(o[r++]=255&e,o[r++]=e>>>8&255,o[r++]=e>>>16&255,o[r++]=e>>>24&255,o[r++]=0,o[r++]=0,o[r++]=0,o[r++]=0,i=8;i<this.padLength;i++)o[r++]=0;return o}},5079:function(e,t,n){"use strict";var o=n(212),r=n(4495),i=n(713),s=o.rotl32,a=o.sum32,c=o.sum32_5,u=i.ft_1,l=r.BlockHash,d=[1518500249,1859775393,2400959708,3395469782];function p(){if(!(this instanceof p))return new p;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}o.inherits(p,l),e.exports=p,p.blockSize=512,p.outSize=160,p.hmacStrength=80,p.padLength=64,p.prototype._update=function(e,t){for(var n=this.W,o=0;o<16;o++)n[o]=e[t+o];for(;o<n.length;o++)n[o]=s(n[o-3]^n[o-8]^n[o-14]^n[o-16],1);var r=this.h[0],i=this.h[1],l=this.h[2],p=this.h[3],f=this.h[4];for(o=0;o<n.length;o++){var m=~~(o/20),h=c(s(r,5),u(m,i,l,p),f,n[o],d[m]);f=p,p=l,l=s(i,30),i=r,r=h}this.h[0]=a(this.h[0],r),this.h[1]=a(this.h[1],i),this.h[2]=a(this.h[2],l),this.h[3]=a(this.h[3],p),this.h[4]=a(this.h[4],f)},p.prototype._digest=function(e){return"hex"===e?o.toHex32(this.h,"big"):o.split32(this.h,"big")}},8032:function(e,t,n){"use strict";var o=n(212),r=n(4495),i=n(713),s=n(9561),a=o.sum32,c=o.sum32_4,u=o.sum32_5,l=i.ch32,d=i.maj32,p=i.s0_256,f=i.s1_256,m=i.g0_256,h=i.g1_256,g=r.BlockHash,v=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function w(){if(!(this instanceof w))return new w;g.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=v,this.W=new Array(64)}o.inherits(w,g),e.exports=w,w.blockSize=512,w.outSize=256,w.hmacStrength=192,w.padLength=64,w.prototype._update=function(e,t){for(var n=this.W,o=0;o<16;o++)n[o]=e[t+o];for(;o<n.length;o++)n[o]=c(h(n[o-2]),n[o-7],m(n[o-15]),n[o-16]);var r=this.h[0],i=this.h[1],g=this.h[2],v=this.h[3],w=this.h[4],y=this.h[5],b=this.h[6],_=this.h[7];for(s(this.k.length===n.length),o=0;o<n.length;o++){var E=u(_,f(w),l(w,y,b),this.k[o],n[o]),x=a(p(r),d(r,i,g));_=b,b=y,y=w,w=a(v,E),v=g,g=i,i=r,r=a(E,x)}this.h[0]=a(this.h[0],r),this.h[1]=a(this.h[1],i),this.h[2]=a(this.h[2],g),this.h[3]=a(this.h[3],v),this.h[4]=a(this.h[4],w),this.h[5]=a(this.h[5],y),this.h[6]=a(this.h[6],b),this.h[7]=a(this.h[7],_)},w.prototype._digest=function(e){return"hex"===e?o.toHex32(this.h,"big"):o.split32(this.h,"big")}},713:function(e,t,n){"use strict";var o=n(212).rotr32;function r(e,t,n){return e&t^~e&n}function i(e,t,n){return e&t^e&n^t&n}function s(e,t,n){return e^t^n}t.ft_1=function(e,t,n,o){return 0===e?r(t,n,o):1===e||3===e?s(t,n,o):2===e?i(t,n,o):void 0},t.ch32=r,t.maj32=i,t.p32=s,t.s0_256=function(e){return o(e,2)^o(e,13)^o(e,22)},t.s1_256=function(e){return o(e,6)^o(e,11)^o(e,25)},t.g0_256=function(e){return o(e,7)^o(e,18)^e>>>3},t.g1_256=function(e){return o(e,17)^o(e,19)^e>>>10}},212:function(e,t,n){"use strict";var o=n(9561),r=n(1285);function i(e,t){return 55296==(64512&e.charCodeAt(t))&&(!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1)))}function s(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function a(e){return 1===e.length?"0"+e:e}function c(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=r,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var n=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),r=0;r<e.length;r+=2)n.push(parseInt(e[r]+e[r+1],16))}else for(var o=0,r=0;r<e.length;r++){var s=e.charCodeAt(r);s<128?n[o++]=s:s<2048?(n[o++]=s>>6|192,n[o++]=63&s|128):i(e,r)?(s=65536+((1023&s)<<10)+(1023&e.charCodeAt(++r)),n[o++]=s>>18|240,n[o++]=s>>12&63|128,n[o++]=s>>6&63|128,n[o++]=63&s|128):(n[o++]=s>>12|224,n[o++]=s>>6&63|128,n[o++]=63&s|128)}else for(r=0;r<e.length;r++)n[r]=0|e[r];return n},t.toHex=function(e){for(var t="",n=0;n<e.length;n++)t+=a(e[n].toString(16));return t},t.htonl=s,t.toHex32=function(e,t){for(var n="",o=0;o<e.length;o++){var r=e[o];"little"===t&&(r=s(r)),n+=c(r.toString(16))}return n},t.zero2=a,t.zero8=c,t.join32=function(e,t,n,r){var i=n-t;o(i%4==0);for(var s=new Array(i/4),a=0,c=t;a<s.length;a++,c+=4){var u;u="big"===r?e[c]<<24|e[c+1]<<16|e[c+2]<<8|e[c+3]:e[c+3]<<24|e[c+2]<<16|e[c+1]<<8|e[c],s[a]=u>>>0}return s},t.split32=function(e,t){for(var n=new Array(4*e.length),o=0,r=0;o<e.length;o++,r+=4){var i=e[o];"big"===t?(n[r]=i>>>24,n[r+1]=i>>>16&255,n[r+2]=i>>>8&255,n[r+3]=255&i):(n[r+3]=i>>>24,n[r+2]=i>>>16&255,n[r+1]=i>>>8&255,n[r]=255&i)}return n},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<<t|e>>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,n){return e+t+n>>>0},t.sum32_4=function(e,t,n,o){return e+t+n+o>>>0},t.sum32_5=function(e,t,n,o,r){return e+t+n+o+r>>>0},t.sum64=function(e,t,n,o){var r=e[t],i=o+e[t+1]>>>0,s=(i<o?1:0)+n+r;e[t]=s>>>0,e[t+1]=i},t.sum64_hi=function(e,t,n,o){return(t+o>>>0<t?1:0)+e+n>>>0},t.sum64_lo=function(e,t,n,o){return t+o>>>0},t.sum64_4_hi=function(e,t,n,o,r,i,s,a){var c=0,u=t;return c+=(u=u+o>>>0)<t?1:0,c+=(u=u+i>>>0)<i?1:0,e+n+r+s+(c+=(u=u+a>>>0)<a?1:0)>>>0},t.sum64_4_lo=function(e,t,n,o,r,i,s,a){return t+o+i+a>>>0},t.sum64_5_hi=function(e,t,n,o,r,i,s,a,c,u){var l=0,d=t;return l+=(d=d+o>>>0)<t?1:0,l+=(d=d+i>>>0)<i?1:0,l+=(d=d+a>>>0)<a?1:0,e+n+r+s+c+(l+=(d=d+u>>>0)<u?1:0)>>>0},t.sum64_5_lo=function(e,t,n,o,r,i,s,a,c,u){return t+o+i+a+u>>>0},t.rotr64_hi=function(e,t,n){return(t<<32-n|e>>>n)>>>0},t.rotr64_lo=function(e,t,n){return(e<<32-n|t>>>n)>>>0},t.shr64_hi=function(e,t,n){return e>>>n},t.shr64_lo=function(e,t,n){return(e<<32-n|t>>>n)>>>0}},1285:function(e){"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},7839:function(e,t,n){var o=n(2699),r=n(1285);function i(e){if(!(this instanceof i))return new i(e);"number"==typeof e&&(e={max:e}),e||(e={}),o.EventEmitter.call(this),this.cache={},this.head=this.tail=null,this.length=0,this.max=e.max||1e3,this.maxAge=e.maxAge||0}e.exports=i,r(i,o.EventEmitter),Object.defineProperty(i.prototype,"keys",{get:function(){return Object.keys(this.cache)}}),i.prototype.clear=function(){this.cache={},this.head=this.tail=null,this.length=0},i.prototype.remove=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];return delete this.cache[e],this._unlink(e,t.prev,t.next),t.value}},i.prototype._unlink=function(e,t,n){this.length--,0===this.length?this.head=this.tail=null:this.head===e?(this.head=t,this.cache[this.head].next=null):this.tail===e?(this.tail=n,this.cache[this.tail].prev=null):(this.cache[t].next=n,this.cache[n].prev=t)},i.prototype.peek=function(e){if(this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return t.value}},i.prototype.set=function(e,t){var n;if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){if((n=this.cache[e]).value=t,this.maxAge&&(n.modified=Date.now()),e===this.head)return t;this._unlink(e,n.prev,n.next)}else n={value:t,modified:0,next:null,prev:null},this.maxAge&&(n.modified=Date.now()),this.cache[e]=n,this.length===this.max&&this.evict();return this.length++,n.next=null,n.prev=this.head,this.head&&(this.cache[this.head].next=e),this.head=e,this.tail||(this.tail=e),t},i.prototype._checkAge=function(e,t){return!(this.maxAge&&Date.now()-t.modified>this.maxAge)||(this.remove(e),this.emit("evict",{key:e,value:t.value}),!1)},i.prototype.get=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return this.head!==e&&(e===this.tail?(this.tail=t.next,this.cache[this.tail].prev=null):this.cache[t.prev].next=t.next,this.cache[t.next].prev=t.prev,this.cache[this.head].next=e,t.prev=this.head,t.next=null,this.head=e),t.value}},i.prototype.evict=function(){if(this.tail){var e=this.tail,t=this.remove(this.tail);this.emit("evict",{key:e,value:t})}}},3186:function(){},8005:function(){},5773:function(){},5670:function(){},4373:function(){},7777:function(){},7710:function(){},2014:function(){},6372:function(){},4422:function(){},9561:function(e){function t(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=t,t.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)}},8650:function(e){var t,n=window.ProgressEvent,o=!!n;try{t=new n("loaded"),o="loaded"===t.type,t=null}catch(r){o=!1}e.exports=o?n:"function"==typeof document.createEvent?function(e,t){var n=document.createEvent("Event");return n.initEvent(e,!1,!1),t?(n.lengthComputable=Boolean(t.lengthComputable),n.loaded=Number(t.loaded)||0,n.total=Number(t.total)||0):(n.lengthComputable=!1,n.loaded=n.total=0),n}:function(e,t){var n=document.createEventObject();return n.type=e,t?(n.lengthComputable=Boolean(t.lengthComputable),n.loaded=Number(t.loaded)||0,n.total=Number(t.total)||0):(n.lengthComputable=!1,n.loaded=n.total=0),n}},8435:function(e){var t="undefined"!=typeof Element,n="function"==typeof Map,o="function"==typeof Set,r="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function i(e,s){if(e===s)return!0;if(e&&s&&"object"==typeof e&&"object"==typeof s){if(e.constructor!==s.constructor)return!1;var a,c,u,l;if(Array.isArray(e)){if((a=e.length)!=s.length)return!1;for(c=a;0!=c--;)if(!i(e[c],s[c]))return!1;return!0}if(n&&e instanceof Map&&s instanceof Map){if(e.size!==s.size)return!1;for(l=e.entries();!(c=l.next()).done;)if(!s.has(c.value[0]))return!1;for(l=e.entries();!(c=l.next()).done;)if(!i(c.value[1],s.get(c.value[0])))return!1;return!0}if(o&&e instanceof Set&&s instanceof Set){if(e.size!==s.size)return!1;for(l=e.entries();!(c=l.next()).done;)if(!s.has(c.value[0]))return!1;return!0}if(r&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(s)){if((a=e.length)!=s.length)return!1;for(c=a;0!=c--;)if(e[c]!==s[c])return!1;return!0}if(e.constructor===RegExp)return e.source===s.source&&e.flags===s.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===s.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===s.toString();if((a=(u=Object.keys(e)).length)!==Object.keys(s).length)return!1;for(c=a;0!=c--;)if(!Object.prototype.hasOwnProperty.call(s,u[c]))return!1;if(t&&e instanceof Element)return!1;for(c=a;0!=c--;)if(("_owner"!==u[c]&&"__v"!==u[c]&&"__o"!==u[c]||!e.$$typeof)&&!i(e[u[c]],s[u[c]]))return!1;return!0}return e!=e&&s!=s}e.exports=function(e,t){try{return i(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},6194:function(e,t,n){"use strict";n.d(t,{D:function(){return u}});var o=n(9196),r=n(7295),i=n(8435),s=n.n(i),a=n(855),c=[],u=function(e,t,n){void 0===n&&(n={});var i=o.useRef(null),u={onFirstUpdate:n.onFirstUpdate,placement:n.placement||"bottom",strategy:n.strategy||"absolute",modifiers:n.modifiers||c},l=o.useState({styles:{popper:{position:u.strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),d=l[0],p=l[1],f=o.useMemo((function(){return{name:"updateState",enabled:!0,phase:"write",fn:function(e){var t=e.state,n=Object.keys(t.elements);p({styles:(0,a.sq)(n.map((function(e){return[e,t.styles[e]||{}]}))),attributes:(0,a.sq)(n.map((function(e){return[e,t.attributes[e]]})))})},requires:["computeStyles"]}}),[]),m=o.useMemo((function(){var e={onFirstUpdate:u.onFirstUpdate,placement:u.placement,strategy:u.strategy,modifiers:[].concat(u.modifiers,[f,{name:"applyStyles",enabled:!1}])};return s()(i.current,e)?i.current||e:(i.current=e,e)}),[u.onFirstUpdate,u.placement,u.strategy,u.modifiers,f]),h=o.useRef();return(0,a.LI)((function(){h.current&&h.current.setOptions(m)}),[m]),(0,a.LI)((function(){if(null!=e&&null!=t){var o=(n.createPopper||r.fi)(e,t,m);return h.current=o,function(){o.destroy(),h.current=null}}}),[e,t,n.createPopper]),{state:h.current?h.current.state:null,styles:d.styles,attributes:d.attributes,update:h.current?h.current.update:null,forceUpdate:h.current?h.current.forceUpdate:null}}},855:function(e,t,n){"use strict";n.d(t,{sq:function(){return r},LI:function(){return i}});var o=n(9196),r=function(e){return e.reduce((function(e,t){var n=t[0],o=t[1];return e[n]=o,e}),{})},i="undefined"!=typeof window&&window.document&&window.document.createElement?o.useLayoutEffect:o.useEffect},9830:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var o=n(1184),r={contextDelimiter:"",onMissingKey:null};function i(e,t){var n;for(n in this.data=e,this.pluralForms={},this.options={},r)this.options[n]=void 0!==t&&n in t?t[n]:r[n]}i.prototype.getPluralForm=function(e,t){var n,r,i,s=this.pluralForms[e];return s||("function"!=typeof(i=(n=this.data[e][""])["Plural-Forms"]||n["plural-forms"]||n.plural_forms)&&(r=function(e){var t,n,o;for(t=e.split(";"),n=0;n<t.length;n++)if(0===(o=t[n].trim()).indexOf("plural="))return o.substr(7)}(n["Plural-Forms"]||n["plural-forms"]||n.plural_forms),i=(0,o.Z)(r)),s=this.pluralForms[e]=i),s(t)},i.prototype.dcnpgettext=function(e,t,n,o,r){var i,s,a;return i=void 0===r?0:this.getPluralForm(e,r),s=n,t&&(s=t+this.options.contextDelimiter+n),(a=this.data[e][s])&&a[i]?a[i]:(this.options.onMissingKey&&this.options.onMissingKey(n,e),0===i?n:o)}},3133:function(e,t,n){"use strict";var o=n(6989),r=n.n(o),i=n(9307);t.Z=()=>{const[e,t]=(0,i.useState)("");return(0,i.useEffect)((()=>{r()({path:"/wpcom/v2/block-editor/has-seen-seller-celebration-modal"}).then((e=>t(e.has_seen_seller_celebration_modal))).catch((()=>t(!1)))})),{hasSeenSellerCelebrationModal:e,updateHasSeenSellerCelebrationModal:function(e){r()({method:"PUT",path:"/wpcom/v2/block-editor/has-seen-seller-celebration-modal",data:{has_seen_seller_celebration_modal:e}}).finally((()=>{t(e)}))}}}},5262:function(e,t,n){"use strict";var o=n(6989),r=n.n(o),i=n(9307);t.Z=()=>{const[e,t]=(0,i.useState)(""),n=(0,i.useCallback)((()=>{r()({path:"/wpcom/v2/site-intent"}).then((e=>t(e.site_intent))).catch((()=>t("")))}),[]);return(0,i.useEffect)((()=>{n()}),[n]),e}},7542:function(e,t,n){"use strict";var o=n(9307),r=n(9196),i=n(8552);t.Z=e=>{const[t,n]=(0,o.useState)({}),s=(0,r.useCallback)((async()=>{const t=await(0,i.ZP)({path:`/sites/${e}?http_envelope=1`,apiVersion:"1.1"});null!=t&&t.plan&&n(t.plan)}),[e]);return(0,o.useEffect)((()=>{s()}),[s]),t}},7869:function(e,t,n){"use strict";var o=n(9307),r=(n(3945),n(849)),i=n(4655),s=n(5609),a=n(9818),c=n(8817),u=n(6483),l=n(3867),d=n(9935),p=n(6011),f=n(1258),m=n(1970),h=n(374),g=n(7203);function v(){var e;const[t]=(0,o.useState)((0,u.getQueryArg)(window.location.href,"showDraftPostModal")),{show:n,isLoaded:c,variant:d,isManuallyOpened:p,isNewPageLayoutModalOpen:f}=(0,a.useSelect)((e=>{const t=e("automattic/wpcom-welcome-guide"),n=e("automattic/starter-page-layouts");return{show:t.isWelcomeGuideShown(),isLoaded:t.isWelcomeGuideStatusLoaded(),variant:t.getWelcomeGuideVariant(),isManuallyOpened:t.isWelcomeGuideManuallyOpened(),isNewPageLayoutModalOpen:null==n?void 0:n.isOpen()}}),[]),v=null===(e=(0,a.useDispatch)("automattic/starter-page-layouts"))||void 0===e?void 0:e.setOpenState,{fetchWelcomeGuideStatus:w}=(0,a.useDispatch)("automattic/wpcom-welcome-guide");return(0,o.useEffect)((()=>{c||w()}),[w,c]),!n||f?null:d===m.yn&&!p&&v?(v("OPEN_FOR_BLANK_CANVAS"),null):d===m.Sz?(0,o.createElement)(r.Iw,{localeSlug:window.wpcomBlockEditorNuxLocale??i.OP},t?(0,o.createElement)(l.Z,null):(0,o.createElement)(g.Z,null)):"modal"===d&&s.Guide&&s.GuidePage?(0,o.createElement)(h.Z,null):null}(0,c.registerPlugin)("wpcom-block-editor-nux",{render:()=>(0,o.createElement)(o.Fragment,null,(0,o.createElement)(v,null),(0,o.createElement)(d.Z,null),(0,o.createElement)(f.Z,null),(0,o.createElement)(p.Z,null))})},1568:function(e,t,n){"use strict";var o=n(9818);n(462);const r=(0,o.subscribe)((()=>{var e,t;(0,o.dispatch)("core/nux").disableTips(),null!==(e=(0,o.select)("core/edit-post"))&&void 0!==e&&e.isFeatureActive("welcomeGuide")&&((0,o.dispatch)("core/edit-post").toggleFeature("welcomeGuide"),r()),null!==(t=(0,o.select)("core/edit-site"))&&void 0!==t&&t.isFeatureActive("welcomeGuide")&&((0,o.dispatch)("core/edit-site").toggleFeature("welcomeGuide"),r())}));(0,o.subscribe)((()=>{var e,t;(0,o.select)("core/nux").areTipsEnabled()&&((0,o.dispatch)("core/nux").disableTips(),(0,o.dispatch)("automattic/wpcom-welcome-guide").setShowWelcomeGuide(!0)),null!==(e=(0,o.select)("core/edit-post"))&&void 0!==e&&e.isFeatureActive("welcomeGuide")&&((0,o.dispatch)("core/edit-post").toggleFeature("welcomeGuide"),(0,o.select)("automattic/wpcom-welcome-guide").isWelcomeGuideStatusLoaded()&&(0,o.dispatch)("automattic/wpcom-welcome-guide").setShowWelcomeGuide(!0,{openedManually:!0})),null!==(t=(0,o.select)("core/edit-site"))&&void 0!==t&&t.isFeatureActive("welcomeGuide")&&((0,o.dispatch)("core/edit-site").toggleFeature("welcomeGuide"),(0,o.select)("automattic/wpcom-welcome-guide").isWelcomeGuideStatusLoaded()&&(0,o.dispatch)("automattic/wpcom-welcome-guide").setShowWelcomeGuide(!0,{openedManually:!0}))}))},3867:function(e,t,n){"use strict";var o=n(9307),r=n(6115),i=n(5609),s=n(9818),a=n(2694),c=n(5736),u=n(3634),l=n(3790);n(3186);const __=c.__,d="a8c.wpcom-block-editor.closeEditor";t.Z=()=>{const e=window._currentSiteId,t=(0,s.useSelect)((t=>t("automattic/site").getPrimarySiteDomain(e))),n=`/home/${(null==t?void 0:t.domain)||window.location.hostname}`,[c,p]=(0,o.useState)(!0),f=()=>p(!1);return(0,o.createElement)(u.Z,{isOpen:c,className:"wpcom-block-editor-draft-post-modal",title:__("Write your first post","full-site-editing"),description:__("It’s time to flex those writing muscles and start drafting your first post!","full-site-editing"),imageSrc:l,actionButtons:(0,o.createElement)(o.Fragment,null,(0,o.createElement)(i.Button,{isPrimary:!0,onClick:f},__("Start writing","full-site-editing")),(0,o.createElement)(i.Button,{isSecondary:!0,onClick:()=>{(0,a.hasAction)(d)?(0,a.doAction)(d,n):window.location.href=`https://wordpress.com${n}`}},__("I'm not ready","full-site-editing"))),onRequestClose:f,onOpen:()=>(0,r.jN)("calypso_editor_wpcom_draft_post_modal_show")})}},3634:function(e,t,n){"use strict";var o=n(9307),r=n(5609),i=n(2779),s=n.n(i);n(9196),n(8005);t.Z=e=>{let{isOpen:t,className:n,title:i,description:a,imageSrc:c,actionButtons:u,onRequestClose:l,onOpen:d}=e;const p=(0,o.useRef)(null);return(0,o.useEffect)((()=>{!p.current&&t&&(null==d||d()),p.current=t}),[p,t,d]),t?(0,o.createElement)(r.Modal,{className:s()("wpcom-block-editor-nux-modal",n),open:t,title:"",onRequestClose:l},(0,o.createElement)("div",{className:"wpcom-block-editor-nux-modal__image-container"},(0,o.createElement)("img",{src:c,alt:i})),(0,o.createElement)("h1",{className:"wpcom-block-editor-nux-modal__title"},i),(0,o.createElement)("p",{className:"wpcom-block-editor-nux-modal__description"},a),(0,o.createElement)("div",{className:"wpcom-block-editor-nux-modal__buttons"},u)):null}},9935:function(e,t,n){"use strict";var o=n(9307),r=n(6115),i=n(5609),s=n(9818),a=n(5736),c=(n(9196),n(3634)),u=n(5275);n(5773);const __=a.__;t.Z=()=>{const{link:e}=(0,s.useSelect)((e=>e("core/editor").getCurrentPost())),t=(0,s.useSelect)((e=>e("core/editor").getCurrentPostType())),n=(0,s.useSelect)((e=>e("core/editor").isCurrentPostPublished())),a=(0,o.useRef)(n),l=(0,s.useSelect)((e=>e("automattic/wpcom-welcome-guide").getShouldShowFirstPostPublishedModal())),[d,p]=(0,o.useState)(!1),{fetchShouldShowFirstPostPublishedModal:f,setShouldShowFirstPostPublishedModal:m}=(0,s.useDispatch)("automattic/wpcom-welcome-guide");(0,o.useEffect)((()=>{f()}),[f]),(0,o.useEffect)((()=>{l&&!a.current&&n&&"post"===t&&(a.current=n,m(!1),window.setTimeout((()=>{p(!0)})))}),[t,l,n,m]);return(0,o.createElement)(c.Z,{isOpen:d,className:"wpcom-block-editor-post-published-modal",title:__("Your first post is published!","full-site-editing"),description:__("Congratulations! You did it. View your post to see how it will look on your site.","full-site-editing"),imageSrc:u,actionButtons:(0,o.createElement)(i.Button,{isPrimary:!0,onClick:t=>{t.preventDefault(),window.top.location.href=e}},__("View Post","full-site-editing")),onRequestClose:()=>p(!1),onOpen:()=>(0,r.jN)("calypso_editor_wpcom_first_post_published_modal_show")})}},3945:function(e,t,n){"object"==typeof window&&window.wpcomBlockEditorNuxAssetsUrl&&(n.p=window.wpcomBlockEditorNuxAssetsUrl)},6011:function(e,t,n){"use strict";var o=n(9818),r=n(5736),i=n(3961),s=n(9196);n(5670);const __=r.__;t.Z=function(){const[e,t]=(0,s.useState)(!1),{createNotice:n}=(0,o.useDispatch)(i.store);return(0,s.useEffect)((()=>{const o=/[&?]notice=([\w_-]+)/.exec(document.location.search);"purchase-success"===(o&&o[1])&&!1===e&&(t(!0),n("info",__("Welcome to the Pro plan! Premium blocks are now available to use.","full-site-editing"),{isDismissible:!0,type:"snackbar"}))})),null}},1258:function(e,t,n){"use strict";var o=n(9307),r=n(6115),i=n(5609),s=n(9818),a=n(5736),c=n(3133),u=n(5262),l=n(3634),d=n(4242);n(4373);const __=a.__;t.Z=()=>{const{addEntities:e}=(0,s.useDispatch)("core");(0,o.useEffect)((()=>{e([{baseURL:"/wp/v2/statuses",key:"slug",kind:"root",name:"status",plural:"statuses"}])}),[]);const[t,n]=(0,o.useState)(!1),[a,p]=(0,o.useState)(!1),f=(0,s.useSelect)((e=>!!e("core/edit-site"))),m=(0,o.useRef)(!1),{isEditorSaving:h,hasPaymentsBlock:g,linkUrl:v}=(0,s.useSelect)((e=>{if(f){var t,n,o;const r=e("core").isSavingEntityRecord("root","site"),i=e("core/edit-site").getPage(),s=parseInt(null==i||null===(t=i.context)||void 0===t?void 0:t.postId),a=e("core").isSavingEntityRecord("postType","page",s),c=e("core").getEntityRecord("postType","page",s);return{isEditorSaving:r||a,hasPaymentsBlock:(null==c||null===(n=c.content)||void 0===n||null===(o=n.raw)||void 0===o?void 0:o.includes("\x3c!-- wp:jetpack/recurring-payments --\x3e"))??!1,linkUrl:null==c?void 0:c.link}}const r=e("core/editor").getCurrentPost();return{isEditorSaving:e("core").isSavingEntityRecord("postType",null==r?void 0:r.type,null==r?void 0:r.id),hasPaymentsBlock:e("core/block-editor").getGlobalBlockCount("jetpack/recurring-payments")>0,linkUrl:r.link}})),w=(0,u.Z)(),{hasSeenSellerCelebrationModal:y,updateHasSeenSellerCelebrationModal:b}=(0,c.Z)();(0,o.useEffect)((()=>{h||!m.current||a||"sell"!==w||!g||y||(n(!0),p(!0),b(!0)),m.current=h}),[h,a,w,g,y,b]);const _=()=>n(!1);return(0,o.createElement)(l.Z,{isOpen:t,className:"wpcom-site-editor-seller-celebration-modal",title:__("You've added your first product!","full-site-editing"),description:__("Preview your product on your site before launching and sharing with others.","full-site-editing"),imageSrc:d,actionButtons:(0,o.createElement)(o.Fragment,null,(0,o.createElement)(i.Button,{onClick:_},__("Continue editing","full-site-editing")),(0,o.createElement)(i.Button,{isPrimary:!0,href:v,target:"__blank",rel:"noopener noreferrer"},__("View your product","full-site-editing"))),onRequestClose:_,onOpen:()=>(0,r.jN)("calypso_editor_wpcom_seller_celebration_modal_show")})}},1970:function(e,t,n){"use strict";n.d(t,{Sz:function(){return a},yn:function(){return c},z2:function(){return p}});var o=n(6989),r=n.n(o),i=n(9818),s=n(3418);n(3288);const a="tour",c="blank-canvas-tour",u=(0,i.combineReducers)({welcomeGuideManuallyOpened:function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"WPCOM_WELCOME_GUIDE_SHOW_SET":return void 0!==t.openedManually?t.openedManually:e;case"WPCOM_WELCOME_GUIDE_RESET_STORE":return!1;default:return e}},showWelcomeGuide:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS":return t.response.show_welcome_guide;case"WPCOM_WELCOME_GUIDE_SHOW_SET":return t.show;case"WPCOM_WELCOME_GUIDE_RESET_STORE":return;default:return e}},tourRating:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"WPCOM_WELCOME_GUIDE_TOUR_RATING_SET":return t.tourRating;case"WPCOM_WELCOME_GUIDE_RESET_STORE":return;default:return e}},welcomeGuideVariant:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS":return t.response.variant;case"WPCOM_HAS_USED_PATTERNS_MODAL":return e===c?a:e;case"WPCOM_WELCOME_GUIDE_RESET_STORE":return a;default:return e}},shouldShowFirstPostPublishedModal:function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL":return t.value;case"WPCOM_WELCOME_GUIDE_RESET_STORE":return!1;default:return e}}}),l={*fetchWelcomeGuideStatus(){return{type:"WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS",response:yield(0,s.apiFetch)({path:"/wpcom/v2/block-editor/nux"})}},*fetchShouldShowFirstPostPublishedModal(){return{type:"WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL",value:(yield(0,s.apiFetch)({path:"/wpcom/v2/block-editor/should-show-first-post-published-modal"})).should_show_first_post_published_modal}},setShowWelcomeGuide:function(e){let{openedManually:t,onlyLocal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n||r()({path:"/wpcom/v2/block-editor/nux",method:"POST",data:{show_welcome_guide:e}}),{type:"WPCOM_WELCOME_GUIDE_SHOW_SET",show:e,openedManually:t}},setTourRating:e=>({type:"WPCOM_WELCOME_GUIDE_TOUR_RATING_SET",tourRating:e}),setUsedPageOrPatternsModal:()=>({type:"WPCOM_HAS_USED_PATTERNS_MODAL"}),setShouldShowFirstPostPublishedModal:e=>({type:"WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL",value:e}),resetStore:()=>({type:"WPCOM_WELCOME_GUIDE_RESET_STORE"})},d={isWelcomeGuideManuallyOpened:e=>e.welcomeGuideManuallyOpened,isWelcomeGuideShown:e=>!!e.showWelcomeGuide,isWelcomeGuideStatusLoaded:e=>void 0!==e.showWelcomeGuide,getTourRating:e=>e.tourRating,getWelcomeGuideVariant:e=>"modal"===e.welcomeGuideVariant?a:e.welcomeGuideVariant,getShouldShowFirstPostPublishedModal:e=>e.shouldShowFirstPostPublishedModal};function p(){return(0,i.registerStore)("automattic/wpcom-welcome-guide",{reducer:u,actions:l,selectors:d,controls:s.controls,persist:!0})}},374:function(e,t,n){"use strict";var o=n(7896),r=n(9307),i=n(6115),s=n(5609),a=n(9818),c=n(5736),u=n(9711),l=n(6595),d=n(5486),p=n(7821);n(7777);const __=c.__;function f(e){let{pageNumber:t,isLastPage:n,alignBottom:o=!1,heading:a,description:c,imgSrc:u}=e;return(0,r.useEffect)((()=>{var e;(0,i.jN)("calypso_editor_wpcom_nux_slide_view",{slide_number:t,is_last_slide:n,is_gutenboarding:null===(e=window.calypsoifyGutenberg)||void 0===e?void 0:e.isGutenboarding})}),[]),(0,r.createElement)(s.GuidePage,{className:"wpcom-block-editor-nux__page"},(0,r.createElement)("div",{className:"wpcom-block-editor-nux__text"},(0,r.createElement)("h1",{className:"wpcom-block-editor-nux__heading"},a),(0,r.createElement)("div",{className:"wpcom-block-editor-nux__description"},c)),(0,r.createElement)("div",{className:"wpcom-block-editor-nux__visual"},(0,r.createElement)("img",{key:u,src:u,alt:"","aria-hidden":"true",className:"wpcom-block-editor-nux__image"+(o?" align-bottom":"")})))}t.Z=function(){const{show:e,isNewPageLayoutModalOpen:t,isManuallyOpened:n}=(0,a.useSelect)((e=>({show:e("automattic/wpcom-welcome-guide").isWelcomeGuideShown(),isNewPageLayoutModalOpen:e("automattic/starter-page-layouts")&&e("automattic/starter-page-layouts").isOpen(),isManuallyOpened:e("automattic/wpcom-welcome-guide").isWelcomeGuideManuallyOpened()}))),{setShowWelcomeGuide:c}=(0,a.useDispatch)("automattic/wpcom-welcome-guide");if((0,r.useEffect)((()=>{var o;e&&!t&&(0,i.jN)("calypso_editor_wpcom_nux_open",{is_gutenboarding:null===(o=window.calypsoifyGutenberg)||void 0===o?void 0:o.isGutenboarding,is_manually_opened:n})}),[n,t,e]),!e||t)return null;const m=[{heading:__("Welcome to your website","full-site-editing"),description:__("Edit your homepage, add the pages you need, and change your site’s look and feel.","full-site-editing"),imgSrc:l,alignBottom:!0},{heading:__("Add or edit your content","full-site-editing"),description:__("Edit the placeholder content we’ve started you off with, or click the plus sign to add more content.","full-site-editing"),imgSrc:u},{heading:__("Preview your site as you go","full-site-editing"),description:__("As you edit your site content, click “Preview” to see your site the way your visitors will.","full-site-editing"),imgSrc:d,alignBottom:!0},{heading:__("Hidden until you’re ready","full-site-editing"),description:__("Your site will remain hidden until launched. Click “Launch” in the toolbar to share it with the world.","full-site-editing"),imgSrc:p,alignBottom:!0}];return(0,r.createElement)(s.Guide,{className:"wpcom-block-editor-nux",contentLabel:__("Welcome to your website","full-site-editing"),finishButtonText:__("Get started","full-site-editing"),onFinish:()=>{var e;(0,i.jN)("calypso_editor_wpcom_nux_dismiss",{is_gutenboarding:null===(e=window.calypsoifyGutenberg)||void 0===e?void 0:e.isGutenboarding}),c(!1,{openedManually:!1})}},m.map(((e,t)=>(0,r.createElement)(f,(0,o.Z)({key:e.heading,pageNumber:t+1,isLastPage:t===m.length-1},e)))))}},7203:function(e,t,n){"use strict";var o=n(9307),r=n(6115),i=n(849),s=n(5585),a=n(8038),c=n(9321),u=n(9818),l=n(5262),d=n(7542),p=n(6505);n(7710);function f(){var e;const t=(0,d.Z)(window._currentSiteId),n=(0,l.Z)(),s=(0,i.bU)(),{setShowWelcomeGuide:f}=(0,u.useDispatch)("automattic/wpcom-welcome-guide"),m=null===(e=window.calypsoifyGutenberg)||void 0===e?void 0:e.isGutenboarding,h=()=>new URLSearchParams(document.location.search).has("welcome-tour-next"),g=(0,u.useSelect)((e=>!!e("core/edit-site"))),v=(0,p.Z)(s,h(),g);if("sell"!==n||!t||"ecommerce-bundle"===t.product_slug){const e=v.findIndex((e=>"payment-block"===e.slug));v.splice(e,1)}const{isInserterOpened:w,isSidebarOpened:y,isSettingsOpened:b}=(0,u.useSelect)((e=>{var t;return{isInserterOpened:e("core/edit-post").isInserterOpened(),isSidebarOpened:(null===(t=e("automattic/block-editor-nav-sidebar"))||void 0===t?void 0:t.isSidebarOpened())??!1,isSettingsOpened:"edit-post/document"===e("core/interface").getActiveComplementaryArea("core/edit-post")}})),_=y||(0,c.kV)("<782px")&&(w||b),E={steps:v,closeHandler:(e,t,n)=>{(0,r.jN)("calypso_editor_wpcom_tour_dismiss",{is_gutenboarding:m,slide_number:t+1,action:n}),f(!1,{openedManually:!1})},isMinimized:_,options:{tourRating:{enabled:!0,useTourRating:()=>(0,u.useSelect)((e=>e("automattic/wpcom-welcome-guide").getTourRating())),onTourRate:e=>{(0,u.dispatch)("automattic/wpcom-welcome-guide").setTourRating(e),(0,r.jN)("calypso_editor_wpcom_tour_rate",{thumbs_up:"thumbs-up"===e,is_gutenboarding:!1})}},callbacks:{onMinimize:e=>{(0,r.jN)("calypso_editor_wpcom_tour_minimize",{is_gutenboarding:m,slide_number:e+1})},onMaximize:e=>{(0,r.jN)("calypso_editor_wpcom_tour_maximize",{is_gutenboarding:m,slide_number:e+1})},onStepViewOnce:e=>{const t=v.length-1,{heading:n}=v[e].meta;(0,r.jN)("calypso_editor_wpcom_tour_slide_view",{slide_number:e+1,is_last_slide:e===t,slide_heading:n,is_gutenboarding:m})}},effects:{spotlight:h()?{styles:{minWidth:"50px",minHeight:"50px",borderRadius:"2px"}}:void 0,arrowIndicator:!1},popperModifiers:[(0,o.useMemo)((()=>({name:"offset",options:{offset:e=>{let{placement:t,reference:n}=e;if("bottom"===t){const e=document.querySelector(".edit-post-header");if(!e)return;const t=e.getBoundingClientRect();return[0,t.height+t.y-(n.height+n.y)+16]}return[0,0]}}})),[])],classNames:"wpcom-editor-welcome-tour",portalParentElement:document.getElementById("wpwrap")}};return(0,o.createElement)(a.Z,{config:E})}t.Z=function(){const{show:e,isNewPageLayoutModalOpen:t,isManuallyOpened:n}=(0,u.useSelect)((e=>({show:e("automattic/wpcom-welcome-guide").isWelcomeGuideShown(),isNewPageLayoutModalOpen:e("automattic/starter-page-layouts")&&e("automattic/starter-page-layouts").isOpen(),isManuallyOpened:e("automattic/wpcom-welcome-guide").isWelcomeGuideManuallyOpened()}))),a=(0,i.bU)();return(0,s.Z)([(0,p.Z)(a,!1)[0]]),(0,o.useEffect)((()=>{var o;(e||t)&&(0,r.jN)("calypso_editor_wpcom_tour_open",{is_gutenboarding:null===(o=window.calypsoifyGutenberg)||void 0===o?void 0:o.isGutenboarding,is_manually_opened:n})}),[t,n,e]),!e||t?null:(0,o.createElement)(f,null)}},6505:function(e,t,n){"use strict";var o=n(9307),r=n(7498),i=n(9321),s=n(5609),a=n(5736);const __=a.__;function c(e){const t="https://s0.wp.com/i/editor-welcome-tour";return{addBlock:{desktop:{src:`${t}/slide-add-block.gif`,type:"image/gif"},mobile:{src:`${t}/slide-add-block_mobile.gif`,type:"image/gif"}},allBlocks:{desktop:{src:`${t}/slide-all-blocks.gif`,type:"image/gif"}},finish:{desktop:{src:`${t}/slide-finish.png`,type:"image/gif"}},makeBold:{desktop:{src:`${t}/slide-make-bold.gif`,type:"image/gif"}},moreOptions:{desktop:{src:`${t}/slide-more-options.gif`,type:"image/gif"},mobile:{src:`${t}/slide-more-options_mobile.gif`,type:"image/gif"}},moveBlock:{desktop:{src:`${t}/slide-move-block.gif`,type:"image/gif"},mobile:{src:`${t}/slide-move-block_mobile.gif`,type:"image/gif"}},findYourWay:{desktop:{src:`${t}/slide-find-your-way.gif`,type:"image/gif"}},undo:{desktop:{src:`${t}/slide-undo.gif`,type:"image/gif"}},welcome:{desktop:{src:`${t}/slide-welcome.png`,type:"image/png"},mobile:{src:`${t}/slide-welcome_mobile.jpg`,type:"image/jpeg"}},editYourSite:{desktop:{src:"https://s.w.org/images/block-editor/edit-your-site.gif?1",type:"image/gif"},mobile:{src:"https://s.w.org/images/block-editor/edit-your-site.gif?1",type:"image/gif"}}}[e]}t.Z=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return[{slug:"welcome",meta:{heading:__("Welcome to WordPress!","full-site-editing"),descriptions:{desktop:__("Take this short, interactive tour to learn the fundamentals of the WordPress editor.","full-site-editing"),mobile:null},imgSrc:c("welcome")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:["is-with-extra-padding","wpcom-editor-welcome-tour__step"]}}},{slug:"everything-is-a-block",meta:{heading:__("Everything is a block","full-site-editing"),descriptions:{desktop:__("In the WordPress Editor, paragraphs, images, and videos are all blocks.","full-site-editing"),mobile:null},imgSrc:c("allBlocks")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:"wpcom-editor-welcome-tour__step"}}},{slug:"add-block",...t&&{referenceElements:{mobile:".edit-post-header .edit-post-header__toolbar .components-button.edit-post-header-toolbar__inserter-toggle",desktop:".edit-post-header .edit-post-header__toolbar .components-button.edit-post-header-toolbar__inserter-toggle"}},meta:{heading:__("Adding a new block","full-site-editing"),descriptions:{desktop:__("Click + to open the inserter. Then click the block you want to add.","full-site-editing"),mobile:__("Tap + to open the inserter. Then tap the block you want to add.","full-site-editing")},imgSrc:c("addBlock")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:["is-with-extra-padding","wpcom-editor-welcome-tour__step"]}}},{slug:"edit-block",meta:{heading:__("Click a block to change it","full-site-editing"),descriptions:{desktop:__("Use the toolbar to change the appearance of a selected block. Try making it bold.","full-site-editing"),mobile:null},imgSrc:c("makeBold")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:"wpcom-editor-welcome-tour__step"}}},{slug:"settings",...t&&{referenceElements:{mobile:".edit-post-header .edit-post-header__settings .interface-pinned-items > button:nth-child(1)",desktop:".edit-post-header .edit-post-header__settings .interface-pinned-items > button:nth-child(1)"}},meta:{heading:__("More Options","full-site-editing"),descriptions:{desktop:__("Click the settings icon to see even more options.","full-site-editing"),mobile:__("Tap the settings icon to see even more options.","full-site-editing")},imgSrc:c("moreOptions")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:["is-with-extra-padding","wpcom-editor-welcome-tour__step"]}}},...(0,i.tq)()?[]:[{slug:"find-your-way",meta:{heading:__("Find your way","full-site-editing"),descriptions:{desktop:__("Use List View to see all the blocks you've added. Click and drag any block to move it around.","full-site-editing"),mobile:null},imgSrc:c("findYourWay")},options:{classNames:{desktop:["is-with-extra-padding","wpcom-editor-welcome-tour__step"],mobile:"wpcom-editor-welcome-tour__step"}}}],...(0,i.tq)()?[]:[{slug:"undo",...t&&{referenceElements:{desktop:".edit-post-header .edit-post-header__toolbar .components-button.editor-history__undo"}},meta:{heading:__("Undo any mistake","full-site-editing"),descriptions:{desktop:__("Click the Undo button if you've made a mistake.","full-site-editing"),mobile:null},imgSrc:c("undo")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:"wpcom-editor-welcome-tour__step"}}}],{slug:"drag-drop",meta:{heading:__("Drag & drop","full-site-editing"),descriptions:{desktop:__("To move blocks around, click and drag the handle.","full-site-editing"),mobile:__("To move blocks around, tap the up and down arrows.","full-site-editing")},imgSrc:c("moveBlock")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:["is-with-extra-padding","wpcom-editor-welcome-tour__step"]}}},{slug:"payment-block",meta:{heading:__("The Payments block","full-site-editing"),descriptions:{desktop:(0,o.createElement)(o.Fragment,null,__("The Payments block allows you to accept payments for one-time, monthly recurring, or annual payments on your website","full-site-editing"),(0,o.createElement)("br",null),(0,o.createElement)(s.ExternalLink,{href:(0,r.aq)("https://wordpress.com/support/video-tutorials-add-payments-features-to-your-site-with-our-guides/#how-to-use-the-payments-block-video",e),target:"_blank",rel:"noopener noreferrer"},__("Learn more","full-site-editing"))),mobile:null},imgSrc:c("welcome")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:"wpcom-editor-welcome-tour__step"}}},...n?[{slug:"edit-your-site",meta:{heading:__("Edit your site","full-site-editing"),descriptions:{desktop:__("Design everything on your site - from the header right down to the footer - using blocks.","full-site-editing"),mobile:__("Design everything on your site - from the header right down to the footer - using blocks.","full-site-editing")},imgSrc:c("editYourSite")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:["is-with-extra-padding","wpcom-editor-welcome-tour__step"]}}}]:[],{slug:"congratulations",meta:{heading:__("Congratulations!","full-site-editing"),descriptions:{desktop:(0,o.createInterpolateElement)(__("You've learned the basics. Remember, your site is private until you <link_to_launch_site_docs>decide to launch</link_to_launch_site_docs>. View the <link_to_editor_docs>block editing docs</link_to_editor_docs> to learn more.","full-site-editing"),{link_to_launch_site_docs:(0,o.createElement)(s.ExternalLink,{href:(0,r.aq)("https://wordpress.com/support/settings/privacy-settings/#launch-your-site",e)}),link_to_editor_docs:(0,o.createElement)(s.ExternalLink,{href:(0,r.aq)("https://wordpress.com/support/wordpress-editor/",e)})}),mobile:null},imgSrc:c("finish")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:"wpcom-editor-welcome-tour__step"}}}]}},6115:function(e,t,n){"use strict";n.d(t,{jN:function(){return o.jN}});n(1694),n(6209),n(9377);var o=n(9792);n(3722)},9377:function(e,t,n){"use strict";let o=null;"undefined"!=typeof window&&window.addEventListener("popstate",(function(){o=null}))},9792:function(e,t,n){"use strict";n.d(t,{jN:function(){return p}});var o=n(2699),r=n(4898),i=(n(3421),n(2819)),s=(n(9377),n(6209),n(9358));n(1694);const a=["a8c_cookie_banner_ok","wcadmin_storeprofiler_create_jetpack_account","wcadmin_storeprofiler_connect_store","wcadmin_storeprofiler_login_jetpack_account","wcadmin_storeprofiler_payment_login","wcadmin_storeprofiler_payment_create_account","calypso_checkout_switch_to_p_24","calypso_checkout_composite_p24_submit_clicked"];let c,u=Promise.resolve();function l(e){"undefined"!=typeof window&&(window._tkq=window._tkq||[],window._tkq.push(e))}"undefined"!=typeof document&&(u=(0,r.ve)("//stats.wp.com/w.js?63"));const d=new o.EventEmitter;function p(e,t){if(t=t||{},(0,s.Z)('Record event "%s" called with props %o',e,t),e.startsWith("calypso_")||(0,i.includes)(a,e)){if(c){const e=c(t);t={...t,...e}}t=(0,i.omitBy)(t,(e=>void 0===e)),(0,s.Z)('Recording event "%s" with actual props %o',e,t),l(["recordEvent",e,t]),d.emit("record-event",e,t)}else(0,s.Z)('- Event name must be prefixed by "calypso_" or added to `EVENT_NAME_EXCEPTIONS`')}},3722:function(e,t,n){"use strict";n(9792)},6209:function(e,t,n){"use strict";n(4)},9358:function(e,t,n){"use strict";var o=n(8049),r=n.n(o);t.Z=r()("calypso:analytics")},1694:function(e,t,n){"use strict";n(9358)},4:function(e,t,n){"use strict";n(8032)},3668:function(e,t,n){"use strict";var o=n(9307),r=n(5736),i=n(2779),s=n.n(i),a=n(2819);n(2014);const __=r.__;t.Z=e=>{let{activePageIndex:t,numberOfPages:n,onChange:i,classNames:c,children:u}=e;const l=s()("pagination-control",c);return(0,o.createElement)("ul",{className:l,"aria-label":__("Pagination control")},(0,a.times)(n,(e=>(0,o.createElement)("li",{key:`${n}-${e}`,"aria-current":e===t?"page":void 0},(0,o.createElement)("button",{className:s()("pagination-control__page",{"is-current":e===t}),disabled:e===t,"aria-label":(0,r.sprintf)(__("Page %1$d of %2$d"),e+1,n),onClick:()=>i(e)})))),u&&(0,o.createElement)("li",{className:"pagination-control__last-item"},u))}},4724:function(e,t,n){"use strict";var o=n(914);t.Z=new o.Z},914:function(e,t,n){"use strict";var o=n(2699),r=n(2594),i=n(6668),s=n(8049),a=n.n(s),c=n(5079),u=n.n(c),l=n(7839),d=n.n(l),p=n(9830),f=n(3);const m=a()("i18n-calypso"),h="number_format_decimals",g="number_format_thousands_sep",v="messages",w=[function(e){return e}],y={};function b(){S.throwErrors&&"undefined"!=typeof window&&window.console&&window.console.warn&&window.console.warn.apply(window.console,arguments)}function _(e){return Array.prototype.slice.call(e)}function E(e){const t=e[0];("string"!=typeof t||e.length>3||e.length>2&&"object"==typeof e[1]&&"object"==typeof e[2])&&b("Deprecated Invocation: `translate()` accepts ( string, [string], [object] ). These arguments passed:",_(e),". See https://github.com/Automattic/i18n-calypso#translate-method"),2===e.length&&"string"==typeof t&&"string"==typeof e[1]&&b("Invalid Invocation: `translate()` requires an options object for plural translations, but passed:",_(e));let n={};for(let o=0;o<e.length;o++)"object"==typeof e[o]&&(n=e[o]);if("string"==typeof t?n.original=t:"object"==typeof n.original&&(n.plural=n.original.plural,n.count=n.original.count,n.original=n.original.single),"string"==typeof e[1]&&(n.plural=e[1]),void 0===n.original)throw new Error("Translate called without a `string` value as first argument.");return n}function x(e,t){return e.dcnpgettext(v,t.context,t.original,t.plural,t.count)}function k(e,t){for(let n=w.length-1;n>=0;n--){const o=w[n](Object.assign({},t)),r=o.context?o.context+""+o.original:o.original;if(e.state.locale[r])return x(e.state.tannin,o)}return null}function S(){if(!(this instanceof S))return new S;this.defaultLocaleSlug="en",this.defaultPluralForms=e=>1===e?0:1,this.state={numberFormatSettings:{},tannin:void 0,locale:void 0,localeSlug:void 0,localeVariant:void 0,textDirection:void 0,translations:d()({max:100})},this.componentUpdateHooks=[],this.translateHooks=[],this.stateObserver=new o.EventEmitter,this.stateObserver.setMaxListeners(0),this.configure()}S.throwErrors=!1,S.prototype.on=function(){this.stateObserver.on(...arguments)},S.prototype.off=function(){this.stateObserver.off(...arguments)},S.prototype.emit=function(){this.stateObserver.emit(...arguments)},S.prototype.numberFormat=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n="number"==typeof t?t:t.decimals||0,o=t.decPoint||this.state.numberFormatSettings.decimal_point||".",r=t.thousandsSep||this.state.numberFormatSettings.thousands_sep||",";return(0,f.Z)(e,n,o,r)},S.prototype.configure=function(e){Object.assign(this,e||{}),this.setLocale()},S.prototype.setLocale=function(e){var t,n,o;if(e&&e[""]&&e[""]["key-hash"]){const t=e[""]["key-hash"],n=function(e,t){const n=!1===t?"":String(t);if(void 0!==y[n+e])return y[n+e];const o=u()().update(e).digest("hex");return y[n+e]=t?o.substr(0,t):o},o=function(e){return function(t){return t.context?(t.original=n(t.context+String.fromCharCode(4)+t.original,e),delete t.context):t.original=n(t.original,e),t}};if("sha1"===t.substr(0,4))if(4===t.length)w.push(o(!1));else{const e=t.substr(5).indexOf("-");if(e<0){const e=Number(t.substr(5));w.push(o(e))}else{const n=Number(t.substr(5,e)),r=Number(t.substr(6+e));for(let e=n;e<=r;e++)w.push(o(e))}}}if(e&&e[""].localeSlug)if(e[""].localeSlug===this.state.localeSlug){if(e===this.state.locale)return;Object.assign(this.state.locale,e)}else this.state.locale=Object.assign({},e);else this.state.locale={"":{localeSlug:this.defaultLocaleSlug,plural_forms:this.defaultPluralForms}};this.state.localeSlug=this.state.locale[""].localeSlug,this.state.localeVariant=this.state.locale[""].localeVariant,this.state.textDirection=(null===(t=this.state.locale["text directionltr"])||void 0===t?void 0:t[0])||(null===(n=this.state.locale[""])||void 0===n||null===(o=n.momentjs_locale)||void 0===o?void 0:o.textDirection),this.state.tannin=new p.Z({[v]:this.state.locale}),this.state.numberFormatSettings.decimal_point=x(this.state.tannin,E([h])),this.state.numberFormatSettings.thousands_sep=x(this.state.tannin,E([g])),this.state.numberFormatSettings.decimal_point===h&&(this.state.numberFormatSettings.decimal_point="."),this.state.numberFormatSettings.thousands_sep===g&&(this.state.numberFormatSettings.thousands_sep=","),this.stateObserver.emit("change")},S.prototype.getLocale=function(){return this.state.locale},S.prototype.getLocaleSlug=function(){return this.state.localeSlug},S.prototype.getLocaleVariant=function(){return this.state.localeVariant},S.prototype.isRtl=function(){return"rtl"===this.state.textDirection},S.prototype.addTranslations=function(e){for(const t in e)""!==t&&(this.state.tannin.data.messages[t]=e[t]);this.stateObserver.emit("change")},S.prototype.hasTranslation=function(){return!!k(this,E(arguments))},S.prototype.translate=function(){const e=E(arguments);let t=k(this,e);if(t||(t=x(this.state.tannin,e)),e.args){const o=Array.isArray(e.args)?e.args.slice(0):[e.args];o.unshift(t);try{t=(0,i.Z)(...o)}catch(n){if(!window||!window.console)return;const e=this.throwErrors?"error":"warn";"string"!=typeof n?window.console[e](n):window.console[e]("i18n sprintf error:",o)}}return e.components&&(t=(0,r.Z)({mixedString:t,components:e.components,throwErrors:this.throwErrors})),this.translateHooks.forEach((function(n){t=n(t,e)})),t},S.prototype.reRenderTranslations=function(){m("Re-rendering all translations due to external request"),this.stateObserver.emit("change")},S.prototype.registerComponentUpdateHook=function(e){this.componentUpdateHooks.push(e)},S.prototype.registerTranslateHook=function(e){this.translateHooks.push(e)},t.Z=S},1481:function(e,t,n){"use strict";n.d(t,{Yj:function(){return r}});var o=n(4724);o.Z.numberFormat.bind(o.Z),o.Z.translate.bind(o.Z),o.Z.configure.bind(o.Z),o.Z.setLocale.bind(o.Z),o.Z.getLocale.bind(o.Z);const r=o.Z.getLocaleSlug.bind(o.Z);o.Z.getLocaleVariant.bind(o.Z),o.Z.isRtl.bind(o.Z),o.Z.addTranslations.bind(o.Z),o.Z.reRenderTranslations.bind(o.Z),o.Z.registerComponentUpdateHook.bind(o.Z),o.Z.registerTranslateHook.bind(o.Z),o.Z.state,o.Z.stateObserver,o.Z.on.bind(o.Z),o.Z.off.bind(o.Z),o.Z.emit.bind(o.Z)},3:function(e,t,n){"use strict";function o(e,t,n,o){e=(e+"").replace(/[^0-9+\-Ee.]/g,"");const r=isFinite(+e)?+e:0,i=isFinite(+t)?Math.abs(t):0,s=void 0===o?",":o,a=void 0===n?".":n;let c="";return c=(i?
7
  /*
8
  * Exposes number format capability
9
  *
3
  Copyright (c) 2018 Jed Watson.
4
  Licensed under the MIT License (MIT), see
5
  http://jedwatson.github.io/classnames
6
+ */!function(){"use strict";var o={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var i=typeof n;if("string"===i||"number"===i)e.push(n);else if(Array.isArray(n)){if(n.length){var s=r.apply(null,n);s&&e.push(s)}}else if("object"===i)if(n.toString===Object.prototype.toString)for(var a in n)o.call(n,a)&&n[a]&&e.push(a);else e.push(n.toString())}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(n=function(){return r}.apply(t,[]))||(e.exports=n)}()},3421:function(e,t){"use strict";var n=decodeURIComponent,o=encodeURIComponent,r=/; */,i=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function s(e,t){try{return t(e)}catch(n){return e}}},5881:function(e){var t=1e3,n=60*t,o=60*n,r=24*o,i=7*r,s=365.25*r;function a(e,t,n,o){var r=t>=1.5*n;return Math.round(e/n)+" "+o+(r?"s":"")}e.exports=function(e,c){c=c||{};var u=typeof e;if("string"===u&&e.length>0)return function(e){if((e=String(e)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!a)return;var c=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*s;case"weeks":case"week":case"w":return c*i;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*o;case"minutes":case"minute":case"mins":case"min":case"m":return c*n;case"seconds":case"second":case"secs":case"sec":case"s":return c*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(e);if("number"===u&&isFinite(e))return c.long?function(e){var i=Math.abs(e);if(i>=r)return a(e,i,r,"day");if(i>=o)return a(e,i,o,"hour");if(i>=n)return a(e,i,n,"minute");if(i>=t)return a(e,i,t,"second");return e+" ms"}(e):function(e){var i=Math.abs(e);if(i>=r)return Math.round(e/r)+"d";if(i>=o)return Math.round(e/o)+"h";if(i>=n)return Math.round(e/n)+"m";if(i>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},2699:function(e){"use strict";var t,n="object"==typeof Reflect?Reflect:null,o=n&&"function"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var r=Number.isNaN||function(e){return e!=e};function i(){i.init.call(this)}e.exports=i,e.exports.once=function(e,t){return new Promise((function(n,o){function r(n){e.removeListener(t,i),o(n)}function i(){"function"==typeof e.removeListener&&e.removeListener("error",r),n([].slice.call(arguments))}h(e,t,i,{once:!0}),"error"!==t&&function(e,t,n){"function"==typeof e.on&&h(e,"error",t,n)}(e,r,{once:!0})}))},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var s=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function u(e,t,n,o){var r,i,s,u;if(a(n),void 0===(i=e._events)?(i=e._events=Object.create(null),e._eventsCount=0):(void 0!==i.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),i=e._events),s=i[t]),void 0===s)s=i[t]=n,++e._eventsCount;else if("function"==typeof s?s=i[t]=o?[n,s]:[s,n]:o?s.unshift(n):s.push(n),(r=c(e))>0&&s.length>r&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,u=l,console&&console.warn&&console.warn(u)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,n){var o={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},r=l.bind(o);return r.listener=n,o.wrapFn=r,r}function p(e,t,n){var o=e._events;if(void 0===o)return[];var r=o[t];return void 0===r?[]:"function"==typeof r?n?[r.listener||r]:[r]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(r):m(r,r.length)}function f(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function m(e,t){for(var n=new Array(t),o=0;o<t;++o)n[o]=e[o];return n}function h(e,t,n,o){if("function"==typeof e.on)o.once?e.once(t,n):e.on(t,n);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function r(i){o.once&&e.removeEventListener(t,r),n(i)}))}}Object.defineProperty(i,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");s=e}}),i.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},i.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},i.prototype.getMaxListeners=function(){return c(this)},i.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r="error"===e,i=this._events;if(void 0!==i)r=r&&void 0===i.error;else if(!r)return!1;if(r){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var c=i[e];if(void 0===c)return!1;if("function"==typeof c)o(c,this,t);else{var u=c.length,l=m(c,u);for(n=0;n<u;++n)o(l[n],this,t)}return!0},i.prototype.addListener=function(e,t){return u(this,e,t,!1)},i.prototype.on=i.prototype.addListener,i.prototype.prependListener=function(e,t){return u(this,e,t,!0)},i.prototype.once=function(e,t){return a(t),this.on(e,d(this,e,t)),this},i.prototype.prependOnceListener=function(e,t){return a(t),this.prependListener(e,d(this,e,t)),this},i.prototype.removeListener=function(e,t){var n,o,r,i,s;if(a(t),void 0===(o=this._events))return this;if(void 0===(n=o[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(r=-1,i=n.length-1;i>=0;i--)if(n[i]===t||n[i].listener===t){s=n[i].listener,r=i;break}if(r<0)return this;0===r?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,r),1===n.length&&(o[e]=n[0]),void 0!==o.removeListener&&this.emit("removeListener",e,s||t)}return this},i.prototype.off=i.prototype.removeListener,i.prototype.removeAllListeners=function(e){var t,n,o;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var r,i=Object.keys(n);for(o=0;o<i.length;++o)"removeListener"!==(r=i[o])&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(o=t.length-1;o>=0;o--)this.removeListener(e,t[o]);return this},i.prototype.listeners=function(e){return p(this,e,!0)},i.prototype.rawListeners=function(e){return p(this,e,!1)},i.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},i.prototype.listenerCount=f,i.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},4495:function(e,t,n){"use strict";var o=n(212),r=n(9561);function i(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=i,i.prototype.update=function(e,t){if(e=o.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=o.join32(e,0,e.length-n,this.endian);for(var r=0;r<e.length;r+=this._delta32)this._update(e,r,r+this._delta32)}return this},i.prototype.digest=function(e){return this.update(this._pad()),r(null===this.pending),this._digest(e)},i.prototype._pad=function(){var e=this.pendingTotal,t=this._delta8,n=t-(e+this.padLength)%t,o=new Array(n+this.padLength);o[0]=128;for(var r=1;r<n;r++)o[r]=0;if(e<<=3,"big"===this.endian){for(var i=8;i<this.padLength;i++)o[r++]=0;o[r++]=0,o[r++]=0,o[r++]=0,o[r++]=0,o[r++]=e>>>24&255,o[r++]=e>>>16&255,o[r++]=e>>>8&255,o[r++]=255&e}else for(o[r++]=255&e,o[r++]=e>>>8&255,o[r++]=e>>>16&255,o[r++]=e>>>24&255,o[r++]=0,o[r++]=0,o[r++]=0,o[r++]=0,i=8;i<this.padLength;i++)o[r++]=0;return o}},5079:function(e,t,n){"use strict";var o=n(212),r=n(4495),i=n(713),s=o.rotl32,a=o.sum32,c=o.sum32_5,u=i.ft_1,l=r.BlockHash,d=[1518500249,1859775393,2400959708,3395469782];function p(){if(!(this instanceof p))return new p;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}o.inherits(p,l),e.exports=p,p.blockSize=512,p.outSize=160,p.hmacStrength=80,p.padLength=64,p.prototype._update=function(e,t){for(var n=this.W,o=0;o<16;o++)n[o]=e[t+o];for(;o<n.length;o++)n[o]=s(n[o-3]^n[o-8]^n[o-14]^n[o-16],1);var r=this.h[0],i=this.h[1],l=this.h[2],p=this.h[3],f=this.h[4];for(o=0;o<n.length;o++){var m=~~(o/20),h=c(s(r,5),u(m,i,l,p),f,n[o],d[m]);f=p,p=l,l=s(i,30),i=r,r=h}this.h[0]=a(this.h[0],r),this.h[1]=a(this.h[1],i),this.h[2]=a(this.h[2],l),this.h[3]=a(this.h[3],p),this.h[4]=a(this.h[4],f)},p.prototype._digest=function(e){return"hex"===e?o.toHex32(this.h,"big"):o.split32(this.h,"big")}},8032:function(e,t,n){"use strict";var o=n(212),r=n(4495),i=n(713),s=n(9561),a=o.sum32,c=o.sum32_4,u=o.sum32_5,l=i.ch32,d=i.maj32,p=i.s0_256,f=i.s1_256,m=i.g0_256,h=i.g1_256,g=r.BlockHash,v=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function w(){if(!(this instanceof w))return new w;g.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=v,this.W=new Array(64)}o.inherits(w,g),e.exports=w,w.blockSize=512,w.outSize=256,w.hmacStrength=192,w.padLength=64,w.prototype._update=function(e,t){for(var n=this.W,o=0;o<16;o++)n[o]=e[t+o];for(;o<n.length;o++)n[o]=c(h(n[o-2]),n[o-7],m(n[o-15]),n[o-16]);var r=this.h[0],i=this.h[1],g=this.h[2],v=this.h[3],w=this.h[4],y=this.h[5],b=this.h[6],_=this.h[7];for(s(this.k.length===n.length),o=0;o<n.length;o++){var E=u(_,f(w),l(w,y,b),this.k[o],n[o]),x=a(p(r),d(r,i,g));_=b,b=y,y=w,w=a(v,E),v=g,g=i,i=r,r=a(E,x)}this.h[0]=a(this.h[0],r),this.h[1]=a(this.h[1],i),this.h[2]=a(this.h[2],g),this.h[3]=a(this.h[3],v),this.h[4]=a(this.h[4],w),this.h[5]=a(this.h[5],y),this.h[6]=a(this.h[6],b),this.h[7]=a(this.h[7],_)},w.prototype._digest=function(e){return"hex"===e?o.toHex32(this.h,"big"):o.split32(this.h,"big")}},713:function(e,t,n){"use strict";var o=n(212).rotr32;function r(e,t,n){return e&t^~e&n}function i(e,t,n){return e&t^e&n^t&n}function s(e,t,n){return e^t^n}t.ft_1=function(e,t,n,o){return 0===e?r(t,n,o):1===e||3===e?s(t,n,o):2===e?i(t,n,o):void 0},t.ch32=r,t.maj32=i,t.p32=s,t.s0_256=function(e){return o(e,2)^o(e,13)^o(e,22)},t.s1_256=function(e){return o(e,6)^o(e,11)^o(e,25)},t.g0_256=function(e){return o(e,7)^o(e,18)^e>>>3},t.g1_256=function(e){return o(e,17)^o(e,19)^e>>>10}},212:function(e,t,n){"use strict";var o=n(9561),r=n(1285);function i(e,t){return 55296==(64512&e.charCodeAt(t))&&(!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1)))}function s(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function a(e){return 1===e.length?"0"+e:e}function c(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=r,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var n=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),r=0;r<e.length;r+=2)n.push(parseInt(e[r]+e[r+1],16))}else for(var o=0,r=0;r<e.length;r++){var s=e.charCodeAt(r);s<128?n[o++]=s:s<2048?(n[o++]=s>>6|192,n[o++]=63&s|128):i(e,r)?(s=65536+((1023&s)<<10)+(1023&e.charCodeAt(++r)),n[o++]=s>>18|240,n[o++]=s>>12&63|128,n[o++]=s>>6&63|128,n[o++]=63&s|128):(n[o++]=s>>12|224,n[o++]=s>>6&63|128,n[o++]=63&s|128)}else for(r=0;r<e.length;r++)n[r]=0|e[r];return n},t.toHex=function(e){for(var t="",n=0;n<e.length;n++)t+=a(e[n].toString(16));return t},t.htonl=s,t.toHex32=function(e,t){for(var n="",o=0;o<e.length;o++){var r=e[o];"little"===t&&(r=s(r)),n+=c(r.toString(16))}return n},t.zero2=a,t.zero8=c,t.join32=function(e,t,n,r){var i=n-t;o(i%4==0);for(var s=new Array(i/4),a=0,c=t;a<s.length;a++,c+=4){var u;u="big"===r?e[c]<<24|e[c+1]<<16|e[c+2]<<8|e[c+3]:e[c+3]<<24|e[c+2]<<16|e[c+1]<<8|e[c],s[a]=u>>>0}return s},t.split32=function(e,t){for(var n=new Array(4*e.length),o=0,r=0;o<e.length;o++,r+=4){var i=e[o];"big"===t?(n[r]=i>>>24,n[r+1]=i>>>16&255,n[r+2]=i>>>8&255,n[r+3]=255&i):(n[r+3]=i>>>24,n[r+2]=i>>>16&255,n[r+1]=i>>>8&255,n[r]=255&i)}return n},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<<t|e>>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,n){return e+t+n>>>0},t.sum32_4=function(e,t,n,o){return e+t+n+o>>>0},t.sum32_5=function(e,t,n,o,r){return e+t+n+o+r>>>0},t.sum64=function(e,t,n,o){var r=e[t],i=o+e[t+1]>>>0,s=(i<o?1:0)+n+r;e[t]=s>>>0,e[t+1]=i},t.sum64_hi=function(e,t,n,o){return(t+o>>>0<t?1:0)+e+n>>>0},t.sum64_lo=function(e,t,n,o){return t+o>>>0},t.sum64_4_hi=function(e,t,n,o,r,i,s,a){var c=0,u=t;return c+=(u=u+o>>>0)<t?1:0,c+=(u=u+i>>>0)<i?1:0,e+n+r+s+(c+=(u=u+a>>>0)<a?1:0)>>>0},t.sum64_4_lo=function(e,t,n,o,r,i,s,a){return t+o+i+a>>>0},t.sum64_5_hi=function(e,t,n,o,r,i,s,a,c,u){var l=0,d=t;return l+=(d=d+o>>>0)<t?1:0,l+=(d=d+i>>>0)<i?1:0,l+=(d=d+a>>>0)<a?1:0,e+n+r+s+c+(l+=(d=d+u>>>0)<u?1:0)>>>0},t.sum64_5_lo=function(e,t,n,o,r,i,s,a,c,u){return t+o+i+a+u>>>0},t.rotr64_hi=function(e,t,n){return(t<<32-n|e>>>n)>>>0},t.rotr64_lo=function(e,t,n){return(e<<32-n|t>>>n)>>>0},t.shr64_hi=function(e,t,n){return e>>>n},t.shr64_lo=function(e,t,n){return(e<<32-n|t>>>n)>>>0}},1285:function(e){"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},7839:function(e,t,n){var o=n(2699),r=n(1285);function i(e){if(!(this instanceof i))return new i(e);"number"==typeof e&&(e={max:e}),e||(e={}),o.EventEmitter.call(this),this.cache={},this.head=this.tail=null,this.length=0,this.max=e.max||1e3,this.maxAge=e.maxAge||0}e.exports=i,r(i,o.EventEmitter),Object.defineProperty(i.prototype,"keys",{get:function(){return Object.keys(this.cache)}}),i.prototype.clear=function(){this.cache={},this.head=this.tail=null,this.length=0},i.prototype.remove=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];return delete this.cache[e],this._unlink(e,t.prev,t.next),t.value}},i.prototype._unlink=function(e,t,n){this.length--,0===this.length?this.head=this.tail=null:this.head===e?(this.head=t,this.cache[this.head].next=null):this.tail===e?(this.tail=n,this.cache[this.tail].prev=null):(this.cache[t].next=n,this.cache[n].prev=t)},i.prototype.peek=function(e){if(this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return t.value}},i.prototype.set=function(e,t){var n;if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){if((n=this.cache[e]).value=t,this.maxAge&&(n.modified=Date.now()),e===this.head)return t;this._unlink(e,n.prev,n.next)}else n={value:t,modified:0,next:null,prev:null},this.maxAge&&(n.modified=Date.now()),this.cache[e]=n,this.length===this.max&&this.evict();return this.length++,n.next=null,n.prev=this.head,this.head&&(this.cache[this.head].next=e),this.head=e,this.tail||(this.tail=e),t},i.prototype._checkAge=function(e,t){return!(this.maxAge&&Date.now()-t.modified>this.maxAge)||(this.remove(e),this.emit("evict",{key:e,value:t.value}),!1)},i.prototype.get=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return this.head!==e&&(e===this.tail?(this.tail=t.next,this.cache[this.tail].prev=null):this.cache[t.prev].next=t.next,this.cache[t.next].prev=t.prev,this.cache[this.head].next=e,t.prev=this.head,t.next=null,this.head=e),t.value}},i.prototype.evict=function(){if(this.tail){var e=this.tail,t=this.remove(this.tail);this.emit("evict",{key:e,value:t})}}},3186:function(){},8005:function(){},5773:function(){},5670:function(){},4373:function(){},7777:function(){},7710:function(){},2014:function(){},6372:function(){},4422:function(){},9561:function(e){function t(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=t,t.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)}},8650:function(e){var t,n=window.ProgressEvent,o=!!n;try{t=new n("loaded"),o="loaded"===t.type,t=null}catch(r){o=!1}e.exports=o?n:"function"==typeof document.createEvent?function(e,t){var n=document.createEvent("Event");return n.initEvent(e,!1,!1),t?(n.lengthComputable=Boolean(t.lengthComputable),n.loaded=Number(t.loaded)||0,n.total=Number(t.total)||0):(n.lengthComputable=!1,n.loaded=n.total=0),n}:function(e,t){var n=document.createEventObject();return n.type=e,t?(n.lengthComputable=Boolean(t.lengthComputable),n.loaded=Number(t.loaded)||0,n.total=Number(t.total)||0):(n.lengthComputable=!1,n.loaded=n.total=0),n}},8435:function(e){var t="undefined"!=typeof Element,n="function"==typeof Map,o="function"==typeof Set,r="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function i(e,s){if(e===s)return!0;if(e&&s&&"object"==typeof e&&"object"==typeof s){if(e.constructor!==s.constructor)return!1;var a,c,u,l;if(Array.isArray(e)){if((a=e.length)!=s.length)return!1;for(c=a;0!=c--;)if(!i(e[c],s[c]))return!1;return!0}if(n&&e instanceof Map&&s instanceof Map){if(e.size!==s.size)return!1;for(l=e.entries();!(c=l.next()).done;)if(!s.has(c.value[0]))return!1;for(l=e.entries();!(c=l.next()).done;)if(!i(c.value[1],s.get(c.value[0])))return!1;return!0}if(o&&e instanceof Set&&s instanceof Set){if(e.size!==s.size)return!1;for(l=e.entries();!(c=l.next()).done;)if(!s.has(c.value[0]))return!1;return!0}if(r&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(s)){if((a=e.length)!=s.length)return!1;for(c=a;0!=c--;)if(e[c]!==s[c])return!1;return!0}if(e.constructor===RegExp)return e.source===s.source&&e.flags===s.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===s.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===s.toString();if((a=(u=Object.keys(e)).length)!==Object.keys(s).length)return!1;for(c=a;0!=c--;)if(!Object.prototype.hasOwnProperty.call(s,u[c]))return!1;if(t&&e instanceof Element)return!1;for(c=a;0!=c--;)if(("_owner"!==u[c]&&"__v"!==u[c]&&"__o"!==u[c]||!e.$$typeof)&&!i(e[u[c]],s[u[c]]))return!1;return!0}return e!=e&&s!=s}e.exports=function(e,t){try{return i(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},6194:function(e,t,n){"use strict";n.d(t,{D:function(){return u}});var o=n(9196),r=n(7295),i=n(8435),s=n.n(i),a=n(855),c=[],u=function(e,t,n){void 0===n&&(n={});var i=o.useRef(null),u={onFirstUpdate:n.onFirstUpdate,placement:n.placement||"bottom",strategy:n.strategy||"absolute",modifiers:n.modifiers||c},l=o.useState({styles:{popper:{position:u.strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),d=l[0],p=l[1],f=o.useMemo((function(){return{name:"updateState",enabled:!0,phase:"write",fn:function(e){var t=e.state,n=Object.keys(t.elements);p({styles:(0,a.sq)(n.map((function(e){return[e,t.styles[e]||{}]}))),attributes:(0,a.sq)(n.map((function(e){return[e,t.attributes[e]]})))})},requires:["computeStyles"]}}),[]),m=o.useMemo((function(){var e={onFirstUpdate:u.onFirstUpdate,placement:u.placement,strategy:u.strategy,modifiers:[].concat(u.modifiers,[f,{name:"applyStyles",enabled:!1}])};return s()(i.current,e)?i.current||e:(i.current=e,e)}),[u.onFirstUpdate,u.placement,u.strategy,u.modifiers,f]),h=o.useRef();return(0,a.LI)((function(){h.current&&h.current.setOptions(m)}),[m]),(0,a.LI)((function(){if(null!=e&&null!=t){var o=(n.createPopper||r.fi)(e,t,m);return h.current=o,function(){o.destroy(),h.current=null}}}),[e,t,n.createPopper]),{state:h.current?h.current.state:null,styles:d.styles,attributes:d.attributes,update:h.current?h.current.update:null,forceUpdate:h.current?h.current.forceUpdate:null}}},855:function(e,t,n){"use strict";n.d(t,{sq:function(){return r},LI:function(){return i}});var o=n(9196),r=function(e){return e.reduce((function(e,t){var n=t[0],o=t[1];return e[n]=o,e}),{})},i="undefined"!=typeof window&&window.document&&window.document.createElement?o.useLayoutEffect:o.useEffect},9830:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var o=n(1184),r={contextDelimiter:"",onMissingKey:null};function i(e,t){var n;for(n in this.data=e,this.pluralForms={},this.options={},r)this.options[n]=void 0!==t&&n in t?t[n]:r[n]}i.prototype.getPluralForm=function(e,t){var n,r,i,s=this.pluralForms[e];return s||("function"!=typeof(i=(n=this.data[e][""])["Plural-Forms"]||n["plural-forms"]||n.plural_forms)&&(r=function(e){var t,n,o;for(t=e.split(";"),n=0;n<t.length;n++)if(0===(o=t[n].trim()).indexOf("plural="))return o.substr(7)}(n["Plural-Forms"]||n["plural-forms"]||n.plural_forms),i=(0,o.Z)(r)),s=this.pluralForms[e]=i),s(t)},i.prototype.dcnpgettext=function(e,t,n,o,r){var i,s,a;return i=void 0===r?0:this.getPluralForm(e,r),s=n,t&&(s=t+this.options.contextDelimiter+n),(a=this.data[e][s])&&a[i]?a[i]:(this.options.onMissingKey&&this.options.onMissingKey(n,e),0===i?n:o)}},3133:function(e,t,n){"use strict";var o=n(6989),r=n.n(o),i=n(9307);t.Z=()=>{const[e,t]=(0,i.useState)("");return(0,i.useEffect)((()=>{r()({path:"/wpcom/v2/block-editor/has-seen-seller-celebration-modal"}).then((e=>t(e.has_seen_seller_celebration_modal))).catch((()=>t(!1)))})),{hasSeenSellerCelebrationModal:e,updateHasSeenSellerCelebrationModal:function(e){r()({method:"PUT",path:"/wpcom/v2/block-editor/has-seen-seller-celebration-modal",data:{has_seen_seller_celebration_modal:e}}).finally((()=>{t(e)}))}}}},5262:function(e,t,n){"use strict";var o=n(6989),r=n.n(o),i=n(9307);t.Z=()=>{const[e,t]=(0,i.useState)(""),n=(0,i.useCallback)((()=>{r()({path:"/wpcom/v2/site-intent"}).then((e=>t(e.site_intent))).catch((()=>t("")))}),[]);return(0,i.useEffect)((()=>{n()}),[n]),e}},7542:function(e,t,n){"use strict";var o=n(9307),r=n(9196),i=n(8552);t.Z=e=>{const[t,n]=(0,o.useState)({}),s=(0,r.useCallback)((async()=>{const t=await(0,i.ZP)({path:`/sites/${e}?http_envelope=1`,apiVersion:"1.1"});null!=t&&t.plan&&n(t.plan)}),[e]);return(0,o.useEffect)((()=>{s()}),[s]),t}},7869:function(e,t,n){"use strict";var o=n(9307),r=(n(3945),n(849)),i=n(4655),s=n(5609),a=n(9818),c=n(8817),u=n(6483),l=n(3867),d=n(9935),p=n(6011),f=n(1258),m=n(1970),h=n(374),g=n(7203);function v(){var e;const[t]=(0,o.useState)((0,u.getQueryArg)(window.location.href,"showDraftPostModal")),{show:n,isLoaded:c,variant:d,isManuallyOpened:p,isNewPageLayoutModalOpen:f}=(0,a.useSelect)((e=>{const t=e("automattic/wpcom-welcome-guide"),n=e("automattic/starter-page-layouts");return{show:t.isWelcomeGuideShown(),isLoaded:t.isWelcomeGuideStatusLoaded(),variant:t.getWelcomeGuideVariant(),isManuallyOpened:t.isWelcomeGuideManuallyOpened(),isNewPageLayoutModalOpen:null==n?void 0:n.isOpen()}}),[]),v=null===(e=(0,a.useDispatch)("automattic/starter-page-layouts"))||void 0===e?void 0:e.setOpenState,{fetchWelcomeGuideStatus:w}=(0,a.useDispatch)("automattic/wpcom-welcome-guide");return(0,o.useEffect)((()=>{c||w()}),[w,c]),!n||f?null:d===m.yn&&!p&&v?(v("OPEN_FOR_BLANK_CANVAS"),null):d===m.Sz?(0,o.createElement)(r.Iw,{localeSlug:window.wpcomBlockEditorNuxLocale??i.OP},t?(0,o.createElement)(l.Z,null):(0,o.createElement)(g.Z,null)):"modal"===d&&s.Guide&&s.GuidePage?(0,o.createElement)(h.Z,null):null}(0,c.registerPlugin)("wpcom-block-editor-nux",{render:()=>(0,o.createElement)(o.Fragment,null,(0,o.createElement)(v,null),(0,o.createElement)(d.Z,null),(0,o.createElement)(f.Z,null),(0,o.createElement)(p.Z,null))})},1568:function(e,t,n){"use strict";var o=n(9818);n(462);const r=(0,o.subscribe)((()=>{var e,t;(0,o.dispatch)("core/nux").disableTips(),null!==(e=(0,o.select)("core/edit-post"))&&void 0!==e&&e.isFeatureActive("welcomeGuide")&&((0,o.dispatch)("core/edit-post").toggleFeature("welcomeGuide"),r()),null!==(t=(0,o.select)("core/edit-site"))&&void 0!==t&&t.isFeatureActive("welcomeGuide")&&((0,o.dispatch)("core/edit-site").toggleFeature("welcomeGuide"),r())}));(0,o.subscribe)((()=>{var e,t;(0,o.select)("core/nux").areTipsEnabled()&&((0,o.dispatch)("core/nux").disableTips(),(0,o.dispatch)("automattic/wpcom-welcome-guide").setShowWelcomeGuide(!0)),null!==(e=(0,o.select)("core/edit-post"))&&void 0!==e&&e.isFeatureActive("welcomeGuide")&&((0,o.dispatch)("core/edit-post").toggleFeature("welcomeGuide"),(0,o.select)("automattic/wpcom-welcome-guide").isWelcomeGuideStatusLoaded()&&(0,o.dispatch)("automattic/wpcom-welcome-guide").setShowWelcomeGuide(!0,{openedManually:!0})),null!==(t=(0,o.select)("core/edit-site"))&&void 0!==t&&t.isFeatureActive("welcomeGuide")&&((0,o.dispatch)("core/edit-site").toggleFeature("welcomeGuide"),(0,o.select)("automattic/wpcom-welcome-guide").isWelcomeGuideStatusLoaded()&&(0,o.dispatch)("automattic/wpcom-welcome-guide").setShowWelcomeGuide(!0,{openedManually:!0}))}))},3867:function(e,t,n){"use strict";var o=n(9307),r=n(6115),i=n(5609),s=n(9818),a=n(2694),c=n(5736),u=n(3634),l=n(3790);n(3186);const __=c.__,d="a8c.wpcom-block-editor.closeEditor";t.Z=()=>{const e=window._currentSiteId,t=(0,s.useSelect)((t=>t("automattic/site").getPrimarySiteDomain(e))),n=`/home/${(null==t?void 0:t.domain)||window.location.hostname}`,[c,p]=(0,o.useState)(!0),f=()=>p(!1);return(0,o.createElement)(u.Z,{isOpen:c,className:"wpcom-block-editor-draft-post-modal",title:__("Write your first post","full-site-editing"),description:__("It’s time to flex those writing muscles and start drafting your first post!","full-site-editing"),imageSrc:l,actionButtons:(0,o.createElement)(o.Fragment,null,(0,o.createElement)(i.Button,{isPrimary:!0,onClick:f},__("Start writing","full-site-editing")),(0,o.createElement)(i.Button,{isSecondary:!0,onClick:()=>{(0,a.hasAction)(d)?(0,a.doAction)(d,n):window.location.href=`https://wordpress.com${n}`}},__("I'm not ready","full-site-editing"))),onRequestClose:f,onOpen:()=>(0,r.jN)("calypso_editor_wpcom_draft_post_modal_show")})}},3634:function(e,t,n){"use strict";var o=n(9307),r=n(5609),i=n(2779),s=n.n(i);n(9196),n(8005);t.Z=e=>{let{isOpen:t,className:n,title:i,description:a,imageSrc:c,actionButtons:u,onRequestClose:l,onOpen:d}=e;const p=(0,o.useRef)(null);return(0,o.useEffect)((()=>{!p.current&&t&&(null==d||d()),p.current=t}),[p,t,d]),t?(0,o.createElement)(r.Modal,{className:s()("wpcom-block-editor-nux-modal",n),open:t,title:"",onRequestClose:l},(0,o.createElement)("div",{className:"wpcom-block-editor-nux-modal__image-container"},(0,o.createElement)("img",{src:c,alt:i})),(0,o.createElement)("h1",{className:"wpcom-block-editor-nux-modal__title"},i),(0,o.createElement)("p",{className:"wpcom-block-editor-nux-modal__description"},a),(0,o.createElement)("div",{className:"wpcom-block-editor-nux-modal__buttons"},u)):null}},9935:function(e,t,n){"use strict";var o=n(9307),r=n(6115),i=n(5609),s=n(9818),a=n(5736),c=(n(9196),n(3634)),u=n(5275);n(5773);const __=a.__;t.Z=()=>{const{link:e}=(0,s.useSelect)((e=>e("core/editor").getCurrentPost())),t=(0,s.useSelect)((e=>e("core/editor").getCurrentPostType())),n=(0,s.useSelect)((e=>e("core/editor").isCurrentPostPublished())),a=(0,o.useRef)(n),l=(0,s.useSelect)((e=>e("automattic/wpcom-welcome-guide").getShouldShowFirstPostPublishedModal())),[d,p]=(0,o.useState)(!1),{fetchShouldShowFirstPostPublishedModal:f,setShouldShowFirstPostPublishedModal:m}=(0,s.useDispatch)("automattic/wpcom-welcome-guide");(0,o.useEffect)((()=>{f()}),[f]),(0,o.useEffect)((()=>{l&&!a.current&&n&&"post"===t&&(a.current=n,m(!1),window.setTimeout((()=>{p(!0)})))}),[t,l,n,m]);return(0,o.createElement)(c.Z,{isOpen:d,className:"wpcom-block-editor-post-published-modal",title:__("Your first post is published!","full-site-editing"),description:__("Congratulations! You did it. View your post to see how it will look on your site.","full-site-editing"),imageSrc:u,actionButtons:(0,o.createElement)(i.Button,{isPrimary:!0,onClick:t=>{t.preventDefault(),window.top.location.href=e}},__("View Post","full-site-editing")),onRequestClose:()=>p(!1),onOpen:()=>(0,r.jN)("calypso_editor_wpcom_first_post_published_modal_show")})}},3945:function(e,t,n){"object"==typeof window&&window.wpcomBlockEditorNuxAssetsUrl&&(n.p=window.wpcomBlockEditorNuxAssetsUrl)},6011:function(e,t,n){"use strict";var o=n(9818),r=n(5736),i=n(3961),s=n(9196);n(5670);const __=r.__;t.Z=function(){const[e,t]=(0,s.useState)(!1),{createNotice:n}=(0,o.useDispatch)(i.store);return(0,s.useEffect)((()=>{const o=/[&?]notice=([\w_-]+)/.exec(document.location.search);"purchase-success"===(o&&o[1])&&!1===e&&(t(!0),n("info",__("Welcome to the Pro plan! Premium blocks are now available to use.","full-site-editing"),{isDismissible:!0,type:"snackbar"}))})),null}},1258:function(e,t,n){"use strict";var o=n(9307),r=n(6115),i=n(5609),s=n(9818),a=n(5736),c=n(3133),u=n(5262),l=n(3634),d=n(4242);n(4373);const __=a.__,p=()=>{const{addEntities:e}=(0,s.useDispatch)("core");(0,o.useEffect)((()=>{e([{baseURL:"/wp/v2/statuses",key:"slug",kind:"root",name:"status",plural:"statuses"}])}),[]);const[t,n]=(0,o.useState)(!1),[a,p]=(0,o.useState)(!1),f=(0,s.useSelect)((e=>!!e("core/edit-site"))),m=(0,o.useRef)(!1),{isEditorSaving:h,hasPaymentsBlock:g,linkUrl:v}=(0,s.useSelect)((e=>{if(f){var t,n,o;const r=e("core").isSavingEntityRecord("root","site")&&!e("core").isAutosavingEntityRecord("root","site"),i=e("core/edit-site").getPage(),s=parseInt(null==i||null===(t=i.context)||void 0===t?void 0:t.postId),a=e("core").isSavingEntityRecord("postType","page",s)&&!e("core").isAutosavingEntityRecord("postType","page",s),c=e("core").getEntityRecord("postType","page",s);return{isEditorSaving:r||a,hasPaymentsBlock:(null==c||null===(n=c.content)||void 0===n||null===(o=n.raw)||void 0===o?void 0:o.includes("\x3c!-- wp:jetpack/recurring-payments --\x3e"))??!1,linkUrl:null==c?void 0:c.link}}const r=e("core/editor").getCurrentPost();return{isEditorSaving:e("core").isSavingEntityRecord("postType",null==r?void 0:r.type,null==r?void 0:r.id)&&!e("core").isAutosavingEntityRecord("postType",null==r?void 0:r.type,null==r?void 0:r.id),hasPaymentsBlock:e("core/block-editor").getGlobalBlockCount("jetpack/recurring-payments")>0,linkUrl:r.link}})),w=(0,u.Z)(),{hasSeenSellerCelebrationModal:y,updateHasSeenSellerCelebrationModal:b}=(0,c.Z)();(0,o.useEffect)((()=>{h||!m.current||a||"sell"!==w||!g||y||(n(!0),p(!0),b(!0)),m.current=h}),[h,a,w,g,y,b]);const _=()=>n(!1);return(0,o.createElement)(l.Z,{isOpen:t,className:"wpcom-site-editor-seller-celebration-modal",title:__("You've added your first product!","full-site-editing"),description:__("Preview your product on your site before launching and sharing with others.","full-site-editing"),imageSrc:d,actionButtons:(0,o.createElement)(o.Fragment,null,(0,o.createElement)(i.Button,{onClick:_},__("Continue editing","full-site-editing")),(0,o.createElement)(i.Button,{isPrimary:!0,href:v,target:"__blank",rel:"noopener noreferrer"},__("View your product","full-site-editing"))),onRequestClose:_,onOpen:()=>(0,r.jN)("calypso_editor_wpcom_seller_celebration_modal_show")})};t.Z=()=>"sell"===(0,u.Z)()?(0,o.createElement)(p,null):null},1970:function(e,t,n){"use strict";n.d(t,{Sz:function(){return a},yn:function(){return c},z2:function(){return p}});var o=n(6989),r=n.n(o),i=n(9818),s=n(3418);n(3288);const a="tour",c="blank-canvas-tour",u=(0,i.combineReducers)({welcomeGuideManuallyOpened:function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"WPCOM_WELCOME_GUIDE_SHOW_SET":return void 0!==t.openedManually?t.openedManually:e;case"WPCOM_WELCOME_GUIDE_RESET_STORE":return!1;default:return e}},showWelcomeGuide:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS":return t.response.show_welcome_guide;case"WPCOM_WELCOME_GUIDE_SHOW_SET":return t.show;case"WPCOM_WELCOME_GUIDE_RESET_STORE":return;default:return e}},tourRating:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"WPCOM_WELCOME_GUIDE_TOUR_RATING_SET":return t.tourRating;case"WPCOM_WELCOME_GUIDE_RESET_STORE":return;default:return e}},welcomeGuideVariant:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS":return t.response.variant;case"WPCOM_HAS_USED_PATTERNS_MODAL":return e===c?a:e;case"WPCOM_WELCOME_GUIDE_RESET_STORE":return a;default:return e}},shouldShowFirstPostPublishedModal:function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL":return t.value;case"WPCOM_WELCOME_GUIDE_RESET_STORE":return!1;default:return e}}}),l={*fetchWelcomeGuideStatus(){return{type:"WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS",response:yield(0,s.apiFetch)({path:"/wpcom/v2/block-editor/nux"})}},*fetchShouldShowFirstPostPublishedModal(){return{type:"WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL",value:(yield(0,s.apiFetch)({path:"/wpcom/v2/block-editor/should-show-first-post-published-modal"})).should_show_first_post_published_modal}},setShowWelcomeGuide:function(e){let{openedManually:t,onlyLocal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n||r()({path:"/wpcom/v2/block-editor/nux",method:"POST",data:{show_welcome_guide:e}}),{type:"WPCOM_WELCOME_GUIDE_SHOW_SET",show:e,openedManually:t}},setTourRating:e=>({type:"WPCOM_WELCOME_GUIDE_TOUR_RATING_SET",tourRating:e}),setUsedPageOrPatternsModal:()=>({type:"WPCOM_HAS_USED_PATTERNS_MODAL"}),setShouldShowFirstPostPublishedModal:e=>({type:"WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL",value:e}),resetStore:()=>({type:"WPCOM_WELCOME_GUIDE_RESET_STORE"})},d={isWelcomeGuideManuallyOpened:e=>e.welcomeGuideManuallyOpened,isWelcomeGuideShown:e=>!!e.showWelcomeGuide,isWelcomeGuideStatusLoaded:e=>void 0!==e.showWelcomeGuide,getTourRating:e=>e.tourRating,getWelcomeGuideVariant:e=>"modal"===e.welcomeGuideVariant?a:e.welcomeGuideVariant,getShouldShowFirstPostPublishedModal:e=>e.shouldShowFirstPostPublishedModal};function p(){return(0,i.registerStore)("automattic/wpcom-welcome-guide",{reducer:u,actions:l,selectors:d,controls:s.controls,persist:!0})}},374:function(e,t,n){"use strict";var o=n(7896),r=n(9307),i=n(6115),s=n(5609),a=n(9818),c=n(5736),u=n(9711),l=n(6595),d=n(5486),p=n(7821);n(7777);const __=c.__;function f(e){let{pageNumber:t,isLastPage:n,alignBottom:o=!1,heading:a,description:c,imgSrc:u}=e;return(0,r.useEffect)((()=>{var e;(0,i.jN)("calypso_editor_wpcom_nux_slide_view",{slide_number:t,is_last_slide:n,is_gutenboarding:null===(e=window.calypsoifyGutenberg)||void 0===e?void 0:e.isGutenboarding})}),[]),(0,r.createElement)(s.GuidePage,{className:"wpcom-block-editor-nux__page"},(0,r.createElement)("div",{className:"wpcom-block-editor-nux__text"},(0,r.createElement)("h1",{className:"wpcom-block-editor-nux__heading"},a),(0,r.createElement)("div",{className:"wpcom-block-editor-nux__description"},c)),(0,r.createElement)("div",{className:"wpcom-block-editor-nux__visual"},(0,r.createElement)("img",{key:u,src:u,alt:"","aria-hidden":"true",className:"wpcom-block-editor-nux__image"+(o?" align-bottom":"")})))}t.Z=function(){const{show:e,isNewPageLayoutModalOpen:t,isManuallyOpened:n}=(0,a.useSelect)((e=>({show:e("automattic/wpcom-welcome-guide").isWelcomeGuideShown(),isNewPageLayoutModalOpen:e("automattic/starter-page-layouts")&&e("automattic/starter-page-layouts").isOpen(),isManuallyOpened:e("automattic/wpcom-welcome-guide").isWelcomeGuideManuallyOpened()}))),{setShowWelcomeGuide:c}=(0,a.useDispatch)("automattic/wpcom-welcome-guide");if((0,r.useEffect)((()=>{var o;e&&!t&&(0,i.jN)("calypso_editor_wpcom_nux_open",{is_gutenboarding:null===(o=window.calypsoifyGutenberg)||void 0===o?void 0:o.isGutenboarding,is_manually_opened:n})}),[n,t,e]),!e||t)return null;const m=[{heading:__("Welcome to your website","full-site-editing"),description:__("Edit your homepage, add the pages you need, and change your site’s look and feel.","full-site-editing"),imgSrc:l,alignBottom:!0},{heading:__("Add or edit your content","full-site-editing"),description:__("Edit the placeholder content we’ve started you off with, or click the plus sign to add more content.","full-site-editing"),imgSrc:u},{heading:__("Preview your site as you go","full-site-editing"),description:__("As you edit your site content, click “Preview” to see your site the way your visitors will.","full-site-editing"),imgSrc:d,alignBottom:!0},{heading:__("Hidden until you’re ready","full-site-editing"),description:__("Your site will remain hidden until launched. Click “Launch” in the toolbar to share it with the world.","full-site-editing"),imgSrc:p,alignBottom:!0}];return(0,r.createElement)(s.Guide,{className:"wpcom-block-editor-nux",contentLabel:__("Welcome to your website","full-site-editing"),finishButtonText:__("Get started","full-site-editing"),onFinish:()=>{var e;(0,i.jN)("calypso_editor_wpcom_nux_dismiss",{is_gutenboarding:null===(e=window.calypsoifyGutenberg)||void 0===e?void 0:e.isGutenboarding}),c(!1,{openedManually:!1})}},m.map(((e,t)=>(0,r.createElement)(f,(0,o.Z)({key:e.heading,pageNumber:t+1,isLastPage:t===m.length-1},e)))))}},7203:function(e,t,n){"use strict";var o=n(9307),r=n(6115),i=n(849),s=n(5585),a=n(8038),c=n(9321),u=n(9818),l=n(5262),d=n(7542),p=n(6505);n(7710);function f(){var e;const t=(0,d.Z)(window._currentSiteId),n=(0,l.Z)(),s=(0,i.bU)(),{setShowWelcomeGuide:f}=(0,u.useDispatch)("automattic/wpcom-welcome-guide"),m=null===(e=window.calypsoifyGutenberg)||void 0===e?void 0:e.isGutenboarding,h=()=>new URLSearchParams(document.location.search).has("welcome-tour-next"),g=(0,u.useSelect)((e=>!!e("core/edit-site"))),v=(0,p.Z)(s,h(),g);if("sell"!==n||!t||"ecommerce-bundle"===t.product_slug){const e=v.findIndex((e=>"payment-block"===e.slug));v.splice(e,1)}const{isInserterOpened:w,isSidebarOpened:y,isSettingsOpened:b}=(0,u.useSelect)((e=>{var t;return{isInserterOpened:e("core/edit-post").isInserterOpened(),isSidebarOpened:(null===(t=e("automattic/block-editor-nav-sidebar"))||void 0===t?void 0:t.isSidebarOpened())??!1,isSettingsOpened:"edit-post/document"===e("core/interface").getActiveComplementaryArea("core/edit-post")}})),_=y||(0,c.kV)("<782px")&&(w||b),E={steps:v,closeHandler:(e,t,n)=>{(0,r.jN)("calypso_editor_wpcom_tour_dismiss",{is_gutenboarding:m,slide_number:t+1,action:n}),f(!1,{openedManually:!1})},isMinimized:_,options:{tourRating:{enabled:!0,useTourRating:()=>(0,u.useSelect)((e=>e("automattic/wpcom-welcome-guide").getTourRating())),onTourRate:e=>{(0,u.dispatch)("automattic/wpcom-welcome-guide").setTourRating(e),(0,r.jN)("calypso_editor_wpcom_tour_rate",{thumbs_up:"thumbs-up"===e,is_gutenboarding:!1})}},callbacks:{onMinimize:e=>{(0,r.jN)("calypso_editor_wpcom_tour_minimize",{is_gutenboarding:m,slide_number:e+1})},onMaximize:e=>{(0,r.jN)("calypso_editor_wpcom_tour_maximize",{is_gutenboarding:m,slide_number:e+1})},onStepViewOnce:e=>{const t=v.length-1,{heading:n}=v[e].meta;(0,r.jN)("calypso_editor_wpcom_tour_slide_view",{slide_number:e+1,is_last_slide:e===t,slide_heading:n,is_gutenboarding:m})}},effects:{spotlight:h()?{styles:{minWidth:"50px",minHeight:"50px",borderRadius:"2px"}}:void 0,arrowIndicator:!1},popperModifiers:[(0,o.useMemo)((()=>({name:"offset",options:{offset:e=>{let{placement:t,reference:n}=e;if("bottom"===t){const e=document.querySelector(".edit-post-header");if(!e)return;const t=e.getBoundingClientRect();return[0,t.height+t.y-(n.height+n.y)+16]}return[0,0]}}})),[])],classNames:"wpcom-editor-welcome-tour",portalParentElement:document.getElementById("wpwrap")}};return(0,o.createElement)(a.Z,{config:E})}t.Z=function(){const{show:e,isNewPageLayoutModalOpen:t,isManuallyOpened:n}=(0,u.useSelect)((e=>({show:e("automattic/wpcom-welcome-guide").isWelcomeGuideShown(),isNewPageLayoutModalOpen:e("automattic/starter-page-layouts")&&e("automattic/starter-page-layouts").isOpen(),isManuallyOpened:e("automattic/wpcom-welcome-guide").isWelcomeGuideManuallyOpened()}))),a=(0,i.bU)();return(0,s.Z)([(0,p.Z)(a,!1)[0]]),(0,o.useEffect)((()=>{var o;(e||t)&&(0,r.jN)("calypso_editor_wpcom_tour_open",{is_gutenboarding:null===(o=window.calypsoifyGutenberg)||void 0===o?void 0:o.isGutenboarding,is_manually_opened:n})}),[t,n,e]),!e||t?null:(0,o.createElement)(f,null)}},6505:function(e,t,n){"use strict";var o=n(9307),r=n(7498),i=n(9321),s=n(5609),a=n(5736);const __=a.__;function c(e){const t="https://s0.wp.com/i/editor-welcome-tour";return{addBlock:{desktop:{src:`${t}/slide-add-block.gif`,type:"image/gif"},mobile:{src:`${t}/slide-add-block_mobile.gif`,type:"image/gif"}},allBlocks:{desktop:{src:`${t}/slide-all-blocks.gif`,type:"image/gif"}},finish:{desktop:{src:`${t}/slide-finish.png`,type:"image/gif"}},makeBold:{desktop:{src:`${t}/slide-make-bold.gif`,type:"image/gif"}},moreOptions:{desktop:{src:`${t}/slide-more-options.gif`,type:"image/gif"},mobile:{src:`${t}/slide-more-options_mobile.gif`,type:"image/gif"}},moveBlock:{desktop:{src:`${t}/slide-move-block.gif`,type:"image/gif"},mobile:{src:`${t}/slide-move-block_mobile.gif`,type:"image/gif"}},findYourWay:{desktop:{src:`${t}/slide-find-your-way.gif`,type:"image/gif"}},undo:{desktop:{src:`${t}/slide-undo.gif`,type:"image/gif"}},welcome:{desktop:{src:`${t}/slide-welcome.png`,type:"image/png"},mobile:{src:`${t}/slide-welcome_mobile.jpg`,type:"image/jpeg"}},editYourSite:{desktop:{src:"https://s.w.org/images/block-editor/edit-your-site.gif?1",type:"image/gif"},mobile:{src:"https://s.w.org/images/block-editor/edit-your-site.gif?1",type:"image/gif"}}}[e]}t.Z=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return[{slug:"welcome",meta:{heading:__("Welcome to WordPress!","full-site-editing"),descriptions:{desktop:__("Take this short, interactive tour to learn the fundamentals of the WordPress editor.","full-site-editing"),mobile:null},imgSrc:c("welcome")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:["is-with-extra-padding","wpcom-editor-welcome-tour__step"]}}},{slug:"everything-is-a-block",meta:{heading:__("Everything is a block","full-site-editing"),descriptions:{desktop:__("In the WordPress Editor, paragraphs, images, and videos are all blocks.","full-site-editing"),mobile:null},imgSrc:c("allBlocks")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:"wpcom-editor-welcome-tour__step"}}},{slug:"add-block",...t&&{referenceElements:{mobile:".edit-post-header .edit-post-header__toolbar .components-button.edit-post-header-toolbar__inserter-toggle",desktop:".edit-post-header .edit-post-header__toolbar .components-button.edit-post-header-toolbar__inserter-toggle"}},meta:{heading:__("Adding a new block","full-site-editing"),descriptions:{desktop:__("Click + to open the inserter. Then click the block you want to add.","full-site-editing"),mobile:__("Tap + to open the inserter. Then tap the block you want to add.","full-site-editing")},imgSrc:c("addBlock")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:["is-with-extra-padding","wpcom-editor-welcome-tour__step"]}}},{slug:"edit-block",meta:{heading:__("Click a block to change it","full-site-editing"),descriptions:{desktop:__("Use the toolbar to change the appearance of a selected block. Try making it bold.","full-site-editing"),mobile:null},imgSrc:c("makeBold")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:"wpcom-editor-welcome-tour__step"}}},{slug:"settings",...t&&{referenceElements:{mobile:".edit-post-header .edit-post-header__settings .interface-pinned-items > button:nth-child(1)",desktop:".edit-post-header .edit-post-header__settings .interface-pinned-items > button:nth-child(1)"}},meta:{heading:__("More Options","full-site-editing"),descriptions:{desktop:__("Click the settings icon to see even more options.","full-site-editing"),mobile:__("Tap the settings icon to see even more options.","full-site-editing")},imgSrc:c("moreOptions")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:["is-with-extra-padding","wpcom-editor-welcome-tour__step"]}}},...(0,i.tq)()?[]:[{slug:"find-your-way",meta:{heading:__("Find your way","full-site-editing"),descriptions:{desktop:__("Use List View to see all the blocks you've added. Click and drag any block to move it around.","full-site-editing"),mobile:null},imgSrc:c("findYourWay")},options:{classNames:{desktop:["is-with-extra-padding","wpcom-editor-welcome-tour__step"],mobile:"wpcom-editor-welcome-tour__step"}}}],...(0,i.tq)()?[]:[{slug:"undo",...t&&{referenceElements:{desktop:".edit-post-header .edit-post-header__toolbar .components-button.editor-history__undo"}},meta:{heading:__("Undo any mistake","full-site-editing"),descriptions:{desktop:__("Click the Undo button if you've made a mistake.","full-site-editing"),mobile:null},imgSrc:c("undo")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:"wpcom-editor-welcome-tour__step"}}}],{slug:"drag-drop",meta:{heading:__("Drag & drop","full-site-editing"),descriptions:{desktop:__("To move blocks around, click and drag the handle.","full-site-editing"),mobile:__("To move blocks around, tap the up and down arrows.","full-site-editing")},imgSrc:c("moveBlock")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:["is-with-extra-padding","wpcom-editor-welcome-tour__step"]}}},{slug:"payment-block",meta:{heading:__("The Payments block","full-site-editing"),descriptions:{desktop:(0,o.createElement)(o.Fragment,null,__("The Payments block allows you to accept payments for one-time, monthly recurring, or annual payments on your website","full-site-editing"),(0,o.createElement)("br",null),(0,o.createElement)(s.ExternalLink,{href:(0,r.aq)("https://wordpress.com/support/video-tutorials-add-payments-features-to-your-site-with-our-guides/#how-to-use-the-payments-block-video",e),target:"_blank",rel:"noopener noreferrer"},__("Learn more","full-site-editing"))),mobile:null},imgSrc:c("welcome")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:"wpcom-editor-welcome-tour__step"}}},...n?[{slug:"edit-your-site",meta:{heading:__("Edit your site","full-site-editing"),descriptions:{desktop:__("Design everything on your site - from the header right down to the footer - using blocks.","full-site-editing"),mobile:__("Design everything on your site - from the header right down to the footer - using blocks.","full-site-editing")},imgSrc:c("editYourSite")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:["is-with-extra-padding","wpcom-editor-welcome-tour__step"]}}}]:[],{slug:"congratulations",meta:{heading:__("Congratulations!","full-site-editing"),descriptions:{desktop:(0,o.createInterpolateElement)(__("You've learned the basics. Remember, your site is private until you <link_to_launch_site_docs>decide to launch</link_to_launch_site_docs>. View the <link_to_editor_docs>block editing docs</link_to_editor_docs> to learn more.","full-site-editing"),{link_to_launch_site_docs:(0,o.createElement)(s.ExternalLink,{href:(0,r.aq)("https://wordpress.com/support/settings/privacy-settings/#launch-your-site",e)}),link_to_editor_docs:(0,o.createElement)(s.ExternalLink,{href:(0,r.aq)("https://wordpress.com/support/wordpress-editor/",e)})}),mobile:null},imgSrc:c("finish")},options:{classNames:{desktop:"wpcom-editor-welcome-tour__step",mobile:"wpcom-editor-welcome-tour__step"}}}]}},6115:function(e,t,n){"use strict";n.d(t,{jN:function(){return o.jN}});n(1694),n(6209),n(9377);var o=n(9792);n(3722)},9377:function(e,t,n){"use strict";let o=null;"undefined"!=typeof window&&window.addEventListener("popstate",(function(){o=null}))},9792:function(e,t,n){"use strict";n.d(t,{jN:function(){return p}});var o=n(2699),r=n(4898),i=(n(3421),n(2819)),s=(n(9377),n(6209),n(9358));n(1694);const a=["a8c_cookie_banner_ok","wcadmin_storeprofiler_create_jetpack_account","wcadmin_storeprofiler_connect_store","wcadmin_storeprofiler_login_jetpack_account","wcadmin_storeprofiler_payment_login","wcadmin_storeprofiler_payment_create_account","calypso_checkout_switch_to_p_24","calypso_checkout_composite_p24_submit_clicked"];let c,u=Promise.resolve();function l(e){"undefined"!=typeof window&&(window._tkq=window._tkq||[],window._tkq.push(e))}"undefined"!=typeof document&&(u=(0,r.ve)("//stats.wp.com/w.js?63"));const d=new o.EventEmitter;function p(e,t){if(t=t||{},(0,s.Z)('Record event "%s" called with props %o',e,t),e.startsWith("calypso_")||(0,i.includes)(a,e)){if(c){const e=c(t);t={...t,...e}}t=(0,i.omitBy)(t,(e=>void 0===e)),(0,s.Z)('Recording event "%s" with actual props %o',e,t),l(["recordEvent",e,t]),d.emit("record-event",e,t)}else(0,s.Z)('- Event name must be prefixed by "calypso_" or added to `EVENT_NAME_EXCEPTIONS`')}},3722:function(e,t,n){"use strict";n(9792)},6209:function(e,t,n){"use strict";n(4)},9358:function(e,t,n){"use strict";var o=n(8049),r=n.n(o);t.Z=r()("calypso:analytics")},1694:function(e,t,n){"use strict";n(9358)},4:function(e,t,n){"use strict";n(8032)},3668:function(e,t,n){"use strict";var o=n(9307),r=n(5736),i=n(2779),s=n.n(i),a=n(2819);n(2014);const __=r.__;t.Z=e=>{let{activePageIndex:t,numberOfPages:n,onChange:i,classNames:c,children:u}=e;const l=s()("pagination-control",c);return(0,o.createElement)("ul",{className:l,"aria-label":__("Pagination control")},(0,a.times)(n,(e=>(0,o.createElement)("li",{key:`${n}-${e}`,"aria-current":e===t?"page":void 0},(0,o.createElement)("button",{className:s()("pagination-control__page",{"is-current":e===t}),disabled:e===t,"aria-label":(0,r.sprintf)(__("Page %1$d of %2$d"),e+1,n),onClick:()=>i(e)})))),u&&(0,o.createElement)("li",{className:"pagination-control__last-item"},u))}},4724:function(e,t,n){"use strict";var o=n(914);t.Z=new o.Z},914:function(e,t,n){"use strict";var o=n(2699),r=n(2594),i=n(6668),s=n(8049),a=n.n(s),c=n(5079),u=n.n(c),l=n(7839),d=n.n(l),p=n(9830),f=n(3);const m=a()("i18n-calypso"),h="number_format_decimals",g="number_format_thousands_sep",v="messages",w=[function(e){return e}],y={};function b(){S.throwErrors&&"undefined"!=typeof window&&window.console&&window.console.warn&&window.console.warn.apply(window.console,arguments)}function _(e){return Array.prototype.slice.call(e)}function E(e){const t=e[0];("string"!=typeof t||e.length>3||e.length>2&&"object"==typeof e[1]&&"object"==typeof e[2])&&b("Deprecated Invocation: `translate()` accepts ( string, [string], [object] ). These arguments passed:",_(e),". See https://github.com/Automattic/i18n-calypso#translate-method"),2===e.length&&"string"==typeof t&&"string"==typeof e[1]&&b("Invalid Invocation: `translate()` requires an options object for plural translations, but passed:",_(e));let n={};for(let o=0;o<e.length;o++)"object"==typeof e[o]&&(n=e[o]);if("string"==typeof t?n.original=t:"object"==typeof n.original&&(n.plural=n.original.plural,n.count=n.original.count,n.original=n.original.single),"string"==typeof e[1]&&(n.plural=e[1]),void 0===n.original)throw new Error("Translate called without a `string` value as first argument.");return n}function x(e,t){return e.dcnpgettext(v,t.context,t.original,t.plural,t.count)}function k(e,t){for(let n=w.length-1;n>=0;n--){const o=w[n](Object.assign({},t)),r=o.context?o.context+""+o.original:o.original;if(e.state.locale[r])return x(e.state.tannin,o)}return null}function S(){if(!(this instanceof S))return new S;this.defaultLocaleSlug="en",this.defaultPluralForms=e=>1===e?0:1,this.state={numberFormatSettings:{},tannin:void 0,locale:void 0,localeSlug:void 0,localeVariant:void 0,textDirection:void 0,translations:d()({max:100})},this.componentUpdateHooks=[],this.translateHooks=[],this.stateObserver=new o.EventEmitter,this.stateObserver.setMaxListeners(0),this.configure()}S.throwErrors=!1,S.prototype.on=function(){this.stateObserver.on(...arguments)},S.prototype.off=function(){this.stateObserver.off(...arguments)},S.prototype.emit=function(){this.stateObserver.emit(...arguments)},S.prototype.numberFormat=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n="number"==typeof t?t:t.decimals||0,o=t.decPoint||this.state.numberFormatSettings.decimal_point||".",r=t.thousandsSep||this.state.numberFormatSettings.thousands_sep||",";return(0,f.Z)(e,n,o,r)},S.prototype.configure=function(e){Object.assign(this,e||{}),this.setLocale()},S.prototype.setLocale=function(e){var t,n,o;if(e&&e[""]&&e[""]["key-hash"]){const t=e[""]["key-hash"],n=function(e,t){const n=!1===t?"":String(t);if(void 0!==y[n+e])return y[n+e];const o=u()().update(e).digest("hex");return y[n+e]=t?o.substr(0,t):o},o=function(e){return function(t){return t.context?(t.original=n(t.context+String.fromCharCode(4)+t.original,e),delete t.context):t.original=n(t.original,e),t}};if("sha1"===t.substr(0,4))if(4===t.length)w.push(o(!1));else{const e=t.substr(5).indexOf("-");if(e<0){const e=Number(t.substr(5));w.push(o(e))}else{const n=Number(t.substr(5,e)),r=Number(t.substr(6+e));for(let e=n;e<=r;e++)w.push(o(e))}}}if(e&&e[""].localeSlug)if(e[""].localeSlug===this.state.localeSlug){if(e===this.state.locale)return;Object.assign(this.state.locale,e)}else this.state.locale=Object.assign({},e);else this.state.locale={"":{localeSlug:this.defaultLocaleSlug,plural_forms:this.defaultPluralForms}};this.state.localeSlug=this.state.locale[""].localeSlug,this.state.localeVariant=this.state.locale[""].localeVariant,this.state.textDirection=(null===(t=this.state.locale["text directionltr"])||void 0===t?void 0:t[0])||(null===(n=this.state.locale[""])||void 0===n||null===(o=n.momentjs_locale)||void 0===o?void 0:o.textDirection),this.state.tannin=new p.Z({[v]:this.state.locale}),this.state.numberFormatSettings.decimal_point=x(this.state.tannin,E([h])),this.state.numberFormatSettings.thousands_sep=x(this.state.tannin,E([g])),this.state.numberFormatSettings.decimal_point===h&&(this.state.numberFormatSettings.decimal_point="."),this.state.numberFormatSettings.thousands_sep===g&&(this.state.numberFormatSettings.thousands_sep=","),this.stateObserver.emit("change")},S.prototype.getLocale=function(){return this.state.locale},S.prototype.getLocaleSlug=function(){return this.state.localeSlug},S.prototype.getLocaleVariant=function(){return this.state.localeVariant},S.prototype.isRtl=function(){return"rtl"===this.state.textDirection},S.prototype.addTranslations=function(e){for(const t in e)""!==t&&(this.state.tannin.data.messages[t]=e[t]);this.stateObserver.emit("change")},S.prototype.hasTranslation=function(){return!!k(this,E(arguments))},S.prototype.translate=function(){const e=E(arguments);let t=k(this,e);if(t||(t=x(this.state.tannin,e)),e.args){const o=Array.isArray(e.args)?e.args.slice(0):[e.args];o.unshift(t);try{t=(0,i.Z)(...o)}catch(n){if(!window||!window.console)return;const e=this.throwErrors?"error":"warn";"string"!=typeof n?window.console[e](n):window.console[e]("i18n sprintf error:",o)}}return e.components&&(t=(0,r.Z)({mixedString:t,components:e.components,throwErrors:this.throwErrors})),this.translateHooks.forEach((function(n){t=n(t,e)})),t},S.prototype.reRenderTranslations=function(){m("Re-rendering all translations due to external request"),this.stateObserver.emit("change")},S.prototype.registerComponentUpdateHook=function(e){this.componentUpdateHooks.push(e)},S.prototype.registerTranslateHook=function(e){this.translateHooks.push(e)},t.Z=S},1481:function(e,t,n){"use strict";n.d(t,{Yj:function(){return r}});var o=n(4724);o.Z.numberFormat.bind(o.Z),o.Z.translate.bind(o.Z),o.Z.configure.bind(o.Z),o.Z.setLocale.bind(o.Z),o.Z.getLocale.bind(o.Z);const r=o.Z.getLocaleSlug.bind(o.Z);o.Z.getLocaleVariant.bind(o.Z),o.Z.isRtl.bind(o.Z),o.Z.addTranslations.bind(o.Z),o.Z.reRenderTranslations.bind(o.Z),o.Z.registerComponentUpdateHook.bind(o.Z),o.Z.registerTranslateHook.bind(o.Z),o.Z.state,o.Z.stateObserver,o.Z.on.bind(o.Z),o.Z.off.bind(o.Z),o.Z.emit.bind(o.Z)},3:function(e,t,n){"use strict";function o(e,t,n,o){e=(e+"").replace(/[^0-9+\-Ee.]/g,"");const r=isFinite(+e)?+e:0,i=isFinite(+t)?Math.abs(t):0,s=void 0===o?",":o,a=void 0===n?".":n;let c="";return c=(i?
7
  /*
8
  * Exposes number format capability
9
  *
wpcom-block-editor-nux/dist/wpcom-block-editor-nux.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"wpcom-block-editor-nux.min.js","mappings":"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","sources":["webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/createPopper.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/enums.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/popper.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/debounce.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/math.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/within.js","webpack://EditingToolkit/../../node_modules/@tannin/compile/index.js","webpack://EditingToolkit/../../node_modules/@tannin/evaluate/index.js","webpack://EditingToolkit/../../node_modules/@tannin/plural-forms/index.js","webpack://EditingToolkit/../../node_modules/@tannin/postfix/index.js","webpack://EditingToolkit/../../node_modules/@tannin/sprintf/index.js","webpack://EditingToolkit/../../node_modules/@wordpress/icons/build-module/icon/index.js","webpack://EditingToolkit/../../node_modules/@wordpress/icons/build-module/library/close.js","webpack://EditingToolkit/../../node_modules/@wordpress/react-i18n/build-module/index.js","webpack://EditingToolkit/../../node_modules/builtin-status-codes/browser.js","webpack://EditingToolkit/../../node_modules/classnames/index.js","webpack://EditingToolkit/../../node_modules/cookie/index.js","webpack://EditingToolkit/../../node_modules/debug/node_modules/ms/index.js","webpack://EditingToolkit/../../node_modules/events/events.js","webpack://EditingToolkit/../../node_modules/hash.js/lib/hash/common.js","webpack://EditingToolkit/../../node_modules/hash.js/lib/hash/sha/1.js","webpack://EditingToolkit/../../node_modules/hash.js/lib/hash/sha/256.js","webpack://EditingToolkit/../../node_modules/hash.js/lib/hash/sha/common.js","webpack://EditingToolkit/../../node_modules/hash.js/lib/hash/utils.js","webpack://EditingToolkit/../../node_modules/inherits/inherits_browser.js","webpack://EditingToolkit/../../node_modules/lru/index.js","webpack://EditingToolkit/../../node_modules/minimalistic-assert/index.js","webpack://EditingToolkit/../../node_modules/progress-event/index.js","webpack://EditingToolkit/../../node_modules/react-fast-compare/index.js","webpack://EditingToolkit/../../node_modules/react-popper/lib/esm/usePopper.js","webpack://EditingToolkit/../../node_modules/react-popper/lib/esm/utils.js","webpack://EditingToolkit/../../node_modules/tannin/index.js","webpack://EditingToolkit/./editing-toolkit-plugin/dotcom-fse/lib/seller-celebration-modal/use-has-seen-seller-celebration-modal.js","webpack://EditingToolkit/./editing-toolkit-plugin/dotcom-fse/lib/site-intent/use-site-intent.js","webpack://EditingToolkit/./editing-toolkit-plugin/dotcom-fse/lib/site-plan/use-site-plan.ts","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/block-editor-nux.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/disable-core-nux.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/draft-post-modal/index.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/nux-modal/index.tsx","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/post-published-modal/index.tsx","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/public-path.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/purchase-notice/index.jsx","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/seller-celebration-modal/index.jsx","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/store.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/welcome-modal/wpcom-nux.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/welcome-tour/tour-launch.tsx","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/welcome-tour/tour-steps.tsx","webpack://EditingToolkit/../../packages/calypso-analytics/src/page-view-params.ts","webpack://EditingToolkit/../../packages/calypso-analytics/src/tracks.ts","webpack://EditingToolkit/../../packages/calypso-analytics/src/utils/debug.ts","webpack://EditingToolkit/../../packages/components/src/pagination-control/index.tsx","webpack://EditingToolkit/../../packages/i18n-calypso/src/default-i18n.js","webpack://EditingToolkit/../../packages/i18n-calypso/src/i18n.js","webpack://EditingToolkit/../../packages/i18n-calypso/src/index.js","webpack://EditingToolkit/../../packages/i18n-calypso/src/number-format.js","webpack://EditingToolkit/../../packages/i18n-utils/src/locale-context.tsx","webpack://EditingToolkit/../../packages/i18n-utils/src/locales.ts","webpack://EditingToolkit/../../packages/i18n-utils/src/localize-url.tsx","webpack://EditingToolkit/../../packages/interpolate-components/src/index.js","webpack://EditingToolkit/../../packages/interpolate-components/src/tokenize.js","webpack://EditingToolkit/../../packages/load-script/src/callback-handler.js","webpack://EditingToolkit/../../packages/load-script/src/dom-operations.js","webpack://EditingToolkit/../../packages/load-script/src/index.js","webpack://EditingToolkit/../../packages/tour-kit/src/components/keyboard-navigation.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-context.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-frame.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-minimized.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-overlay.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-spotlight-interactivity.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-spotlight.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-step.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/error-boundary.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/hooks/use-focus-handler.ts","webpack://EditingToolkit/../../packages/tour-kit/src/hooks/use-focus-trap.ts","webpack://EditingToolkit/../../packages/tour-kit/src/hooks/use-keydown-handler.ts","webpack://EditingToolkit/../../packages/tour-kit/src/hooks/use-step-tracking.ts","webpack://EditingToolkit/../../packages/tour-kit/src/utils/index.ts","webpack://EditingToolkit/../../packages/tour-kit/src/utils/live-resize-modifier.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-minimized.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-rating.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-step-card-navigation.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-step-card-overlay-controls.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-step-card.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-step.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/hooks/use-prefetch-tour-assets.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/icons/maximize.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/icons/minimize.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/icons/thumbs_down.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/icons/thumbs_up.tsx","webpack://EditingToolkit/../../packages/viewport-react/src/index.js","webpack://EditingToolkit/../../packages/viewport/src/index.ts","webpack://EditingToolkit/../../packages/wpcom-proxy-request/src/index.js","webpack://EditingToolkit/../../node_modules/debug/src/browser.js","webpack://EditingToolkit/../../node_modules/debug/src/common.js","webpack://EditingToolkit/../../node_modules/uppercamelcase/index.js","webpack://EditingToolkit/../../node_modules/uppercamelcase/node_modules/camelcase/index.js","webpack://EditingToolkit/../../node_modules/uuid/dist/esm-browser/regex.js","webpack://EditingToolkit/../../node_modules/uuid/dist/esm-browser/rng.js","webpack://EditingToolkit/../../node_modules/uuid/dist/esm-browser/stringify.js","webpack://EditingToolkit/../../node_modules/uuid/dist/esm-browser/v4.js","webpack://EditingToolkit/../../node_modules/uuid/dist/esm-browser/validate.js","webpack://EditingToolkit/../../node_modules/wp-error/index.js","webpack://EditingToolkit/external window \"React\"","webpack://EditingToolkit/external window \"a8c-fse-common-data-stores\"","webpack://EditingToolkit/external window \"lodash\"","webpack://EditingToolkit/external window [\"wp\",\"apiFetch\"]","webpack://EditingToolkit/external window [\"wp\",\"components\"]","webpack://EditingToolkit/external window [\"wp\",\"compose\"]","webpack://EditingToolkit/external window [\"wp\",\"data\"]","webpack://EditingToolkit/external window [\"wp\",\"dataControls\"]","webpack://EditingToolkit/external window [\"wp\",\"dom\"]","webpack://EditingToolkit/external window [\"wp\",\"element\"]","webpack://EditingToolkit/external window [\"wp\",\"hooks\"]","webpack://EditingToolkit/external window [\"wp\",\"i18n\"]","webpack://EditingToolkit/external window [\"wp\",\"notices\"]","webpack://EditingToolkit/external window [\"wp\",\"nux\"]","webpack://EditingToolkit/external window [\"wp\",\"plugins\"]","webpack://EditingToolkit/external window [\"wp\",\"primitives\"]","webpack://EditingToolkit/external window [\"wp\",\"url\"]","webpack://EditingToolkit/../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://EditingToolkit/../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://EditingToolkit/webpack/bootstrap","webpack://EditingToolkit/webpack/runtime/compat get default export","webpack://EditingToolkit/webpack/runtime/define property getters","webpack://EditingToolkit/webpack/runtime/global","webpack://EditingToolkit/webpack/runtime/hasOwnProperty shorthand","webpack://EditingToolkit/webpack/runtime/make namespace object","webpack://EditingToolkit/webpack/runtime/publicPath","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/index.js"],"sourcesContent":["import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","// import { isHTMLElement } from './instanceOf';\nexport default function getBoundingClientRect(element, // eslint-disable-next-line unused-imports/no-unused-vars\nincludeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n var rect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1; // FIXME:\n // `offsetWidth` returns an integer while `getBoundingClientRect`\n // returns a float. This results in `scaleX` or `scaleY` being\n // non-1 when it should be for elements that aren't a full pixel in\n // width or height.\n // if (isHTMLElement(element) && includeScale) {\n // const offsetHeight = element.offsetHeight;\n // const offsetWidth = element.offsetWidth;\n // // Do not attempt to divide by 0, otherwise we get `Infinity` as scale\n // // Fallback to 1 in case both values are `0`\n // if (offsetWidth > 0) {\n // scaleX = rect.width / offsetWidth || 1;\n // }\n // if (offsetHeight > 0) {\n // scaleY = rect.height / offsetHeight || 1;\n // }\n // }\n\n return {\n width: rect.width / scaleX,\n height: rect.height / scaleY,\n top: rect.top / scaleY,\n right: rect.right / scaleX,\n bottom: rect.bottom / scaleY,\n left: rect.left / scaleX,\n x: rect.left / scaleX,\n y: rect.top / scaleY\n };\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = rect.width / element.offsetWidth || 1;\n var scaleY = rect.height / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","import postfix from '@tannin/postfix';\nimport evaluate from '@tannin/evaluate';\n\n/**\n * Given a C expression, returns a function which can be called to evaluate its\n * result.\n *\n * @example\n *\n * ```js\n * import compile from '@tannin/compile';\n *\n * const evaluate = compile( 'n > 1' );\n *\n * evaluate( { n: 2 } );\n * // ⇒ true\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {(variables?:{[variable:string]:*})=>*} Compiled evaluator.\n */\nexport default function compile( expression ) {\n\tvar terms = postfix( expression );\n\n\treturn function( variables ) {\n\t\treturn evaluate( terms, variables );\n\t};\n}\n","/**\n * Operator callback functions.\n *\n * @type {Object}\n */\nvar OPERATORS = {\n\t'!': function( a ) {\n\t\treturn ! a;\n\t},\n\t'*': function( a, b ) {\n\t\treturn a * b;\n\t},\n\t'/': function( a, b ) {\n\t\treturn a / b;\n\t},\n\t'%': function( a, b ) {\n\t\treturn a % b;\n\t},\n\t'+': function( a, b ) {\n\t\treturn a + b;\n\t},\n\t'-': function( a, b ) {\n\t\treturn a - b;\n\t},\n\t'<': function( a, b ) {\n\t\treturn a < b;\n\t},\n\t'<=': function( a, b ) {\n\t\treturn a <= b;\n\t},\n\t'>': function( a, b ) {\n\t\treturn a > b;\n\t},\n\t'>=': function( a, b ) {\n\t\treturn a >= b;\n\t},\n\t'==': function( a, b ) {\n\t\treturn a === b;\n\t},\n\t'!=': function( a, b ) {\n\t\treturn a !== b;\n\t},\n\t'&&': function( a, b ) {\n\t\treturn a && b;\n\t},\n\t'||': function( a, b ) {\n\t\treturn a || b;\n\t},\n\t'?:': function( a, b, c ) {\n\t\tif ( a ) {\n\t\t\tthrow b;\n\t\t}\n\n\t\treturn c;\n\t},\n};\n\n/**\n * Given an array of postfix terms and operand variables, returns the result of\n * the postfix evaluation.\n *\n * @example\n *\n * ```js\n * import evaluate from '@tannin/evaluate';\n *\n * // 3 + 4 * 5 / 6 ⇒ '3 4 5 * 6 / +'\n * const terms = [ '3', '4', '5', '*', '6', '/', '+' ];\n *\n * evaluate( terms, {} );\n * // ⇒ 6.333333333333334\n * ```\n *\n * @param {string[]} postfix Postfix terms.\n * @param {Object} variables Operand variables.\n *\n * @return {*} Result of evaluation.\n */\nexport default function evaluate( postfix, variables ) {\n\tvar stack = [],\n\t\ti, j, args, getOperatorResult, term, value;\n\n\tfor ( i = 0; i < postfix.length; i++ ) {\n\t\tterm = postfix[ i ];\n\n\t\tgetOperatorResult = OPERATORS[ term ];\n\t\tif ( getOperatorResult ) {\n\t\t\t// Pop from stack by number of function arguments.\n\t\t\tj = getOperatorResult.length;\n\t\t\targs = Array( j );\n\t\t\twhile ( j-- ) {\n\t\t\t\targs[ j ] = stack.pop();\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tvalue = getOperatorResult.apply( null, args );\n\t\t\t} catch ( earlyReturn ) {\n\t\t\t\treturn earlyReturn;\n\t\t\t}\n\t\t} else if ( variables.hasOwnProperty( term ) ) {\n\t\t\tvalue = variables[ term ];\n\t\t} else {\n\t\t\tvalue = +term;\n\t\t}\n\n\t\tstack.push( value );\n\t}\n\n\treturn stack[ 0 ];\n}\n","import compile from '@tannin/compile';\n\n/**\n * Given a C expression, returns a function which, when called with a value,\n * evaluates the result with the value assumed to be the \"n\" variable of the\n * expression. The result will be coerced to its numeric equivalent.\n *\n * @param {string} expression C expression.\n *\n * @return {Function} Evaluator function.\n */\nexport default function pluralForms( expression ) {\n\tvar evaluate = compile( expression );\n\n\treturn function( n ) {\n\t\treturn +evaluate( { n: n } );\n\t};\n}\n","var PRECEDENCE, OPENERS, TERMINATORS, PATTERN;\n\n/**\n * Operator precedence mapping.\n *\n * @type {Object}\n */\nPRECEDENCE = {\n\t'(': 9,\n\t'!': 8,\n\t'*': 7,\n\t'/': 7,\n\t'%': 7,\n\t'+': 6,\n\t'-': 6,\n\t'<': 5,\n\t'<=': 5,\n\t'>': 5,\n\t'>=': 5,\n\t'==': 4,\n\t'!=': 4,\n\t'&&': 3,\n\t'||': 2,\n\t'?': 1,\n\t'?:': 1,\n};\n\n/**\n * Characters which signal pair opening, to be terminated by terminators.\n *\n * @type {string[]}\n */\nOPENERS = [ '(', '?' ];\n\n/**\n * Characters which signal pair termination, the value an array with the\n * opener as its first member. The second member is an optional operator\n * replacement to push to the stack.\n *\n * @type {string[]}\n */\nTERMINATORS = {\n\t')': [ '(' ],\n\t':': [ '?', '?:' ],\n};\n\n/**\n * Pattern matching operators and openers.\n *\n * @type {RegExp}\n */\nPATTERN = /<=|>=|==|!=|&&|\\|\\||\\?:|\\(|!|\\*|\\/|%|\\+|-|<|>|\\?|\\)|:/;\n\n/**\n * Given a C expression, returns the equivalent postfix (Reverse Polish)\n * notation terms as an array.\n *\n * If a postfix string is desired, simply `.join( ' ' )` the result.\n *\n * @example\n *\n * ```js\n * import postfix from '@tannin/postfix';\n *\n * postfix( 'n > 1' );\n * // ⇒ [ 'n', '1', '>' ]\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {string[]} Postfix terms.\n */\nexport default function postfix( expression ) {\n\tvar terms = [],\n\t\tstack = [],\n\t\tmatch, operator, term, element;\n\n\twhile ( ( match = expression.match( PATTERN ) ) ) {\n\t\toperator = match[ 0 ];\n\n\t\t// Term is the string preceding the operator match. It may contain\n\t\t// whitespace, and may be empty (if operator is at beginning).\n\t\tterm = expression.substr( 0, match.index ).trim();\n\t\tif ( term ) {\n\t\t\tterms.push( term );\n\t\t}\n\n\t\twhile ( ( element = stack.pop() ) ) {\n\t\t\tif ( TERMINATORS[ operator ] ) {\n\t\t\t\tif ( TERMINATORS[ operator ][ 0 ] === element ) {\n\t\t\t\t\t// Substitution works here under assumption that because\n\t\t\t\t\t// the assigned operator will no longer be a terminator, it\n\t\t\t\t\t// will be pushed to the stack during the condition below.\n\t\t\t\t\toperator = TERMINATORS[ operator ][ 1 ] || operator;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if ( OPENERS.indexOf( element ) >= 0 || PRECEDENCE[ element ] < PRECEDENCE[ operator ] ) {\n\t\t\t\t// Push to stack if either an opener or when pop reveals an\n\t\t\t\t// element of lower precedence.\n\t\t\t\tstack.push( element );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// For each popped from stack, push to terms.\n\t\t\tterms.push( element );\n\t\t}\n\n\t\tif ( ! TERMINATORS[ operator ] ) {\n\t\t\tstack.push( operator );\n\t\t}\n\n\t\t// Slice matched fragment from expression to continue match.\n\t\texpression = expression.substr( match.index + operator.length );\n\t}\n\n\t// Push remainder of operand, if exists, to terms.\n\texpression = expression.trim();\n\tif ( expression ) {\n\t\tterms.push( expression );\n\t}\n\n\t// Pop remaining items from stack into terms.\n\treturn terms.concat( stack.reverse() );\n}\n","/**\n * Regular expression matching format placeholder syntax.\n *\n * The pattern for matching named arguments is a naive and incomplete matcher\n * against valid JavaScript identifier names.\n *\n * via Mathias Bynens:\n *\n * >An identifier must start with $, _, or any character in the Unicode\n * >categories “Uppercase letter (Lu)”, “Lowercase letter (Ll)”, “Titlecase\n * >letter (Lt)”, “Modifier letter (Lm)”, “Other letter (Lo)”, or “Letter\n * >number (Nl)”.\n * >\n * >The rest of the string can contain the same characters, plus any U+200C zero\n * >width non-joiner characters, U+200D zero width joiner characters, and\n * >characters in the Unicode categories “Non-spacing mark (Mn)”, “Spacing\n * >combining mark (Mc)”, “Decimal digit number (Nd)”, or “Connector\n * >punctuation (Pc)”.\n *\n * If browser support is constrained to those supporting ES2015, this could be\n * made more accurate using the `u` flag:\n *\n * ```\n * /^[$_\\p{L}\\p{Nl}][$_\\p{L}\\p{Nl}\\u200C\\u200D\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}]*$/u;\n * ```\n *\n * @see http://www.pixelbeat.org/programming/gcc/format_specs.html\n * @see https://mathiasbynens.be/notes/javascript-identifiers#valid-identifier-names\n *\n * @type {RegExp}\n */\nvar PATTERN = /%(((\\d+)\\$)|(\\(([$_a-zA-Z][$_a-zA-Z0-9]*)\\)))?[ +0#-]*\\d*(\\.(\\d+|\\*))?(ll|[lhqL])?([cduxXefgsp%])/g;\n// ▲ ▲ ▲ ▲ ▲ ▲ ▲ type\n// │ │ │ │ │ └ Length (unsupported)\n// │ │ │ │ └ Precision / max width\n// │ │ │ └ Min width (unsupported)\n// │ │ └ Flags (unsupported)\n// └ Index └ Name (for named arguments)\n\n/**\n * Given a format string, returns string with arguments interpolatation.\n * Arguments can either be provided directly via function arguments spread, or\n * with an array as the second argument.\n *\n * @see https://en.wikipedia.org/wiki/Printf_format_string\n *\n * @example\n *\n * ```js\n * import sprintf from '@tannin/sprintf';\n *\n * sprintf( 'Hello %s!', 'world' );\n * // ⇒ 'Hello world!'\n * ```\n *\n * @param {string} string printf format string\n * @param {Array} [args] String arguments.\n *\n * @return {string} Formatted string.\n */\nexport default function sprintf( string, args ) {\n\tvar i;\n\n\tif ( ! Array.isArray( args ) ) {\n\t\t// Construct a copy of arguments from index one, used for replace\n\t\t// function placeholder substitution.\n\t\targs = new Array( arguments.length - 1 );\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i - 1 ] = arguments[ i ];\n\t\t}\n\t}\n\n\ti = 1;\n\n\treturn string.replace( PATTERN, function() {\n\t\tvar index, name, precision, type, value;\n\n\t\tindex = arguments[ 3 ];\n\t\tname = arguments[ 5 ];\n\t\tprecision = arguments[ 7 ];\n\t\ttype = arguments[ 9 ];\n\n\t\t// There's no placeholder substitution in the explicit \"%\", meaning it\n\t\t// is not necessary to increment argument index.\n\t\tif ( type === '%' ) {\n\t\t\treturn '%';\n\t\t}\n\n\t\t// Asterisk precision determined by peeking / shifting next argument.\n\t\tif ( precision === '*' ) {\n\t\t\tprecision = args[ i - 1 ];\n\t\t\ti++;\n\t\t}\n\n\t\tif ( name !== undefined ) {\n\t\t\t// If it's a named argument, use name.\n\t\t\tif ( args[ 0 ] && typeof args[ 0 ] === 'object' &&\n\t\t\t\t\targs[ 0 ].hasOwnProperty( name ) ) {\n\t\t\t\tvalue = args[ 0 ][ name ];\n\t\t\t}\n\t\t} else {\n\t\t\t// If not a positional argument, use counter value.\n\t\t\tif ( index === undefined ) {\n\t\t\t\tindex = i;\n\t\t\t}\n\n\t\t\ti++;\n\n\t\t\t// Positional argument.\n\t\t\tvalue = args[ index - 1 ];\n\t\t}\n\n\t\t// Parse as type.\n\t\tif ( type === 'f' ) {\n\t\t\tvalue = parseFloat( value ) || 0;\n\t\t} else if ( type === 'd' ) {\n\t\t\tvalue = parseInt( value ) || 0;\n\t\t}\n\n\t\t// Apply precision.\n\t\tif ( precision !== undefined ) {\n\t\t\tif ( type === 'f' ) {\n\t\t\t\tvalue = value.toFixed( precision );\n\t\t\t} else if ( type === 's' ) {\n\t\t\t\tvalue = value.substr( 0, precision );\n\t\t\t}\n\t\t}\n\n\t\t// To avoid \"undefined\" concatenation, return empty string if no\n\t\t// placeholder substitution can be performed.\n\t\treturn value !== undefined && value !== null ? value : '';\n\t} );\n}\n","/**\n * WordPress dependencies\n */\nimport { cloneElement } from '@wordpress/element';\n/** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */\n\n/**\n * Return an SVG icon.\n *\n * @param {IconProps} props icon is the SVG component to render\n * size is a number specifiying the icon size in pixels\n * Other props will be passed to wrapped SVG component\n *\n * @return {JSX.Element} Icon component\n */\n\nfunction Icon(_ref) {\n let {\n icon,\n size = 24,\n ...props\n } = _ref;\n return cloneElement(icon, {\n width: size,\n height: size,\n ...props\n });\n}\n\nexport default Icon;\n//# sourceMappingURL=index.js.map","import { createElement } from \"@wordpress/element\";\n\n/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\nconst close = createElement(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, createElement(Path, {\n d: \"M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z\"\n}));\nexport default close;\n//# sourceMappingURL=close.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createElement } from \"@wordpress/element\";\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\nimport { createContext, useContext, useEffect, useMemo, useReducer } from '@wordpress/element';\nimport { defaultI18n } from '@wordpress/i18n';\n\n/**\n * Utility to make a new context value\n *\n * @param i18n\n */\nfunction makeContextValue(i18n) {\n return {\n __: i18n.__.bind(i18n),\n _x: i18n._x.bind(i18n),\n _n: i18n._n.bind(i18n),\n _nx: i18n._nx.bind(i18n),\n isRTL: i18n.isRTL.bind(i18n),\n hasTranslation: i18n.hasTranslation.bind(i18n)\n };\n}\n\nconst I18nContext = createContext(makeContextValue(defaultI18n));\n\n/**\n * The `I18nProvider` should be mounted above any localized components:\n *\n * @example\n * ```js\n * import { createI18n } from '@wordpress/react-i18n';\n * import { I18nProvider } from '@wordpress/react-i18n';\n * const i18n = createI18n();\n *\n * ReactDom.render(\n * \t<I18nProvider i18n={ i18n }>\n * \t\t<App />\n * \t</I18nProvider>,\n * \tel\n * );\n * ```\n *\n * You can also instantiate the provider without the `i18n` prop. In that case it will use the\n * default `I18n` instance exported from `@wordpress/i18n`.\n *\n * @param props i18n provider props.\n * @return Children wrapped in the I18nProvider.\n */\nexport function I18nProvider(props) {\n const {\n children,\n i18n = defaultI18n\n } = props;\n const [update, forceUpdate] = useReducer(() => [], []); // Rerender translations whenever the i18n instance fires a change event.\n\n useEffect(() => i18n.subscribe(forceUpdate), [i18n]);\n const value = useMemo(() => makeContextValue(i18n), [i18n, update]);\n return createElement(I18nContext.Provider, {\n value: value\n }, children);\n}\n/**\n * React hook providing access to i18n functions. It exposes the `__`, `_x`, `_n`, `_nx`,\n * `isRTL` and `hasTranslation` functions from [`@wordpress/i18n`](../i18n).\n * Refer to their documentation there.\n *\n * @example\n * ```js\n * import { useI18n } from '@wordpress/react-i18n';\n *\n * function MyComponent() {\n * \tconst { __ } = useI18n();\n * \treturn __( 'Hello, world!' );\n * }\n * ```\n */\n\nexport const useI18n = () => useContext(I18nContext);\n\n/**\n * React higher-order component that passes the i18n translate functions (the same set\n * as exposed by the `useI18n` hook) to the wrapped component as props.\n *\n * @example\n * ```js\n * import { withI18n } from '@wordpress/react-i18n';\n *\n * function MyComponent( { __ } ) {\n * \treturn __( 'Hello, world!' );\n * }\n *\n * export default withI18n( MyComponent );\n * ```\n *\n * @param InnerComponent React component to be wrapped and receive the i18n functions like `__`\n * @return The wrapped component\n */\nexport function withI18n(InnerComponent) {\n const EnhancedComponent = props => {\n const i18nProps = useI18n();\n return createElement(InnerComponent, _extends({}, props, i18nProps));\n };\n\n const innerComponentName = InnerComponent.displayName || InnerComponent.name || 'Component';\n EnhancedComponent.displayName = `WithI18n(${innerComponentName})`;\n return EnhancedComponent;\n}\n//# sourceMappingURL=index.js.map","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","/*!\n Copyright (c) 2018 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)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\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 * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","var events = require('events')\nvar inherits = require('inherits')\n\nmodule.exports = LRU\n\nfunction LRU (opts) {\n if (!(this instanceof LRU)) return new LRU(opts)\n if (typeof opts === 'number') opts = {max: opts}\n if (!opts) opts = {}\n events.EventEmitter.call(this)\n this.cache = {}\n this.head = this.tail = null\n this.length = 0\n this.max = opts.max || 1000\n this.maxAge = opts.maxAge || 0\n}\n\ninherits(LRU, events.EventEmitter)\n\nObject.defineProperty(LRU.prototype, 'keys', {\n get: function () { return Object.keys(this.cache) }\n})\n\nLRU.prototype.clear = function () {\n this.cache = {}\n this.head = this.tail = null\n this.length = 0\n}\n\nLRU.prototype.remove = function (key) {\n if (typeof key !== 'string') key = '' + key\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n delete this.cache[key]\n this._unlink(key, element.prev, element.next)\n return element.value\n}\n\nLRU.prototype._unlink = function (key, prev, next) {\n this.length--\n\n if (this.length === 0) {\n this.head = this.tail = null\n } else {\n if (this.head === key) {\n this.head = prev\n this.cache[this.head].next = null\n } else if (this.tail === key) {\n this.tail = next\n this.cache[this.tail].prev = null\n } else {\n this.cache[prev].next = next\n this.cache[next].prev = prev\n }\n }\n}\n\nLRU.prototype.peek = function (key) {\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n\n if (!this._checkAge(key, element)) return\n return element.value\n}\n\nLRU.prototype.set = function (key, value) {\n if (typeof key !== 'string') key = '' + key\n\n var element\n\n if (this.cache.hasOwnProperty(key)) {\n element = this.cache[key]\n element.value = value\n if (this.maxAge) element.modified = Date.now()\n\n // If it's already the head, there's nothing more to do:\n if (key === this.head) return value\n this._unlink(key, element.prev, element.next)\n } else {\n element = {value: value, modified: 0, next: null, prev: null}\n if (this.maxAge) element.modified = Date.now()\n this.cache[key] = element\n\n // Eviction is only possible if the key didn't already exist:\n if (this.length === this.max) this.evict()\n }\n\n this.length++\n element.next = null\n element.prev = this.head\n\n if (this.head) this.cache[this.head].next = key\n this.head = key\n\n if (!this.tail) this.tail = key\n return value\n}\n\nLRU.prototype._checkAge = function (key, element) {\n if (this.maxAge && (Date.now() - element.modified) > this.maxAge) {\n this.remove(key)\n this.emit('evict', {key: key, value: element.value})\n return false\n }\n return true\n}\n\nLRU.prototype.get = function (key) {\n if (typeof key !== 'string') key = '' + key\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n\n if (!this._checkAge(key, element)) return\n\n if (this.head !== key) {\n if (key === this.tail) {\n this.tail = element.next\n this.cache[this.tail].prev = null\n } else {\n // Set prev.next -> element.next:\n this.cache[element.prev].next = element.next\n }\n\n // Set element.next.prev -> element.prev:\n this.cache[element.next].prev = element.prev\n\n // Element is the new head\n this.cache[this.head].next = key\n element.prev = this.head\n element.next = null\n this.head = key\n }\n\n return element.value\n}\n\nLRU.prototype.evict = function () {\n if (!this.tail) return\n var key = this.tail\n var value = this.remove(this.tail)\n this.emit('evict', {key: key, value: value})\n}\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","\nvar NativeProgressEvent = global.ProgressEvent;\nvar useNative = !!NativeProgressEvent;\n\ntry {\n (function () {\n var p = new NativeProgressEvent('loaded');\n useNative = 'loaded' === p.type;\n p = null;\n })();\n} catch (e) {\n useNative = false;\n}\n\n/**\n * Cross-browser `ProgressEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.ProgressEvent\n *\n * @public\n */\n\nmodule.exports = useNative ? NativeProgressEvent :\n\n// IE >= 9\n'function' === typeof document.createEvent ? function ProgressEvent (type, props) {\n var e = document.createEvent('Event');\n e.initEvent(type, false, false);\n if (props) {\n e.lengthComputable = Boolean(props.lengthComputable);\n e.loaded = Number(props.loaded) || 0;\n e.total = Number(props.total) || 0;\n } else {\n e.lengthComputable = false;\n e.loaded = e.total = 0;\n }\n return e;\n} :\n\n// IE <= 8\nfunction ProgressEvent (type, props) {\n var e = document.createEventObject();\n e.type = type;\n if (props) {\n e.lengthComputable = Boolean(props.lengthComputable);\n e.loaded = Number(props.loaded) || 0;\n e.total = Number(props.total) || 0;\n } else {\n e.lengthComputable = false;\n e.loaded = e.total = 0;\n }\n return e;\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","import * as React from 'react';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n var prevOptions = React.useRef(null);\n var optionsWithDefaults = {\n onFirstUpdate: options.onFirstUpdate,\n placement: options.placement || 'bottom',\n strategy: options.strategy || 'absolute',\n modifiers: options.modifiers || EMPTY_MODIFIERS\n };\n\n var _React$useState = React.useState({\n styles: {\n popper: {\n position: optionsWithDefaults.strategy,\n left: '0',\n top: '0'\n },\n arrow: {\n position: 'absolute'\n }\n },\n attributes: {}\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var updateStateModifier = React.useMemo(function () {\n return {\n name: 'updateState',\n enabled: true,\n phase: 'write',\n fn: function fn(_ref) {\n var state = _ref.state;\n var elements = Object.keys(state.elements);\n setState({\n styles: fromEntries(elements.map(function (element) {\n return [element, state.styles[element] || {}];\n })),\n attributes: fromEntries(elements.map(function (element) {\n return [element, state.attributes[element]];\n }))\n });\n },\n requires: ['computeStyles']\n };\n }, []);\n var popperOptions = React.useMemo(function () {\n var newOptions = {\n onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n placement: optionsWithDefaults.placement,\n strategy: optionsWithDefaults.strategy,\n modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n name: 'applyStyles',\n enabled: false\n }])\n };\n\n if (isEqual(prevOptions.current, newOptions)) {\n return prevOptions.current || newOptions;\n } else {\n prevOptions.current = newOptions;\n return newOptions;\n }\n }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n var popperInstanceRef = React.useRef();\n useIsomorphicLayoutEffect(function () {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.setOptions(popperOptions);\n }\n }, [popperOptions]);\n useIsomorphicLayoutEffect(function () {\n if (referenceElement == null || popperElement == null) {\n return;\n }\n\n var createPopper = options.createPopper || defaultCreatePopper;\n var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n popperInstanceRef.current = popperInstance;\n return function () {\n popperInstance.destroy();\n popperInstanceRef.current = null;\n };\n }, [referenceElement, popperElement, options.createPopper]);\n return {\n state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n styles: state.styles,\n attributes: state.attributes,\n update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n };\n};","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === 'function') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === 'function') {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n return entries.reduce(function (acc, _ref) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = value;\n return acc;\n }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","import pluralForms from '@tannin/plural-forms';\n\n/**\n * Tannin constructor options.\n *\n * @typedef {Object} TanninOptions\n *\n * @property {string} [contextDelimiter] Joiner in string lookup with context.\n * @property {Function} [onMissingKey] Callback to invoke when key missing.\n */\n\n/**\n * Domain metadata.\n *\n * @typedef {Object} TanninDomainMetadata\n *\n * @property {string} [domain] Domain name.\n * @property {string} [lang] Language code.\n * @property {(string|Function)} [plural_forms] Plural forms expression or\n * function evaluator.\n */\n\n/**\n * Domain translation pair respectively representing the singular and plural\n * translation.\n *\n * @typedef {[string,string]} TanninTranslation\n */\n\n/**\n * Locale data domain. The key is used as reference for lookup, the value an\n * array of two string entries respectively representing the singular and plural\n * translation.\n *\n * @typedef {{[key:string]:TanninDomainMetadata|TanninTranslation,'':TanninDomainMetadata|TanninTranslation}} TanninLocaleDomain\n */\n\n/**\n * Jed-formatted locale data.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @typedef {{[domain:string]:TanninLocaleDomain}} TanninLocaleData\n */\n\n/**\n * Default Tannin constructor options.\n *\n * @type {TanninOptions}\n */\nvar DEFAULT_OPTIONS = {\n\tcontextDelimiter: '\\u0004',\n\tonMissingKey: null,\n};\n\n/**\n * Given a specific locale data's config `plural_forms` value, returns the\n * expression.\n *\n * @example\n *\n * ```\n * getPluralExpression( 'nplurals=2; plural=(n != 1);' ) === '(n != 1)'\n * ```\n *\n * @param {string} pf Locale data plural forms.\n *\n * @return {string} Plural forms expression.\n */\nfunction getPluralExpression( pf ) {\n\tvar parts, i, part;\n\n\tparts = pf.split( ';' );\n\n\tfor ( i = 0; i < parts.length; i++ ) {\n\t\tpart = parts[ i ].trim();\n\t\tif ( part.indexOf( 'plural=' ) === 0 ) {\n\t\t\treturn part.substr( 7 );\n\t\t}\n\t}\n}\n\n/**\n * Tannin constructor.\n *\n * @class\n *\n * @param {TanninLocaleData} data Jed-formatted locale data.\n * @param {TanninOptions} [options] Tannin options.\n */\nexport default function Tannin( data, options ) {\n\tvar key;\n\n\t/**\n\t * Jed-formatted locale data.\n\t *\n\t * @name Tannin#data\n\t * @type {TanninLocaleData}\n\t */\n\tthis.data = data;\n\n\t/**\n\t * Plural forms function cache, keyed by plural forms string.\n\t *\n\t * @name Tannin#pluralForms\n\t * @type {Object<string,Function>}\n\t */\n\tthis.pluralForms = {};\n\n\t/**\n\t * Effective options for instance, including defaults.\n\t *\n\t * @name Tannin#options\n\t * @type {TanninOptions}\n\t */\n\tthis.options = {};\n\n\tfor ( key in DEFAULT_OPTIONS ) {\n\t\tthis.options[ key ] = options !== undefined && key in options\n\t\t\t? options[ key ]\n\t\t\t: DEFAULT_OPTIONS[ key ];\n\t}\n}\n\n/**\n * Returns the plural form index for the given domain and value.\n *\n * @param {string} domain Domain on which to calculate plural form.\n * @param {number} n Value for which plural form is to be calculated.\n *\n * @return {number} Plural form index.\n */\nTannin.prototype.getPluralForm = function( domain, n ) {\n\tvar getPluralForm = this.pluralForms[ domain ],\n\t\tconfig, plural, pf;\n\n\tif ( ! getPluralForm ) {\n\t\tconfig = this.data[ domain ][ '' ];\n\n\t\tpf = (\n\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t// @ts-ignore\n\t\t\tconfig.plural_forms\n\t\t);\n\n\t\tif ( typeof pf !== 'function' ) {\n\t\t\tplural = getPluralExpression(\n\t\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t\t// @ts-ignore\n\t\t\t\tconfig.plural_forms\n\t\t\t);\n\n\t\t\tpf = pluralForms( plural );\n\t\t}\n\n\t\tgetPluralForm = this.pluralForms[ domain ] = pf;\n\t}\n\n\treturn getPluralForm( n );\n};\n\n/**\n * Translate a string.\n *\n * @param {string} domain Translation domain.\n * @param {string|void} context Context distinguishing terms of the same name.\n * @param {string} singular Primary key for translation lookup.\n * @param {string=} plural Fallback value used for non-zero plural\n * form index.\n * @param {number=} n Value to use in calculating plural form.\n *\n * @return {string} Translated string.\n */\nTannin.prototype.dcnpgettext = function( domain, context, singular, plural, n ) {\n\tvar index, key, entry;\n\n\tif ( n === undefined ) {\n\t\t// Default to singular.\n\t\tindex = 0;\n\t} else {\n\t\t// Find index by evaluating plural form for value.\n\t\tindex = this.getPluralForm( domain, n );\n\t}\n\n\tkey = singular;\n\n\t// If provided, context is prepended to key with delimiter.\n\tif ( context ) {\n\t\tkey = context + this.options.contextDelimiter + singular;\n\t}\n\n\tentry = this.data[ domain ][ key ];\n\n\t// Verify not only that entry exists, but that the intended index is within\n\t// range and non-empty.\n\tif ( entry && entry[ index ] ) {\n\t\treturn entry[ index ];\n\t}\n\n\tif ( this.options.onMissingKey ) {\n\t\tthis.options.onMissingKey( singular, domain );\n\t}\n\n\t// If entry not found, fall back to singular vs. plural with zero index\n\t// representing the singular value.\n\treturn index === 0 ? singular : plural;\n};\n","import apiFetch from '@wordpress/api-fetch';\nimport { useState, useEffect } from '@wordpress/element';\n\nconst useHasSeenSellerCelebrationModal = () => {\n\tconst [ hasSeenSellerCelebrationModal, setHasSeenSellerCelebrationModal ] = useState( '' );\n\n\tuseEffect( () => {\n\t\tfetchHasSeenSellerCelebrationModal();\n\t} );\n\n\tfunction fetchHasSeenSellerCelebrationModal() {\n\t\tapiFetch( { path: '/wpcom/v2/block-editor/has-seen-seller-celebration-modal' } )\n\t\t\t.then( ( result ) =>\n\t\t\t\tsetHasSeenSellerCelebrationModal( result.has_seen_seller_celebration_modal )\n\t\t\t)\n\t\t\t.catch( () => setHasSeenSellerCelebrationModal( false ) );\n\t}\n\n\tfunction updateHasSeenSellerCelebrationModal( value ) {\n\t\tapiFetch( {\n\t\t\tmethod: 'PUT',\n\t\t\tpath: '/wpcom/v2/block-editor/has-seen-seller-celebration-modal',\n\t\t\tdata: { has_seen_seller_celebration_modal: value },\n\t\t} ).finally( () => {\n\t\t\tsetHasSeenSellerCelebrationModal( value );\n\t\t} );\n\t}\n\n\treturn { hasSeenSellerCelebrationModal, updateHasSeenSellerCelebrationModal };\n};\nexport default useHasSeenSellerCelebrationModal;\n","import apiFetch from '@wordpress/api-fetch';\nimport { useState, useEffect, useCallback } from '@wordpress/element';\n\nconst useSiteIntent = () => {\n\tconst [ siteIntent, setSiteIntent ] = useState( '' );\n\n\tconst fetchSiteIntent = useCallback( () => {\n\t\tapiFetch( { path: '/wpcom/v2/site-intent' } )\n\t\t\t.then( ( result ) => setSiteIntent( result.site_intent ) )\n\t\t\t.catch( () => setSiteIntent( '' ) );\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tfetchSiteIntent();\n\t}, [ fetchSiteIntent ] );\n\treturn siteIntent;\n};\nexport default useSiteIntent;\n","import { SiteDetails } from '@automattic/data-stores/src/site';\nimport { SiteDetailsPlan } from '@automattic/launch/src/stores';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useCallback } from 'react';\nimport request from 'wpcom-proxy-request';\n\nconst useSitePlan = ( siteIdOrSlug: string | number ) => {\n\tconst [ sitePlan, setSitePlan ] = useState( {} as SiteDetailsPlan );\n\n\tconst fetchSite = useCallback( async () => {\n\t\tconst siteObj: SiteDetails = await request( {\n\t\t\tpath: `/sites/${ siteIdOrSlug }?http_envelope=1`,\n\t\t\tapiVersion: '1.1',\n\t\t} );\n\t\tif ( siteObj?.plan ) {\n\t\t\tsetSitePlan( siteObj.plan );\n\t\t}\n\t}, [ siteIdOrSlug ] );\n\n\tuseEffect( () => {\n\t\tfetchSite();\n\t}, [ fetchSite ] );\n\n\treturn sitePlan;\n};\nexport default useSitePlan;\n","/*** THIS MUST BE THE FIRST THING EVALUATED IN THIS SCRIPT *****/\nimport './public-path';\n\n/* eslint-disable wpcalypso/jsx-classname-namespace */\n\nimport { LocaleProvider, i18nDefaultLocaleSlug } from '@automattic/i18n-utils';\nimport { Guide, GuidePage } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect, useState } from '@wordpress/element';\nimport { registerPlugin } from '@wordpress/plugins';\nimport { getQueryArg } from '@wordpress/url';\nimport DraftPostModal from './draft-post-modal';\nimport PostPublishedModal from './post-published-modal';\nimport PurchaseNotice from './purchase-notice';\nimport SellerCelebrationModal from './seller-celebration-modal';\nimport { DEFAULT_VARIANT, BLANK_CANVAS_VARIANT } from './store';\nimport WpcomNux from './welcome-modal/wpcom-nux';\nimport LaunchWpcomWelcomeTour from './welcome-tour/tour-launch';\n\nfunction WelcomeTour() {\n\tconst [ showDraftPostModal ] = useState(\n\t\tgetQueryArg( window.location.href, 'showDraftPostModal' )\n\t);\n\n\tconst { show, isLoaded, variant, isManuallyOpened, isNewPageLayoutModalOpen } = useSelect(\n\t\t( select ) => {\n\t\t\tconst welcomeGuideStoreSelect = select( 'automattic/wpcom-welcome-guide' );\n\t\t\tconst starterPageLayoutsStoreSelect = select( 'automattic/starter-page-layouts' );\n\t\t\treturn {\n\t\t\t\tshow: welcomeGuideStoreSelect.isWelcomeGuideShown(),\n\t\t\t\tisLoaded: welcomeGuideStoreSelect.isWelcomeGuideStatusLoaded(),\n\t\t\t\tvariant: welcomeGuideStoreSelect.getWelcomeGuideVariant(),\n\t\t\t\tisManuallyOpened: welcomeGuideStoreSelect.isWelcomeGuideManuallyOpened(),\n\t\t\t\tisNewPageLayoutModalOpen: starterPageLayoutsStoreSelect?.isOpen(), // Handle the case where SPT is not initalized.\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst setOpenState = useDispatch( 'automattic/starter-page-layouts' )?.setOpenState;\n\n\tconst { fetchWelcomeGuideStatus } = useDispatch( 'automattic/wpcom-welcome-guide' );\n\n\t// On mount check if the WPCOM welcome guide status exists in state (from local storage), otherwise fetch it from the API.\n\tuseEffect( () => {\n\t\tif ( ! isLoaded ) {\n\t\t\tfetchWelcomeGuideStatus();\n\t\t}\n\t}, [ fetchWelcomeGuideStatus, isLoaded ] );\n\n\tif ( ! show || isNewPageLayoutModalOpen ) {\n\t\treturn null;\n\t}\n\n\t// Open patterns panel before Welcome Tour if necessary (e.g. when using Blank Canvas theme)\n\t// Do this only when Welcome Tour is not manually opened.\n\t// NOTE: at the moment, 'starter-page-templates' assets are not loaded on /site-editor/ page so 'setOpenState' may be undefined\n\tif ( variant === BLANK_CANVAS_VARIANT && ! isManuallyOpened && setOpenState ) {\n\t\tsetOpenState( 'OPEN_FOR_BLANK_CANVAS' );\n\t\treturn null;\n\t}\n\n\tif ( variant === DEFAULT_VARIANT ) {\n\t\treturn (\n\t\t\t<LocaleProvider localeSlug={ window.wpcomBlockEditorNuxLocale ?? i18nDefaultLocaleSlug }>\n\t\t\t\t{ showDraftPostModal ? <DraftPostModal /> : <LaunchWpcomWelcomeTour /> }\n\t\t\t</LocaleProvider>\n\t\t);\n\t}\n\n\t// This case is redundant now and it will be cleaned up in a follow-up PR\n\tif ( variant === 'modal' && Guide && GuidePage ) {\n\t\treturn <WpcomNux />;\n\t}\n\n\treturn null;\n}\n\nregisterPlugin( 'wpcom-block-editor-nux', {\n\trender: () => (\n\t\t<>\n\t\t\t<WelcomeTour />\n\t\t\t<PostPublishedModal />\n\t\t\t<SellerCelebrationModal />\n\t\t\t<PurchaseNotice />\n\t\t</>\n\t),\n} );\n","import { select, dispatch, subscribe } from '@wordpress/data';\n\nimport '@wordpress/nux'; //ensure nux store loads\n\n// Disable nux and welcome guide features from core.\nconst unsubscribe = subscribe( () => {\n\tdispatch( 'core/nux' ).disableTips();\n\tif ( select( 'core/edit-post' )?.isFeatureActive( 'welcomeGuide' ) ) {\n\t\tdispatch( 'core/edit-post' ).toggleFeature( 'welcomeGuide' );\n\t\tunsubscribe();\n\t}\n\tif ( select( 'core/edit-site' )?.isFeatureActive( 'welcomeGuide' ) ) {\n\t\tdispatch( 'core/edit-site' ).toggleFeature( 'welcomeGuide' );\n\t\tunsubscribe();\n\t}\n} );\n\n// Listen for these features being triggered to call dotcom welcome guide instead.\n// Note migration of areTipsEnabled: https://github.com/WordPress/gutenberg/blob/5c3a32dabe4393c45f7fe6ac5e4d78aebd5ee274/packages/data/src/plugins/persistence/index.js#L269\nsubscribe( () => {\n\tif ( select( 'core/nux' ).areTipsEnabled() ) {\n\t\tdispatch( 'core/nux' ).disableTips();\n\t\tdispatch( 'automattic/wpcom-welcome-guide' ).setShowWelcomeGuide( true );\n\t}\n\tif ( select( 'core/edit-post' )?.isFeatureActive( 'welcomeGuide' ) ) {\n\t\tdispatch( 'core/edit-post' ).toggleFeature( 'welcomeGuide' );\n\t\t// On mounting, the welcomeGuide feature is turned on by default. This opens the welcome guide despite `welcomeGuideStatus` value.\n\t\t// This check ensures that we only listen to `welcomeGuide` changes if the welcomeGuideStatus value is loaded and respected\n\t\tif ( select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideStatusLoaded() ) {\n\t\t\tdispatch( 'automattic/wpcom-welcome-guide' ).setShowWelcomeGuide( true, {\n\t\t\t\topenedManually: true,\n\t\t\t} );\n\t\t}\n\t}\n\tif ( select( 'core/edit-site' )?.isFeatureActive( 'welcomeGuide' ) ) {\n\t\tdispatch( 'core/edit-site' ).toggleFeature( 'welcomeGuide' );\n\t\tif ( select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideStatusLoaded() ) {\n\t\t\tdispatch( 'automattic/wpcom-welcome-guide' ).setShowWelcomeGuide( true, {\n\t\t\t\topenedManually: true,\n\t\t\t} );\n\t\t}\n\t}\n} );\n","import { recordTracksEvent } from '@automattic/calypso-analytics';\nimport { Button } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { doAction, hasAction } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\nimport NuxModal from '../nux-modal';\nimport draftPostImage from './images/draft-post.svg';\nimport './style.scss';\n\nconst CLOSE_EDITOR_ACTION = 'a8c.wpcom-block-editor.closeEditor';\n\nconst DraftPostModal = () => {\n\tconst siteId = window._currentSiteId;\n\tconst primaryDomain = useSelect( ( select ) =>\n\t\tselect( 'automattic/site' ).getPrimarySiteDomain( siteId )\n\t);\n\n\tconst homeUrl = `/home/${ primaryDomain?.domain || window.location.hostname }`;\n\tconst [ isOpen, setIsOpen ] = useState( true );\n\tconst closeModal = () => setIsOpen( false );\n\tconst closeEditor = () => {\n\t\tif ( hasAction( CLOSE_EDITOR_ACTION ) ) {\n\t\t\tdoAction( CLOSE_EDITOR_ACTION, homeUrl );\n\t\t} else {\n\t\t\twindow.location.href = `https://wordpress.com${ homeUrl }`;\n\t\t}\n\t};\n\n\treturn (\n\t\t<NuxModal\n\t\t\tisOpen={ isOpen }\n\t\t\tclassName=\"wpcom-block-editor-draft-post-modal\"\n\t\t\ttitle={ __( 'Write your first post', 'full-site-editing' ) }\n\t\t\tdescription={ __(\n\t\t\t\t'It’s time to flex those writing muscles and start drafting your first post!',\n\t\t\t\t'full-site-editing'\n\t\t\t) }\n\t\t\timageSrc={ draftPostImage }\n\t\t\tactionButtons={\n\t\t\t\t<>\n\t\t\t\t\t<Button isPrimary onClick={ closeModal }>\n\t\t\t\t\t\t{ __( 'Start writing', 'full-site-editing' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button isSecondary onClick={ closeEditor }>\n\t\t\t\t\t\t{ __( \"I'm not ready\", 'full-site-editing' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</>\n\t\t\t}\n\t\t\tonRequestClose={ closeModal }\n\t\t\tonOpen={ () => recordTracksEvent( 'calypso_editor_wpcom_draft_post_modal_show' ) }\n\t\t/>\n\t);\n};\n\nexport default DraftPostModal;\n","import { Modal } from '@wordpress/components';\nimport { useEffect, useRef } from '@wordpress/element';\nimport classnames from 'classnames';\nimport React from 'react';\nimport './style.scss';\n\ninterface Props {\n\tisOpen: boolean;\n\tclassName?: string;\n\ttitle: string;\n\tdescription: string;\n\timageSrc: string;\n\tactionButtons: React.ReactElement;\n\tonRequestClose: () => void;\n\tonOpen?: () => void;\n}\n\nconst NuxModal: React.FC< Props > = ( {\n\tisOpen,\n\tclassName,\n\ttitle,\n\tdescription,\n\timageSrc,\n\tactionButtons,\n\tonRequestClose,\n\tonOpen,\n} ) => {\n\tconst prevIsOpen = useRef< boolean | null >( null );\n\n\tuseEffect( () => {\n\t\tif ( ! prevIsOpen.current && isOpen ) {\n\t\t\tonOpen?.();\n\t\t}\n\n\t\tprevIsOpen.current = isOpen;\n\t}, [ prevIsOpen, isOpen, onOpen ] );\n\n\tif ( ! isOpen ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName={ classnames( 'wpcom-block-editor-nux-modal', className ) }\n\t\t\topen={ isOpen }\n\t\t\ttitle=\"\"\n\t\t\tonRequestClose={ onRequestClose }\n\t\t>\n\t\t\t<div className=\"wpcom-block-editor-nux-modal__image-container\">\n\t\t\t\t<img src={ imageSrc } alt={ title } />\n\t\t\t</div>\n\t\t\t<h1 className=\"wpcom-block-editor-nux-modal__title\">{ title }</h1>\n\t\t\t<p className=\"wpcom-block-editor-nux-modal__description\">{ description }</p>\n\t\t\t<div className=\"wpcom-block-editor-nux-modal__buttons\">{ actionButtons }</div>\n\t\t</Modal>\n\t);\n};\n\nexport default NuxModal;\n","import { recordTracksEvent } from '@automattic/calypso-analytics';\nimport { Button } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport React from 'react';\nimport NuxModal from '../nux-modal';\nimport postPublishedImage from './images/post-published.svg';\n\nimport './style.scss';\n\n/**\n * Show the first post publish modal\n */\nconst PostPublishedModal: React.FC = () => {\n\tconst { link } = useSelect( ( select ) => select( 'core/editor' ).getCurrentPost() );\n\tconst postType = useSelect( ( select ) => select( 'core/editor' ).getCurrentPostType() );\n\n\tconst isCurrentPostPublished = useSelect( ( select ) =>\n\t\tselect( 'core/editor' ).isCurrentPostPublished()\n\t);\n\tconst previousIsCurrentPostPublished = useRef( isCurrentPostPublished );\n\tconst shouldShowFirstPostPublishedModal = useSelect( ( select ) =>\n\t\tselect( 'automattic/wpcom-welcome-guide' ).getShouldShowFirstPostPublishedModal()\n\t);\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\tconst closeModal = () => setIsOpen( false );\n\tconst { fetchShouldShowFirstPostPublishedModal, setShouldShowFirstPostPublishedModal } =\n\t\tuseDispatch( 'automattic/wpcom-welcome-guide' );\n\n\tuseEffect( () => {\n\t\tfetchShouldShowFirstPostPublishedModal();\n\t}, [ fetchShouldShowFirstPostPublishedModal ] );\n\tuseEffect( () => {\n\t\t// If the user is set to see the first post modal and current post status changes to publish,\n\t\t// open the post publish modal\n\t\tif (\n\t\t\tshouldShowFirstPostPublishedModal &&\n\t\t\t! previousIsCurrentPostPublished.current &&\n\t\t\tisCurrentPostPublished &&\n\t\t\tpostType === 'post'\n\t\t) {\n\t\t\tpreviousIsCurrentPostPublished.current = isCurrentPostPublished;\n\t\t\tsetShouldShowFirstPostPublishedModal( false );\n\n\t\t\t// When the post published panel shows, it is focused automatically.\n\t\t\t// Thus, we need to delay open the modal so that the modal would not be close immediately\n\t\t\t// because the outside of modal is focused\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tsetIsOpen( true );\n\t\t\t} );\n\t\t}\n\t}, [\n\t\tpostType,\n\t\tshouldShowFirstPostPublishedModal,\n\t\tisCurrentPostPublished,\n\t\tsetShouldShowFirstPostPublishedModal,\n\t] );\n\n\tconst handleClick = ( event: React.MouseEvent ) => {\n\t\tevent.preventDefault();\n\t\t( window.top as Window ).location.href = link;\n\t};\n\n\treturn (\n\t\t<NuxModal\n\t\t\tisOpen={ isOpen }\n\t\t\tclassName=\"wpcom-block-editor-post-published-modal\"\n\t\t\ttitle={ __( 'Your first post is published!', 'full-site-editing' ) }\n\t\t\tdescription={ __(\n\t\t\t\t'Congratulations! You did it. View your post to see how it will look on your site.',\n\t\t\t\t'full-site-editing'\n\t\t\t) }\n\t\t\timageSrc={ postPublishedImage }\n\t\t\tactionButtons={\n\t\t\t\t<Button isPrimary onClick={ handleClick }>\n\t\t\t\t\t{ __( 'View Post', 'full-site-editing' ) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\tonRequestClose={ closeModal }\n\t\t\tonOpen={ () => recordTracksEvent( 'calypso_editor_wpcom_first_post_published_modal_show' ) }\n\t\t/>\n\t);\n};\n\nexport default PostPublishedModal;\n","/* exported __webpack_public_path__ */\n/* global __webpack_public_path__ */\n\n/**\n * Dynamically set WebPack's publicPath so that split assets can be found.\n *\n * @see https://webpack.js.org/guides/public-path/#on-the-fly\n */\nif ( typeof window === 'object' && window.wpcomBlockEditorNuxAssetsUrl ) {\n\t// eslint-disable-next-line no-global-assign\n\t__webpack_public_path__ = window.wpcomBlockEditorNuxAssetsUrl;\n}\n","import { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useEffect, useState } from 'react';\nimport './style.scss';\n\nfunction PurchaseNotice() {\n\tconst [ hasPaymentNotice, setHasPaymentNotice ] = useState( false );\n\tconst { createNotice } = useDispatch( noticesStore );\n\n\tuseEffect( () => {\n\t\tconst noticePattern = /[&?]notice=([\\w_-]+)/;\n\t\tconst match = noticePattern.exec( document.location.search );\n\t\tconst notice = match && match[ 1 ];\n\t\tif ( 'purchase-success' === notice && hasPaymentNotice === false ) {\n\t\t\tsetHasPaymentNotice( true );\n\t\t\tcreateNotice(\n\t\t\t\t'info',\n\t\t\t\t__(\n\t\t\t\t\t'Welcome to the Pro plan! Premium blocks are now available to use.',\n\t\t\t\t\t'full-site-editing'\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tisDismissible: true,\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn null;\n}\n\nexport default PurchaseNotice;\n","import { recordTracksEvent } from '@automattic/calypso-analytics';\nimport { Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useRef, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport useHasSeenSellerCelebrationModal from '../../../dotcom-fse/lib/seller-celebration-modal/use-has-seen-seller-celebration-modal';\nimport useSiteIntent from '../../../dotcom-fse/lib/site-intent/use-site-intent';\nimport NuxModal from '../nux-modal';\nimport contentSubmittedImage from './images/product-published.svg';\nimport './style.scss';\n\n/**\n * Show the seller celebration modal\n */\nconst SellerCelebrationModal = () => {\n\tconst { addEntities } = useDispatch( 'core' );\n\n\tuseEffect( () => {\n\t\t// @TODO - not sure if I actually need this; need to test with it removed.\n\t\t// Teach core data about the status entity so we can use selectors like `getEntityRecords()`\n\t\taddEntities( [\n\t\t\t{\n\t\t\t\tbaseURL: '/wp/v2/statuses',\n\t\t\t\tkey: 'slug',\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'status',\n\t\t\t\tplural: 'statuses',\n\t\t\t},\n\t\t] );\n\t\t// Only register entity once\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\t// conditions to show:\n\t// - user just finished saving (check)\n\t// - editor has not yet displayed modal once (check)\n\t// - user is a seller (check)\n\t// - user has not saved site before\n\t// - content includes product block (check)\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ hasDisplayedModal, setHasDisplayedModal ] = useState( false );\n\tconst isSiteEditor = useSelect( ( select ) => !! select( 'core/edit-site' ) );\n\tconst previousIsEditorSaving = useRef( false );\n\tconst { isEditorSaving, hasPaymentsBlock, linkUrl } = useSelect( ( select ) => {\n\t\tif ( isSiteEditor ) {\n\t\t\tconst isSavingSite = select( 'core' ).isSavingEntityRecord( 'root', 'site' );\n\t\t\tconst page = select( 'core/edit-site' ).getPage();\n\t\t\tconst pageId = parseInt( page?.context?.postId );\n\t\t\tconst isSavingEntity = select( 'core' ).isSavingEntityRecord( 'postType', 'page', pageId );\n\t\t\tconst pageEntity = select( 'core' ).getEntityRecord( 'postType', 'page', pageId );\n\t\t\tconst paymentsBlock =\n\t\t\t\tpageEntity?.content?.raw?.includes( '<!-- wp:jetpack/recurring-payments -->' ) ?? false;\n\t\t\treturn {\n\t\t\t\tisEditorSaving: isSavingSite || isSavingEntity,\n\t\t\t\thasPaymentsBlock: paymentsBlock,\n\t\t\t\tlinkUrl: pageEntity?.link,\n\t\t\t};\n\t\t}\n\t\tconst currentPost = select( 'core/editor' ).getCurrentPost();\n\t\tconst isSavingEntity = select( 'core' ).isSavingEntityRecord(\n\t\t\t'postType',\n\t\t\tcurrentPost?.type,\n\t\t\tcurrentPost?.id\n\t\t);\n\t\tconst globalBlockCount = select( 'core/block-editor' ).getGlobalBlockCount(\n\t\t\t'jetpack/recurring-payments'\n\t\t);\n\t\treturn {\n\t\t\tisEditorSaving: isSavingEntity,\n\t\t\thasPaymentsBlock: globalBlockCount > 0,\n\t\t\tlinkUrl: currentPost.link,\n\t\t};\n\t} );\n\tconst intent = useSiteIntent();\n\tconst { hasSeenSellerCelebrationModal, updateHasSeenSellerCelebrationModal } =\n\t\tuseHasSeenSellerCelebrationModal();\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! isEditorSaving &&\n\t\t\tpreviousIsEditorSaving.current &&\n\t\t\t! hasDisplayedModal &&\n\t\t\tintent === 'sell' &&\n\t\t\thasPaymentsBlock &&\n\t\t\t! hasSeenSellerCelebrationModal\n\t\t) {\n\t\t\tsetIsModalOpen( true );\n\t\t\tsetHasDisplayedModal( true );\n\t\t\tupdateHasSeenSellerCelebrationModal( true );\n\t\t}\n\t\tpreviousIsEditorSaving.current = isEditorSaving;\n\t}, [\n\t\tisEditorSaving,\n\t\thasDisplayedModal,\n\t\tintent,\n\t\thasPaymentsBlock,\n\t\thasSeenSellerCelebrationModal,\n\t\tupdateHasSeenSellerCelebrationModal,\n\t] );\n\n\t// if save state has changed and was saving on last render\n\t// then it has finished saving\n\t// open modal if content has sell block,\n\n\tconst closeModal = () => setIsModalOpen( false );\n\treturn (\n\t\t<NuxModal\n\t\t\tisOpen={ isModalOpen }\n\t\t\tclassName=\"wpcom-site-editor-seller-celebration-modal\"\n\t\t\ttitle={ __( \"You've added your first product!\", 'full-site-editing' ) }\n\t\t\tdescription={ __(\n\t\t\t\t'Preview your product on your site before launching and sharing with others.',\n\t\t\t\t'full-site-editing'\n\t\t\t) }\n\t\t\timageSrc={ contentSubmittedImage }\n\t\t\tactionButtons={\n\t\t\t\t<>\n\t\t\t\t\t<Button onClick={ closeModal }>{ __( 'Continue editing', 'full-site-editing' ) }</Button>\n\t\t\t\t\t<Button isPrimary href={ linkUrl } target=\"__blank\" rel=\"noopener noreferrer\">\n\t\t\t\t\t\t{ __( 'View your product', 'full-site-editing' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</>\n\t\t\t}\n\t\t\tonRequestClose={ closeModal }\n\t\t\tonOpen={ () => recordTracksEvent( 'calypso_editor_wpcom_seller_celebration_modal_show' ) }\n\t\t/>\n\t);\n};\n\nexport default SellerCelebrationModal;\n","import apiFetch from '@wordpress/api-fetch';\nimport { combineReducers, registerStore } from '@wordpress/data';\nimport { apiFetch as apiFetchControls, controls } from '@wordpress/data-controls';\n\nimport 'a8c-fse-common-data-stores';\n\nexport const DEFAULT_VARIANT = 'tour';\nexport const BLANK_CANVAS_VARIANT = 'blank-canvas-tour';\n\nconst showWelcomeGuideReducer = ( state = undefined, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS':\n\t\t\treturn action.response.show_welcome_guide;\n\t\tcase 'WPCOM_WELCOME_GUIDE_SHOW_SET':\n\t\t\treturn action.show;\n\t\tcase 'WPCOM_WELCOME_GUIDE_RESET_STORE':\n\t\t\treturn undefined;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nconst welcomeGuideManuallyOpenedReducer = ( state = false, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'WPCOM_WELCOME_GUIDE_SHOW_SET':\n\t\t\tif ( typeof action.openedManually !== 'undefined' ) {\n\t\t\t\treturn action.openedManually;\n\t\t\t}\n\t\t\treturn state;\n\n\t\tcase 'WPCOM_WELCOME_GUIDE_RESET_STORE':\n\t\t\treturn false;\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\n// TODO: next PR convert file to Typescript to ensure control of tourRating values: null, 'thumbs-up' 'thumbs-down'\nconst tourRatingReducer = ( state = undefined, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'WPCOM_WELCOME_GUIDE_TOUR_RATING_SET':\n\t\t\treturn action.tourRating;\n\t\tcase 'WPCOM_WELCOME_GUIDE_RESET_STORE':\n\t\t\treturn undefined;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nconst welcomeGuideVariantReducer = ( state = DEFAULT_VARIANT, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS':\n\t\t\treturn action.response.variant;\n\t\tcase 'WPCOM_HAS_USED_PATTERNS_MODAL':\n\t\t\treturn state === BLANK_CANVAS_VARIANT ? DEFAULT_VARIANT : state;\n\t\tcase 'WPCOM_WELCOME_GUIDE_RESET_STORE':\n\t\t\treturn DEFAULT_VARIANT;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nconst shouldShowFirstPostPublishedModalReducer = ( state = false, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL':\n\t\t\treturn action.value;\n\t\tcase 'WPCOM_WELCOME_GUIDE_RESET_STORE':\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nconst reducer = combineReducers( {\n\twelcomeGuideManuallyOpened: welcomeGuideManuallyOpenedReducer,\n\tshowWelcomeGuide: showWelcomeGuideReducer,\n\ttourRating: tourRatingReducer,\n\twelcomeGuideVariant: welcomeGuideVariantReducer,\n\tshouldShowFirstPostPublishedModal: shouldShowFirstPostPublishedModalReducer,\n} );\n\nconst actions = {\n\t*fetchWelcomeGuideStatus() {\n\t\tconst response = yield apiFetchControls( { path: '/wpcom/v2/block-editor/nux' } );\n\n\t\treturn {\n\t\t\ttype: 'WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS',\n\t\t\tresponse,\n\t\t};\n\t},\n\t*fetchShouldShowFirstPostPublishedModal() {\n\t\tconst response = yield apiFetchControls( {\n\t\t\tpath: '/wpcom/v2/block-editor/should-show-first-post-published-modal',\n\t\t} );\n\n\t\treturn {\n\t\t\ttype: 'WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL',\n\t\t\tvalue: response.should_show_first_post_published_modal,\n\t\t};\n\t},\n\tsetShowWelcomeGuide: ( show, { openedManually, onlyLocal } = {} ) => {\n\t\tif ( ! onlyLocal ) {\n\t\t\tapiFetch( {\n\t\t\t\tpath: '/wpcom/v2/block-editor/nux',\n\t\t\t\tmethod: 'POST',\n\t\t\t\tdata: { show_welcome_guide: show },\n\t\t\t} );\n\t\t}\n\n\t\treturn {\n\t\t\ttype: 'WPCOM_WELCOME_GUIDE_SHOW_SET',\n\t\t\tshow,\n\t\t\topenedManually,\n\t\t};\n\t},\n\tsetTourRating: ( tourRating ) => {\n\t\treturn { type: 'WPCOM_WELCOME_GUIDE_TOUR_RATING_SET', tourRating };\n\t},\n\tsetUsedPageOrPatternsModal: () => {\n\t\treturn { type: 'WPCOM_HAS_USED_PATTERNS_MODAL' };\n\t},\n\tsetShouldShowFirstPostPublishedModal: ( value ) => {\n\t\treturn { type: 'WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL', value };\n\t},\n\t// The `resetStore` action is only used for testing to reset the\n\t// store inbetween tests.\n\tresetStore: () => ( {\n\t\ttype: 'WPCOM_WELCOME_GUIDE_RESET_STORE',\n\t} ),\n};\n\nconst selectors = {\n\tisWelcomeGuideManuallyOpened: ( state ) => state.welcomeGuideManuallyOpened,\n\tisWelcomeGuideShown: ( state ) => !! state.showWelcomeGuide,\n\tisWelcomeGuideStatusLoaded: ( state ) => typeof state.showWelcomeGuide !== 'undefined',\n\tgetTourRating: ( state ) => state.tourRating,\n\t// the 'modal' variant previously used for mobile has been removed but its slug may still be persisted in local storage\n\tgetWelcomeGuideVariant: ( state ) =>\n\t\tstate.welcomeGuideVariant === 'modal' ? DEFAULT_VARIANT : state.welcomeGuideVariant,\n\tgetShouldShowFirstPostPublishedModal: ( state ) => state.shouldShowFirstPostPublishedModal,\n};\n\nexport function register() {\n\treturn registerStore( 'automattic/wpcom-welcome-guide', {\n\t\treducer,\n\t\tactions,\n\t\tselectors,\n\t\tcontrols,\n\t\tpersist: true,\n\t} );\n}\n","/* eslint-disable wpcalypso/jsx-classname-namespace */\n\nimport { recordTracksEvent } from '@automattic/calypso-analytics';\nimport { Guide, GuidePage } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport blockPickerImage from './images/block-picker.svg';\nimport editorImage from './images/editor.svg';\nimport previewImage from './images/preview.svg';\nimport privateImage from './images/private.svg';\n\nimport './style.scss';\n\nfunction WpcomNux() {\n\tconst { show, isNewPageLayoutModalOpen, isManuallyOpened } = useSelect( ( select ) => ( {\n\t\tshow: select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideShown(),\n\t\tisNewPageLayoutModalOpen:\n\t\t\tselect( 'automattic/starter-page-layouts' ) && // Handle the case where SPT is not initalized.\n\t\t\tselect( 'automattic/starter-page-layouts' ).isOpen(),\n\t\tisManuallyOpened: select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideManuallyOpened(),\n\t} ) );\n\n\tconst { setShowWelcomeGuide } = useDispatch( 'automattic/wpcom-welcome-guide' );\n\n\t// Track opening of the welcome guide\n\tuseEffect( () => {\n\t\tif ( show && ! isNewPageLayoutModalOpen ) {\n\t\t\trecordTracksEvent( 'calypso_editor_wpcom_nux_open', {\n\t\t\t\tis_gutenboarding: window.calypsoifyGutenberg?.isGutenboarding,\n\t\t\t\tis_manually_opened: isManuallyOpened,\n\t\t\t} );\n\t\t}\n\t}, [ isManuallyOpened, isNewPageLayoutModalOpen, show ] );\n\n\tif ( ! show || isNewPageLayoutModalOpen ) {\n\t\treturn null;\n\t}\n\n\tconst dismissWpcomNux = () => {\n\t\trecordTracksEvent( 'calypso_editor_wpcom_nux_dismiss', {\n\t\t\tis_gutenboarding: window.calypsoifyGutenberg?.isGutenboarding,\n\t\t} );\n\t\tsetShowWelcomeGuide( false, { openedManually: false } );\n\t};\n\n\tconst nuxPages = getWpcomNuxPages();\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"wpcom-block-editor-nux\"\n\t\t\tcontentLabel={ __( 'Welcome to your website', 'full-site-editing' ) }\n\t\t\tfinishButtonText={ __( 'Get started', 'full-site-editing' ) }\n\t\t\tonFinish={ dismissWpcomNux }\n\t\t>\n\t\t\t{ nuxPages.map( ( nuxPage, index ) => (\n\t\t\t\t<NuxPage\n\t\t\t\t\tkey={ nuxPage.heading }\n\t\t\t\t\tpageNumber={ index + 1 }\n\t\t\t\t\tisLastPage={ index === nuxPages.length - 1 }\n\t\t\t\t\t{ ...nuxPage }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Guide>\n\t);\n}\n\n/**\n * This function returns a collection of NUX slide data\n *\n * @returns { Array } a collection of <NuxPage /> props\n */\nfunction getWpcomNuxPages() {\n\treturn [\n\t\t{\n\t\t\theading: __( 'Welcome to your website', 'full-site-editing' ),\n\t\t\tdescription: __(\n\t\t\t\t'Edit your homepage, add the pages you need, and change your site’s look and feel.',\n\t\t\t\t'full-site-editing'\n\t\t\t),\n\t\t\timgSrc: editorImage,\n\t\t\talignBottom: true,\n\t\t},\n\t\t{\n\t\t\theading: __( 'Add or edit your content', 'full-site-editing' ),\n\t\t\tdescription: __(\n\t\t\t\t'Edit the placeholder content we’ve started you off with, or click the plus sign to add more content.',\n\t\t\t\t'full-site-editing'\n\t\t\t),\n\t\t\timgSrc: blockPickerImage,\n\t\t},\n\t\t{\n\t\t\theading: __( 'Preview your site as you go', 'full-site-editing' ),\n\t\t\tdescription: __(\n\t\t\t\t'As you edit your site content, click “Preview” to see your site the way your visitors will.',\n\t\t\t\t'full-site-editing'\n\t\t\t),\n\t\t\timgSrc: previewImage,\n\t\t\talignBottom: true,\n\t\t},\n\t\t{\n\t\t\theading: __( 'Hidden until you’re ready', 'full-site-editing' ),\n\t\t\tdescription: __(\n\t\t\t\t'Your site will remain hidden until launched. Click “Launch” in the toolbar to share it with the world.',\n\t\t\t\t'full-site-editing'\n\t\t\t),\n\t\t\timgSrc: privateImage,\n\t\t\talignBottom: true,\n\t\t},\n\t];\n}\n\nfunction NuxPage( { pageNumber, isLastPage, alignBottom = false, heading, description, imgSrc } ) {\n\tuseEffect( () => {\n\t\trecordTracksEvent( 'calypso_editor_wpcom_nux_slide_view', {\n\t\t\tslide_number: pageNumber,\n\t\t\tis_last_slide: isLastPage,\n\t\t\tis_gutenboarding: window.calypsoifyGutenberg?.isGutenboarding,\n\t\t} );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\treturn (\n\t\t<GuidePage className=\"wpcom-block-editor-nux__page\">\n\t\t\t<div className=\"wpcom-block-editor-nux__text\">\n\t\t\t\t<h1 className=\"wpcom-block-editor-nux__heading\">{ heading }</h1>\n\t\t\t\t<div className=\"wpcom-block-editor-nux__description\">{ description }</div>\n\t\t\t</div>\n\t\t\t<div className=\"wpcom-block-editor-nux__visual\">\n\t\t\t\t<img\n\t\t\t\t\t// Force remount so the stale image doesn't remain while new image is fetched\n\t\t\t\t\tkey={ imgSrc }\n\t\t\t\t\tsrc={ imgSrc }\n\t\t\t\t\talt=\"\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={ 'wpcom-block-editor-nux__image' + ( alignBottom ? ' align-bottom' : '' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</GuidePage>\n\t);\n}\n\nexport default WpcomNux;\n","import { recordTracksEvent } from '@automattic/calypso-analytics';\nimport { useLocale } from '@automattic/i18n-utils';\nimport { WpcomTourKit, usePrefetchTourAssets } from '@automattic/tour-kit';\nimport { isWithinBreakpoint } from '@automattic/viewport';\nimport { useDispatch, useSelect, dispatch } from '@wordpress/data';\nimport { useEffect, useMemo } from '@wordpress/element';\nimport useSiteIntent from '../../../dotcom-fse/lib/site-intent/use-site-intent';\nimport useSitePlan from '../../../dotcom-fse/lib/site-plan/use-site-plan';\nimport getTourSteps from './tour-steps';\nimport './style-tour.scss';\nimport type { WpcomConfig } from '@automattic/tour-kit';\nimport type { Rect, Placement } from '@popperjs/core';\n\nfunction LaunchWpcomWelcomeTour() {\n\tconst { show, isNewPageLayoutModalOpen, isManuallyOpened } = useSelect( ( select ) => ( {\n\t\tshow: select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideShown(),\n\t\t// Handle the case where the new page pattern modal is initialized and open\n\t\tisNewPageLayoutModalOpen:\n\t\t\tselect( 'automattic/starter-page-layouts' ) &&\n\t\t\tselect( 'automattic/starter-page-layouts' ).isOpen(),\n\t\tisManuallyOpened: select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideManuallyOpened(),\n\t} ) );\n\tconst localeSlug = useLocale();\n\n\t// Preload first card image (others preloaded after open state confirmed)\n\tusePrefetchTourAssets( [ getTourSteps( localeSlug, false )[ 0 ] ] );\n\n\tuseEffect( () => {\n\t\tif ( ! show && ! isNewPageLayoutModalOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Track opening of the Welcome Guide\n\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_open', {\n\t\t\tis_gutenboarding: window.calypsoifyGutenberg?.isGutenboarding,\n\t\t\tis_manually_opened: isManuallyOpened,\n\t\t} );\n\t}, [ isNewPageLayoutModalOpen, isManuallyOpened, show ] );\n\n\tif ( ! show || isNewPageLayoutModalOpen ) {\n\t\treturn null;\n\t}\n\n\treturn <WelcomeTour />;\n}\n\nfunction WelcomeTour() {\n\tconst sitePlan = useSitePlan( window._currentSiteId );\n\tconst intent = useSiteIntent();\n\tconst localeSlug = useLocale();\n\tconst { setShowWelcomeGuide } = useDispatch( 'automattic/wpcom-welcome-guide' );\n\tconst isGutenboarding = window.calypsoifyGutenberg?.isGutenboarding;\n\tconst isWelcomeTourNext = () => {\n\t\treturn new URLSearchParams( document.location.search ).has( 'welcome-tour-next' );\n\t};\n\tconst isSiteEditor = useSelect( ( select ) => !! select( 'core/edit-site' ) );\n\n\tconst tourSteps = getTourSteps( localeSlug, isWelcomeTourNext(), isSiteEditor );\n\n\t// Only keep Payment block step if user comes from seller simple flow\n\tif ( ! ( 'sell' === intent && sitePlan && 'ecommerce-bundle' !== sitePlan.product_slug ) ) {\n\t\tconst paymentBlockIndex = tourSteps.findIndex( ( step ) => step.slug === 'payment-block' );\n\t\ttourSteps.splice( paymentBlockIndex, 1 );\n\t}\n\tconst { isInserterOpened, isSidebarOpened, isSettingsOpened } = useSelect( ( select ) => ( {\n\t\tisInserterOpened: select( 'core/edit-post' ).isInserterOpened(),\n\t\tisSidebarOpened: select( 'automattic/block-editor-nav-sidebar' )?.isSidebarOpened() ?? false, // The sidebar store may not always be loaded.\n\t\tisSettingsOpened:\n\t\t\tselect( 'core/interface' ).getActiveComplementaryArea( 'core/edit-post' ) ===\n\t\t\t'edit-post/document',\n\t} ) );\n\n\tconst isTourMinimized =\n\t\tisSidebarOpened ||\n\t\t( isWithinBreakpoint( '<782px' ) && ( isInserterOpened || isSettingsOpened ) );\n\n\tconst tourConfig: WpcomConfig = {\n\t\tsteps: tourSteps,\n\t\tcloseHandler: ( _steps, currentStepIndex, source ) => {\n\t\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_dismiss', {\n\t\t\t\tis_gutenboarding: isGutenboarding,\n\t\t\t\tslide_number: currentStepIndex + 1,\n\t\t\t\taction: source,\n\t\t\t} );\n\t\t\tsetShowWelcomeGuide( false, { openedManually: false } );\n\t\t},\n\t\tisMinimized: isTourMinimized,\n\t\toptions: {\n\t\t\ttourRating: {\n\t\t\t\tenabled: true,\n\t\t\t\tuseTourRating: () => {\n\t\t\t\t\treturn useSelect( ( select ) =>\n\t\t\t\t\t\tselect( 'automattic/wpcom-welcome-guide' ).getTourRating()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tonTourRate: ( rating ) => {\n\t\t\t\t\tdispatch( 'automattic/wpcom-welcome-guide' ).setTourRating( rating );\n\t\t\t\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_rate', {\n\t\t\t\t\t\tthumbs_up: rating === 'thumbs-up',\n\t\t\t\t\t\tis_gutenboarding: false,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tonMinimize: ( currentStepIndex ) => {\n\t\t\t\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_minimize', {\n\t\t\t\t\t\tis_gutenboarding: isGutenboarding,\n\t\t\t\t\t\tslide_number: currentStepIndex + 1,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t\tonMaximize: ( currentStepIndex ) => {\n\t\t\t\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_maximize', {\n\t\t\t\t\t\tis_gutenboarding: isGutenboarding,\n\t\t\t\t\t\tslide_number: currentStepIndex + 1,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t\tonStepViewOnce: ( currentStepIndex ) => {\n\t\t\t\t\tconst lastStepIndex = tourSteps.length - 1;\n\t\t\t\t\tconst { heading } = tourSteps[ currentStepIndex ].meta;\n\n\t\t\t\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_slide_view', {\n\t\t\t\t\t\tslide_number: currentStepIndex + 1,\n\t\t\t\t\t\tis_last_slide: currentStepIndex === lastStepIndex,\n\t\t\t\t\t\tslide_heading: heading,\n\t\t\t\t\t\tis_gutenboarding: isGutenboarding,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t},\n\t\t\teffects: {\n\t\t\t\tspotlight: isWelcomeTourNext()\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tstyles: {\n\t\t\t\t\t\t\t\tminWidth: '50px',\n\t\t\t\t\t\t\t\tminHeight: '50px',\n\t\t\t\t\t\t\t\tborderRadius: '2px',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t }\n\t\t\t\t\t: undefined,\n\t\t\t\tarrowIndicator: false,\n\t\t\t},\n\t\t\tpopperModifiers: [\n\t\t\t\tuseMemo(\n\t\t\t\t\t() => ( {\n\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\toffset: ( { placement, reference }: { placement: Placement; reference: Rect } ) => {\n\t\t\t\t\t\t\t\tif ( placement === 'bottom' ) {\n\t\t\t\t\t\t\t\t\tconst boundary = document.querySelector( '.edit-post-header' );\n\n\t\t\t\t\t\t\t\t\tif ( ! boundary ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst boundaryRect = boundary.getBoundingClientRect();\n\t\t\t\t\t\t\t\t\tconst boundaryBottomY = boundaryRect.height + boundaryRect.y;\n\t\t\t\t\t\t\t\t\tconst referenceBottomY = reference.height + reference.y;\n\n\t\t\t\t\t\t\t\t\treturn [ 0, boundaryBottomY - referenceBottomY + 16 ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn [ 0, 0 ];\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[]\n\t\t\t\t),\n\t\t\t],\n\t\t\tclassNames: 'wpcom-editor-welcome-tour',\n\t\t\tportalParentElement: document.getElementById( 'wpwrap' ),\n\t\t},\n\t};\n\n\treturn <WpcomTourKit config={ tourConfig } />;\n}\n\nexport default LaunchWpcomWelcomeTour;\n","import { localizeUrl } from '@automattic/i18n-utils';\nimport { isMobile } from '@automattic/viewport';\nimport { ExternalLink } from '@wordpress/components';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport type { WpcomStep } from '@automattic/tour-kit';\n\ninterface TourAsset {\n\tdesktop?: { src: string; type: string };\n\tmobile?: { src: string; type: string };\n}\n\nfunction getTourAssets( key: string ): TourAsset | undefined {\n\tconst CDN_PREFIX = 'https://s0.wp.com/i/editor-welcome-tour';\n\tconst tourAssets = {\n\t\taddBlock: {\n\t\t\tdesktop: { src: `${ CDN_PREFIX }/slide-add-block.gif`, type: 'image/gif' },\n\t\t\tmobile: { src: `${ CDN_PREFIX }/slide-add-block_mobile.gif`, type: 'image/gif' },\n\t\t},\n\t\tallBlocks: { desktop: { src: `${ CDN_PREFIX }/slide-all-blocks.gif`, type: 'image/gif' } },\n\t\tfinish: { desktop: { src: `${ CDN_PREFIX }/slide-finish.png`, type: 'image/gif' } },\n\t\tmakeBold: { desktop: { src: `${ CDN_PREFIX }/slide-make-bold.gif`, type: 'image/gif' } },\n\t\tmoreOptions: {\n\t\t\tdesktop: { src: `${ CDN_PREFIX }/slide-more-options.gif`, type: 'image/gif' },\n\t\t\tmobile: { src: `${ CDN_PREFIX }/slide-more-options_mobile.gif`, type: 'image/gif' },\n\t\t},\n\t\tmoveBlock: {\n\t\t\tdesktop: { src: `${ CDN_PREFIX }/slide-move-block.gif`, type: 'image/gif' },\n\t\t\tmobile: { src: `${ CDN_PREFIX }/slide-move-block_mobile.gif`, type: 'image/gif' },\n\t\t},\n\t\tfindYourWay: {\n\t\t\tdesktop: { src: `${ CDN_PREFIX }/slide-find-your-way.gif`, type: 'image/gif' },\n\t\t},\n\t\tundo: { desktop: { src: `${ CDN_PREFIX }/slide-undo.gif`, type: 'image/gif' } },\n\t\twelcome: {\n\t\t\tdesktop: { src: `${ CDN_PREFIX }/slide-welcome.png`, type: 'image/png' },\n\t\t\tmobile: { src: `${ CDN_PREFIX }/slide-welcome_mobile.jpg`, type: 'image/jpeg' },\n\t\t},\n\t\teditYourSite: {\n\t\t\tdesktop: {\n\t\t\t\tsrc: `https://s.w.org/images/block-editor/edit-your-site.gif?1`,\n\t\t\t\ttype: 'image/gif',\n\t\t\t},\n\t\t\tmobile: {\n\t\t\t\tsrc: `https://s.w.org/images/block-editor/edit-your-site.gif?1`,\n\t\t\t\ttype: 'image/gif',\n\t\t\t},\n\t\t},\n\t} as { [ key: string ]: TourAsset };\n\n\treturn tourAssets[ key ];\n}\n\nfunction getTourSteps(\n\tlocaleSlug: string,\n\treferencePositioning = false,\n\tisSiteEditor = false\n): WpcomStep[] {\n\treturn [\n\t\t{\n\t\t\tslug: 'welcome',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Welcome to WordPress!', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t'Take this short, interactive tour to learn the fundamentals of the WordPress editor.',\n\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t),\n\t\t\t\t\tmobile: null,\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'welcome' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tslug: 'everything-is-a-block',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Everything is a block', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t'In the WordPress Editor, paragraphs, images, and videos are all blocks.',\n\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t),\n\t\t\t\t\tmobile: null,\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'allBlocks' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tslug: 'add-block',\n\t\t\t...( referencePositioning && {\n\t\t\t\treferenceElements: {\n\t\t\t\t\tmobile:\n\t\t\t\t\t\t'.edit-post-header .edit-post-header__toolbar .components-button.edit-post-header-toolbar__inserter-toggle',\n\t\t\t\t\tdesktop:\n\t\t\t\t\t\t'.edit-post-header .edit-post-header__toolbar .components-button.edit-post-header-toolbar__inserter-toggle',\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Adding a new block', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t'Click + to open the inserter. Then click the block you want to add.',\n\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t),\n\t\t\t\t\tmobile: __(\n\t\t\t\t\t\t'Tap + to open the inserter. Then tap the block you want to add.',\n\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'addBlock' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tslug: 'edit-block',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Click a block to change it', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t'Use the toolbar to change the appearance of a selected block. Try making it bold.',\n\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t),\n\t\t\t\t\tmobile: null,\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'makeBold' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tslug: 'settings',\n\t\t\t...( referencePositioning && {\n\t\t\t\treferenceElements: {\n\t\t\t\t\tmobile:\n\t\t\t\t\t\t'.edit-post-header .edit-post-header__settings .interface-pinned-items > button:nth-child(1)',\n\t\t\t\t\tdesktop:\n\t\t\t\t\t\t'.edit-post-header .edit-post-header__settings .interface-pinned-items > button:nth-child(1)',\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tmeta: {\n\t\t\t\theading: __( 'More Options', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __( 'Click the settings icon to see even more options.', 'full-site-editing' ),\n\t\t\t\t\tmobile: __( 'Tap the settings icon to see even more options.', 'full-site-editing' ),\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'moreOptions' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t...( ! isMobile()\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tslug: 'find-your-way',\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\theading: __( 'Find your way', 'full-site-editing' ),\n\t\t\t\t\t\t\tdescriptions: {\n\t\t\t\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t\t\t\t\"Use List View to see all the blocks you've added. Click and drag any block to move it around.\",\n\t\t\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tmobile: null,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\timgSrc: getTourAssets( 'findYourWay' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\t\tdesktop: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\n\t\t\t\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\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 ]\n\t\t\t: [] ),\n\t\t...( ! isMobile()\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tslug: 'undo',\n\t\t\t\t\t\t...( referencePositioning && {\n\t\t\t\t\t\t\treferenceElements: {\n\t\t\t\t\t\t\t\tdesktop:\n\t\t\t\t\t\t\t\t\t'.edit-post-header .edit-post-header__toolbar .components-button.editor-history__undo',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\theading: __( 'Undo any mistake', 'full-site-editing' ),\n\t\t\t\t\t\t\tdescriptions: {\n\t\t\t\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t\t\t\t\"Click the Undo button if you've made a mistake.\",\n\t\t\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tmobile: null,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\timgSrc: getTourAssets( 'undo' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\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 ]\n\t\t\t: [] ),\n\t\t{\n\t\t\tslug: 'drag-drop',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Drag & drop', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __( 'To move blocks around, click and drag the handle.', 'full-site-editing' ),\n\t\t\t\t\tmobile: __( 'To move blocks around, tap the up and down arrows.', 'full-site-editing' ),\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'moveBlock' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tslug: 'payment-block',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'The Payments block', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'The Payments block allows you to accept payments for one-time, monthly recurring, or annual payments on your website',\n\t\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\thref={ localizeUrl(\n\t\t\t\t\t\t\t\t\t'https://wordpress.com/support/video-tutorials-add-payments-features-to-your-site-with-our-guides/#how-to-use-the-payments-block-video',\n\t\t\t\t\t\t\t\t\tlocaleSlug\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Learn more', 'full-site-editing' ) }\n\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t\tmobile: null,\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'welcome' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t...( isSiteEditor\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tslug: 'edit-your-site',\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\theading: __( 'Edit your site', 'full-site-editing' ),\n\t\t\t\t\t\t\tdescriptions: {\n\t\t\t\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t\t\t\t'Design everything on your site - from the header right down to the footer - using blocks.',\n\t\t\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tmobile: __(\n\t\t\t\t\t\t\t\t\t'Design everything on your site - from the header right down to the footer - using blocks.',\n\t\t\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\timgSrc: getTourAssets( 'editYourSite' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\t\t\t\tmobile: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\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 ]\n\t\t\t: [] ),\n\t\t{\n\t\t\tslug: 'congratulations',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Congratulations!', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: createInterpolateElement(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\"You've learned the basics. Remember, your site is private until you <link_to_launch_site_docs>decide to launch</link_to_launch_site_docs>. View the <link_to_editor_docs>block editing docs</link_to_editor_docs> to learn more.\",\n\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink_to_launch_site_docs: (\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\thref={ localizeUrl(\n\t\t\t\t\t\t\t\t\t\t'https://wordpress.com/support/settings/privacy-settings/#launch-your-site',\n\t\t\t\t\t\t\t\t\t\tlocaleSlug\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\tlink_to_editor_docs: (\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\thref={ localizeUrl(\n\t\t\t\t\t\t\t\t\t\t'https://wordpress.com/support/wordpress-editor/',\n\t\t\t\t\t\t\t\t\t\tlocaleSlug\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\tmobile: null,\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'finish' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t];\n}\n\nexport default getTourSteps;\n","// We use this module state to track url paths submitted to recordTracksPageView\n// `lib/analytics/index.js` also reuses it for timing.record\nlet mostRecentUrlPath: string | null = null;\n\n// pathCounter is used to keep track of the order of calypso_page_view Tracks events.\nlet pathCounter = 0;\n\nif ( typeof window !== 'undefined' ) {\n\twindow.addEventListener( 'popstate', function () {\n\t\t// throw away our URL value if the user used the back/forward buttons\n\t\tmostRecentUrlPath = null;\n\t} );\n}\n\ninterface PageViewParams {\n\tlast_pageview_path_with_count: string;\n\tthis_pageview_path_with_count: string;\n}\n\nexport function getPageViewParams( urlPath: string ): PageViewParams {\n\tconst params = {\n\t\tlast_pageview_path_with_count: `${ mostRecentUrlPath }(${ pathCounter.toString() })`,\n\t\tthis_pageview_path_with_count: `${ urlPath }(${ pathCounter + 1 })`,\n\t};\n\t// Record this path.\n\tmostRecentUrlPath = urlPath;\n\tpathCounter++;\n\treturn params;\n}\n\n/**\n * Gets the url path which was set on the last call to getPageViewParams() and stored in module state\n * mostRecentUrlPath will be null if the page was refreshed or getPageViewParams() has not been called\n */\nexport function getMostRecentUrlPath(): string | null {\n\treturn mostRecentUrlPath;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { EventEmitter } from 'events';\nimport { loadScript } from '@automattic/load-script';\nimport cookie from 'cookie';\nimport { includes, omitBy, times } from 'lodash';\nimport { getPageViewParams } from './page-view-params';\nimport { getCurrentUser, setCurrentUser } from './utils/current-user';\nimport debug from './utils/debug';\nimport getDoNotTrack from './utils/do-not-track';\n\ndeclare global {\n\tinterface Window {\n\t\t_tkq: Array< Array< any > >;\n\t}\n}\ndeclare const window: undefined | ( Window & { BUILD_TIMESTAMP?: number } );\n\n/**\n * Tracks uses a bunch of special query params that should not be used as property name\n * See internal Nosara repo?\n */\nconst TRACKS_SPECIAL_PROPS_NAMES = [ 'geo', 'message', 'request', 'geocity', 'ip' ];\nconst EVENT_NAME_EXCEPTIONS = [\n\t'a8c_cookie_banner_ok',\n\t// WooCommerce Onboarding / Connection Flow.\n\t'wcadmin_storeprofiler_create_jetpack_account',\n\t'wcadmin_storeprofiler_connect_store',\n\t'wcadmin_storeprofiler_login_jetpack_account',\n\t'wcadmin_storeprofiler_payment_login',\n\t'wcadmin_storeprofiler_payment_create_account',\n\t// Checkout\n\t'calypso_checkout_switch_to_p_24',\n\t'calypso_checkout_composite_p24_submit_clicked',\n];\nlet _superProps: any; // Added to all Tracks events.\nlet _loadTracksResult = Promise.resolve(); // default value for non-BOM environments.\n\nif ( typeof document !== 'undefined' ) {\n\t_loadTracksResult = loadScript( '//stats.wp.com/w.js?63' );\n}\n\nfunction createRandomId( randomBytesLength = 9 ): string {\n\tif ( typeof window === 'undefined' ) {\n\t\treturn '';\n\t}\n\t// 9 * 4/3 = 12\n\t// this is to avoid getting padding of a random byte string when it is base64 encoded\n\tlet randomBytes: any;\n\n\tif ( window.crypto && window.crypto.getRandomValues ) {\n\t\trandomBytes = new Uint8Array( randomBytesLength );\n\t\twindow.crypto.getRandomValues( randomBytes );\n\t} else {\n\t\trandomBytes = times( randomBytesLength, () => Math.floor( Math.random() * 256 ) );\n\t}\n\n\treturn window.btoa( String.fromCharCode( ...randomBytes ) );\n}\n\nfunction getUrlParameter( name: string ): string {\n\tif ( typeof window === 'undefined' ) {\n\t\treturn '';\n\t}\n\tname = name.replace( /[[]/g, '\\\\[' ).replace( /[\\]]/g, '\\\\]' );\n\tconst regex = new RegExp( '[\\\\?&]' + name + '=([^&#]*)' );\n\tconst results = regex.exec( window.location.search );\n\treturn results === null ? '' : decodeURIComponent( results[ 1 ].replace( /\\+/g, ' ' ) );\n}\n\nfunction checkForBlockedTracks(): Promise< void > {\n\t// Proceed only after the tracks script load finished and failed.\n\t// Calling this function from `initialize` ensures current user is set.\n\t// This detects stats blocking, and identifies by `getCurrentUser()`, URL, or cookie.\n\treturn _loadTracksResult.catch( () => {\n\t\tlet _ut;\n\t\tlet _ui;\n\t\tconst currentUser = getCurrentUser();\n\t\tif ( currentUser && currentUser.ID ) {\n\t\t\t_ut = 'wpcom:user_id';\n\t\t\t_ui = currentUser.ID;\n\t\t} else {\n\t\t\t_ut = getUrlParameter( '_ut' ) || 'anon';\n\t\t\t_ui = getUrlParameter( '_ui' );\n\t\t\tif ( ! _ui ) {\n\t\t\t\tconst cookies = cookie.parse( document.cookie );\n\t\t\t\tif ( cookies.tk_ai ) {\n\t\t\t\t\t_ui = cookies.tk_ai;\n\t\t\t\t} else {\n\t\t\t\t\tconst randomIdLength = 18; // 18 * 4/3 = 24 (base64 encoded chars).\n\t\t\t\t\t_ui = createRandomId( randomIdLength );\n\t\t\t\t\tdocument.cookie = cookie.serialize( 'tk_ai', _ui );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdebug( 'Loading /nostats.js', { _ut, _ui } );\n\t\treturn loadScript(\n\t\t\t'/nostats.js?_ut=' + encodeURIComponent( _ut ) + '&_ui=' + encodeURIComponent( _ui )\n\t\t);\n\t} );\n}\n\n/**\n * Returns a promise that marks whether and when the external Tracks script loads.\n */\nexport function getTracksLoadPromise() {\n\treturn _loadTracksResult;\n}\n\nexport function pushEventToTracksQueue( args: Array< any > ) {\n\tif ( typeof window !== 'undefined' ) {\n\t\twindow._tkq = window._tkq || [];\n\t\twindow._tkq.push( args );\n\t}\n}\n\nexport const analyticsEvents: EventEmitter = new EventEmitter();\n\n/**\n * Returns the anoymous id stored in the `tk_ai` cookie\n *\n * @returns The Tracks anonymous user id\n */\nexport function getTracksAnonymousUserId(): string {\n\tconst cookies = cookie.parse( document.cookie );\n\n\treturn cookies.tk_ai;\n}\n\nexport function initializeAnalytics(\n\tcurrentUser: any | undefined,\n\tsuperProps: any\n): Promise< void > {\n\t// Update super props.\n\tif ( 'function' === typeof superProps ) {\n\t\tdebug( 'superProps', superProps );\n\t\t_superProps = superProps;\n\t}\n\n\t// Identify current user.\n\tif ( 'object' === typeof currentUser ) {\n\t\tdebug( 'identifyUser', currentUser );\n\t\tidentifyUser( currentUser );\n\t}\n\n\t// Tracks blocked?\n\tdebug( 'checkForBlockedTracks' );\n\treturn checkForBlockedTracks();\n}\n\nexport function identifyUser( userData: any ): any {\n\t// Ensure object.\n\tif ( 'object' !== typeof userData ) {\n\t\tdebug( 'Invalid userData.', userData );\n\t\treturn; // Not possible.\n\t}\n\n\t// Set current user.\n\tconst currentUser = setCurrentUser( userData );\n\tif ( ! currentUser ) {\n\t\tdebug( 'Insufficient userData.', userData );\n\t\treturn; // Not possible.\n\t}\n\n\t// Tracks user identification.\n\tdebug( 'Tracks identifyUser.', currentUser );\n\tpushEventToTracksQueue( [ 'identifyUser', currentUser.ID, currentUser.username ] );\n}\n\nexport function recordTracksEvent( eventName: string, eventProperties?: any ) {\n\teventProperties = eventProperties || {};\n\n\tif ( process.env.NODE_ENV !== 'production' && typeof console !== 'undefined' ) {\n\t\tif (\n\t\t\t! /^calypso(?:_[a-z0-9]+){2,}$/.test( eventName ) &&\n\t\t\t! includes( EVENT_NAME_EXCEPTIONS, eventName )\n\t\t) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\n\t\t\t\t'Tracks: Event `%s` will be ignored because it does not match /^calypso(?:_[a-z0-9]+){2,}$/ and is ' +\n\t\t\t\t\t'not a listed exception. Please use a compliant event name.',\n\t\t\t\teventName\n\t\t\t);\n\t\t}\n\n\t\tfor ( const key in eventProperties ) {\n\t\t\tif ( eventProperties[ key ] !== null && typeof eventProperties[ key ] === 'object' ) {\n\t\t\t\tconst errorMessage =\n\t\t\t\t\t`Tracks: Unable to record event \"${ eventName }\" because nested ` +\n\t\t\t\t\t`properties are not supported by Tracks. Check '${ key }' on`;\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( errorMessage, eventProperties );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! /^[a-z_][a-z0-9_]*$/.test( key ) ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error(\n\t\t\t\t\t'Tracks: Event `%s` will be rejected because property name `%s` does not match /^[a-z_][a-z0-9_]*$/. ' +\n\t\t\t\t\t\t'Please use a compliant property name.',\n\t\t\t\t\teventName,\n\t\t\t\t\tkey\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( TRACKS_SPECIAL_PROPS_NAMES.indexOf( key ) !== -1 ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error(\n\t\t\t\t\t\"Tracks: Event property `%s` will be overwritten because it uses one of Tracks' internal prop name: %s. \" +\n\t\t\t\t\t\t'Please use another property name.',\n\t\t\t\t\tkey,\n\t\t\t\t\tTRACKS_SPECIAL_PROPS_NAMES.join( ', ' )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tdebug( 'Record event \"%s\" called with props %o', eventName, eventProperties );\n\n\tif ( ! eventName.startsWith( 'calypso_' ) && ! includes( EVENT_NAME_EXCEPTIONS, eventName ) ) {\n\t\tdebug( '- Event name must be prefixed by \"calypso_\" or added to `EVENT_NAME_EXCEPTIONS`' );\n\t\treturn;\n\t}\n\n\tif ( _superProps ) {\n\t\tconst superProperties = _superProps( eventProperties );\n\t\teventProperties = { ...eventProperties, ...superProperties }; // assign to a new object so we don't modify the argument\n\t}\n\n\t// Remove properties that have an undefined value\n\t// This allows a caller to easily remove properties from the recorded set by setting them to undefined\n\teventProperties = omitBy( eventProperties, ( prop ) => typeof prop === 'undefined' );\n\n\tdebug( 'Recording event \"%s\" with actual props %o', eventName, eventProperties );\n\n\tpushEventToTracksQueue( [ 'recordEvent', eventName, eventProperties ] );\n\tanalyticsEvents.emit( 'record-event', eventName, eventProperties );\n}\n\nexport function recordTracksPageView( urlPath: string, params: any ) {\n\tdebug( 'Recording pageview in tracks.', urlPath, params );\n\n\tlet eventProperties = {\n\t\tdo_not_track: getDoNotTrack() ? 1 : 0,\n\t\tpath: urlPath,\n\t};\n\n\t// Add calypso build timestamp if set\n\tconst build_timestamp = typeof window !== 'undefined' && window.BUILD_TIMESTAMP;\n\tif ( build_timestamp ) {\n\t\teventProperties = Object.assign( eventProperties, { build_timestamp } );\n\t}\n\n\t// add optional path params\n\tif ( params ) {\n\t\teventProperties = Object.assign( eventProperties, params );\n\t}\n\n\t// Record all `utm` marketing parameters as event properties on the page view event\n\t// so we can analyze their performance with our analytics tools\n\tif ( typeof window !== 'undefined' && window.location ) {\n\t\tconst urlParams = new URL( window.location.href ).searchParams;\n\t\tconst utmParamEntries =\n\t\t\turlParams &&\n\t\t\tArray.from( urlParams.entries() ).filter( ( [ key ] ) => key.startsWith( 'utm_' ) );\n\t\tconst utmParams = utmParamEntries ? Object.fromEntries( utmParamEntries ) : {};\n\n\t\teventProperties = Object.assign( eventProperties, utmParams );\n\t}\n\n\trecordTracksEvent( 'calypso_page_view', eventProperties );\n}\n\nexport function recordTracksPageViewWithPageParams( urlPath: string, params?: any ) {\n\tconst pageViewParams = getPageViewParams( urlPath );\n\trecordTracksPageView( urlPath, Object.assign( params || {}, pageViewParams ) );\n}\n","import debugFactory from 'debug';\n\n/**\n * Module variables\n */\nexport default debugFactory( 'calypso:analytics' );\n","import { __, sprintf } from '@wordpress/i18n';\nimport classnames from 'classnames';\nimport { times } from 'lodash';\nimport './style.scss';\n\ninterface Props {\n\tonChange: ( page: number ) => void;\n\tactivePageIndex: number;\n\tnumberOfPages: number;\n\tclassNames?: string | string[];\n}\n\nconst PaginationControl: React.FunctionComponent< Props > = ( {\n\tactivePageIndex,\n\tnumberOfPages,\n\tonChange,\n\tclassNames,\n\tchildren,\n} ) => {\n\tconst classes = classnames( 'pagination-control', classNames );\n\n\treturn (\n\t\t<ul className={ classes } aria-label={ __( 'Pagination control' ) }>\n\t\t\t{ times( numberOfPages, ( index ) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={ `${ numberOfPages }-${ index }` }\n\t\t\t\t\taria-current={ index === activePageIndex ? 'page' : undefined }\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={ classnames( 'pagination-control__page', {\n\t\t\t\t\t\t\t'is-current': index === activePageIndex,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\tdisabled={ index === activePageIndex }\n\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t/* translators: 1: current page number 2: total number of pages */\n\t\t\t\t\t\t\t__( 'Page %1$d of %2$d' ),\n\t\t\t\t\t\t\tindex + 1,\n\t\t\t\t\t\t\tnumberOfPages\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonClick={ () => onChange( index ) }\n\t\t\t\t\t/>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t\t{ children && <li className=\"pagination-control__last-item\">{ children }</li> }\n\t\t</ul>\n\t);\n};\n\nexport default PaginationControl;\n","import I18N from './i18n';\n\nexport default new I18N();\n","import { EventEmitter } from 'events';\nimport interpolateComponents from '@automattic/interpolate-components';\nimport sprintf from '@tannin/sprintf';\nimport debugFactory from 'debug';\nimport sha1 from 'hash.js/lib/hash/sha/1';\nimport LRU from 'lru';\nimport Tannin from 'tannin';\nimport numberFormat from './number-format';\n\n/**\n * Module variables\n */\nconst debug = debugFactory( 'i18n-calypso' );\n\n/**\n * Constants\n */\nconst decimal_point_translation_key = 'number_format_decimals';\nconst thousands_sep_translation_key = 'number_format_thousands_sep';\nconst domain_key = 'messages';\n\nconst translationLookup = [\n\t// By default don't modify the options when looking up translations.\n\tfunction ( options ) {\n\t\treturn options;\n\t},\n];\n\nconst hashCache = {};\n\n// raise a console warning\nfunction warn() {\n\tif ( ! I18N.throwErrors ) {\n\t\treturn;\n\t}\n\tif ( 'undefined' !== typeof window && window.console && window.console.warn ) {\n\t\twindow.console.warn.apply( window.console, arguments );\n\t}\n}\n\n// turns Function.arguments into an array\nfunction simpleArguments( args ) {\n\treturn Array.prototype.slice.call( args );\n}\n\n/**\n * Coerce the possible arguments and normalize to a single object.\n *\n * @param {any} args - arguments passed in from `translate()`\n * @returns {object} - a single object describing translation needs\n */\nfunction normalizeTranslateArguments( args ) {\n\tconst original = args[ 0 ];\n\n\t// warn about older deprecated syntax\n\tif (\n\t\ttypeof original !== 'string' ||\n\t\targs.length > 3 ||\n\t\t( args.length > 2 && typeof args[ 1 ] === 'object' && typeof args[ 2 ] === 'object' )\n\t) {\n\t\twarn(\n\t\t\t'Deprecated Invocation: `translate()` accepts ( string, [string], [object] ). These arguments passed:',\n\t\t\tsimpleArguments( args ),\n\t\t\t'. See https://github.com/Automattic/i18n-calypso#translate-method'\n\t\t);\n\t}\n\tif ( args.length === 2 && typeof original === 'string' && typeof args[ 1 ] === 'string' ) {\n\t\twarn(\n\t\t\t'Invalid Invocation: `translate()` requires an options object for plural translations, but passed:',\n\t\t\tsimpleArguments( args )\n\t\t);\n\t}\n\n\t// options could be in position 0, 1, or 2\n\t// sending options as the first object is deprecated and will raise a warning\n\tlet options = {};\n\tfor ( let i = 0; i < args.length; i++ ) {\n\t\tif ( typeof args[ i ] === 'object' ) {\n\t\t\toptions = args[ i ];\n\t\t}\n\t}\n\n\t// `original` can be passed as first parameter or as part of the options object\n\t// though passing original as part of the options is a deprecated approach and will be removed\n\tif ( typeof original === 'string' ) {\n\t\toptions.original = original;\n\t} else if ( typeof options.original === 'object' ) {\n\t\toptions.plural = options.original.plural;\n\t\toptions.count = options.original.count;\n\t\toptions.original = options.original.single;\n\t}\n\tif ( typeof args[ 1 ] === 'string' ) {\n\t\toptions.plural = args[ 1 ];\n\t}\n\n\tif ( typeof options.original === 'undefined' ) {\n\t\tthrow new Error( 'Translate called without a `string` value as first argument.' );\n\t}\n\n\treturn options;\n}\n\n/**\n * Takes translate options object and coerces to a Tannin request to retrieve translation.\n *\n * @param {object} tannin - tannin data object\n * @param {object} options - object describing translation\n * @returns {string} - the returned translation from Tannin\n */\nfunction getTranslationFromTannin( tannin, options ) {\n\treturn tannin.dcnpgettext(\n\t\tdomain_key,\n\t\toptions.context,\n\t\toptions.original,\n\t\toptions.plural,\n\t\toptions.count\n\t);\n}\n\nfunction getTranslation( i18n, options ) {\n\tfor ( let i = translationLookup.length - 1; i >= 0; i-- ) {\n\t\tconst lookup = translationLookup[ i ]( Object.assign( {}, options ) );\n\t\tconst key = lookup.context ? lookup.context + '\\u0004' + lookup.original : lookup.original;\n\n\t\t// Only get the translation from tannin if it exists.\n\t\tif ( i18n.state.locale[ key ] ) {\n\t\t\treturn getTranslationFromTannin( i18n.state.tannin, lookup );\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction I18N() {\n\tif ( ! ( this instanceof I18N ) ) {\n\t\treturn new I18N();\n\t}\n\tthis.defaultLocaleSlug = 'en';\n\t// Tannin always needs a plural form definition, or it fails when dealing with plurals.\n\tthis.defaultPluralForms = ( n ) => ( n === 1 ? 0 : 1 );\n\tthis.state = {\n\t\tnumberFormatSettings: {},\n\t\ttannin: undefined,\n\t\tlocale: undefined,\n\t\tlocaleSlug: undefined,\n\t\tlocaleVariant: undefined,\n\t\ttextDirection: undefined,\n\t\ttranslations: LRU( { max: 100 } ),\n\t};\n\tthis.componentUpdateHooks = [];\n\tthis.translateHooks = [];\n\tthis.stateObserver = new EventEmitter();\n\t// Because the higher-order component can wrap a ton of React components,\n\t// we need to bump the number of listeners to infinity and beyond\n\t// FIXME: still valid?\n\tthis.stateObserver.setMaxListeners( 0 );\n\t// default configuration\n\tthis.configure();\n}\n\nI18N.throwErrors = false;\n\nI18N.prototype.on = function ( ...args ) {\n\tthis.stateObserver.on( ...args );\n};\n\nI18N.prototype.off = function ( ...args ) {\n\tthis.stateObserver.off( ...args );\n};\n\nI18N.prototype.emit = function ( ...args ) {\n\tthis.stateObserver.emit( ...args );\n};\n\n/**\n * Formats numbers using locale settings and/or passed options.\n *\n * @param {string|number} number to format (required)\n * @param {number|object} options Number of decimal places or options object (optional)\n * @returns {string} Formatted number as string\n */\nI18N.prototype.numberFormat = function ( number, options = {} ) {\n\tconst decimals = typeof options === 'number' ? options : options.decimals || 0;\n\tconst decPoint = options.decPoint || this.state.numberFormatSettings.decimal_point || '.';\n\tconst thousandsSep = options.thousandsSep || this.state.numberFormatSettings.thousands_sep || ',';\n\n\treturn numberFormat( number, decimals, decPoint, thousandsSep );\n};\n\nI18N.prototype.configure = function ( options ) {\n\tObject.assign( this, options || {} );\n\tthis.setLocale();\n};\n\nI18N.prototype.setLocale = function ( localeData ) {\n\tif ( localeData && localeData[ '' ] && localeData[ '' ][ 'key-hash' ] ) {\n\t\tconst keyHash = localeData[ '' ][ 'key-hash' ];\n\n\t\tconst transform = function ( string, hashLength ) {\n\t\t\tconst lookupPrefix = hashLength === false ? '' : String( hashLength );\n\t\t\tif ( typeof hashCache[ lookupPrefix + string ] !== 'undefined' ) {\n\t\t\t\treturn hashCache[ lookupPrefix + string ];\n\t\t\t}\n\t\t\tconst hash = sha1().update( string ).digest( 'hex' );\n\n\t\t\tif ( hashLength ) {\n\t\t\t\treturn ( hashCache[ lookupPrefix + string ] = hash.substr( 0, hashLength ) );\n\t\t\t}\n\n\t\t\treturn ( hashCache[ lookupPrefix + string ] = hash );\n\t\t};\n\n\t\tconst generateLookup = function ( hashLength ) {\n\t\t\treturn function ( options ) {\n\t\t\t\tif ( options.context ) {\n\t\t\t\t\toptions.original = transform(\n\t\t\t\t\t\toptions.context + String.fromCharCode( 4 ) + options.original,\n\t\t\t\t\t\thashLength\n\t\t\t\t\t);\n\t\t\t\t\tdelete options.context;\n\t\t\t\t} else {\n\t\t\t\t\toptions.original = transform( options.original, hashLength );\n\t\t\t\t}\n\n\t\t\t\treturn options;\n\t\t\t};\n\t\t};\n\n\t\tif ( keyHash.substr( 0, 4 ) === 'sha1' ) {\n\t\t\tif ( keyHash.length === 4 ) {\n\t\t\t\ttranslationLookup.push( generateLookup( false ) );\n\t\t\t} else {\n\t\t\t\tconst variableHashLengthPos = keyHash.substr( 5 ).indexOf( '-' );\n\t\t\t\tif ( variableHashLengthPos < 0 ) {\n\t\t\t\t\tconst hashLength = Number( keyHash.substr( 5 ) );\n\t\t\t\t\ttranslationLookup.push( generateLookup( hashLength ) );\n\t\t\t\t} else {\n\t\t\t\t\tconst minHashLength = Number( keyHash.substr( 5, variableHashLengthPos ) );\n\t\t\t\t\tconst maxHashLength = Number( keyHash.substr( 6 + variableHashLengthPos ) );\n\n\t\t\t\t\tfor ( let hashLength = minHashLength; hashLength <= maxHashLength; hashLength++ ) {\n\t\t\t\t\t\ttranslationLookup.push( generateLookup( hashLength ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// if localeData is not given, assumes default locale and reset\n\tif ( ! localeData || ! localeData[ '' ].localeSlug ) {\n\t\tthis.state.locale = {\n\t\t\t'': { localeSlug: this.defaultLocaleSlug, plural_forms: this.defaultPluralForms },\n\t\t};\n\t} else if ( localeData[ '' ].localeSlug === this.state.localeSlug ) {\n\t\t// Exit if same data as current (comparing references only)\n\t\tif ( localeData === this.state.locale ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// merge new data into existing one\n\t\tObject.assign( this.state.locale, localeData );\n\t} else {\n\t\tthis.state.locale = Object.assign( {}, localeData );\n\t}\n\n\tthis.state.localeSlug = this.state.locale[ '' ].localeSlug;\n\tthis.state.localeVariant = this.state.locale[ '' ].localeVariant;\n\n\t// extract the `textDirection` info (LTR or RTL) from either:\n\t// - the translation for the special string \"ltr\" (standard in Core, not present in Calypso)\n\t// - or the `momentjs_locale.textDirection` property present in Calypso translation files\n\tthis.state.textDirection =\n\t\tthis.state.locale[ 'text direction\\u0004ltr' ]?.[ 0 ] ||\n\t\tthis.state.locale[ '' ]?.momentjs_locale?.textDirection;\n\n\tthis.state.tannin = new Tannin( { [ domain_key ]: this.state.locale } );\n\n\t// Updates numberFormat preferences with settings from translations\n\tthis.state.numberFormatSettings.decimal_point = getTranslationFromTannin(\n\t\tthis.state.tannin,\n\t\tnormalizeTranslateArguments( [ decimal_point_translation_key ] )\n\t);\n\tthis.state.numberFormatSettings.thousands_sep = getTranslationFromTannin(\n\t\tthis.state.tannin,\n\t\tnormalizeTranslateArguments( [ thousands_sep_translation_key ] )\n\t);\n\n\t// If translation isn't set, define defaults.\n\tif ( this.state.numberFormatSettings.decimal_point === decimal_point_translation_key ) {\n\t\tthis.state.numberFormatSettings.decimal_point = '.';\n\t}\n\n\tif ( this.state.numberFormatSettings.thousands_sep === thousands_sep_translation_key ) {\n\t\tthis.state.numberFormatSettings.thousands_sep = ',';\n\t}\n\n\tthis.stateObserver.emit( 'change' );\n};\n\nI18N.prototype.getLocale = function () {\n\treturn this.state.locale;\n};\n\n/**\n * Get the current locale slug.\n *\n * @returns {string} The string representing the currently loaded locale\n */\nI18N.prototype.getLocaleSlug = function () {\n\treturn this.state.localeSlug;\n};\n\n/**\n * Get the current locale variant. That's set for some special locales that don't have a\n * standard ISO code, like `de_formal` or `sr_latin`.\n *\n * @returns {string|undefined} The string representing the currently loaded locale's variant\n */\nI18N.prototype.getLocaleVariant = function () {\n\treturn this.state.localeVariant;\n};\n\n/**\n * Get the current text direction, left-to-right (LTR) or right-to-left (RTL).\n *\n * @returns {boolean} `true` in case the current locale has RTL text direction\n */\nI18N.prototype.isRtl = function () {\n\treturn this.state.textDirection === 'rtl';\n};\n\n/**\n * Adds new translations to the locale data, overwriting any existing translations with a matching key.\n *\n * @param {object} localeData Locale data\n */\nI18N.prototype.addTranslations = function ( localeData ) {\n\tfor ( const prop in localeData ) {\n\t\tif ( prop !== '' ) {\n\t\t\tthis.state.tannin.data.messages[ prop ] = localeData[ prop ];\n\t\t}\n\t}\n\n\tthis.stateObserver.emit( 'change' );\n};\n\n/**\n * Checks whether the given original has a translation.\n *\n * @returns {boolean} whether a translation exists\n */\nI18N.prototype.hasTranslation = function () {\n\treturn !! getTranslation( this, normalizeTranslateArguments( arguments ) );\n};\n\n/**\n * Exposes single translation method.\n * See sibling README\n *\n * @returns {string|object} translated text or an object containing React children that can be inserted into a parent component\n */\nI18N.prototype.translate = function () {\n\tconst options = normalizeTranslateArguments( arguments );\n\n\tlet translation = getTranslation( this, options );\n\tif ( ! translation ) {\n\t\t// This purposefully calls tannin for a case where there is no translation,\n\t\t// so that tannin gives us the expected object with English text.\n\t\ttranslation = getTranslationFromTannin( this.state.tannin, options );\n\t}\n\n\t// handle any string substitution\n\tif ( options.args ) {\n\t\tconst sprintfArgs = Array.isArray( options.args ) ? options.args.slice( 0 ) : [ options.args ];\n\t\tsprintfArgs.unshift( translation );\n\t\ttry {\n\t\t\ttranslation = sprintf( ...sprintfArgs );\n\t\t} catch ( error ) {\n\t\t\tif ( ! window || ! window.console ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst errorMethod = this.throwErrors ? 'error' : 'warn';\n\t\t\tif ( typeof error !== 'string' ) {\n\t\t\t\twindow.console[ errorMethod ]( error );\n\t\t\t} else {\n\t\t\t\twindow.console[ errorMethod ]( 'i18n sprintf error:', sprintfArgs );\n\t\t\t}\n\t\t}\n\t}\n\n\t// interpolate any components\n\tif ( options.components ) {\n\t\ttranslation = interpolateComponents( {\n\t\t\tmixedString: translation,\n\t\t\tcomponents: options.components,\n\t\t\tthrowErrors: this.throwErrors,\n\t\t} );\n\t}\n\n\t// run any necessary hooks\n\tthis.translateHooks.forEach( function ( hook ) {\n\t\ttranslation = hook( translation, options );\n\t} );\n\n\treturn translation;\n};\n\n/**\n * Causes i18n to re-render all translations.\n *\n * This can be necessary if an extension makes changes that i18n is unaware of\n * and needs those changes manifested immediately (e.g. adding an important\n * translation hook, or modifying the behaviour of an existing hook).\n *\n * If at all possible, react components should try to use the more local\n * updateTranslation() function inherited from the mixin.\n */\nI18N.prototype.reRenderTranslations = function () {\n\tdebug( 'Re-rendering all translations due to external request' );\n\tthis.stateObserver.emit( 'change' );\n};\n\nI18N.prototype.registerComponentUpdateHook = function ( callback ) {\n\tthis.componentUpdateHooks.push( callback );\n};\n\nI18N.prototype.registerTranslateHook = function ( callback ) {\n\tthis.translateHooks.push( callback );\n};\n\nexport default I18N;\n","import I18NContext from './context';\nimport i18n from './default-i18n';\nimport I18N from './i18n';\nimport localize from './localize';\nimport { useRtl, withRtl } from './rtl';\nimport useTranslate from './use-translate';\n\nexport { I18N, I18NContext, localize, useRtl, withRtl, useTranslate };\nexport default i18n;\n\n// Export the default instance's properties and bound methods for convenience\n// These should be deprecated eventually, exposing only the default `i18n` instance\nexport const numberFormat = i18n.numberFormat.bind( i18n );\nexport const translate = i18n.translate.bind( i18n );\nexport const configure = i18n.configure.bind( i18n );\nexport const setLocale = i18n.setLocale.bind( i18n );\nexport const getLocale = i18n.getLocale.bind( i18n );\nexport const getLocaleSlug = i18n.getLocaleSlug.bind( i18n );\nexport const getLocaleVariant = i18n.getLocaleVariant.bind( i18n );\nexport const isRtl = i18n.isRtl.bind( i18n );\nexport const addTranslations = i18n.addTranslations.bind( i18n );\nexport const reRenderTranslations = i18n.reRenderTranslations.bind( i18n );\nexport const registerComponentUpdateHook = i18n.registerComponentUpdateHook.bind( i18n );\nexport const registerTranslateHook = i18n.registerTranslateHook.bind( i18n );\nexport const state = i18n.state;\nexport const stateObserver = i18n.stateObserver;\nexport const on = i18n.on.bind( i18n );\nexport const off = i18n.off.bind( i18n );\nexport const emit = i18n.emit.bind( i18n );\n","/*\n * Exposes number format capability\n *\n * @copyright Copyright (c) 2013 Kevin van Zonneveld (http://kvz.io) and Contributors (http://phpjs.org/authors).\n * @license See CREDITS.md\n * @see https://github.com/kvz/phpjs/blob/ffe1356af23a6f2512c84c954dd4e828e92579fa/functions/strings/number_format.js\n */\nfunction toFixedFix( n, prec ) {\n\tconst k = Math.pow( 10, prec );\n\treturn '' + ( Math.round( n * k ) / k ).toFixed( prec );\n}\n\nexport default function number_format( number, decimals, dec_point, thousands_sep ) {\n\tnumber = ( number + '' ).replace( /[^0-9+\\-Ee.]/g, '' );\n\tconst n = ! isFinite( +number ) ? 0 : +number;\n\tconst prec = ! isFinite( +decimals ) ? 0 : Math.abs( decimals );\n\tconst sep = typeof thousands_sep === 'undefined' ? ',' : thousands_sep;\n\tconst dec = typeof dec_point === 'undefined' ? '.' : dec_point;\n\tlet s = '';\n\t// Fix for IE parseFloat(0.55).toFixed(0) = 0;\n\ts = ( prec ? toFixedFix( n, prec ) : '' + Math.round( n ) ).split( '.' );\n\tif ( s[ 0 ].length > 3 ) {\n\t\ts[ 0 ] = s[ 0 ].replace( /\\B(?=(?:\\d{3})+(?!\\d))/g, sep );\n\t}\n\tif ( ( s[ 1 ] || '' ).length < prec ) {\n\t\ts[ 1 ] = s[ 1 ] || '';\n\t\ts[ 1 ] += new Array( prec - s[ 1 ].length + 1 ).join( '0' );\n\t}\n\treturn s.join( dec );\n}\n","import { createHigherOrderComponent } from '@wordpress/compose';\nimport * as i18n from '@wordpress/i18n';\nimport { createContext, useContext, useEffect, useState } from 'react';\nimport * as React from 'react';\nimport { englishLocales } from './locales';\nimport type { Locale } from './locales';\n\nexport const localeContext = createContext< string | null >( null );\n\ninterface Props {\n\tlocaleSlug: string;\n}\n\nexport const LocaleProvider: React.FC< Props > = ( { children, localeSlug } ) => (\n\t<localeContext.Provider value={ localeSlug }>{ children }</localeContext.Provider>\n);\n\n/**\n * Returns locale slug\n *\n * @param {string} locale locale to be converted e.g. \"en_US\".\n * @returns locale string e.g. \"en\"\n */\nfunction mapWpI18nLangToLocaleSlug( locale: Locale = '' ): Locale {\n\tif ( ! locale ) {\n\t\treturn '';\n\t}\n\n\tconst TARGET_LOCALES = [ 'pt_br', 'pt-br', 'zh_tw', 'zh-tw', 'zh_cn', 'zh-cn', 'zh_sg', 'zh-sg' ];\n\tconst lowerCaseLocale = locale.toLowerCase();\n\tconst formattedLocale = TARGET_LOCALES.includes( lowerCaseLocale )\n\t\t? lowerCaseLocale.replace( '_', '-' )\n\t\t: lowerCaseLocale.replace( /([-_].*)$/i, '' );\n\n\treturn formattedLocale || 'en';\n}\n\n/**\n * Get the current locale slug from the @wordpress/i18n locale data\n */\nfunction getWpI18nLocaleSlug(): string | undefined {\n\tconst language = i18n.getLocaleData ? i18n.getLocaleData()?.[ '' ]?.language : '';\n\n\treturn mapWpI18nLangToLocaleSlug( language );\n}\n\n/**\n * React hook providing the current locale slug. If `<LocaleProvider>` hasn't\n * been defined in the component tree then it will fall back to using the\n * data from `@wordpress/i18n` to determine the current locale slug.\n *\n * @example\n *\n * import { useLocale } from '@automattic/i18n-utils';\n * function MyComponent() {\n * const locale = useLocale();\n * return <div>The current locale is: { locale }</div>;\n * }\n */\nexport function useLocale(): string {\n\tconst fromProvider = useContext( localeContext );\n\tconst providerHasLocale = !! fromProvider;\n\n\tconst [ fromWpI18n, setWpLocale ] = useState( getWpI18nLocaleSlug() );\n\n\tuseEffect( () => {\n\t\t// If the <LocaleProvider> has been used further up the component tree\n\t\t// then we don't want to subscribe to any defaultI18n changes.\n\t\tif ( providerHasLocale ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetWpLocale( getWpI18nLocaleSlug() );\n\n\t\treturn i18n.subscribe( () => {\n\t\t\tsetWpLocale( getWpI18nLocaleSlug() );\n\t\t} );\n\t}, [ providerHasLocale ] );\n\n\treturn fromProvider || fromWpI18n || window?._currentUserLocale || 'en';\n}\n\n/**\n * HoC providing the current locale slug supplied to `<LocaleProvider>`.\n *\n * @param InnerComponent Component that will receive `locale` as a prop\n * @returns Component enhanced with locale\n * @example\n *\n * import { withLocale } from '@automattic/i18n-utils';\n * function MyComponent( { locale } ) {\n * return <div>The current locale is: { locale }</div>;\n * }\n * export default withLocale( MyComponent );\n */\nexport const withLocale = createHigherOrderComponent(\n\t< OuterProps, >( InnerComponent: React.ComponentType< OuterProps & { locale: string } > ) => {\n\t\treturn ( props: OuterProps ) => {\n\t\t\tconst locale = useLocale();\n\t\t\tconst innerProps = { ...props, locale };\n\t\t\treturn <InnerComponent { ...innerProps } />;\n\t\t};\n\t},\n\t'withLocale'\n);\n\n/**\n * React hook providing whether the current locale slug belongs to English or not\n *\n * @example\n *\n * import { useIsEnglishLocale } from '@automattic/i18n-utils';\n * function MyComponent() {\n * const isEnglishLocale = useIsEnglishLocale();\n * return <div>The current locale is English: { isEnglishLocale }</div>;\n * }\n */\nexport function useIsEnglishLocale(): boolean {\n\tconst locale = useLocale();\n\treturn englishLocales.includes( locale );\n}\n","/**\n * The locale sets here map roughly to those found in locales.php\n *\n * todo: move these into @automattic/languages as another downloaded resource\n * todo: cleanup _shared.json - replace references to the below config options with imports from here\n */\nexport type Locale = string;\nexport const i18nDefaultLocaleSlug: Locale = 'en';\nexport const localesWithBlog: Locale[] = [ 'en', 'ja', 'es', 'pt', 'fr', 'pt-br' ];\nexport const localesWithPrivacyPolicy: Locale[] = [ 'en', 'fr', 'de', 'es' ];\nexport const localesWithCookiePolicy: Locale[] = [ 'en', 'fr', 'de', 'es' ];\n\ntype LocaleSubdomain = string;\n\nexport const localesToSubdomains: Record< string, LocaleSubdomain > = {\n\t'pt-br': 'br',\n\tbr: 'bre',\n\tzh: 'zh-cn',\n\t'zh-hk': 'zh-tw',\n\t'zh-sg': 'zh-cn',\n\tkr: 'ko',\n};\n\n// replaces config( 'english_locales' )\nexport const englishLocales: Locale[] = [ 'en', 'en-gb' ];\n\n// replaces config( 'livechat_support_locales' )\nexport const livechatSupportLocales: Locale[] = [ 'en' ];\n\n// replaces config( 'support_site_locales' )\nexport const supportSiteLocales: Locale[] = [\n\t'ar',\n\t'de',\n\t'en',\n\t'es',\n\t'fr',\n\t'he',\n\t'id',\n\t'it',\n\t'ja',\n\t'ko',\n\t'nl',\n\t'pt-br',\n\t'ru',\n\t'sv',\n\t'tr',\n\t'zh-cn',\n\t'zh-tw',\n];\n\n// replaces config( 'forum_locales')\nexport const forumLocales: Locale[] = [\n\t'ar',\n\t'de',\n\t'el',\n\t'en',\n\t'es',\n\t'fa',\n\t'fi',\n\t'fr',\n\t'id',\n\t'it',\n\t'ja',\n\t'nl',\n\t'pt',\n\t'pt-br',\n\t'ru',\n\t'sv',\n\t'th',\n\t'tl',\n\t'tr',\n];\n\n// replaces config( 'magnificent_non_en_locales')\nexport const magnificentNonEnLocales: Locale[] = [\n\t'es',\n\t'pt-br',\n\t'de',\n\t'fr',\n\t'he',\n\t'ja',\n\t'it',\n\t'nl',\n\t'ru',\n\t'tr',\n\t'id',\n\t'zh-cn',\n\t'zh-tw',\n\t'ko',\n\t'ar',\n\t'sv',\n];\n\n// replaces config( 'jetpack_com_locales')\nexport const jetpackComLocales: Locale[] = [\n\t'en',\n\t'ar',\n\t'de',\n\t'es',\n\t'fr',\n\t'he',\n\t'id',\n\t'it',\n\t'ja',\n\t'ko',\n\t'nl',\n\t'pt-br',\n\t'ro',\n\t'ru',\n\t'sv',\n\t'tr',\n\t'zh-cn',\n\t'zh-tw',\n];\n","import { createHigherOrderComponent } from '@wordpress/compose';\nimport { getLocaleSlug } from 'i18n-calypso';\nimport { useCallback, ComponentType } from 'react';\nimport { useLocale } from './locale-context';\nimport {\n\tlocalesWithBlog,\n\tlocalesWithPrivacyPolicy,\n\tlocalesWithCookiePolicy,\n\tlocalesToSubdomains,\n\tsupportSiteLocales,\n\tforumLocales,\n\tmagnificentNonEnLocales,\n\tjetpackComLocales,\n\tLocale,\n} from './locales';\n\nconst INVALID_URL = `http://__domain__.invalid`;\n\nfunction getDefaultLocale(): Locale {\n\treturn getLocaleSlug?.() ?? 'en';\n}\n\nconst setLocalizedUrlHost =\n\t( hostname: string, validLocales: Locale[] = [] ) =>\n\t( url: URL, locale: Locale ) => {\n\t\tif ( validLocales.includes( locale ) && locale !== 'en' ) {\n\t\t\t// Avoid changing the hostname when the locale is set via the path.\n\t\t\tif ( url.pathname.substr( 0, locale.length + 2 ) !== '/' + locale + '/' ) {\n\t\t\t\turl.host = `${ localesToSubdomains[ locale ] || locale }.${ hostname }`;\n\t\t\t}\n\t\t}\n\t\treturn url;\n\t};\n\nconst setLocalizedWpComPath =\n\t( prefix: string, validLocales: Locale[] = [], limitPathMatch: RegExp | null = null ) =>\n\t( url: URL, localeSlug: Locale ) => {\n\t\turl.host = 'wordpress.com';\n\t\tif (\n\t\t\ttypeof limitPathMatch === 'object' &&\n\t\t\tlimitPathMatch instanceof RegExp &&\n\t\t\t! limitPathMatch.test( url.pathname )\n\t\t) {\n\t\t\tvalidLocales = []; // only rewrite to English.\n\t\t}\n\t\turl.pathname = prefix + url.pathname;\n\n\t\tif ( validLocales.includes( localeSlug ) && localeSlug !== 'en' ) {\n\t\t\turl.pathname = localeSlug + url.pathname;\n\t\t}\n\t\treturn url;\n\t};\n\ntype PrefixOrSuffix = 'prefix' | 'suffix';\n\nconst prefixOrSuffixLocalizedUrlPath =\n\t(\n\t\tvalidLocales: Locale[] = [],\n\t\tlimitPathMatch: RegExp | null = null,\n\t\tprefixOrSuffix: PrefixOrSuffix\n\t) =>\n\t( url: URL, localeSlug: Locale ): URL => {\n\t\tif ( typeof limitPathMatch === 'object' && limitPathMatch instanceof RegExp ) {\n\t\t\tif ( ! limitPathMatch.test( url.pathname ) ) {\n\t\t\t\treturn url; // No rewriting if not matches the path.\n\t\t\t}\n\t\t}\n\n\t\tif ( ! validLocales.includes( localeSlug ) || localeSlug === 'en' ) {\n\t\t\treturn url;\n\t\t}\n\n\t\tif ( prefixOrSuffix === 'prefix' ) {\n\t\t\turl.pathname = localeSlug + url.pathname;\n\t\t} else if ( prefixOrSuffix === 'suffix' ) {\n\t\t\t// Make sure there's a slash between the path and the locale. Plus, if\n\t\t\t// the path has a trailing slash, add one after the suffix too.\n\t\t\tif ( url.pathname.endsWith( '/' ) ) {\n\t\t\t\turl.pathname += localeSlug + '/';\n\t\t\t} else {\n\t\t\t\turl.pathname += '/' + localeSlug;\n\t\t\t}\n\t\t}\n\t\treturn url;\n\t};\n\nconst prefixLocalizedUrlPath =\n\t( validLocales: Locale[] = [], limitPathMatch: RegExp | null = null ) =>\n\t( url: URL, localeSlug: Locale ): URL => {\n\t\treturn prefixOrSuffixLocalizedUrlPath(\n\t\t\tvalidLocales,\n\t\t\tlimitPathMatch,\n\t\t\t'prefix'\n\t\t)( url, localeSlug );\n\t};\n\nconst suffixLocalizedUrlPath =\n\t( validLocales: Locale[] = [], limitPathMatch: RegExp | null = null ) =>\n\t( url: URL, localeSlug: Locale ): URL => {\n\t\treturn prefixOrSuffixLocalizedUrlPath(\n\t\t\tvalidLocales,\n\t\t\tlimitPathMatch,\n\t\t\t'suffix'\n\t\t)( url, localeSlug );\n\t};\n\ntype LinkLocalizer = ( url: URL, localeSlug: string, isLoggedIn: boolean ) => URL;\n\ninterface UrlLocalizationMapping {\n\t[ key: string ]: LinkLocalizer;\n}\n\nconst urlLocalizationMapping: UrlLocalizationMapping = {\n\t'wordpress.com/support/': prefixLocalizedUrlPath( supportSiteLocales ),\n\t'wordpress.com/forums/': prefixLocalizedUrlPath( forumLocales ),\n\t'wordpress.com/blog/': prefixLocalizedUrlPath( localesWithBlog, /^\\/blog\\/?$/ ),\n\t'wordpress.com/tos/': prefixLocalizedUrlPath( magnificentNonEnLocales ),\n\t'wordpress.com/wp-admin/': setLocalizedUrlHost( 'wordpress.com', magnificentNonEnLocales ),\n\t'wordpress.com/wp-login.php': setLocalizedUrlHost( 'wordpress.com', magnificentNonEnLocales ),\n\t'jetpack.com': setLocalizedUrlHost( 'jetpack.com', jetpackComLocales ),\n\t'en.support.wordpress.com': setLocalizedWpComPath( '/support', supportSiteLocales ),\n\t'en.blog.wordpress.com': setLocalizedWpComPath( '/blog', localesWithBlog, /^\\/$/ ),\n\t'apps.wordpress.com': prefixLocalizedUrlPath( magnificentNonEnLocales ),\n\t'en.forums.wordpress.com': setLocalizedWpComPath( '/forums', forumLocales ),\n\t'automattic.com/privacy/': prefixLocalizedUrlPath( localesWithPrivacyPolicy ),\n\t'automattic.com/cookies/': prefixLocalizedUrlPath( localesWithCookiePolicy ),\n\t'wordpress.com/help/contact/': ( url: URL, localeSlug: Locale, isLoggedIn: boolean ) => {\n\t\tif ( isLoggedIn ) {\n\t\t\treturn url;\n\t\t}\n\t\turl.pathname = url.pathname.replace( /\\/help\\//, '/support/' );\n\t\treturn prefixLocalizedUrlPath( supportSiteLocales )( url, localeSlug );\n\t},\n\t'wordpress.com': ( url: URL, localeSlug: Locale ) => {\n\t\t// Don't rewrite checkout and me URLs.\n\t\tif ( /^\\/(checkout|me)(\\/|$)/.test( url.pathname ) ) {\n\t\t\treturn url;\n\t\t}\n\t\t// Don't rewrite Calypso URLs that have the URL at the end.\n\t\tif ( /\\/([a-z0-9-]+\\.)+[a-z]{2,}\\/?$/.test( url.pathname ) ) {\n\t\t\treturn url;\n\t\t}\n\t\treturn prefixLocalizedUrlPath( magnificentNonEnLocales )( url, localeSlug );\n\t},\n\t'wordpress.com/theme/': ( url: URL, localeSlug: Locale, isLoggedIn: boolean ) => {\n\t\treturn isLoggedIn ? url : prefixLocalizedUrlPath( magnificentNonEnLocales )( url, localeSlug );\n\t},\n\t'wordpress.com/themes/': ( url: URL, localeSlug: Locale, isLoggedIn: boolean ) => {\n\t\treturn isLoggedIn ? url : prefixLocalizedUrlPath( magnificentNonEnLocales )( url, localeSlug );\n\t},\n\t'wordpress.com/log-in/': ( url: URL, localeSlug: Locale, isLoggedIn: boolean ) => {\n\t\treturn isLoggedIn ? url : suffixLocalizedUrlPath( magnificentNonEnLocales )( url, localeSlug );\n\t},\n};\n\nexport function localizeUrl(\n\tfullUrl: string,\n\tlocale: Locale = getDefaultLocale(),\n\tisLoggedIn = true\n): string {\n\tlet url;\n\ttry {\n\t\turl = new URL( String( fullUrl ), INVALID_URL );\n\t} catch ( e ) {\n\t\treturn fullUrl;\n\t}\n\n\t// Ignore and passthrough /relative/urls that have no host specified\n\tif ( url.origin === INVALID_URL ) {\n\t\treturn fullUrl;\n\t}\n\n\t// Let's unify the URL.\n\turl.protocol = 'https:';\n\t// Let's use `host` for everything.\n\turl.hostname = '';\n\n\tif ( ! url.pathname.endsWith( '.php' ) ) {\n\t\t// Essentially a trailingslashit.\n\t\turl.pathname = ( url.pathname + '/' ).replace( /\\/+$/, '/' );\n\t}\n\n\tconst firstPathSegment = url.pathname.substr( 0, 1 + url.pathname.indexOf( '/', 1 ) );\n\n\tif ( 'en.wordpress.com' === url.host ) {\n\t\turl.host = 'wordpress.com';\n\t}\n\n\tif ( '/' + locale + '/' === firstPathSegment ) {\n\t\treturn fullUrl;\n\t}\n\n\t// Lookup is checked back to front.\n\tconst lookup = [ url.host, url.host + firstPathSegment, url.host + url.pathname ];\n\n\tfor ( let i = lookup.length - 1; i >= 0; i-- ) {\n\t\tif ( lookup[ i ] in urlLocalizationMapping ) {\n\t\t\treturn urlLocalizationMapping[ lookup[ i ] ]( url, locale, isLoggedIn ).href;\n\t\t}\n\t}\n\n\t// Nothing needed to be changed, just return it unmodified.\n\treturn fullUrl;\n}\n\nexport function useLocalizeUrl() {\n\tconst providerLocale = useLocale();\n\n\treturn useCallback(\n\t\t( fullUrl: string, locale?: Locale, isLoggedIn?: boolean ) => {\n\t\t\tif ( locale ) {\n\t\t\t\treturn localizeUrl( fullUrl, locale, isLoggedIn );\n\t\t\t}\n\t\t\treturn localizeUrl( fullUrl, providerLocale, isLoggedIn );\n\t\t},\n\t\t[ providerLocale ]\n\t);\n}\n\nexport const withLocalizeUrl = createHigherOrderComponent(\n\t< OuterProps, >(\n\t\tInnerComponent: ComponentType<\n\t\t\tOuterProps & { localizeUrl: ReturnType< typeof useLocalizeUrl > }\n\t\t>\n\t) => {\n\t\treturn ( props: OuterProps ) => {\n\t\t\tconst localizeUrl = useLocalizeUrl();\n\t\t\tconst innerProps = { ...props, localizeUrl };\n\t\t\treturn <InnerComponent { ...innerProps } />;\n\t\t};\n\t},\n\t'withLocalizeUrl'\n);\n","import { cloneElement, createElement, Fragment } from 'react';\nimport tokenize from './tokenize';\n\nfunction getCloseIndex( openIndex, tokens ) {\n\tconst openToken = tokens[ openIndex ];\n\tlet nestLevel = 0;\n\tfor ( let i = openIndex + 1; i < tokens.length; i++ ) {\n\t\tconst token = tokens[ i ];\n\t\tif ( token.value === openToken.value ) {\n\t\t\tif ( token.type === 'componentOpen' ) {\n\t\t\t\tnestLevel++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif ( token.type === 'componentClose' ) {\n\t\t\t\tif ( nestLevel === 0 ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tnestLevel--;\n\t\t\t}\n\t\t}\n\t}\n\t// if we get this far, there was no matching close token\n\tthrow new Error( 'Missing closing component token `' + openToken.value + '`' );\n}\n\nfunction buildChildren( tokens, components ) {\n\tlet children = [];\n\tlet openComponent;\n\tlet openIndex;\n\n\tfor ( let i = 0; i < tokens.length; i++ ) {\n\t\tconst token = tokens[ i ];\n\t\tif ( token.type === 'string' ) {\n\t\t\tchildren.push( token.value );\n\t\t\tcontinue;\n\t\t}\n\t\t// component node should at least be set\n\t\tif ( components[ token.value ] === undefined ) {\n\t\t\tthrow new Error( `Invalid interpolation, missing component node: \\`${ token.value }\\`` );\n\t\t}\n\t\t// should be either ReactElement or null (both type \"object\"), all other types deprecated\n\t\tif ( typeof components[ token.value ] !== 'object' ) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid interpolation, component node must be a ReactElement or null: \\`${ token.value }\\``\n\t\t\t);\n\t\t}\n\t\t// we should never see a componentClose token in this loop\n\t\tif ( token.type === 'componentClose' ) {\n\t\t\tthrow new Error( `Missing opening component token: \\`${ token.value }\\`` );\n\t\t}\n\t\tif ( token.type === 'componentOpen' ) {\n\t\t\topenComponent = components[ token.value ];\n\t\t\topenIndex = i;\n\t\t\tbreak;\n\t\t}\n\t\t// componentSelfClosing token\n\t\tchildren.push( components[ token.value ] );\n\t\tcontinue;\n\t}\n\n\tif ( openComponent ) {\n\t\tconst closeIndex = getCloseIndex( openIndex, tokens );\n\t\tconst grandChildTokens = tokens.slice( openIndex + 1, closeIndex );\n\t\tconst grandChildren = buildChildren( grandChildTokens, components );\n\t\tconst clonedOpenComponent = cloneElement( openComponent, {}, grandChildren );\n\t\tchildren.push( clonedOpenComponent );\n\n\t\tif ( closeIndex < tokens.length - 1 ) {\n\t\t\tconst siblingTokens = tokens.slice( closeIndex + 1 );\n\t\t\tconst siblings = buildChildren( siblingTokens, components );\n\t\t\tchildren = children.concat( siblings );\n\t\t}\n\t}\n\n\tchildren = children.filter( Boolean );\n\n\tif ( children.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tif ( children.length === 1 ) {\n\t\treturn children[ 0 ];\n\t}\n\n\treturn createElement( Fragment, null, ...children );\n}\n\nexport default function interpolate( options ) {\n\tconst { mixedString, components, throwErrors } = options;\n\n\tif ( ! components ) {\n\t\treturn mixedString;\n\t}\n\n\tif ( typeof components !== 'object' ) {\n\t\tif ( throwErrors ) {\n\t\t\tthrow new Error(\n\t\t\t\t`Interpolation Error: unable to process \\`${ mixedString }\\` because components is not an object`\n\t\t\t);\n\t\t}\n\n\t\treturn mixedString;\n\t}\n\n\tconst tokens = tokenize( mixedString );\n\n\ttry {\n\t\treturn buildChildren( tokens, components );\n\t} catch ( error ) {\n\t\tif ( throwErrors ) {\n\t\t\tthrow new Error(\n\t\t\t\t`Interpolation Error: unable to process \\`${ mixedString }\\` because of error \\`${ error.message }\\``\n\t\t\t);\n\t\t}\n\n\t\treturn mixedString;\n\t}\n}\n","function identifyToken( item ) {\n\t// {{/example}}\n\tif ( item.startsWith( '{{/' ) ) {\n\t\treturn {\n\t\t\ttype: 'componentClose',\n\t\t\tvalue: item.replace( /\\W/g, '' ),\n\t\t};\n\t}\n\t// {{example /}}\n\tif ( item.endsWith( '/}}' ) ) {\n\t\treturn {\n\t\t\ttype: 'componentSelfClosing',\n\t\t\tvalue: item.replace( /\\W/g, '' ),\n\t\t};\n\t}\n\t// {{example}}\n\tif ( item.startsWith( '{{' ) ) {\n\t\treturn {\n\t\t\ttype: 'componentOpen',\n\t\t\tvalue: item.replace( /\\W/g, '' ),\n\t\t};\n\t}\n\treturn {\n\t\ttype: 'string',\n\t\tvalue: item,\n\t};\n}\n\nexport default function tokenize( mixedString ) {\n\tconst tokenStrings = mixedString.split( /(\\{\\{\\/?\\s*\\w+\\s*\\/?\\}\\})/g ); // split to components and strings\n\treturn tokenStrings.map( identifyToken );\n}\n","import debugFactory from 'debug';\nconst debug = debugFactory( 'lib/load-script/callback-handler' );\n\n/**\n * Module variables\n */\nconst callbacksForURLsInProgress = new Map();\n\nexport function getCallbacksMap() {\n\treturn callbacksForURLsInProgress;\n}\n\nexport function isLoading( url ) {\n\treturn getCallbacksMap().has( url );\n}\n\nexport function addScriptCallback( url, callback ) {\n\tconst callbacksMap = getCallbacksMap();\n\tif ( isLoading( url ) ) {\n\t\tdebug( `Adding a callback for an existing script from \"${ url }\"` );\n\t\tcallbacksMap.get( url ).add( callback );\n\t} else {\n\t\tdebug( `Adding a callback for a new script from \"${ url }\"` );\n\t\tcallbacksMap.set( url, new Set( [ callback ] ) );\n\t}\n}\n\nexport function removeScriptCallback( url, callback ) {\n\tdebug( `Removing a known callback for a script from \"${ url }\"` );\n\n\tif ( ! isLoading( url ) ) {\n\t\treturn;\n\t}\n\n\tconst callbacksMap = getCallbacksMap();\n\tconst callbacksAtUrl = callbacksMap.get( url );\n\tcallbacksAtUrl.delete( callback );\n\n\tif ( callbacksAtUrl.size === 0 ) {\n\t\tcallbacksMap.delete( url );\n\t}\n}\n\nexport function removeScriptCallbacks( url ) {\n\tdebug( `Removing all callbacks for a script from \"${ url }\"` );\n\tgetCallbacksMap().delete( url );\n}\n\nexport function removeAllScriptCallbacks() {\n\tdebug( 'Removing all callbacks for scripts from all URLs' );\n\tgetCallbacksMap().clear();\n}\n\nexport function executeCallbacks( url, error = null ) {\n\tconst callbacksMap = getCallbacksMap();\n\tconst callbacksForUrl = callbacksMap.get( url );\n\n\tif ( callbacksForUrl ) {\n\t\tconst debugMessage =\n\t\t\t`Executing callbacks for \"${ url }\"` +\n\t\t\t( error === null ? ' with success' : ` with error \"${ error }\"` );\n\t\tdebug( debugMessage );\n\n\t\tcallbacksForUrl.forEach( ( cb ) => {\n\t\t\tif ( typeof cb === 'function' ) {\n\t\t\t\tcb( error );\n\t\t\t}\n\t\t} );\n\n\t\tcallbacksMap.delete( url );\n\t}\n}\n\nexport function handleRequestSuccess() {\n\tconst url = this.getAttribute( 'src' );\n\tdebug( `Handling successful request for \"${ url }\"` );\n\texecuteCallbacks( url );\n\tthis.onload = null;\n}\n\nexport function handleRequestError() {\n\tconst url = this.getAttribute( 'src' );\n\tdebug( `Handling failed request for \"${ url }\"` );\n\texecuteCallbacks( url, new Error( `Failed to load script \"${ url }\"` ) );\n\tthis.onerror = null;\n}\n","import debugFactory from 'debug';\nimport { handleRequestError, handleRequestSuccess } from './callback-handler';\n\nconst debug = debugFactory( 'lib/load-script/dom-operations' );\n\nexport function createScriptElement( url ) {\n\tdebug( `Creating script element for \"${ url }\"` );\n\tconst script = document.createElement( 'script' );\n\tscript.src = url;\n\tscript.type = 'text/javascript';\n\tscript.async = true;\n\tscript.onload = handleRequestSuccess;\n\tscript.onerror = handleRequestError;\n\treturn script;\n}\n\nexport function attachToHead( element ) {\n\tdebug( 'Attaching element to head' );\n\tdocument.head.appendChild( element );\n}\n","/**\n * A little module for loading a external script\n *\n */\n\nimport debugFactory from 'debug';\nimport { addScriptCallback, isLoading } from './callback-handler';\nimport { createScriptElement, attachToHead } from './dom-operations';\n\nconst debug = debugFactory( 'package/load-script' );\n\n// NOTE: This exists for compatibility.\nexport { removeScriptCallback } from './callback-handler';\n\n/**\n * Module variables\n */\nexport const JQUERY_URL = 'https://s0.wp.com/wp-includes/js/jquery/jquery.js';\n\n//\n// loadScript and loadjQueryDependentScript\n//\n\nexport function loadScript( url, callback ) {\n\t// If this script is not currently being loaded, create a script element and attach to document head.\n\tconst shouldLoadScript = ! isLoading( url );\n\tif ( shouldLoadScript ) {\n\t\t// the onload/onerror callbacks are guaranteed to be called asynchronously, so it's ok to first\n\t\t// add the element and only then attach callbacks, as long as it happens in one event loop tick.\n\t\tattachToHead( createScriptElement( url ) );\n\t}\n\n\t// if callback is provided, behave traditionally\n\tif ( typeof callback === 'function' ) {\n\t\taddScriptCallback( url, callback );\n\t\treturn;\n\t}\n\n\t// but if not, return a Promise\n\treturn new Promise( ( resolve, reject ) => {\n\t\taddScriptCallback( url, ( error ) => {\n\t\t\tif ( error === null ) {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\treject( error );\n\t\t\t}\n\t\t} );\n\t} );\n}\n\nexport function loadjQueryDependentScript( url, callback ) {\n\tdebug( `Loading a jQuery dependent script from \"${ url }\"` );\n\n\tif ( window.jQuery ) {\n\t\tdebug( `jQuery found on window, skipping jQuery script loading for \"${ url }\"` );\n\t\treturn loadScript( url, callback );\n\t}\n\n\tconst loadPromise = loadScript( JQUERY_URL ).then( () => loadScript( url ) );\n\n\t// if callback is provided, call it on resolution\n\tif ( typeof callback === 'function' ) {\n\t\tloadPromise.then(\n\t\t\t() => callback( null ),\n\t\t\t( error ) => callback( error )\n\t\t);\n\t\treturn;\n\t}\n\n\t// if not, return the Promise\n\treturn loadPromise;\n}\n","/**\n * External dependencies\n */\nimport * as React from 'react';\n/**\n * Internal dependencies\n */\nimport useFocusHandler from '../hooks/use-focus-handler';\nimport useFocusTrap from '../hooks/use-focus-trap';\nimport useKeydownHandler from '../hooks/use-keydown-handler';\n\ninterface Props {\n\tonMinimize: () => void;\n\tonDismiss: ( target: string ) => () => void;\n\tonNextStepProgression: () => void;\n\tonPreviousStepProgression: () => void;\n\ttourContainerRef: React.MutableRefObject< null | HTMLElement >;\n\tisMinimized: boolean;\n}\n\nconst KeyboardNavigation: React.FunctionComponent< Props > = ( {\n\tonMinimize,\n\tonDismiss,\n\tonNextStepProgression,\n\tonPreviousStepProgression,\n\ttourContainerRef,\n\tisMinimized,\n} ) => {\n\tfunction ExpandedTourNav() {\n\t\tuseKeydownHandler( {\n\t\t\tonEscape: onMinimize,\n\t\t\tonArrowRight: onNextStepProgression,\n\t\t\tonArrowLeft: onPreviousStepProgression,\n\t\t} );\n\t\tuseFocusTrap( tourContainerRef );\n\n\t\treturn null;\n\t}\n\n\tfunction MinimizedTourNav() {\n\t\tuseKeydownHandler( { onEscape: onDismiss( 'esc-key-minimized' ) } );\n\n\t\treturn null;\n\t}\n\n\tconst isTourFocused = useFocusHandler( tourContainerRef );\n\n\tif ( ! isTourFocused ) {\n\t\treturn null;\n\t}\n\n\treturn isMinimized ? <MinimizedTourNav /> : <ExpandedTourNav />;\n};\n\nexport default KeyboardNavigation;\n","import { createContext, useContext } from '@wordpress/element';\nimport type { Config } from '../types';\n\ninterface TourKitContext {\n\tconfig: Config;\n}\n\nconst TourKitContext = createContext< TourKitContext >( {} as TourKitContext );\n\nconst TourKitContextProvider: React.FunctionComponent< TourKitContext > = ( {\n\tconfig,\n\tchildren,\n} ) => {\n\treturn <TourKitContext.Provider value={ { config } }>{ children }</TourKitContext.Provider>;\n};\n\nexport const useTourKitContext = (): TourKitContext => useContext( TourKitContext );\n\nexport default TourKitContextProvider;\n","/**\n * External Dependencies\n */\nimport { useMobileBreakpoint } from '@automattic/viewport-react';\nimport { useEffect, useState, useCallback, useMemo, useRef } from '@wordpress/element';\nimport classnames from 'classnames';\nimport { usePopper } from 'react-popper';\n/**\n * Internal Dependencies\n */\nimport useStepTracking from '../hooks/use-step-tracking';\nimport { classParser } from '../utils';\nimport { liveResizeModifier } from '../utils/live-resize-modifier';\nimport KeyboardNavigation from './keyboard-navigation';\nimport TourKitMinimized from './tour-kit-minimized';\nimport Overlay from './tour-kit-overlay';\nimport Spotlight from './tour-kit-spotlight';\nimport TourKitStep from './tour-kit-step';\nimport type { Callback, Config } from '../types';\n\nconst handleCallback = ( currentStepIndex: number, callback?: Callback ) => {\n\ttypeof callback === 'function' && callback( currentStepIndex );\n};\n\ninterface Props {\n\tconfig: Config;\n}\n\nconst TourKitFrame: React.FunctionComponent< Props > = ( { config } ) => {\n\tconst [ currentStepIndex, setCurrentStepIndex ] = useState( 0 );\n\tconst [ initialFocusedElement, setInitialFocusedElement ] = useState< HTMLElement | null >(\n\t\tnull\n\t);\n\tconst [ isMinimized, setIsMinimized ] = useState( config.isMinimized ?? false );\n\n\tconst [ popperElement, setPopperElement ] = useState< HTMLElement | null >( null );\n\tconst [ tourReady, setTourReady ] = useState( false );\n\tconst tourContainerRef = useRef( null );\n\tconst isMobile = useMobileBreakpoint();\n\tconst lastStepIndex = config.steps.length - 1;\n\tconst referenceElementSelector =\n\t\tconfig.steps[ currentStepIndex ].referenceElements?.[ isMobile ? 'mobile' : 'desktop' ] || null;\n\tconst referenceElement = referenceElementSelector\n\t\t? document.querySelector< HTMLElement >( referenceElementSelector )\n\t\t: null;\n\n\tuseEffect( () => {\n\t\tif ( config.isMinimized ) {\n\t\t\tsetIsMinimized( true );\n\t\t}\n\t}, [ config.isMinimized ] );\n\n\tconst showArrowIndicator = useCallback( () => {\n\t\tif ( config.options?.effects?.arrowIndicator === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !! ( referenceElement && ! isMinimized && tourReady );\n\t}, [ config.options?.effects?.arrowIndicator, isMinimized, referenceElement, tourReady ] );\n\n\tconst showSpotlight = useCallback( () => {\n\t\tif ( ! config.options?.effects?.spotlight ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn ! isMinimized;\n\t}, [ config.options?.effects?.spotlight, isMinimized ] );\n\n\tconst showOverlay = useCallback( () => {\n\t\tif ( showSpotlight() || ! config.options?.effects?.overlay ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn ! isMinimized;\n\t}, [ config.options?.effects?.overlay, isMinimized, showSpotlight ] );\n\n\tconst handleDismiss = useCallback(\n\t\t( source: string ) => {\n\t\t\treturn () => {\n\t\t\t\tconfig.closeHandler( config.steps, currentStepIndex, source );\n\t\t\t};\n\t\t},\n\t\t[ config, currentStepIndex ]\n\t);\n\n\tconst handleNextStepProgression = useCallback( () => {\n\t\tif ( lastStepIndex > currentStepIndex ) {\n\t\t\tsetCurrentStepIndex( currentStepIndex + 1 );\n\t\t}\n\t\thandleCallback( currentStepIndex, config.options?.callbacks?.onNextStep );\n\t}, [ config.options?.callbacks?.onNextStep, currentStepIndex, lastStepIndex ] );\n\n\tconst handlePreviousStepProgression = useCallback( () => {\n\t\tcurrentStepIndex && setCurrentStepIndex( currentStepIndex - 1 );\n\t\thandleCallback( currentStepIndex, config.options?.callbacks?.onPreviousStep );\n\t}, [ config.options?.callbacks?.onPreviousStep, currentStepIndex ] );\n\n\tconst handleGoToStep = useCallback(\n\t\t( stepIndex: number ) => {\n\t\t\tsetCurrentStepIndex( stepIndex );\n\t\t\thandleCallback( currentStepIndex, config.options?.callbacks?.onGoToStep );\n\t\t},\n\t\t[ config.options?.callbacks?.onGoToStep, currentStepIndex ]\n\t);\n\n\tconst handleMinimize = useCallback( () => {\n\t\tsetIsMinimized( true );\n\t\thandleCallback( currentStepIndex, config.options?.callbacks?.onMinimize );\n\t}, [ config.options?.callbacks?.onMinimize, currentStepIndex ] );\n\n\tconst handleMaximize = useCallback( () => {\n\t\tsetIsMinimized( false );\n\t\thandleCallback( currentStepIndex, config.options?.callbacks?.onMaximize );\n\t}, [ config.options?.callbacks?.onMaximize, currentStepIndex ] );\n\n\tconst {\n\t\tstyles: popperStyles,\n\t\tattributes: popperAttributes,\n\t\tupdate: popperUpdate,\n\t} = usePopper( referenceElement, popperElement, {\n\t\tstrategy: 'fixed',\n\t\tplacement: config?.placement ?? 'bottom',\n\t\tmodifiers: [\n\t\t\t{\n\t\t\t\tname: 'preventOverflow',\n\t\t\t\toptions: {\n\t\t\t\t\trootBoundary: 'document',\n\t\t\t\t\tpadding: 16, // same as the left/margin of the tour frame\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'arrow',\n\t\t\t\toptions: {\n\t\t\t\t\tpadding: 12,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'offset',\n\t\t\t\toptions: {\n\t\t\t\t\toffset: [ 0, showArrowIndicator() ? 12 : 10 ],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'flip',\n\t\t\t\toptions: {\n\t\t\t\t\tfallbackPlacements: [ 'top', 'left', 'right' ],\n\t\t\t\t},\n\t\t\t},\n\t\t\tuseMemo(\n\t\t\t\t() => liveResizeModifier( config.options?.effects?.liveResize ),\n\t\t\t\t[ config.options?.effects?.liveResize ]\n\t\t\t),\n\t\t\t...( config.options?.popperModifiers || [] ),\n\t\t],\n\t} );\n\n\tconst stepRepositionProps =\n\t\t! isMinimized && referenceElement && tourReady\n\t\t\t? {\n\t\t\t\t\tstyle: popperStyles?.popper,\n\t\t\t\t\t...popperAttributes?.popper,\n\t\t\t }\n\t\t\t: null;\n\n\tconst arrowPositionProps =\n\t\t! isMinimized && referenceElement && tourReady\n\t\t\t? {\n\t\t\t\t\tstyle: popperStyles?.arrow,\n\t\t\t\t\t...popperAttributes?.arrow,\n\t\t\t }\n\t\t\t: null;\n\n\t/*\n\t * Focus first interactive element when step renders.\n\t */\n\tuseEffect( () => {\n\t\tsetTimeout( () => initialFocusedElement?.focus() );\n\t}, [ initialFocusedElement ] );\n\n\t/*\n\t * Fixes issue with Popper misplacing the instance on mount\n\t * See: https://stackoverflow.com/questions/65585859/react-popper-incorrect-position-on-mount\n\t */\n\tuseEffect( () => {\n\t\t// If no reference element to position step near\n\t\tif ( ! referenceElement ) {\n\t\t\tsetTourReady( true );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTourReady( false );\n\n\t\tif ( popperUpdate ) {\n\t\t\tpopperUpdate()\n\t\t\t\t.then( () => setTourReady( true ) )\n\t\t\t\t.catch( () => setTourReady( true ) );\n\t\t}\n\t}, [ popperUpdate, referenceElement ] );\n\n\tuseEffect( () => {\n\t\tif ( referenceElement && config.options?.effects?.autoScroll ) {\n\t\t\treferenceElement.scrollIntoView( config.options.effects.autoScroll );\n\t\t}\n\t}, [ config.options?.effects?.autoScroll, referenceElement ] );\n\n\tconst classes = classnames(\n\t\t'tour-kit-frame',\n\t\tisMobile ? 'is-mobile' : 'is-desktop',\n\t\t{ 'is-visible': tourReady },\n\t\tclassParser( config.options?.classNames )\n\t);\n\n\tuseStepTracking( currentStepIndex, config.options?.callbacks?.onStepViewOnce );\n\n\treturn (\n\t\t<>\n\t\t\t<KeyboardNavigation\n\t\t\t\tonMinimize={ handleMinimize }\n\t\t\t\tonDismiss={ handleDismiss }\n\t\t\t\tonNextStepProgression={ handleNextStepProgression }\n\t\t\t\tonPreviousStepProgression={ handlePreviousStepProgression }\n\t\t\t\ttourContainerRef={ tourContainerRef }\n\t\t\t\tisMinimized={ isMinimized }\n\t\t\t/>\n\t\t\t<div className={ classes } ref={ tourContainerRef }>\n\t\t\t\t{ showOverlay() && <Overlay visible={ true } /> }\n\t\t\t\t{ showSpotlight() && (\n\t\t\t\t\t<Spotlight\n\t\t\t\t\t\treferenceElement={ referenceElement }\n\t\t\t\t\t\tliveResize={ config.options?.effects?.liveResize || {} }\n\t\t\t\t\t\t{ ...( config.options?.effects?.spotlight || {} ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"tour-kit-frame__container\"\n\t\t\t\t\tref={ setPopperElement }\n\t\t\t\t\t{ ...( stepRepositionProps as React.HTMLAttributes< HTMLDivElement > ) }\n\t\t\t\t>\n\t\t\t\t\t{ showArrowIndicator() && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"tour-kit-frame__arrow\"\n\t\t\t\t\t\t\tdata-popper-arrow\n\t\t\t\t\t\t\t{ ...( arrowPositionProps as React.HTMLAttributes< HTMLDivElement > ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! isMinimized ? (\n\t\t\t\t\t\t<TourKitStep\n\t\t\t\t\t\t\tconfig={ config }\n\t\t\t\t\t\t\tsteps={ config.steps }\n\t\t\t\t\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\t\t\t\t\tonMinimize={ handleMinimize }\n\t\t\t\t\t\t\tonDismiss={ handleDismiss }\n\t\t\t\t\t\t\tonNextStep={ handleNextStepProgression }\n\t\t\t\t\t\t\tonPreviousStep={ handlePreviousStepProgression }\n\t\t\t\t\t\t\tonGoToStep={ handleGoToStep }\n\t\t\t\t\t\t\tsetInitialFocusedElement={ setInitialFocusedElement }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<TourKitMinimized\n\t\t\t\t\t\t\tconfig={ config }\n\t\t\t\t\t\t\tsteps={ config.steps }\n\t\t\t\t\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\t\t\t\t\tonMaximize={ handleMaximize }\n\t\t\t\t\t\t\tonDismiss={ handleDismiss }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default TourKitFrame;\n","/**\n * Internal Dependencies\n */\nimport { MinimizedTourRendererProps } from '../types';\nimport type { Config } from '../types';\n\ninterface Props extends MinimizedTourRendererProps {\n\tconfig: Config;\n}\n\nconst TourKitMinimized: React.FunctionComponent< Props > = ( {\n\tconfig,\n\tsteps,\n\tcurrentStepIndex,\n\tonMaximize,\n\tonDismiss,\n} ) => {\n\treturn (\n\t\t<div className={ 'tour-kit-minimized' }>\n\t\t\t<config.renderers.tourMinimized\n\t\t\t\tsteps={ steps }\n\t\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\t\tonMaximize={ onMaximize }\n\t\t\t\tonDismiss={ onDismiss }\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default TourKitMinimized;\n","/**\n * External Dependencies\n */\nimport classnames from 'classnames';\n\ninterface Props {\n\tvisible: boolean;\n}\n\nconst TourKitOverlay: React.FunctionComponent< Props > = ( { visible } ) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={ classnames( 'tour-kit-overlay', {\n\t\t\t\t'is-visible': visible,\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n\nexport default TourKitOverlay;\n","import { SPOTLIT_ELEMENT_CLASS } from './tour-kit-spotlight';\n\nexport interface SpotlightInteractivityConfiguration {\n\t/** If true, the user will be allowed to interact with the spotlit element. Defaults to false. */\n\tenabled?: boolean;\n\t/** This element is the root element within which all children will have\n\t * pointer-events disabled during the tour. Defaults to '#wpwrap'\n\t */\n\trootElementSelector?: string;\n}\n\nexport const SpotlightInteractivity: React.VFC< SpotlightInteractivityConfiguration > = ( {\n\tenabled = false,\n\trootElementSelector = '#wpwrap',\n}: SpotlightInteractivityConfiguration ) => {\n\tif ( ! enabled ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<style>\n\t\t\t{ `\n .${ SPOTLIT_ELEMENT_CLASS }, .${ SPOTLIT_ELEMENT_CLASS } * {\n pointer-events: auto;\n }\n .tour-kit-frame__container button {\n pointer-events: auto;\n }\n .tour-kit-spotlight, .tour-kit-overlay {\n pointer-events: none;\n }\n ${ rootElementSelector } :not(.${ SPOTLIT_ELEMENT_CLASS }, .${ SPOTLIT_ELEMENT_CLASS } *) {\n pointer-events: none;\n }\n ` }\n\t\t</style>\n\t);\n};\n","import { useMemo, useState, useEffect } from '@wordpress/element';\nimport classnames from 'classnames';\nimport { usePopper } from 'react-popper';\nimport { LiveResizeConfiguration, liveResizeModifier } from '../utils/live-resize-modifier';\nimport Overlay from './tour-kit-overlay';\nimport {\n\tSpotlightInteractivity,\n\tSpotlightInteractivityConfiguration,\n} from './tour-kit-spotlight-interactivity';\nimport type { Rect, Placement } from '@popperjs/core';\n\nexport const SPOTLIT_ELEMENT_CLASS = 'wp-tour-kit-spotlit';\ninterface Props {\n\treferenceElement: HTMLElement | null;\n\tstyles?: React.CSSProperties;\n\tinteractivity?: SpotlightInteractivityConfiguration;\n\tliveResize?: LiveResizeConfiguration;\n}\n\nconst TourKitSpotlight: React.FunctionComponent< Props > = ( {\n\treferenceElement,\n\tstyles,\n\tinteractivity,\n\tliveResize,\n} ) => {\n\tconst [ popperElement, sePopperElement ] = useState< HTMLElement | null >( null );\n\tconst referenceRect = referenceElement?.getBoundingClientRect();\n\n\tconst modifiers = [\n\t\t{\n\t\t\tname: 'flip',\n\t\t\tenabled: false,\n\t\t},\n\t\t{\n\t\t\tname: 'preventOverflow',\n\t\t\toptions: {\n\t\t\t\tmainAxis: false, // true by default\n\t\t\t},\n\t\t},\n\t\tuseMemo(\n\t\t\t() => ( {\n\t\t\t\tname: 'offset',\n\t\t\t\toptions: {\n\t\t\t\t\toffset: ( {\n\t\t\t\t\t\tplacement,\n\t\t\t\t\t\treference,\n\t\t\t\t\t\tpopper,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tplacement: Placement;\n\t\t\t\t\t\treference: Rect;\n\t\t\t\t\t\tpopper: Rect;\n\t\t\t\t\t} ): [ number, number ] => {\n\t\t\t\t\t\tif ( placement === 'bottom' ) {\n\t\t\t\t\t\t\treturn [ 0, -( reference.height + ( popper.height - reference.height ) / 2 ) ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [ 0, 0 ];\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} ),\n\t\t\t[]\n\t\t),\n\t\t// useMemo because https://popper.js.org/react-popper/v2/faq/#why-i-get-render-loop-whenever-i-put-a-function-inside-the-popper-configuration\n\t\tuseMemo( () => {\n\t\t\treturn liveResizeModifier( liveResize );\n\t\t}, [ liveResize ] ),\n\t];\n\n\tconst { styles: popperStyles, attributes: popperAttributes } = usePopper(\n\t\treferenceElement,\n\t\tpopperElement,\n\t\t{\n\t\t\tstrategy: 'fixed',\n\t\t\tplacement: 'bottom',\n\t\t\tmodifiers,\n\t\t}\n\t);\n\n\tconst clipDimensions = referenceRect\n\t\t? {\n\t\t\t\twidth: `${ referenceRect.width }px`,\n\t\t\t\theight: `${ referenceRect.height }px`,\n\t\t }\n\t\t: null;\n\n\tconst clipRepositionProps = referenceElement\n\t\t? {\n\t\t\t\tstyle: {\n\t\t\t\t\t...( clipDimensions && clipDimensions ),\n\t\t\t\t\t...popperStyles?.popper,\n\t\t\t\t\t...( styles && styles ),\n\t\t\t\t},\n\t\t\t\t...popperAttributes?.popper,\n\t\t }\n\t\t: null;\n\n\t/**\n\t * Add a .wp-spotlit class to the referenced element so that we can\n\t * apply CSS styles to it, for whatever purposes such as interactivity\n\t */\n\tuseEffect( () => {\n\t\treferenceElement?.classList.add( SPOTLIT_ELEMENT_CLASS );\n\t\treturn () => {\n\t\t\treferenceElement?.classList.remove( SPOTLIT_ELEMENT_CLASS );\n\t\t};\n\t}, [ referenceElement ] );\n\n\treturn (\n\t\t<>\n\t\t\t<SpotlightInteractivity { ...interactivity } />\n\t\t\t<Overlay visible={ ! clipRepositionProps } />\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'tour-kit-spotlight', {\n\t\t\t\t\t'is-visible': !! clipRepositionProps,\n\t\t\t\t} ) }\n\t\t\t\tref={ sePopperElement }\n\t\t\t\t{ ...( clipRepositionProps as React.HTMLAttributes< HTMLDivElement > ) }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default TourKitSpotlight;\n","/**\n * External Dependencies\n */\nimport { useMobileBreakpoint } from '@automattic/viewport-react';\nimport classnames from 'classnames';\n/**\n * Internal Dependencies\n */\nimport { classParser } from '../utils';\nimport type { Config, TourStepRendererProps } from '../types';\n\ninterface Props extends TourStepRendererProps {\n\tconfig: Config;\n}\n\nconst TourKitStep: React.FunctionComponent< Props > = ( {\n\tconfig,\n\tsteps,\n\tcurrentStepIndex,\n\tonMinimize,\n\tonDismiss,\n\tonNextStep,\n\tonPreviousStep,\n\tsetInitialFocusedElement,\n\tonGoToStep,\n} ) => {\n\tconst isMobile = useMobileBreakpoint();\n\tconst classes = classnames(\n\t\t'tour-kit-step',\n\t\t`is-step-${ currentStepIndex }`,\n\t\tclassParser(\n\t\t\tconfig.steps[ currentStepIndex ].options?.classNames?.[ isMobile ? 'mobile' : 'desktop' ]\n\t\t)\n\t);\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t<config.renderers.tourStep\n\t\t\t\tsteps={ steps }\n\t\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\t\tonDismiss={ onDismiss }\n\t\t\t\tonNextStep={ onNextStep }\n\t\t\t\tonPreviousStep={ onPreviousStep }\n\t\t\t\tonMinimize={ onMinimize }\n\t\t\t\tsetInitialFocusedElement={ setInitialFocusedElement }\n\t\t\t\tonGoToStep={ onGoToStep }\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default TourKitStep;\n","// import { TourKitContextProvider } from './tour-kit-context';\nimport { createPortal, useEffect, useRef } from '@wordpress/element';\nimport React from 'react';\nimport ErrorBoundary from '../error-boundary';\nimport TourKitContextProvider from './tour-kit-context';\nimport TourKitFrame from './tour-kit-frame';\nimport type { Config } from '../types';\n\nimport '../styles.scss';\n\ninterface Props {\n\tconfig: Config;\n\t__temp__className?: string;\n}\n\nconst TourKit: React.FunctionComponent< Props > = ( { config, __temp__className } ) => {\n\tconst portalParent = useRef( document.createElement( 'div' ) ).current;\n\n\tuseEffect( () => {\n\t\tconst classes = [ 'tour-kit', ...( __temp__className ? [ __temp__className ] : [] ) ];\n\n\t\tportalParent.classList.add( ...classes );\n\n\t\tconst portalParentElement = config.options?.portalParentElement || document.body;\n\t\tportalParentElement.appendChild( portalParent );\n\n\t\treturn () => {\n\t\t\tportalParentElement.removeChild( portalParent );\n\t\t};\n\t}, [ __temp__className, portalParent, config.options?.portalParentElement ] );\n\n\treturn (\n\t\t<ErrorBoundary>\n\t\t\t<TourKitContextProvider config={ config }>\n\t\t\t\t<div>{ createPortal( <TourKitFrame config={ config } />, portalParent ) }</div>\n\t\t\t</TourKitContextProvider>\n\t\t</ErrorBoundary>\n\t);\n};\n\nexport default TourKit;\n","import React, { ErrorInfo } from 'react';\n\ntype State = {\n\thasError: boolean;\n};\n\nclass ErrorBoundary extends React.Component< { children: React.ReactNode }, State > {\n\tstate = {\n\t\thasError: false,\n\t};\n\n\tstatic getDerivedStateFromError() {\n\t\t// Update state so the next render will show the fallback UI.\n\t\treturn { hasError: true };\n\t}\n\n\tcomponentDidCatch( error: Error, errorInfo: ErrorInfo ) {\n\t\t// You can also log the error to an error reporting service\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( error, errorInfo );\n\t}\n\n\trender() {\n\t\tif ( this.state.hasError ) {\n\t\t\t// You can render any custom fallback UI\n\t\t\treturn <h1>Something went wrong.</h1>;\n\t\t}\n\n\t\treturn this.props.children;\n\t}\n}\n\nexport default ErrorBoundary;\n","/**\n * External Dependencies\n */\nimport { useEffect, useCallback, useState } from '@wordpress/element';\n\n/**\n * A hook that returns true/false if ref node receives focus by either tabbing or clicking into any of its children.\n *\n * @param ref React.MutableRefObject< null | HTMLElement >\n */\nconst useFocusHandler = ( ref: React.MutableRefObject< null | HTMLElement > ): boolean => {\n\tconst [ hasFocus, setHasFocus ] = useState( false );\n\n\tconst handleFocus = useCallback( () => {\n\t\tif ( document.hasFocus() && ref.current?.contains( document.activeElement ) ) {\n\t\t\tsetHasFocus( true );\n\t\t} else {\n\t\t\tsetHasFocus( false );\n\t\t}\n\t}, [ ref ] );\n\n\tconst handleMousedown = useCallback(\n\t\t( event ) => {\n\t\t\tif ( ref.current?.contains( event.target ) ) {\n\t\t\t\tsetHasFocus( true );\n\t\t\t} else {\n\t\t\t\tsetHasFocus( false );\n\t\t\t}\n\t\t},\n\t\t[ ref ]\n\t);\n\n\tconst handleKeyup = useCallback(\n\t\t( event ) => {\n\t\t\tif ( event.key === 'Tab' ) {\n\t\t\t\tif ( ref.current?.contains( event.target ) ) {\n\t\t\t\t\tsetHasFocus( true );\n\t\t\t\t} else {\n\t\t\t\t\tsetHasFocus( false );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[ ref ]\n\t);\n\n\tuseEffect( () => {\n\t\tdocument.addEventListener( 'focusin', handleFocus );\n\t\tdocument.addEventListener( 'mousedown', handleMousedown );\n\t\tdocument.addEventListener( 'keyup', handleKeyup );\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener( 'focusin', handleFocus );\n\t\t\tdocument.removeEventListener( 'mousedown', handleMousedown );\n\t\t\tdocument.removeEventListener( 'keyup', handleKeyup );\n\t\t};\n\t}, [ ref, handleFocus, handleKeyup, handleMousedown ] );\n\n\treturn hasFocus;\n};\n\nexport default useFocusHandler;\n","/**\n * External Dependencies\n */\nimport { focus } from '@wordpress/dom';\nimport { useEffect, useCallback, useState } from '@wordpress/element';\n/**\n * A hook that constraints tabbing/focus on focuable elements in the given element ref.\n *\n * @param ref React.MutableRefObject< null | HTMLElement >\n */\nconst useFocusTrap = ( ref: React.MutableRefObject< null | HTMLElement > ): void => {\n\tconst [ firstFocusableElement, setFirstFocusableElement ] = useState< HTMLElement | undefined >();\n\tconst [ lastFocusableElement, setLastFocusableElement ] = useState< HTMLElement | undefined >();\n\n\tconst handleTrapFocus = useCallback(\n\t\t( event ) => {\n\t\t\tlet handled = false;\n\n\t\t\tif ( event.key === 'Tab' ) {\n\t\t\t\tif ( event.shiftKey ) {\n\t\t\t\t\t// Shift + Tab\n\t\t\t\t\tif ( document.activeElement === firstFocusableElement ) {\n\t\t\t\t\t\tlastFocusableElement?.focus();\n\t\t\t\t\t\thandled = true;\n\t\t\t\t\t}\n\t\t\t\t} else if ( document.activeElement === lastFocusableElement ) {\n\t\t\t\t\t// Tab\n\t\t\t\t\tfirstFocusableElement?.focus();\n\t\t\t\t\thandled = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( handled ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t},\n\t\t[ firstFocusableElement, lastFocusableElement ]\n\t);\n\n\tuseEffect( () => {\n\t\tconst focusableElements = ref.current ? focus.focusable.find( ref.current as HTMLElement ) : [];\n\n\t\tif ( focusableElements && focusableElements.length ) {\n\t\t\tsetFirstFocusableElement( focusableElements[ 0 ] as HTMLElement );\n\t\t\tsetLastFocusableElement( focusableElements[ focusableElements.length - 1 ] as HTMLElement );\n\t\t}\n\n\t\tdocument.addEventListener( 'keydown', handleTrapFocus );\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener( 'keydown', handleTrapFocus );\n\t\t};\n\t}, [ ref, handleTrapFocus ] );\n};\n\nexport default useFocusTrap;\n","/* eslint-disable jsdoc/require-param */\n/**\n * External Dependencies\n */\nimport { useEffect, useCallback } from '@wordpress/element';\n\ninterface Props {\n\tonEscape?: () => void;\n\tonArrowRight?: () => void;\n\tonArrowLeft?: () => void;\n}\n\n/**\n * A hook the applies the respective callbacks in response to keydown events.\n */\nconst useKeydownHandler = ( { onEscape, onArrowRight, onArrowLeft }: Props ): void => {\n\tconst handleKeydown = useCallback(\n\t\t( event: KeyboardEvent ) => {\n\t\t\tlet handled = false;\n\n\t\t\tswitch ( event.key ) {\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tonEscape && ( onEscape(), ( handled = true ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\tonArrowRight && ( onArrowRight(), ( handled = true ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tonArrowLeft && ( onArrowLeft(), ( handled = true ) );\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif ( handled ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t},\n\t\t[ onEscape, onArrowRight, onArrowLeft ]\n\t);\n\n\tuseEffect( () => {\n\t\tdocument.addEventListener( 'keydown', handleKeydown );\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener( 'keydown', handleKeydown );\n\t\t};\n\t}, [ handleKeydown ] );\n};\n\nexport default useKeydownHandler;\n","/**\n * External Dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\n/**\n * Internal Dependencies\n */\nimport { Callback } from '../types';\n\nconst useStepTracking = (\n\tcurrentStepIndex: number,\n\tonStepViewOnce: Callback | undefined\n): void => {\n\tconst [ stepsViewed, setStepsViewed ] = useState< number[] >( [] );\n\n\tuseEffect( () => {\n\t\tif ( stepsViewed.includes( currentStepIndex ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetStepsViewed( ( prev ) => [ ...prev, currentStepIndex ] );\n\t\tonStepViewOnce?.( currentStepIndex );\n\t}, [ currentStepIndex, onStepViewOnce, stepsViewed ] );\n};\n\nexport default useStepTracking;\n","import debugFactory from 'debug';\n\n/**\n * Helper to convert CSV of `classes` to an array.\n *\n * @param classes String or array of classes to format.\n * @returns Array of classes\n */\nexport function classParser( classes?: string | string[] ): string[] | null {\n\tif ( classes?.length ) {\n\t\treturn classes.toString().split( ',' );\n\t}\n\n\treturn null;\n}\n\nexport const debug = debugFactory( 'tour-kit' );\n","import { debug } from '../utils';\nimport type { ModifierArguments, Options, State } from '@popperjs/core';\nimport type { Modifier } from 'react-popper';\n\n// Adds the resizeObserver and mutationObserver properties to the popper effect function argument\ntype ModifierArgumentsWithObserversProp = ModifierArguments< Options > & {\n\tstate: State & {\n\t\telements: State[ 'elements' ] & {\n\t\t\treference: State[ 'elements' ][ 'reference' ] & {\n\t\t\t\t[ key: symbol ]: {\n\t\t\t\t\tresizeObserver: ResizeObserver;\n\t\t\t\t\tmutationObserver: MutationObserver;\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n};\n\nexport interface LiveResizeConfiguration {\n\t/** CSS Selector for the the DOM node (and children) to observe for mutations */\n\trootElementSelector?: string;\n\t/** True to enable update on reference element resize, defaults to false */\n\tresize?: boolean;\n\t/** True to enable update on node and subtree mutation, defaults to false. May be performance intensive */\n\tmutation?: boolean;\n}\n\ntype liveResizeModifierFactory = (\n\tparams: LiveResizeConfiguration | undefined\n) => Modifier< 'liveResizeModifier', Record< string, unknown > >;\n\n/**\n * Function that returns a Popper modifier that observes the specified root element as well as\n * reference element for any changes. The reason for being a currying function is so that\n * we can customise the root element selector, otherwise observing at a higher than necessary\n * level might cause unnecessary performance penalties.\n *\n * The Popper modifier queues an asynchronous update on the Popper instance whenever either of the\n * Observers trigger its callback.\n *\n * @returns custom Popper modifier\n */\nexport const liveResizeModifier: liveResizeModifierFactory = (\n\t{ rootElementSelector, mutation = false, resize = false }: LiveResizeConfiguration = {\n\t\tmutation: false,\n\t\tresize: false,\n\t}\n) => ( {\n\tname: 'liveResizeModifier',\n\tenabled: true,\n\tphase: 'main',\n\tfn: () => {\n\t\treturn;\n\t},\n\teffect: ( arg0 ) => {\n\t\ttry {\n\t\t\tconst { state, instance } = arg0 as ModifierArgumentsWithObserversProp; // augment types here because we are mutating the properties on the argument that is passed in\n\n\t\t\tconst ObserversProp = Symbol(); // use a symbol here so that we don't clash with multiple poppers using this modifier on the same reference node\n\t\t\tconst { reference } = state.elements;\n\n\t\t\treference[ ObserversProp ] = {\n\t\t\t\tresizeObserver: new ResizeObserver( () => {\n\t\t\t\t\tinstance.update();\n\t\t\t\t} ),\n\n\t\t\t\tmutationObserver: new MutationObserver( () => {\n\t\t\t\t\tinstance.update();\n\t\t\t\t} ),\n\t\t\t};\n\n\t\t\tif ( resize ) {\n\t\t\t\tif ( reference instanceof Element ) {\n\t\t\t\t\treference[ ObserversProp ].resizeObserver.observe( reference );\n\t\t\t\t} else {\n\t\t\t\t\tdebug(\n\t\t\t\t\t\t'Error: ResizeObserver does not work with virtual elements, Tour Kit will not resize automatically if the size of the referenced element changes.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( mutation ) {\n\t\t\t\tconst rootElementNode = document.querySelector( rootElementSelector || '#wpwrap' );\n\t\t\t\tif ( rootElementNode instanceof Element ) {\n\t\t\t\t\treference[ ObserversProp ].mutationObserver.observe( rootElementNode, {\n\t\t\t\t\t\tattributes: true,\n\t\t\t\t\t\tcharacterData: true,\n\t\t\t\t\t\tchildList: true,\n\t\t\t\t\t\tsubtree: true,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tdebug(\n\t\t\t\t\t\t`Error: ${ rootElementSelector } selector did not find a valid DOM element, Tour Kit will not update automatically if the DOM layout changes.`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\treference[ ObserversProp ].resizeObserver.disconnect();\n\t\t\t\treference[ ObserversProp ].mutationObserver.disconnect();\n\t\t\t\tdelete reference[ ObserversProp ];\n\t\t\t};\n\t\t} catch ( error ) {\n\t\t\tdebug( 'Error: Tour Kit live resize modifier failed unexpectedly:', error );\n\t\t}\n\t},\n} );\n","import { Button, Flex } from '@wordpress/components';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { sprintf } from '@wordpress/i18n';\nimport { Icon, close } from '@wordpress/icons';\nimport { useI18n } from '@wordpress/react-i18n';\nimport maximize from '../icons/maximize';\nimport type { MinimizedTourRendererProps } from '../../../types';\n\nconst WpcomTourKitMinimized: React.FunctionComponent< MinimizedTourRendererProps > = ( {\n\tsteps,\n\tonMaximize,\n\tonDismiss,\n\tcurrentStepIndex,\n} ) => {\n\tconst { __ } = useI18n();\n\tconst lastStepIndex = steps.length - 1;\n\tconst page = currentStepIndex + 1;\n\tconst numberOfPages = lastStepIndex + 1;\n\n\treturn (\n\t\t<Flex gap={ 0 } className=\"wpcom-tour-kit-minimized\">\n\t\t\t<Button onClick={ onMaximize } aria-label={ __( 'Resume Tour', __i18n_text_domain__ ) }>\n\t\t\t\t<Flex gap={ 13 }>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t/* translators: 1: current page number, 2: total number of pages */\n\t\t\t\t\t\t\t\t__( 'Resume tour <span>(%1$d/%2$d)</span>', __i18n_text_domain__ ),\n\t\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\t\tnumberOfPages\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tspan: <span className=\"wpcom-tour-kit-minimized__tour-index\" />,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t\t<Icon icon={ maximize } size={ 24 } />\n\t\t\t\t</Flex>\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tonClick={ onDismiss( 'close-btn-minimized' ) }\n\t\t\t\taria-label={ __( 'Close Tour', __i18n_text_domain__ ) }\n\t\t\t>\n\t\t\t\t<Icon icon={ close } size={ 24 } />\n\t\t\t</Button>\n\t\t</Flex>\n\t);\n};\n\nexport default WpcomTourKitMinimized;\n","import { Button } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { useI18n } from '@wordpress/react-i18n';\nimport classNames from 'classnames';\nimport { useTourKitContext } from '../../../index';\nimport thumbsDown from '../icons/thumbs_down';\nimport thumbsUp from '../icons/thumbs_up';\nimport type { WpcomConfig } from '../../../index';\n\nconst WpcomTourKitRating: React.FunctionComponent = () => {\n\tconst [ tempRating, setTempRating ] = useState< 'thumbs-up' | 'thumbs-down' >();\n\tconst context = useTourKitContext();\n\tconst config = context.config as unknown as WpcomConfig;\n\tconst tourRating = config.options?.tourRating?.useTourRating?.() ?? tempRating;\n\tconst { __ } = useI18n();\n\n\tlet isDisabled = false;\n\n\tif ( ! config.options?.tourRating?.enabled ) {\n\t\treturn null;\n\t}\n\n\t// check is on tempRating to allow rerating in a restarted tour\n\tif ( ! isDisabled && tempRating !== undefined ) {\n\t\tisDisabled = true;\n\t}\n\n\tconst rateTour = ( isThumbsUp: boolean ) => {\n\t\tif ( isDisabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst rating = isThumbsUp ? 'thumbs-up' : 'thumbs-down';\n\n\t\tif ( rating !== tourRating ) {\n\t\t\tisDisabled = true;\n\t\t\tsetTempRating( rating );\n\t\t\tconfig.options?.tourRating?.onTourRate?.( rating );\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<p className=\"wpcom-tour-kit-rating__end-text\">\n\t\t\t\t{ __( 'Did you find this guide helpful?', __i18n_text_domain__ ) }\n\t\t\t</p>\n\t\t\t<div>\n\t\t\t\t<Button\n\t\t\t\t\taria-label={ __( 'Rate thumbs up', __i18n_text_domain__ ) }\n\t\t\t\t\tclassName={ classNames( 'wpcom-tour-kit-rating__end-icon', {\n\t\t\t\t\t\tactive: tourRating === 'thumbs-up',\n\t\t\t\t\t} ) }\n\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\ticon={ thumbsUp }\n\t\t\t\t\tonClick={ () => rateTour( true ) }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t\t<Button\n\t\t\t\t\taria-label={ __( 'Rate thumbs down', __i18n_text_domain__ ) }\n\t\t\t\t\tclassName={ classNames( 'wpcom-tour-kit-rating__end-icon', {\n\t\t\t\t\t\tactive: tourRating === 'thumbs-down',\n\t\t\t\t\t} ) }\n\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\ticon={ thumbsDown }\n\t\t\t\t\tonClick={ () => rateTour( false ) }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default WpcomTourKitRating;\n","import { PaginationControl } from '@automattic/components';\nimport { Button } from '@wordpress/components';\nimport { useI18n } from '@wordpress/react-i18n';\nimport type { WpcomTourStepRendererProps } from '../../../types';\n\ntype Props = Omit< WpcomTourStepRendererProps, 'onMinimize' >;\n\nconst WpcomTourKitStepCardNavigation: React.FunctionComponent< Props > = ( {\n\tcurrentStepIndex,\n\tonDismiss,\n\tonGoToStep,\n\tonNextStep,\n\tonPreviousStep,\n\tsetInitialFocusedElement,\n\tsteps,\n} ) => {\n\tconst { __ } = useI18n();\n\tconst isFirstStep = currentStepIndex === 0;\n\tconst lastStepIndex = steps.length - 1;\n\n\treturn (\n\t\t<>\n\t\t\t<PaginationControl\n\t\t\t\tactivePageIndex={ currentStepIndex }\n\t\t\t\tnumberOfPages={ lastStepIndex + 1 }\n\t\t\t\tonChange={ onGoToStep }\n\t\t\t>\n\t\t\t\t{ isFirstStep ? (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<Button isTertiary onClick={ onDismiss( 'no-thanks-btn' ) }>\n\t\t\t\t\t\t\t{ __( 'Skip', __i18n_text_domain__ ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"wpcom-tour-kit-step-card-navigation__next-btn\"\n\t\t\t\t\t\t\tisPrimary\n\t\t\t\t\t\t\tonClick={ onNextStep }\n\t\t\t\t\t\t\tref={ setInitialFocusedElement }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Try it out!', __i18n_text_domain__ ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<Button isTertiary onClick={ onPreviousStep }>\n\t\t\t\t\t\t\t{ __( 'Back', __i18n_text_domain__ ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"wpcom-tour-kit-step-card-navigation__next-btn\"\n\t\t\t\t\t\t\tisPrimary\n\t\t\t\t\t\t\tonClick={ onNextStep }\n\t\t\t\t\t\t\tref={ setInitialFocusedElement }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Next', __i18n_text_domain__ ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</PaginationControl>\n\t\t</>\n\t);\n};\n\nexport default WpcomTourKitStepCardNavigation;\n","import { Button, Flex } from '@wordpress/components';\nimport { close } from '@wordpress/icons';\nimport { useI18n } from '@wordpress/react-i18n';\nimport minimize from '../icons/minimize';\nimport type { TourStepRendererProps } from '../../../types';\n\ninterface Props {\n\tonMinimize: TourStepRendererProps[ 'onMinimize' ];\n\tonDismiss: TourStepRendererProps[ 'onDismiss' ];\n}\n\nconst WpcomTourKitStepCardOverlayControls: React.FunctionComponent< Props > = ( {\n\tonMinimize,\n\tonDismiss,\n} ) => {\n\tconst { __ } = useI18n();\n\n\treturn (\n\t\t<div className=\"wpcom-tour-kit-step-card-overlay-controls\">\n\t\t\t<Flex>\n\t\t\t\t<Button\n\t\t\t\t\tlabel={ __( 'Minimize Tour', __i18n_text_domain__ ) }\n\t\t\t\t\tisPrimary\n\t\t\t\t\tclassName=\"wpcom-tour-kit-step-card-overlay-controls__minimize-icon\"\n\t\t\t\t\ticon={ minimize }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\tonClick={ onMinimize }\n\t\t\t\t></Button>\n\t\t\t\t<Button\n\t\t\t\t\tlabel={ __( 'Close Tour', __i18n_text_domain__ ) }\n\t\t\t\t\tisPrimary\n\t\t\t\t\ticon={ close }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\tonClick={ onDismiss( 'close-btn' ) }\n\t\t\t\t></Button>\n\t\t\t</Flex>\n\t\t</div>\n\t);\n};\n\nexport default WpcomTourKitStepCardOverlayControls;\n","import { getMediaQueryList, isMobile, MOBILE_BREAKPOINT } from '@automattic/viewport';\nimport { Button, Card, CardBody, CardFooter, CardMedia } from '@wordpress/components';\nimport { useI18n } from '@wordpress/react-i18n';\nimport WpcomTourKitRating from './wpcom-tour-kit-rating';\nimport WpcomTourKitStepCardNavigation from './wpcom-tour-kit-step-card-navigation';\nimport WpcomTourKitStepCardOverlayControls from './wpcom-tour-kit-step-card-overlay-controls';\nimport type { WpcomTourStepRendererProps } from '../../../types';\n\nconst WpcomTourKitStepCard: React.FunctionComponent< WpcomTourStepRendererProps > = ( {\n\tsteps,\n\tcurrentStepIndex,\n\tonMinimize,\n\tonDismiss,\n\tonGoToStep,\n\tonNextStep,\n\tonPreviousStep,\n\tsetInitialFocusedElement,\n} ) => {\n\tconst { __ } = useI18n();\n\tconst lastStepIndex = steps.length - 1;\n\tconst { descriptions, heading, imgSrc } = steps[ currentStepIndex ].meta;\n\tconst isLastStep = currentStepIndex === lastStepIndex;\n\n\tconst description = descriptions[ isMobile() ? 'mobile' : 'desktop' ] ?? descriptions.desktop;\n\n\t// @todo check why the assertion is needed here to pass TS\n\tconst mediaQueryList = getMediaQueryList( MOBILE_BREAKPOINT ) as MediaQueryList | undefined;\n\n\treturn (\n\t\t<Card className=\"wpcom-tour-kit-step-card\" isElevated>\n\t\t\t<WpcomTourKitStepCardOverlayControls onDismiss={ onDismiss } onMinimize={ onMinimize } />\n\t\t\t{ imgSrc && (\n\t\t\t\t<CardMedia className=\"wpcom-tour-kit-step-card__media\">\n\t\t\t\t\t<picture>\n\t\t\t\t\t\t{ imgSrc.mobile && (\n\t\t\t\t\t\t\t<source\n\t\t\t\t\t\t\t\tsrcSet={ imgSrc.mobile.src }\n\t\t\t\t\t\t\t\ttype={ imgSrc.mobile.type }\n\t\t\t\t\t\t\t\tmedia={ mediaQueryList?.media }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<img alt={ __( 'Tour Media', __i18n_text_domain__ ) } src={ imgSrc.desktop?.src } />\n\t\t\t\t\t</picture>\n\t\t\t\t</CardMedia>\n\t\t\t) }\n\t\t\t<CardBody>\n\t\t\t\t<h2 className=\"wpcom-tour-kit-step-card__heading\">{ heading }</h2>\n\t\t\t\t<p className=\"wpcom-tour-kit-step-card__description\">\n\t\t\t\t\t{ description }\n\t\t\t\t\t{ isLastStep ? (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"wpcom-tour-kit-step-card__description\"\n\t\t\t\t\t\t\tisTertiary\n\t\t\t\t\t\t\tonClick={ () => onGoToStep( 0 ) }\n\t\t\t\t\t\t\tref={ setInitialFocusedElement }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Restart tour', __i18n_text_domain__ ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) : null }\n\t\t\t\t</p>\n\t\t\t</CardBody>\n\t\t\t<CardFooter>\n\t\t\t\t{ isLastStep ? (\n\t\t\t\t\t<WpcomTourKitRating />\n\t\t\t\t) : (\n\t\t\t\t\t<WpcomTourKitStepCardNavigation\n\t\t\t\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\t\t\t\tonDismiss={ onDismiss }\n\t\t\t\t\t\tonGoToStep={ onGoToStep }\n\t\t\t\t\t\tonNextStep={ onNextStep }\n\t\t\t\t\t\tonPreviousStep={ onPreviousStep }\n\t\t\t\t\t\tsetInitialFocusedElement={ setInitialFocusedElement }\n\t\t\t\t\t\tsteps={ steps }\n\t\t\t\t\t></WpcomTourKitStepCardNavigation>\n\t\t\t\t) }\n\t\t\t</CardFooter>\n\t\t</Card>\n\t);\n};\n\nexport default WpcomTourKitStepCard;\n","import WpcomTourKitStepCard from './wpcom-tour-kit-step-card';\nimport type { WpcomTourStepRendererProps } from '../../../types';\n\nconst WpcomTourKitStep: React.FunctionComponent< WpcomTourStepRendererProps > = ( {\n\tsteps,\n\tcurrentStepIndex,\n\tonDismiss,\n\tonNextStep,\n\tonPreviousStep,\n\tonMinimize,\n\tsetInitialFocusedElement,\n\tonGoToStep,\n} ) => {\n\treturn (\n\t\t<WpcomTourKitStepCard\n\t\t\tsteps={ steps }\n\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\tonDismiss={ onDismiss }\n\t\t\tonMinimize={ onMinimize }\n\t\t\tonGoToStep={ onGoToStep }\n\t\t\tonNextStep={ onNextStep }\n\t\t\tonPreviousStep={ onPreviousStep }\n\t\t\tsetInitialFocusedElement={ setInitialFocusedElement }\n\t\t/>\n\t);\n};\n\nexport default WpcomTourKitStep;\n","import TourKit from '../../../components/tour-kit';\nimport usePrefetchTourAssets from '../hooks/use-prefetch-tour-assets';\nimport WpcomTourKitMinimized from './wpcom-tour-kit-minimized';\nimport WpcomTourKitStep from './wpcom-tour-kit-step';\nimport '../styles.scss';\nimport type { WpcomConfig, TourStepRenderer } from '../../../types';\n\ninterface Props {\n\tconfig: WpcomConfig;\n}\n\nconst WpcomTourKit: React.FunctionComponent< Props > = ( { config } ) => {\n\tusePrefetchTourAssets( config.steps );\n\n\treturn (\n\t\t<TourKit\n\t\t\t__temp__className={ 'wpcom-tour-kit' }\n\t\t\tconfig={ {\n\t\t\t\t...config,\n\t\t\t\trenderers: {\n\t\t\t\t\ttourStep: WpcomTourKitStep as TourStepRenderer,\n\t\t\t\t\ttourMinimized: WpcomTourKitMinimized,\n\t\t\t\t},\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nexport default WpcomTourKit;\n","import { useEffect } from '@wordpress/element';\nimport type { WpcomStep } from '../../../types';\n\nexport default function usePrefetchTourAssets( steps: WpcomStep[] ): void {\n\tuseEffect( () => {\n\t\tsteps.forEach( ( step ) => {\n\t\t\tstep.meta.imgSrc?.mobile && ( new window.Image().src = step.meta.imgSrc.mobile.src );\n\t\t\tstep.meta.imgSrc?.desktop && ( new window.Image().src = step.meta.imgSrc.desktop.src );\n\t\t} );\n\t}, [ steps ] );\n}\n","import { SVG, Path } from '@wordpress/primitives';\n\nconst minimize = (\n\t<SVG width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M14.086 5.412l3.476-.015c-.627.625-1.225 1.22-1.82 1.81l-.03.031c-.977.971-1.944 1.934-3.015 3.004l1.06 1.061c1.07-1.07 2.036-2.03 3.013-3.002l.03-.03 1.817-1.808-.03 3.448 1.5.013.046-5.28.007-.759-.76.003-5.301.024.007 1.5zM9.914 18.587l-3.476.016c.627-.625 1.225-1.22 1.82-1.81l.03-.031c.977-.971 1.944-1.934 3.015-3.004l-1.06-1.061c-1.07 1.069-2.036 2.03-3.012 3.001l-.001.001-.03.03-1.817 1.808.03-3.448-1.5-.013-.046 5.279-.007.76.76-.003 5.301-.024-.007-1.5z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default minimize;\n","import { SVG, Path } from '@wordpress/primitives';\n\nconst minimize = (\n\t<SVG width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M18.514 9.988l-3.476.016c.627-.626 1.225-1.22 1.82-1.811l.03-.03v-.001c.977-.971 1.944-1.933 3.015-3.004l-1.06-1.06c-1.07 1.069-2.037 2.03-3.013 3.001l-.03.03-1.818 1.809.03-3.449-1.5-.013-.045 5.28-.007.76.76-.004 5.301-.024-.007-1.5zM5.486 14.012l3.477-.016-1.82 1.811-.03.03c-.977.972-1.945 1.934-3.015 3.005l1.06 1.06c1.07-1.068 2.035-2.03 3.012-3V16.9l.03-.03 1.818-1.809-.03 3.449 1.5.013.046-5.28.006-.76-.76.004-5.3.024.006 1.5z\"\n\t\t\tfill=\"#fff\"\n\t\t/>\n\t</SVG>\n);\n\nexport default minimize;\n","import { SVG, Path } from '@wordpress/primitives';\n\nconst thumbsDown = (\n\t<SVG width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M13.131 19.12a.667.667 0 001.227-.417l-.436-4.989h3.88c.954 0 1.64-.916 1.37-1.831L17.42 5.919a.286.286 0 00-.274-.205H9.429v7.588l3.702 5.818zm-5.417-5.977V5.714h-2v7.429h2zm5.98 8a2.381 2.381 0 01-2.01-1.103l-3.297-5.183H4V4h13.145a2 2 0 011.919 1.436l1.753 5.963a3.143 3.143 0 01-3.015 4.03h-2.01l.274 3.125a2.381 2.381 0 01-2.372 2.589z\"\n\t\t\tfill=\"#000\"\n\t\t/>\n\t</SVG>\n);\n\nexport default thumbsDown;\n","import { SVG, Path } from '@wordpress/primitives';\n\nconst thumbsUp = (\n\t<SVG width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/SVG\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M13.131 4.023a.667.667 0 011.227.416l-.436 4.99h3.88c.954 0 1.64.916 1.37 1.831l-1.753 5.963a.286.286 0 01-.274.206H9.429V9.84l3.702-5.818zM7.714 10v7.428h-2V10h2zm5.98-8c-.814 0-1.572.416-2.01 1.103L8.388 8.286H4v10.857h13.145a2 2 0 001.919-1.436l1.753-5.963a3.143 3.143 0 00-3.015-4.03h-2.01l.274-3.125A2.381 2.381 0 0013.694 2z\"\n\t\t\tfill=\"#000\"\n\t\t/>\n\t</SVG>\n);\n\nexport default thumbsUp;\n","import {\n\tisWithinBreakpoint,\n\tsubscribeIsWithinBreakpoint,\n\tMOBILE_BREAKPOINT,\n\tDESKTOP_BREAKPOINT,\n} from '@automattic/viewport';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { forwardRef, useState, useEffect } from 'react';\n\n/**\n * React hook for getting the status for a breakpoint and keeping it updated.\n *\n * @param {string} breakpoint The breakpoint to consider.\n * @returns {boolean} The current status for the breakpoint.\n */\nexport function useBreakpoint( breakpoint ) {\n\tconst [ state, setState ] = useState( () => ( {\n\t\tisActive: isWithinBreakpoint( breakpoint ),\n\t\tbreakpoint,\n\t} ) );\n\n\tuseEffect( () => {\n\t\tfunction handleBreakpointChange( isActive ) {\n\t\t\tsetState( ( prevState ) => {\n\t\t\t\t// Ensure we bail out without rendering if nothing changes, by preserving state.\n\t\t\t\tif ( prevState.isActive === isActive && prevState.breakpoint === breakpoint ) {\n\t\t\t\t\treturn prevState;\n\t\t\t\t}\n\t\t\t\treturn { isActive, breakpoint };\n\t\t\t} );\n\t\t}\n\n\t\tconst unsubscribe = subscribeIsWithinBreakpoint( breakpoint, handleBreakpointChange );\n\t\t// The unsubscribe function is the entire cleanup for the effect.\n\t\treturn unsubscribe;\n\t}, [ breakpoint ] );\n\n\treturn breakpoint === state.breakpoint ? state.isActive : isWithinBreakpoint( breakpoint );\n}\n\n/**\n * React hook for getting the status for the mobile breakpoint and keeping it\n * updated.\n *\n * @returns {boolean} The current status for the breakpoint.\n */\nexport function useMobileBreakpoint() {\n\treturn useBreakpoint( MOBILE_BREAKPOINT );\n}\n\n/**\n * React hook for getting the status for the desktop breakpoint and keeping it\n * updated.\n *\n * @returns {boolean} The current status for the breakpoint.\n */\nexport function useDesktopBreakpoint() {\n\treturn useBreakpoint( DESKTOP_BREAKPOINT );\n}\n\n/**\n * React higher order component for getting the status for a breakpoint and\n * keeping it updated.\n *\n * @param {string} breakpoint The breakpoint to consider.\n * @returns {Function} A function that given a component returns the\n * wrapped component.\n */\nexport const withBreakpoint = ( breakpoint ) =>\n\tcreateHigherOrderComponent(\n\t\t( WrappedComponent ) =>\n\t\t\tforwardRef( ( props, ref ) => {\n\t\t\t\tconst isActive = useBreakpoint( breakpoint );\n\t\t\t\treturn <WrappedComponent { ...props } isBreakpointActive={ isActive } ref={ ref } />;\n\t\t\t} ),\n\t\t'WithBreakpoint'\n\t);\n\n/**\n * React higher order component for getting the status for the mobile\n * breakpoint and keeping it updated.\n *\n * @param {import('react').Component|Function} Wrapped The component to wrap.\n * @returns {Function} The wrapped component.\n */\nexport const withMobileBreakpoint = createHigherOrderComponent(\n\t( WrappedComponent ) =>\n\t\tforwardRef( ( props, ref ) => {\n\t\t\tconst isActive = useBreakpoint( MOBILE_BREAKPOINT );\n\t\t\treturn <WrappedComponent { ...props } isBreakpointActive={ isActive } ref={ ref } />;\n\t\t} ),\n\t'WithMobileBreakpoint'\n);\n\n/**\n * React higher order component for getting the status for the desktop\n * breakpoint and keeping it updated.\n *\n * @param {import('react').Component|Function} Wrapped The component to wrap.\n * @returns {Function} The wrapped component.\n */\nexport const withDesktopBreakpoint = createHigherOrderComponent(\n\t( WrappedComponent ) =>\n\t\tforwardRef( ( props, ref ) => {\n\t\t\tconst isActive = useBreakpoint( DESKTOP_BREAKPOINT );\n\t\t\treturn <WrappedComponent { ...props } isBreakpointActive={ isActive } ref={ ref } />;\n\t\t} ),\n\t'WithDesktopBreakpoint'\n);\n","// Determine whether a user is viewing calypso from a device within a\n// particular mobile-first responsive breakpoint, matching our existing media\n// queries. [1]\n//\n// This function takes a string matching one of our mobile-first breakpoints\n// and returns a boolean based on whether the current `window.innerWidth`\n// matches. This is used to segment behavior based on device or browser size,\n// but should not be used in place of css for design.\n//\n// Valid breakpoints include:\n// - '<480px'\n// - '<660px'\n// - '<800px'\n// - '<960px'\n// - '<1040px'\n// - '<1280px'\n// - '<1400px'\n// - '>480px'\n// - '>660px'\n// - '>800px'\n// - '>960px'\n// - '>1040px'\n// - '>1280px'\n// - '>1400px'\n// - '480px-660px'\n// - '480px-960px'\n// - '660px-960px'\n//\n// As implemented in our sass media query mixins, minimums are exclusive, while\n// maximums are inclusive. i.e.,\n//\n// - '>480px' is equivalent to `@media (min-width: 481px)`\n// - '<960px' is equivalent to `@media (max-width: 960px)`\n// - '480px-960px' is equivalent to `@media (max-width: 960px) and (min-width: 481px)`\n//\n// [1] https://github.com/Automattic/wp-calypso/blob/HEAD/docs/coding-guidelines/css.md#media-queries\n//\n\n// FIXME: We can't detect window size on the server, so until we have more intelligent detection,\n// use 769, which is just above the general maximum mobile screen width.\nconst SERVER_WIDTH = 769;\n\nexport const MOBILE_BREAKPOINT = '<480px';\nexport const DESKTOP_BREAKPOINT = '>960px';\n\nconst isServer = typeof window === 'undefined' || ! window.matchMedia;\n\nconst noop = () => null;\n\nexport type QueryItem = false | MinimalMediaQueryList | MediaQueryList;\nexport type ListenerCallback = ( matches: boolean ) => void;\nexport type UnsubcribeCallback = () => void;\nexport type MinimalMediaQueryList = {\n\tmatches: boolean;\n\taddListener: MediaQueryList[ 'addListener' ];\n\tremoveListener: MediaQueryList[ 'removeListener' ];\n};\n\nfunction addListenerFunctions(\n\tobj: Pick< MinimalMediaQueryList, 'matches' >\n): MinimalMediaQueryList {\n\treturn {\n\t\taddListener: () => undefined,\n\t\tremoveListener: () => undefined,\n\t\t...obj,\n\t};\n}\n\nfunction createMediaQueryList( args?: { min?: number; max?: number } ): QueryItem {\n\tconst { min, max } = args ?? {};\n\tif ( min !== undefined && max !== undefined ) {\n\t\treturn isServer\n\t\t\t? addListenerFunctions( { matches: SERVER_WIDTH > min && SERVER_WIDTH <= max } )\n\t\t\t: window.matchMedia( `(min-width: ${ min + 1 }px) and (max-width: ${ max }px)` );\n\t}\n\n\tif ( min !== undefined ) {\n\t\treturn isServer\n\t\t\t? addListenerFunctions( { matches: SERVER_WIDTH > min } )\n\t\t\t: window.matchMedia( `(min-width: ${ min + 1 }px)` );\n\t}\n\n\tif ( max !== undefined ) {\n\t\treturn isServer\n\t\t\t? addListenerFunctions( { matches: SERVER_WIDTH <= max } )\n\t\t\t: window.matchMedia( `(max-width: ${ max }px)` );\n\t}\n\n\treturn false;\n}\n\nconst mediaQueryLists: Record< string, QueryItem > = {\n\t'<480px': createMediaQueryList( { max: 480 } ),\n\t'<660px': createMediaQueryList( { max: 660 } ),\n\t'<782px': createMediaQueryList( { max: 782 } ),\n\t'<800px': createMediaQueryList( { max: 800 } ),\n\t'<960px': createMediaQueryList( { max: 960 } ),\n\t'<1040px': createMediaQueryList( { max: 1040 } ),\n\t'<1280px': createMediaQueryList( { max: 1280 } ),\n\t'<1400px': createMediaQueryList( { max: 1400 } ),\n\t'>480px': createMediaQueryList( { min: 480 } ),\n\t'>660px': createMediaQueryList( { min: 660 } ),\n\t'>782px': createMediaQueryList( { min: 782 } ),\n\t'>800px': createMediaQueryList( { min: 800 } ),\n\t'>960px': createMediaQueryList( { min: 960 } ),\n\t'>1040px': createMediaQueryList( { min: 1040 } ),\n\t'>1280px': createMediaQueryList( { min: 1280 } ),\n\t'>1400px': createMediaQueryList( { min: 1400 } ),\n\t'480px-660px': createMediaQueryList( { min: 480, max: 660 } ),\n\t'660px-960px': createMediaQueryList( { min: 660, max: 960 } ),\n\t'480px-960px': createMediaQueryList( { min: 480, max: 960 } ),\n};\n\nexport function getMediaQueryList( breakpoint: string ): undefined | QueryItem {\n\tif ( ! mediaQueryLists.hasOwnProperty( breakpoint ) ) {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn( 'Undefined breakpoint used in `mobile-first-breakpoint`', breakpoint );\n\t\t} catch ( e ) {}\n\t\treturn undefined;\n\t}\n\n\treturn mediaQueryLists[ breakpoint ];\n}\n\n/**\n * Returns whether the current window width matches a breakpoint.\n *\n * @param {string} breakpoint The breakpoint to consider.\n * @returns {boolean|undefined} Whether the provided breakpoint is matched.\n */\nexport function isWithinBreakpoint( breakpoint: string ): boolean | undefined {\n\tconst mediaQueryList = getMediaQueryList( breakpoint );\n\treturn mediaQueryList ? mediaQueryList.matches : undefined;\n}\n\n/**\n * Registers a listener to be notified of changes to breakpoint matching status.\n *\n * @param {string} breakpoint The breakpoint to consider.\n * @param {Function} listener The listener to be called on change.\n * @returns {Function} The function to be called when unsubscribing.\n */\nexport function subscribeIsWithinBreakpoint(\n\tbreakpoint: string,\n\tlistener: ListenerCallback\n): UnsubcribeCallback {\n\tif ( ! listener ) {\n\t\treturn noop;\n\t}\n\n\tconst mediaQueryList = getMediaQueryList( breakpoint );\n\n\tif ( mediaQueryList && ! isServer ) {\n\t\tconst wrappedListener = ( evt: { matches: boolean } ) => listener( evt.matches );\n\t\tmediaQueryList.addListener( wrappedListener );\n\t\t// Return unsubscribe function.\n\t\treturn () => mediaQueryList.removeListener( wrappedListener );\n\t}\n\n\treturn noop;\n}\n\n/**\n * Returns whether the current window width matches the mobile breakpoint.\n *\n * @returns {boolean|undefined} Whether the mobile breakpoint is matched.\n */\nexport function isMobile(): boolean | undefined {\n\treturn isWithinBreakpoint( MOBILE_BREAKPOINT );\n}\n\n/**\n * Registers a listener to be notified of changes to mobile breakpoint matching status.\n *\n * @param {Function} listener The listener to be called on change.\n * @returns {Function} The registered subscription; undefined if none.\n */\nexport function subscribeIsMobile( listener: ListenerCallback ): UnsubcribeCallback {\n\treturn subscribeIsWithinBreakpoint( MOBILE_BREAKPOINT, listener );\n}\n\n/**\n * Returns whether the current window width matches the desktop breakpoint.\n *\n * @returns {boolean|undefined} Whether the desktop breakpoint is matched.\n */\nexport function isDesktop(): boolean | undefined {\n\treturn isWithinBreakpoint( DESKTOP_BREAKPOINT );\n}\n\n/**\n * Registers a listener to be notified of changes to desktop breakpoint matching status.\n *\n * @param {Function} listener The listener to be called on change.\n * @returns {Function} The registered subscription; undefined if none.\n */\nexport function subscribeIsDesktop( listener: ListenerCallback ): UnsubcribeCallback {\n\treturn subscribeIsWithinBreakpoint( DESKTOP_BREAKPOINT, listener );\n}\n\n/**\n * Returns the current window width.\n * Avoid using this method, as it triggers a layout recalc.\n *\n * @returns {number} The current window width, in pixels.\n */\nexport function getWindowInnerWidth(): number {\n\treturn isServer ? SERVER_WIDTH : window.innerWidth;\n}\n\n/******************************************/\n/* Vertical Scroll Experiment */\n/* \t pcbrnV-XN-p2 */\n/******************************************/\n\n//TODO: To be refactored using above using the DESKTOP_BREAKPOINT constant\nexport function isTabletResolution(): boolean {\n\tif ( ! isServer ) {\n\t\treturn window.innerWidth < 1040;\n\t}\n\treturn false;\n}\n\nexport const DEVICE_MOBILE = 'mobile';\nexport const DEVICE_TABLET = 'tablet';\nexport const DEVICE_DESKTOP = 'desktop';\n\nexport function resolveDeviceTypeByViewPort(): string {\n\tif ( isMobile() ) {\n\t\treturn DEVICE_MOBILE;\n\t} else if ( isTabletResolution() ) {\n\t\treturn DEVICE_TABLET;\n\t}\n\treturn DEVICE_DESKTOP;\n}\n\n/******************************************/\n","import debugFactory from 'debug';\nimport ProgressEvent from 'progress-event';\nimport { v4 as uuidv4 } from 'uuid';\nimport WPError from 'wp-error';\n\n/**\n * debug instance\n */\nconst debug = debugFactory( 'wpcom-proxy-request' );\n\n/**\n * WordPress.com REST API base endpoint.\n */\nconst proxyOrigin = 'https://public-api.wordpress.com';\n\n/**\n * \"Origin\" of the current HTML page.\n */\nconst origin = window.location.protocol + '//' + window.location.host;\n\nlet onStreamRecord = null;\n\n/**\n * Detecting support for the structured clone algorithm. IE8 and 9, and Firefox\n * 6.0 and below only support strings as postMessage's message. This browsers\n * will try to use the toString method.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage\n * https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/The_structured_clone_algorithm\n * https://github.com/Modernizr/Modernizr/issues/388#issuecomment-31127462\n */\nconst postStrings = ( () => {\n\tlet r = false;\n\ttry {\n\t\twindow.postMessage(\n\t\t\t{\n\t\t\t\ttoString: function () {\n\t\t\t\t\tr = true;\n\t\t\t\t},\n\t\t\t},\n\t\t\t'*'\n\t\t);\n\t} catch ( e ) {\n\t\t/* empty */\n\t}\n\treturn r;\n} )();\n\n/**\n * Test if the browser supports constructing a new `File` object. Not present on Edge and IE.\n */\nconst supportsFileConstructor = ( () => {\n\ttry {\n\t\t// eslint-disable-next-line no-new\n\t\tnew window.File( [ 'a' ], 'test.jpg', { type: 'image/jpeg' } );\n\t\treturn true;\n\t} catch ( e ) {\n\t\treturn false;\n\t}\n} )();\n\n/**\n * Reference to the <iframe> DOM element.\n * Gets set in the install() function.\n */\nlet iframe = null;\n\n/**\n * Set to `true` upon the iframe's \"load\" event.\n */\nlet loaded = false;\n\n/**\n * Array of buffered API requests. Added to when API requests are done before the\n * proxy <iframe> is \"loaded\", and fulfilled once the \"load\" DOM event on the\n * iframe occurs.\n */\nlet buffered;\n\n/**\n * In-flight API request XMLHttpRequest dummy \"proxy\" instances.\n */\nconst requests = {};\n\n/**\n * Are HTML5 XMLHttpRequest2 \"progress\" events supported?\n * See: http://goo.gl/xxYf6D\n */\nconst supportsProgress = !! window.ProgressEvent && !! window.FormData;\n\ndebug( 'using \"origin\": %o', origin );\n\n/**\n * Performs a \"proxied REST API request\". This happens by calling\n * `iframe.postMessage()` on the proxy iframe instance, which from there\n * takes care of WordPress.com user authentication (via the currently\n * logged-in user's cookies).\n *\n * @param {object} originalParams - request parameters\n * @param {Function} [fn] - callback response\n * @returns {window.XMLHttpRequest} XMLHttpRequest instance\n */\nconst makeRequest = ( originalParams, fn ) => {\n\tconst params = Object.assign( {}, originalParams );\n\n\tdebug( 'request(%o)', params );\n\n\t// inject the <iframe> upon the first proxied API request\n\tif ( ! iframe ) {\n\t\tinstall();\n\t}\n\n\t// generate a uuid for this API request\n\tconst id = uuidv4();\n\tparams.callback = id;\n\tparams.supports_args = true; // supports receiving variable amount of arguments\n\tparams.supports_error_obj = true; // better Error object info\n\tparams.supports_progress = supportsProgress; // supports receiving XHR \"progress\" events\n\n\t// force uppercase \"method\" since that's what the <iframe> is expecting\n\tparams.method = String( params.method || 'GET' ).toUpperCase();\n\n\tdebug( 'params object: %o', params );\n\n\tconst xhr = new window.XMLHttpRequest();\n\txhr.params = params;\n\n\t// store the `XMLHttpRequest` instance so that \"onmessage\" can access it again\n\trequests[ id ] = xhr;\n\n\tif ( 'function' === typeof fn ) {\n\t\t// a callback function was provided\n\t\tlet called = false;\n\t\tconst xhrOnLoad = ( e ) => {\n\t\t\tif ( called ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcalled = true;\n\t\t\tconst body = e.response || xhr.response;\n\t\t\tdebug( 'body: ', body );\n\t\t\tdebug( 'headers: ', e.headers );\n\t\t\tfn( null, body, e.headers );\n\t\t};\n\t\tconst xhrOnError = ( e ) => {\n\t\t\tif ( called ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcalled = true;\n\t\t\tconst error = e.error || e.err || e;\n\t\t\tdebug( 'error: ', error );\n\t\t\tdebug( 'headers: ', e.headers );\n\t\t\tfn( error, null, e.headers );\n\t\t};\n\n\t\txhr.addEventListener( 'load', xhrOnLoad );\n\t\txhr.addEventListener( 'abort', xhrOnError );\n\t\txhr.addEventListener( 'error', xhrOnError );\n\t}\n\n\tif ( 'function' === typeof params.onStreamRecord ) {\n\t\t// remove onStreamRecord param, which can’t be cloned\n\t\tonStreamRecord = params.onStreamRecord;\n\t\tdelete params.onStreamRecord;\n\n\t\t// FIXME @azabani implement stream mode processing\n\t\t// Hint: port the algorithm from wpcom-xhr-request@1.2.0 to /public.api/rest-proxy/provider-\n\t\t// v2.0.js in rWP, then plumb stream records from onmessage below to onStreamRecord (or add\n\t\t// the XMLHttpRequest#response to ondownloadprogress there, then parse the chunks here).\n\t}\n\n\tif ( loaded ) {\n\t\tsubmitRequest( params );\n\t} else {\n\t\tdebug( 'buffering API request since proxying <iframe> is not yet loaded' );\n\t\tbuffered.push( params );\n\t}\n\n\treturn xhr;\n};\n\n/**\n * Performs a \"proxied REST API request\". This happens by calling\n * `iframe.postMessage()` on the proxy iframe instance, which from there\n * takes care of WordPress.com user authentication (via the currently\n * logged-in user's cookies).\n *\n * If no function is specified as second parameter, a promise is returned.\n *\n * @param {object} originalParams - request parameters\n * @param {Function} [fn] - callback response\n * @returns {window.XMLHttpRequest|Promise} XMLHttpRequest instance or Promise\n */\nconst request = ( originalParams, fn ) => {\n\t// if callback is provided, behave traditionally\n\tif ( 'function' === typeof fn ) {\n\t\t// request method\n\t\treturn makeRequest( originalParams, fn );\n\t}\n\n\t// but if not, return a Promise\n\treturn new Promise( ( res, rej ) => {\n\t\tmakeRequest( originalParams, ( err, response ) => {\n\t\t\terr ? rej( err ) : res( response );\n\t\t} );\n\t} );\n};\n\n/**\n * Set proxy to \"access all users' blogs\" mode.\n */\nexport function requestAllBlogsAccess() {\n\treturn request( { metaAPI: { accessAllUsersBlogs: true } } );\n}\n\n/**\n * Calls the `postMessage()` function on the <iframe>.\n *\n * @param {object} params\n */\n\nfunction submitRequest( params ) {\n\tdebug( 'sending API request to proxy <iframe> %o', params );\n\n\t// `formData` needs to be patched if it contains `File` objects to work around\n\t// a Chrome bug. See `patchFileObjects` description for more details.\n\tif ( params.formData ) {\n\t\tpatchFileObjects( params.formData );\n\t}\n\n\tiframe.contentWindow.postMessage( postStrings ? JSON.stringify( params ) : params, proxyOrigin );\n}\n\n/**\n * Returns `true` if `v` is a DOM File instance, `false` otherwise.\n *\n * @param {any} v - instance to analyze\n * @returns {boolean} `true` if `v` is a DOM File instance\n */\nfunction isFile( v ) {\n\treturn v && Object.prototype.toString.call( v ) === '[object File]';\n}\n\n/*\n * Find a `File` object in a form data value. It can be either the value itself, or\n * in a `fileContents` property of the value.\n */\nfunction getFileValue( v ) {\n\tif ( isFile( v ) ) {\n\t\treturn v;\n\t}\n\n\tif ( typeof v === 'object' && isFile( v.fileContents ) ) {\n\t\treturn v.fileContents;\n\t}\n\n\treturn null;\n}\n\n/**\n * Finds all `File` instances in `formData` and creates a new `File` instance whose storage is\n * forced to be a `Blob` instead of being backed by a file on disk. That works around a bug in\n * Chrome where `File` instances with `has_backing_file` flag cannot be sent over a process\n * boundary when site isolation is on.\n *\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=866805\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=631877\n * @param {Array} formData Form data to patch\n */\nfunction patchFileObjects( formData ) {\n\t// There are several landmines to avoid when making file uploads work on all browsers:\n\t// - the `new File()` constructor trick breaks file uploads on Safari 10 in a way that's\n\t// impossible to detect: it will send empty files in the multipart/form-data body.\n\t// Therefore we need to detect Chrome.\n\t// - IE11 and Edge don't support the `new File()` constructor at all. It will throw exception,\n\t// so it's detectable by the `supportsFileConstructor` code.\n\t// - `window.chrome` exists also on Edge (!), `window.chrome.webstore` is only in Chrome and\n\t// not in other Chromium based browsers (which have the site isolation bug, too).\n\tif ( ! window.chrome || ! supportsFileConstructor ) {\n\t\treturn;\n\t}\n\n\tfor ( let i = 0; i < formData.length; i++ ) {\n\t\tconst val = getFileValue( formData[ i ][ 1 ] );\n\t\tif ( val ) {\n\t\t\tformData[ i ][ 1 ] = new window.File( [ val ], val.name, { type: val.type } );\n\t\t}\n\t}\n}\n\n/**\n * Injects the proxy <iframe> instance in the <body> of the current\n * HTML page.\n */\n\nfunction install() {\n\tdebug( 'install()' );\n\tif ( iframe ) {\n\t\tuninstall();\n\t}\n\n\tbuffered = [];\n\n\t// listen to messages sent to `window`\n\twindow.addEventListener( 'message', onmessage );\n\n\t// create the <iframe>\n\tiframe = document.createElement( 'iframe' );\n\n\t// set `src` and hide the iframe\n\tiframe.src = proxyOrigin + '/wp-admin/rest-proxy/?v=2.0#' + origin;\n\tiframe.style.display = 'none';\n\n\t// inject the <iframe> into the <body>\n\tdocument.body.appendChild( iframe );\n}\n\n/**\n * Reloads the proxy iframe.\n */\nconst reloadProxy = () => {\n\tinstall();\n};\n\n/**\n * Removes the <iframe> proxy instance from the <body> of the page.\n */\nfunction uninstall() {\n\tdebug( 'uninstall()' );\n\twindow.removeEventListener( 'message', onmessage );\n\tdocument.body.removeChild( iframe );\n\tloaded = false;\n\tiframe = null;\n}\n\n/**\n * The proxy <iframe> instance's \"load\" event callback function.\n */\n\nfunction onload() {\n\tdebug( 'proxy <iframe> \"load\" event' );\n\tloaded = true;\n\n\t// flush any buffered API calls\n\tif ( buffered ) {\n\t\tfor ( let i = 0; i < buffered.length; i++ ) {\n\t\t\tsubmitRequest( buffered[ i ] );\n\t\t}\n\t\tbuffered = null;\n\t}\n}\n\n/**\n * The main `window` object's \"message\" event callback function.\n *\n * @param {window.Event} e\n */\n\nfunction onmessage( e ) {\n\tdebug( 'onmessage' );\n\n\t// Filter out messages from different origins\n\tif ( e.origin !== proxyOrigin ) {\n\t\tdebug( 'ignoring message... %o !== %o', e.origin, proxyOrigin );\n\t\treturn;\n\t}\n\n\t// Filter out messages from different iframes\n\tif ( e.source !== iframe.contentWindow ) {\n\t\tdebug( 'ignoring message... iframe elements do not match' );\n\t\treturn;\n\t}\n\n\tlet { data } = e;\n\tif ( ! data ) {\n\t\treturn debug( 'no `data`, bailing' );\n\t}\n\n\t// Once the iframe is loaded, we can start using it.\n\tif ( data === 'ready' ) {\n\t\tonload();\n\t\treturn;\n\t}\n\n\tif ( postStrings && 'string' === typeof data ) {\n\t\tdata = JSON.parse( data );\n\t}\n\n\t// check if we're receiving a \"progress\" event\n\tif ( data.upload || data.download ) {\n\t\treturn onprogress( data );\n\t}\n\n\tif ( ! data.length ) {\n\t\treturn debug( \"`e.data` doesn't appear to be an Array, bailing...\" );\n\t}\n\n\t// first get the `xhr` instance that we're interested in\n\tconst id = data[ data.length - 1 ];\n\tif ( ! ( id in requests ) ) {\n\t\treturn debug( 'bailing, no matching request with callback: %o', id );\n\t}\n\n\tconst xhr = requests[ id ];\n\n\t// Build `error` and `body` object from the `data` object\n\tconst { params } = xhr;\n\n\tconst body = data[ 0 ];\n\tlet statusCode = data[ 1 ];\n\tconst headers = data[ 2 ];\n\n\t// We don't want to delete requests while we're processing stream messages\n\tif ( statusCode === 207 ) {\n\t\t// 207 is a signal from rest-proxy. It means, \"this isn't the final\n\t\t// response to the query.\" The proxy supports WebSocket connections\n\t\t// by invoking the original success callback for each message received.\n\t} else {\n\t\t// this is the final response to this query\n\t\tdelete requests[ id ];\n\t}\n\n\tif ( ! params.metaAPI ) {\n\t\tdebug( 'got %o status code for URL: %o', statusCode, params.path );\n\t} else {\n\t\tstatusCode = body === 'metaAPIupdated' ? 200 : 500;\n\t}\n\n\tif ( typeof headers === 'object' ) {\n\t\t// add statusCode into headers object\n\t\theaders.status = statusCode;\n\n\t\tif ( shouldProcessInStreamMode( headers[ 'Content-Type' ] ) ) {\n\t\t\tif ( statusCode === 207 ) {\n\t\t\t\tonStreamRecord( body );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( statusCode && 2 === Math.floor( statusCode / 100 ) ) {\n\t\t// 2xx status code, success\n\t\tresolve( xhr, body, headers );\n\t} else {\n\t\t// any other status code is a failure\n\t\tconst wpe = WPError( params, statusCode, body );\n\t\treject( xhr, wpe, headers );\n\t}\n}\n\n/**\n * Returns true iff stream mode processing is required (see wpcom-xhr-request@1.2.0).\n *\n * @param {string} contentType response Content-Type header value\n */\nfunction shouldProcessInStreamMode( contentType ) {\n\treturn /^application[/]x-ndjson($|;)/.test( contentType );\n}\n\n/**\n * Handles a \"progress\" event being proxied back from the iframe page.\n *\n * @param {object} data\n */\n\nfunction onprogress( data ) {\n\tdebug( 'got \"progress\" event: %o', data );\n\tconst xhr = requests[ data.callbackId ];\n\tif ( xhr ) {\n\t\tconst prog = new ProgressEvent( 'progress', data );\n\t\tconst target = data.upload ? xhr.upload : xhr;\n\t\ttarget.dispatchEvent( prog );\n\t}\n}\n\n/**\n * Emits the \"load\" event on the `xhr`.\n *\n * @param {window.XMLHttpRequest} xhr\n * @param {object} body\n */\n\nfunction resolve( xhr, body, headers ) {\n\tconst e = new ProgressEvent( 'load' );\n\te.data = e.body = e.response = body;\n\te.headers = headers;\n\txhr.dispatchEvent( e );\n}\n\n/**\n * Emits the \"error\" event on the `xhr`.\n *\n * @param {window.XMLHttpRequest} xhr\n * @param {Error} err\n */\n\nfunction reject( xhr, err, headers ) {\n\tconst e = new ProgressEvent( 'error' );\n\te.error = e.err = err;\n\te.headers = headers;\n\txhr.dispatchEvent( e );\n}\n\n/**\n * Export `request` function.\n */\nexport default request;\nexport { reloadProxy };\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","'use strict';\nvar camelCase = require('camelcase');\n\nmodule.exports = function () {\n\tvar cased = camelCase.apply(camelCase, arguments);\n\treturn cased.charAt(0).toUpperCase() + cased.slice(1);\n};\n","'use strict';\nmodule.exports = function () {\n\tvar str = [].map.call(arguments, function (str) {\n\t\treturn str.trim();\n\t}).filter(function (str) {\n\t\treturn str.length;\n\t}).join('-');\n\n\tif (!str.length) {\n\t\treturn '';\n\t}\n\n\tif (str.length === 1 || !(/[_.\\- ]+/).test(str) ) {\n\t\tif (str[0] === str[0].toLowerCase() && str.slice(1) !== str.slice(1).toLowerCase()) {\n\t\t\treturn str;\n\t\t}\n\n\t\treturn str.toLowerCase();\n\t}\n\n\treturn str\n\t.replace(/^[_.\\- ]+/, '')\n\t.toLowerCase()\n\t.replace(/[_.\\- ]+(\\w|$)/g, function (m, p1) {\n\t\treturn p1.toUpperCase();\n\t});\n};\n","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","var uppercamelcase = require('uppercamelcase');\nvar statusCodes = require('builtin-status-codes');\n\nmodule.exports = WPError;\n\nfunction WPError () {\n var self = new Error();\n\n for (var i = 0; i < arguments.length; i++) {\n process(self, arguments[i]);\n }\n\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(self, WPError);\n }\n\n return self;\n}\n\nfunction process ( self, data ) {\n if ( ! data ) { \n return;\n }\n \n if (typeof data === 'number') {\n setStatusCode( self, data );\n\n } else {\n // assume it's a plain 'ol Object with some props to copy over\n if ( data.status_code ) {\n setStatusCode( self, data.status_code );\n }\n\n if ( data.error ) {\n self.name = toName( data.error );\n }\n\n if ( data.error_description ) {\n self.message = data.error_description;\n }\n\n var errors = data.errors;\n if ( errors ) {\n var first = errors.length ? errors[0] : errors;\n process( self, first );\n }\n\n for ( var i in data ) {\n self[i] = data[i];\n }\n\n if ( self.status && ( data.method || data.path ) ) {\n setStatusCodeMessage( self );\n }\n }\n}\n\nfunction setStatusCode ( self, code ) {\n self.name = toName( statusCodes[ code ] );\n self.status = self.statusCode = code;\n setStatusCodeMessage( self );\n}\n\nfunction setStatusCodeMessage ( self ) {\n var code = self.status;\n var method = self.method;\n var path = self.path;\n\n var m = code + ' status code';\n var extended = method || path;\n\n if ( extended ) m += ' for \"';\n if ( method ) m += method;\n if ( extended ) m += ' ';\n if ( path ) m += path;\n if ( extended ) m += '\"';\n\n self.message = m;\n}\n\nfunction toName ( str ) {\n return uppercamelcase( String(str).replace(/error$/i, ''), 'error' );\n}\n","module.exports = window[\"React\"];","module.exports = window[\"a8c-fse-common-data-stores\"];","module.exports = window[\"lodash\"];","module.exports = window[\"wp\"][\"apiFetch\"];","module.exports = window[\"wp\"][\"components\"];","module.exports = window[\"wp\"][\"compose\"];","module.exports = window[\"wp\"][\"data\"];","module.exports = window[\"wp\"][\"dataControls\"];","module.exports = window[\"wp\"][\"dom\"];","module.exports = window[\"wp\"][\"element\"];","module.exports = window[\"wp\"][\"hooks\"];","module.exports = window[\"wp\"][\"i18n\"];","module.exports = window[\"wp\"][\"notices\"];","module.exports = window[\"wp\"][\"nux\"];","module.exports = window[\"wp\"][\"plugins\"];","module.exports = window[\"wp\"][\"primitives\"];","module.exports = window[\"wp\"][\"url\"];","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","import { register } from './src/store';\n\nimport './src/disable-core-nux';\nimport './src/block-editor-nux';\n\nregister();\n"],"names":["DEFAULT_OPTIONS","placement","modifiers","strategy","areValidElements","_len","arguments","length","args","Array","_key","some","element","getBoundingClientRect","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","popper","options","state","orderedModifiers","Object","assign","modifiersData","elements","attributes","styles","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","concat","filter","m","enabled","forEach","_ref3","name","_ref3$options","effect","cleanupFn","noopFn","push","update","forceUpdate","_state$elements","rects","reset","modifier","data","index","_state$orderedModifie","fn","_state$orderedModifie2","_options","Promise","resolve","destroy","then","onFirstUpdate","contains","parent","child","rootNode","getRootNode","next","isSameNode","parentNode","host","includeScale","rect","width","height","top","right","bottom","left","x","y","getClientRectFromMixedType","clippingParent","clientTop","clientLeft","clientHeight","clientWidth","getInnerBoundingClientRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","indexOf","position","getClippingParents","firstClippingParent","clippingRect","reduce","accRect","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","scaleX","offsetWidth","scaleY","offsetHeight","isElementScaled","documentElement","scroll","scrollLeft","scrollTop","offsets","getComputedStyle","getDocumentElement","ownerDocument","document","window","getDocumentRect","_element$ownerDocumen","html","winScroll","body","scrollWidth","scrollHeight","direction","getHTMLElementScroll","getLayoutRect","clientRect","Math","abs","offsetLeft","offsetTop","getNodeName","nodeName","toLowerCase","getNodeScroll","node","getTrueOffsetParent","getOffsetParent","isFirefox","navigator","userAgent","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getParentNode","assignedSlot","getScrollParent","getViewportRect","win","visualViewport","test","getWindow","toString","defaultView","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","isTableElement","listScrollParents","list","scrollParent","isBody","target","updatedList","auto","basePlacements","start","end","viewport","variationPlacements","acc","placements","modifierPhases","phase","_ref","keys","style","value","removeAttribute","setAttribute","_ref2","initialStyles","margin","arrow","hasOwnProperty","property","attribute","requires","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","len","paddingObject","padding","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","min","max","center","offset","axisProp","centerOffset","_options$element","querySelector","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","gpuAcceleration","adaptive","roundOffsets","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","passive","_options$scroll","_options$resize","resize","addEventListener","removeEventListener","_skip","_options$mainAxis","mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","altBoundary","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","Map","makeFallbackChecks","firstFittingPlacement","i","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","set","_loop","_i","fittingPlacement","find","get","slice","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","preventOverflow","referenceOverflow","elementContext","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","createPopper","computeAutoPlacement","_options$allowedAutoP","allowedPlacements","overflows","sort","a","b","computeOffsets","commonX","commonY","debounce","pending","undefined","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","_options$altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","key","multiply","expandToHashMap","hashMap","getAltAxis","getBasePlacement","split","getFreshSideObject","getMainAxisFromPlacement","hash","getOppositePlacement","replace","matched","getOppositeVariationPlacement","getVariation","round","mergeByName","merged","current","existing","map","mergePaddingObject","order","visited","Set","result","add","dep","has","depModifier","orderModifiers","rectToClientRect","within","compile","expression","terms","variables","OPERATORS","c","evaluate","postfix","j","getOperatorResult","term","stack","pop","apply","earlyReturn","pluralForms","n","PRECEDENCE","OPENERS","TERMINATORS","PATTERN","match","operator","substr","trim","reverse","sprintf","string","isArray","precision","type","parseFloat","parseInt","toFixed","icon","size","props","cloneElement","close","createElement","SVG","xmlns","viewBox","Path","d","makeContextValue","i18n","__","bind","_x","_n","_nx","isRTL","hasTranslation","I18nContext","createContext","defaultI18n","useI18n","useContext","module","exports","hasOwn","classNames","classes","arg","argType","inner","prototype","call","join","default","decode","decodeURIComponent","encode","encodeURIComponent","pairSplitRegExp","fieldContentRegExp","tryDecode","str","e","s","h","w","plural","ms","msAbs","isPlural","val","String","exec","parse","isFinite","long","fmtLong","fmtShort","Error","JSON","stringify","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","Function","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","Number","isNaN","EventEmitter","init","this","once","emitter","reject","errorListener","err","removeListener","resolver","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","prepend","events","warning","create","newListener","emit","unshift","warned","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","arr","ret","unwrapListeners","arrayClone","listenerCount","copy","wrapListener","defineProperty","enumerable","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","listeners","addListener","prependListener","prependOnceListener","originalListener","shift","spliceOne","off","removeAllListeners","rawListeners","eventNames","utils","assert","BlockHash","pendingTotal","blockSize","constructor","outSize","hmacStrength","padLength","endian","_delta8","_delta32","msg","enc","toArray","r","join32","_update","digest","_pad","_digest","bytes","k","res","t","common","shaCommon","rotl32","sum32","sum32_5","ft_1","sha1_K","SHA1","W","inherits","toHex32","split32","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","SHA256","f","g","T1","T2","rotr32","z","p32","isSurrogatePair","charCodeAt","htonl","zero2","word","zero8","p","toHex","sum32_3","sum64","buf","pos","ah","al","bh","lo","hi","sum64_hi","bl","sum64_lo","sum64_4_hi","ch","cl","dh","dl","carry","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","num","rotr64_lo","shr64_hi","shr64_lo","ctor","superCtor","super_","writable","configurable","TempCtor","LRU","opts","cache","head","tail","maxAge","clear","remove","_unlink","prev","peek","_checkAge","modified","Date","now","evict","equal","l","NativeProgressEvent","ProgressEvent","useNative","createEvent","initEvent","lengthComputable","Boolean","loaded","total","createEventObject","hasElementType","hasMap","hasSet","hasArrayBuffer","ArrayBuffer","isView","it","entries","done","RegExp","source","valueOf","$$typeof","EMPTY_MODIFIERS","usePopper","referenceElement","popperElement","prevOptions","optionsWithDefaults","_React$useState","setState","updateStateModifier","popperOptions","newOptions","popperInstanceRef","popperInstance","fromEntries","useIsomorphicLayoutEffect","contextDelimiter","onMissingKey","Tannin","getPluralForm","domain","config","pf","plural_forms","parts","part","getPluralExpression","dcnpgettext","singular","entry","hasSeenSellerCelebrationModal","setHasSeenSellerCelebrationModal","useState","useEffect","apiFetch","path","has_seen_seller_celebration_modal","catch","updateHasSeenSellerCelebrationModal","method","finally","siteIntent","setSiteIntent","fetchSiteIntent","useCallback","site_intent","siteIdOrSlug","sitePlan","setSitePlan","fetchSite","async","siteObj","request","apiVersion","plan","WelcomeTour","showDraftPostModal","getQueryArg","location","href","show","isLoaded","variant","isManuallyOpened","isNewPageLayoutModalOpen","useSelect","select","welcomeGuideStoreSelect","starterPageLayoutsStoreSelect","isWelcomeGuideShown","isWelcomeGuideStatusLoaded","getWelcomeGuideVariant","isWelcomeGuideManuallyOpened","isOpen","setOpenState","useDispatch","fetchWelcomeGuideStatus","BLANK_CANVAS_VARIANT","DEFAULT_VARIANT","localeSlug","wpcomBlockEditorNuxLocale","i18nDefaultLocaleSlug","Guide","GuidePage","registerPlugin","render","unsubscribe","subscribe","dispatch","disableTips","isFeatureActive","toggleFeature","areTipsEnabled","setShowWelcomeGuide","openedManually","CLOSE_EDITOR_ACTION","siteId","_currentSiteId","primaryDomain","getPrimarySiteDomain","homeUrl","hostname","setIsOpen","closeModal","className","title","description","imageSrc","draftPostImage","actionButtons","Button","isPrimary","onClick","isSecondary","hasAction","doAction","onRequestClose","onOpen","recordTracksEvent","prevIsOpen","useRef","Modal","classnames","open","src","alt","link","getCurrentPost","postType","getCurrentPostType","isCurrentPostPublished","previousIsCurrentPostPublished","shouldShowFirstPostPublishedModal","getShouldShowFirstPostPublishedModal","fetchShouldShowFirstPostPublishedModal","setShouldShowFirstPostPublishedModal","setTimeout","postPublishedImage","event","preventDefault","wpcomBlockEditorNuxAssetsUrl","__webpack_public_path__","hasPaymentNotice","setHasPaymentNotice","createNotice","noticesStore","search","isDismissible","addEntities","baseURL","kind","isModalOpen","setIsModalOpen","hasDisplayedModal","setHasDisplayedModal","isSiteEditor","previousIsEditorSaving","isEditorSaving","hasPaymentsBlock","linkUrl","isSavingSite","isSavingEntityRecord","page","getPage","pageId","postId","isSavingEntity","pageEntity","getEntityRecord","content","raw","includes","currentPost","id","getGlobalBlockCount","intent","useSiteIntent","useHasSeenSellerCelebrationModal","contentSubmittedImage","rel","reducer","combineReducers","welcomeGuideManuallyOpened","action","showWelcomeGuide","response","show_welcome_guide","tourRating","welcomeGuideVariant","actions","apiFetchControls","should_show_first_post_published_modal","onlyLocal","setTourRating","setUsedPageOrPatternsModal","resetStore","selectors","getTourRating","register","registerStore","controls","persist","NuxPage","pageNumber","isLastPage","alignBottom","heading","imgSrc","slide_number","is_last_slide","is_gutenboarding","calypsoifyGutenberg","isGutenboarding","is_manually_opened","nuxPages","editorImage","blockPickerImage","previewImage","privateImage","contentLabel","finishButtonText","onFinish","nuxPage","useSitePlan","useLocale","isWelcomeTourNext","URLSearchParams","tourSteps","getTourSteps","product_slug","paymentBlockIndex","findIndex","step","slug","splice","isInserterOpened","isSidebarOpened","isSettingsOpened","getActiveComplementaryArea","isTourMinimized","isWithinBreakpoint","tourConfig","steps","closeHandler","_steps","currentStepIndex","isMinimized","useTourRating","onTourRate","rating","thumbs_up","callbacks","onMinimize","onMaximize","onStepViewOnce","lastStepIndex","meta","slide_heading","effects","spotlight","minWidth","minHeight","borderRadius","arrowIndicator","popperModifiers","useMemo","boundaryRect","portalParentElement","getElementById","usePrefetchTourAssets","getTourAssets","CDN_PREFIX","addBlock","desktop","mobile","allBlocks","finish","makeBold","moreOptions","moveBlock","findYourWay","undo","welcome","editYourSite","referencePositioning","descriptions","referenceElements","isMobile","ExternalLink","localizeUrl","createInterpolateElement","link_to_launch_site_docs","link_to_editor_docs","mostRecentUrlPath","EVENT_NAME_EXCEPTIONS","_superProps","_loadTracksResult","pushEventToTracksQueue","_tkq","loadScript","analyticsEvents","eventName","eventProperties","debug","startsWith","superProperties","omitBy","prop","debugFactory","activePageIndex","numberOfPages","onChange","children","times","disabled","I18N","decimal_point_translation_key","thousands_sep_translation_key","domain_key","translationLookup","hashCache","throwErrors","simpleArguments","normalizeTranslateArguments","original","single","getTranslationFromTannin","tannin","getTranslation","lookup","locale","defaultLocaleSlug","defaultPluralForms","numberFormatSettings","localeVariant","textDirection","translations","componentUpdateHooks","translateHooks","stateObserver","configure","numberFormat","number","decimals","decPoint","decimal_point","thousandsSep","thousands_sep","setLocale","localeData","keyHash","hashLength","lookupPrefix","sha1","generateLookup","fromCharCode","variableHashLengthPos","minHashLength","maxHashLength","momentjs_locale","getLocale","getLocaleSlug","getLocaleVariant","isRtl","addTranslations","messages","translate","translation","sprintfArgs","errorMethod","components","interpolateComponents","mixedString","hook","reRenderTranslations","registerComponentUpdateHook","callback","registerTranslateHook","number_format","dec_point","prec","sep","dec","pow","toFixedFix","localeContext","LocaleProvider","Provider","getWpI18nLocaleSlug","TARGET_LOCALES","lowerCaseLocale","mapWpI18nLangToLocaleSlug","language","fromProvider","providerHasLocale","fromWpI18n","setWpLocale","_currentUserLocale","createHigherOrderComponent","InnerComponent","innerProps","localesWithBlog","localesWithPrivacyPolicy","localesWithCookiePolicy","localesToSubdomains","br","zh","kr","supportSiteLocales","forumLocales","magnificentNonEnLocales","jetpackComLocales","INVALID_URL","getDefaultLocale","setLocalizedUrlHost","validLocales","url","pathname","setLocalizedWpComPath","prefix","limitPathMatch","prefixOrSuffixLocalizedUrlPath","prefixOrSuffix","endsWith","prefixLocalizedUrlPath","urlLocalizationMapping","isLoggedIn","suffixLocalizedUrlPath","fullUrl","URL","origin","protocol","firstPathSegment","useLocalizeUrl","providerLocale","buildChildren","tokens","openComponent","openIndex","token","closeIndex","openToken","nestLevel","getCloseIndex","grandChildren","clonedOpenComponent","siblings","Fragment","interpolate","tokenize","identifyToken","item","callbacksForURLsInProgress","getCallbacksMap","isLoading","addScriptCallback","callbacksMap","executeCallbacks","callbacksForUrl","cb","delete","handleRequestSuccess","getAttribute","onload","handleRequestError","onerror","createScriptElement","script","attachToHead","appendChild","onDismiss","onNextStepProgression","onPreviousStepProgression","tourContainerRef","useFocusHandler","useKeydownHandler","onEscape","onArrowRight","onArrowLeft","useFocusTrap","TourKitContext","useTourKitContext","handleCallback","setCurrentStepIndex","initialFocusedElement","setInitialFocusedElement","setIsMinimized","setPopperElement","tourReady","setTourReady","useMobileBreakpoint","referenceElementSelector","showArrowIndicator","showSpotlight","showOverlay","overlay","handleDismiss","handleNextStepProgression","onNextStep","handlePreviousStepProgression","onPreviousStep","handleGoToStep","stepIndex","onGoToStep","handleMinimize","handleMaximize","popperStyles","popperAttributes","popperUpdate","liveResizeModifier","liveResize","stepRepositionProps","arrowPositionProps","focus","autoScroll","scrollIntoView","classParser","useStepTracking","ref","visible","renderers","tourMinimized","SpotlightInteractivity","rootElementSelector","SPOTLIT_ELEMENT_CLASS","interactivity","sePopperElement","clipDimensions","clipRepositionProps","classList","tourStep","__temp__className","portalParent","removeChild","createPortal","ErrorBoundary","React","hasError","componentDidCatch","errorInfo","hasFocus","setHasFocus","handleFocus","activeElement","handleMousedown","handleKeyup","firstFocusableElement","setFirstFocusableElement","lastFocusableElement","setLastFocusableElement","handleTrapFocus","handled","shiftKey","stopPropagation","focusableElements","handleKeydown","stepsViewed","setStepsViewed","mutation","arg0","ObserversProp","Symbol","resizeObserver","ResizeObserver","mutationObserver","MutationObserver","observe","rootElementNode","characterData","childList","subtree","disconnect","Flex","gap","__i18n_text_domain__","span","maximize","tempRating","setTempRating","isDisabled","rateTour","isThumbsUp","active","thumbsUp","iconSize","thumbsDown","isFirstStep","isTertiary","label","minimize","isLastStep","mediaQueryList","getMediaQueryList","MOBILE_BREAKPOINT","Card","isElevated","CardMedia","srcSet","media","CardBody","CardFooter","WpcomTourKitStep","WpcomTourKitMinimized","Image","fill","fillRule","clipRule","useBreakpoint","breakpoint","isActive","subscribeIsWithinBreakpoint","prevState","WrappedComponent","forwardRef","isBreakpointActive","DESKTOP_BREAKPOINT","SERVER_WIDTH","isServer","matchMedia","noop","addListenerFunctions","obj","createMediaQueryList","matches","mediaQueryLists","wrappedListener","evt","proxyOrigin","onStreamRecord","postStrings","postMessage","supportsFileConstructor","File","buffered","iframe","requests","supportsProgress","FormData","makeRequest","originalParams","params","install","uuidv4","supports_args","supports_error_obj","supports_progress","toUpperCase","xhr","XMLHttpRequest","called","xhrOnLoad","headers","xhrOnError","submitRequest","rej","formData","chrome","getFileValue","patchFileObjects","contentWindow","isFile","v","fileContents","onmessage","display","upload","download","callbackId","prog","dispatchEvent","onprogress","statusCode","contentType","metaAPI","status","floor","WPError","formatArgs","useColors","namespace","humanize","diff","color","lastC","save","namespaces","storage","setItem","removeItem","load","getItem","process","env","DEBUG","__nwjs","WebkitAppearance","firebug","exception","table","$1","localStorage","localstorage","colors","log","require","formatters","createDebug","prevTime","namespacesCache","enabledCache","enableOverride","self","curr","coerce","format","formatter","logFn","selectColor","extend","delimiter","newDebug","toNamespace","regexp","substring","disable","names","skips","enable","camelCase","cased","charAt","p1","getRandomValues","rnds8","Uint8Array","rng","crypto","msCrypto","byteToHex","uuid","rnds","random","uppercamelcase","statusCodes","setStatusCode","status_code","toName","error_description","errors","setStatusCodeMessage","code","extended","captureStackTrace","_defineProperty","_extends","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","o","globalThis","toStringTag","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName"],"sourceRoot":""}
1
+ {"version":3,"file":"wpcom-block-editor-nux.min.js","mappings":"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","sources":["webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/createPopper.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/enums.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/popper.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/debounce.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/math.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://EditingToolkit/../../node_modules/@popperjs/core/lib/utils/within.js","webpack://EditingToolkit/../../node_modules/@tannin/compile/index.js","webpack://EditingToolkit/../../node_modules/@tannin/evaluate/index.js","webpack://EditingToolkit/../../node_modules/@tannin/plural-forms/index.js","webpack://EditingToolkit/../../node_modules/@tannin/postfix/index.js","webpack://EditingToolkit/../../node_modules/@tannin/sprintf/index.js","webpack://EditingToolkit/../../node_modules/@wordpress/icons/build-module/icon/index.js","webpack://EditingToolkit/../../node_modules/@wordpress/icons/build-module/library/close.js","webpack://EditingToolkit/../../node_modules/@wordpress/react-i18n/build-module/index.js","webpack://EditingToolkit/../../node_modules/builtin-status-codes/browser.js","webpack://EditingToolkit/../../node_modules/classnames/index.js","webpack://EditingToolkit/../../node_modules/cookie/index.js","webpack://EditingToolkit/../../node_modules/debug/node_modules/ms/index.js","webpack://EditingToolkit/../../node_modules/events/events.js","webpack://EditingToolkit/../../node_modules/hash.js/lib/hash/common.js","webpack://EditingToolkit/../../node_modules/hash.js/lib/hash/sha/1.js","webpack://EditingToolkit/../../node_modules/hash.js/lib/hash/sha/256.js","webpack://EditingToolkit/../../node_modules/hash.js/lib/hash/sha/common.js","webpack://EditingToolkit/../../node_modules/hash.js/lib/hash/utils.js","webpack://EditingToolkit/../../node_modules/inherits/inherits_browser.js","webpack://EditingToolkit/../../node_modules/lru/index.js","webpack://EditingToolkit/../../node_modules/minimalistic-assert/index.js","webpack://EditingToolkit/../../node_modules/progress-event/index.js","webpack://EditingToolkit/../../node_modules/react-fast-compare/index.js","webpack://EditingToolkit/../../node_modules/react-popper/lib/esm/usePopper.js","webpack://EditingToolkit/../../node_modules/react-popper/lib/esm/utils.js","webpack://EditingToolkit/../../node_modules/tannin/index.js","webpack://EditingToolkit/./editing-toolkit-plugin/dotcom-fse/lib/seller-celebration-modal/use-has-seen-seller-celebration-modal.js","webpack://EditingToolkit/./editing-toolkit-plugin/dotcom-fse/lib/site-intent/use-site-intent.js","webpack://EditingToolkit/./editing-toolkit-plugin/dotcom-fse/lib/site-plan/use-site-plan.ts","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/block-editor-nux.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/disable-core-nux.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/draft-post-modal/index.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/nux-modal/index.tsx","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/post-published-modal/index.tsx","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/public-path.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/purchase-notice/index.jsx","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/seller-celebration-modal/index.jsx","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/store.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/welcome-modal/wpcom-nux.js","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/welcome-tour/tour-launch.tsx","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/src/welcome-tour/tour-steps.tsx","webpack://EditingToolkit/../../packages/calypso-analytics/src/page-view-params.ts","webpack://EditingToolkit/../../packages/calypso-analytics/src/tracks.ts","webpack://EditingToolkit/../../packages/calypso-analytics/src/utils/debug.ts","webpack://EditingToolkit/../../packages/components/src/pagination-control/index.tsx","webpack://EditingToolkit/../../packages/i18n-calypso/src/default-i18n.js","webpack://EditingToolkit/../../packages/i18n-calypso/src/i18n.js","webpack://EditingToolkit/../../packages/i18n-calypso/src/index.js","webpack://EditingToolkit/../../packages/i18n-calypso/src/number-format.js","webpack://EditingToolkit/../../packages/i18n-utils/src/locale-context.tsx","webpack://EditingToolkit/../../packages/i18n-utils/src/locales.ts","webpack://EditingToolkit/../../packages/i18n-utils/src/localize-url.tsx","webpack://EditingToolkit/../../packages/interpolate-components/src/index.js","webpack://EditingToolkit/../../packages/interpolate-components/src/tokenize.js","webpack://EditingToolkit/../../packages/load-script/src/callback-handler.js","webpack://EditingToolkit/../../packages/load-script/src/dom-operations.js","webpack://EditingToolkit/../../packages/load-script/src/index.js","webpack://EditingToolkit/../../packages/tour-kit/src/components/keyboard-navigation.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-context.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-frame.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-minimized.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-overlay.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-spotlight-interactivity.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-spotlight.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit-step.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/components/tour-kit.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/error-boundary.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/hooks/use-focus-handler.ts","webpack://EditingToolkit/../../packages/tour-kit/src/hooks/use-focus-trap.ts","webpack://EditingToolkit/../../packages/tour-kit/src/hooks/use-keydown-handler.ts","webpack://EditingToolkit/../../packages/tour-kit/src/hooks/use-step-tracking.ts","webpack://EditingToolkit/../../packages/tour-kit/src/utils/index.ts","webpack://EditingToolkit/../../packages/tour-kit/src/utils/live-resize-modifier.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-minimized.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-rating.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-step-card-navigation.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-step-card-overlay-controls.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-step-card.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit-step.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/components/wpcom-tour-kit.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/hooks/use-prefetch-tour-assets.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/icons/maximize.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/icons/minimize.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/icons/thumbs_down.tsx","webpack://EditingToolkit/../../packages/tour-kit/src/variants/wpcom/icons/thumbs_up.tsx","webpack://EditingToolkit/../../packages/viewport-react/src/index.js","webpack://EditingToolkit/../../packages/viewport/src/index.ts","webpack://EditingToolkit/../../packages/wpcom-proxy-request/src/index.js","webpack://EditingToolkit/../../node_modules/debug/src/browser.js","webpack://EditingToolkit/../../node_modules/debug/src/common.js","webpack://EditingToolkit/../../node_modules/uppercamelcase/index.js","webpack://EditingToolkit/../../node_modules/uppercamelcase/node_modules/camelcase/index.js","webpack://EditingToolkit/../../node_modules/uuid/dist/esm-browser/regex.js","webpack://EditingToolkit/../../node_modules/uuid/dist/esm-browser/rng.js","webpack://EditingToolkit/../../node_modules/uuid/dist/esm-browser/stringify.js","webpack://EditingToolkit/../../node_modules/uuid/dist/esm-browser/v4.js","webpack://EditingToolkit/../../node_modules/uuid/dist/esm-browser/validate.js","webpack://EditingToolkit/../../node_modules/wp-error/index.js","webpack://EditingToolkit/external window \"React\"","webpack://EditingToolkit/external window \"a8c-fse-common-data-stores\"","webpack://EditingToolkit/external window \"lodash\"","webpack://EditingToolkit/external window [\"wp\",\"apiFetch\"]","webpack://EditingToolkit/external window [\"wp\",\"components\"]","webpack://EditingToolkit/external window [\"wp\",\"compose\"]","webpack://EditingToolkit/external window [\"wp\",\"data\"]","webpack://EditingToolkit/external window [\"wp\",\"dataControls\"]","webpack://EditingToolkit/external window [\"wp\",\"dom\"]","webpack://EditingToolkit/external window [\"wp\",\"element\"]","webpack://EditingToolkit/external window [\"wp\",\"hooks\"]","webpack://EditingToolkit/external window [\"wp\",\"i18n\"]","webpack://EditingToolkit/external window [\"wp\",\"notices\"]","webpack://EditingToolkit/external window [\"wp\",\"nux\"]","webpack://EditingToolkit/external window [\"wp\",\"plugins\"]","webpack://EditingToolkit/external window [\"wp\",\"primitives\"]","webpack://EditingToolkit/external window [\"wp\",\"url\"]","webpack://EditingToolkit/../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://EditingToolkit/../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://EditingToolkit/webpack/bootstrap","webpack://EditingToolkit/webpack/runtime/compat get default export","webpack://EditingToolkit/webpack/runtime/define property getters","webpack://EditingToolkit/webpack/runtime/global","webpack://EditingToolkit/webpack/runtime/hasOwnProperty shorthand","webpack://EditingToolkit/webpack/runtime/make namespace object","webpack://EditingToolkit/webpack/runtime/publicPath","webpack://EditingToolkit/./editing-toolkit-plugin/wpcom-block-editor-nux/index.js"],"sourcesContent":["import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","// import { isHTMLElement } from './instanceOf';\nexport default function getBoundingClientRect(element, // eslint-disable-next-line unused-imports/no-unused-vars\nincludeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n var rect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1; // FIXME:\n // `offsetWidth` returns an integer while `getBoundingClientRect`\n // returns a float. This results in `scaleX` or `scaleY` being\n // non-1 when it should be for elements that aren't a full pixel in\n // width or height.\n // if (isHTMLElement(element) && includeScale) {\n // const offsetHeight = element.offsetHeight;\n // const offsetWidth = element.offsetWidth;\n // // Do not attempt to divide by 0, otherwise we get `Infinity` as scale\n // // Fallback to 1 in case both values are `0`\n // if (offsetWidth > 0) {\n // scaleX = rect.width / offsetWidth || 1;\n // }\n // if (offsetHeight > 0) {\n // scaleY = rect.height / offsetHeight || 1;\n // }\n // }\n\n return {\n width: rect.width / scaleX,\n height: rect.height / scaleY,\n top: rect.top / scaleY,\n right: rect.right / scaleX,\n bottom: rect.bottom / scaleY,\n left: rect.left / scaleX,\n x: rect.left / scaleX,\n y: rect.top / scaleY\n };\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = rect.width / element.offsetWidth || 1;\n var scaleY = rect.height / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","import postfix from '@tannin/postfix';\nimport evaluate from '@tannin/evaluate';\n\n/**\n * Given a C expression, returns a function which can be called to evaluate its\n * result.\n *\n * @example\n *\n * ```js\n * import compile from '@tannin/compile';\n *\n * const evaluate = compile( 'n > 1' );\n *\n * evaluate( { n: 2 } );\n * // ⇒ true\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {(variables?:{[variable:string]:*})=>*} Compiled evaluator.\n */\nexport default function compile( expression ) {\n\tvar terms = postfix( expression );\n\n\treturn function( variables ) {\n\t\treturn evaluate( terms, variables );\n\t};\n}\n","/**\n * Operator callback functions.\n *\n * @type {Object}\n */\nvar OPERATORS = {\n\t'!': function( a ) {\n\t\treturn ! a;\n\t},\n\t'*': function( a, b ) {\n\t\treturn a * b;\n\t},\n\t'/': function( a, b ) {\n\t\treturn a / b;\n\t},\n\t'%': function( a, b ) {\n\t\treturn a % b;\n\t},\n\t'+': function( a, b ) {\n\t\treturn a + b;\n\t},\n\t'-': function( a, b ) {\n\t\treturn a - b;\n\t},\n\t'<': function( a, b ) {\n\t\treturn a < b;\n\t},\n\t'<=': function( a, b ) {\n\t\treturn a <= b;\n\t},\n\t'>': function( a, b ) {\n\t\treturn a > b;\n\t},\n\t'>=': function( a, b ) {\n\t\treturn a >= b;\n\t},\n\t'==': function( a, b ) {\n\t\treturn a === b;\n\t},\n\t'!=': function( a, b ) {\n\t\treturn a !== b;\n\t},\n\t'&&': function( a, b ) {\n\t\treturn a && b;\n\t},\n\t'||': function( a, b ) {\n\t\treturn a || b;\n\t},\n\t'?:': function( a, b, c ) {\n\t\tif ( a ) {\n\t\t\tthrow b;\n\t\t}\n\n\t\treturn c;\n\t},\n};\n\n/**\n * Given an array of postfix terms and operand variables, returns the result of\n * the postfix evaluation.\n *\n * @example\n *\n * ```js\n * import evaluate from '@tannin/evaluate';\n *\n * // 3 + 4 * 5 / 6 ⇒ '3 4 5 * 6 / +'\n * const terms = [ '3', '4', '5', '*', '6', '/', '+' ];\n *\n * evaluate( terms, {} );\n * // ⇒ 6.333333333333334\n * ```\n *\n * @param {string[]} postfix Postfix terms.\n * @param {Object} variables Operand variables.\n *\n * @return {*} Result of evaluation.\n */\nexport default function evaluate( postfix, variables ) {\n\tvar stack = [],\n\t\ti, j, args, getOperatorResult, term, value;\n\n\tfor ( i = 0; i < postfix.length; i++ ) {\n\t\tterm = postfix[ i ];\n\n\t\tgetOperatorResult = OPERATORS[ term ];\n\t\tif ( getOperatorResult ) {\n\t\t\t// Pop from stack by number of function arguments.\n\t\t\tj = getOperatorResult.length;\n\t\t\targs = Array( j );\n\t\t\twhile ( j-- ) {\n\t\t\t\targs[ j ] = stack.pop();\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tvalue = getOperatorResult.apply( null, args );\n\t\t\t} catch ( earlyReturn ) {\n\t\t\t\treturn earlyReturn;\n\t\t\t}\n\t\t} else if ( variables.hasOwnProperty( term ) ) {\n\t\t\tvalue = variables[ term ];\n\t\t} else {\n\t\t\tvalue = +term;\n\t\t}\n\n\t\tstack.push( value );\n\t}\n\n\treturn stack[ 0 ];\n}\n","import compile from '@tannin/compile';\n\n/**\n * Given a C expression, returns a function which, when called with a value,\n * evaluates the result with the value assumed to be the \"n\" variable of the\n * expression. The result will be coerced to its numeric equivalent.\n *\n * @param {string} expression C expression.\n *\n * @return {Function} Evaluator function.\n */\nexport default function pluralForms( expression ) {\n\tvar evaluate = compile( expression );\n\n\treturn function( n ) {\n\t\treturn +evaluate( { n: n } );\n\t};\n}\n","var PRECEDENCE, OPENERS, TERMINATORS, PATTERN;\n\n/**\n * Operator precedence mapping.\n *\n * @type {Object}\n */\nPRECEDENCE = {\n\t'(': 9,\n\t'!': 8,\n\t'*': 7,\n\t'/': 7,\n\t'%': 7,\n\t'+': 6,\n\t'-': 6,\n\t'<': 5,\n\t'<=': 5,\n\t'>': 5,\n\t'>=': 5,\n\t'==': 4,\n\t'!=': 4,\n\t'&&': 3,\n\t'||': 2,\n\t'?': 1,\n\t'?:': 1,\n};\n\n/**\n * Characters which signal pair opening, to be terminated by terminators.\n *\n * @type {string[]}\n */\nOPENERS = [ '(', '?' ];\n\n/**\n * Characters which signal pair termination, the value an array with the\n * opener as its first member. The second member is an optional operator\n * replacement to push to the stack.\n *\n * @type {string[]}\n */\nTERMINATORS = {\n\t')': [ '(' ],\n\t':': [ '?', '?:' ],\n};\n\n/**\n * Pattern matching operators and openers.\n *\n * @type {RegExp}\n */\nPATTERN = /<=|>=|==|!=|&&|\\|\\||\\?:|\\(|!|\\*|\\/|%|\\+|-|<|>|\\?|\\)|:/;\n\n/**\n * Given a C expression, returns the equivalent postfix (Reverse Polish)\n * notation terms as an array.\n *\n * If a postfix string is desired, simply `.join( ' ' )` the result.\n *\n * @example\n *\n * ```js\n * import postfix from '@tannin/postfix';\n *\n * postfix( 'n > 1' );\n * // ⇒ [ 'n', '1', '>' ]\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {string[]} Postfix terms.\n */\nexport default function postfix( expression ) {\n\tvar terms = [],\n\t\tstack = [],\n\t\tmatch, operator, term, element;\n\n\twhile ( ( match = expression.match( PATTERN ) ) ) {\n\t\toperator = match[ 0 ];\n\n\t\t// Term is the string preceding the operator match. It may contain\n\t\t// whitespace, and may be empty (if operator is at beginning).\n\t\tterm = expression.substr( 0, match.index ).trim();\n\t\tif ( term ) {\n\t\t\tterms.push( term );\n\t\t}\n\n\t\twhile ( ( element = stack.pop() ) ) {\n\t\t\tif ( TERMINATORS[ operator ] ) {\n\t\t\t\tif ( TERMINATORS[ operator ][ 0 ] === element ) {\n\t\t\t\t\t// Substitution works here under assumption that because\n\t\t\t\t\t// the assigned operator will no longer be a terminator, it\n\t\t\t\t\t// will be pushed to the stack during the condition below.\n\t\t\t\t\toperator = TERMINATORS[ operator ][ 1 ] || operator;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if ( OPENERS.indexOf( element ) >= 0 || PRECEDENCE[ element ] < PRECEDENCE[ operator ] ) {\n\t\t\t\t// Push to stack if either an opener or when pop reveals an\n\t\t\t\t// element of lower precedence.\n\t\t\t\tstack.push( element );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// For each popped from stack, push to terms.\n\t\t\tterms.push( element );\n\t\t}\n\n\t\tif ( ! TERMINATORS[ operator ] ) {\n\t\t\tstack.push( operator );\n\t\t}\n\n\t\t// Slice matched fragment from expression to continue match.\n\t\texpression = expression.substr( match.index + operator.length );\n\t}\n\n\t// Push remainder of operand, if exists, to terms.\n\texpression = expression.trim();\n\tif ( expression ) {\n\t\tterms.push( expression );\n\t}\n\n\t// Pop remaining items from stack into terms.\n\treturn terms.concat( stack.reverse() );\n}\n","/**\n * Regular expression matching format placeholder syntax.\n *\n * The pattern for matching named arguments is a naive and incomplete matcher\n * against valid JavaScript identifier names.\n *\n * via Mathias Bynens:\n *\n * >An identifier must start with $, _, or any character in the Unicode\n * >categories “Uppercase letter (Lu)”, “Lowercase letter (Ll)”, “Titlecase\n * >letter (Lt)”, “Modifier letter (Lm)”, “Other letter (Lo)”, or “Letter\n * >number (Nl)”.\n * >\n * >The rest of the string can contain the same characters, plus any U+200C zero\n * >width non-joiner characters, U+200D zero width joiner characters, and\n * >characters in the Unicode categories “Non-spacing mark (Mn)”, “Spacing\n * >combining mark (Mc)”, “Decimal digit number (Nd)”, or “Connector\n * >punctuation (Pc)”.\n *\n * If browser support is constrained to those supporting ES2015, this could be\n * made more accurate using the `u` flag:\n *\n * ```\n * /^[$_\\p{L}\\p{Nl}][$_\\p{L}\\p{Nl}\\u200C\\u200D\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}]*$/u;\n * ```\n *\n * @see http://www.pixelbeat.org/programming/gcc/format_specs.html\n * @see https://mathiasbynens.be/notes/javascript-identifiers#valid-identifier-names\n *\n * @type {RegExp}\n */\nvar PATTERN = /%(((\\d+)\\$)|(\\(([$_a-zA-Z][$_a-zA-Z0-9]*)\\)))?[ +0#-]*\\d*(\\.(\\d+|\\*))?(ll|[lhqL])?([cduxXefgsp%])/g;\n// ▲ ▲ ▲ ▲ ▲ ▲ ▲ type\n// │ │ │ │ │ └ Length (unsupported)\n// │ │ │ │ └ Precision / max width\n// │ │ │ └ Min width (unsupported)\n// │ │ └ Flags (unsupported)\n// └ Index └ Name (for named arguments)\n\n/**\n * Given a format string, returns string with arguments interpolatation.\n * Arguments can either be provided directly via function arguments spread, or\n * with an array as the second argument.\n *\n * @see https://en.wikipedia.org/wiki/Printf_format_string\n *\n * @example\n *\n * ```js\n * import sprintf from '@tannin/sprintf';\n *\n * sprintf( 'Hello %s!', 'world' );\n * // ⇒ 'Hello world!'\n * ```\n *\n * @param {string} string printf format string\n * @param {Array} [args] String arguments.\n *\n * @return {string} Formatted string.\n */\nexport default function sprintf( string, args ) {\n\tvar i;\n\n\tif ( ! Array.isArray( args ) ) {\n\t\t// Construct a copy of arguments from index one, used for replace\n\t\t// function placeholder substitution.\n\t\targs = new Array( arguments.length - 1 );\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i - 1 ] = arguments[ i ];\n\t\t}\n\t}\n\n\ti = 1;\n\n\treturn string.replace( PATTERN, function() {\n\t\tvar index, name, precision, type, value;\n\n\t\tindex = arguments[ 3 ];\n\t\tname = arguments[ 5 ];\n\t\tprecision = arguments[ 7 ];\n\t\ttype = arguments[ 9 ];\n\n\t\t// There's no placeholder substitution in the explicit \"%\", meaning it\n\t\t// is not necessary to increment argument index.\n\t\tif ( type === '%' ) {\n\t\t\treturn '%';\n\t\t}\n\n\t\t// Asterisk precision determined by peeking / shifting next argument.\n\t\tif ( precision === '*' ) {\n\t\t\tprecision = args[ i - 1 ];\n\t\t\ti++;\n\t\t}\n\n\t\tif ( name !== undefined ) {\n\t\t\t// If it's a named argument, use name.\n\t\t\tif ( args[ 0 ] && typeof args[ 0 ] === 'object' &&\n\t\t\t\t\targs[ 0 ].hasOwnProperty( name ) ) {\n\t\t\t\tvalue = args[ 0 ][ name ];\n\t\t\t}\n\t\t} else {\n\t\t\t// If not a positional argument, use counter value.\n\t\t\tif ( index === undefined ) {\n\t\t\t\tindex = i;\n\t\t\t}\n\n\t\t\ti++;\n\n\t\t\t// Positional argument.\n\t\t\tvalue = args[ index - 1 ];\n\t\t}\n\n\t\t// Parse as type.\n\t\tif ( type === 'f' ) {\n\t\t\tvalue = parseFloat( value ) || 0;\n\t\t} else if ( type === 'd' ) {\n\t\t\tvalue = parseInt( value ) || 0;\n\t\t}\n\n\t\t// Apply precision.\n\t\tif ( precision !== undefined ) {\n\t\t\tif ( type === 'f' ) {\n\t\t\t\tvalue = value.toFixed( precision );\n\t\t\t} else if ( type === 's' ) {\n\t\t\t\tvalue = value.substr( 0, precision );\n\t\t\t}\n\t\t}\n\n\t\t// To avoid \"undefined\" concatenation, return empty string if no\n\t\t// placeholder substitution can be performed.\n\t\treturn value !== undefined && value !== null ? value : '';\n\t} );\n}\n","/**\n * WordPress dependencies\n */\nimport { cloneElement } from '@wordpress/element';\n/** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */\n\n/**\n * Return an SVG icon.\n *\n * @param {IconProps} props icon is the SVG component to render\n * size is a number specifiying the icon size in pixels\n * Other props will be passed to wrapped SVG component\n *\n * @return {JSX.Element} Icon component\n */\n\nfunction Icon(_ref) {\n let {\n icon,\n size = 24,\n ...props\n } = _ref;\n return cloneElement(icon, {\n width: size,\n height: size,\n ...props\n });\n}\n\nexport default Icon;\n//# sourceMappingURL=index.js.map","import { createElement } from \"@wordpress/element\";\n\n/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\nconst close = createElement(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, createElement(Path, {\n d: \"M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z\"\n}));\nexport default close;\n//# sourceMappingURL=close.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createElement } from \"@wordpress/element\";\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\nimport { createContext, useContext, useEffect, useMemo, useReducer } from '@wordpress/element';\nimport { defaultI18n } from '@wordpress/i18n';\n\n/**\n * Utility to make a new context value\n *\n * @param i18n\n */\nfunction makeContextValue(i18n) {\n return {\n __: i18n.__.bind(i18n),\n _x: i18n._x.bind(i18n),\n _n: i18n._n.bind(i18n),\n _nx: i18n._nx.bind(i18n),\n isRTL: i18n.isRTL.bind(i18n),\n hasTranslation: i18n.hasTranslation.bind(i18n)\n };\n}\n\nconst I18nContext = createContext(makeContextValue(defaultI18n));\n\n/**\n * The `I18nProvider` should be mounted above any localized components:\n *\n * @example\n * ```js\n * import { createI18n } from '@wordpress/react-i18n';\n * import { I18nProvider } from '@wordpress/react-i18n';\n * const i18n = createI18n();\n *\n * ReactDom.render(\n * \t<I18nProvider i18n={ i18n }>\n * \t\t<App />\n * \t</I18nProvider>,\n * \tel\n * );\n * ```\n *\n * You can also instantiate the provider without the `i18n` prop. In that case it will use the\n * default `I18n` instance exported from `@wordpress/i18n`.\n *\n * @param props i18n provider props.\n * @return Children wrapped in the I18nProvider.\n */\nexport function I18nProvider(props) {\n const {\n children,\n i18n = defaultI18n\n } = props;\n const [update, forceUpdate] = useReducer(() => [], []); // Rerender translations whenever the i18n instance fires a change event.\n\n useEffect(() => i18n.subscribe(forceUpdate), [i18n]);\n const value = useMemo(() => makeContextValue(i18n), [i18n, update]);\n return createElement(I18nContext.Provider, {\n value: value\n }, children);\n}\n/**\n * React hook providing access to i18n functions. It exposes the `__`, `_x`, `_n`, `_nx`,\n * `isRTL` and `hasTranslation` functions from [`@wordpress/i18n`](../i18n).\n * Refer to their documentation there.\n *\n * @example\n * ```js\n * import { useI18n } from '@wordpress/react-i18n';\n *\n * function MyComponent() {\n * \tconst { __ } = useI18n();\n * \treturn __( 'Hello, world!' );\n * }\n * ```\n */\n\nexport const useI18n = () => useContext(I18nContext);\n\n/**\n * React higher-order component that passes the i18n translate functions (the same set\n * as exposed by the `useI18n` hook) to the wrapped component as props.\n *\n * @example\n * ```js\n * import { withI18n } from '@wordpress/react-i18n';\n *\n * function MyComponent( { __ } ) {\n * \treturn __( 'Hello, world!' );\n * }\n *\n * export default withI18n( MyComponent );\n * ```\n *\n * @param InnerComponent React component to be wrapped and receive the i18n functions like `__`\n * @return The wrapped component\n */\nexport function withI18n(InnerComponent) {\n const EnhancedComponent = props => {\n const i18nProps = useI18n();\n return createElement(InnerComponent, _extends({}, props, i18nProps));\n };\n\n const innerComponentName = InnerComponent.displayName || InnerComponent.name || 'Component';\n EnhancedComponent.displayName = `WithI18n(${innerComponentName})`;\n return EnhancedComponent;\n}\n//# sourceMappingURL=index.js.map","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","/*!\n Copyright (c) 2018 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)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\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 * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","var events = require('events')\nvar inherits = require('inherits')\n\nmodule.exports = LRU\n\nfunction LRU (opts) {\n if (!(this instanceof LRU)) return new LRU(opts)\n if (typeof opts === 'number') opts = {max: opts}\n if (!opts) opts = {}\n events.EventEmitter.call(this)\n this.cache = {}\n this.head = this.tail = null\n this.length = 0\n this.max = opts.max || 1000\n this.maxAge = opts.maxAge || 0\n}\n\ninherits(LRU, events.EventEmitter)\n\nObject.defineProperty(LRU.prototype, 'keys', {\n get: function () { return Object.keys(this.cache) }\n})\n\nLRU.prototype.clear = function () {\n this.cache = {}\n this.head = this.tail = null\n this.length = 0\n}\n\nLRU.prototype.remove = function (key) {\n if (typeof key !== 'string') key = '' + key\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n delete this.cache[key]\n this._unlink(key, element.prev, element.next)\n return element.value\n}\n\nLRU.prototype._unlink = function (key, prev, next) {\n this.length--\n\n if (this.length === 0) {\n this.head = this.tail = null\n } else {\n if (this.head === key) {\n this.head = prev\n this.cache[this.head].next = null\n } else if (this.tail === key) {\n this.tail = next\n this.cache[this.tail].prev = null\n } else {\n this.cache[prev].next = next\n this.cache[next].prev = prev\n }\n }\n}\n\nLRU.prototype.peek = function (key) {\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n\n if (!this._checkAge(key, element)) return\n return element.value\n}\n\nLRU.prototype.set = function (key, value) {\n if (typeof key !== 'string') key = '' + key\n\n var element\n\n if (this.cache.hasOwnProperty(key)) {\n element = this.cache[key]\n element.value = value\n if (this.maxAge) element.modified = Date.now()\n\n // If it's already the head, there's nothing more to do:\n if (key === this.head) return value\n this._unlink(key, element.prev, element.next)\n } else {\n element = {value: value, modified: 0, next: null, prev: null}\n if (this.maxAge) element.modified = Date.now()\n this.cache[key] = element\n\n // Eviction is only possible if the key didn't already exist:\n if (this.length === this.max) this.evict()\n }\n\n this.length++\n element.next = null\n element.prev = this.head\n\n if (this.head) this.cache[this.head].next = key\n this.head = key\n\n if (!this.tail) this.tail = key\n return value\n}\n\nLRU.prototype._checkAge = function (key, element) {\n if (this.maxAge && (Date.now() - element.modified) > this.maxAge) {\n this.remove(key)\n this.emit('evict', {key: key, value: element.value})\n return false\n }\n return true\n}\n\nLRU.prototype.get = function (key) {\n if (typeof key !== 'string') key = '' + key\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n\n if (!this._checkAge(key, element)) return\n\n if (this.head !== key) {\n if (key === this.tail) {\n this.tail = element.next\n this.cache[this.tail].prev = null\n } else {\n // Set prev.next -> element.next:\n this.cache[element.prev].next = element.next\n }\n\n // Set element.next.prev -> element.prev:\n this.cache[element.next].prev = element.prev\n\n // Element is the new head\n this.cache[this.head].next = key\n element.prev = this.head\n element.next = null\n this.head = key\n }\n\n return element.value\n}\n\nLRU.prototype.evict = function () {\n if (!this.tail) return\n var key = this.tail\n var value = this.remove(this.tail)\n this.emit('evict', {key: key, value: value})\n}\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","\nvar NativeProgressEvent = global.ProgressEvent;\nvar useNative = !!NativeProgressEvent;\n\ntry {\n (function () {\n var p = new NativeProgressEvent('loaded');\n useNative = 'loaded' === p.type;\n p = null;\n })();\n} catch (e) {\n useNative = false;\n}\n\n/**\n * Cross-browser `ProgressEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.ProgressEvent\n *\n * @public\n */\n\nmodule.exports = useNative ? NativeProgressEvent :\n\n// IE >= 9\n'function' === typeof document.createEvent ? function ProgressEvent (type, props) {\n var e = document.createEvent('Event');\n e.initEvent(type, false, false);\n if (props) {\n e.lengthComputable = Boolean(props.lengthComputable);\n e.loaded = Number(props.loaded) || 0;\n e.total = Number(props.total) || 0;\n } else {\n e.lengthComputable = false;\n e.loaded = e.total = 0;\n }\n return e;\n} :\n\n// IE <= 8\nfunction ProgressEvent (type, props) {\n var e = document.createEventObject();\n e.type = type;\n if (props) {\n e.lengthComputable = Boolean(props.lengthComputable);\n e.loaded = Number(props.loaded) || 0;\n e.total = Number(props.total) || 0;\n } else {\n e.lengthComputable = false;\n e.loaded = e.total = 0;\n }\n return e;\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","import * as React from 'react';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n var prevOptions = React.useRef(null);\n var optionsWithDefaults = {\n onFirstUpdate: options.onFirstUpdate,\n placement: options.placement || 'bottom',\n strategy: options.strategy || 'absolute',\n modifiers: options.modifiers || EMPTY_MODIFIERS\n };\n\n var _React$useState = React.useState({\n styles: {\n popper: {\n position: optionsWithDefaults.strategy,\n left: '0',\n top: '0'\n },\n arrow: {\n position: 'absolute'\n }\n },\n attributes: {}\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var updateStateModifier = React.useMemo(function () {\n return {\n name: 'updateState',\n enabled: true,\n phase: 'write',\n fn: function fn(_ref) {\n var state = _ref.state;\n var elements = Object.keys(state.elements);\n setState({\n styles: fromEntries(elements.map(function (element) {\n return [element, state.styles[element] || {}];\n })),\n attributes: fromEntries(elements.map(function (element) {\n return [element, state.attributes[element]];\n }))\n });\n },\n requires: ['computeStyles']\n };\n }, []);\n var popperOptions = React.useMemo(function () {\n var newOptions = {\n onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n placement: optionsWithDefaults.placement,\n strategy: optionsWithDefaults.strategy,\n modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n name: 'applyStyles',\n enabled: false\n }])\n };\n\n if (isEqual(prevOptions.current, newOptions)) {\n return prevOptions.current || newOptions;\n } else {\n prevOptions.current = newOptions;\n return newOptions;\n }\n }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n var popperInstanceRef = React.useRef();\n useIsomorphicLayoutEffect(function () {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.setOptions(popperOptions);\n }\n }, [popperOptions]);\n useIsomorphicLayoutEffect(function () {\n if (referenceElement == null || popperElement == null) {\n return;\n }\n\n var createPopper = options.createPopper || defaultCreatePopper;\n var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n popperInstanceRef.current = popperInstance;\n return function () {\n popperInstance.destroy();\n popperInstanceRef.current = null;\n };\n }, [referenceElement, popperElement, options.createPopper]);\n return {\n state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n styles: state.styles,\n attributes: state.attributes,\n update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n };\n};","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === 'function') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === 'function') {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n return entries.reduce(function (acc, _ref) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = value;\n return acc;\n }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","import pluralForms from '@tannin/plural-forms';\n\n/**\n * Tannin constructor options.\n *\n * @typedef {Object} TanninOptions\n *\n * @property {string} [contextDelimiter] Joiner in string lookup with context.\n * @property {Function} [onMissingKey] Callback to invoke when key missing.\n */\n\n/**\n * Domain metadata.\n *\n * @typedef {Object} TanninDomainMetadata\n *\n * @property {string} [domain] Domain name.\n * @property {string} [lang] Language code.\n * @property {(string|Function)} [plural_forms] Plural forms expression or\n * function evaluator.\n */\n\n/**\n * Domain translation pair respectively representing the singular and plural\n * translation.\n *\n * @typedef {[string,string]} TanninTranslation\n */\n\n/**\n * Locale data domain. The key is used as reference for lookup, the value an\n * array of two string entries respectively representing the singular and plural\n * translation.\n *\n * @typedef {{[key:string]:TanninDomainMetadata|TanninTranslation,'':TanninDomainMetadata|TanninTranslation}} TanninLocaleDomain\n */\n\n/**\n * Jed-formatted locale data.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @typedef {{[domain:string]:TanninLocaleDomain}} TanninLocaleData\n */\n\n/**\n * Default Tannin constructor options.\n *\n * @type {TanninOptions}\n */\nvar DEFAULT_OPTIONS = {\n\tcontextDelimiter: '\\u0004',\n\tonMissingKey: null,\n};\n\n/**\n * Given a specific locale data's config `plural_forms` value, returns the\n * expression.\n *\n * @example\n *\n * ```\n * getPluralExpression( 'nplurals=2; plural=(n != 1);' ) === '(n != 1)'\n * ```\n *\n * @param {string} pf Locale data plural forms.\n *\n * @return {string} Plural forms expression.\n */\nfunction getPluralExpression( pf ) {\n\tvar parts, i, part;\n\n\tparts = pf.split( ';' );\n\n\tfor ( i = 0; i < parts.length; i++ ) {\n\t\tpart = parts[ i ].trim();\n\t\tif ( part.indexOf( 'plural=' ) === 0 ) {\n\t\t\treturn part.substr( 7 );\n\t\t}\n\t}\n}\n\n/**\n * Tannin constructor.\n *\n * @class\n *\n * @param {TanninLocaleData} data Jed-formatted locale data.\n * @param {TanninOptions} [options] Tannin options.\n */\nexport default function Tannin( data, options ) {\n\tvar key;\n\n\t/**\n\t * Jed-formatted locale data.\n\t *\n\t * @name Tannin#data\n\t * @type {TanninLocaleData}\n\t */\n\tthis.data = data;\n\n\t/**\n\t * Plural forms function cache, keyed by plural forms string.\n\t *\n\t * @name Tannin#pluralForms\n\t * @type {Object<string,Function>}\n\t */\n\tthis.pluralForms = {};\n\n\t/**\n\t * Effective options for instance, including defaults.\n\t *\n\t * @name Tannin#options\n\t * @type {TanninOptions}\n\t */\n\tthis.options = {};\n\n\tfor ( key in DEFAULT_OPTIONS ) {\n\t\tthis.options[ key ] = options !== undefined && key in options\n\t\t\t? options[ key ]\n\t\t\t: DEFAULT_OPTIONS[ key ];\n\t}\n}\n\n/**\n * Returns the plural form index for the given domain and value.\n *\n * @param {string} domain Domain on which to calculate plural form.\n * @param {number} n Value for which plural form is to be calculated.\n *\n * @return {number} Plural form index.\n */\nTannin.prototype.getPluralForm = function( domain, n ) {\n\tvar getPluralForm = this.pluralForms[ domain ],\n\t\tconfig, plural, pf;\n\n\tif ( ! getPluralForm ) {\n\t\tconfig = this.data[ domain ][ '' ];\n\n\t\tpf = (\n\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t// @ts-ignore\n\t\t\tconfig.plural_forms\n\t\t);\n\n\t\tif ( typeof pf !== 'function' ) {\n\t\t\tplural = getPluralExpression(\n\t\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t\t// @ts-ignore\n\t\t\t\tconfig.plural_forms\n\t\t\t);\n\n\t\t\tpf = pluralForms( plural );\n\t\t}\n\n\t\tgetPluralForm = this.pluralForms[ domain ] = pf;\n\t}\n\n\treturn getPluralForm( n );\n};\n\n/**\n * Translate a string.\n *\n * @param {string} domain Translation domain.\n * @param {string|void} context Context distinguishing terms of the same name.\n * @param {string} singular Primary key for translation lookup.\n * @param {string=} plural Fallback value used for non-zero plural\n * form index.\n * @param {number=} n Value to use in calculating plural form.\n *\n * @return {string} Translated string.\n */\nTannin.prototype.dcnpgettext = function( domain, context, singular, plural, n ) {\n\tvar index, key, entry;\n\n\tif ( n === undefined ) {\n\t\t// Default to singular.\n\t\tindex = 0;\n\t} else {\n\t\t// Find index by evaluating plural form for value.\n\t\tindex = this.getPluralForm( domain, n );\n\t}\n\n\tkey = singular;\n\n\t// If provided, context is prepended to key with delimiter.\n\tif ( context ) {\n\t\tkey = context + this.options.contextDelimiter + singular;\n\t}\n\n\tentry = this.data[ domain ][ key ];\n\n\t// Verify not only that entry exists, but that the intended index is within\n\t// range and non-empty.\n\tif ( entry && entry[ index ] ) {\n\t\treturn entry[ index ];\n\t}\n\n\tif ( this.options.onMissingKey ) {\n\t\tthis.options.onMissingKey( singular, domain );\n\t}\n\n\t// If entry not found, fall back to singular vs. plural with zero index\n\t// representing the singular value.\n\treturn index === 0 ? singular : plural;\n};\n","import apiFetch from '@wordpress/api-fetch';\nimport { useState, useEffect } from '@wordpress/element';\n\nconst useHasSeenSellerCelebrationModal = () => {\n\tconst [ hasSeenSellerCelebrationModal, setHasSeenSellerCelebrationModal ] = useState( '' );\n\n\tuseEffect( () => {\n\t\tfetchHasSeenSellerCelebrationModal();\n\t} );\n\n\tfunction fetchHasSeenSellerCelebrationModal() {\n\t\tapiFetch( { path: '/wpcom/v2/block-editor/has-seen-seller-celebration-modal' } )\n\t\t\t.then( ( result ) =>\n\t\t\t\tsetHasSeenSellerCelebrationModal( result.has_seen_seller_celebration_modal )\n\t\t\t)\n\t\t\t.catch( () => setHasSeenSellerCelebrationModal( false ) );\n\t}\n\n\tfunction updateHasSeenSellerCelebrationModal( value ) {\n\t\tapiFetch( {\n\t\t\tmethod: 'PUT',\n\t\t\tpath: '/wpcom/v2/block-editor/has-seen-seller-celebration-modal',\n\t\t\tdata: { has_seen_seller_celebration_modal: value },\n\t\t} ).finally( () => {\n\t\t\tsetHasSeenSellerCelebrationModal( value );\n\t\t} );\n\t}\n\n\treturn { hasSeenSellerCelebrationModal, updateHasSeenSellerCelebrationModal };\n};\nexport default useHasSeenSellerCelebrationModal;\n","import apiFetch from '@wordpress/api-fetch';\nimport { useState, useEffect, useCallback } from '@wordpress/element';\n\nconst useSiteIntent = () => {\n\tconst [ siteIntent, setSiteIntent ] = useState( '' );\n\n\tconst fetchSiteIntent = useCallback( () => {\n\t\tapiFetch( { path: '/wpcom/v2/site-intent' } )\n\t\t\t.then( ( result ) => setSiteIntent( result.site_intent ) )\n\t\t\t.catch( () => setSiteIntent( '' ) );\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tfetchSiteIntent();\n\t}, [ fetchSiteIntent ] );\n\treturn siteIntent;\n};\nexport default useSiteIntent;\n","import { SiteDetails } from '@automattic/data-stores/src/site';\nimport { SiteDetailsPlan } from '@automattic/launch/src/stores';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useCallback } from 'react';\nimport request from 'wpcom-proxy-request';\n\nconst useSitePlan = ( siteIdOrSlug: string | number ) => {\n\tconst [ sitePlan, setSitePlan ] = useState( {} as SiteDetailsPlan );\n\n\tconst fetchSite = useCallback( async () => {\n\t\tconst siteObj: SiteDetails = await request( {\n\t\t\tpath: `/sites/${ siteIdOrSlug }?http_envelope=1`,\n\t\t\tapiVersion: '1.1',\n\t\t} );\n\t\tif ( siteObj?.plan ) {\n\t\t\tsetSitePlan( siteObj.plan );\n\t\t}\n\t}, [ siteIdOrSlug ] );\n\n\tuseEffect( () => {\n\t\tfetchSite();\n\t}, [ fetchSite ] );\n\n\treturn sitePlan;\n};\nexport default useSitePlan;\n","/*** THIS MUST BE THE FIRST THING EVALUATED IN THIS SCRIPT *****/\nimport './public-path';\n\n/* eslint-disable wpcalypso/jsx-classname-namespace */\n\nimport { LocaleProvider, i18nDefaultLocaleSlug } from '@automattic/i18n-utils';\nimport { Guide, GuidePage } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect, useState } from '@wordpress/element';\nimport { registerPlugin } from '@wordpress/plugins';\nimport { getQueryArg } from '@wordpress/url';\nimport DraftPostModal from './draft-post-modal';\nimport PostPublishedModal from './post-published-modal';\nimport PurchaseNotice from './purchase-notice';\nimport SellerCelebrationModal from './seller-celebration-modal';\nimport { DEFAULT_VARIANT, BLANK_CANVAS_VARIANT } from './store';\nimport WpcomNux from './welcome-modal/wpcom-nux';\nimport LaunchWpcomWelcomeTour from './welcome-tour/tour-launch';\n\nfunction WelcomeTour() {\n\tconst [ showDraftPostModal ] = useState(\n\t\tgetQueryArg( window.location.href, 'showDraftPostModal' )\n\t);\n\n\tconst { show, isLoaded, variant, isManuallyOpened, isNewPageLayoutModalOpen } = useSelect(\n\t\t( select ) => {\n\t\t\tconst welcomeGuideStoreSelect = select( 'automattic/wpcom-welcome-guide' );\n\t\t\tconst starterPageLayoutsStoreSelect = select( 'automattic/starter-page-layouts' );\n\t\t\treturn {\n\t\t\t\tshow: welcomeGuideStoreSelect.isWelcomeGuideShown(),\n\t\t\t\tisLoaded: welcomeGuideStoreSelect.isWelcomeGuideStatusLoaded(),\n\t\t\t\tvariant: welcomeGuideStoreSelect.getWelcomeGuideVariant(),\n\t\t\t\tisManuallyOpened: welcomeGuideStoreSelect.isWelcomeGuideManuallyOpened(),\n\t\t\t\tisNewPageLayoutModalOpen: starterPageLayoutsStoreSelect?.isOpen(), // Handle the case where SPT is not initalized.\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst setOpenState = useDispatch( 'automattic/starter-page-layouts' )?.setOpenState;\n\n\tconst { fetchWelcomeGuideStatus } = useDispatch( 'automattic/wpcom-welcome-guide' );\n\n\t// On mount check if the WPCOM welcome guide status exists in state (from local storage), otherwise fetch it from the API.\n\tuseEffect( () => {\n\t\tif ( ! isLoaded ) {\n\t\t\tfetchWelcomeGuideStatus();\n\t\t}\n\t}, [ fetchWelcomeGuideStatus, isLoaded ] );\n\n\tif ( ! show || isNewPageLayoutModalOpen ) {\n\t\treturn null;\n\t}\n\n\t// Open patterns panel before Welcome Tour if necessary (e.g. when using Blank Canvas theme)\n\t// Do this only when Welcome Tour is not manually opened.\n\t// NOTE: at the moment, 'starter-page-templates' assets are not loaded on /site-editor/ page so 'setOpenState' may be undefined\n\tif ( variant === BLANK_CANVAS_VARIANT && ! isManuallyOpened && setOpenState ) {\n\t\tsetOpenState( 'OPEN_FOR_BLANK_CANVAS' );\n\t\treturn null;\n\t}\n\n\tif ( variant === DEFAULT_VARIANT ) {\n\t\treturn (\n\t\t\t<LocaleProvider localeSlug={ window.wpcomBlockEditorNuxLocale ?? i18nDefaultLocaleSlug }>\n\t\t\t\t{ showDraftPostModal ? <DraftPostModal /> : <LaunchWpcomWelcomeTour /> }\n\t\t\t</LocaleProvider>\n\t\t);\n\t}\n\n\t// This case is redundant now and it will be cleaned up in a follow-up PR\n\tif ( variant === 'modal' && Guide && GuidePage ) {\n\t\treturn <WpcomNux />;\n\t}\n\n\treturn null;\n}\n\nregisterPlugin( 'wpcom-block-editor-nux', {\n\trender: () => (\n\t\t<>\n\t\t\t<WelcomeTour />\n\t\t\t<PostPublishedModal />\n\t\t\t<SellerCelebrationModal />\n\t\t\t<PurchaseNotice />\n\t\t</>\n\t),\n} );\n","import { select, dispatch, subscribe } from '@wordpress/data';\n\nimport '@wordpress/nux'; //ensure nux store loads\n\n// Disable nux and welcome guide features from core.\nconst unsubscribe = subscribe( () => {\n\tdispatch( 'core/nux' ).disableTips();\n\tif ( select( 'core/edit-post' )?.isFeatureActive( 'welcomeGuide' ) ) {\n\t\tdispatch( 'core/edit-post' ).toggleFeature( 'welcomeGuide' );\n\t\tunsubscribe();\n\t}\n\tif ( select( 'core/edit-site' )?.isFeatureActive( 'welcomeGuide' ) ) {\n\t\tdispatch( 'core/edit-site' ).toggleFeature( 'welcomeGuide' );\n\t\tunsubscribe();\n\t}\n} );\n\n// Listen for these features being triggered to call dotcom welcome guide instead.\n// Note migration of areTipsEnabled: https://github.com/WordPress/gutenberg/blob/5c3a32dabe4393c45f7fe6ac5e4d78aebd5ee274/packages/data/src/plugins/persistence/index.js#L269\nsubscribe( () => {\n\tif ( select( 'core/nux' ).areTipsEnabled() ) {\n\t\tdispatch( 'core/nux' ).disableTips();\n\t\tdispatch( 'automattic/wpcom-welcome-guide' ).setShowWelcomeGuide( true );\n\t}\n\tif ( select( 'core/edit-post' )?.isFeatureActive( 'welcomeGuide' ) ) {\n\t\tdispatch( 'core/edit-post' ).toggleFeature( 'welcomeGuide' );\n\t\t// On mounting, the welcomeGuide feature is turned on by default. This opens the welcome guide despite `welcomeGuideStatus` value.\n\t\t// This check ensures that we only listen to `welcomeGuide` changes if the welcomeGuideStatus value is loaded and respected\n\t\tif ( select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideStatusLoaded() ) {\n\t\t\tdispatch( 'automattic/wpcom-welcome-guide' ).setShowWelcomeGuide( true, {\n\t\t\t\topenedManually: true,\n\t\t\t} );\n\t\t}\n\t}\n\tif ( select( 'core/edit-site' )?.isFeatureActive( 'welcomeGuide' ) ) {\n\t\tdispatch( 'core/edit-site' ).toggleFeature( 'welcomeGuide' );\n\t\tif ( select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideStatusLoaded() ) {\n\t\t\tdispatch( 'automattic/wpcom-welcome-guide' ).setShowWelcomeGuide( true, {\n\t\t\t\topenedManually: true,\n\t\t\t} );\n\t\t}\n\t}\n} );\n","import { recordTracksEvent } from '@automattic/calypso-analytics';\nimport { Button } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { doAction, hasAction } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\nimport NuxModal from '../nux-modal';\nimport draftPostImage from './images/draft-post.svg';\nimport './style.scss';\n\nconst CLOSE_EDITOR_ACTION = 'a8c.wpcom-block-editor.closeEditor';\n\nconst DraftPostModal = () => {\n\tconst siteId = window._currentSiteId;\n\tconst primaryDomain = useSelect( ( select ) =>\n\t\tselect( 'automattic/site' ).getPrimarySiteDomain( siteId )\n\t);\n\n\tconst homeUrl = `/home/${ primaryDomain?.domain || window.location.hostname }`;\n\tconst [ isOpen, setIsOpen ] = useState( true );\n\tconst closeModal = () => setIsOpen( false );\n\tconst closeEditor = () => {\n\t\tif ( hasAction( CLOSE_EDITOR_ACTION ) ) {\n\t\t\tdoAction( CLOSE_EDITOR_ACTION, homeUrl );\n\t\t} else {\n\t\t\twindow.location.href = `https://wordpress.com${ homeUrl }`;\n\t\t}\n\t};\n\n\treturn (\n\t\t<NuxModal\n\t\t\tisOpen={ isOpen }\n\t\t\tclassName=\"wpcom-block-editor-draft-post-modal\"\n\t\t\ttitle={ __( 'Write your first post', 'full-site-editing' ) }\n\t\t\tdescription={ __(\n\t\t\t\t'It’s time to flex those writing muscles and start drafting your first post!',\n\t\t\t\t'full-site-editing'\n\t\t\t) }\n\t\t\timageSrc={ draftPostImage }\n\t\t\tactionButtons={\n\t\t\t\t<>\n\t\t\t\t\t<Button isPrimary onClick={ closeModal }>\n\t\t\t\t\t\t{ __( 'Start writing', 'full-site-editing' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button isSecondary onClick={ closeEditor }>\n\t\t\t\t\t\t{ __( \"I'm not ready\", 'full-site-editing' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</>\n\t\t\t}\n\t\t\tonRequestClose={ closeModal }\n\t\t\tonOpen={ () => recordTracksEvent( 'calypso_editor_wpcom_draft_post_modal_show' ) }\n\t\t/>\n\t);\n};\n\nexport default DraftPostModal;\n","import { Modal } from '@wordpress/components';\nimport { useEffect, useRef } from '@wordpress/element';\nimport classnames from 'classnames';\nimport React from 'react';\nimport './style.scss';\n\ninterface Props {\n\tisOpen: boolean;\n\tclassName?: string;\n\ttitle: string;\n\tdescription: string;\n\timageSrc: string;\n\tactionButtons: React.ReactElement;\n\tonRequestClose: () => void;\n\tonOpen?: () => void;\n}\n\nconst NuxModal: React.FC< Props > = ( {\n\tisOpen,\n\tclassName,\n\ttitle,\n\tdescription,\n\timageSrc,\n\tactionButtons,\n\tonRequestClose,\n\tonOpen,\n} ) => {\n\tconst prevIsOpen = useRef< boolean | null >( null );\n\n\tuseEffect( () => {\n\t\tif ( ! prevIsOpen.current && isOpen ) {\n\t\t\tonOpen?.();\n\t\t}\n\n\t\tprevIsOpen.current = isOpen;\n\t}, [ prevIsOpen, isOpen, onOpen ] );\n\n\tif ( ! isOpen ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName={ classnames( 'wpcom-block-editor-nux-modal', className ) }\n\t\t\topen={ isOpen }\n\t\t\ttitle=\"\"\n\t\t\tonRequestClose={ onRequestClose }\n\t\t>\n\t\t\t<div className=\"wpcom-block-editor-nux-modal__image-container\">\n\t\t\t\t<img src={ imageSrc } alt={ title } />\n\t\t\t</div>\n\t\t\t<h1 className=\"wpcom-block-editor-nux-modal__title\">{ title }</h1>\n\t\t\t<p className=\"wpcom-block-editor-nux-modal__description\">{ description }</p>\n\t\t\t<div className=\"wpcom-block-editor-nux-modal__buttons\">{ actionButtons }</div>\n\t\t</Modal>\n\t);\n};\n\nexport default NuxModal;\n","import { recordTracksEvent } from '@automattic/calypso-analytics';\nimport { Button } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport React from 'react';\nimport NuxModal from '../nux-modal';\nimport postPublishedImage from './images/post-published.svg';\n\nimport './style.scss';\n\n/**\n * Show the first post publish modal\n */\nconst PostPublishedModal: React.FC = () => {\n\tconst { link } = useSelect( ( select ) => select( 'core/editor' ).getCurrentPost() );\n\tconst postType = useSelect( ( select ) => select( 'core/editor' ).getCurrentPostType() );\n\n\tconst isCurrentPostPublished = useSelect( ( select ) =>\n\t\tselect( 'core/editor' ).isCurrentPostPublished()\n\t);\n\tconst previousIsCurrentPostPublished = useRef( isCurrentPostPublished );\n\tconst shouldShowFirstPostPublishedModal = useSelect( ( select ) =>\n\t\tselect( 'automattic/wpcom-welcome-guide' ).getShouldShowFirstPostPublishedModal()\n\t);\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\tconst closeModal = () => setIsOpen( false );\n\tconst { fetchShouldShowFirstPostPublishedModal, setShouldShowFirstPostPublishedModal } =\n\t\tuseDispatch( 'automattic/wpcom-welcome-guide' );\n\n\tuseEffect( () => {\n\t\tfetchShouldShowFirstPostPublishedModal();\n\t}, [ fetchShouldShowFirstPostPublishedModal ] );\n\tuseEffect( () => {\n\t\t// If the user is set to see the first post modal and current post status changes to publish,\n\t\t// open the post publish modal\n\t\tif (\n\t\t\tshouldShowFirstPostPublishedModal &&\n\t\t\t! previousIsCurrentPostPublished.current &&\n\t\t\tisCurrentPostPublished &&\n\t\t\tpostType === 'post'\n\t\t) {\n\t\t\tpreviousIsCurrentPostPublished.current = isCurrentPostPublished;\n\t\t\tsetShouldShowFirstPostPublishedModal( false );\n\n\t\t\t// When the post published panel shows, it is focused automatically.\n\t\t\t// Thus, we need to delay open the modal so that the modal would not be close immediately\n\t\t\t// because the outside of modal is focused\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tsetIsOpen( true );\n\t\t\t} );\n\t\t}\n\t}, [\n\t\tpostType,\n\t\tshouldShowFirstPostPublishedModal,\n\t\tisCurrentPostPublished,\n\t\tsetShouldShowFirstPostPublishedModal,\n\t] );\n\n\tconst handleClick = ( event: React.MouseEvent ) => {\n\t\tevent.preventDefault();\n\t\t( window.top as Window ).location.href = link;\n\t};\n\n\treturn (\n\t\t<NuxModal\n\t\t\tisOpen={ isOpen }\n\t\t\tclassName=\"wpcom-block-editor-post-published-modal\"\n\t\t\ttitle={ __( 'Your first post is published!', 'full-site-editing' ) }\n\t\t\tdescription={ __(\n\t\t\t\t'Congratulations! You did it. View your post to see how it will look on your site.',\n\t\t\t\t'full-site-editing'\n\t\t\t) }\n\t\t\timageSrc={ postPublishedImage }\n\t\t\tactionButtons={\n\t\t\t\t<Button isPrimary onClick={ handleClick }>\n\t\t\t\t\t{ __( 'View Post', 'full-site-editing' ) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\tonRequestClose={ closeModal }\n\t\t\tonOpen={ () => recordTracksEvent( 'calypso_editor_wpcom_first_post_published_modal_show' ) }\n\t\t/>\n\t);\n};\n\nexport default PostPublishedModal;\n","/* exported __webpack_public_path__ */\n/* global __webpack_public_path__ */\n\n/**\n * Dynamically set WebPack's publicPath so that split assets can be found.\n *\n * @see https://webpack.js.org/guides/public-path/#on-the-fly\n */\nif ( typeof window === 'object' && window.wpcomBlockEditorNuxAssetsUrl ) {\n\t// eslint-disable-next-line no-global-assign\n\t__webpack_public_path__ = window.wpcomBlockEditorNuxAssetsUrl;\n}\n","import { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useEffect, useState } from 'react';\nimport './style.scss';\n\nfunction PurchaseNotice() {\n\tconst [ hasPaymentNotice, setHasPaymentNotice ] = useState( false );\n\tconst { createNotice } = useDispatch( noticesStore );\n\n\tuseEffect( () => {\n\t\tconst noticePattern = /[&?]notice=([\\w_-]+)/;\n\t\tconst match = noticePattern.exec( document.location.search );\n\t\tconst notice = match && match[ 1 ];\n\t\tif ( 'purchase-success' === notice && hasPaymentNotice === false ) {\n\t\t\tsetHasPaymentNotice( true );\n\t\t\tcreateNotice(\n\t\t\t\t'info',\n\t\t\t\t__(\n\t\t\t\t\t'Welcome to the Pro plan! Premium blocks are now available to use.',\n\t\t\t\t\t'full-site-editing'\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tisDismissible: true,\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn null;\n}\n\nexport default PurchaseNotice;\n","import { recordTracksEvent } from '@automattic/calypso-analytics';\nimport { Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useRef, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport useHasSeenSellerCelebrationModal from '../../../dotcom-fse/lib/seller-celebration-modal/use-has-seen-seller-celebration-modal';\nimport useSiteIntent from '../../../dotcom-fse/lib/site-intent/use-site-intent';\nimport NuxModal from '../nux-modal';\nimport contentSubmittedImage from './images/product-published.svg';\nimport './style.scss';\n\n/**\n * Show the seller celebration modal\n */\nconst SellerCelebrationModalInner = () => {\n\tconst { addEntities } = useDispatch( 'core' );\n\n\tuseEffect( () => {\n\t\t// @TODO - not sure if I actually need this; need to test with it removed.\n\t\t// Teach core data about the status entity so we can use selectors like `getEntityRecords()`\n\t\taddEntities( [\n\t\t\t{\n\t\t\t\tbaseURL: '/wp/v2/statuses',\n\t\t\t\tkey: 'slug',\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'status',\n\t\t\t\tplural: 'statuses',\n\t\t\t},\n\t\t] );\n\t\t// Only register entity once\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\t// conditions to show:\n\t// - user just finished saving (check)\n\t// - editor has not yet displayed modal once (check)\n\t// - user is a seller (check)\n\t// - user has not saved site before\n\t// - content includes product block (check)\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ hasDisplayedModal, setHasDisplayedModal ] = useState( false );\n\tconst isSiteEditor = useSelect( ( select ) => !! select( 'core/edit-site' ) );\n\tconst previousIsEditorSaving = useRef( false );\n\tconst { isEditorSaving, hasPaymentsBlock, linkUrl } = useSelect( ( select ) => {\n\t\tif ( isSiteEditor ) {\n\t\t\tconst isSavingSite =\n\t\t\t\tselect( 'core' ).isSavingEntityRecord( 'root', 'site' ) &&\n\t\t\t\t! select( 'core' ).isAutosavingEntityRecord( 'root', 'site' );\n\t\t\tconst page = select( 'core/edit-site' ).getPage();\n\t\t\tconst pageId = parseInt( page?.context?.postId );\n\t\t\tconst isSavingEntity =\n\t\t\t\tselect( 'core' ).isSavingEntityRecord( 'postType', 'page', pageId ) &&\n\t\t\t\t! select( 'core' ).isAutosavingEntityRecord( 'postType', 'page', pageId );\n\t\t\tconst pageEntity = select( 'core' ).getEntityRecord( 'postType', 'page', pageId );\n\t\t\tconst paymentsBlock =\n\t\t\t\tpageEntity?.content?.raw?.includes( '<!-- wp:jetpack/recurring-payments -->' ) ?? false;\n\t\t\treturn {\n\t\t\t\tisEditorSaving: isSavingSite || isSavingEntity,\n\t\t\t\thasPaymentsBlock: paymentsBlock,\n\t\t\t\tlinkUrl: pageEntity?.link,\n\t\t\t};\n\t\t}\n\t\tconst currentPost = select( 'core/editor' ).getCurrentPost();\n\t\tconst isSavingEntity =\n\t\t\tselect( 'core' ).isSavingEntityRecord( 'postType', currentPost?.type, currentPost?.id ) &&\n\t\t\t! select( 'core' ).isAutosavingEntityRecord( 'postType', currentPost?.type, currentPost?.id );\n\t\tconst globalBlockCount = select( 'core/block-editor' ).getGlobalBlockCount(\n\t\t\t'jetpack/recurring-payments'\n\t\t);\n\t\treturn {\n\t\t\tisEditorSaving: isSavingEntity,\n\t\t\thasPaymentsBlock: globalBlockCount > 0,\n\t\t\tlinkUrl: currentPost.link,\n\t\t};\n\t} );\n\tconst intent = useSiteIntent();\n\tconst { hasSeenSellerCelebrationModal, updateHasSeenSellerCelebrationModal } =\n\t\tuseHasSeenSellerCelebrationModal();\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! isEditorSaving &&\n\t\t\tpreviousIsEditorSaving.current &&\n\t\t\t! hasDisplayedModal &&\n\t\t\tintent === 'sell' &&\n\t\t\thasPaymentsBlock &&\n\t\t\t! hasSeenSellerCelebrationModal\n\t\t) {\n\t\t\tsetIsModalOpen( true );\n\t\t\tsetHasDisplayedModal( true );\n\t\t\tupdateHasSeenSellerCelebrationModal( true );\n\t\t}\n\t\tpreviousIsEditorSaving.current = isEditorSaving;\n\t}, [\n\t\tisEditorSaving,\n\t\thasDisplayedModal,\n\t\tintent,\n\t\thasPaymentsBlock,\n\t\thasSeenSellerCelebrationModal,\n\t\tupdateHasSeenSellerCelebrationModal,\n\t] );\n\n\t// if save state has changed and was saving on last render\n\t// then it has finished saving\n\t// open modal if content has sell block,\n\n\tconst closeModal = () => setIsModalOpen( false );\n\treturn (\n\t\t<NuxModal\n\t\t\tisOpen={ isModalOpen }\n\t\t\tclassName=\"wpcom-site-editor-seller-celebration-modal\"\n\t\t\ttitle={ __( \"You've added your first product!\", 'full-site-editing' ) }\n\t\t\tdescription={ __(\n\t\t\t\t'Preview your product on your site before launching and sharing with others.',\n\t\t\t\t'full-site-editing'\n\t\t\t) }\n\t\t\timageSrc={ contentSubmittedImage }\n\t\t\tactionButtons={\n\t\t\t\t<>\n\t\t\t\t\t<Button onClick={ closeModal }>{ __( 'Continue editing', 'full-site-editing' ) }</Button>\n\t\t\t\t\t<Button isPrimary href={ linkUrl } target=\"__blank\" rel=\"noopener noreferrer\">\n\t\t\t\t\t\t{ __( 'View your product', 'full-site-editing' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</>\n\t\t\t}\n\t\t\tonRequestClose={ closeModal }\n\t\t\tonOpen={ () => recordTracksEvent( 'calypso_editor_wpcom_seller_celebration_modal_show' ) }\n\t\t/>\n\t);\n};\n\nconst SellerCelebrationModal = () => {\n\tconst intent = useSiteIntent();\n\tif ( intent === 'sell' ) {\n\t\treturn <SellerCelebrationModalInner />;\n\t}\n\treturn null;\n};\n\nexport default SellerCelebrationModal;\n","import apiFetch from '@wordpress/api-fetch';\nimport { combineReducers, registerStore } from '@wordpress/data';\nimport { apiFetch as apiFetchControls, controls } from '@wordpress/data-controls';\n\nimport 'a8c-fse-common-data-stores';\n\nexport const DEFAULT_VARIANT = 'tour';\nexport const BLANK_CANVAS_VARIANT = 'blank-canvas-tour';\n\nconst showWelcomeGuideReducer = ( state = undefined, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS':\n\t\t\treturn action.response.show_welcome_guide;\n\t\tcase 'WPCOM_WELCOME_GUIDE_SHOW_SET':\n\t\t\treturn action.show;\n\t\tcase 'WPCOM_WELCOME_GUIDE_RESET_STORE':\n\t\t\treturn undefined;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nconst welcomeGuideManuallyOpenedReducer = ( state = false, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'WPCOM_WELCOME_GUIDE_SHOW_SET':\n\t\t\tif ( typeof action.openedManually !== 'undefined' ) {\n\t\t\t\treturn action.openedManually;\n\t\t\t}\n\t\t\treturn state;\n\n\t\tcase 'WPCOM_WELCOME_GUIDE_RESET_STORE':\n\t\t\treturn false;\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\n// TODO: next PR convert file to Typescript to ensure control of tourRating values: null, 'thumbs-up' 'thumbs-down'\nconst tourRatingReducer = ( state = undefined, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'WPCOM_WELCOME_GUIDE_TOUR_RATING_SET':\n\t\t\treturn action.tourRating;\n\t\tcase 'WPCOM_WELCOME_GUIDE_RESET_STORE':\n\t\t\treturn undefined;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nconst welcomeGuideVariantReducer = ( state = DEFAULT_VARIANT, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS':\n\t\t\treturn action.response.variant;\n\t\tcase 'WPCOM_HAS_USED_PATTERNS_MODAL':\n\t\t\treturn state === BLANK_CANVAS_VARIANT ? DEFAULT_VARIANT : state;\n\t\tcase 'WPCOM_WELCOME_GUIDE_RESET_STORE':\n\t\t\treturn DEFAULT_VARIANT;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nconst shouldShowFirstPostPublishedModalReducer = ( state = false, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL':\n\t\t\treturn action.value;\n\t\tcase 'WPCOM_WELCOME_GUIDE_RESET_STORE':\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nconst reducer = combineReducers( {\n\twelcomeGuideManuallyOpened: welcomeGuideManuallyOpenedReducer,\n\tshowWelcomeGuide: showWelcomeGuideReducer,\n\ttourRating: tourRatingReducer,\n\twelcomeGuideVariant: welcomeGuideVariantReducer,\n\tshouldShowFirstPostPublishedModal: shouldShowFirstPostPublishedModalReducer,\n} );\n\nconst actions = {\n\t*fetchWelcomeGuideStatus() {\n\t\tconst response = yield apiFetchControls( { path: '/wpcom/v2/block-editor/nux' } );\n\n\t\treturn {\n\t\t\ttype: 'WPCOM_WELCOME_GUIDE_FETCH_STATUS_SUCCESS',\n\t\t\tresponse,\n\t\t};\n\t},\n\t*fetchShouldShowFirstPostPublishedModal() {\n\t\tconst response = yield apiFetchControls( {\n\t\t\tpath: '/wpcom/v2/block-editor/should-show-first-post-published-modal',\n\t\t} );\n\n\t\treturn {\n\t\t\ttype: 'WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL',\n\t\t\tvalue: response.should_show_first_post_published_modal,\n\t\t};\n\t},\n\tsetShowWelcomeGuide: ( show, { openedManually, onlyLocal } = {} ) => {\n\t\tif ( ! onlyLocal ) {\n\t\t\tapiFetch( {\n\t\t\t\tpath: '/wpcom/v2/block-editor/nux',\n\t\t\t\tmethod: 'POST',\n\t\t\t\tdata: { show_welcome_guide: show },\n\t\t\t} );\n\t\t}\n\n\t\treturn {\n\t\t\ttype: 'WPCOM_WELCOME_GUIDE_SHOW_SET',\n\t\t\tshow,\n\t\t\topenedManually,\n\t\t};\n\t},\n\tsetTourRating: ( tourRating ) => {\n\t\treturn { type: 'WPCOM_WELCOME_GUIDE_TOUR_RATING_SET', tourRating };\n\t},\n\tsetUsedPageOrPatternsModal: () => {\n\t\treturn { type: 'WPCOM_HAS_USED_PATTERNS_MODAL' };\n\t},\n\tsetShouldShowFirstPostPublishedModal: ( value ) => {\n\t\treturn { type: 'WPCOM_SET_SHOULD_SHOW_FIRST_POST_PUBLISHED_MODAL', value };\n\t},\n\t// The `resetStore` action is only used for testing to reset the\n\t// store inbetween tests.\n\tresetStore: () => ( {\n\t\ttype: 'WPCOM_WELCOME_GUIDE_RESET_STORE',\n\t} ),\n};\n\nconst selectors = {\n\tisWelcomeGuideManuallyOpened: ( state ) => state.welcomeGuideManuallyOpened,\n\tisWelcomeGuideShown: ( state ) => !! state.showWelcomeGuide,\n\tisWelcomeGuideStatusLoaded: ( state ) => typeof state.showWelcomeGuide !== 'undefined',\n\tgetTourRating: ( state ) => state.tourRating,\n\t// the 'modal' variant previously used for mobile has been removed but its slug may still be persisted in local storage\n\tgetWelcomeGuideVariant: ( state ) =>\n\t\tstate.welcomeGuideVariant === 'modal' ? DEFAULT_VARIANT : state.welcomeGuideVariant,\n\tgetShouldShowFirstPostPublishedModal: ( state ) => state.shouldShowFirstPostPublishedModal,\n};\n\nexport function register() {\n\treturn registerStore( 'automattic/wpcom-welcome-guide', {\n\t\treducer,\n\t\tactions,\n\t\tselectors,\n\t\tcontrols,\n\t\tpersist: true,\n\t} );\n}\n","/* eslint-disable wpcalypso/jsx-classname-namespace */\n\nimport { recordTracksEvent } from '@automattic/calypso-analytics';\nimport { Guide, GuidePage } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport blockPickerImage from './images/block-picker.svg';\nimport editorImage from './images/editor.svg';\nimport previewImage from './images/preview.svg';\nimport privateImage from './images/private.svg';\n\nimport './style.scss';\n\nfunction WpcomNux() {\n\tconst { show, isNewPageLayoutModalOpen, isManuallyOpened } = useSelect( ( select ) => ( {\n\t\tshow: select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideShown(),\n\t\tisNewPageLayoutModalOpen:\n\t\t\tselect( 'automattic/starter-page-layouts' ) && // Handle the case where SPT is not initalized.\n\t\t\tselect( 'automattic/starter-page-layouts' ).isOpen(),\n\t\tisManuallyOpened: select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideManuallyOpened(),\n\t} ) );\n\n\tconst { setShowWelcomeGuide } = useDispatch( 'automattic/wpcom-welcome-guide' );\n\n\t// Track opening of the welcome guide\n\tuseEffect( () => {\n\t\tif ( show && ! isNewPageLayoutModalOpen ) {\n\t\t\trecordTracksEvent( 'calypso_editor_wpcom_nux_open', {\n\t\t\t\tis_gutenboarding: window.calypsoifyGutenberg?.isGutenboarding,\n\t\t\t\tis_manually_opened: isManuallyOpened,\n\t\t\t} );\n\t\t}\n\t}, [ isManuallyOpened, isNewPageLayoutModalOpen, show ] );\n\n\tif ( ! show || isNewPageLayoutModalOpen ) {\n\t\treturn null;\n\t}\n\n\tconst dismissWpcomNux = () => {\n\t\trecordTracksEvent( 'calypso_editor_wpcom_nux_dismiss', {\n\t\t\tis_gutenboarding: window.calypsoifyGutenberg?.isGutenboarding,\n\t\t} );\n\t\tsetShowWelcomeGuide( false, { openedManually: false } );\n\t};\n\n\tconst nuxPages = getWpcomNuxPages();\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"wpcom-block-editor-nux\"\n\t\t\tcontentLabel={ __( 'Welcome to your website', 'full-site-editing' ) }\n\t\t\tfinishButtonText={ __( 'Get started', 'full-site-editing' ) }\n\t\t\tonFinish={ dismissWpcomNux }\n\t\t>\n\t\t\t{ nuxPages.map( ( nuxPage, index ) => (\n\t\t\t\t<NuxPage\n\t\t\t\t\tkey={ nuxPage.heading }\n\t\t\t\t\tpageNumber={ index + 1 }\n\t\t\t\t\tisLastPage={ index === nuxPages.length - 1 }\n\t\t\t\t\t{ ...nuxPage }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Guide>\n\t);\n}\n\n/**\n * This function returns a collection of NUX slide data\n *\n * @returns { Array } a collection of <NuxPage /> props\n */\nfunction getWpcomNuxPages() {\n\treturn [\n\t\t{\n\t\t\theading: __( 'Welcome to your website', 'full-site-editing' ),\n\t\t\tdescription: __(\n\t\t\t\t'Edit your homepage, add the pages you need, and change your site’s look and feel.',\n\t\t\t\t'full-site-editing'\n\t\t\t),\n\t\t\timgSrc: editorImage,\n\t\t\talignBottom: true,\n\t\t},\n\t\t{\n\t\t\theading: __( 'Add or edit your content', 'full-site-editing' ),\n\t\t\tdescription: __(\n\t\t\t\t'Edit the placeholder content we’ve started you off with, or click the plus sign to add more content.',\n\t\t\t\t'full-site-editing'\n\t\t\t),\n\t\t\timgSrc: blockPickerImage,\n\t\t},\n\t\t{\n\t\t\theading: __( 'Preview your site as you go', 'full-site-editing' ),\n\t\t\tdescription: __(\n\t\t\t\t'As you edit your site content, click “Preview” to see your site the way your visitors will.',\n\t\t\t\t'full-site-editing'\n\t\t\t),\n\t\t\timgSrc: previewImage,\n\t\t\talignBottom: true,\n\t\t},\n\t\t{\n\t\t\theading: __( 'Hidden until you’re ready', 'full-site-editing' ),\n\t\t\tdescription: __(\n\t\t\t\t'Your site will remain hidden until launched. Click “Launch” in the toolbar to share it with the world.',\n\t\t\t\t'full-site-editing'\n\t\t\t),\n\t\t\timgSrc: privateImage,\n\t\t\talignBottom: true,\n\t\t},\n\t];\n}\n\nfunction NuxPage( { pageNumber, isLastPage, alignBottom = false, heading, description, imgSrc } ) {\n\tuseEffect( () => {\n\t\trecordTracksEvent( 'calypso_editor_wpcom_nux_slide_view', {\n\t\t\tslide_number: pageNumber,\n\t\t\tis_last_slide: isLastPage,\n\t\t\tis_gutenboarding: window.calypsoifyGutenberg?.isGutenboarding,\n\t\t} );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\treturn (\n\t\t<GuidePage className=\"wpcom-block-editor-nux__page\">\n\t\t\t<div className=\"wpcom-block-editor-nux__text\">\n\t\t\t\t<h1 className=\"wpcom-block-editor-nux__heading\">{ heading }</h1>\n\t\t\t\t<div className=\"wpcom-block-editor-nux__description\">{ description }</div>\n\t\t\t</div>\n\t\t\t<div className=\"wpcom-block-editor-nux__visual\">\n\t\t\t\t<img\n\t\t\t\t\t// Force remount so the stale image doesn't remain while new image is fetched\n\t\t\t\t\tkey={ imgSrc }\n\t\t\t\t\tsrc={ imgSrc }\n\t\t\t\t\talt=\"\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={ 'wpcom-block-editor-nux__image' + ( alignBottom ? ' align-bottom' : '' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</GuidePage>\n\t);\n}\n\nexport default WpcomNux;\n","import { recordTracksEvent } from '@automattic/calypso-analytics';\nimport { useLocale } from '@automattic/i18n-utils';\nimport { WpcomTourKit, usePrefetchTourAssets } from '@automattic/tour-kit';\nimport { isWithinBreakpoint } from '@automattic/viewport';\nimport { useDispatch, useSelect, dispatch } from '@wordpress/data';\nimport { useEffect, useMemo } from '@wordpress/element';\nimport useSiteIntent from '../../../dotcom-fse/lib/site-intent/use-site-intent';\nimport useSitePlan from '../../../dotcom-fse/lib/site-plan/use-site-plan';\nimport getTourSteps from './tour-steps';\nimport './style-tour.scss';\nimport type { WpcomConfig } from '@automattic/tour-kit';\nimport type { Rect, Placement } from '@popperjs/core';\n\nfunction LaunchWpcomWelcomeTour() {\n\tconst { show, isNewPageLayoutModalOpen, isManuallyOpened } = useSelect( ( select ) => ( {\n\t\tshow: select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideShown(),\n\t\t// Handle the case where the new page pattern modal is initialized and open\n\t\tisNewPageLayoutModalOpen:\n\t\t\tselect( 'automattic/starter-page-layouts' ) &&\n\t\t\tselect( 'automattic/starter-page-layouts' ).isOpen(),\n\t\tisManuallyOpened: select( 'automattic/wpcom-welcome-guide' ).isWelcomeGuideManuallyOpened(),\n\t} ) );\n\tconst localeSlug = useLocale();\n\n\t// Preload first card image (others preloaded after open state confirmed)\n\tusePrefetchTourAssets( [ getTourSteps( localeSlug, false )[ 0 ] ] );\n\n\tuseEffect( () => {\n\t\tif ( ! show && ! isNewPageLayoutModalOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Track opening of the Welcome Guide\n\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_open', {\n\t\t\tis_gutenboarding: window.calypsoifyGutenberg?.isGutenboarding,\n\t\t\tis_manually_opened: isManuallyOpened,\n\t\t} );\n\t}, [ isNewPageLayoutModalOpen, isManuallyOpened, show ] );\n\n\tif ( ! show || isNewPageLayoutModalOpen ) {\n\t\treturn null;\n\t}\n\n\treturn <WelcomeTour />;\n}\n\nfunction WelcomeTour() {\n\tconst sitePlan = useSitePlan( window._currentSiteId );\n\tconst intent = useSiteIntent();\n\tconst localeSlug = useLocale();\n\tconst { setShowWelcomeGuide } = useDispatch( 'automattic/wpcom-welcome-guide' );\n\tconst isGutenboarding = window.calypsoifyGutenberg?.isGutenboarding;\n\tconst isWelcomeTourNext = () => {\n\t\treturn new URLSearchParams( document.location.search ).has( 'welcome-tour-next' );\n\t};\n\tconst isSiteEditor = useSelect( ( select ) => !! select( 'core/edit-site' ) );\n\n\tconst tourSteps = getTourSteps( localeSlug, isWelcomeTourNext(), isSiteEditor );\n\n\t// Only keep Payment block step if user comes from seller simple flow\n\tif ( ! ( 'sell' === intent && sitePlan && 'ecommerce-bundle' !== sitePlan.product_slug ) ) {\n\t\tconst paymentBlockIndex = tourSteps.findIndex( ( step ) => step.slug === 'payment-block' );\n\t\ttourSteps.splice( paymentBlockIndex, 1 );\n\t}\n\tconst { isInserterOpened, isSidebarOpened, isSettingsOpened } = useSelect( ( select ) => ( {\n\t\tisInserterOpened: select( 'core/edit-post' ).isInserterOpened(),\n\t\tisSidebarOpened: select( 'automattic/block-editor-nav-sidebar' )?.isSidebarOpened() ?? false, // The sidebar store may not always be loaded.\n\t\tisSettingsOpened:\n\t\t\tselect( 'core/interface' ).getActiveComplementaryArea( 'core/edit-post' ) ===\n\t\t\t'edit-post/document',\n\t} ) );\n\n\tconst isTourMinimized =\n\t\tisSidebarOpened ||\n\t\t( isWithinBreakpoint( '<782px' ) && ( isInserterOpened || isSettingsOpened ) );\n\n\tconst tourConfig: WpcomConfig = {\n\t\tsteps: tourSteps,\n\t\tcloseHandler: ( _steps, currentStepIndex, source ) => {\n\t\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_dismiss', {\n\t\t\t\tis_gutenboarding: isGutenboarding,\n\t\t\t\tslide_number: currentStepIndex + 1,\n\t\t\t\taction: source,\n\t\t\t} );\n\t\t\tsetShowWelcomeGuide( false, { openedManually: false } );\n\t\t},\n\t\tisMinimized: isTourMinimized,\n\t\toptions: {\n\t\t\ttourRating: {\n\t\t\t\tenabled: true,\n\t\t\t\tuseTourRating: () => {\n\t\t\t\t\treturn useSelect( ( select ) =>\n\t\t\t\t\t\tselect( 'automattic/wpcom-welcome-guide' ).getTourRating()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tonTourRate: ( rating ) => {\n\t\t\t\t\tdispatch( 'automattic/wpcom-welcome-guide' ).setTourRating( rating );\n\t\t\t\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_rate', {\n\t\t\t\t\t\tthumbs_up: rating === 'thumbs-up',\n\t\t\t\t\t\tis_gutenboarding: false,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tonMinimize: ( currentStepIndex ) => {\n\t\t\t\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_minimize', {\n\t\t\t\t\t\tis_gutenboarding: isGutenboarding,\n\t\t\t\t\t\tslide_number: currentStepIndex + 1,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t\tonMaximize: ( currentStepIndex ) => {\n\t\t\t\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_maximize', {\n\t\t\t\t\t\tis_gutenboarding: isGutenboarding,\n\t\t\t\t\t\tslide_number: currentStepIndex + 1,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t\tonStepViewOnce: ( currentStepIndex ) => {\n\t\t\t\t\tconst lastStepIndex = tourSteps.length - 1;\n\t\t\t\t\tconst { heading } = tourSteps[ currentStepIndex ].meta;\n\n\t\t\t\t\trecordTracksEvent( 'calypso_editor_wpcom_tour_slide_view', {\n\t\t\t\t\t\tslide_number: currentStepIndex + 1,\n\t\t\t\t\t\tis_last_slide: currentStepIndex === lastStepIndex,\n\t\t\t\t\t\tslide_heading: heading,\n\t\t\t\t\t\tis_gutenboarding: isGutenboarding,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t},\n\t\t\teffects: {\n\t\t\t\tspotlight: isWelcomeTourNext()\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tstyles: {\n\t\t\t\t\t\t\t\tminWidth: '50px',\n\t\t\t\t\t\t\t\tminHeight: '50px',\n\t\t\t\t\t\t\t\tborderRadius: '2px',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t }\n\t\t\t\t\t: undefined,\n\t\t\t\tarrowIndicator: false,\n\t\t\t},\n\t\t\tpopperModifiers: [\n\t\t\t\tuseMemo(\n\t\t\t\t\t() => ( {\n\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\toffset: ( { placement, reference }: { placement: Placement; reference: Rect } ) => {\n\t\t\t\t\t\t\t\tif ( placement === 'bottom' ) {\n\t\t\t\t\t\t\t\t\tconst boundary = document.querySelector( '.edit-post-header' );\n\n\t\t\t\t\t\t\t\t\tif ( ! boundary ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst boundaryRect = boundary.getBoundingClientRect();\n\t\t\t\t\t\t\t\t\tconst boundaryBottomY = boundaryRect.height + boundaryRect.y;\n\t\t\t\t\t\t\t\t\tconst referenceBottomY = reference.height + reference.y;\n\n\t\t\t\t\t\t\t\t\treturn [ 0, boundaryBottomY - referenceBottomY + 16 ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn [ 0, 0 ];\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[]\n\t\t\t\t),\n\t\t\t],\n\t\t\tclassNames: 'wpcom-editor-welcome-tour',\n\t\t\tportalParentElement: document.getElementById( 'wpwrap' ),\n\t\t},\n\t};\n\n\treturn <WpcomTourKit config={ tourConfig } />;\n}\n\nexport default LaunchWpcomWelcomeTour;\n","import { localizeUrl } from '@automattic/i18n-utils';\nimport { isMobile } from '@automattic/viewport';\nimport { ExternalLink } from '@wordpress/components';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport type { WpcomStep } from '@automattic/tour-kit';\n\ninterface TourAsset {\n\tdesktop?: { src: string; type: string };\n\tmobile?: { src: string; type: string };\n}\n\nfunction getTourAssets( key: string ): TourAsset | undefined {\n\tconst CDN_PREFIX = 'https://s0.wp.com/i/editor-welcome-tour';\n\tconst tourAssets = {\n\t\taddBlock: {\n\t\t\tdesktop: { src: `${ CDN_PREFIX }/slide-add-block.gif`, type: 'image/gif' },\n\t\t\tmobile: { src: `${ CDN_PREFIX }/slide-add-block_mobile.gif`, type: 'image/gif' },\n\t\t},\n\t\tallBlocks: { desktop: { src: `${ CDN_PREFIX }/slide-all-blocks.gif`, type: 'image/gif' } },\n\t\tfinish: { desktop: { src: `${ CDN_PREFIX }/slide-finish.png`, type: 'image/gif' } },\n\t\tmakeBold: { desktop: { src: `${ CDN_PREFIX }/slide-make-bold.gif`, type: 'image/gif' } },\n\t\tmoreOptions: {\n\t\t\tdesktop: { src: `${ CDN_PREFIX }/slide-more-options.gif`, type: 'image/gif' },\n\t\t\tmobile: { src: `${ CDN_PREFIX }/slide-more-options_mobile.gif`, type: 'image/gif' },\n\t\t},\n\t\tmoveBlock: {\n\t\t\tdesktop: { src: `${ CDN_PREFIX }/slide-move-block.gif`, type: 'image/gif' },\n\t\t\tmobile: { src: `${ CDN_PREFIX }/slide-move-block_mobile.gif`, type: 'image/gif' },\n\t\t},\n\t\tfindYourWay: {\n\t\t\tdesktop: { src: `${ CDN_PREFIX }/slide-find-your-way.gif`, type: 'image/gif' },\n\t\t},\n\t\tundo: { desktop: { src: `${ CDN_PREFIX }/slide-undo.gif`, type: 'image/gif' } },\n\t\twelcome: {\n\t\t\tdesktop: { src: `${ CDN_PREFIX }/slide-welcome.png`, type: 'image/png' },\n\t\t\tmobile: { src: `${ CDN_PREFIX }/slide-welcome_mobile.jpg`, type: 'image/jpeg' },\n\t\t},\n\t\teditYourSite: {\n\t\t\tdesktop: {\n\t\t\t\tsrc: `https://s.w.org/images/block-editor/edit-your-site.gif?1`,\n\t\t\t\ttype: 'image/gif',\n\t\t\t},\n\t\t\tmobile: {\n\t\t\t\tsrc: `https://s.w.org/images/block-editor/edit-your-site.gif?1`,\n\t\t\t\ttype: 'image/gif',\n\t\t\t},\n\t\t},\n\t} as { [ key: string ]: TourAsset };\n\n\treturn tourAssets[ key ];\n}\n\nfunction getTourSteps(\n\tlocaleSlug: string,\n\treferencePositioning = false,\n\tisSiteEditor = false\n): WpcomStep[] {\n\treturn [\n\t\t{\n\t\t\tslug: 'welcome',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Welcome to WordPress!', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t'Take this short, interactive tour to learn the fundamentals of the WordPress editor.',\n\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t),\n\t\t\t\t\tmobile: null,\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'welcome' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tslug: 'everything-is-a-block',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Everything is a block', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t'In the WordPress Editor, paragraphs, images, and videos are all blocks.',\n\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t),\n\t\t\t\t\tmobile: null,\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'allBlocks' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tslug: 'add-block',\n\t\t\t...( referencePositioning && {\n\t\t\t\treferenceElements: {\n\t\t\t\t\tmobile:\n\t\t\t\t\t\t'.edit-post-header .edit-post-header__toolbar .components-button.edit-post-header-toolbar__inserter-toggle',\n\t\t\t\t\tdesktop:\n\t\t\t\t\t\t'.edit-post-header .edit-post-header__toolbar .components-button.edit-post-header-toolbar__inserter-toggle',\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Adding a new block', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t'Click + to open the inserter. Then click the block you want to add.',\n\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t),\n\t\t\t\t\tmobile: __(\n\t\t\t\t\t\t'Tap + to open the inserter. Then tap the block you want to add.',\n\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'addBlock' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tslug: 'edit-block',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Click a block to change it', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t'Use the toolbar to change the appearance of a selected block. Try making it bold.',\n\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t),\n\t\t\t\t\tmobile: null,\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'makeBold' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tslug: 'settings',\n\t\t\t...( referencePositioning && {\n\t\t\t\treferenceElements: {\n\t\t\t\t\tmobile:\n\t\t\t\t\t\t'.edit-post-header .edit-post-header__settings .interface-pinned-items > button:nth-child(1)',\n\t\t\t\t\tdesktop:\n\t\t\t\t\t\t'.edit-post-header .edit-post-header__settings .interface-pinned-items > button:nth-child(1)',\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tmeta: {\n\t\t\t\theading: __( 'More Options', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __( 'Click the settings icon to see even more options.', 'full-site-editing' ),\n\t\t\t\t\tmobile: __( 'Tap the settings icon to see even more options.', 'full-site-editing' ),\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'moreOptions' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t...( ! isMobile()\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tslug: 'find-your-way',\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\theading: __( 'Find your way', 'full-site-editing' ),\n\t\t\t\t\t\t\tdescriptions: {\n\t\t\t\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t\t\t\t\"Use List View to see all the blocks you've added. Click and drag any block to move it around.\",\n\t\t\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tmobile: null,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\timgSrc: getTourAssets( 'findYourWay' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\t\tdesktop: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\n\t\t\t\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\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 ]\n\t\t\t: [] ),\n\t\t...( ! isMobile()\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tslug: 'undo',\n\t\t\t\t\t\t...( referencePositioning && {\n\t\t\t\t\t\t\treferenceElements: {\n\t\t\t\t\t\t\t\tdesktop:\n\t\t\t\t\t\t\t\t\t'.edit-post-header .edit-post-header__toolbar .components-button.editor-history__undo',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\theading: __( 'Undo any mistake', 'full-site-editing' ),\n\t\t\t\t\t\t\tdescriptions: {\n\t\t\t\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t\t\t\t\"Click the Undo button if you've made a mistake.\",\n\t\t\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tmobile: null,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\timgSrc: getTourAssets( 'undo' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\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 ]\n\t\t\t: [] ),\n\t\t{\n\t\t\tslug: 'drag-drop',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Drag & drop', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: __( 'To move blocks around, click and drag the handle.', 'full-site-editing' ),\n\t\t\t\t\tmobile: __( 'To move blocks around, tap the up and down arrows.', 'full-site-editing' ),\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'moveBlock' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tslug: 'payment-block',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'The Payments block', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'The Payments block allows you to accept payments for one-time, monthly recurring, or annual payments on your website',\n\t\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\thref={ localizeUrl(\n\t\t\t\t\t\t\t\t\t'https://wordpress.com/support/video-tutorials-add-payments-features-to-your-site-with-our-guides/#how-to-use-the-payments-block-video',\n\t\t\t\t\t\t\t\t\tlocaleSlug\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Learn more', 'full-site-editing' ) }\n\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t\tmobile: null,\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'welcome' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t...( isSiteEditor\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tslug: 'edit-your-site',\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\theading: __( 'Edit your site', 'full-site-editing' ),\n\t\t\t\t\t\t\tdescriptions: {\n\t\t\t\t\t\t\t\tdesktop: __(\n\t\t\t\t\t\t\t\t\t'Design everything on your site - from the header right down to the footer - using blocks.',\n\t\t\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tmobile: __(\n\t\t\t\t\t\t\t\t\t'Design everything on your site - from the header right down to the footer - using blocks.',\n\t\t\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\timgSrc: getTourAssets( 'editYourSite' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\t\t\t\tmobile: [ 'is-with-extra-padding', 'wpcom-editor-welcome-tour__step' ],\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 ]\n\t\t\t: [] ),\n\t\t{\n\t\t\tslug: 'congratulations',\n\t\t\tmeta: {\n\t\t\t\theading: __( 'Congratulations!', 'full-site-editing' ),\n\t\t\t\tdescriptions: {\n\t\t\t\t\tdesktop: createInterpolateElement(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\"You've learned the basics. Remember, your site is private until you <link_to_launch_site_docs>decide to launch</link_to_launch_site_docs>. View the <link_to_editor_docs>block editing docs</link_to_editor_docs> to learn more.\",\n\t\t\t\t\t\t\t'full-site-editing'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink_to_launch_site_docs: (\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\thref={ localizeUrl(\n\t\t\t\t\t\t\t\t\t\t'https://wordpress.com/support/settings/privacy-settings/#launch-your-site',\n\t\t\t\t\t\t\t\t\t\tlocaleSlug\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\tlink_to_editor_docs: (\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\thref={ localizeUrl(\n\t\t\t\t\t\t\t\t\t\t'https://wordpress.com/support/wordpress-editor/',\n\t\t\t\t\t\t\t\t\t\tlocaleSlug\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\tmobile: null,\n\t\t\t\t},\n\t\t\t\timgSrc: getTourAssets( 'finish' ),\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tclassNames: {\n\t\t\t\t\tdesktop: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t\tmobile: 'wpcom-editor-welcome-tour__step',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t];\n}\n\nexport default getTourSteps;\n","// We use this module state to track url paths submitted to recordTracksPageView\n// `lib/analytics/index.js` also reuses it for timing.record\nlet mostRecentUrlPath: string | null = null;\n\n// pathCounter is used to keep track of the order of calypso_page_view Tracks events.\nlet pathCounter = 0;\n\nif ( typeof window !== 'undefined' ) {\n\twindow.addEventListener( 'popstate', function () {\n\t\t// throw away our URL value if the user used the back/forward buttons\n\t\tmostRecentUrlPath = null;\n\t} );\n}\n\ninterface PageViewParams {\n\tlast_pageview_path_with_count: string;\n\tthis_pageview_path_with_count: string;\n}\n\nexport function getPageViewParams( urlPath: string ): PageViewParams {\n\tconst params = {\n\t\tlast_pageview_path_with_count: `${ mostRecentUrlPath }(${ pathCounter.toString() })`,\n\t\tthis_pageview_path_with_count: `${ urlPath }(${ pathCounter + 1 })`,\n\t};\n\t// Record this path.\n\tmostRecentUrlPath = urlPath;\n\tpathCounter++;\n\treturn params;\n}\n\n/**\n * Gets the url path which was set on the last call to getPageViewParams() and stored in module state\n * mostRecentUrlPath will be null if the page was refreshed or getPageViewParams() has not been called\n */\nexport function getMostRecentUrlPath(): string | null {\n\treturn mostRecentUrlPath;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { EventEmitter } from 'events';\nimport { loadScript } from '@automattic/load-script';\nimport cookie from 'cookie';\nimport { includes, omitBy, times } from 'lodash';\nimport { getPageViewParams } from './page-view-params';\nimport { getCurrentUser, setCurrentUser } from './utils/current-user';\nimport debug from './utils/debug';\nimport getDoNotTrack from './utils/do-not-track';\n\ndeclare global {\n\tinterface Window {\n\t\t_tkq: Array< Array< any > >;\n\t}\n}\ndeclare const window: undefined | ( Window & { BUILD_TIMESTAMP?: number } );\n\n/**\n * Tracks uses a bunch of special query params that should not be used as property name\n * See internal Nosara repo?\n */\nconst TRACKS_SPECIAL_PROPS_NAMES = [ 'geo', 'message', 'request', 'geocity', 'ip' ];\nconst EVENT_NAME_EXCEPTIONS = [\n\t'a8c_cookie_banner_ok',\n\t// WooCommerce Onboarding / Connection Flow.\n\t'wcadmin_storeprofiler_create_jetpack_account',\n\t'wcadmin_storeprofiler_connect_store',\n\t'wcadmin_storeprofiler_login_jetpack_account',\n\t'wcadmin_storeprofiler_payment_login',\n\t'wcadmin_storeprofiler_payment_create_account',\n\t// Checkout\n\t'calypso_checkout_switch_to_p_24',\n\t'calypso_checkout_composite_p24_submit_clicked',\n];\nlet _superProps: any; // Added to all Tracks events.\nlet _loadTracksResult = Promise.resolve(); // default value for non-BOM environments.\n\nif ( typeof document !== 'undefined' ) {\n\t_loadTracksResult = loadScript( '//stats.wp.com/w.js?63' );\n}\n\nfunction createRandomId( randomBytesLength = 9 ): string {\n\tif ( typeof window === 'undefined' ) {\n\t\treturn '';\n\t}\n\t// 9 * 4/3 = 12\n\t// this is to avoid getting padding of a random byte string when it is base64 encoded\n\tlet randomBytes: any;\n\n\tif ( window.crypto && window.crypto.getRandomValues ) {\n\t\trandomBytes = new Uint8Array( randomBytesLength );\n\t\twindow.crypto.getRandomValues( randomBytes );\n\t} else {\n\t\trandomBytes = times( randomBytesLength, () => Math.floor( Math.random() * 256 ) );\n\t}\n\n\treturn window.btoa( String.fromCharCode( ...randomBytes ) );\n}\n\nfunction getUrlParameter( name: string ): string {\n\tif ( typeof window === 'undefined' ) {\n\t\treturn '';\n\t}\n\tname = name.replace( /[[]/g, '\\\\[' ).replace( /[\\]]/g, '\\\\]' );\n\tconst regex = new RegExp( '[\\\\?&]' + name + '=([^&#]*)' );\n\tconst results = regex.exec( window.location.search );\n\treturn results === null ? '' : decodeURIComponent( results[ 1 ].replace( /\\+/g, ' ' ) );\n}\n\nfunction checkForBlockedTracks(): Promise< void > {\n\t// Proceed only after the tracks script load finished and failed.\n\t// Calling this function from `initialize` ensures current user is set.\n\t// This detects stats blocking, and identifies by `getCurrentUser()`, URL, or cookie.\n\treturn _loadTracksResult.catch( () => {\n\t\tlet _ut;\n\t\tlet _ui;\n\t\tconst currentUser = getCurrentUser();\n\t\tif ( currentUser && currentUser.ID ) {\n\t\t\t_ut = 'wpcom:user_id';\n\t\t\t_ui = currentUser.ID;\n\t\t} else {\n\t\t\t_ut = getUrlParameter( '_ut' ) || 'anon';\n\t\t\t_ui = getUrlParameter( '_ui' );\n\t\t\tif ( ! _ui ) {\n\t\t\t\tconst cookies = cookie.parse( document.cookie );\n\t\t\t\tif ( cookies.tk_ai ) {\n\t\t\t\t\t_ui = cookies.tk_ai;\n\t\t\t\t} else {\n\t\t\t\t\tconst randomIdLength = 18; // 18 * 4/3 = 24 (base64 encoded chars).\n\t\t\t\t\t_ui = createRandomId( randomIdLength );\n\t\t\t\t\tdocument.cookie = cookie.serialize( 'tk_ai', _ui );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdebug( 'Loading /nostats.js', { _ut, _ui } );\n\t\treturn loadScript(\n\t\t\t'/nostats.js?_ut=' + encodeURIComponent( _ut ) + '&_ui=' + encodeURIComponent( _ui )\n\t\t);\n\t} );\n}\n\n/**\n * Returns a promise that marks whether and when the external Tracks script loads.\n */\nexport function getTracksLoadPromise() {\n\treturn _loadTracksResult;\n}\n\nexport function pushEventToTracksQueue( args: Array< any > ) {\n\tif ( typeof window !== 'undefined' ) {\n\t\twindow._tkq = window._tkq || [];\n\t\twindow._tkq.push( args );\n\t}\n}\n\nexport const analyticsEvents: EventEmitter = new EventEmitter();\n\n/**\n * Returns the anoymous id stored in the `tk_ai` cookie\n *\n * @returns The Tracks anonymous user id\n */\nexport function getTracksAnonymousUserId(): string {\n\tconst cookies = cookie.parse( document.cookie );\n\n\treturn cookies.tk_ai;\n}\n\nexport function initializeAnalytics(\n\tcurrentUser: any | undefined,\n\tsuperProps: any\n): Promise< void > {\n\t// Update super props.\n\tif ( 'function' === typeof superProps ) {\n\t\tdebug( 'superProps', superProps );\n\t\t_superProps = superProps;\n\t}\n\n\t// Identify current user.\n\tif ( 'object' === typeof currentUser ) {\n\t\tdebug( 'identifyUser', currentUser );\n\t\tidentifyUser( currentUser );\n\t}\n\n\t// Tracks blocked?\n\tdebug( 'checkForBlockedTracks' );\n\treturn checkForBlockedTracks();\n}\n\nexport function identifyUser( userData: any ): any {\n\t// Ensure object.\n\tif ( 'object' !== typeof userData ) {\n\t\tdebug( 'Invalid userData.', userData );\n\t\treturn; // Not possible.\n\t}\n\n\t// Set current user.\n\tconst currentUser = setCurrentUser( userData );\n\tif ( ! currentUser ) {\n\t\tdebug( 'Insufficient userData.', userData );\n\t\treturn; // Not possible.\n\t}\n\n\t// Tracks user identification.\n\tdebug( 'Tracks identifyUser.', currentUser );\n\tpushEventToTracksQueue( [ 'identifyUser', currentUser.ID, currentUser.username ] );\n}\n\nexport function recordTracksEvent( eventName: string, eventProperties?: any ) {\n\teventProperties = eventProperties || {};\n\n\tif ( process.env.NODE_ENV !== 'production' && typeof console !== 'undefined' ) {\n\t\tif (\n\t\t\t! /^calypso(?:_[a-z0-9]+){2,}$/.test( eventName ) &&\n\t\t\t! includes( EVENT_NAME_EXCEPTIONS, eventName )\n\t\t) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\n\t\t\t\t'Tracks: Event `%s` will be ignored because it does not match /^calypso(?:_[a-z0-9]+){2,}$/ and is ' +\n\t\t\t\t\t'not a listed exception. Please use a compliant event name.',\n\t\t\t\teventName\n\t\t\t);\n\t\t}\n\n\t\tfor ( const key in eventProperties ) {\n\t\t\tif ( eventProperties[ key ] !== null && typeof eventProperties[ key ] === 'object' ) {\n\t\t\t\tconst errorMessage =\n\t\t\t\t\t`Tracks: Unable to record event \"${ eventName }\" because nested ` +\n\t\t\t\t\t`properties are not supported by Tracks. Check '${ key }' on`;\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( errorMessage, eventProperties );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! /^[a-z_][a-z0-9_]*$/.test( key ) ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error(\n\t\t\t\t\t'Tracks: Event `%s` will be rejected because property name `%s` does not match /^[a-z_][a-z0-9_]*$/. ' +\n\t\t\t\t\t\t'Please use a compliant property name.',\n\t\t\t\t\teventName,\n\t\t\t\t\tkey\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( TRACKS_SPECIAL_PROPS_NAMES.indexOf( key ) !== -1 ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error(\n\t\t\t\t\t\"Tracks: Event property `%s` will be overwritten because it uses one of Tracks' internal prop name: %s. \" +\n\t\t\t\t\t\t'Please use another property name.',\n\t\t\t\t\tkey,\n\t\t\t\t\tTRACKS_SPECIAL_PROPS_NAMES.join( ', ' )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tdebug( 'Record event \"%s\" called with props %o', eventName, eventProperties );\n\n\tif ( ! eventName.startsWith( 'calypso_' ) && ! includes( EVENT_NAME_EXCEPTIONS, eventName ) ) {\n\t\tdebug( '- Event name must be prefixed by \"calypso_\" or added to `EVENT_NAME_EXCEPTIONS`' );\n\t\treturn;\n\t}\n\n\tif ( _superProps ) {\n\t\tconst superProperties = _superProps( eventProperties );\n\t\teventProperties = { ...eventProperties, ...superProperties }; // assign to a new object so we don't modify the argument\n\t}\n\n\t// Remove properties that have an undefined value\n\t// This allows a caller to easily remove properties from the recorded set by setting them to undefined\n\teventProperties = omitBy( eventProperties, ( prop ) => typeof prop === 'undefined' );\n\n\tdebug( 'Recording event \"%s\" with actual props %o', eventName, eventProperties );\n\n\tpushEventToTracksQueue( [ 'recordEvent', eventName, eventProperties ] );\n\tanalyticsEvents.emit( 'record-event', eventName, eventProperties );\n}\n\nexport function recordTracksPageView( urlPath: string, params: any ) {\n\tdebug( 'Recording pageview in tracks.', urlPath, params );\n\n\tlet eventProperties = {\n\t\tdo_not_track: getDoNotTrack() ? 1 : 0,\n\t\tpath: urlPath,\n\t};\n\n\t// Add calypso build timestamp if set\n\tconst build_timestamp = typeof window !== 'undefined' && window.BUILD_TIMESTAMP;\n\tif ( build_timestamp ) {\n\t\teventProperties = Object.assign( eventProperties, { build_timestamp } );\n\t}\n\n\t// add optional path params\n\tif ( params ) {\n\t\teventProperties = Object.assign( eventProperties, params );\n\t}\n\n\t// Record all `utm` marketing parameters as event properties on the page view event\n\t// so we can analyze their performance with our analytics tools\n\tif ( typeof window !== 'undefined' && window.location ) {\n\t\tconst urlParams = new URL( window.location.href ).searchParams;\n\t\tconst utmParamEntries =\n\t\t\turlParams &&\n\t\t\tArray.from( urlParams.entries() ).filter( ( [ key ] ) => key.startsWith( 'utm_' ) );\n\t\tconst utmParams = utmParamEntries ? Object.fromEntries( utmParamEntries ) : {};\n\n\t\teventProperties = Object.assign( eventProperties, utmParams );\n\t}\n\n\trecordTracksEvent( 'calypso_page_view', eventProperties );\n}\n\nexport function recordTracksPageViewWithPageParams( urlPath: string, params?: any ) {\n\tconst pageViewParams = getPageViewParams( urlPath );\n\trecordTracksPageView( urlPath, Object.assign( params || {}, pageViewParams ) );\n}\n","import debugFactory from 'debug';\n\n/**\n * Module variables\n */\nexport default debugFactory( 'calypso:analytics' );\n","import { __, sprintf } from '@wordpress/i18n';\nimport classnames from 'classnames';\nimport { times } from 'lodash';\nimport './style.scss';\n\ninterface Props {\n\tonChange: ( page: number ) => void;\n\tactivePageIndex: number;\n\tnumberOfPages: number;\n\tclassNames?: string | string[];\n}\n\nconst PaginationControl: React.FunctionComponent< Props > = ( {\n\tactivePageIndex,\n\tnumberOfPages,\n\tonChange,\n\tclassNames,\n\tchildren,\n} ) => {\n\tconst classes = classnames( 'pagination-control', classNames );\n\n\treturn (\n\t\t<ul className={ classes } aria-label={ __( 'Pagination control' ) }>\n\t\t\t{ times( numberOfPages, ( index ) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={ `${ numberOfPages }-${ index }` }\n\t\t\t\t\taria-current={ index === activePageIndex ? 'page' : undefined }\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={ classnames( 'pagination-control__page', {\n\t\t\t\t\t\t\t'is-current': index === activePageIndex,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\tdisabled={ index === activePageIndex }\n\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t/* translators: 1: current page number 2: total number of pages */\n\t\t\t\t\t\t\t__( 'Page %1$d of %2$d' ),\n\t\t\t\t\t\t\tindex + 1,\n\t\t\t\t\t\t\tnumberOfPages\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonClick={ () => onChange( index ) }\n\t\t\t\t\t/>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t\t{ children && <li className=\"pagination-control__last-item\">{ children }</li> }\n\t\t</ul>\n\t);\n};\n\nexport default PaginationControl;\n","import I18N from './i18n';\n\nexport default new I18N();\n","import { EventEmitter } from 'events';\nimport interpolateComponents from '@automattic/interpolate-components';\nimport sprintf from '@tannin/sprintf';\nimport debugFactory from 'debug';\nimport sha1 from 'hash.js/lib/hash/sha/1';\nimport LRU from 'lru';\nimport Tannin from 'tannin';\nimport numberFormat from './number-format';\n\n/**\n * Module variables\n */\nconst debug = debugFactory( 'i18n-calypso' );\n\n/**\n * Constants\n */\nconst decimal_point_translation_key = 'number_format_decimals';\nconst thousands_sep_translation_key = 'number_format_thousands_sep';\nconst domain_key = 'messages';\n\nconst translationLookup = [\n\t// By default don't modify the options when looking up translations.\n\tfunction ( options ) {\n\t\treturn options;\n\t},\n];\n\nconst hashCache = {};\n\n// raise a console warning\nfunction warn() {\n\tif ( ! I18N.throwErrors ) {\n\t\treturn;\n\t}\n\tif ( 'undefined' !== typeof window && window.console && window.console.warn ) {\n\t\twindow.console.warn.apply( window.console, arguments );\n\t}\n}\n\n// turns Function.arguments into an array\nfunction simpleArguments( args ) {\n\treturn Array.prototype.slice.call( args );\n}\n\n/**\n * Coerce the possible arguments and normalize to a single object.\n *\n * @param {any} args - arguments passed in from `translate()`\n * @returns {object} - a single object describing translation needs\n */\nfunction normalizeTranslateArguments( args ) {\n\tconst original = args[ 0 ];\n\n\t// warn about older deprecated syntax\n\tif (\n\t\ttypeof original !== 'string' ||\n\t\targs.length > 3 ||\n\t\t( args.length > 2 && typeof args[ 1 ] === 'object' && typeof args[ 2 ] === 'object' )\n\t) {\n\t\twarn(\n\t\t\t'Deprecated Invocation: `translate()` accepts ( string, [string], [object] ). These arguments passed:',\n\t\t\tsimpleArguments( args ),\n\t\t\t'. See https://github.com/Automattic/i18n-calypso#translate-method'\n\t\t);\n\t}\n\tif ( args.length === 2 && typeof original === 'string' && typeof args[ 1 ] === 'string' ) {\n\t\twarn(\n\t\t\t'Invalid Invocation: `translate()` requires an options object for plural translations, but passed:',\n\t\t\tsimpleArguments( args )\n\t\t);\n\t}\n\n\t// options could be in position 0, 1, or 2\n\t// sending options as the first object is deprecated and will raise a warning\n\tlet options = {};\n\tfor ( let i = 0; i < args.length; i++ ) {\n\t\tif ( typeof args[ i ] === 'object' ) {\n\t\t\toptions = args[ i ];\n\t\t}\n\t}\n\n\t// `original` can be passed as first parameter or as part of the options object\n\t// though passing original as part of the options is a deprecated approach and will be removed\n\tif ( typeof original === 'string' ) {\n\t\toptions.original = original;\n\t} else if ( typeof options.original === 'object' ) {\n\t\toptions.plural = options.original.plural;\n\t\toptions.count = options.original.count;\n\t\toptions.original = options.original.single;\n\t}\n\tif ( typeof args[ 1 ] === 'string' ) {\n\t\toptions.plural = args[ 1 ];\n\t}\n\n\tif ( typeof options.original === 'undefined' ) {\n\t\tthrow new Error( 'Translate called without a `string` value as first argument.' );\n\t}\n\n\treturn options;\n}\n\n/**\n * Takes translate options object and coerces to a Tannin request to retrieve translation.\n *\n * @param {object} tannin - tannin data object\n * @param {object} options - object describing translation\n * @returns {string} - the returned translation from Tannin\n */\nfunction getTranslationFromTannin( tannin, options ) {\n\treturn tannin.dcnpgettext(\n\t\tdomain_key,\n\t\toptions.context,\n\t\toptions.original,\n\t\toptions.plural,\n\t\toptions.count\n\t);\n}\n\nfunction getTranslation( i18n, options ) {\n\tfor ( let i = translationLookup.length - 1; i >= 0; i-- ) {\n\t\tconst lookup = translationLookup[ i ]( Object.assign( {}, options ) );\n\t\tconst key = lookup.context ? lookup.context + '\\u0004' + lookup.original : lookup.original;\n\n\t\t// Only get the translation from tannin if it exists.\n\t\tif ( i18n.state.locale[ key ] ) {\n\t\t\treturn getTranslationFromTannin( i18n.state.tannin, lookup );\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction I18N() {\n\tif ( ! ( this instanceof I18N ) ) {\n\t\treturn new I18N();\n\t}\n\tthis.defaultLocaleSlug = 'en';\n\t// Tannin always needs a plural form definition, or it fails when dealing with plurals.\n\tthis.defaultPluralForms = ( n ) => ( n === 1 ? 0 : 1 );\n\tthis.state = {\n\t\tnumberFormatSettings: {},\n\t\ttannin: undefined,\n\t\tlocale: undefined,\n\t\tlocaleSlug: undefined,\n\t\tlocaleVariant: undefined,\n\t\ttextDirection: undefined,\n\t\ttranslations: LRU( { max: 100 } ),\n\t};\n\tthis.componentUpdateHooks = [];\n\tthis.translateHooks = [];\n\tthis.stateObserver = new EventEmitter();\n\t// Because the higher-order component can wrap a ton of React components,\n\t// we need to bump the number of listeners to infinity and beyond\n\t// FIXME: still valid?\n\tthis.stateObserver.setMaxListeners( 0 );\n\t// default configuration\n\tthis.configure();\n}\n\nI18N.throwErrors = false;\n\nI18N.prototype.on = function ( ...args ) {\n\tthis.stateObserver.on( ...args );\n};\n\nI18N.prototype.off = function ( ...args ) {\n\tthis.stateObserver.off( ...args );\n};\n\nI18N.prototype.emit = function ( ...args ) {\n\tthis.stateObserver.emit( ...args );\n};\n\n/**\n * Formats numbers using locale settings and/or passed options.\n *\n * @param {string|number} number to format (required)\n * @param {number|object} options Number of decimal places or options object (optional)\n * @returns {string} Formatted number as string\n */\nI18N.prototype.numberFormat = function ( number, options = {} ) {\n\tconst decimals = typeof options === 'number' ? options : options.decimals || 0;\n\tconst decPoint = options.decPoint || this.state.numberFormatSettings.decimal_point || '.';\n\tconst thousandsSep = options.thousandsSep || this.state.numberFormatSettings.thousands_sep || ',';\n\n\treturn numberFormat( number, decimals, decPoint, thousandsSep );\n};\n\nI18N.prototype.configure = function ( options ) {\n\tObject.assign( this, options || {} );\n\tthis.setLocale();\n};\n\nI18N.prototype.setLocale = function ( localeData ) {\n\tif ( localeData && localeData[ '' ] && localeData[ '' ][ 'key-hash' ] ) {\n\t\tconst keyHash = localeData[ '' ][ 'key-hash' ];\n\n\t\tconst transform = function ( string, hashLength ) {\n\t\t\tconst lookupPrefix = hashLength === false ? '' : String( hashLength );\n\t\t\tif ( typeof hashCache[ lookupPrefix + string ] !== 'undefined' ) {\n\t\t\t\treturn hashCache[ lookupPrefix + string ];\n\t\t\t}\n\t\t\tconst hash = sha1().update( string ).digest( 'hex' );\n\n\t\t\tif ( hashLength ) {\n\t\t\t\treturn ( hashCache[ lookupPrefix + string ] = hash.substr( 0, hashLength ) );\n\t\t\t}\n\n\t\t\treturn ( hashCache[ lookupPrefix + string ] = hash );\n\t\t};\n\n\t\tconst generateLookup = function ( hashLength ) {\n\t\t\treturn function ( options ) {\n\t\t\t\tif ( options.context ) {\n\t\t\t\t\toptions.original = transform(\n\t\t\t\t\t\toptions.context + String.fromCharCode( 4 ) + options.original,\n\t\t\t\t\t\thashLength\n\t\t\t\t\t);\n\t\t\t\t\tdelete options.context;\n\t\t\t\t} else {\n\t\t\t\t\toptions.original = transform( options.original, hashLength );\n\t\t\t\t}\n\n\t\t\t\treturn options;\n\t\t\t};\n\t\t};\n\n\t\tif ( keyHash.substr( 0, 4 ) === 'sha1' ) {\n\t\t\tif ( keyHash.length === 4 ) {\n\t\t\t\ttranslationLookup.push( generateLookup( false ) );\n\t\t\t} else {\n\t\t\t\tconst variableHashLengthPos = keyHash.substr( 5 ).indexOf( '-' );\n\t\t\t\tif ( variableHashLengthPos < 0 ) {\n\t\t\t\t\tconst hashLength = Number( keyHash.substr( 5 ) );\n\t\t\t\t\ttranslationLookup.push( generateLookup( hashLength ) );\n\t\t\t\t} else {\n\t\t\t\t\tconst minHashLength = Number( keyHash.substr( 5, variableHashLengthPos ) );\n\t\t\t\t\tconst maxHashLength = Number( keyHash.substr( 6 + variableHashLengthPos ) );\n\n\t\t\t\t\tfor ( let hashLength = minHashLength; hashLength <= maxHashLength; hashLength++ ) {\n\t\t\t\t\t\ttranslationLookup.push( generateLookup( hashLength ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// if localeData is not given, assumes default locale and reset\n\tif ( ! localeData || ! localeData[ '' ].localeSlug ) {\n\t\tthis.state.locale = {\n\t\t\t'': { localeSlug: this.defaultLocaleSlug, plural_forms: this.defaultPluralForms },\n\t\t};\n\t} else if ( localeData[ '' ].localeSlug === this.state.localeSlug ) {\n\t\t// Exit if same data as current (comparing references only)\n\t\tif ( localeData === this.state.locale ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// merge new data into existing one\n\t\tObject.assign( this.state.locale, localeData );\n\t} else {\n\t\tthis.state.locale = Object.assign( {}, localeData );\n\t}\n\n\tthis.state.localeSlug = this.state.locale[ '' ].localeSlug;\n\tthis.state.localeVariant = this.state.locale[ '' ].localeVariant;\n\n\t// extract the `textDirection` info (LTR or RTL) from either:\n\t// - the translation for the special string \"ltr\" (standard in Core, not present in Calypso)\n\t// - or the `momentjs_locale.textDirection` property present in Calypso translation files\n\tthis.state.textDirection =\n\t\tthis.state.locale[ 'text direction\\u0004ltr' ]?.[ 0 ] ||\n\t\tthis.state.locale[ '' ]?.momentjs_locale?.textDirection;\n\n\tthis.state.tannin = new Tannin( { [ domain_key ]: this.state.locale } );\n\n\t// Updates numberFormat preferences with settings from translations\n\tthis.state.numberFormatSettings.decimal_point = getTranslationFromTannin(\n\t\tthis.state.tannin,\n\t\tnormalizeTranslateArguments( [ decimal_point_translation_key ] )\n\t);\n\tthis.state.numberFormatSettings.thousands_sep = getTranslationFromTannin(\n\t\tthis.state.tannin,\n\t\tnormalizeTranslateArguments( [ thousands_sep_translation_key ] )\n\t);\n\n\t// If translation isn't set, define defaults.\n\tif ( this.state.numberFormatSettings.decimal_point === decimal_point_translation_key ) {\n\t\tthis.state.numberFormatSettings.decimal_point = '.';\n\t}\n\n\tif ( this.state.numberFormatSettings.thousands_sep === thousands_sep_translation_key ) {\n\t\tthis.state.numberFormatSettings.thousands_sep = ',';\n\t}\n\n\tthis.stateObserver.emit( 'change' );\n};\n\nI18N.prototype.getLocale = function () {\n\treturn this.state.locale;\n};\n\n/**\n * Get the current locale slug.\n *\n * @returns {string} The string representing the currently loaded locale\n */\nI18N.prototype.getLocaleSlug = function () {\n\treturn this.state.localeSlug;\n};\n\n/**\n * Get the current locale variant. That's set for some special locales that don't have a\n * standard ISO code, like `de_formal` or `sr_latin`.\n *\n * @returns {string|undefined} The string representing the currently loaded locale's variant\n */\nI18N.prototype.getLocaleVariant = function () {\n\treturn this.state.localeVariant;\n};\n\n/**\n * Get the current text direction, left-to-right (LTR) or right-to-left (RTL).\n *\n * @returns {boolean} `true` in case the current locale has RTL text direction\n */\nI18N.prototype.isRtl = function () {\n\treturn this.state.textDirection === 'rtl';\n};\n\n/**\n * Adds new translations to the locale data, overwriting any existing translations with a matching key.\n *\n * @param {object} localeData Locale data\n */\nI18N.prototype.addTranslations = function ( localeData ) {\n\tfor ( const prop in localeData ) {\n\t\tif ( prop !== '' ) {\n\t\t\tthis.state.tannin.data.messages[ prop ] = localeData[ prop ];\n\t\t}\n\t}\n\n\tthis.stateObserver.emit( 'change' );\n};\n\n/**\n * Checks whether the given original has a translation.\n *\n * @returns {boolean} whether a translation exists\n */\nI18N.prototype.hasTranslation = function () {\n\treturn !! getTranslation( this, normalizeTranslateArguments( arguments ) );\n};\n\n/**\n * Exposes single translation method.\n * See sibling README\n *\n * @returns {string|object} translated text or an object containing React children that can be inserted into a parent component\n */\nI18N.prototype.translate = function () {\n\tconst options = normalizeTranslateArguments( arguments );\n\n\tlet translation = getTranslation( this, options );\n\tif ( ! translation ) {\n\t\t// This purposefully calls tannin for a case where there is no translation,\n\t\t// so that tannin gives us the expected object with English text.\n\t\ttranslation = getTranslationFromTannin( this.state.tannin, options );\n\t}\n\n\t// handle any string substitution\n\tif ( options.args ) {\n\t\tconst sprintfArgs = Array.isArray( options.args ) ? options.args.slice( 0 ) : [ options.args ];\n\t\tsprintfArgs.unshift( translation );\n\t\ttry {\n\t\t\ttranslation = sprintf( ...sprintfArgs );\n\t\t} catch ( error ) {\n\t\t\tif ( ! window || ! window.console ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst errorMethod = this.throwErrors ? 'error' : 'warn';\n\t\t\tif ( typeof error !== 'string' ) {\n\t\t\t\twindow.console[ errorMethod ]( error );\n\t\t\t} else {\n\t\t\t\twindow.console[ errorMethod ]( 'i18n sprintf error:', sprintfArgs );\n\t\t\t}\n\t\t}\n\t}\n\n\t// interpolate any components\n\tif ( options.components ) {\n\t\ttranslation = interpolateComponents( {\n\t\t\tmixedString: translation,\n\t\t\tcomponents: options.components,\n\t\t\tthrowErrors: this.throwErrors,\n\t\t} );\n\t}\n\n\t// run any necessary hooks\n\tthis.translateHooks.forEach( function ( hook ) {\n\t\ttranslation = hook( translation, options );\n\t} );\n\n\treturn translation;\n};\n\n/**\n * Causes i18n to re-render all translations.\n *\n * This can be necessary if an extension makes changes that i18n is unaware of\n * and needs those changes manifested immediately (e.g. adding an important\n * translation hook, or modifying the behaviour of an existing hook).\n *\n * If at all possible, react components should try to use the more local\n * updateTranslation() function inherited from the mixin.\n */\nI18N.prototype.reRenderTranslations = function () {\n\tdebug( 'Re-rendering all translations due to external request' );\n\tthis.stateObserver.emit( 'change' );\n};\n\nI18N.prototype.registerComponentUpdateHook = function ( callback ) {\n\tthis.componentUpdateHooks.push( callback );\n};\n\nI18N.prototype.registerTranslateHook = function ( callback ) {\n\tthis.translateHooks.push( callback );\n};\n\nexport default I18N;\n","import I18NContext from './context';\nimport i18n from './default-i18n';\nimport I18N from './i18n';\nimport localize from './localize';\nimport { useRtl, withRtl } from './rtl';\nimport useTranslate from './use-translate';\n\nexport { I18N, I18NContext, localize, useRtl, withRtl, useTranslate };\nexport default i18n;\n\n// Export the default instance's properties and bound methods for convenience\n// These should be deprecated eventually, exposing only the default `i18n` instance\nexport const numberFormat = i18n.numberFormat.bind( i18n );\nexport const translate = i18n.translate.bind( i18n );\nexport const configure = i18n.configure.bind( i18n );\nexport const setLocale = i18n.setLocale.bind( i18n );\nexport const getLocale = i18n.getLocale.bind( i18n );\nexport const getLocaleSlug = i18n.getLocaleSlug.bind( i18n );\nexport const getLocaleVariant = i18n.getLocaleVariant.bind( i18n );\nexport const isRtl = i18n.isRtl.bind( i18n );\nexport const addTranslations = i18n.addTranslations.bind( i18n );\nexport const reRenderTranslations = i18n.reRenderTranslations.bind( i18n );\nexport const registerComponentUpdateHook = i18n.registerComponentUpdateHook.bind( i18n );\nexport const registerTranslateHook = i18n.registerTranslateHook.bind( i18n );\nexport const state = i18n.state;\nexport const stateObserver = i18n.stateObserver;\nexport const on = i18n.on.bind( i18n );\nexport const off = i18n.off.bind( i18n );\nexport const emit = i18n.emit.bind( i18n );\n","/*\n * Exposes number format capability\n *\n * @copyright Copyright (c) 2013 Kevin van Zonneveld (http://kvz.io) and Contributors (http://phpjs.org/authors).\n * @license See CREDITS.md\n * @see https://github.com/kvz/phpjs/blob/ffe1356af23a6f2512c84c954dd4e828e92579fa/functions/strings/number_format.js\n */\nfunction toFixedFix( n, prec ) {\n\tconst k = Math.pow( 10, prec );\n\treturn '' + ( Math.round( n * k ) / k ).toFixed( prec );\n}\n\nexport default function number_format( number, decimals, dec_point, thousands_sep ) {\n\tnumber = ( number + '' ).replace( /[^0-9+\\-Ee.]/g, '' );\n\tconst n = ! isFinite( +number ) ? 0 : +number;\n\tconst prec = ! isFinite( +decimals ) ? 0 : Math.abs( decimals );\n\tconst sep = typeof thousands_sep === 'undefined' ? ',' : thousands_sep;\n\tconst dec = typeof dec_point === 'undefined' ? '.' : dec_point;\n\tlet s = '';\n\t// Fix for IE parseFloat(0.55).toFixed(0) = 0;\n\ts = ( prec ? toFixedFix( n, prec ) : '' + Math.round( n ) ).split( '.' );\n\tif ( s[ 0 ].length > 3 ) {\n\t\ts[ 0 ] = s[ 0 ].replace( /\\B(?=(?:\\d{3})+(?!\\d))/g, sep );\n\t}\n\tif ( ( s[ 1 ] || '' ).length < prec ) {\n\t\ts[ 1 ] = s[ 1 ] || '';\n\t\ts[ 1 ] += new Array( prec - s[ 1 ].length + 1 ).join( '0' );\n\t}\n\treturn s.join( dec );\n}\n","import { createHigherOrderComponent } from '@wordpress/compose';\nimport * as i18n from '@wordpress/i18n';\nimport { createContext, useContext, useEffect, useState } from 'react';\nimport * as React from 'react';\nimport { englishLocales } from './locales';\nimport type { Locale } from './locales';\n\nexport const localeContext = createContext< string | null >( null );\n\ninterface Props {\n\tlocaleSlug: string;\n}\n\nexport const LocaleProvider: React.FC< Props > = ( { children, localeSlug } ) => (\n\t<localeContext.Provider value={ localeSlug }>{ children }</localeContext.Provider>\n);\n\n/**\n * Returns locale slug\n *\n * @param {string} locale locale to be converted e.g. \"en_US\".\n * @returns locale string e.g. \"en\"\n */\nfunction mapWpI18nLangToLocaleSlug( locale: Locale = '' ): Locale {\n\tif ( ! locale ) {\n\t\treturn '';\n\t}\n\n\tconst TARGET_LOCALES = [ 'pt_br', 'pt-br', 'zh_tw', 'zh-tw', 'zh_cn', 'zh-cn', 'zh_sg', 'zh-sg' ];\n\tconst lowerCaseLocale = locale.toLowerCase();\n\tconst formattedLocale = TARGET_LOCALES.includes( lowerCaseLocale )\n\t\t? lowerCaseLocale.replace( '_', '-' )\n\t\t: lowerCaseLocale.replace( /([-_].*)$/i, '' );\n\n\treturn formattedLocale || 'en';\n}\n\n/**\n * Get the current locale slug from the @wordpress/i18n locale data\n */\nfunction getWpI18nLocaleSlug(): string | undefined {\n\tconst language = i18n.getLocaleData ? i18n.getLocaleData()?.[ '' ]?.language : '';\n\n\treturn mapWpI18nLangToLocaleSlug( language );\n}\n\n/**\n * React hook providing the current locale slug. If `<LocaleProvider>` hasn't\n * been defined in the component tree then it will fall back to using the\n * data from `@wordpress/i18n` to determine the current locale slug.\n *\n * @example\n *\n * import { useLocale } from '@automattic/i18n-utils';\n * function MyComponent() {\n * const locale = useLocale();\n * return <div>The current locale is: { locale }</div>;\n * }\n */\nexport function useLocale(): string {\n\tconst fromProvider = useContext( localeContext );\n\tconst providerHasLocale = !! fromProvider;\n\n\tconst [ fromWpI18n, setWpLocale ] = useState( getWpI18nLocaleSlug() );\n\n\tuseEffect( () => {\n\t\t// If the <LocaleProvider> has been used further up the component tree\n\t\t// then we don't want to subscribe to any defaultI18n changes.\n\t\tif ( providerHasLocale ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetWpLocale( getWpI18nLocaleSlug() );\n\n\t\treturn i18n.subscribe( () => {\n\t\t\tsetWpLocale( getWpI18nLocaleSlug() );\n\t\t} );\n\t}, [ providerHasLocale ] );\n\n\treturn fromProvider || fromWpI18n || window?._currentUserLocale || 'en';\n}\n\n/**\n * HoC providing the current locale slug supplied to `<LocaleProvider>`.\n *\n * @param InnerComponent Component that will receive `locale` as a prop\n * @returns Component enhanced with locale\n * @example\n *\n * import { withLocale } from '@automattic/i18n-utils';\n * function MyComponent( { locale } ) {\n * return <div>The current locale is: { locale }</div>;\n * }\n * export default withLocale( MyComponent );\n */\nexport const withLocale = createHigherOrderComponent(\n\t< OuterProps, >( InnerComponent: React.ComponentType< OuterProps & { locale: string } > ) => {\n\t\treturn ( props: OuterProps ) => {\n\t\t\tconst locale = useLocale();\n\t\t\tconst innerProps = { ...props, locale };\n\t\t\treturn <InnerComponent { ...innerProps } />;\n\t\t};\n\t},\n\t'withLocale'\n);\n\n/**\n * React hook providing whether the current locale slug belongs to English or not\n *\n * @example\n *\n * import { useIsEnglishLocale } from '@automattic/i18n-utils';\n * function MyComponent() {\n * const isEnglishLocale = useIsEnglishLocale();\n * return <div>The current locale is English: { isEnglishLocale }</div>;\n * }\n */\nexport function useIsEnglishLocale(): boolean {\n\tconst locale = useLocale();\n\treturn englishLocales.includes( locale );\n}\n","/**\n * The locale sets here map roughly to those found in locales.php\n *\n * todo: move these into @automattic/languages as another downloaded resource\n * todo: cleanup _shared.json - replace references to the below config options with imports from here\n */\nexport type Locale = string;\nexport const i18nDefaultLocaleSlug: Locale = 'en';\nexport const localesWithBlog: Locale[] = [ 'en', 'ja', 'es', 'pt', 'fr', 'pt-br' ];\nexport const localesWithPrivacyPolicy: Locale[] = [ 'en', 'fr', 'de', 'es' ];\nexport const localesWithCookiePolicy: Locale[] = [ 'en', 'fr', 'de', 'es' ];\n\ntype LocaleSubdomain = string;\n\nexport const localesToSubdomains: Record< string, LocaleSubdomain > = {\n\t'pt-br': 'br',\n\tbr: 'bre',\n\tzh: 'zh-cn',\n\t'zh-hk': 'zh-tw',\n\t'zh-sg': 'zh-cn',\n\tkr: 'ko',\n};\n\n// replaces config( 'english_locales' )\nexport const englishLocales: Locale[] = [ 'en', 'en-gb' ];\n\n// replaces config( 'livechat_support_locales' )\nexport const livechatSupportLocales: Locale[] = [ 'en' ];\n\n// replaces config( 'support_site_locales' )\nexport const supportSiteLocales: Locale[] = [\n\t'ar',\n\t'de',\n\t'en',\n\t'es',\n\t'fr',\n\t'he',\n\t'id',\n\t'it',\n\t'ja',\n\t'ko',\n\t'nl',\n\t'pt-br',\n\t'ru',\n\t'sv',\n\t'tr',\n\t'zh-cn',\n\t'zh-tw',\n];\n\n// replaces config( 'forum_locales')\nexport const forumLocales: Locale[] = [\n\t'ar',\n\t'de',\n\t'el',\n\t'en',\n\t'es',\n\t'fa',\n\t'fi',\n\t'fr',\n\t'id',\n\t'it',\n\t'ja',\n\t'nl',\n\t'pt',\n\t'pt-br',\n\t'ru',\n\t'sv',\n\t'th',\n\t'tl',\n\t'tr',\n];\n\n// replaces config( 'magnificent_non_en_locales')\nexport const magnificentNonEnLocales: Locale[] = [\n\t'es',\n\t'pt-br',\n\t'de',\n\t'fr',\n\t'he',\n\t'ja',\n\t'it',\n\t'nl',\n\t'ru',\n\t'tr',\n\t'id',\n\t'zh-cn',\n\t'zh-tw',\n\t'ko',\n\t'ar',\n\t'sv',\n];\n\n// replaces config( 'jetpack_com_locales')\nexport const jetpackComLocales: Locale[] = [\n\t'en',\n\t'ar',\n\t'de',\n\t'es',\n\t'fr',\n\t'he',\n\t'id',\n\t'it',\n\t'ja',\n\t'ko',\n\t'nl',\n\t'pt-br',\n\t'ro',\n\t'ru',\n\t'sv',\n\t'tr',\n\t'zh-cn',\n\t'zh-tw',\n];\n","import { createHigherOrderComponent } from '@wordpress/compose';\nimport { getLocaleSlug } from 'i18n-calypso';\nimport { useCallback, ComponentType } from 'react';\nimport { useLocale } from './locale-context';\nimport {\n\tlocalesWithBlog,\n\tlocalesWithPrivacyPolicy,\n\tlocalesWithCookiePolicy,\n\tlocalesToSubdomains,\n\tsupportSiteLocales,\n\tforumLocales,\n\tmagnificentNonEnLocales,\n\tjetpackComLocales,\n\tLocale,\n} from './locales';\n\nconst INVALID_URL = `http://__domain__.invalid`;\n\nfunction getDefaultLocale(): Locale {\n\treturn getLocaleSlug?.() ?? 'en';\n}\n\nconst setLocalizedUrlHost =\n\t( hostname: string, validLocales: Locale[] = [] ) =>\n\t( url: URL, locale: Locale ) => {\n\t\tif ( validLocales.includes( locale ) && locale !== 'en' ) {\n\t\t\t// Avoid changing the hostname when the locale is set via the path.\n\t\t\tif ( url.pathname.substr( 0, locale.length + 2 ) !== '/' + locale + '/' ) {\n\t\t\t\turl.host = `${ localesToSubdomains[ locale ] || locale }.${ hostname }`;\n\t\t\t}\n\t\t}\n\t\treturn url;\n\t};\n\nconst setLocalizedWpComPath =\n\t( prefix: string, validLocales: Locale[] = [], limitPathMatch: RegExp | null = null ) =>\n\t( url: URL, localeSlug: Locale ) => {\n\t\turl.host = 'wordpress.com';\n\t\tif (\n\t\t\ttypeof limitPathMatch === 'object' &&\n\t\t\tlimitPathMatch instanceof RegExp &&\n\t\t\t! limitPathMatch.test( url.pathname )\n\t\t) {\n\t\t\tvalidLocales = []; // only rewrite to English.\n\t\t}\n\t\turl.pathname = prefix + url.pathname;\n\n\t\tif ( validLocales.includes( localeSlug ) && localeSlug !== 'en' ) {\n\t\t\turl.pathname = localeSlug + url.pathname;\n\t\t}\n\t\treturn url;\n\t};\n\ntype PrefixOrSuffix = 'prefix' | 'suffix';\n\nconst prefixOrSuffixLocalizedUrlPath =\n\t(\n\t\tvalidLocales: Locale[] = [],\n\t\tlimitPathMatch: RegExp | null = null,\n\t\tprefixOrSuffix: PrefixOrSuffix\n\t) =>\n\t( url: URL, localeSlug: Locale ): URL => {\n\t\tif ( typeof limitPathMatch === 'object' && limitPathMatch instanceof RegExp ) {\n\t\t\tif ( ! limitPathMatch.test( url.pathname ) ) {\n\t\t\t\treturn url; // No rewriting if not matches the path.\n\t\t\t}\n\t\t}\n\n\t\tif ( ! validLocales.includes( localeSlug ) || localeSlug === 'en' ) {\n\t\t\treturn url;\n\t\t}\n\n\t\tif ( prefixOrSuffix === 'prefix' ) {\n\t\t\turl.pathname = localeSlug + url.pathname;\n\t\t} else if ( prefixOrSuffix === 'suffix' ) {\n\t\t\t// Make sure there's a slash between the path and the locale. Plus, if\n\t\t\t// the path has a trailing slash, add one after the suffix too.\n\t\t\tif ( url.pathname.endsWith( '/' ) ) {\n\t\t\t\turl.pathname += localeSlug + '/';\n\t\t\t} else {\n\t\t\t\turl.pathname += '/' + localeSlug;\n\t\t\t}\n\t\t}\n\t\treturn url;\n\t};\n\nconst prefixLocalizedUrlPath =\n\t( validLocales: Locale[] = [], limitPathMatch: RegExp | null = null ) =>\n\t( url: URL, localeSlug: Locale ): URL => {\n\t\treturn prefixOrSuffixLocalizedUrlPath(\n\t\t\tvalidLocales,\n\t\t\tlimitPathMatch,\n\t\t\t'prefix'\n\t\t)( url, localeSlug );\n\t};\n\nconst suffixLocalizedUrlPath =\n\t( validLocales: Locale[] = [], limitPathMatch: RegExp | null = null ) =>\n\t( url: URL, localeSlug: Locale ): URL => {\n\t\treturn prefixOrSuffixLocalizedUrlPath(\n\t\t\tvalidLocales,\n\t\t\tlimitPathMatch,\n\t\t\t'suffix'\n\t\t)( url, localeSlug );\n\t};\n\ntype LinkLocalizer = ( url: URL, localeSlug: string, isLoggedIn: boolean ) => URL;\n\ninterface UrlLocalizationMapping {\n\t[ key: string ]: LinkLocalizer;\n}\n\nconst urlLocalizationMapping: UrlLocalizationMapping = {\n\t'wordpress.com/support/': prefixLocalizedUrlPath( supportSiteLocales ),\n\t'wordpress.com/forums/': prefixLocalizedUrlPath( forumLocales ),\n\t'wordpress.com/blog/': prefixLocalizedUrlPath( localesWithBlog, /^\\/blog\\/?$/ ),\n\t'wordpress.com/tos/': prefixLocalizedUrlPath( magnificentNonEnLocales ),\n\t'wordpress.com/wp-admin/': setLocalizedUrlHost( 'wordpress.com', magnificentNonEnLocales ),\n\t'wordpress.com/wp-login.php': setLocalizedUrlHost( 'wordpress.com', magnificentNonEnLocales ),\n\t'jetpack.com': setLocalizedUrlHost( 'jetpack.com', jetpackComLocales ),\n\t'en.support.wordpress.com': setLocalizedWpComPath( '/support', supportSiteLocales ),\n\t'en.blog.wordpress.com': setLocalizedWpComPath( '/blog', localesWithBlog, /^\\/$/ ),\n\t'apps.wordpress.com': prefixLocalizedUrlPath( magnificentNonEnLocales ),\n\t'en.forums.wordpress.com': setLocalizedWpComPath( '/forums', forumLocales ),\n\t'automattic.com/privacy/': prefixLocalizedUrlPath( localesWithPrivacyPolicy ),\n\t'automattic.com/cookies/': prefixLocalizedUrlPath( localesWithCookiePolicy ),\n\t'wordpress.com/help/contact/': ( url: URL, localeSlug: Locale, isLoggedIn: boolean ) => {\n\t\tif ( isLoggedIn ) {\n\t\t\treturn url;\n\t\t}\n\t\turl.pathname = url.pathname.replace( /\\/help\\//, '/support/' );\n\t\treturn prefixLocalizedUrlPath( supportSiteLocales )( url, localeSlug );\n\t},\n\t'wordpress.com': ( url: URL, localeSlug: Locale ) => {\n\t\t// Don't rewrite checkout and me URLs.\n\t\tif ( /^\\/(checkout|me)(\\/|$)/.test( url.pathname ) ) {\n\t\t\treturn url;\n\t\t}\n\t\t// Don't rewrite Calypso URLs that have the URL at the end.\n\t\tif ( /\\/([a-z0-9-]+\\.)+[a-z]{2,}\\/?$/.test( url.pathname ) ) {\n\t\t\treturn url;\n\t\t}\n\t\treturn prefixLocalizedUrlPath( magnificentNonEnLocales )( url, localeSlug );\n\t},\n\t'wordpress.com/theme/': ( url: URL, localeSlug: Locale, isLoggedIn: boolean ) => {\n\t\treturn isLoggedIn ? url : prefixLocalizedUrlPath( magnificentNonEnLocales )( url, localeSlug );\n\t},\n\t'wordpress.com/themes/': ( url: URL, localeSlug: Locale, isLoggedIn: boolean ) => {\n\t\treturn isLoggedIn ? url : prefixLocalizedUrlPath( magnificentNonEnLocales )( url, localeSlug );\n\t},\n\t'wordpress.com/log-in/': ( url: URL, localeSlug: Locale, isLoggedIn: boolean ) => {\n\t\treturn isLoggedIn ? url : suffixLocalizedUrlPath( magnificentNonEnLocales )( url, localeSlug );\n\t},\n};\n\nexport function localizeUrl(\n\tfullUrl: string,\n\tlocale: Locale = getDefaultLocale(),\n\tisLoggedIn = true\n): string {\n\tlet url;\n\ttry {\n\t\turl = new URL( String( fullUrl ), INVALID_URL );\n\t} catch ( e ) {\n\t\treturn fullUrl;\n\t}\n\n\t// Ignore and passthrough /relative/urls that have no host specified\n\tif ( url.origin === INVALID_URL ) {\n\t\treturn fullUrl;\n\t}\n\n\t// Let's unify the URL.\n\turl.protocol = 'https:';\n\t// Let's use `host` for everything.\n\turl.hostname = '';\n\n\tif ( ! url.pathname.endsWith( '.php' ) ) {\n\t\t// Essentially a trailingslashit.\n\t\turl.pathname = ( url.pathname + '/' ).replace( /\\/+$/, '/' );\n\t}\n\n\tconst firstPathSegment = url.pathname.substr( 0, 1 + url.pathname.indexOf( '/', 1 ) );\n\n\tif ( 'en.wordpress.com' === url.host ) {\n\t\turl.host = 'wordpress.com';\n\t}\n\n\tif ( '/' + locale + '/' === firstPathSegment ) {\n\t\treturn fullUrl;\n\t}\n\n\t// Lookup is checked back to front.\n\tconst lookup = [ url.host, url.host + firstPathSegment, url.host + url.pathname ];\n\n\tfor ( let i = lookup.length - 1; i >= 0; i-- ) {\n\t\tif ( lookup[ i ] in urlLocalizationMapping ) {\n\t\t\treturn urlLocalizationMapping[ lookup[ i ] ]( url, locale, isLoggedIn ).href;\n\t\t}\n\t}\n\n\t// Nothing needed to be changed, just return it unmodified.\n\treturn fullUrl;\n}\n\nexport function useLocalizeUrl() {\n\tconst providerLocale = useLocale();\n\n\treturn useCallback(\n\t\t( fullUrl: string, locale?: Locale, isLoggedIn?: boolean ) => {\n\t\t\tif ( locale ) {\n\t\t\t\treturn localizeUrl( fullUrl, locale, isLoggedIn );\n\t\t\t}\n\t\t\treturn localizeUrl( fullUrl, providerLocale, isLoggedIn );\n\t\t},\n\t\t[ providerLocale ]\n\t);\n}\n\nexport const withLocalizeUrl = createHigherOrderComponent(\n\t< OuterProps, >(\n\t\tInnerComponent: ComponentType<\n\t\t\tOuterProps & { localizeUrl: ReturnType< typeof useLocalizeUrl > }\n\t\t>\n\t) => {\n\t\treturn ( props: OuterProps ) => {\n\t\t\tconst localizeUrl = useLocalizeUrl();\n\t\t\tconst innerProps = { ...props, localizeUrl };\n\t\t\treturn <InnerComponent { ...innerProps } />;\n\t\t};\n\t},\n\t'withLocalizeUrl'\n);\n","import { cloneElement, createElement, Fragment } from 'react';\nimport tokenize from './tokenize';\n\nfunction getCloseIndex( openIndex, tokens ) {\n\tconst openToken = tokens[ openIndex ];\n\tlet nestLevel = 0;\n\tfor ( let i = openIndex + 1; i < tokens.length; i++ ) {\n\t\tconst token = tokens[ i ];\n\t\tif ( token.value === openToken.value ) {\n\t\t\tif ( token.type === 'componentOpen' ) {\n\t\t\t\tnestLevel++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif ( token.type === 'componentClose' ) {\n\t\t\t\tif ( nestLevel === 0 ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tnestLevel--;\n\t\t\t}\n\t\t}\n\t}\n\t// if we get this far, there was no matching close token\n\tthrow new Error( 'Missing closing component token `' + openToken.value + '`' );\n}\n\nfunction buildChildren( tokens, components ) {\n\tlet children = [];\n\tlet openComponent;\n\tlet openIndex;\n\n\tfor ( let i = 0; i < tokens.length; i++ ) {\n\t\tconst token = tokens[ i ];\n\t\tif ( token.type === 'string' ) {\n\t\t\tchildren.push( token.value );\n\t\t\tcontinue;\n\t\t}\n\t\t// component node should at least be set\n\t\tif ( components[ token.value ] === undefined ) {\n\t\t\tthrow new Error( `Invalid interpolation, missing component node: \\`${ token.value }\\`` );\n\t\t}\n\t\t// should be either ReactElement or null (both type \"object\"), all other types deprecated\n\t\tif ( typeof components[ token.value ] !== 'object' ) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid interpolation, component node must be a ReactElement or null: \\`${ token.value }\\``\n\t\t\t);\n\t\t}\n\t\t// we should never see a componentClose token in this loop\n\t\tif ( token.type === 'componentClose' ) {\n\t\t\tthrow new Error( `Missing opening component token: \\`${ token.value }\\`` );\n\t\t}\n\t\tif ( token.type === 'componentOpen' ) {\n\t\t\topenComponent = components[ token.value ];\n\t\t\topenIndex = i;\n\t\t\tbreak;\n\t\t}\n\t\t// componentSelfClosing token\n\t\tchildren.push( components[ token.value ] );\n\t\tcontinue;\n\t}\n\n\tif ( openComponent ) {\n\t\tconst closeIndex = getCloseIndex( openIndex, tokens );\n\t\tconst grandChildTokens = tokens.slice( openIndex + 1, closeIndex );\n\t\tconst grandChildren = buildChildren( grandChildTokens, components );\n\t\tconst clonedOpenComponent = cloneElement( openComponent, {}, grandChildren );\n\t\tchildren.push( clonedOpenComponent );\n\n\t\tif ( closeIndex < tokens.length - 1 ) {\n\t\t\tconst siblingTokens = tokens.slice( closeIndex + 1 );\n\t\t\tconst siblings = buildChildren( siblingTokens, components );\n\t\t\tchildren = children.concat( siblings );\n\t\t}\n\t}\n\n\tchildren = children.filter( Boolean );\n\n\tif ( children.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tif ( children.length === 1 ) {\n\t\treturn children[ 0 ];\n\t}\n\n\treturn createElement( Fragment, null, ...children );\n}\n\nexport default function interpolate( options ) {\n\tconst { mixedString, components, throwErrors } = options;\n\n\tif ( ! components ) {\n\t\treturn mixedString;\n\t}\n\n\tif ( typeof components !== 'object' ) {\n\t\tif ( throwErrors ) {\n\t\t\tthrow new Error(\n\t\t\t\t`Interpolation Error: unable to process \\`${ mixedString }\\` because components is not an object`\n\t\t\t);\n\t\t}\n\n\t\treturn mixedString;\n\t}\n\n\tconst tokens = tokenize( mixedString );\n\n\ttry {\n\t\treturn buildChildren( tokens, components );\n\t} catch ( error ) {\n\t\tif ( throwErrors ) {\n\t\t\tthrow new Error(\n\t\t\t\t`Interpolation Error: unable to process \\`${ mixedString }\\` because of error \\`${ error.message }\\``\n\t\t\t);\n\t\t}\n\n\t\treturn mixedString;\n\t}\n}\n","function identifyToken( item ) {\n\t// {{/example}}\n\tif ( item.startsWith( '{{/' ) ) {\n\t\treturn {\n\t\t\ttype: 'componentClose',\n\t\t\tvalue: item.replace( /\\W/g, '' ),\n\t\t};\n\t}\n\t// {{example /}}\n\tif ( item.endsWith( '/}}' ) ) {\n\t\treturn {\n\t\t\ttype: 'componentSelfClosing',\n\t\t\tvalue: item.replace( /\\W/g, '' ),\n\t\t};\n\t}\n\t// {{example}}\n\tif ( item.startsWith( '{{' ) ) {\n\t\treturn {\n\t\t\ttype: 'componentOpen',\n\t\t\tvalue: item.replace( /\\W/g, '' ),\n\t\t};\n\t}\n\treturn {\n\t\ttype: 'string',\n\t\tvalue: item,\n\t};\n}\n\nexport default function tokenize( mixedString ) {\n\tconst tokenStrings = mixedString.split( /(\\{\\{\\/?\\s*\\w+\\s*\\/?\\}\\})/g ); // split to components and strings\n\treturn tokenStrings.map( identifyToken );\n}\n","import debugFactory from 'debug';\nconst debug = debugFactory( 'lib/load-script/callback-handler' );\n\n/**\n * Module variables\n */\nconst callbacksForURLsInProgress = new Map();\n\nexport function getCallbacksMap() {\n\treturn callbacksForURLsInProgress;\n}\n\nexport function isLoading( url ) {\n\treturn getCallbacksMap().has( url );\n}\n\nexport function addScriptCallback( url, callback ) {\n\tconst callbacksMap = getCallbacksMap();\n\tif ( isLoading( url ) ) {\n\t\tdebug( `Adding a callback for an existing script from \"${ url }\"` );\n\t\tcallbacksMap.get( url ).add( callback );\n\t} else {\n\t\tdebug( `Adding a callback for a new script from \"${ url }\"` );\n\t\tcallbacksMap.set( url, new Set( [ callback ] ) );\n\t}\n}\n\nexport function removeScriptCallback( url, callback ) {\n\tdebug( `Removing a known callback for a script from \"${ url }\"` );\n\n\tif ( ! isLoading( url ) ) {\n\t\treturn;\n\t}\n\n\tconst callbacksMap = getCallbacksMap();\n\tconst callbacksAtUrl = callbacksMap.get( url );\n\tcallbacksAtUrl.delete( callback );\n\n\tif ( callbacksAtUrl.size === 0 ) {\n\t\tcallbacksMap.delete( url );\n\t}\n}\n\nexport function removeScriptCallbacks( url ) {\n\tdebug( `Removing all callbacks for a script from \"${ url }\"` );\n\tgetCallbacksMap().delete( url );\n}\n\nexport function removeAllScriptCallbacks() {\n\tdebug( 'Removing all callbacks for scripts from all URLs' );\n\tgetCallbacksMap().clear();\n}\n\nexport function executeCallbacks( url, error = null ) {\n\tconst callbacksMap = getCallbacksMap();\n\tconst callbacksForUrl = callbacksMap.get( url );\n\n\tif ( callbacksForUrl ) {\n\t\tconst debugMessage =\n\t\t\t`Executing callbacks for \"${ url }\"` +\n\t\t\t( error === null ? ' with success' : ` with error \"${ error }\"` );\n\t\tdebug( debugMessage );\n\n\t\tcallbacksForUrl.forEach( ( cb ) => {\n\t\t\tif ( typeof cb === 'function' ) {\n\t\t\t\tcb( error );\n\t\t\t}\n\t\t} );\n\n\t\tcallbacksMap.delete( url );\n\t}\n}\n\nexport function handleRequestSuccess() {\n\tconst url = this.getAttribute( 'src' );\n\tdebug( `Handling successful request for \"${ url }\"` );\n\texecuteCallbacks( url );\n\tthis.onload = null;\n}\n\nexport function handleRequestError() {\n\tconst url = this.getAttribute( 'src' );\n\tdebug( `Handling failed request for \"${ url }\"` );\n\texecuteCallbacks( url, new Error( `Failed to load script \"${ url }\"` ) );\n\tthis.onerror = null;\n}\n","import debugFactory from 'debug';\nimport { handleRequestError, handleRequestSuccess } from './callback-handler';\n\nconst debug = debugFactory( 'lib/load-script/dom-operations' );\n\nexport function createScriptElement( url ) {\n\tdebug( `Creating script element for \"${ url }\"` );\n\tconst script = document.createElement( 'script' );\n\tscript.src = url;\n\tscript.type = 'text/javascript';\n\tscript.async = true;\n\tscript.onload = handleRequestSuccess;\n\tscript.onerror = handleRequestError;\n\treturn script;\n}\n\nexport function attachToHead( element ) {\n\tdebug( 'Attaching element to head' );\n\tdocument.head.appendChild( element );\n}\n","/**\n * A little module for loading a external script\n *\n */\n\nimport debugFactory from 'debug';\nimport { addScriptCallback, isLoading } from './callback-handler';\nimport { createScriptElement, attachToHead } from './dom-operations';\n\nconst debug = debugFactory( 'package/load-script' );\n\n// NOTE: This exists for compatibility.\nexport { removeScriptCallback } from './callback-handler';\n\n/**\n * Module variables\n */\nexport const JQUERY_URL = 'https://s0.wp.com/wp-includes/js/jquery/jquery.js';\n\n//\n// loadScript and loadjQueryDependentScript\n//\n\nexport function loadScript( url, callback ) {\n\t// If this script is not currently being loaded, create a script element and attach to document head.\n\tconst shouldLoadScript = ! isLoading( url );\n\tif ( shouldLoadScript ) {\n\t\t// the onload/onerror callbacks are guaranteed to be called asynchronously, so it's ok to first\n\t\t// add the element and only then attach callbacks, as long as it happens in one event loop tick.\n\t\tattachToHead( createScriptElement( url ) );\n\t}\n\n\t// if callback is provided, behave traditionally\n\tif ( typeof callback === 'function' ) {\n\t\taddScriptCallback( url, callback );\n\t\treturn;\n\t}\n\n\t// but if not, return a Promise\n\treturn new Promise( ( resolve, reject ) => {\n\t\taddScriptCallback( url, ( error ) => {\n\t\t\tif ( error === null ) {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\treject( error );\n\t\t\t}\n\t\t} );\n\t} );\n}\n\nexport function loadjQueryDependentScript( url, callback ) {\n\tdebug( `Loading a jQuery dependent script from \"${ url }\"` );\n\n\tif ( window.jQuery ) {\n\t\tdebug( `jQuery found on window, skipping jQuery script loading for \"${ url }\"` );\n\t\treturn loadScript( url, callback );\n\t}\n\n\tconst loadPromise = loadScript( JQUERY_URL ).then( () => loadScript( url ) );\n\n\t// if callback is provided, call it on resolution\n\tif ( typeof callback === 'function' ) {\n\t\tloadPromise.then(\n\t\t\t() => callback( null ),\n\t\t\t( error ) => callback( error )\n\t\t);\n\t\treturn;\n\t}\n\n\t// if not, return the Promise\n\treturn loadPromise;\n}\n","/**\n * External dependencies\n */\nimport * as React from 'react';\n/**\n * Internal dependencies\n */\nimport useFocusHandler from '../hooks/use-focus-handler';\nimport useFocusTrap from '../hooks/use-focus-trap';\nimport useKeydownHandler from '../hooks/use-keydown-handler';\n\ninterface Props {\n\tonMinimize: () => void;\n\tonDismiss: ( target: string ) => () => void;\n\tonNextStepProgression: () => void;\n\tonPreviousStepProgression: () => void;\n\ttourContainerRef: React.MutableRefObject< null | HTMLElement >;\n\tisMinimized: boolean;\n}\n\nconst KeyboardNavigation: React.FunctionComponent< Props > = ( {\n\tonMinimize,\n\tonDismiss,\n\tonNextStepProgression,\n\tonPreviousStepProgression,\n\ttourContainerRef,\n\tisMinimized,\n} ) => {\n\tfunction ExpandedTourNav() {\n\t\tuseKeydownHandler( {\n\t\t\tonEscape: onMinimize,\n\t\t\tonArrowRight: onNextStepProgression,\n\t\t\tonArrowLeft: onPreviousStepProgression,\n\t\t} );\n\t\tuseFocusTrap( tourContainerRef );\n\n\t\treturn null;\n\t}\n\n\tfunction MinimizedTourNav() {\n\t\tuseKeydownHandler( { onEscape: onDismiss( 'esc-key-minimized' ) } );\n\n\t\treturn null;\n\t}\n\n\tconst isTourFocused = useFocusHandler( tourContainerRef );\n\n\tif ( ! isTourFocused ) {\n\t\treturn null;\n\t}\n\n\treturn isMinimized ? <MinimizedTourNav /> : <ExpandedTourNav />;\n};\n\nexport default KeyboardNavigation;\n","import { createContext, useContext } from '@wordpress/element';\nimport type { Config } from '../types';\n\ninterface TourKitContext {\n\tconfig: Config;\n}\n\nconst TourKitContext = createContext< TourKitContext >( {} as TourKitContext );\n\nconst TourKitContextProvider: React.FunctionComponent< TourKitContext > = ( {\n\tconfig,\n\tchildren,\n} ) => {\n\treturn <TourKitContext.Provider value={ { config } }>{ children }</TourKitContext.Provider>;\n};\n\nexport const useTourKitContext = (): TourKitContext => useContext( TourKitContext );\n\nexport default TourKitContextProvider;\n","/**\n * External Dependencies\n */\nimport { useMobileBreakpoint } from '@automattic/viewport-react';\nimport { useEffect, useState, useCallback, useMemo, useRef } from '@wordpress/element';\nimport classnames from 'classnames';\nimport { usePopper } from 'react-popper';\n/**\n * Internal Dependencies\n */\nimport useStepTracking from '../hooks/use-step-tracking';\nimport { classParser } from '../utils';\nimport { liveResizeModifier } from '../utils/live-resize-modifier';\nimport KeyboardNavigation from './keyboard-navigation';\nimport TourKitMinimized from './tour-kit-minimized';\nimport Overlay from './tour-kit-overlay';\nimport Spotlight from './tour-kit-spotlight';\nimport TourKitStep from './tour-kit-step';\nimport type { Callback, Config } from '../types';\n\nconst handleCallback = ( currentStepIndex: number, callback?: Callback ) => {\n\ttypeof callback === 'function' && callback( currentStepIndex );\n};\n\ninterface Props {\n\tconfig: Config;\n}\n\nconst TourKitFrame: React.FunctionComponent< Props > = ( { config } ) => {\n\tconst [ currentStepIndex, setCurrentStepIndex ] = useState( 0 );\n\tconst [ initialFocusedElement, setInitialFocusedElement ] = useState< HTMLElement | null >(\n\t\tnull\n\t);\n\tconst [ isMinimized, setIsMinimized ] = useState( config.isMinimized ?? false );\n\n\tconst [ popperElement, setPopperElement ] = useState< HTMLElement | null >( null );\n\tconst [ tourReady, setTourReady ] = useState( false );\n\tconst tourContainerRef = useRef( null );\n\tconst isMobile = useMobileBreakpoint();\n\tconst lastStepIndex = config.steps.length - 1;\n\tconst referenceElementSelector =\n\t\tconfig.steps[ currentStepIndex ].referenceElements?.[ isMobile ? 'mobile' : 'desktop' ] || null;\n\tconst referenceElement = referenceElementSelector\n\t\t? document.querySelector< HTMLElement >( referenceElementSelector )\n\t\t: null;\n\n\tuseEffect( () => {\n\t\tif ( config.isMinimized ) {\n\t\t\tsetIsMinimized( true );\n\t\t}\n\t}, [ config.isMinimized ] );\n\n\tconst showArrowIndicator = useCallback( () => {\n\t\tif ( config.options?.effects?.arrowIndicator === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !! ( referenceElement && ! isMinimized && tourReady );\n\t}, [ config.options?.effects?.arrowIndicator, isMinimized, referenceElement, tourReady ] );\n\n\tconst showSpotlight = useCallback( () => {\n\t\tif ( ! config.options?.effects?.spotlight ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn ! isMinimized;\n\t}, [ config.options?.effects?.spotlight, isMinimized ] );\n\n\tconst showOverlay = useCallback( () => {\n\t\tif ( showSpotlight() || ! config.options?.effects?.overlay ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn ! isMinimized;\n\t}, [ config.options?.effects?.overlay, isMinimized, showSpotlight ] );\n\n\tconst handleDismiss = useCallback(\n\t\t( source: string ) => {\n\t\t\treturn () => {\n\t\t\t\tconfig.closeHandler( config.steps, currentStepIndex, source );\n\t\t\t};\n\t\t},\n\t\t[ config, currentStepIndex ]\n\t);\n\n\tconst handleNextStepProgression = useCallback( () => {\n\t\tif ( lastStepIndex > currentStepIndex ) {\n\t\t\tsetCurrentStepIndex( currentStepIndex + 1 );\n\t\t}\n\t\thandleCallback( currentStepIndex, config.options?.callbacks?.onNextStep );\n\t}, [ config.options?.callbacks?.onNextStep, currentStepIndex, lastStepIndex ] );\n\n\tconst handlePreviousStepProgression = useCallback( () => {\n\t\tcurrentStepIndex && setCurrentStepIndex( currentStepIndex - 1 );\n\t\thandleCallback( currentStepIndex, config.options?.callbacks?.onPreviousStep );\n\t}, [ config.options?.callbacks?.onPreviousStep, currentStepIndex ] );\n\n\tconst handleGoToStep = useCallback(\n\t\t( stepIndex: number ) => {\n\t\t\tsetCurrentStepIndex( stepIndex );\n\t\t\thandleCallback( currentStepIndex, config.options?.callbacks?.onGoToStep );\n\t\t},\n\t\t[ config.options?.callbacks?.onGoToStep, currentStepIndex ]\n\t);\n\n\tconst handleMinimize = useCallback( () => {\n\t\tsetIsMinimized( true );\n\t\thandleCallback( currentStepIndex, config.options?.callbacks?.onMinimize );\n\t}, [ config.options?.callbacks?.onMinimize, currentStepIndex ] );\n\n\tconst handleMaximize = useCallback( () => {\n\t\tsetIsMinimized( false );\n\t\thandleCallback( currentStepIndex, config.options?.callbacks?.onMaximize );\n\t}, [ config.options?.callbacks?.onMaximize, currentStepIndex ] );\n\n\tconst {\n\t\tstyles: popperStyles,\n\t\tattributes: popperAttributes,\n\t\tupdate: popperUpdate,\n\t} = usePopper( referenceElement, popperElement, {\n\t\tstrategy: 'fixed',\n\t\tplacement: config?.placement ?? 'bottom',\n\t\tmodifiers: [\n\t\t\t{\n\t\t\t\tname: 'preventOverflow',\n\t\t\t\toptions: {\n\t\t\t\t\trootBoundary: 'document',\n\t\t\t\t\tpadding: 16, // same as the left/margin of the tour frame\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'arrow',\n\t\t\t\toptions: {\n\t\t\t\t\tpadding: 12,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'offset',\n\t\t\t\toptions: {\n\t\t\t\t\toffset: [ 0, showArrowIndicator() ? 12 : 10 ],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'flip',\n\t\t\t\toptions: {\n\t\t\t\t\tfallbackPlacements: [ 'top', 'left', 'right' ],\n\t\t\t\t},\n\t\t\t},\n\t\t\tuseMemo(\n\t\t\t\t() => liveResizeModifier( config.options?.effects?.liveResize ),\n\t\t\t\t[ config.options?.effects?.liveResize ]\n\t\t\t),\n\t\t\t...( config.options?.popperModifiers || [] ),\n\t\t],\n\t} );\n\n\tconst stepRepositionProps =\n\t\t! isMinimized && referenceElement && tourReady\n\t\t\t? {\n\t\t\t\t\tstyle: popperStyles?.popper,\n\t\t\t\t\t...popperAttributes?.popper,\n\t\t\t }\n\t\t\t: null;\n\n\tconst arrowPositionProps =\n\t\t! isMinimized && referenceElement && tourReady\n\t\t\t? {\n\t\t\t\t\tstyle: popperStyles?.arrow,\n\t\t\t\t\t...popperAttributes?.arrow,\n\t\t\t }\n\t\t\t: null;\n\n\t/*\n\t * Focus first interactive element when step renders.\n\t */\n\tuseEffect( () => {\n\t\tsetTimeout( () => initialFocusedElement?.focus() );\n\t}, [ initialFocusedElement ] );\n\n\t/*\n\t * Fixes issue with Popper misplacing the instance on mount\n\t * See: https://stackoverflow.com/questions/65585859/react-popper-incorrect-position-on-mount\n\t */\n\tuseEffect( () => {\n\t\t// If no reference element to position step near\n\t\tif ( ! referenceElement ) {\n\t\t\tsetTourReady( true );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTourReady( false );\n\n\t\tif ( popperUpdate ) {\n\t\t\tpopperUpdate()\n\t\t\t\t.then( () => setTourReady( true ) )\n\t\t\t\t.catch( () => setTourReady( true ) );\n\t\t}\n\t}, [ popperUpdate, referenceElement ] );\n\n\tuseEffect( () => {\n\t\tif ( referenceElement && config.options?.effects?.autoScroll ) {\n\t\t\treferenceElement.scrollIntoView( config.options.effects.autoScroll );\n\t\t}\n\t}, [ config.options?.effects?.autoScroll, referenceElement ] );\n\n\tconst classes = classnames(\n\t\t'tour-kit-frame',\n\t\tisMobile ? 'is-mobile' : 'is-desktop',\n\t\t{ 'is-visible': tourReady },\n\t\tclassParser( config.options?.classNames )\n\t);\n\n\tuseStepTracking( currentStepIndex, config.options?.callbacks?.onStepViewOnce );\n\n\treturn (\n\t\t<>\n\t\t\t<KeyboardNavigation\n\t\t\t\tonMinimize={ handleMinimize }\n\t\t\t\tonDismiss={ handleDismiss }\n\t\t\t\tonNextStepProgression={ handleNextStepProgression }\n\t\t\t\tonPreviousStepProgression={ handlePreviousStepProgression }\n\t\t\t\ttourContainerRef={ tourContainerRef }\n\t\t\t\tisMinimized={ isMinimized }\n\t\t\t/>\n\t\t\t<div className={ classes } ref={ tourContainerRef }>\n\t\t\t\t{ showOverlay() && <Overlay visible={ true } /> }\n\t\t\t\t{ showSpotlight() && (\n\t\t\t\t\t<Spotlight\n\t\t\t\t\t\treferenceElement={ referenceElement }\n\t\t\t\t\t\tliveResize={ config.options?.effects?.liveResize || {} }\n\t\t\t\t\t\t{ ...( config.options?.effects?.spotlight || {} ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"tour-kit-frame__container\"\n\t\t\t\t\tref={ setPopperElement }\n\t\t\t\t\t{ ...( stepRepositionProps as React.HTMLAttributes< HTMLDivElement > ) }\n\t\t\t\t>\n\t\t\t\t\t{ showArrowIndicator() && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"tour-kit-frame__arrow\"\n\t\t\t\t\t\t\tdata-popper-arrow\n\t\t\t\t\t\t\t{ ...( arrowPositionProps as React.HTMLAttributes< HTMLDivElement > ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! isMinimized ? (\n\t\t\t\t\t\t<TourKitStep\n\t\t\t\t\t\t\tconfig={ config }\n\t\t\t\t\t\t\tsteps={ config.steps }\n\t\t\t\t\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\t\t\t\t\tonMinimize={ handleMinimize }\n\t\t\t\t\t\t\tonDismiss={ handleDismiss }\n\t\t\t\t\t\t\tonNextStep={ handleNextStepProgression }\n\t\t\t\t\t\t\tonPreviousStep={ handlePreviousStepProgression }\n\t\t\t\t\t\t\tonGoToStep={ handleGoToStep }\n\t\t\t\t\t\t\tsetInitialFocusedElement={ setInitialFocusedElement }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<TourKitMinimized\n\t\t\t\t\t\t\tconfig={ config }\n\t\t\t\t\t\t\tsteps={ config.steps }\n\t\t\t\t\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\t\t\t\t\tonMaximize={ handleMaximize }\n\t\t\t\t\t\t\tonDismiss={ handleDismiss }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default TourKitFrame;\n","/**\n * Internal Dependencies\n */\nimport { MinimizedTourRendererProps } from '../types';\nimport type { Config } from '../types';\n\ninterface Props extends MinimizedTourRendererProps {\n\tconfig: Config;\n}\n\nconst TourKitMinimized: React.FunctionComponent< Props > = ( {\n\tconfig,\n\tsteps,\n\tcurrentStepIndex,\n\tonMaximize,\n\tonDismiss,\n} ) => {\n\treturn (\n\t\t<div className={ 'tour-kit-minimized' }>\n\t\t\t<config.renderers.tourMinimized\n\t\t\t\tsteps={ steps }\n\t\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\t\tonMaximize={ onMaximize }\n\t\t\t\tonDismiss={ onDismiss }\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default TourKitMinimized;\n","/**\n * External Dependencies\n */\nimport classnames from 'classnames';\n\ninterface Props {\n\tvisible: boolean;\n}\n\nconst TourKitOverlay: React.FunctionComponent< Props > = ( { visible } ) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={ classnames( 'tour-kit-overlay', {\n\t\t\t\t'is-visible': visible,\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n\nexport default TourKitOverlay;\n","import { SPOTLIT_ELEMENT_CLASS } from './tour-kit-spotlight';\n\nexport interface SpotlightInteractivityConfiguration {\n\t/** If true, the user will be allowed to interact with the spotlit element. Defaults to false. */\n\tenabled?: boolean;\n\t/** This element is the root element within which all children will have\n\t * pointer-events disabled during the tour. Defaults to '#wpwrap'\n\t */\n\trootElementSelector?: string;\n}\n\nexport const SpotlightInteractivity: React.VFC< SpotlightInteractivityConfiguration > = ( {\n\tenabled = false,\n\trootElementSelector = '#wpwrap',\n}: SpotlightInteractivityConfiguration ) => {\n\tif ( ! enabled ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<style>\n\t\t\t{ `\n .${ SPOTLIT_ELEMENT_CLASS }, .${ SPOTLIT_ELEMENT_CLASS } * {\n pointer-events: auto;\n }\n .tour-kit-frame__container button {\n pointer-events: auto;\n }\n .tour-kit-spotlight, .tour-kit-overlay {\n pointer-events: none;\n }\n ${ rootElementSelector } :not(.${ SPOTLIT_ELEMENT_CLASS }, .${ SPOTLIT_ELEMENT_CLASS } *) {\n pointer-events: none;\n }\n ` }\n\t\t</style>\n\t);\n};\n","import { useMemo, useState, useEffect } from '@wordpress/element';\nimport classnames from 'classnames';\nimport { usePopper } from 'react-popper';\nimport { LiveResizeConfiguration, liveResizeModifier } from '../utils/live-resize-modifier';\nimport Overlay from './tour-kit-overlay';\nimport {\n\tSpotlightInteractivity,\n\tSpotlightInteractivityConfiguration,\n} from './tour-kit-spotlight-interactivity';\nimport type { Rect, Placement } from '@popperjs/core';\n\nexport const SPOTLIT_ELEMENT_CLASS = 'wp-tour-kit-spotlit';\ninterface Props {\n\treferenceElement: HTMLElement | null;\n\tstyles?: React.CSSProperties;\n\tinteractivity?: SpotlightInteractivityConfiguration;\n\tliveResize?: LiveResizeConfiguration;\n}\n\nconst TourKitSpotlight: React.FunctionComponent< Props > = ( {\n\treferenceElement,\n\tstyles,\n\tinteractivity,\n\tliveResize,\n} ) => {\n\tconst [ popperElement, sePopperElement ] = useState< HTMLElement | null >( null );\n\tconst referenceRect = referenceElement?.getBoundingClientRect();\n\n\tconst modifiers = [\n\t\t{\n\t\t\tname: 'flip',\n\t\t\tenabled: false,\n\t\t},\n\t\t{\n\t\t\tname: 'preventOverflow',\n\t\t\toptions: {\n\t\t\t\tmainAxis: false, // true by default\n\t\t\t},\n\t\t},\n\t\tuseMemo(\n\t\t\t() => ( {\n\t\t\t\tname: 'offset',\n\t\t\t\toptions: {\n\t\t\t\t\toffset: ( {\n\t\t\t\t\t\tplacement,\n\t\t\t\t\t\treference,\n\t\t\t\t\t\tpopper,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tplacement: Placement;\n\t\t\t\t\t\treference: Rect;\n\t\t\t\t\t\tpopper: Rect;\n\t\t\t\t\t} ): [ number, number ] => {\n\t\t\t\t\t\tif ( placement === 'bottom' ) {\n\t\t\t\t\t\t\treturn [ 0, -( reference.height + ( popper.height - reference.height ) / 2 ) ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [ 0, 0 ];\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} ),\n\t\t\t[]\n\t\t),\n\t\t// useMemo because https://popper.js.org/react-popper/v2/faq/#why-i-get-render-loop-whenever-i-put-a-function-inside-the-popper-configuration\n\t\tuseMemo( () => {\n\t\t\treturn liveResizeModifier( liveResize );\n\t\t}, [ liveResize ] ),\n\t];\n\n\tconst { styles: popperStyles, attributes: popperAttributes } = usePopper(\n\t\treferenceElement,\n\t\tpopperElement,\n\t\t{\n\t\t\tstrategy: 'fixed',\n\t\t\tplacement: 'bottom',\n\t\t\tmodifiers,\n\t\t}\n\t);\n\n\tconst clipDimensions = referenceRect\n\t\t? {\n\t\t\t\twidth: `${ referenceRect.width }px`,\n\t\t\t\theight: `${ referenceRect.height }px`,\n\t\t }\n\t\t: null;\n\n\tconst clipRepositionProps = referenceElement\n\t\t? {\n\t\t\t\tstyle: {\n\t\t\t\t\t...( clipDimensions && clipDimensions ),\n\t\t\t\t\t...popperStyles?.popper,\n\t\t\t\t\t...( styles && styles ),\n\t\t\t\t},\n\t\t\t\t...popperAttributes?.popper,\n\t\t }\n\t\t: null;\n\n\t/**\n\t * Add a .wp-spotlit class to the referenced element so that we can\n\t * apply CSS styles to it, for whatever purposes such as interactivity\n\t */\n\tuseEffect( () => {\n\t\treferenceElement?.classList.add( SPOTLIT_ELEMENT_CLASS );\n\t\treturn () => {\n\t\t\treferenceElement?.classList.remove( SPOTLIT_ELEMENT_CLASS );\n\t\t};\n\t}, [ referenceElement ] );\n\n\treturn (\n\t\t<>\n\t\t\t<SpotlightInteractivity { ...interactivity } />\n\t\t\t<Overlay visible={ ! clipRepositionProps } />\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'tour-kit-spotlight', {\n\t\t\t\t\t'is-visible': !! clipRepositionProps,\n\t\t\t\t} ) }\n\t\t\t\tref={ sePopperElement }\n\t\t\t\t{ ...( clipRepositionProps as React.HTMLAttributes< HTMLDivElement > ) }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default TourKitSpotlight;\n","/**\n * External Dependencies\n */\nimport { useMobileBreakpoint } from '@automattic/viewport-react';\nimport classnames from 'classnames';\n/**\n * Internal Dependencies\n */\nimport { classParser } from '../utils';\nimport type { Config, TourStepRendererProps } from '../types';\n\ninterface Props extends TourStepRendererProps {\n\tconfig: Config;\n}\n\nconst TourKitStep: React.FunctionComponent< Props > = ( {\n\tconfig,\n\tsteps,\n\tcurrentStepIndex,\n\tonMinimize,\n\tonDismiss,\n\tonNextStep,\n\tonPreviousStep,\n\tsetInitialFocusedElement,\n\tonGoToStep,\n} ) => {\n\tconst isMobile = useMobileBreakpoint();\n\tconst classes = classnames(\n\t\t'tour-kit-step',\n\t\t`is-step-${ currentStepIndex }`,\n\t\tclassParser(\n\t\t\tconfig.steps[ currentStepIndex ].options?.classNames?.[ isMobile ? 'mobile' : 'desktop' ]\n\t\t)\n\t);\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t<config.renderers.tourStep\n\t\t\t\tsteps={ steps }\n\t\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\t\tonDismiss={ onDismiss }\n\t\t\t\tonNextStep={ onNextStep }\n\t\t\t\tonPreviousStep={ onPreviousStep }\n\t\t\t\tonMinimize={ onMinimize }\n\t\t\t\tsetInitialFocusedElement={ setInitialFocusedElement }\n\t\t\t\tonGoToStep={ onGoToStep }\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default TourKitStep;\n","// import { TourKitContextProvider } from './tour-kit-context';\nimport { createPortal, useEffect, useRef } from '@wordpress/element';\nimport React from 'react';\nimport ErrorBoundary from '../error-boundary';\nimport TourKitContextProvider from './tour-kit-context';\nimport TourKitFrame from './tour-kit-frame';\nimport type { Config } from '../types';\n\nimport '../styles.scss';\n\ninterface Props {\n\tconfig: Config;\n\t__temp__className?: string;\n}\n\nconst TourKit: React.FunctionComponent< Props > = ( { config, __temp__className } ) => {\n\tconst portalParent = useRef( document.createElement( 'div' ) ).current;\n\n\tuseEffect( () => {\n\t\tconst classes = [ 'tour-kit', ...( __temp__className ? [ __temp__className ] : [] ) ];\n\n\t\tportalParent.classList.add( ...classes );\n\n\t\tconst portalParentElement = config.options?.portalParentElement || document.body;\n\t\tportalParentElement.appendChild( portalParent );\n\n\t\treturn () => {\n\t\t\tportalParentElement.removeChild( portalParent );\n\t\t};\n\t}, [ __temp__className, portalParent, config.options?.portalParentElement ] );\n\n\treturn (\n\t\t<ErrorBoundary>\n\t\t\t<TourKitContextProvider config={ config }>\n\t\t\t\t<div>{ createPortal( <TourKitFrame config={ config } />, portalParent ) }</div>\n\t\t\t</TourKitContextProvider>\n\t\t</ErrorBoundary>\n\t);\n};\n\nexport default TourKit;\n","import React, { ErrorInfo } from 'react';\n\ntype State = {\n\thasError: boolean;\n};\n\nclass ErrorBoundary extends React.Component< { children: React.ReactNode }, State > {\n\tstate = {\n\t\thasError: false,\n\t};\n\n\tstatic getDerivedStateFromError() {\n\t\t// Update state so the next render will show the fallback UI.\n\t\treturn { hasError: true };\n\t}\n\n\tcomponentDidCatch( error: Error, errorInfo: ErrorInfo ) {\n\t\t// You can also log the error to an error reporting service\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( error, errorInfo );\n\t}\n\n\trender() {\n\t\tif ( this.state.hasError ) {\n\t\t\t// You can render any custom fallback UI\n\t\t\treturn <h1>Something went wrong.</h1>;\n\t\t}\n\n\t\treturn this.props.children;\n\t}\n}\n\nexport default ErrorBoundary;\n","/**\n * External Dependencies\n */\nimport { useEffect, useCallback, useState } from '@wordpress/element';\n\n/**\n * A hook that returns true/false if ref node receives focus by either tabbing or clicking into any of its children.\n *\n * @param ref React.MutableRefObject< null | HTMLElement >\n */\nconst useFocusHandler = ( ref: React.MutableRefObject< null | HTMLElement > ): boolean => {\n\tconst [ hasFocus, setHasFocus ] = useState( false );\n\n\tconst handleFocus = useCallback( () => {\n\t\tif ( document.hasFocus() && ref.current?.contains( document.activeElement ) ) {\n\t\t\tsetHasFocus( true );\n\t\t} else {\n\t\t\tsetHasFocus( false );\n\t\t}\n\t}, [ ref ] );\n\n\tconst handleMousedown = useCallback(\n\t\t( event ) => {\n\t\t\tif ( ref.current?.contains( event.target ) ) {\n\t\t\t\tsetHasFocus( true );\n\t\t\t} else {\n\t\t\t\tsetHasFocus( false );\n\t\t\t}\n\t\t},\n\t\t[ ref ]\n\t);\n\n\tconst handleKeyup = useCallback(\n\t\t( event ) => {\n\t\t\tif ( event.key === 'Tab' ) {\n\t\t\t\tif ( ref.current?.contains( event.target ) ) {\n\t\t\t\t\tsetHasFocus( true );\n\t\t\t\t} else {\n\t\t\t\t\tsetHasFocus( false );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[ ref ]\n\t);\n\n\tuseEffect( () => {\n\t\tdocument.addEventListener( 'focusin', handleFocus );\n\t\tdocument.addEventListener( 'mousedown', handleMousedown );\n\t\tdocument.addEventListener( 'keyup', handleKeyup );\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener( 'focusin', handleFocus );\n\t\t\tdocument.removeEventListener( 'mousedown', handleMousedown );\n\t\t\tdocument.removeEventListener( 'keyup', handleKeyup );\n\t\t};\n\t}, [ ref, handleFocus, handleKeyup, handleMousedown ] );\n\n\treturn hasFocus;\n};\n\nexport default useFocusHandler;\n","/**\n * External Dependencies\n */\nimport { focus } from '@wordpress/dom';\nimport { useEffect, useCallback, useState } from '@wordpress/element';\n/**\n * A hook that constraints tabbing/focus on focuable elements in the given element ref.\n *\n * @param ref React.MutableRefObject< null | HTMLElement >\n */\nconst useFocusTrap = ( ref: React.MutableRefObject< null | HTMLElement > ): void => {\n\tconst [ firstFocusableElement, setFirstFocusableElement ] = useState< HTMLElement | undefined >();\n\tconst [ lastFocusableElement, setLastFocusableElement ] = useState< HTMLElement | undefined >();\n\n\tconst handleTrapFocus = useCallback(\n\t\t( event ) => {\n\t\t\tlet handled = false;\n\n\t\t\tif ( event.key === 'Tab' ) {\n\t\t\t\tif ( event.shiftKey ) {\n\t\t\t\t\t// Shift + Tab\n\t\t\t\t\tif ( document.activeElement === firstFocusableElement ) {\n\t\t\t\t\t\tlastFocusableElement?.focus();\n\t\t\t\t\t\thandled = true;\n\t\t\t\t\t}\n\t\t\t\t} else if ( document.activeElement === lastFocusableElement ) {\n\t\t\t\t\t// Tab\n\t\t\t\t\tfirstFocusableElement?.focus();\n\t\t\t\t\thandled = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( handled ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t},\n\t\t[ firstFocusableElement, lastFocusableElement ]\n\t);\n\n\tuseEffect( () => {\n\t\tconst focusableElements = ref.current ? focus.focusable.find( ref.current as HTMLElement ) : [];\n\n\t\tif ( focusableElements && focusableElements.length ) {\n\t\t\tsetFirstFocusableElement( focusableElements[ 0 ] as HTMLElement );\n\t\t\tsetLastFocusableElement( focusableElements[ focusableElements.length - 1 ] as HTMLElement );\n\t\t}\n\n\t\tdocument.addEventListener( 'keydown', handleTrapFocus );\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener( 'keydown', handleTrapFocus );\n\t\t};\n\t}, [ ref, handleTrapFocus ] );\n};\n\nexport default useFocusTrap;\n","/* eslint-disable jsdoc/require-param */\n/**\n * External Dependencies\n */\nimport { useEffect, useCallback } from '@wordpress/element';\n\ninterface Props {\n\tonEscape?: () => void;\n\tonArrowRight?: () => void;\n\tonArrowLeft?: () => void;\n}\n\n/**\n * A hook the applies the respective callbacks in response to keydown events.\n */\nconst useKeydownHandler = ( { onEscape, onArrowRight, onArrowLeft }: Props ): void => {\n\tconst handleKeydown = useCallback(\n\t\t( event: KeyboardEvent ) => {\n\t\t\tlet handled = false;\n\n\t\t\tswitch ( event.key ) {\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tonEscape && ( onEscape(), ( handled = true ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\tonArrowRight && ( onArrowRight(), ( handled = true ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tonArrowLeft && ( onArrowLeft(), ( handled = true ) );\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif ( handled ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t},\n\t\t[ onEscape, onArrowRight, onArrowLeft ]\n\t);\n\n\tuseEffect( () => {\n\t\tdocument.addEventListener( 'keydown', handleKeydown );\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener( 'keydown', handleKeydown );\n\t\t};\n\t}, [ handleKeydown ] );\n};\n\nexport default useKeydownHandler;\n","/**\n * External Dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\n/**\n * Internal Dependencies\n */\nimport { Callback } from '../types';\n\nconst useStepTracking = (\n\tcurrentStepIndex: number,\n\tonStepViewOnce: Callback | undefined\n): void => {\n\tconst [ stepsViewed, setStepsViewed ] = useState< number[] >( [] );\n\n\tuseEffect( () => {\n\t\tif ( stepsViewed.includes( currentStepIndex ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetStepsViewed( ( prev ) => [ ...prev, currentStepIndex ] );\n\t\tonStepViewOnce?.( currentStepIndex );\n\t}, [ currentStepIndex, onStepViewOnce, stepsViewed ] );\n};\n\nexport default useStepTracking;\n","import debugFactory from 'debug';\n\n/**\n * Helper to convert CSV of `classes` to an array.\n *\n * @param classes String or array of classes to format.\n * @returns Array of classes\n */\nexport function classParser( classes?: string | string[] ): string[] | null {\n\tif ( classes?.length ) {\n\t\treturn classes.toString().split( ',' );\n\t}\n\n\treturn null;\n}\n\nexport const debug = debugFactory( 'tour-kit' );\n","import { debug } from '../utils';\nimport type { ModifierArguments, Options, State } from '@popperjs/core';\nimport type { Modifier } from 'react-popper';\n\n// Adds the resizeObserver and mutationObserver properties to the popper effect function argument\ntype ModifierArgumentsWithObserversProp = ModifierArguments< Options > & {\n\tstate: State & {\n\t\telements: State[ 'elements' ] & {\n\t\t\treference: State[ 'elements' ][ 'reference' ] & {\n\t\t\t\t[ key: symbol ]: {\n\t\t\t\t\tresizeObserver: ResizeObserver;\n\t\t\t\t\tmutationObserver: MutationObserver;\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n};\n\nexport interface LiveResizeConfiguration {\n\t/** CSS Selector for the the DOM node (and children) to observe for mutations */\n\trootElementSelector?: string;\n\t/** True to enable update on reference element resize, defaults to false */\n\tresize?: boolean;\n\t/** True to enable update on node and subtree mutation, defaults to false. May be performance intensive */\n\tmutation?: boolean;\n}\n\ntype liveResizeModifierFactory = (\n\tparams: LiveResizeConfiguration | undefined\n) => Modifier< 'liveResizeModifier', Record< string, unknown > >;\n\n/**\n * Function that returns a Popper modifier that observes the specified root element as well as\n * reference element for any changes. The reason for being a currying function is so that\n * we can customise the root element selector, otherwise observing at a higher than necessary\n * level might cause unnecessary performance penalties.\n *\n * The Popper modifier queues an asynchronous update on the Popper instance whenever either of the\n * Observers trigger its callback.\n *\n * @returns custom Popper modifier\n */\nexport const liveResizeModifier: liveResizeModifierFactory = (\n\t{ rootElementSelector, mutation = false, resize = false }: LiveResizeConfiguration = {\n\t\tmutation: false,\n\t\tresize: false,\n\t}\n) => ( {\n\tname: 'liveResizeModifier',\n\tenabled: true,\n\tphase: 'main',\n\tfn: () => {\n\t\treturn;\n\t},\n\teffect: ( arg0 ) => {\n\t\ttry {\n\t\t\tconst { state, instance } = arg0 as ModifierArgumentsWithObserversProp; // augment types here because we are mutating the properties on the argument that is passed in\n\n\t\t\tconst ObserversProp = Symbol(); // use a symbol here so that we don't clash with multiple poppers using this modifier on the same reference node\n\t\t\tconst { reference } = state.elements;\n\n\t\t\treference[ ObserversProp ] = {\n\t\t\t\tresizeObserver: new ResizeObserver( () => {\n\t\t\t\t\tinstance.update();\n\t\t\t\t} ),\n\n\t\t\t\tmutationObserver: new MutationObserver( () => {\n\t\t\t\t\tinstance.update();\n\t\t\t\t} ),\n\t\t\t};\n\n\t\t\tif ( resize ) {\n\t\t\t\tif ( reference instanceof Element ) {\n\t\t\t\t\treference[ ObserversProp ].resizeObserver.observe( reference );\n\t\t\t\t} else {\n\t\t\t\t\tdebug(\n\t\t\t\t\t\t'Error: ResizeObserver does not work with virtual elements, Tour Kit will not resize automatically if the size of the referenced element changes.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( mutation ) {\n\t\t\t\tconst rootElementNode = document.querySelector( rootElementSelector || '#wpwrap' );\n\t\t\t\tif ( rootElementNode instanceof Element ) {\n\t\t\t\t\treference[ ObserversProp ].mutationObserver.observe( rootElementNode, {\n\t\t\t\t\t\tattributes: true,\n\t\t\t\t\t\tcharacterData: true,\n\t\t\t\t\t\tchildList: true,\n\t\t\t\t\t\tsubtree: true,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tdebug(\n\t\t\t\t\t\t`Error: ${ rootElementSelector } selector did not find a valid DOM element, Tour Kit will not update automatically if the DOM layout changes.`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\treference[ ObserversProp ].resizeObserver.disconnect();\n\t\t\t\treference[ ObserversProp ].mutationObserver.disconnect();\n\t\t\t\tdelete reference[ ObserversProp ];\n\t\t\t};\n\t\t} catch ( error ) {\n\t\t\tdebug( 'Error: Tour Kit live resize modifier failed unexpectedly:', error );\n\t\t}\n\t},\n} );\n","import { Button, Flex } from '@wordpress/components';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { sprintf } from '@wordpress/i18n';\nimport { Icon, close } from '@wordpress/icons';\nimport { useI18n } from '@wordpress/react-i18n';\nimport maximize from '../icons/maximize';\nimport type { MinimizedTourRendererProps } from '../../../types';\n\nconst WpcomTourKitMinimized: React.FunctionComponent< MinimizedTourRendererProps > = ( {\n\tsteps,\n\tonMaximize,\n\tonDismiss,\n\tcurrentStepIndex,\n} ) => {\n\tconst { __ } = useI18n();\n\tconst lastStepIndex = steps.length - 1;\n\tconst page = currentStepIndex + 1;\n\tconst numberOfPages = lastStepIndex + 1;\n\n\treturn (\n\t\t<Flex gap={ 0 } className=\"wpcom-tour-kit-minimized\">\n\t\t\t<Button onClick={ onMaximize } aria-label={ __( 'Resume Tour', __i18n_text_domain__ ) }>\n\t\t\t\t<Flex gap={ 13 }>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t/* translators: 1: current page number, 2: total number of pages */\n\t\t\t\t\t\t\t\t__( 'Resume tour <span>(%1$d/%2$d)</span>', __i18n_text_domain__ ),\n\t\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\t\tnumberOfPages\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tspan: <span className=\"wpcom-tour-kit-minimized__tour-index\" />,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t\t<Icon icon={ maximize } size={ 24 } />\n\t\t\t\t</Flex>\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tonClick={ onDismiss( 'close-btn-minimized' ) }\n\t\t\t\taria-label={ __( 'Close Tour', __i18n_text_domain__ ) }\n\t\t\t>\n\t\t\t\t<Icon icon={ close } size={ 24 } />\n\t\t\t</Button>\n\t\t</Flex>\n\t);\n};\n\nexport default WpcomTourKitMinimized;\n","import { Button } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { useI18n } from '@wordpress/react-i18n';\nimport classNames from 'classnames';\nimport { useTourKitContext } from '../../../index';\nimport thumbsDown from '../icons/thumbs_down';\nimport thumbsUp from '../icons/thumbs_up';\nimport type { WpcomConfig } from '../../../index';\n\nconst WpcomTourKitRating: React.FunctionComponent = () => {\n\tconst [ tempRating, setTempRating ] = useState< 'thumbs-up' | 'thumbs-down' >();\n\tconst context = useTourKitContext();\n\tconst config = context.config as unknown as WpcomConfig;\n\tconst tourRating = config.options?.tourRating?.useTourRating?.() ?? tempRating;\n\tconst { __ } = useI18n();\n\n\tlet isDisabled = false;\n\n\tif ( ! config.options?.tourRating?.enabled ) {\n\t\treturn null;\n\t}\n\n\t// check is on tempRating to allow rerating in a restarted tour\n\tif ( ! isDisabled && tempRating !== undefined ) {\n\t\tisDisabled = true;\n\t}\n\n\tconst rateTour = ( isThumbsUp: boolean ) => {\n\t\tif ( isDisabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst rating = isThumbsUp ? 'thumbs-up' : 'thumbs-down';\n\n\t\tif ( rating !== tourRating ) {\n\t\t\tisDisabled = true;\n\t\t\tsetTempRating( rating );\n\t\t\tconfig.options?.tourRating?.onTourRate?.( rating );\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<p className=\"wpcom-tour-kit-rating__end-text\">\n\t\t\t\t{ __( 'Did you find this guide helpful?', __i18n_text_domain__ ) }\n\t\t\t</p>\n\t\t\t<div>\n\t\t\t\t<Button\n\t\t\t\t\taria-label={ __( 'Rate thumbs up', __i18n_text_domain__ ) }\n\t\t\t\t\tclassName={ classNames( 'wpcom-tour-kit-rating__end-icon', {\n\t\t\t\t\t\tactive: tourRating === 'thumbs-up',\n\t\t\t\t\t} ) }\n\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\ticon={ thumbsUp }\n\t\t\t\t\tonClick={ () => rateTour( true ) }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t\t<Button\n\t\t\t\t\taria-label={ __( 'Rate thumbs down', __i18n_text_domain__ ) }\n\t\t\t\t\tclassName={ classNames( 'wpcom-tour-kit-rating__end-icon', {\n\t\t\t\t\t\tactive: tourRating === 'thumbs-down',\n\t\t\t\t\t} ) }\n\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\ticon={ thumbsDown }\n\t\t\t\t\tonClick={ () => rateTour( false ) }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default WpcomTourKitRating;\n","import { PaginationControl } from '@automattic/components';\nimport { Button } from '@wordpress/components';\nimport { useI18n } from '@wordpress/react-i18n';\nimport type { WpcomTourStepRendererProps } from '../../../types';\n\ntype Props = Omit< WpcomTourStepRendererProps, 'onMinimize' >;\n\nconst WpcomTourKitStepCardNavigation: React.FunctionComponent< Props > = ( {\n\tcurrentStepIndex,\n\tonDismiss,\n\tonGoToStep,\n\tonNextStep,\n\tonPreviousStep,\n\tsetInitialFocusedElement,\n\tsteps,\n} ) => {\n\tconst { __ } = useI18n();\n\tconst isFirstStep = currentStepIndex === 0;\n\tconst lastStepIndex = steps.length - 1;\n\n\treturn (\n\t\t<>\n\t\t\t<PaginationControl\n\t\t\t\tactivePageIndex={ currentStepIndex }\n\t\t\t\tnumberOfPages={ lastStepIndex + 1 }\n\t\t\t\tonChange={ onGoToStep }\n\t\t\t>\n\t\t\t\t{ isFirstStep ? (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<Button isTertiary onClick={ onDismiss( 'no-thanks-btn' ) }>\n\t\t\t\t\t\t\t{ __( 'Skip', __i18n_text_domain__ ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"wpcom-tour-kit-step-card-navigation__next-btn\"\n\t\t\t\t\t\t\tisPrimary\n\t\t\t\t\t\t\tonClick={ onNextStep }\n\t\t\t\t\t\t\tref={ setInitialFocusedElement }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Try it out!', __i18n_text_domain__ ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<Button isTertiary onClick={ onPreviousStep }>\n\t\t\t\t\t\t\t{ __( 'Back', __i18n_text_domain__ ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"wpcom-tour-kit-step-card-navigation__next-btn\"\n\t\t\t\t\t\t\tisPrimary\n\t\t\t\t\t\t\tonClick={ onNextStep }\n\t\t\t\t\t\t\tref={ setInitialFocusedElement }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Next', __i18n_text_domain__ ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</PaginationControl>\n\t\t</>\n\t);\n};\n\nexport default WpcomTourKitStepCardNavigation;\n","import { Button, Flex } from '@wordpress/components';\nimport { close } from '@wordpress/icons';\nimport { useI18n } from '@wordpress/react-i18n';\nimport minimize from '../icons/minimize';\nimport type { TourStepRendererProps } from '../../../types';\n\ninterface Props {\n\tonMinimize: TourStepRendererProps[ 'onMinimize' ];\n\tonDismiss: TourStepRendererProps[ 'onDismiss' ];\n}\n\nconst WpcomTourKitStepCardOverlayControls: React.FunctionComponent< Props > = ( {\n\tonMinimize,\n\tonDismiss,\n} ) => {\n\tconst { __ } = useI18n();\n\n\treturn (\n\t\t<div className=\"wpcom-tour-kit-step-card-overlay-controls\">\n\t\t\t<Flex>\n\t\t\t\t<Button\n\t\t\t\t\tlabel={ __( 'Minimize Tour', __i18n_text_domain__ ) }\n\t\t\t\t\tisPrimary\n\t\t\t\t\tclassName=\"wpcom-tour-kit-step-card-overlay-controls__minimize-icon\"\n\t\t\t\t\ticon={ minimize }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\tonClick={ onMinimize }\n\t\t\t\t></Button>\n\t\t\t\t<Button\n\t\t\t\t\tlabel={ __( 'Close Tour', __i18n_text_domain__ ) }\n\t\t\t\t\tisPrimary\n\t\t\t\t\ticon={ close }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\tonClick={ onDismiss( 'close-btn' ) }\n\t\t\t\t></Button>\n\t\t\t</Flex>\n\t\t</div>\n\t);\n};\n\nexport default WpcomTourKitStepCardOverlayControls;\n","import { getMediaQueryList, isMobile, MOBILE_BREAKPOINT } from '@automattic/viewport';\nimport { Button, Card, CardBody, CardFooter, CardMedia } from '@wordpress/components';\nimport { useI18n } from '@wordpress/react-i18n';\nimport WpcomTourKitRating from './wpcom-tour-kit-rating';\nimport WpcomTourKitStepCardNavigation from './wpcom-tour-kit-step-card-navigation';\nimport WpcomTourKitStepCardOverlayControls from './wpcom-tour-kit-step-card-overlay-controls';\nimport type { WpcomTourStepRendererProps } from '../../../types';\n\nconst WpcomTourKitStepCard: React.FunctionComponent< WpcomTourStepRendererProps > = ( {\n\tsteps,\n\tcurrentStepIndex,\n\tonMinimize,\n\tonDismiss,\n\tonGoToStep,\n\tonNextStep,\n\tonPreviousStep,\n\tsetInitialFocusedElement,\n} ) => {\n\tconst { __ } = useI18n();\n\tconst lastStepIndex = steps.length - 1;\n\tconst { descriptions, heading, imgSrc } = steps[ currentStepIndex ].meta;\n\tconst isLastStep = currentStepIndex === lastStepIndex;\n\n\tconst description = descriptions[ isMobile() ? 'mobile' : 'desktop' ] ?? descriptions.desktop;\n\n\t// @todo check why the assertion is needed here to pass TS\n\tconst mediaQueryList = getMediaQueryList( MOBILE_BREAKPOINT ) as MediaQueryList | undefined;\n\n\treturn (\n\t\t<Card className=\"wpcom-tour-kit-step-card\" isElevated>\n\t\t\t<WpcomTourKitStepCardOverlayControls onDismiss={ onDismiss } onMinimize={ onMinimize } />\n\t\t\t{ imgSrc && (\n\t\t\t\t<CardMedia className=\"wpcom-tour-kit-step-card__media\">\n\t\t\t\t\t<picture>\n\t\t\t\t\t\t{ imgSrc.mobile && (\n\t\t\t\t\t\t\t<source\n\t\t\t\t\t\t\t\tsrcSet={ imgSrc.mobile.src }\n\t\t\t\t\t\t\t\ttype={ imgSrc.mobile.type }\n\t\t\t\t\t\t\t\tmedia={ mediaQueryList?.media }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<img alt={ __( 'Tour Media', __i18n_text_domain__ ) } src={ imgSrc.desktop?.src } />\n\t\t\t\t\t</picture>\n\t\t\t\t</CardMedia>\n\t\t\t) }\n\t\t\t<CardBody>\n\t\t\t\t<h2 className=\"wpcom-tour-kit-step-card__heading\">{ heading }</h2>\n\t\t\t\t<p className=\"wpcom-tour-kit-step-card__description\">\n\t\t\t\t\t{ description }\n\t\t\t\t\t{ isLastStep ? (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"wpcom-tour-kit-step-card__description\"\n\t\t\t\t\t\t\tisTertiary\n\t\t\t\t\t\t\tonClick={ () => onGoToStep( 0 ) }\n\t\t\t\t\t\t\tref={ setInitialFocusedElement }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Restart tour', __i18n_text_domain__ ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) : null }\n\t\t\t\t</p>\n\t\t\t</CardBody>\n\t\t\t<CardFooter>\n\t\t\t\t{ isLastStep ? (\n\t\t\t\t\t<WpcomTourKitRating />\n\t\t\t\t) : (\n\t\t\t\t\t<WpcomTourKitStepCardNavigation\n\t\t\t\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\t\t\t\tonDismiss={ onDismiss }\n\t\t\t\t\t\tonGoToStep={ onGoToStep }\n\t\t\t\t\t\tonNextStep={ onNextStep }\n\t\t\t\t\t\tonPreviousStep={ onPreviousStep }\n\t\t\t\t\t\tsetInitialFocusedElement={ setInitialFocusedElement }\n\t\t\t\t\t\tsteps={ steps }\n\t\t\t\t\t></WpcomTourKitStepCardNavigation>\n\t\t\t\t) }\n\t\t\t</CardFooter>\n\t\t</Card>\n\t);\n};\n\nexport default WpcomTourKitStepCard;\n","import WpcomTourKitStepCard from './wpcom-tour-kit-step-card';\nimport type { WpcomTourStepRendererProps } from '../../../types';\n\nconst WpcomTourKitStep: React.FunctionComponent< WpcomTourStepRendererProps > = ( {\n\tsteps,\n\tcurrentStepIndex,\n\tonDismiss,\n\tonNextStep,\n\tonPreviousStep,\n\tonMinimize,\n\tsetInitialFocusedElement,\n\tonGoToStep,\n} ) => {\n\treturn (\n\t\t<WpcomTourKitStepCard\n\t\t\tsteps={ steps }\n\t\t\tcurrentStepIndex={ currentStepIndex }\n\t\t\tonDismiss={ onDismiss }\n\t\t\tonMinimize={ onMinimize }\n\t\t\tonGoToStep={ onGoToStep }\n\t\t\tonNextStep={ onNextStep }\n\t\t\tonPreviousStep={ onPreviousStep }\n\t\t\tsetInitialFocusedElement={ setInitialFocusedElement }\n\t\t/>\n\t);\n};\n\nexport default WpcomTourKitStep;\n","import TourKit from '../../../components/tour-kit';\nimport usePrefetchTourAssets from '../hooks/use-prefetch-tour-assets';\nimport WpcomTourKitMinimized from './wpcom-tour-kit-minimized';\nimport WpcomTourKitStep from './wpcom-tour-kit-step';\nimport '../styles.scss';\nimport type { WpcomConfig, TourStepRenderer } from '../../../types';\n\ninterface Props {\n\tconfig: WpcomConfig;\n}\n\nconst WpcomTourKit: React.FunctionComponent< Props > = ( { config } ) => {\n\tusePrefetchTourAssets( config.steps );\n\n\treturn (\n\t\t<TourKit\n\t\t\t__temp__className={ 'wpcom-tour-kit' }\n\t\t\tconfig={ {\n\t\t\t\t...config,\n\t\t\t\trenderers: {\n\t\t\t\t\ttourStep: WpcomTourKitStep as TourStepRenderer,\n\t\t\t\t\ttourMinimized: WpcomTourKitMinimized,\n\t\t\t\t},\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nexport default WpcomTourKit;\n","import { useEffect } from '@wordpress/element';\nimport type { WpcomStep } from '../../../types';\n\nexport default function usePrefetchTourAssets( steps: WpcomStep[] ): void {\n\tuseEffect( () => {\n\t\tsteps.forEach( ( step ) => {\n\t\t\tstep.meta.imgSrc?.mobile && ( new window.Image().src = step.meta.imgSrc.mobile.src );\n\t\t\tstep.meta.imgSrc?.desktop && ( new window.Image().src = step.meta.imgSrc.desktop.src );\n\t\t} );\n\t}, [ steps ] );\n}\n","import { SVG, Path } from '@wordpress/primitives';\n\nconst minimize = (\n\t<SVG width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M14.086 5.412l3.476-.015c-.627.625-1.225 1.22-1.82 1.81l-.03.031c-.977.971-1.944 1.934-3.015 3.004l1.06 1.061c1.07-1.07 2.036-2.03 3.013-3.002l.03-.03 1.817-1.808-.03 3.448 1.5.013.046-5.28.007-.759-.76.003-5.301.024.007 1.5zM9.914 18.587l-3.476.016c.627-.625 1.225-1.22 1.82-1.81l.03-.031c.977-.971 1.944-1.934 3.015-3.004l-1.06-1.061c-1.07 1.069-2.036 2.03-3.012 3.001l-.001.001-.03.03-1.817 1.808.03-3.448-1.5-.013-.046 5.279-.007.76.76-.003 5.301-.024-.007-1.5z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default minimize;\n","import { SVG, Path } from '@wordpress/primitives';\n\nconst minimize = (\n\t<SVG width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M18.514 9.988l-3.476.016c.627-.626 1.225-1.22 1.82-1.811l.03-.03v-.001c.977-.971 1.944-1.933 3.015-3.004l-1.06-1.06c-1.07 1.069-2.037 2.03-3.013 3.001l-.03.03-1.818 1.809.03-3.449-1.5-.013-.045 5.28-.007.76.76-.004 5.301-.024-.007-1.5zM5.486 14.012l3.477-.016-1.82 1.811-.03.03c-.977.972-1.945 1.934-3.015 3.005l1.06 1.06c1.07-1.068 2.035-2.03 3.012-3V16.9l.03-.03 1.818-1.809-.03 3.449 1.5.013.046-5.28.006-.76-.76.004-5.3.024.006 1.5z\"\n\t\t\tfill=\"#fff\"\n\t\t/>\n\t</SVG>\n);\n\nexport default minimize;\n","import { SVG, Path } from '@wordpress/primitives';\n\nconst thumbsDown = (\n\t<SVG width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M13.131 19.12a.667.667 0 001.227-.417l-.436-4.989h3.88c.954 0 1.64-.916 1.37-1.831L17.42 5.919a.286.286 0 00-.274-.205H9.429v7.588l3.702 5.818zm-5.417-5.977V5.714h-2v7.429h2zm5.98 8a2.381 2.381 0 01-2.01-1.103l-3.297-5.183H4V4h13.145a2 2 0 011.919 1.436l1.753 5.963a3.143 3.143 0 01-3.015 4.03h-2.01l.274 3.125a2.381 2.381 0 01-2.372 2.589z\"\n\t\t\tfill=\"#000\"\n\t\t/>\n\t</SVG>\n);\n\nexport default thumbsDown;\n","import { SVG, Path } from '@wordpress/primitives';\n\nconst thumbsUp = (\n\t<SVG width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/SVG\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M13.131 4.023a.667.667 0 011.227.416l-.436 4.99h3.88c.954 0 1.64.916 1.37 1.831l-1.753 5.963a.286.286 0 01-.274.206H9.429V9.84l3.702-5.818zM7.714 10v7.428h-2V10h2zm5.98-8c-.814 0-1.572.416-2.01 1.103L8.388 8.286H4v10.857h13.145a2 2 0 001.919-1.436l1.753-5.963a3.143 3.143 0 00-3.015-4.03h-2.01l.274-3.125A2.381 2.381 0 0013.694 2z\"\n\t\t\tfill=\"#000\"\n\t\t/>\n\t</SVG>\n);\n\nexport default thumbsUp;\n","import {\n\tisWithinBreakpoint,\n\tsubscribeIsWithinBreakpoint,\n\tMOBILE_BREAKPOINT,\n\tDESKTOP_BREAKPOINT,\n} from '@automattic/viewport';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { forwardRef, useState, useEffect } from 'react';\n\n/**\n * React hook for getting the status for a breakpoint and keeping it updated.\n *\n * @param {string} breakpoint The breakpoint to consider.\n * @returns {boolean} The current status for the breakpoint.\n */\nexport function useBreakpoint( breakpoint ) {\n\tconst [ state, setState ] = useState( () => ( {\n\t\tisActive: isWithinBreakpoint( breakpoint ),\n\t\tbreakpoint,\n\t} ) );\n\n\tuseEffect( () => {\n\t\tfunction handleBreakpointChange( isActive ) {\n\t\t\tsetState( ( prevState ) => {\n\t\t\t\t// Ensure we bail out without rendering if nothing changes, by preserving state.\n\t\t\t\tif ( prevState.isActive === isActive && prevState.breakpoint === breakpoint ) {\n\t\t\t\t\treturn prevState;\n\t\t\t\t}\n\t\t\t\treturn { isActive, breakpoint };\n\t\t\t} );\n\t\t}\n\n\t\tconst unsubscribe = subscribeIsWithinBreakpoint( breakpoint, handleBreakpointChange );\n\t\t// The unsubscribe function is the entire cleanup for the effect.\n\t\treturn unsubscribe;\n\t}, [ breakpoint ] );\n\n\treturn breakpoint === state.breakpoint ? state.isActive : isWithinBreakpoint( breakpoint );\n}\n\n/**\n * React hook for getting the status for the mobile breakpoint and keeping it\n * updated.\n *\n * @returns {boolean} The current status for the breakpoint.\n */\nexport function useMobileBreakpoint() {\n\treturn useBreakpoint( MOBILE_BREAKPOINT );\n}\n\n/**\n * React hook for getting the status for the desktop breakpoint and keeping it\n * updated.\n *\n * @returns {boolean} The current status for the breakpoint.\n */\nexport function useDesktopBreakpoint() {\n\treturn useBreakpoint( DESKTOP_BREAKPOINT );\n}\n\n/**\n * React higher order component for getting the status for a breakpoint and\n * keeping it updated.\n *\n * @param {string} breakpoint The breakpoint to consider.\n * @returns {Function} A function that given a component returns the\n * wrapped component.\n */\nexport const withBreakpoint = ( breakpoint ) =>\n\tcreateHigherOrderComponent(\n\t\t( WrappedComponent ) =>\n\t\t\tforwardRef( ( props, ref ) => {\n\t\t\t\tconst isActive = useBreakpoint( breakpoint );\n\t\t\t\treturn <WrappedComponent { ...props } isBreakpointActive={ isActive } ref={ ref } />;\n\t\t\t} ),\n\t\t'WithBreakpoint'\n\t);\n\n/**\n * React higher order component for getting the status for the mobile\n * breakpoint and keeping it updated.\n *\n * @param {import('react').Component|Function} Wrapped The component to wrap.\n * @returns {Function} The wrapped component.\n */\nexport const withMobileBreakpoint = createHigherOrderComponent(\n\t( WrappedComponent ) =>\n\t\tforwardRef( ( props, ref ) => {\n\t\t\tconst isActive = useBreakpoint( MOBILE_BREAKPOINT );\n\t\t\treturn <WrappedComponent { ...props } isBreakpointActive={ isActive } ref={ ref } />;\n\t\t} ),\n\t'WithMobileBreakpoint'\n);\n\n/**\n * React higher order component for getting the status for the desktop\n * breakpoint and keeping it updated.\n *\n * @param {import('react').Component|Function} Wrapped The component to wrap.\n * @returns {Function} The wrapped component.\n */\nexport const withDesktopBreakpoint = createHigherOrderComponent(\n\t( WrappedComponent ) =>\n\t\tforwardRef( ( props, ref ) => {\n\t\t\tconst isActive = useBreakpoint( DESKTOP_BREAKPOINT );\n\t\t\treturn <WrappedComponent { ...props } isBreakpointActive={ isActive } ref={ ref } />;\n\t\t} ),\n\t'WithDesktopBreakpoint'\n);\n","// Determine whether a user is viewing calypso from a device within a\n// particular mobile-first responsive breakpoint, matching our existing media\n// queries. [1]\n//\n// This function takes a string matching one of our mobile-first breakpoints\n// and returns a boolean based on whether the current `window.innerWidth`\n// matches. This is used to segment behavior based on device or browser size,\n// but should not be used in place of css for design.\n//\n// Valid breakpoints include:\n// - '<480px'\n// - '<660px'\n// - '<800px'\n// - '<960px'\n// - '<1040px'\n// - '<1280px'\n// - '<1400px'\n// - '>480px'\n// - '>660px'\n// - '>800px'\n// - '>960px'\n// - '>1040px'\n// - '>1280px'\n// - '>1400px'\n// - '480px-660px'\n// - '480px-960px'\n// - '660px-960px'\n//\n// As implemented in our sass media query mixins, minimums are exclusive, while\n// maximums are inclusive. i.e.,\n//\n// - '>480px' is equivalent to `@media (min-width: 481px)`\n// - '<960px' is equivalent to `@media (max-width: 960px)`\n// - '480px-960px' is equivalent to `@media (max-width: 960px) and (min-width: 481px)`\n//\n// [1] https://github.com/Automattic/wp-calypso/blob/HEAD/docs/coding-guidelines/css.md#media-queries\n//\n\n// FIXME: We can't detect window size on the server, so until we have more intelligent detection,\n// use 769, which is just above the general maximum mobile screen width.\nconst SERVER_WIDTH = 769;\n\nexport const MOBILE_BREAKPOINT = '<480px';\nexport const DESKTOP_BREAKPOINT = '>960px';\n\nconst isServer = typeof window === 'undefined' || ! window.matchMedia;\n\nconst noop = () => null;\n\nexport type QueryItem = false | MinimalMediaQueryList | MediaQueryList;\nexport type ListenerCallback = ( matches: boolean ) => void;\nexport type UnsubcribeCallback = () => void;\nexport type MinimalMediaQueryList = {\n\tmatches: boolean;\n\taddListener: MediaQueryList[ 'addListener' ];\n\tremoveListener: MediaQueryList[ 'removeListener' ];\n};\n\nfunction addListenerFunctions(\n\tobj: Pick< MinimalMediaQueryList, 'matches' >\n): MinimalMediaQueryList {\n\treturn {\n\t\taddListener: () => undefined,\n\t\tremoveListener: () => undefined,\n\t\t...obj,\n\t};\n}\n\nfunction createMediaQueryList( args?: { min?: number; max?: number } ): QueryItem {\n\tconst { min, max } = args ?? {};\n\tif ( min !== undefined && max !== undefined ) {\n\t\treturn isServer\n\t\t\t? addListenerFunctions( { matches: SERVER_WIDTH > min && SERVER_WIDTH <= max } )\n\t\t\t: window.matchMedia( `(min-width: ${ min + 1 }px) and (max-width: ${ max }px)` );\n\t}\n\n\tif ( min !== undefined ) {\n\t\treturn isServer\n\t\t\t? addListenerFunctions( { matches: SERVER_WIDTH > min } )\n\t\t\t: window.matchMedia( `(min-width: ${ min + 1 }px)` );\n\t}\n\n\tif ( max !== undefined ) {\n\t\treturn isServer\n\t\t\t? addListenerFunctions( { matches: SERVER_WIDTH <= max } )\n\t\t\t: window.matchMedia( `(max-width: ${ max }px)` );\n\t}\n\n\treturn false;\n}\n\nconst mediaQueryLists: Record< string, QueryItem > = {\n\t'<480px': createMediaQueryList( { max: 480 } ),\n\t'<660px': createMediaQueryList( { max: 660 } ),\n\t'<782px': createMediaQueryList( { max: 782 } ),\n\t'<800px': createMediaQueryList( { max: 800 } ),\n\t'<960px': createMediaQueryList( { max: 960 } ),\n\t'<1040px': createMediaQueryList( { max: 1040 } ),\n\t'<1280px': createMediaQueryList( { max: 1280 } ),\n\t'<1400px': createMediaQueryList( { max: 1400 } ),\n\t'>480px': createMediaQueryList( { min: 480 } ),\n\t'>660px': createMediaQueryList( { min: 660 } ),\n\t'>782px': createMediaQueryList( { min: 782 } ),\n\t'>800px': createMediaQueryList( { min: 800 } ),\n\t'>960px': createMediaQueryList( { min: 960 } ),\n\t'>1040px': createMediaQueryList( { min: 1040 } ),\n\t'>1280px': createMediaQueryList( { min: 1280 } ),\n\t'>1400px': createMediaQueryList( { min: 1400 } ),\n\t'480px-660px': createMediaQueryList( { min: 480, max: 660 } ),\n\t'660px-960px': createMediaQueryList( { min: 660, max: 960 } ),\n\t'480px-960px': createMediaQueryList( { min: 480, max: 960 } ),\n};\n\nexport function getMediaQueryList( breakpoint: string ): undefined | QueryItem {\n\tif ( ! mediaQueryLists.hasOwnProperty( breakpoint ) ) {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn( 'Undefined breakpoint used in `mobile-first-breakpoint`', breakpoint );\n\t\t} catch ( e ) {}\n\t\treturn undefined;\n\t}\n\n\treturn mediaQueryLists[ breakpoint ];\n}\n\n/**\n * Returns whether the current window width matches a breakpoint.\n *\n * @param {string} breakpoint The breakpoint to consider.\n * @returns {boolean|undefined} Whether the provided breakpoint is matched.\n */\nexport function isWithinBreakpoint( breakpoint: string ): boolean | undefined {\n\tconst mediaQueryList = getMediaQueryList( breakpoint );\n\treturn mediaQueryList ? mediaQueryList.matches : undefined;\n}\n\n/**\n * Registers a listener to be notified of changes to breakpoint matching status.\n *\n * @param {string} breakpoint The breakpoint to consider.\n * @param {Function} listener The listener to be called on change.\n * @returns {Function} The function to be called when unsubscribing.\n */\nexport function subscribeIsWithinBreakpoint(\n\tbreakpoint: string,\n\tlistener: ListenerCallback\n): UnsubcribeCallback {\n\tif ( ! listener ) {\n\t\treturn noop;\n\t}\n\n\tconst mediaQueryList = getMediaQueryList( breakpoint );\n\n\tif ( mediaQueryList && ! isServer ) {\n\t\tconst wrappedListener = ( evt: { matches: boolean } ) => listener( evt.matches );\n\t\tmediaQueryList.addListener( wrappedListener );\n\t\t// Return unsubscribe function.\n\t\treturn () => mediaQueryList.removeListener( wrappedListener );\n\t}\n\n\treturn noop;\n}\n\n/**\n * Returns whether the current window width matches the mobile breakpoint.\n *\n * @returns {boolean|undefined} Whether the mobile breakpoint is matched.\n */\nexport function isMobile(): boolean | undefined {\n\treturn isWithinBreakpoint( MOBILE_BREAKPOINT );\n}\n\n/**\n * Registers a listener to be notified of changes to mobile breakpoint matching status.\n *\n * @param {Function} listener The listener to be called on change.\n * @returns {Function} The registered subscription; undefined if none.\n */\nexport function subscribeIsMobile( listener: ListenerCallback ): UnsubcribeCallback {\n\treturn subscribeIsWithinBreakpoint( MOBILE_BREAKPOINT, listener );\n}\n\n/**\n * Returns whether the current window width matches the desktop breakpoint.\n *\n * @returns {boolean|undefined} Whether the desktop breakpoint is matched.\n */\nexport function isDesktop(): boolean | undefined {\n\treturn isWithinBreakpoint( DESKTOP_BREAKPOINT );\n}\n\n/**\n * Registers a listener to be notified of changes to desktop breakpoint matching status.\n *\n * @param {Function} listener The listener to be called on change.\n * @returns {Function} The registered subscription; undefined if none.\n */\nexport function subscribeIsDesktop( listener: ListenerCallback ): UnsubcribeCallback {\n\treturn subscribeIsWithinBreakpoint( DESKTOP_BREAKPOINT, listener );\n}\n\n/**\n * Returns the current window width.\n * Avoid using this method, as it triggers a layout recalc.\n *\n * @returns {number} The current window width, in pixels.\n */\nexport function getWindowInnerWidth(): number {\n\treturn isServer ? SERVER_WIDTH : window.innerWidth;\n}\n\n/******************************************/\n/* Vertical Scroll Experiment */\n/* \t pcbrnV-XN-p2 */\n/******************************************/\n\n//TODO: To be refactored using above using the DESKTOP_BREAKPOINT constant\nexport function isTabletResolution(): boolean {\n\tif ( ! isServer ) {\n\t\treturn window.innerWidth < 1040;\n\t}\n\treturn false;\n}\n\nexport const DEVICE_MOBILE = 'mobile';\nexport const DEVICE_TABLET = 'tablet';\nexport const DEVICE_DESKTOP = 'desktop';\n\nexport function resolveDeviceTypeByViewPort(): string {\n\tif ( isMobile() ) {\n\t\treturn DEVICE_MOBILE;\n\t} else if ( isTabletResolution() ) {\n\t\treturn DEVICE_TABLET;\n\t}\n\treturn DEVICE_DESKTOP;\n}\n\n/******************************************/\n","import debugFactory from 'debug';\nimport ProgressEvent from 'progress-event';\nimport { v4 as uuidv4 } from 'uuid';\nimport WPError from 'wp-error';\n\n/**\n * debug instance\n */\nconst debug = debugFactory( 'wpcom-proxy-request' );\n\n/**\n * WordPress.com REST API base endpoint.\n */\nconst proxyOrigin = 'https://public-api.wordpress.com';\n\n/**\n * \"Origin\" of the current HTML page.\n */\nconst origin = window.location.protocol + '//' + window.location.host;\n\nlet onStreamRecord = null;\n\n/**\n * Detecting support for the structured clone algorithm. IE8 and 9, and Firefox\n * 6.0 and below only support strings as postMessage's message. This browsers\n * will try to use the toString method.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage\n * https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/The_structured_clone_algorithm\n * https://github.com/Modernizr/Modernizr/issues/388#issuecomment-31127462\n */\nconst postStrings = ( () => {\n\tlet r = false;\n\ttry {\n\t\twindow.postMessage(\n\t\t\t{\n\t\t\t\ttoString: function () {\n\t\t\t\t\tr = true;\n\t\t\t\t},\n\t\t\t},\n\t\t\t'*'\n\t\t);\n\t} catch ( e ) {\n\t\t/* empty */\n\t}\n\treturn r;\n} )();\n\n/**\n * Test if the browser supports constructing a new `File` object. Not present on Edge and IE.\n */\nconst supportsFileConstructor = ( () => {\n\ttry {\n\t\t// eslint-disable-next-line no-new\n\t\tnew window.File( [ 'a' ], 'test.jpg', { type: 'image/jpeg' } );\n\t\treturn true;\n\t} catch ( e ) {\n\t\treturn false;\n\t}\n} )();\n\n/**\n * Reference to the <iframe> DOM element.\n * Gets set in the install() function.\n */\nlet iframe = null;\n\n/**\n * Set to `true` upon the iframe's \"load\" event.\n */\nlet loaded = false;\n\n/**\n * Array of buffered API requests. Added to when API requests are done before the\n * proxy <iframe> is \"loaded\", and fulfilled once the \"load\" DOM event on the\n * iframe occurs.\n */\nlet buffered;\n\n/**\n * In-flight API request XMLHttpRequest dummy \"proxy\" instances.\n */\nconst requests = {};\n\n/**\n * Are HTML5 XMLHttpRequest2 \"progress\" events supported?\n * See: http://goo.gl/xxYf6D\n */\nconst supportsProgress = !! window.ProgressEvent && !! window.FormData;\n\ndebug( 'using \"origin\": %o', origin );\n\n/**\n * Performs a \"proxied REST API request\". This happens by calling\n * `iframe.postMessage()` on the proxy iframe instance, which from there\n * takes care of WordPress.com user authentication (via the currently\n * logged-in user's cookies).\n *\n * @param {object} originalParams - request parameters\n * @param {Function} [fn] - callback response\n * @returns {window.XMLHttpRequest} XMLHttpRequest instance\n */\nconst makeRequest = ( originalParams, fn ) => {\n\tconst params = Object.assign( {}, originalParams );\n\n\tdebug( 'request(%o)', params );\n\n\t// inject the <iframe> upon the first proxied API request\n\tif ( ! iframe ) {\n\t\tinstall();\n\t}\n\n\t// generate a uuid for this API request\n\tconst id = uuidv4();\n\tparams.callback = id;\n\tparams.supports_args = true; // supports receiving variable amount of arguments\n\tparams.supports_error_obj = true; // better Error object info\n\tparams.supports_progress = supportsProgress; // supports receiving XHR \"progress\" events\n\n\t// force uppercase \"method\" since that's what the <iframe> is expecting\n\tparams.method = String( params.method || 'GET' ).toUpperCase();\n\n\tdebug( 'params object: %o', params );\n\n\tconst xhr = new window.XMLHttpRequest();\n\txhr.params = params;\n\n\t// store the `XMLHttpRequest` instance so that \"onmessage\" can access it again\n\trequests[ id ] = xhr;\n\n\tif ( 'function' === typeof fn ) {\n\t\t// a callback function was provided\n\t\tlet called = false;\n\t\tconst xhrOnLoad = ( e ) => {\n\t\t\tif ( called ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcalled = true;\n\t\t\tconst body = e.response || xhr.response;\n\t\t\tdebug( 'body: ', body );\n\t\t\tdebug( 'headers: ', e.headers );\n\t\t\tfn( null, body, e.headers );\n\t\t};\n\t\tconst xhrOnError = ( e ) => {\n\t\t\tif ( called ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcalled = true;\n\t\t\tconst error = e.error || e.err || e;\n\t\t\tdebug( 'error: ', error );\n\t\t\tdebug( 'headers: ', e.headers );\n\t\t\tfn( error, null, e.headers );\n\t\t};\n\n\t\txhr.addEventListener( 'load', xhrOnLoad );\n\t\txhr.addEventListener( 'abort', xhrOnError );\n\t\txhr.addEventListener( 'error', xhrOnError );\n\t}\n\n\tif ( 'function' === typeof params.onStreamRecord ) {\n\t\t// remove onStreamRecord param, which can’t be cloned\n\t\tonStreamRecord = params.onStreamRecord;\n\t\tdelete params.onStreamRecord;\n\n\t\t// FIXME @azabani implement stream mode processing\n\t\t// Hint: port the algorithm from wpcom-xhr-request@1.2.0 to /public.api/rest-proxy/provider-\n\t\t// v2.0.js in rWP, then plumb stream records from onmessage below to onStreamRecord (or add\n\t\t// the XMLHttpRequest#response to ondownloadprogress there, then parse the chunks here).\n\t}\n\n\tif ( loaded ) {\n\t\tsubmitRequest( params );\n\t} else {\n\t\tdebug( 'buffering API request since proxying <iframe> is not yet loaded' );\n\t\tbuffered.push( params );\n\t}\n\n\treturn xhr;\n};\n\n/**\n * Performs a \"proxied REST API request\". This happens by calling\n * `iframe.postMessage()` on the proxy iframe instance, which from there\n * takes care of WordPress.com user authentication (via the currently\n * logged-in user's cookies).\n *\n * If no function is specified as second parameter, a promise is returned.\n *\n * @param {object} originalParams - request parameters\n * @param {Function} [fn] - callback response\n * @returns {window.XMLHttpRequest|Promise} XMLHttpRequest instance or Promise\n */\nconst request = ( originalParams, fn ) => {\n\t// if callback is provided, behave traditionally\n\tif ( 'function' === typeof fn ) {\n\t\t// request method\n\t\treturn makeRequest( originalParams, fn );\n\t}\n\n\t// but if not, return a Promise\n\treturn new Promise( ( res, rej ) => {\n\t\tmakeRequest( originalParams, ( err, response ) => {\n\t\t\terr ? rej( err ) : res( response );\n\t\t} );\n\t} );\n};\n\n/**\n * Set proxy to \"access all users' blogs\" mode.\n */\nexport function requestAllBlogsAccess() {\n\treturn request( { metaAPI: { accessAllUsersBlogs: true } } );\n}\n\n/**\n * Calls the `postMessage()` function on the <iframe>.\n *\n * @param {object} params\n */\n\nfunction submitRequest( params ) {\n\tdebug( 'sending API request to proxy <iframe> %o', params );\n\n\t// `formData` needs to be patched if it contains `File` objects to work around\n\t// a Chrome bug. See `patchFileObjects` description for more details.\n\tif ( params.formData ) {\n\t\tpatchFileObjects( params.formData );\n\t}\n\n\tiframe.contentWindow.postMessage( postStrings ? JSON.stringify( params ) : params, proxyOrigin );\n}\n\n/**\n * Returns `true` if `v` is a DOM File instance, `false` otherwise.\n *\n * @param {any} v - instance to analyze\n * @returns {boolean} `true` if `v` is a DOM File instance\n */\nfunction isFile( v ) {\n\treturn v && Object.prototype.toString.call( v ) === '[object File]';\n}\n\n/*\n * Find a `File` object in a form data value. It can be either the value itself, or\n * in a `fileContents` property of the value.\n */\nfunction getFileValue( v ) {\n\tif ( isFile( v ) ) {\n\t\treturn v;\n\t}\n\n\tif ( typeof v === 'object' && isFile( v.fileContents ) ) {\n\t\treturn v.fileContents;\n\t}\n\n\treturn null;\n}\n\n/**\n * Finds all `File` instances in `formData` and creates a new `File` instance whose storage is\n * forced to be a `Blob` instead of being backed by a file on disk. That works around a bug in\n * Chrome where `File` instances with `has_backing_file` flag cannot be sent over a process\n * boundary when site isolation is on.\n *\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=866805\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=631877\n * @param {Array} formData Form data to patch\n */\nfunction patchFileObjects( formData ) {\n\t// There are several landmines to avoid when making file uploads work on all browsers:\n\t// - the `new File()` constructor trick breaks file uploads on Safari 10 in a way that's\n\t// impossible to detect: it will send empty files in the multipart/form-data body.\n\t// Therefore we need to detect Chrome.\n\t// - IE11 and Edge don't support the `new File()` constructor at all. It will throw exception,\n\t// so it's detectable by the `supportsFileConstructor` code.\n\t// - `window.chrome` exists also on Edge (!), `window.chrome.webstore` is only in Chrome and\n\t// not in other Chromium based browsers (which have the site isolation bug, too).\n\tif ( ! window.chrome || ! supportsFileConstructor ) {\n\t\treturn;\n\t}\n\n\tfor ( let i = 0; i < formData.length; i++ ) {\n\t\tconst val = getFileValue( formData[ i ][ 1 ] );\n\t\tif ( val ) {\n\t\t\tformData[ i ][ 1 ] = new window.File( [ val ], val.name, { type: val.type } );\n\t\t}\n\t}\n}\n\n/**\n * Injects the proxy <iframe> instance in the <body> of the current\n * HTML page.\n */\n\nfunction install() {\n\tdebug( 'install()' );\n\tif ( iframe ) {\n\t\tuninstall();\n\t}\n\n\tbuffered = [];\n\n\t// listen to messages sent to `window`\n\twindow.addEventListener( 'message', onmessage );\n\n\t// create the <iframe>\n\tiframe = document.createElement( 'iframe' );\n\n\t// set `src` and hide the iframe\n\tiframe.src = proxyOrigin + '/wp-admin/rest-proxy/?v=2.0#' + origin;\n\tiframe.style.display = 'none';\n\n\t// inject the <iframe> into the <body>\n\tdocument.body.appendChild( iframe );\n}\n\n/**\n * Reloads the proxy iframe.\n */\nconst reloadProxy = () => {\n\tinstall();\n};\n\n/**\n * Removes the <iframe> proxy instance from the <body> of the page.\n */\nfunction uninstall() {\n\tdebug( 'uninstall()' );\n\twindow.removeEventListener( 'message', onmessage );\n\tdocument.body.removeChild( iframe );\n\tloaded = false;\n\tiframe = null;\n}\n\n/**\n * The proxy <iframe> instance's \"load\" event callback function.\n */\n\nfunction onload() {\n\tdebug( 'proxy <iframe> \"load\" event' );\n\tloaded = true;\n\n\t// flush any buffered API calls\n\tif ( buffered ) {\n\t\tfor ( let i = 0; i < buffered.length; i++ ) {\n\t\t\tsubmitRequest( buffered[ i ] );\n\t\t}\n\t\tbuffered = null;\n\t}\n}\n\n/**\n * The main `window` object's \"message\" event callback function.\n *\n * @param {window.Event} e\n */\n\nfunction onmessage( e ) {\n\tdebug( 'onmessage' );\n\n\t// Filter out messages from different origins\n\tif ( e.origin !== proxyOrigin ) {\n\t\tdebug( 'ignoring message... %o !== %o', e.origin, proxyOrigin );\n\t\treturn;\n\t}\n\n\t// Filter out messages from different iframes\n\tif ( e.source !== iframe.contentWindow ) {\n\t\tdebug( 'ignoring message... iframe elements do not match' );\n\t\treturn;\n\t}\n\n\tlet { data } = e;\n\tif ( ! data ) {\n\t\treturn debug( 'no `data`, bailing' );\n\t}\n\n\t// Once the iframe is loaded, we can start using it.\n\tif ( data === 'ready' ) {\n\t\tonload();\n\t\treturn;\n\t}\n\n\tif ( postStrings && 'string' === typeof data ) {\n\t\tdata = JSON.parse( data );\n\t}\n\n\t// check if we're receiving a \"progress\" event\n\tif ( data.upload || data.download ) {\n\t\treturn onprogress( data );\n\t}\n\n\tif ( ! data.length ) {\n\t\treturn debug( \"`e.data` doesn't appear to be an Array, bailing...\" );\n\t}\n\n\t// first get the `xhr` instance that we're interested in\n\tconst id = data[ data.length - 1 ];\n\tif ( ! ( id in requests ) ) {\n\t\treturn debug( 'bailing, no matching request with callback: %o', id );\n\t}\n\n\tconst xhr = requests[ id ];\n\n\t// Build `error` and `body` object from the `data` object\n\tconst { params } = xhr;\n\n\tconst body = data[ 0 ];\n\tlet statusCode = data[ 1 ];\n\tconst headers = data[ 2 ];\n\n\t// We don't want to delete requests while we're processing stream messages\n\tif ( statusCode === 207 ) {\n\t\t// 207 is a signal from rest-proxy. It means, \"this isn't the final\n\t\t// response to the query.\" The proxy supports WebSocket connections\n\t\t// by invoking the original success callback for each message received.\n\t} else {\n\t\t// this is the final response to this query\n\t\tdelete requests[ id ];\n\t}\n\n\tif ( ! params.metaAPI ) {\n\t\tdebug( 'got %o status code for URL: %o', statusCode, params.path );\n\t} else {\n\t\tstatusCode = body === 'metaAPIupdated' ? 200 : 500;\n\t}\n\n\tif ( typeof headers === 'object' ) {\n\t\t// add statusCode into headers object\n\t\theaders.status = statusCode;\n\n\t\tif ( shouldProcessInStreamMode( headers[ 'Content-Type' ] ) ) {\n\t\t\tif ( statusCode === 207 ) {\n\t\t\t\tonStreamRecord( body );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( statusCode && 2 === Math.floor( statusCode / 100 ) ) {\n\t\t// 2xx status code, success\n\t\tresolve( xhr, body, headers );\n\t} else {\n\t\t// any other status code is a failure\n\t\tconst wpe = WPError( params, statusCode, body );\n\t\treject( xhr, wpe, headers );\n\t}\n}\n\n/**\n * Returns true iff stream mode processing is required (see wpcom-xhr-request@1.2.0).\n *\n * @param {string} contentType response Content-Type header value\n */\nfunction shouldProcessInStreamMode( contentType ) {\n\treturn /^application[/]x-ndjson($|;)/.test( contentType );\n}\n\n/**\n * Handles a \"progress\" event being proxied back from the iframe page.\n *\n * @param {object} data\n */\n\nfunction onprogress( data ) {\n\tdebug( 'got \"progress\" event: %o', data );\n\tconst xhr = requests[ data.callbackId ];\n\tif ( xhr ) {\n\t\tconst prog = new ProgressEvent( 'progress', data );\n\t\tconst target = data.upload ? xhr.upload : xhr;\n\t\ttarget.dispatchEvent( prog );\n\t}\n}\n\n/**\n * Emits the \"load\" event on the `xhr`.\n *\n * @param {window.XMLHttpRequest} xhr\n * @param {object} body\n */\n\nfunction resolve( xhr, body, headers ) {\n\tconst e = new ProgressEvent( 'load' );\n\te.data = e.body = e.response = body;\n\te.headers = headers;\n\txhr.dispatchEvent( e );\n}\n\n/**\n * Emits the \"error\" event on the `xhr`.\n *\n * @param {window.XMLHttpRequest} xhr\n * @param {Error} err\n */\n\nfunction reject( xhr, err, headers ) {\n\tconst e = new ProgressEvent( 'error' );\n\te.error = e.err = err;\n\te.headers = headers;\n\txhr.dispatchEvent( e );\n}\n\n/**\n * Export `request` function.\n */\nexport default request;\nexport { reloadProxy };\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n