wp/wp-includes/js/dist/edit-site.js
changeset 21 48c4eec2b7e6
parent 19 3d72ae0968f4
child 22 8c2e4d02f4ef
--- a/wp/wp-includes/js/dist/edit-site.js	Thu Sep 29 08:06:27 2022 +0200
+++ b/wp/wp-includes/js/dist/edit-site.js	Fri Sep 05 18:40:08 2025 +0200
@@ -1,927 +1,7275 @@
-/******/ (function() { // webpackBootstrap
+/******/ (() => { // webpackBootstrap
 /******/ 	var __webpack_modules__ = ({
 
-/***/ 6411:
-/***/ (function(module, exports) {
-
-var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
-	autosize 4.0.4
-	license: MIT
-	http://www.jacklmoore.com/autosize
-*/
-(function (global, factory) {
-	if (true) {
-		!(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
-		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
-		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
-		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
-	} else { var mod; }
-})(this, function (module, exports) {
-	'use strict';
-
-	var map = typeof Map === "function" ? new Map() : function () {
-		var keys = [];
-		var values = [];
-
-		return {
-			has: function has(key) {
-				return keys.indexOf(key) > -1;
-			},
-			get: function get(key) {
-				return values[keys.indexOf(key)];
-			},
-			set: function set(key, value) {
-				if (keys.indexOf(key) === -1) {
-					keys.push(key);
-					values.push(value);
-				}
-			},
-			delete: function _delete(key) {
-				var index = keys.indexOf(key);
-				if (index > -1) {
-					keys.splice(index, 1);
-					values.splice(index, 1);
+/***/ 4660:
+/***/ ((module) => {
+
+/* eslint eslint-comments/no-unlimited-disable: 0 */
+/* eslint-disable */
+/* pako 1.0.10 nodeca/pako */ ( function ( f ) {
+	if ( true ) {
+		module.exports = f();
+	} else { var g; }
+} )( function () {
+	var define, module, exports;
+	return ( function () {
+		function r( e, n, t ) {
+			function o( i, f ) {
+				if ( ! n[ i ] ) {
+					if ( ! e[ i ] ) {
+						var c = undefined;
+						if ( ! f && c ) return require( i, ! 0 );
+						if ( u ) return u( i, ! 0 );
+						var a = new Error( "Cannot find module '" + i + "'" );
+						throw ( ( a.code = 'MODULE_NOT_FOUND' ), a );
+					}
+					var p = ( n[ i ] = { exports: {} } );
+					e[ i ][ 0 ].call(
+						p.exports,
+						function ( r ) {
+							var n = e[ i ][ 1 ][ r ];
+							return o( n || r );
+						},
+						p,
+						p.exports,
+						r,
+						e,
+						n,
+						t
+					);
 				}
-			}
-		};
-	}();
-
-	var createEvent = function createEvent(name) {
-		return new Event(name, { bubbles: true });
-	};
-	try {
-		new Event('test');
-	} catch (e) {
-		// IE does not support `new Event()`
-		createEvent = function createEvent(name) {
-			var evt = document.createEvent('Event');
-			evt.initEvent(name, true, false);
-			return evt;
-		};
-	}
-
-	function assign(ta) {
-		if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
-
-		var heightOffset = null;
-		var clientWidth = null;
-		var cachedHeight = null;
-
-		function init() {
-			var style = window.getComputedStyle(ta, null);
-
-			if (style.resize === 'vertical') {
-				ta.style.resize = 'none';
-			} else if (style.resize === 'both') {
-				ta.style.resize = 'horizontal';
-			}
-
-			if (style.boxSizing === 'content-box') {
-				heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
-			} else {
-				heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
-			}
-			// Fix when a textarea is not on document body and heightOffset is Not a Number
-			if (isNaN(heightOffset)) {
-				heightOffset = 0;
-			}
-
-			update();
-		}
-
-		function changeOverflow(value) {
-			{
-				// Chrome/Safari-specific fix:
-				// When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
-				// made available by removing the scrollbar. The following forces the necessary text reflow.
-				var width = ta.style.width;
-				ta.style.width = '0px';
-				// Force reflow:
-				/* jshint ignore:start */
-				ta.offsetWidth;
-				/* jshint ignore:end */
-				ta.style.width = width;
-			}
-
-			ta.style.overflowY = value;
-		}
-
-		function getParentOverflows(el) {
-			var arr = [];
-
-			while (el && el.parentNode && el.parentNode instanceof Element) {
-				if (el.parentNode.scrollTop) {
-					arr.push({
-						node: el.parentNode,
-						scrollTop: el.parentNode.scrollTop
-					});
-				}
-				el = el.parentNode;
-			}
-
-			return arr;
-		}
-
-		function resize() {
-			if (ta.scrollHeight === 0) {
-				// If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
-				return;
-			}
-
-			var overflows = getParentOverflows(ta);
-			var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
-
-			ta.style.height = '';
-			ta.style.height = ta.scrollHeight + heightOffset + 'px';
-
-			// used to check if an update is actually necessary on window.resize
-			clientWidth = ta.clientWidth;
-
-			// prevents scroll-position jumping
-			overflows.forEach(function (el) {
-				el.node.scrollTop = el.scrollTop;
-			});
-
-			if (docTop) {
-				document.documentElement.scrollTop = docTop;
-			}
-		}
-
-		function update() {
-			resize();
-
-			var styleHeight = Math.round(parseFloat(ta.style.height));
-			var computed = window.getComputedStyle(ta, null);
-
-			// Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
-			var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;
-
-			// The actual height not matching the style height (set via the resize method) indicates that 
-			// the max-height has been exceeded, in which case the overflow should be allowed.
-			if (actualHeight < styleHeight) {
-				if (computed.overflowY === 'hidden') {
-					changeOverflow('scroll');
-					resize();
-					actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
-				}
-			} else {
-				// Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
-				if (computed.overflowY !== 'hidden') {
-					changeOverflow('hidden');
-					resize();
-					actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
-				}
-			}
-
-			if (cachedHeight !== actualHeight) {
-				cachedHeight = actualHeight;
-				var evt = createEvent('autosize:resized');
-				try {
-					ta.dispatchEvent(evt);
-				} catch (err) {
-					// Firefox will throw an error on dispatchEvent for a detached element
-					// https://bugzilla.mozilla.org/show_bug.cgi?id=889376
-				}
-			}
-		}
-
-		var pageResize = function pageResize() {
-			if (ta.clientWidth !== clientWidth) {
-				update();
+				return n[ i ].exports;
 			}
-		};
-
-		var destroy = function (style) {
-			window.removeEventListener('resize', pageResize, false);
-			ta.removeEventListener('input', update, false);
-			ta.removeEventListener('keyup', update, false);
-			ta.removeEventListener('autosize:destroy', destroy, false);
-			ta.removeEventListener('autosize:update', update, false);
-
-			Object.keys(style).forEach(function (key) {
-				ta.style[key] = style[key];
-			});
-
-			map.delete(ta);
-		}.bind(ta, {
-			height: ta.style.height,
-			resize: ta.style.resize,
-			overflowY: ta.style.overflowY,
-			overflowX: ta.style.overflowX,
-			wordWrap: ta.style.wordWrap
-		});
-
-		ta.addEventListener('autosize:destroy', destroy, false);
-
-		// IE9 does not fire onpropertychange or oninput for deletions,
-		// so binding to onkeyup to catch most of those events.
-		// There is no way that I know of to detect something like 'cut' in IE9.
-		if ('onpropertychange' in ta && 'oninput' in ta) {
-			ta.addEventListener('keyup', update, false);
-		}
-
-		window.addEventListener('resize', pageResize, false);
-		ta.addEventListener('input', update, false);
-		ta.addEventListener('autosize:update', update, false);
-		ta.style.overflowX = 'hidden';
-		ta.style.wordWrap = 'break-word';
-
-		map.set(ta, {
-			destroy: destroy,
-			update: update
-		});
-
-		init();
-	}
-
-	function destroy(ta) {
-		var methods = map.get(ta);
-		if (methods) {
-			methods.destroy();
-		}
-	}
-
-	function update(ta) {
-		var methods = map.get(ta);
-		if (methods) {
-			methods.update();
-		}
-	}
-
-	var autosize = null;
-
-	// Do nothing in Node.js environment and IE8 (or lower)
-	if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
-		autosize = function autosize(el) {
-			return el;
-		};
-		autosize.destroy = function (el) {
-			return el;
-		};
-		autosize.update = function (el) {
-			return el;
-		};
-	} else {
-		autosize = function autosize(el, options) {
-			if (el) {
-				Array.prototype.forEach.call(el.length ? el : [el], function (x) {
-					return assign(x, options);
-				});
-			}
-			return el;
-		};
-		autosize.destroy = function (el) {
-			if (el) {
-				Array.prototype.forEach.call(el.length ? el : [el], destroy);
-			}
-			return el;
-		};
-		autosize.update = function (el) {
-			if (el) {
-				Array.prototype.forEach.call(el.length ? el : [el], update);
-			}
-			return el;
-		};
-	}
-
-	exports.default = autosize;
-	module.exports = exports['default'];
-});
-
-/***/ }),
-
-/***/ 4403:
-/***/ (function(module, exports) {
-
-var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
-  Copyright (c) 2018 Jed Watson.
-  Licensed under the MIT License (MIT), see
-  http://jedwatson.github.io/classnames
-*/
-/* global define */
-
-(function () {
-	'use strict';
-
-	var hasOwn = {}.hasOwnProperty;
-
-	function classNames() {
-		var classes = [];
-
-		for (var i = 0; i < arguments.length; i++) {
-			var arg = arguments[i];
-			if (!arg) continue;
-
-			var argType = typeof arg;
-
-			if (argType === 'string' || argType === 'number') {
-				classes.push(arg);
-			} else if (Array.isArray(arg)) {
-				if (arg.length) {
-					var inner = classNames.apply(null, arg);
-					if (inner) {
-						classes.push(inner);
-					}
-				}
-			} else if (argType === 'object') {
-				if (arg.toString === Object.prototype.toString) {
-					for (var key in arg) {
-						if (hasOwn.call(arg, key) && arg[key]) {
-							classes.push(key);
-						}
-					}
-				} else {
-					classes.push(arg.toString());
-				}
-			}
-		}
-
-		return classes.join(' ');
-	}
-
-	if ( true && module.exports) {
-		classNames.default = classNames;
-		module.exports = classNames;
-	} else if (true) {
-		// register as 'classnames', consistent with npm package name
-		!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
-			return classNames;
-		}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
-		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
-	} else {}
-}());
-
-
-/***/ }),
-
-/***/ 4827:
-/***/ (function(module) {
-
-// This code has been refactored for 140 bytes
-// You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js
-var computedStyle = function (el, prop, getComputedStyle) {
-  getComputedStyle = window.getComputedStyle;
-
-  // In one fell swoop
-  return (
-    // If we have getComputedStyle
-    getComputedStyle ?
-      // Query it
-      // TODO: From CSS-Query notes, we might need (node, null) for FF
-      getComputedStyle(el) :
-
-    // Otherwise, we are in IE and use currentStyle
-      el.currentStyle
-  )[
-    // Switch to camelCase for CSSOM
-    // DEV: Grabbed from jQuery
-    // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194
-    // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597
-    prop.replace(/-(\w)/gi, function (word, letter) {
-      return letter.toUpperCase();
-    })
-  ];
-};
-
-module.exports = computedStyle;
+			for (
+				var u = undefined, i = 0;
+				i < t.length;
+				i++
+			)
+				o( t[ i ] );
+			return o;
+		}
+		return r;
+	} )()(
+		{
+			1: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					var TYPED_OK =
+						typeof Uint8Array !== 'undefined' &&
+						typeof Uint16Array !== 'undefined' &&
+						typeof Int32Array !== 'undefined';
+
+					function _has( obj, key ) {
+						return Object.prototype.hasOwnProperty.call( obj, key );
+					}
+
+					exports.assign = function (
+						obj /*from1, from2, from3, ...*/
+					) {
+						var sources = Array.prototype.slice.call(
+							arguments,
+							1
+						);
+						while ( sources.length ) {
+							var source = sources.shift();
+							if ( ! source ) {
+								continue;
+							}
+
+							if ( typeof source !== 'object' ) {
+								throw new TypeError(
+									source + 'must be non-object'
+								);
+							}
+
+							for ( var p in source ) {
+								if ( _has( source, p ) ) {
+									obj[ p ] = source[ p ];
+								}
+							}
+						}
+
+						return obj;
+					};
+
+					// reduce buffer size, avoiding mem copy
+					exports.shrinkBuf = function ( buf, size ) {
+						if ( buf.length === size ) {
+							return buf;
+						}
+						if ( buf.subarray ) {
+							return buf.subarray( 0, size );
+						}
+						buf.length = size;
+						return buf;
+					};
+
+					var fnTyped = {
+						arraySet: function (
+							dest,
+							src,
+							src_offs,
+							len,
+							dest_offs
+						) {
+							if ( src.subarray && dest.subarray ) {
+								dest.set(
+									src.subarray( src_offs, src_offs + len ),
+									dest_offs
+								);
+								return;
+							}
+							// Fallback to ordinary array
+							for ( var i = 0; i < len; i++ ) {
+								dest[ dest_offs + i ] = src[ src_offs + i ];
+							}
+						},
+						// Join array of chunks to single array.
+						flattenChunks: function ( chunks ) {
+							var i, l, len, pos, chunk, result;
+
+							// calculate data length
+							len = 0;
+							for ( i = 0, l = chunks.length; i < l; i++ ) {
+								len += chunks[ i ].length;
+							}
+
+							// join chunks
+							result = new Uint8Array( len );
+							pos = 0;
+							for ( i = 0, l = chunks.length; i < l; i++ ) {
+								chunk = chunks[ i ];
+								result.set( chunk, pos );
+								pos += chunk.length;
+							}
+
+							return result;
+						},
+					};
+
+					var fnUntyped = {
+						arraySet: function (
+							dest,
+							src,
+							src_offs,
+							len,
+							dest_offs
+						) {
+							for ( var i = 0; i < len; i++ ) {
+								dest[ dest_offs + i ] = src[ src_offs + i ];
+							}
+						},
+						// Join array of chunks to single array.
+						flattenChunks: function ( chunks ) {
+							return [].concat.apply( [], chunks );
+						},
+					};
+
+					// Enable/Disable typed arrays use, for testing
+					//
+					exports.setTyped = function ( on ) {
+						if ( on ) {
+							exports.Buf8 = Uint8Array;
+							exports.Buf16 = Uint16Array;
+							exports.Buf32 = Int32Array;
+							exports.assign( exports, fnTyped );
+						} else {
+							exports.Buf8 = Array;
+							exports.Buf16 = Array;
+							exports.Buf32 = Array;
+							exports.assign( exports, fnUntyped );
+						}
+					};
+
+					exports.setTyped( TYPED_OK );
+				},
+				{},
+			],
+			2: [
+				function ( require, module, exports ) {
+					// String encode/decode helpers
+					'use strict';
+
+					var utils = require( './common' );
+
+					// Quick check if we can use fast array to bin string conversion
+					//
+					// - apply(Array) can fail on Android 2.2
+					// - apply(Uint8Array) can fail on iOS 5.1 Safari
+					//
+					var STR_APPLY_OK = true;
+					var STR_APPLY_UIA_OK = true;
+
+					try {
+						String.fromCharCode.apply( null, [ 0 ] );
+					} catch ( __ ) {
+						STR_APPLY_OK = false;
+					}
+					try {
+						String.fromCharCode.apply( null, new Uint8Array( 1 ) );
+					} catch ( __ ) {
+						STR_APPLY_UIA_OK = false;
+					}
+
+					// Table with utf8 lengths (calculated by first byte of sequence)
+					// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+					// because max possible codepoint is 0x10ffff
+					var _utf8len = new utils.Buf8( 256 );
+					for ( var q = 0; q < 256; q++ ) {
+						_utf8len[ q ] =
+							q >= 252
+								? 6
+								: q >= 248
+								? 5
+								: q >= 240
+								? 4
+								: q >= 224
+								? 3
+								: q >= 192
+								? 2
+								: 1;
+					}
+					_utf8len[ 254 ] = _utf8len[ 254 ] = 1; // Invalid sequence start
+
+					// convert string to array (typed, when possible)
+					exports.string2buf = function ( str ) {
+						var buf,
+							c,
+							c2,
+							m_pos,
+							i,
+							str_len = str.length,
+							buf_len = 0;
+
+						// count binary size
+						for ( m_pos = 0; m_pos < str_len; m_pos++ ) {
+							c = str.charCodeAt( m_pos );
+							if (
+								( c & 0xfc00 ) === 0xd800 &&
+								m_pos + 1 < str_len
+							) {
+								c2 = str.charCodeAt( m_pos + 1 );
+								if ( ( c2 & 0xfc00 ) === 0xdc00 ) {
+									c =
+										0x10000 +
+										( ( c - 0xd800 ) << 10 ) +
+										( c2 - 0xdc00 );
+									m_pos++;
+								}
+							}
+							buf_len +=
+								c < 0x80
+									? 1
+									: c < 0x800
+									? 2
+									: c < 0x10000
+									? 3
+									: 4;
+						}
+
+						// allocate buffer
+						buf = new utils.Buf8( buf_len );
+
+						// convert
+						for ( i = 0, m_pos = 0; i < buf_len; m_pos++ ) {
+							c = str.charCodeAt( m_pos );
+							if (
+								( c & 0xfc00 ) === 0xd800 &&
+								m_pos + 1 < str_len
+							) {
+								c2 = str.charCodeAt( m_pos + 1 );
+								if ( ( c2 & 0xfc00 ) === 0xdc00 ) {
+									c =
+										0x10000 +
+										( ( c - 0xd800 ) << 10 ) +
+										( c2 - 0xdc00 );
+									m_pos++;
+								}
+							}
+							if ( c < 0x80 ) {
+								/* one byte */
+								buf[ i++ ] = c;
+							} else if ( c < 0x800 ) {
+								/* two bytes */
+								buf[ i++ ] = 0xc0 | ( c >>> 6 );
+								buf[ i++ ] = 0x80 | ( c & 0x3f );
+							} else if ( c < 0x10000 ) {
+								/* three bytes */
+								buf[ i++ ] = 0xe0 | ( c >>> 12 );
+								buf[ i++ ] = 0x80 | ( ( c >>> 6 ) & 0x3f );
+								buf[ i++ ] = 0x80 | ( c & 0x3f );
+							} else {
+								/* four bytes */
+								buf[ i++ ] = 0xf0 | ( c >>> 18 );
+								buf[ i++ ] = 0x80 | ( ( c >>> 12 ) & 0x3f );
+								buf[ i++ ] = 0x80 | ( ( c >>> 6 ) & 0x3f );
+								buf[ i++ ] = 0x80 | ( c & 0x3f );
+							}
+						}
+
+						return buf;
+					};
+
+					// Helper (used in 2 places)
+					function buf2binstring( buf, len ) {
+						// On Chrome, the arguments in a function call that are allowed is `65534`.
+						// If the length of the buffer is smaller than that, we can use this optimization,
+						// otherwise we will take a slower path.
+						if ( len < 65534 ) {
+							if (
+								( buf.subarray && STR_APPLY_UIA_OK ) ||
+								( ! buf.subarray && STR_APPLY_OK )
+							) {
+								return String.fromCharCode.apply(
+									null,
+									utils.shrinkBuf( buf, len )
+								);
+							}
+						}
+
+						var result = '';
+						for ( var i = 0; i < len; i++ ) {
+							result += String.fromCharCode( buf[ i ] );
+						}
+						return result;
+					}
+
+					// Convert byte array to binary string
+					exports.buf2binstring = function ( buf ) {
+						return buf2binstring( buf, buf.length );
+					};
+
+					// Convert binary string (typed, when possible)
+					exports.binstring2buf = function ( str ) {
+						var buf = new utils.Buf8( str.length );
+						for ( var i = 0, len = buf.length; i < len; i++ ) {
+							buf[ i ] = str.charCodeAt( i );
+						}
+						return buf;
+					};
+
+					// convert array to string
+					exports.buf2string = function ( buf, max ) {
+						var i, out, c, c_len;
+						var len = max || buf.length;
+
+						// Reserve max possible length (2 words per char)
+						// NB: by unknown reasons, Array is significantly faster for
+						//     String.fromCharCode.apply than Uint16Array.
+						var utf16buf = new Array( len * 2 );
+
+						for ( out = 0, i = 0; i < len;  ) {
+							c = buf[ i++ ];
+							// quick process ascii
+							if ( c < 0x80 ) {
+								utf16buf[ out++ ] = c;
+								continue;
+							}
+
+							c_len = _utf8len[ c ];
+							// skip 5 & 6 byte codes
+							if ( c_len > 4 ) {
+								utf16buf[ out++ ] = 0xfffd;
+								i += c_len - 1;
+								continue;
+							}
+
+							// apply mask on first byte
+							c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+							// join the rest
+							while ( c_len > 1 && i < len ) {
+								c = ( c << 6 ) | ( buf[ i++ ] & 0x3f );
+								c_len--;
+							}
+
+							// terminated by end of string?
+							if ( c_len > 1 ) {
+								utf16buf[ out++ ] = 0xfffd;
+								continue;
+							}
+
+							if ( c < 0x10000 ) {
+								utf16buf[ out++ ] = c;
+							} else {
+								c -= 0x10000;
+								utf16buf[ out++ ] =
+									0xd800 | ( ( c >> 10 ) & 0x3ff );
+								utf16buf[ out++ ] = 0xdc00 | ( c & 0x3ff );
+							}
+						}
+
+						return buf2binstring( utf16buf, out );
+					};
+
+					// Calculate max possible position in utf8 buffer,
+					// that will not break sequence. If that's not possible
+					// - (very small limits) return max size as is.
+					//
+					// buf[] - utf8 bytes array
+					// max   - length limit (mandatory);
+					exports.utf8border = function ( buf, max ) {
+						var pos;
+
+						max = max || buf.length;
+						if ( max > buf.length ) {
+							max = buf.length;
+						}
+
+						// go back from last position, until start of sequence found
+						pos = max - 1;
+						while ( pos >= 0 && ( buf[ pos ] & 0xc0 ) === 0x80 ) {
+							pos--;
+						}
+
+						// Very small and broken sequence,
+						// return max, because we should return something anyway.
+						if ( pos < 0 ) {
+							return max;
+						}
+
+						// If we came to start of buffer - that means buffer is too small,
+						// return max too.
+						if ( pos === 0 ) {
+							return max;
+						}
+
+						return pos + _utf8len[ buf[ pos ] ] > max ? pos : max;
+					};
+				},
+				{ './common': 1 },
+			],
+			3: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					// Note: adler32 takes 12% for level 0 and 2% for level 6.
+					// It isn't worth it to make additional optimizations as in original.
+					// Small size is preferable.
+
+					// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+					// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+					//
+					// This software is provided 'as-is', without any express or implied
+					// warranty. In no event will the authors be held liable for any damages
+					// arising from the use of this software.
+					//
+					// Permission is granted to anyone to use this software for any purpose,
+					// including commercial applications, and to alter it and redistribute it
+					// freely, subject to the following restrictions:
+					//
+					// 1. The origin of this software must not be misrepresented; you must not
+					//   claim that you wrote the original software. If you use this software
+					//   in a product, an acknowledgment in the product documentation would be
+					//   appreciated but is not required.
+					// 2. Altered source versions must be plainly marked as such, and must not be
+					//   misrepresented as being the original software.
+					// 3. This notice may not be removed or altered from any source distribution.
+
+					function adler32( adler, buf, len, pos ) {
+						var s1 = ( adler & 0xffff ) | 0,
+							s2 = ( ( adler >>> 16 ) & 0xffff ) | 0,
+							n = 0;
+
+						while ( len !== 0 ) {
+							// Set limit ~ twice less than 5552, to keep
+							// s2 in 31-bits, because we force signed ints.
+							// in other case %= will fail.
+							n = len > 2000 ? 2000 : len;
+							len -= n;
+
+							do {
+								s1 = ( s1 + buf[ pos++ ] ) | 0;
+								s2 = ( s2 + s1 ) | 0;
+							} while ( --n );
+
+							s1 %= 65521;
+							s2 %= 65521;
+						}
+
+						return s1 | ( s2 << 16 ) | 0;
+					}
+
+					module.exports = adler32;
+				},
+				{},
+			],
+			4: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+					// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+					//
+					// This software is provided 'as-is', without any express or implied
+					// warranty. In no event will the authors be held liable for any damages
+					// arising from the use of this software.
+					//
+					// Permission is granted to anyone to use this software for any purpose,
+					// including commercial applications, and to alter it and redistribute it
+					// freely, subject to the following restrictions:
+					//
+					// 1. The origin of this software must not be misrepresented; you must not
+					//   claim that you wrote the original software. If you use this software
+					//   in a product, an acknowledgment in the product documentation would be
+					//   appreciated but is not required.
+					// 2. Altered source versions must be plainly marked as such, and must not be
+					//   misrepresented as being the original software.
+					// 3. This notice may not be removed or altered from any source distribution.
+
+					module.exports = {
+						/* Allowed flush values; see deflate() and inflate() below for details */
+						Z_NO_FLUSH: 0,
+						Z_PARTIAL_FLUSH: 1,
+						Z_SYNC_FLUSH: 2,
+						Z_FULL_FLUSH: 3,
+						Z_FINISH: 4,
+						Z_BLOCK: 5,
+						Z_TREES: 6,
+
+						/* Return codes for the compression/decompression functions. Negative values
+						 * are errors, positive values are used for special but normal events.
+						 */
+						Z_OK: 0,
+						Z_STREAM_END: 1,
+						Z_NEED_DICT: 2,
+						Z_ERRNO: -1,
+						Z_STREAM_ERROR: -2,
+						Z_DATA_ERROR: -3,
+						//Z_MEM_ERROR:     -4,
+						Z_BUF_ERROR: -5,
+						//Z_VERSION_ERROR: -6,
+
+						/* compression levels */
+						Z_NO_COMPRESSION: 0,
+						Z_BEST_SPEED: 1,
+						Z_BEST_COMPRESSION: 9,
+						Z_DEFAULT_COMPRESSION: -1,
+
+						Z_FILTERED: 1,
+						Z_HUFFMAN_ONLY: 2,
+						Z_RLE: 3,
+						Z_FIXED: 4,
+						Z_DEFAULT_STRATEGY: 0,
+
+						/* Possible values of the data_type field (though see inflate()) */
+						Z_BINARY: 0,
+						Z_TEXT: 1,
+						//Z_ASCII:                1, // = Z_TEXT (deprecated)
+						Z_UNKNOWN: 2,
+
+						/* The deflate compression method */
+						Z_DEFLATED: 8,
+						//Z_NULL:                 null // Use -1 or null inline, depending on var type
+					};
+				},
+				{},
+			],
+			5: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					// Note: we can't get significant speed boost here.
+					// So write code to minimize size - no pregenerated tables
+					// and array tools dependencies.
+
+					// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+					// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+					//
+					// This software is provided 'as-is', without any express or implied
+					// warranty. In no event will the authors be held liable for any damages
+					// arising from the use of this software.
+					//
+					// Permission is granted to anyone to use this software for any purpose,
+					// including commercial applications, and to alter it and redistribute it
+					// freely, subject to the following restrictions:
+					//
+					// 1. The origin of this software must not be misrepresented; you must not
+					//   claim that you wrote the original software. If you use this software
+					//   in a product, an acknowledgment in the product documentation would be
+					//   appreciated but is not required.
+					// 2. Altered source versions must be plainly marked as such, and must not be
+					//   misrepresented as being the original software.
+					// 3. This notice may not be removed or altered from any source distribution.
+
+					// Use ordinary array, since untyped makes no boost here
+					function makeTable() {
+						var c,
+							table = [];
+
+						for ( var n = 0; n < 256; n++ ) {
+							c = n;
+							for ( var k = 0; k < 8; k++ ) {
+								c = c & 1 ? 0xedb88320 ^ ( c >>> 1 ) : c >>> 1;
+							}
+							table[ n ] = c;
+						}
+
+						return table;
+					}
+
+					// Create table on load. Just 255 signed longs. Not a problem.
+					var crcTable = makeTable();
+
+					function crc32( crc, buf, len, pos ) {
+						var t = crcTable,
+							end = pos + len;
+
+						crc ^= -1;
+
+						for ( var i = pos; i < end; i++ ) {
+							crc =
+								( crc >>> 8 ) ^ t[ ( crc ^ buf[ i ] ) & 0xff ];
+						}
+
+						return crc ^ -1; // >>> 0;
+					}
+
+					module.exports = crc32;
+				},
+				{},
+			],
+			6: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+					// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+					//
+					// This software is provided 'as-is', without any express or implied
+					// warranty. In no event will the authors be held liable for any damages
+					// arising from the use of this software.
+					//
+					// Permission is granted to anyone to use this software for any purpose,
+					// including commercial applications, and to alter it and redistribute it
+					// freely, subject to the following restrictions:
+					//
+					// 1. The origin of this software must not be misrepresented; you must not
+					//   claim that you wrote the original software. If you use this software
+					//   in a product, an acknowledgment in the product documentation would be
+					//   appreciated but is not required.
+					// 2. Altered source versions must be plainly marked as such, and must not be
+					//   misrepresented as being the original software.
+					// 3. This notice may not be removed or altered from any source distribution.
+
+					function GZheader() {
+						/* true if compressed data believed to be text */
+						this.text = 0;
+						/* modification time */
+						this.time = 0;
+						/* extra flags (not used when writing a gzip file) */
+						this.xflags = 0;
+						/* operating system */
+						this.os = 0;
+						/* pointer to extra field or Z_NULL if none */
+						this.extra = null;
+						/* extra field length (valid if extra != Z_NULL) */
+						this.extra_len = 0; // Actually, we don't need it in JS,
+						// but leave for few code modifications
+
+						//
+						// Setup limits is not necessary because in js we should not preallocate memory
+						// for inflate use constant limit in 65536 bytes
+						//
+
+						/* space at extra (only when reading header) */
+						// this.extra_max  = 0;
+						/* pointer to zero-terminated file name or Z_NULL */
+						this.name = '';
+						/* space at name (only when reading header) */
+						// this.name_max   = 0;
+						/* pointer to zero-terminated comment or Z_NULL */
+						this.comment = '';
+						/* space at comment (only when reading header) */
+						// this.comm_max   = 0;
+						/* true if there was or will be a header crc */
+						this.hcrc = 0;
+						/* true when done reading gzip header (not used when writing a gzip file) */
+						this.done = false;
+					}
+
+					module.exports = GZheader;
+				},
+				{},
+			],
+			7: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+					// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+					//
+					// This software is provided 'as-is', without any express or implied
+					// warranty. In no event will the authors be held liable for any damages
+					// arising from the use of this software.
+					//
+					// Permission is granted to anyone to use this software for any purpose,
+					// including commercial applications, and to alter it and redistribute it
+					// freely, subject to the following restrictions:
+					//
+					// 1. The origin of this software must not be misrepresented; you must not
+					//   claim that you wrote the original software. If you use this software
+					//   in a product, an acknowledgment in the product documentation would be
+					//   appreciated but is not required.
+					// 2. Altered source versions must be plainly marked as such, and must not be
+					//   misrepresented as being the original software.
+					// 3. This notice may not be removed or altered from any source distribution.
+
+					// See state defs from inflate.js
+					var BAD = 30; /* got a data error -- remain here until reset */
+					var TYPE = 12; /* i: waiting for type bits, including last-flag bit */
+
+					/*
+     Decode literal, length, and distance codes and write out the resulting
+     literal and match bytes until either not enough input or output is
+     available, an end-of-block is encountered, or a data error is encountered.
+     When large enough input and output buffers are supplied to inflate(), for
+     example, a 16K input buffer and a 64K output buffer, more than 95% of the
+     inflate execution time is spent in this routine.
+
+     Entry assumptions:
+
+          state.mode === LEN
+          strm.avail_in >= 6
+          strm.avail_out >= 258
+          start >= strm.avail_out
+          state.bits < 8
+
+     On return, state.mode is one of:
+
+          LEN -- ran out of enough output space or enough available input
+          TYPE -- reached end of block code, inflate() to interpret next block
+          BAD -- error in block data
+
+     Notes:
+
+      - The maximum input bits used by a length/distance pair is 15 bits for the
+        length code, 5 bits for the length extra, 15 bits for the distance code,
+        and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
+        Therefore if strm.avail_in >= 6, then there is enough input to avoid
+        checking for available input while decoding.
+
+      - The maximum bytes that a single length/distance pair can output is 258
+        bytes, which is the maximum length that can be coded.  inflate_fast()
+        requires strm.avail_out >= 258 for each loop to avoid checking for
+        output space.
+   */
+					module.exports = function inflate_fast( strm, start ) {
+						var state;
+						var _in; /* local strm.input */
+						var last; /* have enough input while in < last */
+						var _out; /* local strm.output */
+						var beg; /* inflate()'s initial strm.output */
+						var end; /* while out < end, enough space available */
+						//#ifdef INFLATE_STRICT
+						var dmax; /* maximum distance from zlib header */
+						//#endif
+						var wsize; /* window size or zero if not using window */
+						var whave; /* valid bytes in the window */
+						var wnext; /* window write index */
+						// Use `s_window` instead `window`, avoid conflict with instrumentation tools
+						var s_window; /* allocated sliding window, if wsize != 0 */
+						var hold; /* local strm.hold */
+						var bits; /* local strm.bits */
+						var lcode; /* local strm.lencode */
+						var dcode; /* local strm.distcode */
+						var lmask; /* mask for first level of length codes */
+						var dmask; /* mask for first level of distance codes */
+						var here; /* retrieved table entry */
+						var op; /* code bits, operation, extra bits, or */
+						/*  window position, window bytes to copy */
+						var len; /* match length, unused bytes */
+						var dist; /* match distance */
+						var from; /* where to copy match from */
+						var from_source;
+
+						var input, output; // JS specific, because we have no pointers
+
+						/* copy state to local variables */
+						state = strm.state;
+						//here = state.here;
+						_in = strm.next_in;
+						input = strm.input;
+						last = _in + ( strm.avail_in - 5 );
+						_out = strm.next_out;
+						output = strm.output;
+						beg = _out - ( start - strm.avail_out );
+						end = _out + ( strm.avail_out - 257 );
+						//#ifdef INFLATE_STRICT
+						dmax = state.dmax;
+						//#endif
+						wsize = state.wsize;
+						whave = state.whave;
+						wnext = state.wnext;
+						s_window = state.window;
+						hold = state.hold;
+						bits = state.bits;
+						lcode = state.lencode;
+						dcode = state.distcode;
+						lmask = ( 1 << state.lenbits ) - 1;
+						dmask = ( 1 << state.distbits ) - 1;
+
+						/* decode literals and length/distances until end-of-block or not enough
+       input data or output space */
+
+						top: do {
+							if ( bits < 15 ) {
+								hold += input[ _in++ ] << bits;
+								bits += 8;
+								hold += input[ _in++ ] << bits;
+								bits += 8;
+							}
+
+							here = lcode[ hold & lmask ];
+
+							dolen: for (;;) {
+								// Goto emulation
+								op = here >>> 24 /*here.bits*/;
+								hold >>>= op;
+								bits -= op;
+								op = ( here >>> 16 ) & 0xff /*here.op*/;
+								if ( op === 0 ) {
+									/* literal */
+									//Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+									//        "inflate:         literal '%c'\n" :
+									//        "inflate:         literal 0x%02x\n", here.val));
+									output[ _out++ ] =
+										here & 0xffff /*here.val*/;
+								} else if ( op & 16 ) {
+									/* length base */
+									len = here & 0xffff /*here.val*/;
+									op &= 15; /* number of extra bits */
+									if ( op ) {
+										if ( bits < op ) {
+											hold += input[ _in++ ] << bits;
+											bits += 8;
+										}
+										len += hold & ( ( 1 << op ) - 1 );
+										hold >>>= op;
+										bits -= op;
+									}
+									//Tracevv((stderr, "inflate:         length %u\n", len));
+									if ( bits < 15 ) {
+										hold += input[ _in++ ] << bits;
+										bits += 8;
+										hold += input[ _in++ ] << bits;
+										bits += 8;
+									}
+									here = dcode[ hold & dmask ];
+
+									dodist: for (;;) {
+										// goto emulation
+										op = here >>> 24 /*here.bits*/;
+										hold >>>= op;
+										bits -= op;
+										op = ( here >>> 16 ) & 0xff /*here.op*/;
+
+										if ( op & 16 ) {
+											/* distance base */
+											dist = here & 0xffff /*here.val*/;
+											op &= 15; /* number of extra bits */
+											if ( bits < op ) {
+												hold += input[ _in++ ] << bits;
+												bits += 8;
+												if ( bits < op ) {
+													hold +=
+														input[ _in++ ] << bits;
+													bits += 8;
+												}
+											}
+											dist += hold & ( ( 1 << op ) - 1 );
+											//#ifdef INFLATE_STRICT
+											if ( dist > dmax ) {
+												strm.msg =
+													'invalid distance too far back';
+												state.mode = BAD;
+												break top;
+											}
+											//#endif
+											hold >>>= op;
+											bits -= op;
+											//Tracevv((stderr, "inflate:         distance %u\n", dist));
+											op =
+												_out -
+												beg; /* max distance in output */
+											if ( dist > op ) {
+												/* see if copy from window */
+												op =
+													dist -
+													op; /* distance back in window */
+												if ( op > whave ) {
+													if ( state.sane ) {
+														strm.msg =
+															'invalid distance too far back';
+														state.mode = BAD;
+														break top;
+													}
+
+													// (!) This block is disabled in zlib defaults,
+													// don't enable it for binary compatibility
+													//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+													//                if (len <= op - whave) {
+													//                  do {
+													//                    output[_out++] = 0;
+													//                  } while (--len);
+													//                  continue top;
+													//                }
+													//                len -= op - whave;
+													//                do {
+													//                  output[_out++] = 0;
+													//                } while (--op > whave);
+													//                if (op === 0) {
+													//                  from = _out - dist;
+													//                  do {
+													//                    output[_out++] = output[from++];
+													//                  } while (--len);
+													//                  continue top;
+													//                }
+													//#endif
+												}
+												from = 0; // window index
+												from_source = s_window;
+												if ( wnext === 0 ) {
+													/* very common case */
+													from += wsize - op;
+													if ( op < len ) {
+														/* some from window */
+														len -= op;
+														do {
+															output[ _out++ ] =
+																s_window[
+																	from++
+																];
+														} while ( --op );
+														from =
+															_out -
+															dist; /* rest from output */
+														from_source = output;
+													}
+												} else if ( wnext < op ) {
+													/* wrap around window */
+													from += wsize + wnext - op;
+													op -= wnext;
+													if ( op < len ) {
+														/* some from end of window */
+														len -= op;
+														do {
+															output[ _out++ ] =
+																s_window[
+																	from++
+																];
+														} while ( --op );
+														from = 0;
+														if ( wnext < len ) {
+															/* some from start of window */
+															op = wnext;
+															len -= op;
+															do {
+																output[
+																	_out++
+																] =
+																	s_window[
+																		from++
+																	];
+															} while ( --op );
+															from =
+																_out -
+																dist; /* rest from output */
+															from_source =
+																output;
+														}
+													}
+												} else {
+													/* contiguous in window */
+													from += wnext - op;
+													if ( op < len ) {
+														/* some from window */
+														len -= op;
+														do {
+															output[ _out++ ] =
+																s_window[
+																	from++
+																];
+														} while ( --op );
+														from =
+															_out -
+															dist; /* rest from output */
+														from_source = output;
+													}
+												}
+												while ( len > 2 ) {
+													output[ _out++ ] =
+														from_source[ from++ ];
+													output[ _out++ ] =
+														from_source[ from++ ];
+													output[ _out++ ] =
+														from_source[ from++ ];
+													len -= 3;
+												}
+												if ( len ) {
+													output[ _out++ ] =
+														from_source[ from++ ];
+													if ( len > 1 ) {
+														output[ _out++ ] =
+															from_source[
+																from++
+															];
+													}
+												}
+											} else {
+												from =
+													_out -
+													dist; /* copy direct from output */
+												do {
+													/* minimum length is three */
+													output[ _out++ ] =
+														output[ from++ ];
+													output[ _out++ ] =
+														output[ from++ ];
+													output[ _out++ ] =
+														output[ from++ ];
+													len -= 3;
+												} while ( len > 2 );
+												if ( len ) {
+													output[ _out++ ] =
+														output[ from++ ];
+													if ( len > 1 ) {
+														output[ _out++ ] =
+															output[ from++ ];
+													}
+												}
+											}
+										} else if ( ( op & 64 ) === 0 ) {
+											/* 2nd level distance code */
+											here =
+												dcode[
+													( here &
+														0xffff ) /*here.val*/ +
+														( hold &
+															( ( 1 << op ) -
+																1 ) )
+												];
+											continue dodist;
+										} else {
+											strm.msg = 'invalid distance code';
+											state.mode = BAD;
+											break top;
+										}
+
+										break; // need to emulate goto via "continue"
+									}
+								} else if ( ( op & 64 ) === 0 ) {
+									/* 2nd level length code */
+									here =
+										lcode[
+											( here & 0xffff ) /*here.val*/ +
+												( hold & ( ( 1 << op ) - 1 ) )
+										];
+									continue dolen;
+								} else if ( op & 32 ) {
+									/* end-of-block */
+									//Tracevv((stderr, "inflate:         end of block\n"));
+									state.mode = TYPE;
+									break top;
+								} else {
+									strm.msg = 'invalid literal/length code';
+									state.mode = BAD;
+									break top;
+								}
+
+								break; // need to emulate goto via "continue"
+							}
+						} while ( _in < last && _out < end );
+
+						/* return unused bytes (on entry, bits < 8, so in won't go too far back) */
+						len = bits >> 3;
+						_in -= len;
+						bits -= len << 3;
+						hold &= ( 1 << bits ) - 1;
+
+						/* update state and return */
+						strm.next_in = _in;
+						strm.next_out = _out;
+						strm.avail_in =
+							_in < last
+								? 5 + ( last - _in )
+								: 5 - ( _in - last );
+						strm.avail_out =
+							_out < end
+								? 257 + ( end - _out )
+								: 257 - ( _out - end );
+						state.hold = hold;
+						state.bits = bits;
+						return;
+					};
+				},
+				{},
+			],
+			8: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+					// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+					//
+					// This software is provided 'as-is', without any express or implied
+					// warranty. In no event will the authors be held liable for any damages
+					// arising from the use of this software.
+					//
+					// Permission is granted to anyone to use this software for any purpose,
+					// including commercial applications, and to alter it and redistribute it
+					// freely, subject to the following restrictions:
+					//
+					// 1. The origin of this software must not be misrepresented; you must not
+					//   claim that you wrote the original software. If you use this software
+					//   in a product, an acknowledgment in the product documentation would be
+					//   appreciated but is not required.
+					// 2. Altered source versions must be plainly marked as such, and must not be
+					//   misrepresented as being the original software.
+					// 3. This notice may not be removed or altered from any source distribution.
+
+					var utils = require( '../utils/common' );
+					var adler32 = require( './adler32' );
+					var crc32 = require( './crc32' );
+					var inflate_fast = require( './inffast' );
+					var inflate_table = require( './inftrees' );
+
+					var CODES = 0;
+					var LENS = 1;
+					var DISTS = 2;
+
+					/* Public constants ==========================================================*/
+					/* ===========================================================================*/
+
+					/* Allowed flush values; see deflate() and inflate() below for details */
+					//var Z_NO_FLUSH      = 0;
+					//var Z_PARTIAL_FLUSH = 1;
+					//var Z_SYNC_FLUSH    = 2;
+					//var Z_FULL_FLUSH    = 3;
+					var Z_FINISH = 4;
+					var Z_BLOCK = 5;
+					var Z_TREES = 6;
+
+					/* Return codes for the compression/decompression functions. Negative values
+					 * are errors, positive values are used for special but normal events.
+					 */
+					var Z_OK = 0;
+					var Z_STREAM_END = 1;
+					var Z_NEED_DICT = 2;
+					//var Z_ERRNO         = -1;
+					var Z_STREAM_ERROR = -2;
+					var Z_DATA_ERROR = -3;
+					var Z_MEM_ERROR = -4;
+					var Z_BUF_ERROR = -5;
+					//var Z_VERSION_ERROR = -6;
+
+					/* The deflate compression method */
+					var Z_DEFLATED = 8;
+
+					/* STATES ====================================================================*/
+					/* ===========================================================================*/
+
+					var HEAD = 1; /* i: waiting for magic header */
+					var FLAGS = 2; /* i: waiting for method and flags (gzip) */
+					var TIME = 3; /* i: waiting for modification time (gzip) */
+					var OS = 4; /* i: waiting for extra flags and operating system (gzip) */
+					var EXLEN = 5; /* i: waiting for extra length (gzip) */
+					var EXTRA = 6; /* i: waiting for extra bytes (gzip) */
+					var NAME = 7; /* i: waiting for end of file name (gzip) */
+					var COMMENT = 8; /* i: waiting for end of comment (gzip) */
+					var HCRC = 9; /* i: waiting for header crc (gzip) */
+					var DICTID = 10; /* i: waiting for dictionary check value */
+					var DICT = 11; /* waiting for inflateSetDictionary() call */
+					var TYPE = 12; /* i: waiting for type bits, including last-flag bit */
+					var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */
+					var STORED = 14; /* i: waiting for stored size (length and complement) */
+					var COPY_ = 15; /* i/o: same as COPY below, but only first time in */
+					var COPY = 16; /* i/o: waiting for input or output to copy stored block */
+					var TABLE = 17; /* i: waiting for dynamic block table lengths */
+					var LENLENS = 18; /* i: waiting for code length code lengths */
+					var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */
+					var LEN_ = 20; /* i: same as LEN below, but only first time in */
+					var LEN = 21; /* i: waiting for length/lit/eob code */
+					var LENEXT = 22; /* i: waiting for length extra bits */
+					var DIST = 23; /* i: waiting for distance code */
+					var DISTEXT = 24; /* i: waiting for distance extra bits */
+					var MATCH = 25; /* o: waiting for output space to copy string */
+					var LIT = 26; /* o: waiting for output space to write literal */
+					var CHECK = 27; /* i: waiting for 32-bit check value */
+					var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */
+					var DONE = 29; /* finished check, done -- remain here until reset */
+					var BAD = 30; /* got a data error -- remain here until reset */
+					var MEM = 31; /* got an inflate() memory error -- remain here until reset */
+					var SYNC = 32; /* looking for synchronization bytes to restart inflate() */
+
+					/* ===========================================================================*/
+
+					var ENOUGH_LENS = 852;
+					var ENOUGH_DISTS = 592;
+					//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
+
+					var MAX_WBITS = 15;
+					/* 32K LZ77 window */
+					var DEF_WBITS = MAX_WBITS;
+
+					function zswap32( q ) {
+						return (
+							( ( q >>> 24 ) & 0xff ) +
+							( ( q >>> 8 ) & 0xff00 ) +
+							( ( q & 0xff00 ) << 8 ) +
+							( ( q & 0xff ) << 24 )
+						);
+					}
+
+					function InflateState() {
+						this.mode = 0; /* current inflate mode */
+						this.last = false; /* true if processing last block */
+						this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */
+						this.havedict = false; /* true if dictionary provided */
+						this.flags = 0; /* gzip header method and flags (0 if zlib) */
+						this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */
+						this.check = 0; /* protected copy of check value */
+						this.total = 0; /* protected copy of output count */
+						// TODO: may be {}
+						this.head =
+							null; /* where to save gzip header information */
+
+						/* sliding window */
+						this.wbits = 0; /* log base 2 of requested window size */
+						this.wsize = 0; /* window size or zero if not using window */
+						this.whave = 0; /* valid bytes in the window */
+						this.wnext = 0; /* window write index */
+						this.window =
+							null; /* allocated sliding window, if needed */
+
+						/* bit accumulator */
+						this.hold = 0; /* input bit accumulator */
+						this.bits = 0; /* number of bits in "in" */
+
+						/* for string and stored block copying */
+						this.length = 0; /* literal or length of data to copy */
+						this.offset = 0; /* distance back to copy string from */
+
+						/* for table and code decoding */
+						this.extra = 0; /* extra bits needed */
+
+						/* fixed and dynamic code tables */
+						this.lencode =
+							null; /* starting table for length/literal codes */
+						this.distcode =
+							null; /* starting table for distance codes */
+						this.lenbits = 0; /* index bits for lencode */
+						this.distbits = 0; /* index bits for distcode */
+
+						/* dynamic table building */
+						this.ncode = 0; /* number of code length code lengths */
+						this.nlen = 0; /* number of length code lengths */
+						this.ndist = 0; /* number of distance code lengths */
+						this.have = 0; /* number of code lengths in lens[] */
+						this.next = null; /* next available space in codes[] */
+
+						this.lens = new utils.Buf16(
+							320
+						); /* temporary storage for code lengths */
+						this.work = new utils.Buf16(
+							288
+						); /* work area for code table building */
+
+						/*
+     because we don't have pointers in js, we use lencode and distcode directly
+     as buffers so we don't need codes
+    */
+						//this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
+						this.lendyn =
+							null; /* dynamic table for length/literal codes (JS specific) */
+						this.distdyn =
+							null; /* dynamic table for distance codes (JS specific) */
+						this.sane = 0; /* if false, allow invalid distance too far */
+						this.back = 0; /* bits back of last unprocessed length/lit */
+						this.was = 0; /* initial length of match */
+					}
+
+					function inflateResetKeep( strm ) {
+						var state;
+
+						if ( ! strm || ! strm.state ) {
+							return Z_STREAM_ERROR;
+						}
+						state = strm.state;
+						strm.total_in = strm.total_out = state.total = 0;
+						strm.msg = ''; /*Z_NULL*/
+						if ( state.wrap ) {
+							/* to support ill-conceived Java test suite */
+							strm.adler = state.wrap & 1;
+						}
+						state.mode = HEAD;
+						state.last = 0;
+						state.havedict = 0;
+						state.dmax = 32768;
+						state.head = null /*Z_NULL*/;
+						state.hold = 0;
+						state.bits = 0;
+						//state.lencode = state.distcode = state.next = state.codes;
+						state.lencode = state.lendyn = new utils.Buf32(
+							ENOUGH_LENS
+						);
+						state.distcode = state.distdyn = new utils.Buf32(
+							ENOUGH_DISTS
+						);
+
+						state.sane = 1;
+						state.back = -1;
+						//Tracev((stderr, "inflate: reset\n"));
+						return Z_OK;
+					}
+
+					function inflateReset( strm ) {
+						var state;
+
+						if ( ! strm || ! strm.state ) {
+							return Z_STREAM_ERROR;
+						}
+						state = strm.state;
+						state.wsize = 0;
+						state.whave = 0;
+						state.wnext = 0;
+						return inflateResetKeep( strm );
+					}
+
+					function inflateReset2( strm, windowBits ) {
+						var wrap;
+						var state;
+
+						/* get the state */
+						if ( ! strm || ! strm.state ) {
+							return Z_STREAM_ERROR;
+						}
+						state = strm.state;
+
+						/* extract wrap request from windowBits parameter */
+						if ( windowBits < 0 ) {
+							wrap = 0;
+							windowBits = -windowBits;
+						} else {
+							wrap = ( windowBits >> 4 ) + 1;
+							if ( windowBits < 48 ) {
+								windowBits &= 15;
+							}
+						}
+
+						/* set number of window bits, free window if different */
+						if (
+							windowBits &&
+							( windowBits < 8 || windowBits > 15 )
+						) {
+							return Z_STREAM_ERROR;
+						}
+						if (
+							state.window !== null &&
+							state.wbits !== windowBits
+						) {
+							state.window = null;
+						}
+
+						/* update state and reset the rest of it */
+						state.wrap = wrap;
+						state.wbits = windowBits;
+						return inflateReset( strm );
+					}
+
+					function inflateInit2( strm, windowBits ) {
+						var ret;
+						var state;
+
+						if ( ! strm ) {
+							return Z_STREAM_ERROR;
+						}
+						//strm.msg = Z_NULL;                 /* in case we return an error */
+
+						state = new InflateState();
+
+						//if (state === Z_NULL) return Z_MEM_ERROR;
+						//Tracev((stderr, "inflate: allocated\n"));
+						strm.state = state;
+						state.window = null /*Z_NULL*/;
+						ret = inflateReset2( strm, windowBits );
+						if ( ret !== Z_OK ) {
+							strm.state = null /*Z_NULL*/;
+						}
+						return ret;
+					}
+
+					function inflateInit( strm ) {
+						return inflateInit2( strm, DEF_WBITS );
+					}
+
+					/*
+   Return state with length and distance decoding tables and index sizes set to
+   fixed code decoding.  Normally this returns fixed tables from inffixed.h.
+   If BUILDFIXED is defined, then instead this routine builds the tables the
+   first time it's called, and returns those tables the first time and
+   thereafter.  This reduces the size of the code by about 2K bytes, in
+   exchange for a little execution time.  However, BUILDFIXED should not be
+   used for threaded applications, since the rewriting of the tables and virgin
+   may not be thread-safe.
+   */
+					var virgin = true;
+
+					var lenfix, distfix; // We have no pointers in JS, so keep tables separate
+
+					function fixedtables( state ) {
+						/* build fixed huffman tables if first call (may not be thread safe) */
+						if ( virgin ) {
+							var sym;
+
+							lenfix = new utils.Buf32( 512 );
+							distfix = new utils.Buf32( 32 );
+
+							/* literal/length table */
+							sym = 0;
+							while ( sym < 144 ) {
+								state.lens[ sym++ ] = 8;
+							}
+							while ( sym < 256 ) {
+								state.lens[ sym++ ] = 9;
+							}
+							while ( sym < 280 ) {
+								state.lens[ sym++ ] = 7;
+							}
+							while ( sym < 288 ) {
+								state.lens[ sym++ ] = 8;
+							}
+
+							inflate_table(
+								LENS,
+								state.lens,
+								0,
+								288,
+								lenfix,
+								0,
+								state.work,
+								{ bits: 9 }
+							);
+
+							/* distance table */
+							sym = 0;
+							while ( sym < 32 ) {
+								state.lens[ sym++ ] = 5;
+							}
+
+							inflate_table(
+								DISTS,
+								state.lens,
+								0,
+								32,
+								distfix,
+								0,
+								state.work,
+								{ bits: 5 }
+							);
+
+							/* do this just once */
+							virgin = false;
+						}
+
+						state.lencode = lenfix;
+						state.lenbits = 9;
+						state.distcode = distfix;
+						state.distbits = 5;
+					}
+
+					/*
+   Update the window with the last wsize (normally 32K) bytes written before
+   returning.  If window does not exist yet, create it.  This is only called
+   when a window is already in use, or when output has been written during this
+   inflate call, but the end of the deflate stream has not been reached yet.
+   It is also called to create a window for dictionary data when a dictionary
+   is loaded.
+
+   Providing output buffers larger than 32K to inflate() should provide a speed
+   advantage, since only the last 32K of output is copied to the sliding window
+   upon return from inflate(), and since all distances after the first 32K of
+   output will fall in the output data, making match copies simpler and faster.
+   The advantage may be dependent on the size of the processor's data caches.
+   */
+					function updatewindow( strm, src, end, copy ) {
+						var dist;
+						var state = strm.state;
+
+						/* if it hasn't been done already, allocate space for the window */
+						if ( state.window === null ) {
+							state.wsize = 1 << state.wbits;
+							state.wnext = 0;
+							state.whave = 0;
+
+							state.window = new utils.Buf8( state.wsize );
+						}
+
+						/* copy state->wsize or less output bytes into the circular window */
+						if ( copy >= state.wsize ) {
+							utils.arraySet(
+								state.window,
+								src,
+								end - state.wsize,
+								state.wsize,
+								0
+							);
+							state.wnext = 0;
+							state.whave = state.wsize;
+						} else {
+							dist = state.wsize - state.wnext;
+							if ( dist > copy ) {
+								dist = copy;
+							}
+							//zmemcpy(state->window + state->wnext, end - copy, dist);
+							utils.arraySet(
+								state.window,
+								src,
+								end - copy,
+								dist,
+								state.wnext
+							);
+							copy -= dist;
+							if ( copy ) {
+								//zmemcpy(state->window, end - copy, copy);
+								utils.arraySet(
+									state.window,
+									src,
+									end - copy,
+									copy,
+									0
+								);
+								state.wnext = copy;
+								state.whave = state.wsize;
+							} else {
+								state.wnext += dist;
+								if ( state.wnext === state.wsize ) {
+									state.wnext = 0;
+								}
+								if ( state.whave < state.wsize ) {
+									state.whave += dist;
+								}
+							}
+						}
+						return 0;
+					}
+
+					function inflate( strm, flush ) {
+						var state;
+						var input, output; // input/output buffers
+						var next; /* next input INDEX */
+						var put; /* next output INDEX */
+						var have, left; /* available input and output */
+						var hold; /* bit buffer */
+						var bits; /* bits in bit buffer */
+						var _in,
+							_out; /* save starting available input and output */
+						var copy; /* number of stored or match bytes to copy */
+						var from; /* where to copy match bytes from */
+						var from_source;
+						var here = 0; /* current decoding table entry */
+						var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
+						//var last;                   /* parent table entry */
+						var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
+						var len; /* length to copy for repeats, bits to drop */
+						var ret; /* return code */
+						var hbuf = new utils.Buf8(
+							4
+						); /* buffer for gzip header crc calculation */
+						var opts;
+
+						var n; // temporary var for NEED_BITS
+
+						var order =
+							/* permutation of code lengths */
+							[
+								16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3,
+								13, 2, 14, 1, 15,
+							];
+
+						if (
+							! strm ||
+							! strm.state ||
+							! strm.output ||
+							( ! strm.input && strm.avail_in !== 0 )
+						) {
+							return Z_STREAM_ERROR;
+						}
+
+						state = strm.state;
+						if ( state.mode === TYPE ) {
+							state.mode = TYPEDO;
+						} /* skip check */
+
+						//--- LOAD() ---
+						put = strm.next_out;
+						output = strm.output;
+						left = strm.avail_out;
+						next = strm.next_in;
+						input = strm.input;
+						have = strm.avail_in;
+						hold = state.hold;
+						bits = state.bits;
+						//---
+
+						_in = have;
+						_out = left;
+						ret = Z_OK;
+
+						// goto emulation
+						inf_leave: for (;;) {
+							switch ( state.mode ) {
+								case HEAD:
+									if ( state.wrap === 0 ) {
+										state.mode = TYPEDO;
+										break;
+									}
+									//=== NEEDBITS(16);
+									while ( bits < 16 ) {
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										have--;
+										hold += input[ next++ ] << bits;
+										bits += 8;
+									}
+									//===//
+									if ( state.wrap & 2 && hold === 0x8b1f ) {
+										/* gzip header */
+										state.check = 0 /*crc32(0L, Z_NULL, 0)*/;
+										//=== CRC2(state.check, hold);
+										hbuf[ 0 ] = hold & 0xff;
+										hbuf[ 1 ] = ( hold >>> 8 ) & 0xff;
+										state.check = crc32(
+											state.check,
+											hbuf,
+											2,
+											0
+										);
+										//===//
+
+										//=== INITBITS();
+										hold = 0;
+										bits = 0;
+										//===//
+										state.mode = FLAGS;
+										break;
+									}
+									state.flags = 0; /* expect zlib header */
+									if ( state.head ) {
+										state.head.done = false;
+									}
+									if (
+										! (
+											state.wrap & 1
+										) /* check if zlib header allowed */ ||
+										( ( ( hold & 0xff ) /*BITS(8)*/ << 8 ) +
+											( hold >> 8 ) ) %
+											31
+									) {
+										strm.msg = 'incorrect header check';
+										state.mode = BAD;
+										break;
+									}
+									if (
+										( hold & 0x0f ) /*BITS(4)*/ !==
+										Z_DEFLATED
+									) {
+										strm.msg = 'unknown compression method';
+										state.mode = BAD;
+										break;
+									}
+									//--- DROPBITS(4) ---//
+									hold >>>= 4;
+									bits -= 4;
+									//---//
+									len = ( hold & 0x0f ) /*BITS(4)*/ + 8;
+									if ( state.wbits === 0 ) {
+										state.wbits = len;
+									} else if ( len > state.wbits ) {
+										strm.msg = 'invalid window size';
+										state.mode = BAD;
+										break;
+									}
+									state.dmax = 1 << len;
+									//Tracev((stderr, "inflate:   zlib header ok\n"));
+									strm.adler =
+										state.check = 1 /*adler32(0L, Z_NULL, 0)*/;
+									state.mode = hold & 0x200 ? DICTID : TYPE;
+									//=== INITBITS();
+									hold = 0;
+									bits = 0;
+									//===//
+									break;
+								case FLAGS:
+									//=== NEEDBITS(16); */
+									while ( bits < 16 ) {
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										have--;
+										hold += input[ next++ ] << bits;
+										bits += 8;
+									}
+									//===//
+									state.flags = hold;
+									if (
+										( state.flags & 0xff ) !==
+										Z_DEFLATED
+									) {
+										strm.msg = 'unknown compression method';
+										state.mode = BAD;
+										break;
+									}
+									if ( state.flags & 0xe000 ) {
+										strm.msg = 'unknown header flags set';
+										state.mode = BAD;
+										break;
+									}
+									if ( state.head ) {
+										state.head.text = ( hold >> 8 ) & 1;
+									}
+									if ( state.flags & 0x0200 ) {
+										//=== CRC2(state.check, hold);
+										hbuf[ 0 ] = hold & 0xff;
+										hbuf[ 1 ] = ( hold >>> 8 ) & 0xff;
+										state.check = crc32(
+											state.check,
+											hbuf,
+											2,
+											0
+										);
+										//===//
+									}
+									//=== INITBITS();
+									hold = 0;
+									bits = 0;
+									//===//
+									state.mode = TIME;
+								/* falls through */
+								case TIME:
+									//=== NEEDBITS(32); */
+									while ( bits < 32 ) {
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										have--;
+										hold += input[ next++ ] << bits;
+										bits += 8;
+									}
+									//===//
+									if ( state.head ) {
+										state.head.time = hold;
+									}
+									if ( state.flags & 0x0200 ) {
+										//=== CRC4(state.check, hold)
+										hbuf[ 0 ] = hold & 0xff;
+										hbuf[ 1 ] = ( hold >>> 8 ) & 0xff;
+										hbuf[ 2 ] = ( hold >>> 16 ) & 0xff;
+										hbuf[ 3 ] = ( hold >>> 24 ) & 0xff;
+										state.check = crc32(
+											state.check,
+											hbuf,
+											4,
+											0
+										);
+										//===
+									}
+									//=== INITBITS();
+									hold = 0;
+									bits = 0;
+									//===//
+									state.mode = OS;
+								/* falls through */
+								case OS:
+									//=== NEEDBITS(16); */
+									while ( bits < 16 ) {
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										have--;
+										hold += input[ next++ ] << bits;
+										bits += 8;
+									}
+									//===//
+									if ( state.head ) {
+										state.head.xflags = hold & 0xff;
+										state.head.os = hold >> 8;
+									}
+									if ( state.flags & 0x0200 ) {
+										//=== CRC2(state.check, hold);
+										hbuf[ 0 ] = hold & 0xff;
+										hbuf[ 1 ] = ( hold >>> 8 ) & 0xff;
+										state.check = crc32(
+											state.check,
+											hbuf,
+											2,
+											0
+										);
+										//===//
+									}
+									//=== INITBITS();
+									hold = 0;
+									bits = 0;
+									//===//
+									state.mode = EXLEN;
+								/* falls through */
+								case EXLEN:
+									if ( state.flags & 0x0400 ) {
+										//=== NEEDBITS(16); */
+										while ( bits < 16 ) {
+											if ( have === 0 ) {
+												break inf_leave;
+											}
+											have--;
+											hold += input[ next++ ] << bits;
+											bits += 8;
+										}
+										//===//
+										state.length = hold;
+										if ( state.head ) {
+											state.head.extra_len = hold;
+										}
+										if ( state.flags & 0x0200 ) {
+											//=== CRC2(state.check, hold);
+											hbuf[ 0 ] = hold & 0xff;
+											hbuf[ 1 ] = ( hold >>> 8 ) & 0xff;
+											state.check = crc32(
+												state.check,
+												hbuf,
+												2,
+												0
+											);
+											//===//
+										}
+										//=== INITBITS();
+										hold = 0;
+										bits = 0;
+										//===//
+									} else if ( state.head ) {
+										state.head.extra = null /*Z_NULL*/;
+									}
+									state.mode = EXTRA;
+								/* falls through */
+								case EXTRA:
+									if ( state.flags & 0x0400 ) {
+										copy = state.length;
+										if ( copy > have ) {
+											copy = have;
+										}
+										if ( copy ) {
+											if ( state.head ) {
+												len =
+													state.head.extra_len -
+													state.length;
+												if ( ! state.head.extra ) {
+													// Use untyped array for more convenient processing later
+													state.head.extra =
+														new Array(
+															state.head.extra_len
+														);
+												}
+												utils.arraySet(
+													state.head.extra,
+													input,
+													next,
+													// extra field is limited to 65536 bytes
+													// - no need for additional size check
+													copy,
+													/*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
+													len
+												);
+												//zmemcpy(state.head.extra + len, next,
+												//        len + copy > state.head.extra_max ?
+												//        state.head.extra_max - len : copy);
+											}
+											if ( state.flags & 0x0200 ) {
+												state.check = crc32(
+													state.check,
+													input,
+													copy,
+													next
+												);
+											}
+											have -= copy;
+											next += copy;
+											state.length -= copy;
+										}
+										if ( state.length ) {
+											break inf_leave;
+										}
+									}
+									state.length = 0;
+									state.mode = NAME;
+								/* falls through */
+								case NAME:
+									if ( state.flags & 0x0800 ) {
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										copy = 0;
+										do {
+											// TODO: 2 or 1 bytes?
+											len = input[ next + copy++ ];
+											/* use constant limit because in js we should not preallocate memory */
+											if (
+												state.head &&
+												len &&
+												state.length <
+													65536 /*state.head.name_max*/
+											) {
+												state.head.name +=
+													String.fromCharCode( len );
+											}
+										} while ( len && copy < have );
+
+										if ( state.flags & 0x0200 ) {
+											state.check = crc32(
+												state.check,
+												input,
+												copy,
+												next
+											);
+										}
+										have -= copy;
+										next += copy;
+										if ( len ) {
+											break inf_leave;
+										}
+									} else if ( state.head ) {
+										state.head.name = null;
+									}
+									state.length = 0;
+									state.mode = COMMENT;
+								/* falls through */
+								case COMMENT:
+									if ( state.flags & 0x1000 ) {
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										copy = 0;
+										do {
+											len = input[ next + copy++ ];
+											/* use constant limit because in js we should not preallocate memory */
+											if (
+												state.head &&
+												len &&
+												state.length <
+													65536 /*state.head.comm_max*/
+											) {
+												state.head.comment +=
+													String.fromCharCode( len );
+											}
+										} while ( len && copy < have );
+										if ( state.flags & 0x0200 ) {
+											state.check = crc32(
+												state.check,
+												input,
+												copy,
+												next
+											);
+										}
+										have -= copy;
+										next += copy;
+										if ( len ) {
+											break inf_leave;
+										}
+									} else if ( state.head ) {
+										state.head.comment = null;
+									}
+									state.mode = HCRC;
+								/* falls through */
+								case HCRC:
+									if ( state.flags & 0x0200 ) {
+										//=== NEEDBITS(16); */
+										while ( bits < 16 ) {
+											if ( have === 0 ) {
+												break inf_leave;
+											}
+											have--;
+											hold += input[ next++ ] << bits;
+											bits += 8;
+										}
+										//===//
+										if (
+											hold !==
+											( state.check & 0xffff )
+										) {
+											strm.msg = 'header crc mismatch';
+											state.mode = BAD;
+											break;
+										}
+										//=== INITBITS();
+										hold = 0;
+										bits = 0;
+										//===//
+									}
+									if ( state.head ) {
+										state.head.hcrc =
+											( state.flags >> 9 ) & 1;
+										state.head.done = true;
+									}
+									strm.adler = state.check = 0;
+									state.mode = TYPE;
+									break;
+								case DICTID:
+									//=== NEEDBITS(32); */
+									while ( bits < 32 ) {
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										have--;
+										hold += input[ next++ ] << bits;
+										bits += 8;
+									}
+									//===//
+									strm.adler = state.check = zswap32( hold );
+									//=== INITBITS();
+									hold = 0;
+									bits = 0;
+									//===//
+									state.mode = DICT;
+								/* falls through */
+								case DICT:
+									if ( state.havedict === 0 ) {
+										//--- RESTORE() ---
+										strm.next_out = put;
+										strm.avail_out = left;
+										strm.next_in = next;
+										strm.avail_in = have;
+										state.hold = hold;
+										state.bits = bits;
+										//---
+										return Z_NEED_DICT;
+									}
+									strm.adler =
+										state.check = 1 /*adler32(0L, Z_NULL, 0)*/;
+									state.mode = TYPE;
+								/* falls through */
+								case TYPE:
+									if (
+										flush === Z_BLOCK ||
+										flush === Z_TREES
+									) {
+										break inf_leave;
+									}
+								/* falls through */
+								case TYPEDO:
+									if ( state.last ) {
+										//--- BYTEBITS() ---//
+										hold >>>= bits & 7;
+										bits -= bits & 7;
+										//---//
+										state.mode = CHECK;
+										break;
+									}
+									//=== NEEDBITS(3); */
+									while ( bits < 3 ) {
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										have--;
+										hold += input[ next++ ] << bits;
+										bits += 8;
+									}
+									//===//
+									state.last = hold & 0x01 /*BITS(1)*/;
+									//--- DROPBITS(1) ---//
+									hold >>>= 1;
+									bits -= 1;
+									//---//
+
+									switch ( hold & 0x03 /*BITS(2)*/ ) {
+										case 0 /* stored block */:
+											//Tracev((stderr, "inflate:     stored block%s\n",
+											//        state.last ? " (last)" : ""));
+											state.mode = STORED;
+											break;
+										case 1 /* fixed block */:
+											fixedtables( state );
+											//Tracev((stderr, "inflate:     fixed codes block%s\n",
+											//        state.last ? " (last)" : ""));
+											state.mode =
+												LEN_; /* decode codes */
+											if ( flush === Z_TREES ) {
+												//--- DROPBITS(2) ---//
+												hold >>>= 2;
+												bits -= 2;
+												//---//
+												break inf_leave;
+											}
+											break;
+										case 2 /* dynamic block */:
+											//Tracev((stderr, "inflate:     dynamic codes block%s\n",
+											//        state.last ? " (last)" : ""));
+											state.mode = TABLE;
+											break;
+										case 3:
+											strm.msg = 'invalid block type';
+											state.mode = BAD;
+									}
+									//--- DROPBITS(2) ---//
+									hold >>>= 2;
+									bits -= 2;
+									//---//
+									break;
+								case STORED:
+									//--- BYTEBITS() ---// /* go to byte boundary */
+									hold >>>= bits & 7;
+									bits -= bits & 7;
+									//---//
+									//=== NEEDBITS(32); */
+									while ( bits < 32 ) {
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										have--;
+										hold += input[ next++ ] << bits;
+										bits += 8;
+									}
+									//===//
+									if (
+										( hold & 0xffff ) !==
+										( ( hold >>> 16 ) ^ 0xffff )
+									) {
+										strm.msg =
+											'invalid stored block lengths';
+										state.mode = BAD;
+										break;
+									}
+									state.length = hold & 0xffff;
+									//Tracev((stderr, "inflate:       stored length %u\n",
+									//        state.length));
+									//=== INITBITS();
+									hold = 0;
+									bits = 0;
+									//===//
+									state.mode = COPY_;
+									if ( flush === Z_TREES ) {
+										break inf_leave;
+									}
+								/* falls through */
+								case COPY_:
+									state.mode = COPY;
+								/* falls through */
+								case COPY:
+									copy = state.length;
+									if ( copy ) {
+										if ( copy > have ) {
+											copy = have;
+										}
+										if ( copy > left ) {
+											copy = left;
+										}
+										if ( copy === 0 ) {
+											break inf_leave;
+										}
+										//--- zmemcpy(put, next, copy); ---
+										utils.arraySet(
+											output,
+											input,
+											next,
+											copy,
+											put
+										);
+										//---//
+										have -= copy;
+										next += copy;
+										left -= copy;
+										put += copy;
+										state.length -= copy;
+										break;
+									}
+									//Tracev((stderr, "inflate:       stored end\n"));
+									state.mode = TYPE;
+									break;
+								case TABLE:
+									//=== NEEDBITS(14); */
+									while ( bits < 14 ) {
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										have--;
+										hold += input[ next++ ] << bits;
+										bits += 8;
+									}
+									//===//
+									state.nlen =
+										( hold & 0x1f ) /*BITS(5)*/ + 257;
+									//--- DROPBITS(5) ---//
+									hold >>>= 5;
+									bits -= 5;
+									//---//
+									state.ndist =
+										( hold & 0x1f ) /*BITS(5)*/ + 1;
+									//--- DROPBITS(5) ---//
+									hold >>>= 5;
+									bits -= 5;
+									//---//
+									state.ncode =
+										( hold & 0x0f ) /*BITS(4)*/ + 4;
+									//--- DROPBITS(4) ---//
+									hold >>>= 4;
+									bits -= 4;
+									//---//
+									//#ifndef PKZIP_BUG_WORKAROUND
+									if (
+										state.nlen > 286 ||
+										state.ndist > 30
+									) {
+										strm.msg =
+											'too many length or distance symbols';
+										state.mode = BAD;
+										break;
+									}
+									//#endif
+									//Tracev((stderr, "inflate:       table sizes ok\n"));
+									state.have = 0;
+									state.mode = LENLENS;
+								/* falls through */
+								case LENLENS:
+									while ( state.have < state.ncode ) {
+										//=== NEEDBITS(3);
+										while ( bits < 3 ) {
+											if ( have === 0 ) {
+												break inf_leave;
+											}
+											have--;
+											hold += input[ next++ ] << bits;
+											bits += 8;
+										}
+										//===//
+										state.lens[ order[ state.have++ ] ] =
+											hold & 0x07; //BITS(3);
+										//--- DROPBITS(3) ---//
+										hold >>>= 3;
+										bits -= 3;
+										//---//
+									}
+									while ( state.have < 19 ) {
+										state.lens[ order[ state.have++ ] ] = 0;
+									}
+									// We have separate tables & no pointers. 2 commented lines below not needed.
+									//state.next = state.codes;
+									//state.lencode = state.next;
+									// Switch to use dynamic table
+									state.lencode = state.lendyn;
+									state.lenbits = 7;
+
+									opts = { bits: state.lenbits };
+									ret = inflate_table(
+										CODES,
+										state.lens,
+										0,
+										19,
+										state.lencode,
+										0,
+										state.work,
+										opts
+									);
+									state.lenbits = opts.bits;
+
+									if ( ret ) {
+										strm.msg = 'invalid code lengths set';
+										state.mode = BAD;
+										break;
+									}
+									//Tracev((stderr, "inflate:       code lengths ok\n"));
+									state.have = 0;
+									state.mode = CODELENS;
+								/* falls through */
+								case CODELENS:
+									while (
+										state.have <
+										state.nlen + state.ndist
+									) {
+										for (;;) {
+											here =
+												state.lencode[
+													hold &
+														( ( 1 <<
+															state.lenbits ) -
+															1 )
+												]; /*BITS(state.lenbits)*/
+											here_bits = here >>> 24;
+											here_op = ( here >>> 16 ) & 0xff;
+											here_val = here & 0xffff;
+
+											if ( here_bits <= bits ) {
+												break;
+											}
+											//--- PULLBYTE() ---//
+											if ( have === 0 ) {
+												break inf_leave;
+											}
+											have--;
+											hold += input[ next++ ] << bits;
+											bits += 8;
+											//---//
+										}
+										if ( here_val < 16 ) {
+											//--- DROPBITS(here.bits) ---//
+											hold >>>= here_bits;
+											bits -= here_bits;
+											//---//
+											state.lens[ state.have++ ] =
+												here_val;
+										} else {
+											if ( here_val === 16 ) {
+												//=== NEEDBITS(here.bits + 2);
+												n = here_bits + 2;
+												while ( bits < n ) {
+													if ( have === 0 ) {
+														break inf_leave;
+													}
+													have--;
+													hold +=
+														input[ next++ ] << bits;
+													bits += 8;
+												}
+												//===//
+												//--- DROPBITS(here.bits) ---//
+												hold >>>= here_bits;
+												bits -= here_bits;
+												//---//
+												if ( state.have === 0 ) {
+													strm.msg =
+														'invalid bit length repeat';
+													state.mode = BAD;
+													break;
+												}
+												len =
+													state.lens[
+														state.have - 1
+													];
+												copy = 3 + ( hold & 0x03 ); //BITS(2);
+												//--- DROPBITS(2) ---//
+												hold >>>= 2;
+												bits -= 2;
+												//---//
+											} else if ( here_val === 17 ) {
+												//=== NEEDBITS(here.bits + 3);
+												n = here_bits + 3;
+												while ( bits < n ) {
+													if ( have === 0 ) {
+														break inf_leave;
+													}
+													have--;
+													hold +=
+														input[ next++ ] << bits;
+													bits += 8;
+												}
+												//===//
+												//--- DROPBITS(here.bits) ---//
+												hold >>>= here_bits;
+												bits -= here_bits;
+												//---//
+												len = 0;
+												copy = 3 + ( hold & 0x07 ); //BITS(3);
+												//--- DROPBITS(3) ---//
+												hold >>>= 3;
+												bits -= 3;
+												//---//
+											} else {
+												//=== NEEDBITS(here.bits + 7);
+												n = here_bits + 7;
+												while ( bits < n ) {
+													if ( have === 0 ) {
+														break inf_leave;
+													}
+													have--;
+													hold +=
+														input[ next++ ] << bits;
+													bits += 8;
+												}
+												//===//
+												//--- DROPBITS(here.bits) ---//
+												hold >>>= here_bits;
+												bits -= here_bits;
+												//---//
+												len = 0;
+												copy = 11 + ( hold & 0x7f ); //BITS(7);
+												//--- DROPBITS(7) ---//
+												hold >>>= 7;
+												bits -= 7;
+												//---//
+											}
+											if (
+												state.have + copy >
+												state.nlen + state.ndist
+											) {
+												strm.msg =
+													'invalid bit length repeat';
+												state.mode = BAD;
+												break;
+											}
+											while ( copy-- ) {
+												state.lens[ state.have++ ] =
+													len;
+											}
+										}
+									}
+
+									/* handle error breaks in while */
+									if ( state.mode === BAD ) {
+										break;
+									}
+
+									/* check for end-of-block code (better have one) */
+									if ( state.lens[ 256 ] === 0 ) {
+										strm.msg =
+											'invalid code -- missing end-of-block';
+										state.mode = BAD;
+										break;
+									}
+
+									/* build code tables -- note: do not change the lenbits or distbits
+             values here (9 and 6) without reading the comments in inftrees.h
+             concerning the ENOUGH constants, which depend on those values */
+									state.lenbits = 9;
+
+									opts = { bits: state.lenbits };
+									ret = inflate_table(
+										LENS,
+										state.lens,
+										0,
+										state.nlen,
+										state.lencode,
+										0,
+										state.work,
+										opts
+									);
+									// We have separate tables & no pointers. 2 commented lines below not needed.
+									// state.next_index = opts.table_index;
+									state.lenbits = opts.bits;
+									// state.lencode = state.next;
+
+									if ( ret ) {
+										strm.msg =
+											'invalid literal/lengths set';
+										state.mode = BAD;
+										break;
+									}
+
+									state.distbits = 6;
+									//state.distcode.copy(state.codes);
+									// Switch to use dynamic table
+									state.distcode = state.distdyn;
+									opts = { bits: state.distbits };
+									ret = inflate_table(
+										DISTS,
+										state.lens,
+										state.nlen,
+										state.ndist,
+										state.distcode,
+										0,
+										state.work,
+										opts
+									);
+									// We have separate tables & no pointers. 2 commented lines below not needed.
+									// state.next_index = opts.table_index;
+									state.distbits = opts.bits;
+									// state.distcode = state.next;
+
+									if ( ret ) {
+										strm.msg = 'invalid distances set';
+										state.mode = BAD;
+										break;
+									}
+									//Tracev((stderr, 'inflate:       codes ok\n'));
+									state.mode = LEN_;
+									if ( flush === Z_TREES ) {
+										break inf_leave;
+									}
+								/* falls through */
+								case LEN_:
+									state.mode = LEN;
+								/* falls through */
+								case LEN:
+									if ( have >= 6 && left >= 258 ) {
+										//--- RESTORE() ---
+										strm.next_out = put;
+										strm.avail_out = left;
+										strm.next_in = next;
+										strm.avail_in = have;
+										state.hold = hold;
+										state.bits = bits;
+										//---
+										inflate_fast( strm, _out );
+										//--- LOAD() ---
+										put = strm.next_out;
+										output = strm.output;
+										left = strm.avail_out;
+										next = strm.next_in;
+										input = strm.input;
+										have = strm.avail_in;
+										hold = state.hold;
+										bits = state.bits;
+										//---
+
+										if ( state.mode === TYPE ) {
+											state.back = -1;
+										}
+										break;
+									}
+									state.back = 0;
+									for (;;) {
+										here =
+											state.lencode[
+												hold &
+													( ( 1 << state.lenbits ) -
+														1 )
+											]; /*BITS(state.lenbits)*/
+										here_bits = here >>> 24;
+										here_op = ( here >>> 16 ) & 0xff;
+										here_val = here & 0xffff;
+
+										if ( here_bits <= bits ) {
+											break;
+										}
+										//--- PULLBYTE() ---//
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										have--;
+										hold += input[ next++ ] << bits;
+										bits += 8;
+										//---//
+									}
+									if ( here_op && ( here_op & 0xf0 ) === 0 ) {
+										last_bits = here_bits;
+										last_op = here_op;
+										last_val = here_val;
+										for (;;) {
+											here =
+												state.lencode[
+													last_val +
+														( ( hold &
+															( ( 1 <<
+																( last_bits +
+																	last_op ) ) -
+																1 ) ) /*BITS(last.bits + last.op)*/ >>
+															last_bits )
+												];
+											here_bits = here >>> 24;
+											here_op = ( here >>> 16 ) & 0xff;
+											here_val = here & 0xffff;
+
+											if (
+												last_bits + here_bits <=
+												bits
+											) {
+												break;
+											}
+											//--- PULLBYTE() ---//
+											if ( have === 0 ) {
+												break inf_leave;
+											}
+											have--;
+											hold += input[ next++ ] << bits;
+											bits += 8;
+											//---//
+										}
+										//--- DROPBITS(last.bits) ---//
+										hold >>>= last_bits;
+										bits -= last_bits;
+										//---//
+										state.back += last_bits;
+									}
+									//--- DROPBITS(here.bits) ---//
+									hold >>>= here_bits;
+									bits -= here_bits;
+									//---//
+									state.back += here_bits;
+									state.length = here_val;
+									if ( here_op === 0 ) {
+										//Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+										//        "inflate:         literal '%c'\n" :
+										//        "inflate:         literal 0x%02x\n", here.val));
+										state.mode = LIT;
+										break;
+									}
+									if ( here_op & 32 ) {
+										//Tracevv((stderr, "inflate:         end of block\n"));
+										state.back = -1;
+										state.mode = TYPE;
+										break;
+									}
+									if ( here_op & 64 ) {
+										strm.msg =
+											'invalid literal/length code';
+										state.mode = BAD;
+										break;
+									}
+									state.extra = here_op & 15;
+									state.mode = LENEXT;
+								/* falls through */
+								case LENEXT:
+									if ( state.extra ) {
+										//=== NEEDBITS(state.extra);
+										n = state.extra;
+										while ( bits < n ) {
+											if ( have === 0 ) {
+												break inf_leave;
+											}
+											have--;
+											hold += input[ next++ ] << bits;
+											bits += 8;
+										}
+										//===//
+										state.length +=
+											hold &
+											( ( 1 << state.extra ) -
+												1 ) /*BITS(state.extra)*/;
+										//--- DROPBITS(state.extra) ---//
+										hold >>>= state.extra;
+										bits -= state.extra;
+										//---//
+										state.back += state.extra;
+									}
+									//Tracevv((stderr, "inflate:         length %u\n", state.length));
+									state.was = state.length;
+									state.mode = DIST;
+								/* falls through */
+								case DIST:
+									for (;;) {
+										here =
+											state.distcode[
+												hold &
+													( ( 1 << state.distbits ) -
+														1 )
+											]; /*BITS(state.distbits)*/
+										here_bits = here >>> 24;
+										here_op = ( here >>> 16 ) & 0xff;
+										here_val = here & 0xffff;
+
+										if ( here_bits <= bits ) {
+											break;
+										}
+										//--- PULLBYTE() ---//
+										if ( have === 0 ) {
+											break inf_leave;
+										}
+										have--;
+										hold += input[ next++ ] << bits;
+										bits += 8;
+										//---//
+									}
+									if ( ( here_op & 0xf0 ) === 0 ) {
+										last_bits = here_bits;
+										last_op = here_op;
+										last_val = here_val;
+										for (;;) {
+											here =
+												state.distcode[
+													last_val +
+														( ( hold &
+															( ( 1 <<
+																( last_bits +
+																	last_op ) ) -
+																1 ) ) /*BITS(last.bits + last.op)*/ >>
+															last_bits )
+												];
+											here_bits = here >>> 24;
+											here_op = ( here >>> 16 ) & 0xff;
+											here_val = here & 0xffff;
+
+											if (
+												last_bits + here_bits <=
+												bits
+											) {
+												break;
+											}
+											//--- PULLBYTE() ---//
+											if ( have === 0 ) {
+												break inf_leave;
+											}
+											have--;
+											hold += input[ next++ ] << bits;
+											bits += 8;
+											//---//
+										}
+										//--- DROPBITS(last.bits) ---//
+										hold >>>= last_bits;
+										bits -= last_bits;
+										//---//
+										state.back += last_bits;
+									}
+									//--- DROPBITS(here.bits) ---//
+									hold >>>= here_bits;
+									bits -= here_bits;
+									//---//
+									state.back += here_bits;
+									if ( here_op & 64 ) {
+										strm.msg = 'invalid distance code';
+										state.mode = BAD;
+										break;
+									}
+									state.offset = here_val;
+									state.extra = here_op & 15;
+									state.mode = DISTEXT;
+								/* falls through */
+								case DISTEXT:
+									if ( state.extra ) {
+										//=== NEEDBITS(state.extra);
+										n = state.extra;
+										while ( bits < n ) {
+											if ( have === 0 ) {
+												break inf_leave;
+											}
+											have--;
+											hold += input[ next++ ] << bits;
+											bits += 8;
+										}
+										//===//
+										state.offset +=
+											hold &
+											( ( 1 << state.extra ) -
+												1 ) /*BITS(state.extra)*/;
+										//--- DROPBITS(state.extra) ---//
+										hold >>>= state.extra;
+										bits -= state.extra;
+										//---//
+										state.back += state.extra;
+									}
+									//#ifdef INFLATE_STRICT
+									if ( state.offset > state.dmax ) {
+										strm.msg =
+											'invalid distance too far back';
+										state.mode = BAD;
+										break;
+									}
+									//#endif
+									//Tracevv((stderr, "inflate:         distance %u\n", state.offset));
+									state.mode = MATCH;
+								/* falls through */
+								case MATCH:
+									if ( left === 0 ) {
+										break inf_leave;
+									}
+									copy = _out - left;
+									if ( state.offset > copy ) {
+										/* copy from window */
+										copy = state.offset - copy;
+										if ( copy > state.whave ) {
+											if ( state.sane ) {
+												strm.msg =
+													'invalid distance too far back';
+												state.mode = BAD;
+												break;
+											}
+											// (!) This block is disabled in zlib defaults,
+											// don't enable it for binary compatibility
+											//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+											//          Trace((stderr, "inflate.c too far\n"));
+											//          copy -= state.whave;
+											//          if (copy > state.length) { copy = state.length; }
+											//          if (copy > left) { copy = left; }
+											//          left -= copy;
+											//          state.length -= copy;
+											//          do {
+											//            output[put++] = 0;
+											//          } while (--copy);
+											//          if (state.length === 0) { state.mode = LEN; }
+											//          break;
+											//#endif
+										}
+										if ( copy > state.wnext ) {
+											copy -= state.wnext;
+											from = state.wsize - copy;
+										} else {
+											from = state.wnext - copy;
+										}
+										if ( copy > state.length ) {
+											copy = state.length;
+										}
+										from_source = state.window;
+									} else {
+										/* copy from output */
+										from_source = output;
+										from = put - state.offset;
+										copy = state.length;
+									}
+									if ( copy > left ) {
+										copy = left;
+									}
+									left -= copy;
+									state.length -= copy;
+									do {
+										output[ put++ ] = from_source[ from++ ];
+									} while ( --copy );
+									if ( state.length === 0 ) {
+										state.mode = LEN;
+									}
+									break;
+								case LIT:
+									if ( left === 0 ) {
+										break inf_leave;
+									}
+									output[ put++ ] = state.length;
+									left--;
+									state.mode = LEN;
+									break;
+								case CHECK:
+									if ( state.wrap ) {
+										//=== NEEDBITS(32);
+										while ( bits < 32 ) {
+											if ( have === 0 ) {
+												break inf_leave;
+											}
+											have--;
+											// Use '|' instead of '+' to make sure that result is signed
+											hold |= input[ next++ ] << bits;
+											bits += 8;
+										}
+										//===//
+										_out -= left;
+										strm.total_out += _out;
+										state.total += _out;
+										if ( _out ) {
+											strm.adler = state.check =
+												/*UPDATE(state.check, put - _out, _out);*/
+												state.flags
+													? crc32(
+															state.check,
+															output,
+															_out,
+															put - _out
+													  )
+													: adler32(
+															state.check,
+															output,
+															_out,
+															put - _out
+													  );
+										}
+										_out = left;
+										// NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
+										if (
+											( state.flags
+												? hold
+												: zswap32( hold ) ) !==
+											state.check
+										) {
+											strm.msg = 'incorrect data check';
+											state.mode = BAD;
+											break;
+										}
+										//=== INITBITS();
+										hold = 0;
+										bits = 0;
+										//===//
+										//Tracev((stderr, "inflate:   check matches trailer\n"));
+									}
+									state.mode = LENGTH;
+								/* falls through */
+								case LENGTH:
+									if ( state.wrap && state.flags ) {
+										//=== NEEDBITS(32);
+										while ( bits < 32 ) {
+											if ( have === 0 ) {
+												break inf_leave;
+											}
+											have--;
+											hold += input[ next++ ] << bits;
+											bits += 8;
+										}
+										//===//
+										if (
+											hold !==
+											( state.total & 0xffffffff )
+										) {
+											strm.msg = 'incorrect length check';
+											state.mode = BAD;
+											break;
+										}
+										//=== INITBITS();
+										hold = 0;
+										bits = 0;
+										//===//
+										//Tracev((stderr, "inflate:   length matches trailer\n"));
+									}
+									state.mode = DONE;
+								/* falls through */
+								case DONE:
+									ret = Z_STREAM_END;
+									break inf_leave;
+								case BAD:
+									ret = Z_DATA_ERROR;
+									break inf_leave;
+								case MEM:
+									return Z_MEM_ERROR;
+								case SYNC:
+								/* falls through */
+								default:
+									return Z_STREAM_ERROR;
+							}
+						}
+
+						// inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
+
+						/*
+       Return from inflate(), updating the total counts and the check value.
+       If there was no progress during the inflate() call, return a buffer
+       error.  Call updatewindow() to create and/or update the window state.
+       Note: a memory error from inflate() is non-recoverable.
+     */
+
+						//--- RESTORE() ---
+						strm.next_out = put;
+						strm.avail_out = left;
+						strm.next_in = next;
+						strm.avail_in = have;
+						state.hold = hold;
+						state.bits = bits;
+						//---
+
+						if (
+							state.wsize ||
+							( _out !== strm.avail_out &&
+								state.mode < BAD &&
+								( state.mode < CHECK || flush !== Z_FINISH ) )
+						) {
+							if (
+								updatewindow(
+									strm,
+									strm.output,
+									strm.next_out,
+									_out - strm.avail_out
+								)
+							) {
+								state.mode = MEM;
+								return Z_MEM_ERROR;
+							}
+						}
+						_in -= strm.avail_in;
+						_out -= strm.avail_out;
+						strm.total_in += _in;
+						strm.total_out += _out;
+						state.total += _out;
+						if ( state.wrap && _out ) {
+							strm.adler = state.check =
+								/*UPDATE(state.check, strm.next_out - _out, _out);*/
+								state.flags
+									? crc32(
+											state.check,
+											output,
+											_out,
+											strm.next_out - _out
+									  )
+									: adler32(
+											state.check,
+											output,
+											_out,
+											strm.next_out - _out
+									  );
+						}
+						strm.data_type =
+							state.bits +
+							( state.last ? 64 : 0 ) +
+							( state.mode === TYPE ? 128 : 0 ) +
+							( state.mode === LEN_ || state.mode === COPY_
+								? 256
+								: 0 );
+						if (
+							( ( _in === 0 && _out === 0 ) ||
+								flush === Z_FINISH ) &&
+							ret === Z_OK
+						) {
+							ret = Z_BUF_ERROR;
+						}
+						return ret;
+					}
+
+					function inflateEnd( strm ) {
+						if (
+							! strm ||
+							! strm.state /*|| strm->zfree == (free_func)0*/
+						) {
+							return Z_STREAM_ERROR;
+						}
+
+						var state = strm.state;
+						if ( state.window ) {
+							state.window = null;
+						}
+						strm.state = null;
+						return Z_OK;
+					}
+
+					function inflateGetHeader( strm, head ) {
+						var state;
+
+						/* check state */
+						if ( ! strm || ! strm.state ) {
+							return Z_STREAM_ERROR;
+						}
+						state = strm.state;
+						if ( ( state.wrap & 2 ) === 0 ) {
+							return Z_STREAM_ERROR;
+						}
+
+						/* save header structure */
+						state.head = head;
+						head.done = false;
+						return Z_OK;
+					}
+
+					function inflateSetDictionary( strm, dictionary ) {
+						var dictLength = dictionary.length;
+
+						var state;
+						var dictid;
+						var ret;
+
+						/* check state */
+						if (
+							! strm /* == Z_NULL */ ||
+							! strm.state /* == Z_NULL */
+						) {
+							return Z_STREAM_ERROR;
+						}
+						state = strm.state;
+
+						if ( state.wrap !== 0 && state.mode !== DICT ) {
+							return Z_STREAM_ERROR;
+						}
+
+						/* check for correct dictionary identifier */
+						if ( state.mode === DICT ) {
+							dictid = 1; /* adler32(0, null, 0)*/
+							/* dictid = adler32(dictid, dictionary, dictLength); */
+							dictid = adler32(
+								dictid,
+								dictionary,
+								dictLength,
+								0
+							);
+							if ( dictid !== state.check ) {
+								return Z_DATA_ERROR;
+							}
+						}
+						/* copy dictionary to window using updatewindow(), which will amend the
+     existing dictionary if appropriate */
+						ret = updatewindow(
+							strm,
+							dictionary,
+							dictLength,
+							dictLength
+						);
+						if ( ret ) {
+							state.mode = MEM;
+							return Z_MEM_ERROR;
+						}
+						state.havedict = 1;
+						// Tracev((stderr, "inflate:   dictionary set\n"));
+						return Z_OK;
+					}
+
+					exports.inflateReset = inflateReset;
+					exports.inflateReset2 = inflateReset2;
+					exports.inflateResetKeep = inflateResetKeep;
+					exports.inflateInit = inflateInit;
+					exports.inflateInit2 = inflateInit2;
+					exports.inflate = inflate;
+					exports.inflateEnd = inflateEnd;
+					exports.inflateGetHeader = inflateGetHeader;
+					exports.inflateSetDictionary = inflateSetDictionary;
+					exports.inflateInfo = 'pako inflate (from Nodeca project)';
+
+					/* Not implemented
+  exports.inflateCopy = inflateCopy;
+  exports.inflateGetDictionary = inflateGetDictionary;
+  exports.inflateMark = inflateMark;
+  exports.inflatePrime = inflatePrime;
+  exports.inflateSync = inflateSync;
+  exports.inflateSyncPoint = inflateSyncPoint;
+  exports.inflateUndermine = inflateUndermine;
+  */
+				},
+				{
+					'../utils/common': 1,
+					'./adler32': 3,
+					'./crc32': 5,
+					'./inffast': 7,
+					'./inftrees': 9,
+				},
+			],
+			9: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+					// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+					//
+					// This software is provided 'as-is', without any express or implied
+					// warranty. In no event will the authors be held liable for any damages
+					// arising from the use of this software.
+					//
+					// Permission is granted to anyone to use this software for any purpose,
+					// including commercial applications, and to alter it and redistribute it
+					// freely, subject to the following restrictions:
+					//
+					// 1. The origin of this software must not be misrepresented; you must not
+					//   claim that you wrote the original software. If you use this software
+					//   in a product, an acknowledgment in the product documentation would be
+					//   appreciated but is not required.
+					// 2. Altered source versions must be plainly marked as such, and must not be
+					//   misrepresented as being the original software.
+					// 3. This notice may not be removed or altered from any source distribution.
+
+					var utils = require( '../utils/common' );
+
+					var MAXBITS = 15;
+					var ENOUGH_LENS = 852;
+					var ENOUGH_DISTS = 592;
+					//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
+
+					var CODES = 0;
+					var LENS = 1;
+					var DISTS = 2;
+
+					var lbase = [
+						/* Length codes 257..285 base */ 3, 4, 5, 6, 7, 8, 9,
+						10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67,
+						83, 99, 115, 131, 163, 195, 227, 258, 0, 0,
+					];
+
+					var lext = [
+						/* Length codes 257..285 extra */ 16, 16, 16, 16, 16,
+						16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19,
+						19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78,
+					];
+
+					var dbase = [
+						/* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13,
+						17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769,
+						1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385,
+						24577, 0, 0,
+					];
+
+					var dext = [
+						/* Distance codes 0..29 extra */ 16, 16, 16, 16, 17, 17,
+						18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24,
+						25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64,
+					];
+
+					module.exports = function inflate_table(
+						type,
+						lens,
+						lens_index,
+						codes,
+						table,
+						table_index,
+						work,
+						opts
+					) {
+						var bits = opts.bits;
+						//here = opts.here; /* table entry for duplication */
+
+						var len = 0; /* a code's length in bits */
+						var sym = 0; /* index of code symbols */
+						var min = 0,
+							max = 0; /* minimum and maximum code lengths */
+						var root = 0; /* number of index bits for root table */
+						var curr = 0; /* number of index bits for current table */
+						var drop = 0; /* code bits to drop for sub-table */
+						var left = 0; /* number of prefix codes available */
+						var used = 0; /* code entries in table used */
+						var huff = 0; /* Huffman code */
+						var incr; /* for incrementing code, index */
+						var fill; /* index for replicating entries */
+						var low; /* low bits for current root entry */
+						var mask; /* mask for low root bits */
+						var next; /* next available space in table */
+						var base = null; /* base value table to use */
+						var base_index = 0;
+						//  var shoextra;    /* extra bits table to use */
+						var end; /* use base and extra for symbol > end */
+						var count = new utils.Buf16( MAXBITS + 1 ); //[MAXBITS+1];    /* number of codes of each length */
+						var offs = new utils.Buf16( MAXBITS + 1 ); //[MAXBITS+1];     /* offsets in table for each length */
+						var extra = null;
+						var extra_index = 0;
+
+						var here_bits, here_op, here_val;
+
+						/*
+     Process a set of code lengths to create a canonical Huffman code.  The
+     code lengths are lens[0..codes-1].  Each length corresponds to the
+     symbols 0..codes-1.  The Huffman code is generated by first sorting the
+     symbols by length from short to long, and retaining the symbol order
+     for codes with equal lengths.  Then the code starts with all zero bits
+     for the first code of the shortest length, and the codes are integer
+     increments for the same length, and zeros are appended as the length
+     increases.  For the deflate format, these bits are stored backwards
+     from their more natural integer increment ordering, and so when the
+     decoding tables are built in the large loop below, the integer codes
+     are incremented backwards.
+
+     This routine assumes, but does not check, that all of the entries in
+     lens[] are in the range 0..MAXBITS.  The caller must assure this.
+     1..MAXBITS is interpreted as that code length.  zero means that that
+     symbol does not occur in this code.
+
+     The codes are sorted by computing a count of codes for each length,
+     creating from that a table of starting indices for each length in the
+     sorted table, and then entering the symbols in order in the sorted
+     table.  The sorted table is work[], with that space being provided by
+     the caller.
+
+     The length counts are used for other purposes as well, i.e. finding
+     the minimum and maximum length codes, determining if there are any
+     codes at all, checking for a valid set of lengths, and looking ahead
+     at length counts to determine sub-table sizes when building the
+     decoding tables.
+     */
+
+						/* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
+						for ( len = 0; len <= MAXBITS; len++ ) {
+							count[ len ] = 0;
+						}
+						for ( sym = 0; sym < codes; sym++ ) {
+							count[ lens[ lens_index + sym ] ]++;
+						}
+
+						/* bound code lengths, force root to be within code lengths */
+						root = bits;
+						for ( max = MAXBITS; max >= 1; max-- ) {
+							if ( count[ max ] !== 0 ) {
+								break;
+							}
+						}
+						if ( root > max ) {
+							root = max;
+						}
+						if ( max === 0 ) {
+							/* no symbols to code at all */
+							//table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
+							//table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
+							//table.val[opts.table_index++] = 0;   //here.val = (var short)0;
+							table[ table_index++ ] =
+								( 1 << 24 ) | ( 64 << 16 ) | 0;
+
+							//table.op[opts.table_index] = 64;
+							//table.bits[opts.table_index] = 1;
+							//table.val[opts.table_index++] = 0;
+							table[ table_index++ ] =
+								( 1 << 24 ) | ( 64 << 16 ) | 0;
+
+							opts.bits = 1;
+							return 0; /* no symbols, but wait for decoding to report error */
+						}
+						for ( min = 1; min < max; min++ ) {
+							if ( count[ min ] !== 0 ) {
+								break;
+							}
+						}
+						if ( root < min ) {
+							root = min;
+						}
+
+						/* check for an over-subscribed or incomplete set of lengths */
+						left = 1;
+						for ( len = 1; len <= MAXBITS; len++ ) {
+							left <<= 1;
+							left -= count[ len ];
+							if ( left < 0 ) {
+								return -1;
+							} /* over-subscribed */
+						}
+						if ( left > 0 && ( type === CODES || max !== 1 ) ) {
+							return -1; /* incomplete set */
+						}
+
+						/* generate offsets into symbol table for each length for sorting */
+						offs[ 1 ] = 0;
+						for ( len = 1; len < MAXBITS; len++ ) {
+							offs[ len + 1 ] = offs[ len ] + count[ len ];
+						}
+
+						/* sort symbols by length, by symbol order within each length */
+						for ( sym = 0; sym < codes; sym++ ) {
+							if ( lens[ lens_index + sym ] !== 0 ) {
+								work[ offs[ lens[ lens_index + sym ] ]++ ] =
+									sym;
+							}
+						}
+
+						/*
+     Create and fill in decoding tables.  In this loop, the table being
+     filled is at next and has curr index bits.  The code being used is huff
+     with length len.  That code is converted to an index by dropping drop
+     bits off of the bottom.  For codes where len is less than drop + curr,
+     those top drop + curr - len bits are incremented through all values to
+     fill the table with replicated entries.
+
+     root is the number of index bits for the root table.  When len exceeds
+     root, sub-tables are created pointed to by the root entry with an index
+     of the low root bits of huff.  This is saved in low to check for when a
+     new sub-table should be started.  drop is zero when the root table is
+     being filled, and drop is root when sub-tables are being filled.
+
+     When a new sub-table is needed, it is necessary to look ahead in the
+     code lengths to determine what size sub-table is needed.  The length
+     counts are used for this, and so count[] is decremented as codes are
+     entered in the tables.
+
+     used keeps track of how many table entries have been allocated from the
+     provided *table space.  It is checked for LENS and DIST tables against
+     the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
+     the initial root table size constants.  See the comments in inftrees.h
+     for more information.
+
+     sym increments through all symbols, and the loop terminates when
+     all codes of length max, i.e. all codes, have been processed.  This
+     routine permits incomplete codes, so another loop after this one fills
+     in the rest of the decoding tables with invalid code markers.
+     */
+
+						/* set up for code type */
+						// poor man optimization - use if-else instead of switch,
+						// to avoid deopts in old v8
+						if ( type === CODES ) {
+							base = extra = work; /* dummy value--not used */
+							end = 19;
+						} else if ( type === LENS ) {
+							base = lbase;
+							base_index -= 257;
+							extra = lext;
+							extra_index -= 257;
+							end = 256;
+						} else {
+							/* DISTS */
+							base = dbase;
+							extra = dext;
+							end = -1;
+						}
+
+						/* initialize opts for loop */
+						huff = 0; /* starting code */
+						sym = 0; /* starting code symbol */
+						len = min; /* starting code length */
+						next = table_index; /* current table to fill in */
+						curr = root; /* current table index bits */
+						drop = 0; /* current bits to drop from code for index */
+						low = -1; /* trigger new sub-table when len > root */
+						used = 1 << root; /* use root table entries */
+						mask = used - 1; /* mask for comparing low */
+
+						/* check available table space */
+						if (
+							( type === LENS && used > ENOUGH_LENS ) ||
+							( type === DISTS && used > ENOUGH_DISTS )
+						) {
+							return 1;
+						}
+
+						/* process all codes and make table entries */
+						for (;;) {
+							/* create table entry */
+							here_bits = len - drop;
+							if ( work[ sym ] < end ) {
+								here_op = 0;
+								here_val = work[ sym ];
+							} else if ( work[ sym ] > end ) {
+								here_op = extra[ extra_index + work[ sym ] ];
+								here_val = base[ base_index + work[ sym ] ];
+							} else {
+								here_op = 32 + 64; /* end of block */
+								here_val = 0;
+							}
+
+							/* replicate for those indices with low len bits equal to huff */
+							incr = 1 << ( len - drop );
+							fill = 1 << curr;
+							min = fill; /* save offset to next table */
+							do {
+								fill -= incr;
+								table[ next + ( huff >> drop ) + fill ] =
+									( here_bits << 24 ) |
+									( here_op << 16 ) |
+									here_val |
+									0;
+							} while ( fill !== 0 );
+
+							/* backwards increment the len-bit code huff */
+							incr = 1 << ( len - 1 );
+							while ( huff & incr ) {
+								incr >>= 1;
+							}
+							if ( incr !== 0 ) {
+								huff &= incr - 1;
+								huff += incr;
+							} else {
+								huff = 0;
+							}
+
+							/* go to next symbol, update count, len */
+							sym++;
+							if ( --count[ len ] === 0 ) {
+								if ( len === max ) {
+									break;
+								}
+								len = lens[ lens_index + work[ sym ] ];
+							}
+
+							/* create new sub-table if needed */
+							if ( len > root && ( huff & mask ) !== low ) {
+								/* if first time, transition to sub-tables */
+								if ( drop === 0 ) {
+									drop = root;
+								}
+
+								/* increment past last table */
+								next += min; /* here min is 1 << curr */
+
+								/* determine length of next table */
+								curr = len - drop;
+								left = 1 << curr;
+								while ( curr + drop < max ) {
+									left -= count[ curr + drop ];
+									if ( left <= 0 ) {
+										break;
+									}
+									curr++;
+									left <<= 1;
+								}
+
+								/* check for enough space */
+								used += 1 << curr;
+								if (
+									( type === LENS && used > ENOUGH_LENS ) ||
+									( type === DISTS && used > ENOUGH_DISTS )
+								) {
+									return 1;
+								}
+
+								/* point entry in root table to sub-table */
+								low = huff & mask;
+								/*table.op[low] = curr;
+        table.bits[low] = root;
+        table.val[low] = next - opts.table_index;*/
+								table[ low ] =
+									( root << 24 ) |
+									( curr << 16 ) |
+									( next - table_index ) |
+									0;
+							}
+						}
+
+						/* fill in remaining table entry if code is incomplete (guaranteed to have
+     at most one remaining entry, since if the code is incomplete, the
+     maximum code length that was allowed to get this far is one bit) */
+						if ( huff !== 0 ) {
+							//table.op[next + huff] = 64;            /* invalid code marker */
+							//table.bits[next + huff] = len - drop;
+							//table.val[next + huff] = 0;
+							table[ next + huff ] =
+								( ( len - drop ) << 24 ) | ( 64 << 16 ) | 0;
+						}
+
+						/* set return parameters */
+						//opts.table_index += used;
+						opts.bits = root;
+						return 0;
+					};
+				},
+				{ '../utils/common': 1 },
+			],
+			10: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+					// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+					//
+					// This software is provided 'as-is', without any express or implied
+					// warranty. In no event will the authors be held liable for any damages
+					// arising from the use of this software.
+					//
+					// Permission is granted to anyone to use this software for any purpose,
+					// including commercial applications, and to alter it and redistribute it
+					// freely, subject to the following restrictions:
+					//
+					// 1. The origin of this software must not be misrepresented; you must not
+					//   claim that you wrote the original software. If you use this software
+					//   in a product, an acknowledgment in the product documentation would be
+					//   appreciated but is not required.
+					// 2. Altered source versions must be plainly marked as such, and must not be
+					//   misrepresented as being the original software.
+					// 3. This notice may not be removed or altered from any source distribution.
+
+					module.exports = {
+						2: 'need dictionary' /* Z_NEED_DICT       2  */,
+						1: 'stream end' /* Z_STREAM_END      1  */,
+						0: '' /* Z_OK              0  */,
+						'-1': 'file error' /* Z_ERRNO         (-1) */,
+						'-2': 'stream error' /* Z_STREAM_ERROR  (-2) */,
+						'-3': 'data error' /* Z_DATA_ERROR    (-3) */,
+						'-4': 'insufficient memory' /* Z_MEM_ERROR     (-4) */,
+						'-5': 'buffer error' /* Z_BUF_ERROR     (-5) */,
+						'-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */,
+					};
+				},
+				{},
+			],
+			11: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+					// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+					//
+					// This software is provided 'as-is', without any express or implied
+					// warranty. In no event will the authors be held liable for any damages
+					// arising from the use of this software.
+					//
+					// Permission is granted to anyone to use this software for any purpose,
+					// including commercial applications, and to alter it and redistribute it
+					// freely, subject to the following restrictions:
+					//
+					// 1. The origin of this software must not be misrepresented; you must not
+					//   claim that you wrote the original software. If you use this software
+					//   in a product, an acknowledgment in the product documentation would be
+					//   appreciated but is not required.
+					// 2. Altered source versions must be plainly marked as such, and must not be
+					//   misrepresented as being the original software.
+					// 3. This notice may not be removed or altered from any source distribution.
+
+					function ZStream() {
+						/* next input byte */
+						this.input = null; // JS specific, because we have no pointers
+						this.next_in = 0;
+						/* number of bytes available at input */
+						this.avail_in = 0;
+						/* total number of input bytes read so far */
+						this.total_in = 0;
+						/* next output byte should be put there */
+						this.output = null; // JS specific, because we have no pointers
+						this.next_out = 0;
+						/* remaining free space at output */
+						this.avail_out = 0;
+						/* total number of bytes output so far */
+						this.total_out = 0;
+						/* last error message, NULL if no error */
+						this.msg = '' /*Z_NULL*/;
+						/* not visible by applications */
+						this.state = null;
+						/* best guess about the data type: binary or text */
+						this.data_type = 2 /*Z_UNKNOWN*/;
+						/* adler32 value of the uncompressed data */
+						this.adler = 0;
+					}
+
+					module.exports = ZStream;
+				},
+				{},
+			],
+			'/lib/inflate.js': [
+				function ( require, module, exports ) {
+					'use strict';
+
+					var zlib_inflate = require( './zlib/inflate' );
+					var utils = require( './utils/common' );
+					var strings = require( './utils/strings' );
+					var c = require( './zlib/constants' );
+					var msg = require( './zlib/messages' );
+					var ZStream = require( './zlib/zstream' );
+					var GZheader = require( './zlib/gzheader' );
+
+					var toString = Object.prototype.toString;
+
+					/**
+					 * class Inflate
+					 *
+					 * Generic JS-style wrapper for zlib calls. If you don't need
+					 * streaming behaviour - use more simple functions: [[inflate]]
+					 * and [[inflateRaw]].
+					 **/
+
+					/* internal
+					 * inflate.chunks -> Array
+					 *
+					 * Chunks of output data, if [[Inflate#onData]] not overridden.
+					 **/
+
+					/**
+					 * Inflate.result -> Uint8Array|Array|String
+					 *
+					 * Uncompressed result, generated by default [[Inflate#onData]]
+					 * and [[Inflate#onEnd]] handlers. Filled after you push last chunk
+					 * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you
+					 * push a chunk with explicit flush (call [[Inflate#push]] with
+					 * `Z_SYNC_FLUSH` param).
+					 **/
+
+					/**
+					 * Inflate.err -> Number
+					 *
+					 * Error code after inflate finished. 0 (Z_OK) on success.
+					 * Should be checked if broken data possible.
+					 **/
+
+					/**
+					 * Inflate.msg -> String
+					 *
+					 * Error message, if [[Inflate.err]] != 0
+					 **/
+
+					/**
+					 * new Inflate(options)
+					 * - options (Object): zlib inflate options.
+					 *
+					 * Creates new inflator instance with specified params. Throws exception
+					 * on bad params. Supported options:
+					 *
+					 * - `windowBits`
+					 * - `dictionary`
+					 *
+					 * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+					 * for more information on these.
+					 *
+					 * Additional options, for internal needs:
+					 *
+					 * - `chunkSize` - size of generated data chunks (16K by default)
+					 * - `raw` (Boolean) - do raw inflate
+					 * - `to` (String) - if equal to 'string', then result will be converted
+					 *   from utf8 to utf16 (javascript) string. When string output requested,
+					 *   chunk length can differ from `chunkSize`, depending on content.
+					 *
+					 * By default, when no options set, autodetect deflate/gzip data format via
+					 * wrapper header.
+					 *
+					 * ##### Example:
+					 *
+					 * ```javascript
+					 * var pako = require('pako')
+					 *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+					 *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+					 *
+					 * var inflate = new pako.Inflate({ level: 3});
+					 *
+					 * inflate.push(chunk1, false);
+					 * inflate.push(chunk2, true);  // true -> last chunk
+					 *
+					 * if (inflate.err) { throw new Error(inflate.err); }
+					 *
+					 * console.log(inflate.result);
+					 * ```
+					 **/
+					function Inflate( options ) {
+						if ( ! ( this instanceof Inflate ) )
+							return new Inflate( options );
+
+						this.options = utils.assign(
+							{
+								chunkSize: 16384,
+								windowBits: 0,
+								to: '',
+							},
+							options || {}
+						);
+
+						var opt = this.options;
+
+						// Force window size for `raw` data, if not set directly,
+						// because we have no header for autodetect.
+						if (
+							opt.raw &&
+							opt.windowBits >= 0 &&
+							opt.windowBits < 16
+						) {
+							opt.windowBits = -opt.windowBits;
+							if ( opt.windowBits === 0 ) {
+								opt.windowBits = -15;
+							}
+						}
+
+						// If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
+						if (
+							opt.windowBits >= 0 &&
+							opt.windowBits < 16 &&
+							! ( options && options.windowBits )
+						) {
+							opt.windowBits += 32;
+						}
+
+						// Gzip header has no info about windows size, we can do autodetect only
+						// for deflate. So, if window size not set, force it to max when gzip possible
+						if ( opt.windowBits > 15 && opt.windowBits < 48 ) {
+							// bit 3 (16) -> gzipped data
+							// bit 4 (32) -> autodetect gzip/deflate
+							if ( ( opt.windowBits & 15 ) === 0 ) {
+								opt.windowBits |= 15;
+							}
+						}
+
+						this.err = 0; // error code, if happens (0 = Z_OK)
+						this.msg = ''; // error message
+						this.ended = false; // used to avoid multiple onEnd() calls
+						this.chunks = []; // chunks of compressed data
+
+						this.strm = new ZStream();
+						this.strm.avail_out = 0;
+
+						var status = zlib_inflate.inflateInit2(
+							this.strm,
+							opt.windowBits
+						);
+
+						if ( status !== c.Z_OK ) {
+							throw new Error( msg[ status ] );
+						}
+
+						this.header = new GZheader();
+
+						zlib_inflate.inflateGetHeader( this.strm, this.header );
+
+						// Setup dictionary
+						if ( opt.dictionary ) {
+							// Convert data if needed
+							if ( typeof opt.dictionary === 'string' ) {
+								opt.dictionary = strings.string2buf(
+									opt.dictionary
+								);
+							} else if (
+								toString.call( opt.dictionary ) ===
+								'[object ArrayBuffer]'
+							) {
+								opt.dictionary = new Uint8Array(
+									opt.dictionary
+								);
+							}
+							if ( opt.raw ) {
+								//In raw mode we need to set the dictionary early
+								status = zlib_inflate.inflateSetDictionary(
+									this.strm,
+									opt.dictionary
+								);
+								if ( status !== c.Z_OK ) {
+									throw new Error( msg[ status ] );
+								}
+							}
+						}
+					}
+
+					/**
+					 * Inflate#push(data[, mode]) -> Boolean
+					 * - data (Uint8Array|Array|ArrayBuffer|String): input data
+					 * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+					 *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.
+					 *
+					 * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
+					 * new output chunks. Returns `true` on success. The last data block must have
+					 * mode Z_FINISH (or `true`). That will flush internal pending buffers and call
+					 * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you
+					 * can use mode Z_SYNC_FLUSH, keeping the decompression context.
+					 *
+					 * On fail call [[Inflate#onEnd]] with error code and return false.
+					 *
+					 * We strongly recommend to use `Uint8Array` on input for best speed (output
+					 * format is detected automatically). Also, don't skip last param and always
+					 * use the same type in your code (boolean or number). That will improve JS speed.
+					 *
+					 * For regular `Array`-s make sure all elements are [0..255].
+					 *
+					 * ##### Example
+					 *
+					 * ```javascript
+					 * push(chunk, false); // push one of data chunks
+					 * ...
+					 * push(chunk, true);  // push last chunk
+					 * ```
+					 **/
+					Inflate.prototype.push = function ( data, mode ) {
+						var strm = this.strm;
+						var chunkSize = this.options.chunkSize;
+						var dictionary = this.options.dictionary;
+						var status, _mode;
+						var next_out_utf8, tail, utf8str;
+
+						// Flag to properly process Z_BUF_ERROR on testing inflate call
+						// when we check that all output data was flushed.
+						var allowBufError = false;
+
+						if ( this.ended ) {
+							return false;
+						}
+						_mode =
+							mode === ~~mode
+								? mode
+								: mode === true
+								? c.Z_FINISH
+								: c.Z_NO_FLUSH;
+
+						// Convert data if needed
+						if ( typeof data === 'string' ) {
+							// Only binary strings can be decompressed on practice
+							strm.input = strings.binstring2buf( data );
+						} else if (
+							toString.call( data ) === '[object ArrayBuffer]'
+						) {
+							strm.input = new Uint8Array( data );
+						} else {
+							strm.input = data;
+						}
+
+						strm.next_in = 0;
+						strm.avail_in = strm.input.length;
+
+						do {
+							if ( strm.avail_out === 0 ) {
+								strm.output = new utils.Buf8( chunkSize );
+								strm.next_out = 0;
+								strm.avail_out = chunkSize;
+							}
+
+							status = zlib_inflate.inflate(
+								strm,
+								c.Z_NO_FLUSH
+							); /* no bad return value */
+
+							if ( status === c.Z_NEED_DICT && dictionary ) {
+								status = zlib_inflate.inflateSetDictionary(
+									this.strm,
+									dictionary
+								);
+							}
+
+							if (
+								status === c.Z_BUF_ERROR &&
+								allowBufError === true
+							) {
+								status = c.Z_OK;
+								allowBufError = false;
+							}
+
+							if (
+								status !== c.Z_STREAM_END &&
+								status !== c.Z_OK
+							) {
+								this.onEnd( status );
+								this.ended = true;
+								return false;
+							}
+
+							if ( strm.next_out ) {
+								if (
+									strm.avail_out === 0 ||
+									status === c.Z_STREAM_END ||
+									( strm.avail_in === 0 &&
+										( _mode === c.Z_FINISH ||
+											_mode === c.Z_SYNC_FLUSH ) )
+								) {
+									if ( this.options.to === 'string' ) {
+										next_out_utf8 = strings.utf8border(
+											strm.output,
+											strm.next_out
+										);
+
+										tail = strm.next_out - next_out_utf8;
+										utf8str = strings.buf2string(
+											strm.output,
+											next_out_utf8
+										);
+
+										// move tail
+										strm.next_out = tail;
+										strm.avail_out = chunkSize - tail;
+										if ( tail ) {
+											utils.arraySet(
+												strm.output,
+												strm.output,
+												next_out_utf8,
+												tail,
+												0
+											);
+										}
+
+										this.onData( utf8str );
+									} else {
+										this.onData(
+											utils.shrinkBuf(
+												strm.output,
+												strm.next_out
+											)
+										);
+									}
+								}
+							}
+
+							// When no more input data, we should check that internal inflate buffers
+							// are flushed. The only way to do it when avail_out = 0 - run one more
+							// inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.
+							// Here we set flag to process this error properly.
+							//
+							// NOTE. Deflate does not return error in this case and does not needs such
+							// logic.
+							if ( strm.avail_in === 0 && strm.avail_out === 0 ) {
+								allowBufError = true;
+							}
+						} while (
+							( strm.avail_in > 0 || strm.avail_out === 0 ) &&
+							status !== c.Z_STREAM_END
+						);
+
+						if ( status === c.Z_STREAM_END ) {
+							_mode = c.Z_FINISH;
+						}
+
+						// Finalize on the last chunk.
+						if ( _mode === c.Z_FINISH ) {
+							status = zlib_inflate.inflateEnd( this.strm );
+							this.onEnd( status );
+							this.ended = true;
+							return status === c.Z_OK;
+						}
+
+						// callback interim results if Z_SYNC_FLUSH.
+						if ( _mode === c.Z_SYNC_FLUSH ) {
+							this.onEnd( c.Z_OK );
+							strm.avail_out = 0;
+							return true;
+						}
+
+						return true;
+					};
+
+					/**
+					 * Inflate#onData(chunk) -> Void
+					 * - chunk (Uint8Array|Array|String): output data. Type of array depends
+					 *   on js engine support. When string output requested, each chunk
+					 *   will be string.
+					 *
+					 * By default, stores data blocks in `chunks[]` property and glue
+					 * those in `onEnd`. Override this handler, if you need another behaviour.
+					 **/
+					Inflate.prototype.onData = function ( chunk ) {
+						this.chunks.push( chunk );
+					};
+
+					/**
+					 * Inflate#onEnd(status) -> Void
+					 * - status (Number): inflate status. 0 (Z_OK) on success,
+					 *   other if not.
+					 *
+					 * Called either after you tell inflate that the input stream is
+					 * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
+					 * or if an error happened. By default - join collected chunks,
+					 * free memory and fill `results` / `err` properties.
+					 **/
+					Inflate.prototype.onEnd = function ( status ) {
+						// On success - join
+						if ( status === c.Z_OK ) {
+							if ( this.options.to === 'string' ) {
+								// Glue & convert here, until we teach pako to send
+								// utf8 aligned strings to onData
+								this.result = this.chunks.join( '' );
+							} else {
+								this.result = utils.flattenChunks(
+									this.chunks
+								);
+							}
+						}
+						this.chunks = [];
+						this.err = status;
+						this.msg = this.strm.msg;
+					};
+
+					/**
+					 * inflate(data[, options]) -> Uint8Array|Array|String
+					 * - data (Uint8Array|Array|String): input data to decompress.
+					 * - options (Object): zlib inflate options.
+					 *
+					 * Decompress `data` with inflate/ungzip and `options`. Autodetect
+					 * format via wrapper header by default. That's why we don't provide
+					 * separate `ungzip` method.
+					 *
+					 * Supported options are:
+					 *
+					 * - windowBits
+					 *
+					 * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+					 * for more information.
+					 *
+					 * Sugar (options):
+					 *
+					 * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+					 *   negative windowBits implicitly.
+					 * - `to` (String) - if equal to 'string', then result will be converted
+					 *   from utf8 to utf16 (javascript) string. When string output requested,
+					 *   chunk length can differ from `chunkSize`, depending on content.
+					 *
+					 *
+					 * ##### Example:
+					 *
+					 * ```javascript
+					 * var pako = require('pako')
+					 *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])
+					 *   , output;
+					 *
+					 * try {
+					 *   output = pako.inflate(input);
+					 * } catch (err)
+					 *   console.log(err);
+					 * }
+					 * ```
+					 **/
+					function inflate( input, options ) {
+						var inflator = new Inflate( options );
+
+						inflator.push( input, true );
+
+						// That will never happens, if you don't cheat with options :)
+						if ( inflator.err ) {
+							throw inflator.msg || msg[ inflator.err ];
+						}
+
+						return inflator.result;
+					}
+
+					/**
+					 * inflateRaw(data[, options]) -> Uint8Array|Array|String
+					 * - data (Uint8Array|Array|String): input data to decompress.
+					 * - options (Object): zlib inflate options.
+					 *
+					 * The same as [[inflate]], but creates raw data, without wrapper
+					 * (header and adler32 crc).
+					 **/
+					function inflateRaw( input, options ) {
+						options = options || {};
+						options.raw = true;
+						return inflate( input, options );
+					}
+
+					/**
+					 * ungzip(data[, options]) -> Uint8Array|Array|String
+					 * - data (Uint8Array|Array|String): input data to decompress.
+					 * - options (Object): zlib inflate options.
+					 *
+					 * Just shortcut to [[inflate]], because it autodetects format
+					 * by header.content. Done for convenience.
+					 **/
+
+					exports.Inflate = Inflate;
+					exports.inflate = inflate;
+					exports.inflateRaw = inflateRaw;
+					exports.ungzip = inflate;
+				},
+				{
+					'./utils/common': 1,
+					'./utils/strings': 2,
+					'./zlib/constants': 4,
+					'./zlib/gzheader': 6,
+					'./zlib/inflate': 8,
+					'./zlib/messages': 10,
+					'./zlib/zstream': 11,
+				},
+			],
+		},
+		{},
+		[]
+	)( '/lib/inflate.js' );
+} );
+/* eslint-enable */
 
 
 /***/ }),
 
-/***/ 8981:
-/***/ (function(module, exports) {
-
-var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage
-// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime
-// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs
-// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.
-// v4 adds AMD/UMD, commonJS, and plain browser support
-// v4.1 adds url download capability via solo URL argument (same domain/CORS only)
-// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors
-// https://github.com/rndme/download
-
-(function (root, factory) {
-	if (true) {
-		// AMD. Register as an anonymous module.
-		!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
-		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
-		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
-		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
-	} else {}
-}(this, function () {
-
-	return function download(data, strFileName, strMimeType) {
-
-		var self = window, // this script is only for browsers anyway...
-			defaultMime = "application/octet-stream", // this default mime also triggers iframe downloads
-			mimeType = strMimeType || defaultMime,
-			payload = data,
-			url = !strFileName && !strMimeType && payload,
-			anchor = document.createElement("a"),
-			toString = function(a){return String(a);},
-			myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),
-			fileName = strFileName || "download",
-			blob,
-			reader;
-			myBlob= myBlob.call ? myBlob.bind(self) : Blob ;
-	  
-		if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
-			payload=[payload, mimeType];
-			mimeType=payload[0];
-			payload=payload[1];
-		}
-
-
-		if(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument
-			fileName = url.split("/").pop().split("?")[0];
-			anchor.href = url; // assign href prop to temp anchor
-		  	if(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:
-        		var ajax=new XMLHttpRequest();
-        		ajax.open( "GET", url, true);
-        		ajax.responseType = 'blob';
-        		ajax.onload= function(e){ 
-				  download(e.target.response, fileName, defaultMime);
-				};
-        		setTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:
-			    return ajax;
-			} // end if valid url?
-		} // end if url?
-
-
-		//go ahead and download dataURLs right away
-		if(/^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(payload)){
-		
-			if(payload.length > (1024*1024*1.999) && myBlob !== toString ){
-				payload=dataUrlToBlob(payload);
-				mimeType=payload.type || defaultMime;
-			}else{			
-				return navigator.msSaveBlob ?  // IE10 can't do a[download], only Blobs:
-					navigator.msSaveBlob(dataUrlToBlob(payload), fileName) :
-					saver(payload) ; // everyone else can save dataURLs un-processed
+/***/ 8572:
+/***/ ((module) => {
+
+/* eslint eslint-comments/no-unlimited-disable: 0 */
+/* eslint-disable */
+( function ( f ) {
+	if ( true ) {
+		module.exports = f();
+	} else { var g; }
+} )( function () {
+	var define, module, exports;
+	return ( function () {
+		function r( e, n, t ) {
+			function o( i, f ) {
+				if ( ! n[ i ] ) {
+					if ( ! e[ i ] ) {
+						var c = undefined;
+						if ( ! f && c ) return require( i, ! 0 );
+						if ( u ) return u( i, ! 0 );
+						var a = new Error( "Cannot find module '" + i + "'" );
+						throw ( ( a.code = 'MODULE_NOT_FOUND' ), a );
+					}
+					var p = ( n[ i ] = { exports: {} } );
+					e[ i ][ 0 ].call(
+						p.exports,
+						function ( r ) {
+							var n = e[ i ][ 1 ][ r ];
+							return o( n || r );
+						},
+						p,
+						p.exports,
+						r,
+						e,
+						n,
+						t
+					);
+				}
+				return n[ i ].exports;
 			}
-			
-		}else{//not data url, is it a string with special needs?
-			if(/([\x80-\xff])/.test(payload)){			  
-				var i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length;
-				for(i;i<mx;++i) tempUiArr[i]= payload.charCodeAt(i);
-			 	payload=new myBlob([tempUiArr], {type: mimeType});
-			}		  
-		}
-		blob = payload instanceof myBlob ?
-			payload :
-			new myBlob([payload], {type: mimeType}) ;
-
-
-		function dataUrlToBlob(strUrl) {
-			var parts= strUrl.split(/[:;,]/),
-			type= parts[1],
-			decoder= parts[2] == "base64" ? atob : decodeURIComponent,
-			binData= decoder( parts.pop() ),
-			mx= binData.length,
-			i= 0,
-			uiArr= new Uint8Array(mx);
-
-			for(i;i<mx;++i) uiArr[i]= binData.charCodeAt(i);
-
-			return new myBlob([uiArr], {type: type});
-		 }
-
-		function saver(url, winMode){
-
-			if ('download' in anchor) { //html5 A[download]
-				anchor.href = url;
-				anchor.setAttribute("download", fileName);
-				anchor.className = "download-js-link";
-				anchor.innerHTML = "downloading...";
-				anchor.style.display = "none";
-				document.body.appendChild(anchor);
-				setTimeout(function() {
-					anchor.click();
-					document.body.removeChild(anchor);
-					if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(anchor.href);}, 250 );}
-				}, 66);
-				return true;
-			}
-
-			// handle non-a[download] safari as best we can:
-			if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent)) {
-				if(/^data:/.test(url))	url="data:"+url.replace(/^data:([\w\/\-\+]+)/, defaultMime);
-				if(!window.open(url)){ // popup blocked, offer direct download:
-					if(confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")){ location.href=url; }
-				}
-				return true;
-			}
-
-			//do iframe dataURL download (old ch+FF):
-			var f = document.createElement("iframe");
-			document.body.appendChild(f);
-
-			if(!winMode && /^data:/.test(url)){ // force a mime that will download:
-				url="data:"+url.replace(/^data:([\w\/\-\+]+)/, defaultMime);
-			}
-			f.src=url;
-			setTimeout(function(){ document.body.removeChild(f); }, 333);
-
-		}//end saver
-
-
-
-
-		if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)
-			return navigator.msSaveBlob(blob, fileName);
-		}
-
-		if(self.URL){ // simple fast and modern way using Blob and URL:
-			saver(self.URL.createObjectURL(blob), true);
-		}else{
-			// handle non-Blob()+non-URL browsers:
-			if(typeof blob === "string" || blob.constructor===toString ){
-				try{
-					return saver( "data:" +  mimeType   + ";base64,"  +  self.btoa(blob)  );
-				}catch(y){
-					return saver( "data:" +  mimeType   + "," + encodeURIComponent(blob)  );
-				}
-			}
-
-			// Blob but not URL support:
-			reader=new FileReader();
-			reader.onload=function(e){
-				saver(this.result);
-			};
-			reader.readAsDataURL(blob);
-		}
-		return true;
-	}; /* end download() */
-}));
+			for (
+				var u = undefined, i = 0;
+				i < t.length;
+				i++
+			)
+				o( t[ i ] );
+			return o;
+		}
+		return r;
+	} )()(
+		{
+			1: [
+				function ( require, module, exports ) {
+					/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Bit reading helpers
+*/
+
+					var BROTLI_READ_SIZE = 4096;
+					var BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32;
+					var BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1;
+
+					var kBitMask = new Uint32Array( [
+						0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095,
+						8191, 16383, 32767, 65535, 131071, 262143, 524287,
+						1048575, 2097151, 4194303, 8388607, 16777215,
+					] );
+
+					/* Input byte buffer, consist of a ringbuffer and a "slack" region where */
+					/* bytes from the start of the ringbuffer are copied. */
+					function BrotliBitReader( input ) {
+						this.buf_ = new Uint8Array( BROTLI_IBUF_SIZE );
+						this.input_ = input; /* input callback */
+
+						this.reset();
+					}
+
+					BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;
+					BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;
+
+					BrotliBitReader.prototype.reset = function () {
+						this.buf_ptr_ = 0; /* next input will write here */
+						this.val_ = 0; /* pre-fetched bits */
+						this.pos_ = 0; /* byte position in stream */
+						this.bit_pos_ = 0; /* current bit-reading position in val_ */
+						this.bit_end_pos_ = 0; /* bit-reading end position from LSB of val_ */
+						this.eos_ = 0; /* input stream is finished */
+
+						this.readMoreInput();
+						for ( var i = 0; i < 4; i++ ) {
+							this.val_ |= this.buf_[ this.pos_ ] << ( 8 * i );
+							++this.pos_;
+						}
+
+						return this.bit_end_pos_ > 0;
+					};
+
+					/* Fills up the input ringbuffer by calling the input callback.
+
+   Does nothing if there are at least 32 bytes present after current position.
+
+   Returns 0 if either:
+    - the input callback returned an error, or
+    - there is no more input and the position is past the end of the stream.
+
+   After encountering the end of the input stream, 32 additional zero bytes are
+   copied to the ringbuffer, therefore it is safe to call this function after
+   every 32 bytes of input is read.
+*/
+					BrotliBitReader.prototype.readMoreInput = function () {
+						if ( this.bit_end_pos_ > 256 ) {
+							return;
+						} else if ( this.eos_ ) {
+							if ( this.bit_pos_ > this.bit_end_pos_ )
+								throw new Error(
+									'Unexpected end of input ' +
+										this.bit_pos_ +
+										' ' +
+										this.bit_end_pos_
+								);
+						} else {
+							var dst = this.buf_ptr_;
+							var bytes_read = this.input_.read(
+								this.buf_,
+								dst,
+								BROTLI_READ_SIZE
+							);
+							if ( bytes_read < 0 ) {
+								throw new Error( 'Unexpected end of input' );
+							}
+
+							if ( bytes_read < BROTLI_READ_SIZE ) {
+								this.eos_ = 1;
+								/* Store 32 bytes of zero after the stream end. */
+								for ( var p = 0; p < 32; p++ )
+									this.buf_[ dst + bytes_read + p ] = 0;
+							}
+
+							if ( dst === 0 ) {
+								/* Copy the head of the ringbuffer to the slack region. */
+								for ( var p = 0; p < 32; p++ )
+									this.buf_[ ( BROTLI_READ_SIZE << 1 ) + p ] =
+										this.buf_[ p ];
+
+								this.buf_ptr_ = BROTLI_READ_SIZE;
+							} else {
+								this.buf_ptr_ = 0;
+							}
+
+							this.bit_end_pos_ += bytes_read << 3;
+						}
+					};
+
+					/* Guarantees that there are at least 24 bits in the buffer. */
+					BrotliBitReader.prototype.fillBitWindow = function () {
+						while ( this.bit_pos_ >= 8 ) {
+							this.val_ >>>= 8;
+							this.val_ |=
+								this.buf_[ this.pos_ & BROTLI_IBUF_MASK ] << 24;
+							++this.pos_;
+							this.bit_pos_ = ( this.bit_pos_ - 8 ) >>> 0;
+							this.bit_end_pos_ = ( this.bit_end_pos_ - 8 ) >>> 0;
+						}
+					};
+
+					/* Reads the specified number of bits from Read Buffer. */
+					BrotliBitReader.prototype.readBits = function ( n_bits ) {
+						if ( 32 - this.bit_pos_ < n_bits ) {
+							this.fillBitWindow();
+						}
+
+						var val =
+							( this.val_ >>> this.bit_pos_ ) &
+							kBitMask[ n_bits ];
+						this.bit_pos_ += n_bits;
+						return val;
+					};
+
+					module.exports = BrotliBitReader;
+				},
+				{},
+			],
+			2: [
+				function ( require, module, exports ) {
+					/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Lookup table to map the previous two bytes to a context id.
+
+   There are four different context modeling modes defined here:
+     CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,
+     CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,
+     CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,
+     CONTEXT_SIGNED: second-order context model tuned for signed integers.
+
+   The context id for the UTF8 context model is calculated as follows. If p1
+   and p2 are the previous two bytes, we calcualte the context as
+
+     context = kContextLookup[p1] | kContextLookup[p2 + 256].
+
+   If the previous two bytes are ASCII characters (i.e. < 128), this will be
+   equivalent to
+
+     context = 4 * context1(p1) + context2(p2),
+
+   where context1 is based on the previous byte in the following way:
+
+     0  : non-ASCII control
+     1  : \t, \n, \r
+     2  : space
+     3  : other punctuation
+     4  : " '
+     5  : %
+     6  : ( < [ {
+     7  : ) > ] }
+     8  : , ; :
+     9  : .
+     10 : =
+     11 : number
+     12 : upper-case vowel
+     13 : upper-case consonant
+     14 : lower-case vowel
+     15 : lower-case consonant
+
+   and context2 is based on the second last byte:
+
+     0 : control, space
+     1 : punctuation
+     2 : upper-case letter, number
+     3 : lower-case letter
+
+   If the last byte is ASCII, and the second last byte is not (in a valid UTF8
+   stream it will be a continuation byte, value between 128 and 191), the
+   context is the same as if the second last byte was an ASCII control or space.
+
+   If the last byte is a UTF8 lead byte (value >= 192), then the next byte will
+   be a continuation byte and the context id is 2 or 3 depending on the LSB of
+   the last byte and to a lesser extent on the second last byte if it is ASCII.
+
+   If the last byte is a UTF8 continuation byte, the second last byte can be:
+     - continuation byte: the next byte is probably ASCII or lead byte (assuming
+       4-byte UTF8 characters are rare) and the context id is 0 or 1.
+     - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1
+     - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3
+
+   The possible value combinations of the previous two bytes, the range of
+   context ids and the type of the next byte is summarized in the table below:
+
+   |--------\-----------------------------------------------------------------|
+   |         \                         Last byte                              |
+   | Second   \---------------------------------------------------------------|
+   | last byte \    ASCII            |   cont. byte        |   lead byte      |
+   |            \   (0-127)          |   (128-191)         |   (192-)         |
+   |=============|===================|=====================|==================|
+   |  ASCII      | next: ASCII/lead  |  not valid          |  next: cont.     |
+   |  (0-127)    | context: 4 - 63   |                     |  context: 2 - 3  |
+   |-------------|-------------------|---------------------|------------------|
+   |  cont. byte | next: ASCII/lead  |  next: ASCII/lead   |  next: cont.     |
+   |  (128-191)  | context: 4 - 63   |  context: 0 - 1     |  context: 2 - 3  |
+   |-------------|-------------------|---------------------|------------------|
+   |  lead byte  | not valid         |  next: ASCII/lead   |  not valid       |
+   |  (192-207)  |                   |  context: 0 - 1     |                  |
+   |-------------|-------------------|---------------------|------------------|
+   |  lead byte  | not valid         |  next: cont.        |  not valid       |
+   |  (208-)     |                   |  context: 2 - 3     |                  |
+   |-------------|-------------------|---------------------|------------------|
+
+   The context id for the signed context mode is calculated as:
+
+     context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].
+
+   For any context modeling modes, the context ids can be calculated by |-ing
+   together two lookups from one table using context model dependent offsets:
+
+     context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].
+
+   where offset1 and offset2 are dependent on the context mode.
+*/
+
+					var CONTEXT_LSB6 = 0;
+					var CONTEXT_MSB6 = 1;
+					var CONTEXT_UTF8 = 2;
+					var CONTEXT_SIGNED = 3;
+
+					/* Common context lookup table for all context modes. */
+					exports.lookup = new Uint8Array( [
+						/* CONTEXT_UTF8, last byte. */
+						/* ASCII range. */
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 16, 12,
+						12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12, 44, 44,
+						44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,
+						12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52,
+						52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24,
+						12, 28, 12, 12, 12, 56, 60, 60, 60, 56, 60, 60, 60, 56,
+						60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60,
+						60, 60, 60, 24, 12, 28, 12, 0,
+						/* UTF8 continuation byte range. */
+						0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
+						1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+						0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
+						1, 0, 1, 0, 1, 0, 1, /* UTF8 lead byte range. */
+						2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2,
+						3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+						2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2,
+						3, 2, 3, 2, 3, 2, 3,
+						/* CONTEXT_UTF8 second last byte. */
+						/* ASCII range. */
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
+						1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+						2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+						2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+						1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+						3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,
+						/* UTF8 continuation byte range. */
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, /* UTF8 lead byte range. */
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2,
+						2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+						2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+						/* CONTEXT_SIGNED, second last byte. */
+						0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
+						2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+						2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+						2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+						3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+						3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+						3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
+						4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+						4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+						4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+						4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+						5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+						5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
+						6, 6, 6, 6, 6, 6, 6, 6, 7,
+						/* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
+						0,
+						8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16,
+						16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+						16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+						16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+						16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+						24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+						24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+						24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+						24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 32, 32, 32,
+						32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+						32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+						32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+						32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+						32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+						40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+						40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+						40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 48, 48, 48,
+						48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
+						/* CONTEXT_LSB6, last byte. */
+						0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+						16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+						30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+						44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+						58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+						10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+						24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+						38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+						52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2,
+						3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+						19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+						33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+						47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+						61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+						13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+						27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+						41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+						55, 56, 57, 58, 59, 60, 61, 62, 63,
+						/* CONTEXT_MSB6, last byte. */
+						0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,
+						4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9,
+						9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12,
+						13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16,
+						16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,
+						20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23,
+						23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26,
+						27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30,
+						30, 30, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33,
+						34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37,
+						37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40,
+						41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44,
+						44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,
+						48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51,
+						51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54,
+						55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58,
+						58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61,
+						62, 62, 62, 62, 63, 63, 63, 63,
+						/* CONTEXT_{M,L}SB6, second last byte, */
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+						0, 0, 0, 0, 0, 0, 0, 0, 0,
+					] );
+
+					exports.lookupOffsets = new Uint16Array( [
+						/* CONTEXT_LSB6 */
+						1024, 1536, /* CONTEXT_MSB6 */
+						1280, 1536, /* CONTEXT_UTF8 */
+						0, 256, /* CONTEXT_SIGNED */
+						768, 512,
+					] );
+				},
+				{},
+			],
+			3: [
+				function ( require, module, exports ) {
+					/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+					var BrotliInput = require( './streams' ).BrotliInput;
+					var BrotliOutput = require( './streams' ).BrotliOutput;
+					var BrotliBitReader = require( './bit_reader' );
+					var BrotliDictionary = require( './dictionary' );
+					var HuffmanCode = require( './huffman' ).HuffmanCode;
+					var BrotliBuildHuffmanTable =
+						require( './huffman' ).BrotliBuildHuffmanTable;
+					var Context = require( './context' );
+					var Prefix = require( './prefix' );
+					var Transform = require( './transform' );
+
+					var kDefaultCodeLength = 8;
+					var kCodeLengthRepeatCode = 16;
+					var kNumLiteralCodes = 256;
+					var kNumInsertAndCopyCodes = 704;
+					var kNumBlockLengthCodes = 26;
+					var kLiteralContextBits = 6;
+					var kDistanceContextBits = 2;
+
+					var HUFFMAN_TABLE_BITS = 8;
+					var HUFFMAN_TABLE_MASK = 0xff;
+					/* Maximum possible Huffman table size for an alphabet size of 704, max code
+					 * length 15 and root table bits 8. */
+					var HUFFMAN_MAX_TABLE_SIZE = 1080;
+
+					var CODE_LENGTH_CODES = 18;
+					var kCodeLengthCodeOrder = new Uint8Array( [
+						1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13,
+						14, 15,
+					] );
+
+					var NUM_DISTANCE_SHORT_CODES = 16;
+					var kDistanceShortCodeIndexOffset = new Uint8Array( [
+						3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2,
+					] );
+
+					var kDistanceShortCodeValueOffset = new Int8Array( [
+						0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3,
+					] );
+
+					var kMaxHuffmanTableSize = new Uint16Array( [
+						256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694,
+						726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048,
+						1080,
+					] );
+
+					function DecodeWindowBits( br ) {
+						var n;
+						if ( br.readBits( 1 ) === 0 ) {
+							return 16;
+						}
+
+						n = br.readBits( 3 );
+						if ( n > 0 ) {
+							return 17 + n;
+						}
+
+						n = br.readBits( 3 );
+						if ( n > 0 ) {
+							return 8 + n;
+						}
+
+						return 17;
+					}
+
+					/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */
+					function DecodeVarLenUint8( br ) {
+						if ( br.readBits( 1 ) ) {
+							var nbits = br.readBits( 3 );
+							if ( nbits === 0 ) {
+								return 1;
+							} else {
+								return br.readBits( nbits ) + ( 1 << nbits );
+							}
+						}
+						return 0;
+					}
+
+					function MetaBlockLength() {
+						this.meta_block_length = 0;
+						this.input_end = 0;
+						this.is_uncompressed = 0;
+						this.is_metadata = false;
+					}
+
+					function DecodeMetaBlockLength( br ) {
+						var out = new MetaBlockLength();
+						var size_nibbles;
+						var size_bytes;
+						var i;
+
+						out.input_end = br.readBits( 1 );
+						if ( out.input_end && br.readBits( 1 ) ) {
+							return out;
+						}
+
+						size_nibbles = br.readBits( 2 ) + 4;
+						if ( size_nibbles === 7 ) {
+							out.is_metadata = true;
+
+							if ( br.readBits( 1 ) !== 0 )
+								throw new Error( 'Invalid reserved bit' );
+
+							size_bytes = br.readBits( 2 );
+							if ( size_bytes === 0 ) return out;
+
+							for ( i = 0; i < size_bytes; i++ ) {
+								var next_byte = br.readBits( 8 );
+								if (
+									i + 1 === size_bytes &&
+									size_bytes > 1 &&
+									next_byte === 0
+								)
+									throw new Error( 'Invalid size byte' );
+
+								out.meta_block_length |= next_byte << ( i * 8 );
+							}
+						} else {
+							for ( i = 0; i < size_nibbles; ++i ) {
+								var next_nibble = br.readBits( 4 );
+								if (
+									i + 1 === size_nibbles &&
+									size_nibbles > 4 &&
+									next_nibble === 0
+								)
+									throw new Error( 'Invalid size nibble' );
+
+								out.meta_block_length |=
+									next_nibble << ( i * 4 );
+							}
+						}
+
+						++out.meta_block_length;
+
+						if ( ! out.input_end && ! out.is_metadata ) {
+							out.is_uncompressed = br.readBits( 1 );
+						}
+
+						return out;
+					}
+
+					/* Decodes the next Huffman code from bit-stream. */
+					function ReadSymbol( table, index, br ) {
+						var start_index = index;
+
+						var nbits;
+						br.fillBitWindow();
+						index +=
+							( br.val_ >>> br.bit_pos_ ) & HUFFMAN_TABLE_MASK;
+						nbits = table[ index ].bits - HUFFMAN_TABLE_BITS;
+						if ( nbits > 0 ) {
+							br.bit_pos_ += HUFFMAN_TABLE_BITS;
+							index += table[ index ].value;
+							index +=
+								( br.val_ >>> br.bit_pos_ ) &
+								( ( 1 << nbits ) - 1 );
+						}
+						br.bit_pos_ += table[ index ].bits;
+						return table[ index ].value;
+					}
+
+					function ReadHuffmanCodeLengths(
+						code_length_code_lengths,
+						num_symbols,
+						code_lengths,
+						br
+					) {
+						var symbol = 0;
+						var prev_code_len = kDefaultCodeLength;
+						var repeat = 0;
+						var repeat_code_len = 0;
+						var space = 32768;
+
+						var table = [];
+						for ( var i = 0; i < 32; i++ )
+							table.push( new HuffmanCode( 0, 0 ) );
+
+						BrotliBuildHuffmanTable(
+							table,
+							0,
+							5,
+							code_length_code_lengths,
+							CODE_LENGTH_CODES
+						);
+
+						while ( symbol < num_symbols && space > 0 ) {
+							var p = 0;
+							var code_len;
+
+							br.readMoreInput();
+							br.fillBitWindow();
+							p += ( br.val_ >>> br.bit_pos_ ) & 31;
+							br.bit_pos_ += table[ p ].bits;
+							code_len = table[ p ].value & 0xff;
+							if ( code_len < kCodeLengthRepeatCode ) {
+								repeat = 0;
+								code_lengths[ symbol++ ] = code_len;
+								if ( code_len !== 0 ) {
+									prev_code_len = code_len;
+									space -= 32768 >> code_len;
+								}
+							} else {
+								var extra_bits = code_len - 14;
+								var old_repeat;
+								var repeat_delta;
+								var new_len = 0;
+								if ( code_len === kCodeLengthRepeatCode ) {
+									new_len = prev_code_len;
+								}
+								if ( repeat_code_len !== new_len ) {
+									repeat = 0;
+									repeat_code_len = new_len;
+								}
+								old_repeat = repeat;
+								if ( repeat > 0 ) {
+									repeat -= 2;
+									repeat <<= extra_bits;
+								}
+								repeat += br.readBits( extra_bits ) + 3;
+								repeat_delta = repeat - old_repeat;
+								if ( symbol + repeat_delta > num_symbols ) {
+									throw new Error(
+										'[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols'
+									);
+								}
+
+								for ( var x = 0; x < repeat_delta; x++ )
+									code_lengths[ symbol + x ] =
+										repeat_code_len;
+
+								symbol += repeat_delta;
+
+								if ( repeat_code_len !== 0 ) {
+									space -=
+										repeat_delta <<
+										( 15 - repeat_code_len );
+								}
+							}
+						}
+						if ( space !== 0 ) {
+							throw new Error(
+								'[ReadHuffmanCodeLengths] space = ' + space
+							);
+						}
+
+						for ( ; symbol < num_symbols; symbol++ )
+							code_lengths[ symbol ] = 0;
+					}
+
+					function ReadHuffmanCode(
+						alphabet_size,
+						tables,
+						table,
+						br
+					) {
+						var table_size = 0;
+						var simple_code_or_skip;
+						var code_lengths = new Uint8Array( alphabet_size );
+
+						br.readMoreInput();
+
+						/* simple_code_or_skip is used as follows:
+     1 for simple code;
+     0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */
+						simple_code_or_skip = br.readBits( 2 );
+						if ( simple_code_or_skip === 1 ) {
+							/* Read symbols, codes & code lengths directly. */
+							var i;
+							var max_bits_counter = alphabet_size - 1;
+							var max_bits = 0;
+							var symbols = new Int32Array( 4 );
+							var num_symbols = br.readBits( 2 ) + 1;
+							while ( max_bits_counter ) {
+								max_bits_counter >>= 1;
+								++max_bits;
+							}
+
+							for ( i = 0; i < num_symbols; ++i ) {
+								symbols[ i ] =
+									br.readBits( max_bits ) % alphabet_size;
+								code_lengths[ symbols[ i ] ] = 2;
+							}
+							code_lengths[ symbols[ 0 ] ] = 1;
+							switch ( num_symbols ) {
+								case 1:
+									break;
+								case 3:
+									if (
+										symbols[ 0 ] === symbols[ 1 ] ||
+										symbols[ 0 ] === symbols[ 2 ] ||
+										symbols[ 1 ] === symbols[ 2 ]
+									) {
+										throw new Error(
+											'[ReadHuffmanCode] invalid symbols'
+										);
+									}
+									break;
+								case 2:
+									if ( symbols[ 0 ] === symbols[ 1 ] ) {
+										throw new Error(
+											'[ReadHuffmanCode] invalid symbols'
+										);
+									}
+
+									code_lengths[ symbols[ 1 ] ] = 1;
+									break;
+								case 4:
+									if (
+										symbols[ 0 ] === symbols[ 1 ] ||
+										symbols[ 0 ] === symbols[ 2 ] ||
+										symbols[ 0 ] === symbols[ 3 ] ||
+										symbols[ 1 ] === symbols[ 2 ] ||
+										symbols[ 1 ] === symbols[ 3 ] ||
+										symbols[ 2 ] === symbols[ 3 ]
+									) {
+										throw new Error(
+											'[ReadHuffmanCode] invalid symbols'
+										);
+									}
+
+									if ( br.readBits( 1 ) ) {
+										code_lengths[ symbols[ 2 ] ] = 3;
+										code_lengths[ symbols[ 3 ] ] = 3;
+									} else {
+										code_lengths[ symbols[ 0 ] ] = 2;
+									}
+									break;
+							}
+						} else {
+							/* Decode Huffman-coded code lengths. */
+							var i;
+							var code_length_code_lengths = new Uint8Array(
+								CODE_LENGTH_CODES
+							);
+							var space = 32;
+							var num_codes = 0;
+							/* Static Huffman code for the code length code lengths */
+							var huff = [
+								new HuffmanCode( 2, 0 ),
+								new HuffmanCode( 2, 4 ),
+								new HuffmanCode( 2, 3 ),
+								new HuffmanCode( 3, 2 ),
+								new HuffmanCode( 2, 0 ),
+								new HuffmanCode( 2, 4 ),
+								new HuffmanCode( 2, 3 ),
+								new HuffmanCode( 4, 1 ),
+								new HuffmanCode( 2, 0 ),
+								new HuffmanCode( 2, 4 ),
+								new HuffmanCode( 2, 3 ),
+								new HuffmanCode( 3, 2 ),
+								new HuffmanCode( 2, 0 ),
+								new HuffmanCode( 2, 4 ),
+								new HuffmanCode( 2, 3 ),
+								new HuffmanCode( 4, 5 ),
+							];
+							for (
+								i = simple_code_or_skip;
+								i < CODE_LENGTH_CODES && space > 0;
+								++i
+							) {
+								var code_len_idx = kCodeLengthCodeOrder[ i ];
+								var p = 0;
+								var v;
+								br.fillBitWindow();
+								p += ( br.val_ >>> br.bit_pos_ ) & 15;
+								br.bit_pos_ += huff[ p ].bits;
+								v = huff[ p ].value;
+								code_length_code_lengths[ code_len_idx ] = v;
+								if ( v !== 0 ) {
+									space -= 32 >> v;
+									++num_codes;
+								}
+							}
+
+							if ( ! ( num_codes === 1 || space === 0 ) )
+								throw new Error(
+									'[ReadHuffmanCode] invalid num_codes or space'
+								);
+
+							ReadHuffmanCodeLengths(
+								code_length_code_lengths,
+								alphabet_size,
+								code_lengths,
+								br
+							);
+						}
+
+						table_size = BrotliBuildHuffmanTable(
+							tables,
+							table,
+							HUFFMAN_TABLE_BITS,
+							code_lengths,
+							alphabet_size
+						);
+
+						if ( table_size === 0 ) {
+							throw new Error(
+								'[ReadHuffmanCode] BuildHuffmanTable failed: '
+							);
+						}
+
+						return table_size;
+					}
+
+					function ReadBlockLength( table, index, br ) {
+						var code;
+						var nbits;
+						code = ReadSymbol( table, index, br );
+						nbits = Prefix.kBlockLengthPrefixCode[ code ].nbits;
+						return (
+							Prefix.kBlockLengthPrefixCode[ code ].offset +
+							br.readBits( nbits )
+						);
+					}
+
+					function TranslateShortCodes( code, ringbuffer, index ) {
+						var val;
+						if ( code < NUM_DISTANCE_SHORT_CODES ) {
+							index += kDistanceShortCodeIndexOffset[ code ];
+							index &= 3;
+							val =
+								ringbuffer[ index ] +
+								kDistanceShortCodeValueOffset[ code ];
+						} else {
+							val = code - NUM_DISTANCE_SHORT_CODES + 1;
+						}
+						return val;
+					}
+
+					function MoveToFront( v, index ) {
+						var value = v[ index ];
+						var i = index;
+						for ( ; i; --i ) v[ i ] = v[ i - 1 ];
+						v[ 0 ] = value;
+					}
+
+					function InverseMoveToFrontTransform( v, v_len ) {
+						var mtf = new Uint8Array( 256 );
+						var i;
+						for ( i = 0; i < 256; ++i ) {
+							mtf[ i ] = i;
+						}
+						for ( i = 0; i < v_len; ++i ) {
+							var index = v[ i ];
+							v[ i ] = mtf[ index ];
+							if ( index ) MoveToFront( mtf, index );
+						}
+					}
+
+					/* Contains a collection of huffman trees with the same alphabet size. */
+					function HuffmanTreeGroup( alphabet_size, num_htrees ) {
+						this.alphabet_size = alphabet_size;
+						this.num_htrees = num_htrees;
+						this.codes = new Array(
+							num_htrees +
+								num_htrees *
+									kMaxHuffmanTableSize[
+										( alphabet_size + 31 ) >>> 5
+									]
+						);
+						this.htrees = new Uint32Array( num_htrees );
+					}
+
+					HuffmanTreeGroup.prototype.decode = function ( br ) {
+						var i;
+						var table_size;
+						var next = 0;
+						for ( i = 0; i < this.num_htrees; ++i ) {
+							this.htrees[ i ] = next;
+							table_size = ReadHuffmanCode(
+								this.alphabet_size,
+								this.codes,
+								next,
+								br
+							);
+							next += table_size;
+						}
+					};
+
+					function DecodeContextMap( context_map_size, br ) {
+						var out = { num_htrees: null, context_map: null };
+						var use_rle_for_zeros;
+						var max_run_length_prefix = 0;
+						var table;
+						var i;
+
+						br.readMoreInput();
+						var num_htrees = ( out.num_htrees =
+							DecodeVarLenUint8( br ) + 1 );
+
+						var context_map = ( out.context_map = new Uint8Array(
+							context_map_size
+						) );
+						if ( num_htrees <= 1 ) {
+							return out;
+						}
+
+						use_rle_for_zeros = br.readBits( 1 );
+						if ( use_rle_for_zeros ) {
+							max_run_length_prefix = br.readBits( 4 ) + 1;
+						}
+
+						table = [];
+						for ( i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++ ) {
+							table[ i ] = new HuffmanCode( 0, 0 );
+						}
+
+						ReadHuffmanCode(
+							num_htrees + max_run_length_prefix,
+							table,
+							0,
+							br
+						);
+
+						for ( i = 0; i < context_map_size;  ) {
+							var code;
+
+							br.readMoreInput();
+							code = ReadSymbol( table, 0, br );
+							if ( code === 0 ) {
+								context_map[ i ] = 0;
+								++i;
+							} else if ( code <= max_run_length_prefix ) {
+								var reps =
+									1 + ( 1 << code ) + br.readBits( code );
+								while ( --reps ) {
+									if ( i >= context_map_size ) {
+										throw new Error(
+											'[DecodeContextMap] i >= context_map_size'
+										);
+									}
+									context_map[ i ] = 0;
+									++i;
+								}
+							} else {
+								context_map[ i ] = code - max_run_length_prefix;
+								++i;
+							}
+						}
+						if ( br.readBits( 1 ) ) {
+							InverseMoveToFrontTransform(
+								context_map,
+								context_map_size
+							);
+						}
+
+						return out;
+					}
+
+					function DecodeBlockType(
+						max_block_type,
+						trees,
+						tree_type,
+						block_types,
+						ringbuffers,
+						indexes,
+						br
+					) {
+						var ringbuffer = tree_type * 2;
+						var index = tree_type;
+						var type_code = ReadSymbol(
+							trees,
+							tree_type * HUFFMAN_MAX_TABLE_SIZE,
+							br
+						);
+						var block_type;
+						if ( type_code === 0 ) {
+							block_type =
+								ringbuffers[
+									ringbuffer + ( indexes[ index ] & 1 )
+								];
+						} else if ( type_code === 1 ) {
+							block_type =
+								ringbuffers[
+									ringbuffer +
+										( ( indexes[ index ] - 1 ) & 1 )
+								] + 1;
+						} else {
+							block_type = type_code - 2;
+						}
+						if ( block_type >= max_block_type ) {
+							block_type -= max_block_type;
+						}
+						block_types[ tree_type ] = block_type;
+						ringbuffers[ ringbuffer + ( indexes[ index ] & 1 ) ] =
+							block_type;
+						++indexes[ index ];
+					}
+
+					function CopyUncompressedBlockToOutput(
+						output,
+						len,
+						pos,
+						ringbuffer,
+						ringbuffer_mask,
+						br
+					) {
+						var rb_size = ringbuffer_mask + 1;
+						var rb_pos = pos & ringbuffer_mask;
+						var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;
+						var nbytes;
+
+						/* For short lengths copy byte-by-byte */
+						if (
+							len < 8 ||
+							br.bit_pos_ + ( len << 3 ) < br.bit_end_pos_
+						) {
+							while ( len-- > 0 ) {
+								br.readMoreInput();
+								ringbuffer[ rb_pos++ ] = br.readBits( 8 );
+								if ( rb_pos === rb_size ) {
+									output.write( ringbuffer, rb_size );
+									rb_pos = 0;
+								}
+							}
+							return;
+						}
+
+						if ( br.bit_end_pos_ < 32 ) {
+							throw new Error(
+								'[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32'
+							);
+						}
+
+						/* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */
+						while ( br.bit_pos_ < 32 ) {
+							ringbuffer[ rb_pos ] = br.val_ >>> br.bit_pos_;
+							br.bit_pos_ += 8;
+							++rb_pos;
+							--len;
+						}
+
+						/* Copy remaining bytes from br.buf_ to ringbuffer. */
+						nbytes = ( br.bit_end_pos_ - br.bit_pos_ ) >> 3;
+						if ( br_pos + nbytes > BrotliBitReader.IBUF_MASK ) {
+							var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;
+							for ( var x = 0; x < tail; x++ )
+								ringbuffer[ rb_pos + x ] =
+									br.buf_[ br_pos + x ];
+
+							nbytes -= tail;
+							rb_pos += tail;
+							len -= tail;
+							br_pos = 0;
+						}
+
+						for ( var x = 0; x < nbytes; x++ )
+							ringbuffer[ rb_pos + x ] = br.buf_[ br_pos + x ];
+
+						rb_pos += nbytes;
+						len -= nbytes;
+
+						/* If we wrote past the logical end of the ringbuffer, copy the tail of the
+     ringbuffer to its beginning and flush the ringbuffer to the output. */
+						if ( rb_pos >= rb_size ) {
+							output.write( ringbuffer, rb_size );
+							rb_pos -= rb_size;
+							for ( var x = 0; x < rb_pos; x++ )
+								ringbuffer[ x ] = ringbuffer[ rb_size + x ];
+						}
+
+						/* If we have more to copy than the remaining size of the ringbuffer, then we
+     first fill the ringbuffer from the input and then flush the ringbuffer to
+     the output */
+						while ( rb_pos + len >= rb_size ) {
+							nbytes = rb_size - rb_pos;
+							if (
+								br.input_.read( ringbuffer, rb_pos, nbytes ) <
+								nbytes
+							) {
+								throw new Error(
+									'[CopyUncompressedBlockToOutput] not enough bytes'
+								);
+							}
+							output.write( ringbuffer, rb_size );
+							len -= nbytes;
+							rb_pos = 0;
+						}
+
+						/* Copy straight from the input onto the ringbuffer. The ringbuffer will be
+     flushed to the output at a later time. */
+						if ( br.input_.read( ringbuffer, rb_pos, len ) < len ) {
+							throw new Error(
+								'[CopyUncompressedBlockToOutput] not enough bytes'
+							);
+						}
+
+						/* Restore the state of the bit reader. */
+						br.reset();
+					}
+
+					/* Advances the bit reader position to the next byte boundary and verifies
+   that any skipped bits are set to zero. */
+					function JumpToByteBoundary( br ) {
+						var new_bit_pos = ( br.bit_pos_ + 7 ) & ~7;
+						var pad_bits = br.readBits( new_bit_pos - br.bit_pos_ );
+						return pad_bits == 0;
+					}
+
+					function BrotliDecompressedSize( buffer ) {
+						var input = new BrotliInput( buffer );
+						var br = new BrotliBitReader( input );
+						DecodeWindowBits( br );
+						var out = DecodeMetaBlockLength( br );
+						return out.meta_block_length;
+					}
+
+					exports.BrotliDecompressedSize = BrotliDecompressedSize;
+
+					function BrotliDecompressBuffer( buffer, output_size ) {
+						var input = new BrotliInput( buffer );
+
+						if ( output_size == null ) {
+							output_size = BrotliDecompressedSize( buffer );
+						}
+
+						var output_buffer = new Uint8Array( output_size );
+						var output = new BrotliOutput( output_buffer );
+
+						BrotliDecompress( input, output );
+
+						if ( output.pos < output.buffer.length ) {
+							output.buffer = output.buffer.subarray(
+								0,
+								output.pos
+							);
+						}
+
+						return output.buffer;
+					}
+
+					exports.BrotliDecompressBuffer = BrotliDecompressBuffer;
+
+					function BrotliDecompress( input, output ) {
+						var i;
+						var pos = 0;
+						var input_end = 0;
+						var window_bits = 0;
+						var max_backward_distance;
+						var max_distance = 0;
+						var ringbuffer_size;
+						var ringbuffer_mask;
+						var ringbuffer;
+						var ringbuffer_end;
+						/* This ring buffer holds a few past copy distances that will be used by */
+						/* some special distance codes. */
+						var dist_rb = [ 16, 15, 11, 4 ];
+						var dist_rb_idx = 0;
+						/* The previous 2 bytes used for context. */
+						var prev_byte1 = 0;
+						var prev_byte2 = 0;
+						var hgroup = [
+							new HuffmanTreeGroup( 0, 0 ),
+							new HuffmanTreeGroup( 0, 0 ),
+							new HuffmanTreeGroup( 0, 0 ),
+						];
+						var block_type_trees;
+						var block_len_trees;
+						var br;
+
+						/* We need the slack region for the following reasons:
+       - always doing two 8-byte copies for fast backward copying
+       - transforms
+       - flushing the input ringbuffer when decoding uncompressed blocks */
+						var kRingBufferWriteAheadSlack =
+							128 + BrotliBitReader.READ_SIZE;
+
+						br = new BrotliBitReader( input );
+
+						/* Decode window size. */
+						window_bits = DecodeWindowBits( br );
+						max_backward_distance = ( 1 << window_bits ) - 16;
+
+						ringbuffer_size = 1 << window_bits;
+						ringbuffer_mask = ringbuffer_size - 1;
+						ringbuffer = new Uint8Array(
+							ringbuffer_size +
+								kRingBufferWriteAheadSlack +
+								BrotliDictionary.maxDictionaryWordLength
+						);
+						ringbuffer_end = ringbuffer_size;
+
+						block_type_trees = [];
+						block_len_trees = [];
+						for ( var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++ ) {
+							block_type_trees[ x ] = new HuffmanCode( 0, 0 );
+							block_len_trees[ x ] = new HuffmanCode( 0, 0 );
+						}
+
+						while ( ! input_end ) {
+							var meta_block_remaining_len = 0;
+							var is_uncompressed;
+							var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];
+							var block_type = [ 0 ];
+							var num_block_types = [ 1, 1, 1 ];
+							var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];
+							var block_type_rb_index = [ 0 ];
+							var distance_postfix_bits;
+							var num_direct_distance_codes;
+							var distance_postfix_mask;
+							var num_distance_codes;
+							var context_map = null;
+							var context_modes = null;
+							var num_literal_htrees;
+							var dist_context_map = null;
+							var num_dist_htrees;
+							var context_offset = 0;
+							var context_map_slice = null;
+							var literal_htree_index = 0;
+							var dist_context_offset = 0;
+							var dist_context_map_slice = null;
+							var dist_htree_index = 0;
+							var context_lookup_offset1 = 0;
+							var context_lookup_offset2 = 0;
+							var context_mode;
+							var htree_command;
+
+							for ( i = 0; i < 3; ++i ) {
+								hgroup[ i ].codes = null;
+								hgroup[ i ].htrees = null;
+							}
+
+							br.readMoreInput();
+
+							var _out = DecodeMetaBlockLength( br );
+							meta_block_remaining_len = _out.meta_block_length;
+							if (
+								pos + meta_block_remaining_len >
+								output.buffer.length
+							) {
+								/* We need to grow the output buffer to fit the additional data. */
+								var tmp = new Uint8Array(
+									pos + meta_block_remaining_len
+								);
+								tmp.set( output.buffer );
+								output.buffer = tmp;
+							}
+							input_end = _out.input_end;
+							is_uncompressed = _out.is_uncompressed;
+
+							if ( _out.is_metadata ) {
+								JumpToByteBoundary( br );
+
+								for (
+									;
+									meta_block_remaining_len > 0;
+									--meta_block_remaining_len
+								) {
+									br.readMoreInput();
+									/* Read one byte and ignore it. */
+									br.readBits( 8 );
+								}
+
+								continue;
+							}
+
+							if ( meta_block_remaining_len === 0 ) {
+								continue;
+							}
+
+							if ( is_uncompressed ) {
+								br.bit_pos_ = ( br.bit_pos_ + 7 ) & ~7;
+								CopyUncompressedBlockToOutput(
+									output,
+									meta_block_remaining_len,
+									pos,
+									ringbuffer,
+									ringbuffer_mask,
+									br
+								);
+								pos += meta_block_remaining_len;
+								continue;
+							}
+
+							for ( i = 0; i < 3; ++i ) {
+								num_block_types[ i ] =
+									DecodeVarLenUint8( br ) + 1;
+								if ( num_block_types[ i ] >= 2 ) {
+									ReadHuffmanCode(
+										num_block_types[ i ] + 2,
+										block_type_trees,
+										i * HUFFMAN_MAX_TABLE_SIZE,
+										br
+									);
+									ReadHuffmanCode(
+										kNumBlockLengthCodes,
+										block_len_trees,
+										i * HUFFMAN_MAX_TABLE_SIZE,
+										br
+									);
+									block_length[ i ] = ReadBlockLength(
+										block_len_trees,
+										i * HUFFMAN_MAX_TABLE_SIZE,
+										br
+									);
+									block_type_rb_index[ i ] = 1;
+								}
+							}
+
+							br.readMoreInput();
+
+							distance_postfix_bits = br.readBits( 2 );
+							num_direct_distance_codes =
+								NUM_DISTANCE_SHORT_CODES +
+								( br.readBits( 4 ) << distance_postfix_bits );
+							distance_postfix_mask =
+								( 1 << distance_postfix_bits ) - 1;
+							num_distance_codes =
+								num_direct_distance_codes +
+								( 48 << distance_postfix_bits );
+							context_modes = new Uint8Array(
+								num_block_types[ 0 ]
+							);
+
+							for ( i = 0; i < num_block_types[ 0 ]; ++i ) {
+								br.readMoreInput();
+								context_modes[ i ] = br.readBits( 2 ) << 1;
+							}
+
+							var _o1 = DecodeContextMap(
+								num_block_types[ 0 ] << kLiteralContextBits,
+								br
+							);
+							num_literal_htrees = _o1.num_htrees;
+							context_map = _o1.context_map;
+
+							var _o2 = DecodeContextMap(
+								num_block_types[ 2 ] << kDistanceContextBits,
+								br
+							);
+							num_dist_htrees = _o2.num_htrees;
+							dist_context_map = _o2.context_map;
+
+							hgroup[ 0 ] = new HuffmanTreeGroup(
+								kNumLiteralCodes,
+								num_literal_htrees
+							);
+							hgroup[ 1 ] = new HuffmanTreeGroup(
+								kNumInsertAndCopyCodes,
+								num_block_types[ 1 ]
+							);
+							hgroup[ 2 ] = new HuffmanTreeGroup(
+								num_distance_codes,
+								num_dist_htrees
+							);
+
+							for ( i = 0; i < 3; ++i ) {
+								hgroup[ i ].decode( br );
+							}
+
+							context_map_slice = 0;
+							dist_context_map_slice = 0;
+							context_mode = context_modes[ block_type[ 0 ] ];
+							context_lookup_offset1 =
+								Context.lookupOffsets[ context_mode ];
+							context_lookup_offset2 =
+								Context.lookupOffsets[ context_mode + 1 ];
+							htree_command = hgroup[ 1 ].htrees[ 0 ];
+
+							while ( meta_block_remaining_len > 0 ) {
+								var cmd_code;
+								var range_idx;
+								var insert_code;
+								var copy_code;
+								var insert_length;
+								var copy_length;
+								var distance_code;
+								var distance;
+								var context;
+								var j;
+								var copy_dst;
+
+								br.readMoreInput();
+
+								if ( block_length[ 1 ] === 0 ) {
+									DecodeBlockType(
+										num_block_types[ 1 ],
+										block_type_trees,
+										1,
+										block_type,
+										block_type_rb,
+										block_type_rb_index,
+										br
+									);
+									block_length[ 1 ] = ReadBlockLength(
+										block_len_trees,
+										HUFFMAN_MAX_TABLE_SIZE,
+										br
+									);
+									htree_command =
+										hgroup[ 1 ].htrees[ block_type[ 1 ] ];
+								}
+								--block_length[ 1 ];
+								cmd_code = ReadSymbol(
+									hgroup[ 1 ].codes,
+									htree_command,
+									br
+								);
+								range_idx = cmd_code >> 6;
+								if ( range_idx >= 2 ) {
+									range_idx -= 2;
+									distance_code = -1;
+								} else {
+									distance_code = 0;
+								}
+								insert_code =
+									Prefix.kInsertRangeLut[ range_idx ] +
+									( ( cmd_code >> 3 ) & 7 );
+								copy_code =
+									Prefix.kCopyRangeLut[ range_idx ] +
+									( cmd_code & 7 );
+								insert_length =
+									Prefix.kInsertLengthPrefixCode[
+										insert_code
+									].offset +
+									br.readBits(
+										Prefix.kInsertLengthPrefixCode[
+											insert_code
+										].nbits
+									);
+								copy_length =
+									Prefix.kCopyLengthPrefixCode[ copy_code ]
+										.offset +
+									br.readBits(
+										Prefix.kCopyLengthPrefixCode[
+											copy_code
+										].nbits
+									);
+								prev_byte1 =
+									ringbuffer[ ( pos - 1 ) & ringbuffer_mask ];
+								prev_byte2 =
+									ringbuffer[ ( pos - 2 ) & ringbuffer_mask ];
+								for ( j = 0; j < insert_length; ++j ) {
+									br.readMoreInput();
+
+									if ( block_length[ 0 ] === 0 ) {
+										DecodeBlockType(
+											num_block_types[ 0 ],
+											block_type_trees,
+											0,
+											block_type,
+											block_type_rb,
+											block_type_rb_index,
+											br
+										);
+										block_length[ 0 ] = ReadBlockLength(
+											block_len_trees,
+											0,
+											br
+										);
+										context_offset =
+											block_type[ 0 ] <<
+											kLiteralContextBits;
+										context_map_slice = context_offset;
+										context_mode =
+											context_modes[ block_type[ 0 ] ];
+										context_lookup_offset1 =
+											Context.lookupOffsets[
+												context_mode
+											];
+										context_lookup_offset2 =
+											Context.lookupOffsets[
+												context_mode + 1
+											];
+									}
+									context =
+										Context.lookup[
+											context_lookup_offset1 + prev_byte1
+										] |
+										Context.lookup[
+											context_lookup_offset2 + prev_byte2
+										];
+									literal_htree_index =
+										context_map[
+											context_map_slice + context
+										];
+									--block_length[ 0 ];
+									prev_byte2 = prev_byte1;
+									prev_byte1 = ReadSymbol(
+										hgroup[ 0 ].codes,
+										hgroup[ 0 ].htrees[
+											literal_htree_index
+										],
+										br
+									);
+									ringbuffer[ pos & ringbuffer_mask ] =
+										prev_byte1;
+									if (
+										( pos & ringbuffer_mask ) ===
+										ringbuffer_mask
+									) {
+										output.write(
+											ringbuffer,
+											ringbuffer_size
+										);
+									}
+									++pos;
+								}
+								meta_block_remaining_len -= insert_length;
+								if ( meta_block_remaining_len <= 0 ) break;
+
+								if ( distance_code < 0 ) {
+									var context;
+
+									br.readMoreInput();
+									if ( block_length[ 2 ] === 0 ) {
+										DecodeBlockType(
+											num_block_types[ 2 ],
+											block_type_trees,
+											2,
+											block_type,
+											block_type_rb,
+											block_type_rb_index,
+											br
+										);
+										block_length[ 2 ] = ReadBlockLength(
+											block_len_trees,
+											2 * HUFFMAN_MAX_TABLE_SIZE,
+											br
+										);
+										dist_context_offset =
+											block_type[ 2 ] <<
+											kDistanceContextBits;
+										dist_context_map_slice =
+											dist_context_offset;
+									}
+									--block_length[ 2 ];
+									context =
+										( copy_length > 4
+											? 3
+											: copy_length - 2 ) & 0xff;
+									dist_htree_index =
+										dist_context_map[
+											dist_context_map_slice + context
+										];
+									distance_code = ReadSymbol(
+										hgroup[ 2 ].codes,
+										hgroup[ 2 ].htrees[ dist_htree_index ],
+										br
+									);
+									if (
+										distance_code >=
+										num_direct_distance_codes
+									) {
+										var nbits;
+										var postfix;
+										var offset;
+										distance_code -=
+											num_direct_distance_codes;
+										postfix =
+											distance_code &
+											distance_postfix_mask;
+										distance_code >>= distance_postfix_bits;
+										nbits = ( distance_code >> 1 ) + 1;
+										offset =
+											( ( 2 + ( distance_code & 1 ) ) <<
+												nbits ) -
+											4;
+										distance_code =
+											num_direct_distance_codes +
+											( ( offset +
+												br.readBits( nbits ) ) <<
+												distance_postfix_bits ) +
+											postfix;
+									}
+								}
+
+								/* Convert the distance code to the actual distance by possibly looking */
+								/* up past distnaces from the ringbuffer. */
+								distance = TranslateShortCodes(
+									distance_code,
+									dist_rb,
+									dist_rb_idx
+								);
+								if ( distance < 0 ) {
+									throw new Error(
+										'[BrotliDecompress] invalid distance'
+									);
+								}
+
+								if (
+									pos < max_backward_distance &&
+									max_distance !== max_backward_distance
+								) {
+									max_distance = pos;
+								} else {
+									max_distance = max_backward_distance;
+								}
+
+								copy_dst = pos & ringbuffer_mask;
+
+								if ( distance > max_distance ) {
+									if (
+										copy_length >=
+											BrotliDictionary.minDictionaryWordLength &&
+										copy_length <=
+											BrotliDictionary.maxDictionaryWordLength
+									) {
+										var offset =
+											BrotliDictionary.offsetsByLength[
+												copy_length
+											];
+										var word_id =
+											distance - max_distance - 1;
+										var shift =
+											BrotliDictionary.sizeBitsByLength[
+												copy_length
+											];
+										var mask = ( 1 << shift ) - 1;
+										var word_idx = word_id & mask;
+										var transform_idx = word_id >> shift;
+										offset += word_idx * copy_length;
+										if (
+											transform_idx <
+											Transform.kNumTransforms
+										) {
+											var len =
+												Transform.transformDictionaryWord(
+													ringbuffer,
+													copy_dst,
+													offset,
+													copy_length,
+													transform_idx
+												);
+											copy_dst += len;
+											pos += len;
+											meta_block_remaining_len -= len;
+											if ( copy_dst >= ringbuffer_end ) {
+												output.write(
+													ringbuffer,
+													ringbuffer_size
+												);
+
+												for (
+													var _x = 0;
+													_x <
+													copy_dst - ringbuffer_end;
+													_x++
+												)
+													ringbuffer[ _x ] =
+														ringbuffer[
+															ringbuffer_end + _x
+														];
+											}
+										} else {
+											throw new Error(
+												'Invalid backward reference. pos: ' +
+													pos +
+													' distance: ' +
+													distance +
+													' len: ' +
+													copy_length +
+													' bytes left: ' +
+													meta_block_remaining_len
+											);
+										}
+									} else {
+										throw new Error(
+											'Invalid backward reference. pos: ' +
+												pos +
+												' distance: ' +
+												distance +
+												' len: ' +
+												copy_length +
+												' bytes left: ' +
+												meta_block_remaining_len
+										);
+									}
+								} else {
+									if ( distance_code > 0 ) {
+										dist_rb[ dist_rb_idx & 3 ] = distance;
+										++dist_rb_idx;
+									}
+
+									if (
+										copy_length > meta_block_remaining_len
+									) {
+										throw new Error(
+											'Invalid backward reference. pos: ' +
+												pos +
+												' distance: ' +
+												distance +
+												' len: ' +
+												copy_length +
+												' bytes left: ' +
+												meta_block_remaining_len
+										);
+									}
+
+									for ( j = 0; j < copy_length; ++j ) {
+										ringbuffer[ pos & ringbuffer_mask ] =
+											ringbuffer[
+												( pos - distance ) &
+													ringbuffer_mask
+											];
+										if (
+											( pos & ringbuffer_mask ) ===
+											ringbuffer_mask
+										) {
+											output.write(
+												ringbuffer,
+												ringbuffer_size
+											);
+										}
+										++pos;
+										--meta_block_remaining_len;
+									}
+								}
+
+								/* When we get here, we must have inserted at least one literal and */
+								/* made a copy of at least length two, therefore accessing the last 2 */
+								/* bytes is valid. */
+								prev_byte1 =
+									ringbuffer[ ( pos - 1 ) & ringbuffer_mask ];
+								prev_byte2 =
+									ringbuffer[ ( pos - 2 ) & ringbuffer_mask ];
+							}
+
+							/* Protect pos from overflow, wrap it around at every GB of input data */
+							pos &= 0x3fffffff;
+						}
+
+						output.write( ringbuffer, pos & ringbuffer_mask );
+					}
+
+					exports.BrotliDecompress = BrotliDecompress;
+
+					BrotliDictionary.init();
+				},
+				{
+					'./bit_reader': 1,
+					'./context': 2,
+					'./dictionary': 6,
+					'./huffman': 7,
+					'./prefix': 9,
+					'./streams': 10,
+					'./transform': 11,
+				},
+			],
+			4: [
+				function ( require, module, exports ) {
+					var base64 = require( 'base64-js' );
+					//var fs = require('fs');
+
+					/**
+					 * The normal dictionary-data.js is quite large, which makes it
+					 * unsuitable for browser usage. In order to make it smaller,
+					 * we read dictionary.bin, which is a compressed version of
+					 * the dictionary, and on initial load, Brotli decompresses
+					 * it's own dictionary. 😜
+					 */
+					exports.init = function () {
+						var BrotliDecompressBuffer =
+							require( './decode' ).BrotliDecompressBuffer;
+						var compressed = base64.toByteArray(
+							require( './dictionary.bin.js' )
+						);
+						return BrotliDecompressBuffer( compressed );
+					};
+				},
+				{ './decode': 3, './dictionary.bin.js': 5, 'base64-js': 8 },
+			],
+			5: [
+				function ( require, module, exports ) {
+					module.exports =
+						'W5/fcQLn5gKf2XUbAiQ1XULX+TZz6ADToDsgqk6qVfeC0e4m6OO2wcQ1J76ZBVRV1fRkEsdu//62zQsFEZWSTCnMhcsQKlS2qOhuVYYMGCkV0fXWEoMFbESXrKEZ9wdUEsyw9g4bJlEt1Y6oVMxMRTEVbCIwZzJzboK5j8m4YH02qgXYhv1V+PM435sLVxyHJihaJREEhZGqL03txGFQLm76caGO/ovxKvzCby/3vMTtX/459f0igi7WutnKiMQ6wODSoRh/8Lx1V3Q99MvKtwB6bHdERYRY0hStJoMjNeTsNX7bn+Y7e4EQ3bf8xBc7L0BsyfFPK43dGSXpL6clYC/I328h54/VYrQ5i0648FgbGtl837svJ35L3Mot/+nPlNpWgKx1gGXQYqX6n+bbZ7wuyCHKcUok12Xjqub7NXZGzqBx0SD+uziNf87t7ve42jxSKQoW3nyxVrWIGlFShhCKxjpZZ5MeGna0+lBkk+kaN8F9qFBAFgEogyMBdcX/T1W/WnMOi/7ycWUQloEBKGeC48MkiwqJkJO+12eQiOFHMmck6q/IjWW3RZlany23TBm+cNr/84/oi5GGmGBZWrZ6j+zykVozz5fT/QH/Da6WTbZYYPynVNO7kxzuNN2kxKKWche5WveitPKAecB8YcAHz/+zXLjcLzkdDSktNIDwZE9J9X+tto43oJy65wApM3mDzYtCwX9lM+N5VR3kXYo0Z3t0TtXfgBFg7gU8oN0Dgl7fZlUbhNll+0uuohRVKjrEd8egrSndy5/Tgd2gqjA4CAVuC7ESUmL3DZoGnfhQV8uwnpi8EGvAVVsowNRxPudck7+oqAUDkwZopWqFnW1riss0t1z6iCISVKreYGNvQcXv+1L9+jbP8cd/dPUiqBso2q+7ZyFBvENCkkVr44iyPbtOoOoCecWsiuqMSML5lv+vN5MzUr+Dnh73G7Q1YnRYJVYXHRJaNAOByiaK6CusgFdBPE40r0rvqXV7tksKO2DrHYXBTv8P5ysqxEx8VDXUDDqkPH6NNOV/a2WH8zlkXRELSa8P+heNyJBBP7PgsG1EtWtNef6/i+lcayzQwQCsduidpbKfhWUDgAEmyhGu/zVTacI6RS0zTABrOYueemnVa19u9fT23N/Ta6RvTpof5DWygqreCqrDAgM4LID1+1T/taU6yTFVLqXOv+/MuQOFnaF8vLMKD7tKWDoBdALgxF33zQccCcdHx8fKIVdW69O7qHtXpeGr9jbbpFA+qRMWr5hp0s67FPc7HAiLV0g0/peZlW7hJPYEhZyhpSwahnf93/tZgfqZWXFdmdXBzqxGHLrQKxoAY6fRoBhgCRPmmGueYZ5JexTVDKUIXzkG/fqp/0U3hAgQdJ9zumutK6nqWbaqvm1pgu03IYR+G+8s0jDBBz8cApZFSBeuWasyqo2OMDKAZCozS+GWSvL/HsE9rHxooe17U3s/lTE+VZAk4j3dp6uIGaC0JMiqR5CUsabPyM0dOYDR7Ea7ip4USZlya38YfPtvrX/tBlhHilj55nZ1nfN24AOAi9BVtz/Mbn8AEDJCqJgsVUa6nQnSxv2Fs7l/NlCzpfYEjmPrNyib/+t0ei2eEMjvNhLkHCZlci4WhBe7ePZTmzYqlY9+1pxtS4GB+5lM1BHT9tS270EWUDYFq1I0yY/fNiAk4bk9yBgmef/f2k6AlYQZHsNFnW8wBQxCd68iWv7/35bXfz3JZmfGligWAKRjIs3IpzxQ27vAglHSiOzCYzJ9L9A1CdiyFvyR66ucA4jKifu5ehwER26yV7HjKqn5Mfozo7Coxxt8LWWPT47BeMxX8p0Pjb7hZn+6bw7z3Lw+7653j5sI8CLu5kThpMlj1m4c2ch3jGcP1FsT13vuK3qjecKTZk2kHcOZY40UX+qdaxstZqsqQqgXz+QGF99ZJLqr3VYu4aecl1Ab5GmqS8k/GV5b95zxQ5d4EfXUJ6kTS/CXF/aiqKDOT1T7Jz5z0PwDUcwr9clLN1OJGCiKfqvah+h3XzrBOiLOW8wvn8gW6qE8vPxi+Efv+UH55T7PQFVMh6cZ1pZQlzJpKZ7P7uWvwPGJ6DTlR6wbyj3Iv2HyefnRo/dv7dNx+qaa0N38iBsR++Uil7Wd4afwDNsrzDAK4fXZwvEY/jdKuIKXlfrQd2C39dW7ntnRbIp9OtGy9pPBn/V2ASoi/2UJZfS+xuGLH8bnLuPlzdTNS6zdyk8Dt/h6sfOW5myxh1f+zf3zZ3MX/mO9cQPp5pOx967ZA6/pqHvclNfnUFF+rq+Vd7alKr6KWPcIDhpn6v2K6NlUu6LrKo8b/pYpU/Gazfvtwhn7tEOUuXht5rUJdSf6sLjYf0VTYDgwJ81yaqKTUYej/tbHckSRb/HZicwGJqh1mAHB/IuNs9dc9yuvF3D5Xocm3elWFdq5oEy70dYFit79yaLiNjPj5UUcVmZUVhQEhW5V2Z6Cm4HVH/R8qlamRYwBileuh07CbEce3TXa2JmXWBf+ozt319psboobeZhVnwhMZzOeQJzhpTDbP71Tv8HuZxxUI/+ma3XW6DFDDs4+qmpERwHGBd2edxwUKlODRdUWZ/g0GOezrbzOZauFMai4QU6GVHV6aPNBiBndHSsV4IzpvUiiYyg6OyyrL4Dj5q/Lw3N5kAwftEVl9rNd7Jk5PDij2hTH6wIXnsyXkKePxbmHYgC8A6an5Fob/KH5GtC0l4eFso+VpxedtJHdHpNm+Bvy4C79yVOkrZsLrQ3OHCeB0Ra+kBIRldUGlDCEmq2RwXnfyh6Dz+alk6eftI2n6sastRrGwbwszBeDRS/Fa/KwRJkCzTsLr/JCs5hOPE/MPLYdZ1F1fv7D+VmysX6NpOC8aU9F4Qs6HvDyUy9PvFGDKZ/P5101TYHFl8pjj6wm/qyS75etZhhfg0UEL4OYmHk6m6dO192AzoIyPSV9QedDA4Ml23rRbqxMPMxf7FJnDc5FTElVS/PyqgePzmwVZ26NWhRDQ+oaT7ly7ell4s3DypS1s0g+tOr7XHrrkZj9+x/mJBttrLx98lFIaRZzHz4aC7r52/JQ4VjHahY2/YVXZn/QC2ztQb/sY3uRlyc5vQS8nLPGT/n27495i8HPA152z7Fh5aFpyn1GPJKHuPL8Iw94DuW3KjkURAWZXn4EQy89xiKEHN1mk/tkM4gYDBxwNoYvRfE6LFqsxWJtPrDGbsnLMap3Ka3MUoytW0cvieozOmdERmhcqzG+3HmZv2yZeiIeQTKGdRT4HHNxekm1tY+/n06rGmFleqLscSERzctTKM6G9P0Pc1RmVvrascIxaO1CQCiYPE15bD7c3xSeW7gXxYjgxcrUlcbIvO0r+Yplhx0kTt3qafDOmFyMjgGxXu73rddMHpV1wMubyAGcf/v5dLr5P72Ta9lBF+fzMJrMycwv+9vnU3ANIl1cH9tfW7af8u0/HG0vV47jNFXzFTtaha1xvze/s8KMtCYucXc1nzfd/MQydUXn/b72RBt5wO/3jRcMH9BdhC/yctKBIveRYPrNpDWqBsO8VMmP+WvRaOcA4zRMR1PvSoO92rS7pYEv+fZfEfTMzEdM+6X5tLlyxExhqLRkms5EuLovLfx66de5fL2/yX02H52FPVwahrPqmN/E0oVXnsCKhbi/yRxX83nRbUKWhzYceXOntfuXn51NszJ6MO73pQf5Pl4in3ec4JU8hF7ppV34+mm9r1LY0ee/i1O1wpd8+zfLztE0cqBxggiBi5Bu95v9l3r9r/U5hweLn+TbfxowrWDqdJauKd8+q/dH8sbPkc9ttuyO94f7/XK/nHX46MPFLEb5qQlNPvhJ50/59t9ft3LXu7uVaWaO2bDrDCnRSzZyWvFKxO1+vT8MwwunR3bX0CkfPjqb4K9O19tn5X50PvmYpEwHtiW9WtzuV/s76B1zvLLNkViNd8ySxIl/3orfqP90TyTGaf7/rx8jQzeHJXdmh/N6YDvbvmTBwCdxfEQ1NcL6wNMdSIXNq7b1EUzRy1/Axsyk5p22GMG1b+GxFgbHErZh92wuvco0AuOLXct9hvw2nw/LqIcDRRmJmmZzcgUa7JpM/WV/S9IUfbF56TL2orzqwebdRD8nIYNJ41D/hz37Fo11p2Y21wzPcn713qVGhqtevStYfGH4n69OEJtPvbbLYWvscDqc3Hgnu166+tAyLnxrX0Y5zoYjV++1sI7t5kMr02KT/+uwtkc+rZLOf/qn/s3nYCf13Dg8/sB2diJgjGqjQ+TLhxbzyue2Ob7X6/9lUwW7a+lbznHzOYy8LKW1C/uRPbQY3KW/0gO9LXunHLvPL97afba9bFtc9hmz7GAttjVYlCvQAiOwAk/gC5+hkLEs6tr3AZKxLJtOEwk2dLxTYWsIB/j/ToWtIWzo906FrSG8iaqqqqqqiIiIiAgzMzMzNz+AyK+01/zi8n8S+Y1MjoRaQ80WU/G8MBlO+53VPXANrWm4wzGUVZUjjBJZVdhpcfkjsmcWaO+UEldXi1e+zq+HOsCpknYshuh8pOLISJun7TN0EIGW2xTnlOImeecnoGW4raxe2G1T3HEvfYUYMhG+gAFOAwh5nK8mZhwJMmN7r224QVsNFvZ87Z0qatvknklyPDK3Hy45PgVKXji52Wen4d4PlFVVYGnNap+fSpFbK90rYnhUc6n91Q3AY9E0tJOFrcfZtm/491XbcG/jsViUPPX76qmeuiz+qY1Hk7/1VPM405zWVuoheLUimpWYdVzCmUdKHebMdzgrYrb8mL2eeLSnRWHdonfZa8RsOU9F37w+591l5FLYHiOqWeHtE/lWrBHcRKp3uhtr8yXm8LU/5ms+NM6ZKsqu90cFZ4o58+k4rdrtB97NADFbwmEG7lXqvirhOTOqU14xuUF2myIjURcPHrPOQ4lmM3PeMg7bUuk0nnZi67bXsU6H8lhqIo8TaOrEafCO1ARK9PjC0QOoq2BxmMdgYB9G/lIb9++fqNJ2s7BHGFyBNmZAR8J3KCo012ikaSP8BCrf6VI0X5xdnbhHIO+B5rbOyB54zXkzfObyJ4ecwxfqBJMLFc7m59rNcw7hoHnFZ0b00zee+gTqvjm61Pb4xn0kcDX4jvHM0rBXZypG3DCKnD/Waa/ZtHmtFPgO5eETx+k7RrVg3aSwm2YoNXnCs3XPQDhNn+Fia6IlOOuIG6VJH7TP6ava26ehKHQa2T4N0tcZ9dPCGo3ZdnNltsHQbeYt5vPnJezV/cAeNypdml1vCHI8M81nSRP5Qi2+mI8v/sxiZru9187nRtp3f/42NemcONa+4eVC3PCZzc88aZh851CqSsshe70uPxeN/dmYwlwb3trwMrN1Gq8jbnApcVDx/yDPeYs5/7r62tsQ6lLg+DiFXTEhzR9dHqv0iT4tgj825W+H3XiRUNUZT2kR9Ri0+lp+UM3iQtS8uOE23Ly4KYtvqH13jghUntJRAewuzNLDXp8RxdcaA3cMY6TO2IeSFRXezeWIjCqyhsUdMYuCgYTZSKpBype1zRfq8FshvfBPc6BAQWl7/QxIDp3VGo1J3vn42OEs3qznws+YLRXbymyB19a9XBx6n/owcyxlEYyFWCi+kG9F+EyD/4yn80+agaZ9P7ay2Dny99aK2o91FkfEOY8hBwyfi5uwx2y5SaHmG+oq/zl1FX/8irOf8Y3vAcX/6uLP6A6nvMO24edSGPjQc827Rw2atX+z2bKq0CmW9mOtYnr5/AfDa1ZfPaXnKtlWborup7QYx+Or2uWb+N3N//2+yDcXMqIJdf55xl7/vsj4WoPPlxLxtVrkJ4w/tTe3mLdATOOYwxcq52w5Wxz5MbPdVs5O8/lhfE7dPj0bIiPQ3QV0iqm4m3YX8hRfc6jQ3fWepevMqUDJd86Z4vwM40CWHnn+WphsGHfieF02D3tmZvpWD+kBpNCFcLnZhcmmrhpGzzbdA+sQ1ar18OJD87IOKOFoRNznaHPNHUfUNhvY1iU+uhvEvpKHaUn3qK3exVVyX4joipp3um7FmYJWmA+WbIDshRpbVRx5/nqstCgy87FGbfVB8yDGCqS+2qCsnRwnSAN6zgzxfdB2nBT/vZ4/6uxb6oH8b4VBRxiIB93wLa47hG3w2SL/2Z27yOXJFwZpSJaBYyvajA7vRRYNKqljXKpt/CFD/tSMr18DKKbwB0xggBePatl1nki0yvqW5zchlyZmJ0OTxJ3D+fsYJs/mxYN5+Le5oagtcl+YsVvy8kSjI2YGvGjvmpkRS9W2dtXqWnVuxUhURm1lKtou/hdEq19VBp9OjGvHEQSmrpuf2R24mXGheil8KeiANY8fW1VERUfBImb64j12caBZmRViZHbeVMjCrPDg9A90IXrtnsYCuZtRQ0PyrKDjBNOsPfKsg1pA02gHlVr0OXiFhtp6nJqXVzcbfM0KnzC3ggOENPE9VBdmHKN6LYaijb4wXxJn5A0FSDF5j+h1ooZx885Jt3ZKzO5n7Z5WfNEOtyyPqQEnn7WLv5Fis3PdgMshjF1FRydbNyeBbyKI1oN1TRVrVK7kgsb/zjX4NDPIRMctVeaxVB38Vh1x5KbeJbU138AM5KzmZu3uny0ErygxiJF7GVXUrPzFxrlx1uFdAaZFDN9cvIb74qD9tzBMo7L7WIEYK+sla1DVMHpF0F7b3+Y6S+zjvLeDMCpapmJo1weBWuxKF3rOocih1gun4BoJh1kWnV/Jmiq6uOhK3VfKxEHEkafjLgK3oujaPzY6SXg8phhL4TNR1xvJd1Wa0aYFfPUMLrNBDCh4AuGRTbtKMc6Z1Udj8evY/ZpCuMAUefdo69DZUngoqE1P9A3PJfOf7WixCEj+Y6t7fYeHbbxUAoFV3M89cCKfma3fc1+jKRe7MFWEbQqEfyzO2x/wrO2VYH7iYdQ9BkPyI8/3kXBpLaCpU7eC0Yv/am/tEDu7HZpqg0EvHo0nf/R/gRzUWy33/HXMJQeu1GylKmOkXzlCfGFruAcPPhaGqZOtu19zsJ1SO2Jz4Ztth5cBX6mRQwWmDwryG9FUMlZzNckMdK+IoMJv1rOWnBamS2w2KHiaPMPLC15hCZm4KTpoZyj4E2TqC/P6r7/EhnDMhKicZZ1ZwxuC7DPzDGs53q8gXaI9kFTK+2LTq7bhwsTbrMV8Rsfua5lMS0FwbTitUVnVa1yTb5IX51mmYnUcP9wPr8Ji1tiYJeJV9GZTrQhF7vvdU2OTU42ogJ9FDwhmycI2LIg++03C6scYhUyUuMV5tkw6kGUoL+mjNC38+wMdWNljn6tGPpRES7veqrSn5TRuv+dh6JVL/iDHU1db4c9WK3++OrH3PqziF916UMUKn8G67nN60GfWiHrXYhUG3yVWmyYak59NHj8t1smG4UDiWz2rPHNrKnN4Zo1LBbr2/eF9YZ0n0blx2nG4X+EKFxvS3W28JESD+FWk61VCD3z/URGHiJl++7TdBwkCj6tGOH3qDb0QqcOF9Kzpj0HUb/KyFW3Yhj2VMKJqGZleFBH7vqvf7WqLC3XMuHV8q8a4sTFuxUtkD/6JIBvKaVjv96ndgruKZ1k/BHzqf2K9fLk7HGXANyLDd1vxkK/i055pnzl+zw6zLnwXlVYVtfmacJgEpRP1hbGgrYPVN6v2lG+idQNGmwcKXu/8xEj/P6qe/sB2WmwNp6pp8jaISMkwdleFXYK55NHWLTTbutSUqjBfDGWo/Yg918qQ+8BRZSAHZbfuNZz2O0sov1Ue4CWlVg3rFhM3Kljj9ksGd/NUhk4nH+a5UN2+1i8+NM3vRNp7uQ6sqexSCukEVlVZriHNqFi5rLm9TMWa4qm3idJqppQACol2l4VSuvWLfta4JcXy3bROPNbXOgdOhG47LC0CwW/dMlSx4Jf17aEU3yA1x9p+Yc0jupXgcMuYNku64iYOkGToVDuJvlbEKlJqsmiHbvNrIVZEH+yFdF8DbleZ6iNiWwMqvtMp/mSpwx5KxRrT9p3MAPTHGtMbfvdFhyj9vhaKcn3At8Lc16Ai+vBcSp1ztXi7rCJZx/ql7TXcclq6Q76UeKWDy9boS0WHIjUuWhPG8LBmW5y2rhuTpM5vsLt+HOLh1Yf0DqXa9tsfC+kaKt2htA0ai/L2i7RKoNjEwztkmRU0GfgW1TxUvPFhg0V7DdfWJk5gfrccpYv+MA9M0dkGTLECeYwUixRzjRFdmjG7zdZIl3XKB9YliNKI31lfa7i2JG5C8Ss+rHe0D7Z696/V3DEAOWHnQ9yNahMUl5kENWS6pHKKp2D1BaSrrHdE1w2qNxIztpXgUIrF0bm15YML4b6V1k+GpNysTahKMVrrS85lTVo9OGJ96I47eAy5rYWpRf/mIzeoYU1DKaQCTUVwrhHeyNoDqHel+lLxr9WKzhSYw7vrR6+V5q0pfi2k3L1zqkubY6rrd9ZLvSuWNf0uqnkY+FpTvFzSW9Fp0b9l8JA7THV9eCi/PY/SCZIUYx3BU2alj7Cm3VV6eYpios4b6WuNOJdYXUK3zTqj5CVG2FqYM4Z7CuIU0qO05XR0d71FHM0YhZmJmTRfLlXEumN82BGtzdX0S19t1e+bUieK8zRmqpa4Qc5TSjifmaQsY2ETLjhI36gMR1+7qpjdXXHiceUekfBaucHShAOiFXmv3sNmGQyU5iVgnoocuonQXEPTFwslHtS8R+A47StI9wj0iSrtbi5rMysczFiImsQ+bdFClnFjjpXXwMy6O7qfjOr8Fb0a7ODItisjnn3EQO16+ypd1cwyaAW5Yzxz5QknfMO7643fXW/I9y3U2xH27Oapqr56Z/tEzglj6IbT6HEHjopiXqeRbe5mQQvxtcbDOVverN0ZgMdzqRYRjaXtMRd56Q4cZSmdPvZJdSrhJ1D9zNXPqAEqPIavPdfubt5oke2kmv0dztIszSv2VYuoyf1UuopbsYb+uX9h6WpwjpgtZ6fNNawNJ4q8O3CFoSbioAaOSZMx2GYaPYB+rEb6qjQiNRFQ76TvwNFVKD+BhH9VhcKGsXzmMI7BptU/CNWolM7YzROvpFAntsiWJp6eR2d3GarcYShVYSUqhmYOWj5E96NK2WvmYNTeY7Zs4RUEdv9h9QT4EseKt6LzLrqEOs3hxAY1MaNWpSa6zZx8F3YOVeCYMS88W+CYHDuWe4yoc6YK+djDuEOrBR5lvh0r+Q9uM88lrjx9x9AtgpQVNE8r+3O6Gvw59D+kBF/UMXyhliYUtPjmvXGY6Dk3x+kEOW+GtdMVC4EZTqoS/jmR0P0LS75DOc/w2vnri97M4SdbZ8qeU7gg8DVbERkU5geaMQO3mYrSYyAngeUQqrN0C0/vsFmcgWNXNeidsTAj7/4MncJR0caaBUpbLK1yBCBNRjEv6KvuVSdpPnEMJdsRRtqJ+U8tN1gXA4ePHc6ZT0eviI73UOJF0fEZ8YaneAQqQdGphNvwM4nIqPnXxV0xA0fnCT+oAhJuyw/q8jO0y8CjSteZExwBpIN6SvNp6A5G/abi6egeND/1GTguhuNjaUbbnSbGd4L8937Ezm34Eyi6n1maeOBxh3PI0jzJDf5mh/BsLD7F2GOKvlA/5gtvxI3/eV4sLfKW5Wy+oio+es/u6T8UU+nsofy57Icb/JlZHPFtCgd/x+bwt3ZT+xXTtTtTrGAb4QehC6X9G+8YT+ozcLxDsdCjsuOqwPFnrdLYaFc92Ui0m4fr39lYmlCaqTit7G6O/3kWDkgtXjNH4BiEm/+jegQnihOtfffn33WxsFjhfMd48HT+f6o6X65j7XR8WLSHMFkxbvOYsrRsF1bowDuSQ18Mkxk4qz2zoGPL5fu9h2Hqmt1asl3Q3Yu3szOc+spiCmX4AETBM3pLoTYSp3sVxahyhL8eC4mPN9k2x3o0xkiixIzM3CZFzf5oR4mecQ5+ax2wCah3/crmnHoqR0+KMaOPxRif1oEFRFOO/kTPPmtww+NfMXxEK6gn6iU32U6fFruIz8Q4WgljtnaCVTBgWx7diUdshC9ZEa5yKpRBBeW12r/iNc/+EgNqmhswNB8SBoihHXeDF7rrWDLcmt3V8GYYN7pXRy4DZjj4DJuUBL5iC3DQAaoo4vkftqVTYRGLS3mHZ7gdmdTTqbgNN/PTdTCOTgXolc88MhXAEUMdX0iy1JMuk5wLsgeu0QUYlz2S4skTWwJz6pOm/8ihrmgGfFgri+ZWUK2gAPHgbWa8jaocdSuM4FJYoKicYX/ZSENkg9Q1ZzJfwScfVnR2DegOGwCvmogaWJCLQepv9WNlU6QgsmOwICquU28Mlk3d9W5E81lU/5Ez0LcX6lwKMWDNluNKfBDUy/phJgBcMnfkh9iRxrdOzgs08JdPB85Lwo+GUSb4t3nC+0byqMZtO2fQJ4U2zGIr49t/28qmmGv2RanDD7a3FEcdtutkW8twwwlUSpb8QalodddbBfNHKDQ828BdE7OBgFdiKYohLawFYqpybQoxATZrheLhdI7+0Zlu9Q1myRcd15r9UIm8K2LGJxqTegntqNVMKnf1a8zQiyUR1rxoqjiFxeHxqFcYUTHfDu7rhbWng6qOxOsI+5A1p9mRyEPdVkTlE24vY54W7bWc6jMgZvNXdfC9/9q7408KDsbdL7Utz7QFSDetz2picArzrdpL8OaCHC9V26RroemtDZ5yNM/KGkWMyTmfnInEvwtSD23UcFcjhaE3VKzkoaEMKGBft4XbIO6forTY1lmGQwVmKicBCiArDzE+1oIxE08fWeviIOD5TznqH+OoHadvoOP20drMPe5Irg3XBQziW2XDuHYzjqQQ4wySssjXUs5H+t3FWYMHppUnBHMx/nYIT5d7OmjDbgD9F6na3m4l7KdkeSO3kTEPXafiWinogag7b52taiZhL1TSvBFmEZafFq2H8khQaZXuitCewT5FBgVtPK0j4xUHPfUz3Q28eac1Z139DAP23dgki94EC8vbDPTQC97HPPSWjUNG5tWKMsaxAEMKC0665Xvo1Ntd07wCLNf8Q56mrEPVpCxlIMVlQlWRxM3oAfpgIc+8KC3rEXUog5g06vt7zgXY8grH7hhwVSaeuvC06YYRAwpbyk/Unzj9hLEZNs2oxPQB9yc+GnL6zTgq7rI++KDJwX2SP8Sd6YzTuw5lV/kU6eQxRD12omfQAW6caTR4LikYkBB1CMOrvgRr/VY75+NSB40Cni6bADAtaK+vyxVWpf9NeKJxN2KYQ8Q2xPB3K1s7fuhvWbr2XpgW044VD6DRs0qXoqKf1NFsaGvKJc47leUV3pppP/5VTKFhaGuol4Esfjf5zyCyUHmHthChcYh4hYLQF+AFWsuq4t0wJyWgdwQVOZiV0efRHPoK5+E1vjz9wTJmVkITC9oEstAsyZSgE/dbicwKr89YUxKZI+owD205Tm5lnnmDRuP/JnzxX3gMtlrcX0UesZdxyQqYQuEW4R51vmQ5xOZteUd8SJruMlTUzhtVw/Nq7eUBcqN2/HVotgfngif60yKEtoUx3WYOZlVJuJOh8u59fzSDPFYtQgqDUAGyGhQOAvKroXMcOYY0qjnStJR/G3aP+Jt1sLVlGV8POwr/6OGsqetnyF3TmTqZjENfnXh51oxe9qVUw2M78EzAJ+IM8lZ1MBPQ9ZWSVc4J3mWSrLKrMHReA5qdGoz0ODRsaA+vwxXA2cAM4qlfzBJA6581m4hzxItQw5dxrrBL3Y6kCbUcFxo1S8jyV44q//+7ASNNudZ6xeaNOSIUffqMn4A9lIjFctYn2gpEPAb3f7p3iIBN8H14FUGQ9ct2hPsL+cEsTgUrR47uJVN4n4wt/wgfwwHuOnLd4yobkofy8JvxSQTA7rMpDIc608SlZFJfZYcmbT0tAHpPE8MrtQ42siTUNWxqvWZOmvu9f0JPoQmg+6l7sZWwyfi6PXkxJnwBraUG0MYG4zYHQz3igy/XsFkx5tNQxw43qvI9dU3f0DdhOUlHKjmi1VAr2Kiy0HZwD8VeEbhh0OiDdMYspolQsYdSwjCcjeowIXNZVUPmL2wwIkYhmXKhGozdCJ4lRKbsf4NBh/XnQoS92NJEWOVOFs2YhN8c5QZFeK0pRdAG40hqvLbmoSA8xQmzOOEc7wLcme9JOsjPCEgpCwUs9E2DohMHRhUeyGIN6TFvrbny8nDuilsDpzrH5mS76APoIEJmItS67sQJ+nfwddzmjPxcBEBBCw0kWDwd0EZCkNeOD7NNQhtBm7KHL9mRxj6U1yWU2puzlIDtpYxdH4ZPeXBJkTGAJfUr/oTCz/iypY6uXaR2V1doPxJYlrw2ghH0D5gbrhFcIxzYwi4a/4hqVdf2DdxBp6vGYDjavxMAAoy+1+3aiO6S3W/QAKNVXagDtvsNtx7Ks+HKgo6U21B+QSZgIogV5Bt+BnXisdVfy9VyXV+2P5fMuvdpAjM1o/K9Z+XnE4EOCrue+kcdYHqAQ0/Y/OmNlQ6OI33jH/uD1RalPaHpJAm2av0/xtpqdXVKNDrc9F2izo23Wu7firgbURFDNX9eGGeYBhiypyXZft2j3hTvzE6PMWKsod//rEILDkzBXfi7xh0eFkfb3/1zzPK/PI5Nk3FbZyTl4mq5BfBoVoqiPHO4Q4QKZAlrQ3MdNfi3oxIjvsM3kAFv3fdufurqYR3PSwX/mpGy/GFI/B2MNPiNdOppWVbs/gjF3YH+QA9jMhlAbhvasAHstB0IJew09iAkmXHl1/TEj+jvHOpOGrPRQXbPADM+Ig2/OEcUcpgPTItMtW4DdqgfYVI/+4hAFWYjUGpOP/UwNuB7+BbKOcALbjobdgzeBQfjgNSp2GOpxzGLj70Vvq5cw2AoYENwKLUtJUX8sGRox4dVa/TN4xKwaKcl9XawQR/uNus700Hf17pyNnezrUgaY9e4MADhEDBpsJT6y1gDJs1q6wlwGhuUzGR7C8kgpjPyHWwsvrf3yn1zJEIRa5eSxoLAZOCR9xbuztxFRJW9ZmMYfCFJ0evm9F2fVnuje92Rc4Pl6A8bluN8MZyyJGZ0+sNSb//DvAFxC2BqlEsFwccWeAl6CyBcQV1bx4mQMBP1Jxqk1EUADNLeieS2dUFbQ/c/kvwItbZ7tx0st16viqd53WsRmPTKv2AD8CUnhtPWg5aUegNpsYgasaw2+EVooeNKmrW3MFtj76bYHJm5K9gpAXZXsE5U8DM8XmVOSJ1F1WnLy6nQup+jx52bAb+rCq6y9WXl2B2oZDhfDkW7H3oYfT/4xx5VncBuxMXP2lNfhUVQjSSzSRbuZFE4vFawlzveXxaYKVs8LpvAb8IRYF3ZHiRnm0ADeNPWocwxSzNseG7NrSEVZoHdKWqaGEBz1N8Pt7kFbqh3LYmAbm9i1IChIpLpM5AS6mr6OAPHMwwznVy61YpBYX8xZDN/a+lt7n+x5j4bNOVteZ8lj3hpAHSx1VR8vZHec4AHO9XFCdjZ9eRkSV65ljMmZVzaej2qFn/qt1lvWzNZEfHxK3qOJrHL6crr0CRzMox5f2e8ALBB4UGFZKA3tN6F6IXd32GTJXGQ7DTi9j/dNcLF9jCbDcWGKxoKTYblIwbLDReL00LRcDPMcQuXLMh5YzgtfjkFK1DP1iDzzYYVZz5M/kWYRlRpig1htVRjVCknm+h1M5LiEDXOyHREhvzCGpFZjHS0RsK27o2avgdilrJkalWqPW3D9gmwV37HKmfM3F8YZj2ar+vHFvf3B8CRoH4kDHIK9mrAg+owiEwNjjd9V+FsQKYR8czJrUkf7Qoi2YaW6EVDZp5zYlqiYtuXOTHk4fAcZ7qBbdLDiJq0WNV1l2+Hntk1mMWvxrYmc8kIx8G3rW36J6Ra4lLrTOCgiOihmow+YnzUT19jbV2B3RWqSHyxkhmgsBqMYWvOcUom1jDQ436+fcbu3xf2bbeqU/ca+C4DOKE+e3qvmeMqW3AxejfzBRFVcwVYPq4L0APSWWoJu+5UYX4qg5U6YTioqQGPG9XrnuZ/BkxuYpe6Li87+18EskyQW/uA+uk2rpHpr6hut2TlVbKgWkFpx+AZffweiw2+VittkEyf/ifinS/0ItRL2Jq3tQOcxPaWO2xrG68GdFoUpZgFXaP2wYVtRc6xYCfI1CaBqyWpg4bx8OHBQwsV4XWMibZZ0LYjWEy2IxQ1mZrf1/UNbYCJplWu3nZ4WpodIGVA05d+RWSS+ET9tH3RfGGmNI1cIY7evZZq7o+a0bjjygpmR3mVfalkT/SZGT27Q8QGalwGlDOS9VHCyFAIL0a1Q7JiW3saz9gqY8lqKynFrPCzxkU4SIfLc9VfCI5edgRhDXs0edO992nhTKHriREP1NJC6SROMgQ0xO5kNNZOhMOIT99AUElbxqeZF8A3xrfDJsWtDnUenAHdYWSwAbYjFqQZ+D5gi3hNK8CSxU9i6f6ClL9IGlj1OPMQAsr84YG6ijsJpCaGWj75c3yOZKBB9mNpQNPUKkK0D6wgLH8MGoyRxTX6Y05Q4AnYNXMZwXM4eij/9WpsM/9CoRnFQXGR6MEaY+FXvXEO3RO0JaStk6OXuHVATHJE+1W+TU3bSZ2ksMtqjO0zfSJCdBv7y2d8DMx6TfVme3q0ZpTKMMu4YL/t7ciTNtdDkwPogh3Cnjx7qk08SHwf+dksZ7M2vCOlfsF0hQ6J4ehPCaHTNrM/zBSOqD83dBEBCW/F/LEmeh0nOHd7oVl3/Qo/9GUDkkbj7yz+9cvvu+dDAtx8NzCDTP4iKdZvk9MWiizvtILLepysflSvTLFBZ37RLwiriqyRxYv/zrgFd/9XVHh/OmzBvDX4mitMR/lUavs2Vx6cR94lzAkplm3IRNy4TFfu47tuYs9EQPIPVta4P64tV+sZ7n3ued3cgEx2YK+QL5+xms6osk8qQbTyuKVGdaX9FQqk6qfDnT5ykxk0VK7KZ62b6DNDUfQlqGHxSMKv1P0XN5BqMeKG1P4Wp5QfZDUCEldppoX0U6ss2jIko2XpURKCIhfaOqLPfShdtS37ZrT+jFRSH2xYVV1rmT/MBtRQhxiO4MQ3iAGlaZi+9PWBEIXOVnu9jN1f921lWLZky9bqbM3J2MAAI9jmuAx3gyoEUa6P2ivs0EeNv/OR+AX6q5SW6l5HaoFuS6jr6yg9limu+P0KYKzfMXWcQSfTXzpOzKEKpwI3YGXZpSSy2LTlMgfmFA3CF6R5c9xWEtRuCg2ZPUQ2Nb6dRFTNd4TfGHrnEWSKHPuRyiJSDAZ+KX0VxmSHjGPbQTLVpqixia2uyhQ394gBMt7C3ZAmxn/DJS+l1fBsAo2Eir/C0jG9csd4+/tp12pPc/BVJGaK9mfvr7M/CeztrmCO5qY06Edi4xAGtiEhnWAbzLy2VEyazE1J5nPmgU4RpW4Sa0TnOT6w5lgt3/tMpROigHHmexBGAMY0mdcDbDxWIz41NgdD6oxgHsJRgr5RnT6wZAkTOcStU4NMOQNemSO7gxGahdEsC+NRVGxMUhQmmM0llWRbbmFGHzEqLM4Iw0H7577Kyo+Zf+2cUFIOw93gEY171vQaM0HLwpjpdRR6Jz7V0ckE7XzYJ0TmY9znLdzkva0vNrAGGT5SUZ5uaHDkcGvI0ySpwkasEgZPMseYcu85w8HPdSNi+4T6A83iAwDbxgeFcB1ZM2iGXzFcEOUlYVrEckaOyodfvaYSQ7GuB4ISE0nYJc15X/1ciDTPbPCgYJK55VkEor4LvzL9S2WDy4xj+6FOqVyTAC2ZNowheeeSI5hA/02l8UYkv4nk9iaVn+kCVEUstgk5Hyq+gJm6R9vG3rhuM904he/hFmNQaUIATB1y3vw+OmxP4X5Yi6A5I5jJufHCjF9+AGNwnEllZjUco6XhsO5T5+R3yxz5yLVOnAn0zuS+6zdj0nTJbEZCbXJdtpfYZfCeCOqJHoE2vPPFS6eRLjIJlG69X93nfR0mxSFXzp1Zc0lt/VafDaImhUMtbnqWVb9M4nGNQLN68BHP7AR8Il9dkcxzmBv8PCZlw9guY0lurbBsmNYlwJZsA/B15/HfkbjbwPddaVecls/elmDHNW2r4crAx43feNkfRwsaNq/yyJ0d/p5hZ6AZajz7DBfUok0ZU62gCzz7x8eVfJTKA8IWn45vINLSM1q+HF9CV9qF3zP6Ml21kPPL3CXzkuYUlnSqT+Ij4tI/od5KwIs+tDajDs64owN7tOAd6eucGz+KfO26iNcBFpbWA5732bBNWO4kHNpr9D955L61bvHCF/mwSrz6eQaDjfDEANqGMkFc+NGxpKZzCD2sj/JrHd+zlPQ8Iz7Q+2JVIiVCuCKoK/hlAEHzvk/Piq3mRL1rT/fEh9hoT5GJmeYswg1otiKydizJ/fS2SeKHVu6Z3JEHjiW8NaTQgP5xdBli8nC57XiN9hrquBu99hn9zqwo92+PM2JXtpeVZS0PdqR5mDyDreMMtEws+CpwaRyyzoYtfcvt9PJIW0fJVNNi/FFyRsea7peLvJrL+5b4GOXJ8tAr+ATk9f8KmiIsRhqRy0vFzwRV3Z5dZ3QqIU8JQ/uQpkJbjMUMFj2F9sCFeaBjI4+fL/oN3+LQgjI4zuAfQ+3IPIPFQBccf0clJpsfpnBxD84atwtupkGqKvrH7cGNl/QcWcSi6wcVDML6ljOgYbo+2BOAWNNjlUBPiyitUAwbnhFvLbnqw42kR3Yp2kv2dMeDdcGOX5kT4S6M44KHEB/SpCfl7xgsUvs+JNY9G3O2X/6FEt9FyAn57lrbiu+tl83sCymSvq9eZbe9mchL7MTf/Ta78e80zSf0hYY5eUU7+ff14jv7Xy8qjzfzzzvaJnrIdvFb5BLWKcWGy5/w7+vV2cvIfwHqdTB+RuJK5oj9mbt0Hy94AmjMjjwYNZlNS6uiyxNnwNyt3gdreLb64p/3+08nXkb92LTkkRgFOwk1oGEVllcOj5lv1hfAZywDows0944U8vUFw+A/nuVq/UCygsrmWIBnHyU01d0XJPwriEOvx/ISK6Pk4y2w0gmojZs7lU8TtakBAdne4v/aNxmMpK4VcGMp7si0yqsiolXRuOi1Z1P7SqD3Zmp0CWcyK4Ubmp2SXiXuI5nGLCieFHKHNRIlcY3Pys2dwMTYCaqlyWSITwr2oGXvyU3h1Pf8eQ3w1bnD7ilocVjYDkcXR3Oo1BXgMLTUjNw2xMVwjtp99NhSVc5aIWrDQT5DHPKtCtheBP4zHcw4dz2eRdTMamhlHhtfgqJJHI7NGDUw1XL8vsSeSHyKqDtqoAmrQqsYwvwi7HW3ojWyhIa5oz5xJTaq14NAzFLjVLR12rRNUQ6xohDnrWFb5bG9yf8aCD8d5phoackcNJp+Dw3Due3RM+5Rid7EuIgsnwgpX0rUWh/nqPtByMhMZZ69NpgvRTKZ62ViZ+Q7Dp5r4K0d7EfJuiy06KuIYauRh5Ecrhdt2QpTS1k1AscEHvapNbU3HL1F2TFyR33Wxb5MvH5iZsrn3SDcsxlnnshO8PLwmdGN+paWnQuORtZGX37uhFT64SeuPsx8UOokY6ON85WdQ1dki5zErsJGazcBOddWJEKqNPiJpsMD1GrVLrVY+AOdPWQneTyyP1hRX/lMM4ZogGGOhYuAdr7F/DOiAoc++cn5vlf0zkMUJ40Z1rlgv9BelPqVOpxKeOpzKdF8maK+1Vv23MO9k/8+qpLoxrIGH2EDQlnGmH8CD31G8QqlyQIcpmR5bwmSVw9/Ns6IHgulCRehvZ/+VrM60Cu/r3AontFfrljew74skYe2uyn7JKQtFQBQRJ9ryGic/zQOsbS4scUBctA8cPToQ3x6ZBQu6DPu5m1bnCtP8TllLYA0UTQNVqza5nfew3Mopy1GPUwG5jsl0OVXniPmAcmLqO5HG8Hv3nSLecE9oOjPDXcsTxoCBxYyzBdj4wmnyEV4kvFDunipS8SSkvdaMnTBN9brHUR8xdmmEAp/Pdqk9uextp1t+JrtXwpN/MG2w/qhRMpSNxQ1uhg/kKO30eQ/FyHUDkWHT8V6gGRU4DhDMxZu7xXij9Ui6jlpWmQCqJg3FkOTq3WKneCRYZxBXMNAVLQgHXSCGSqNdjebY94oyIpVjMYehAiFx/tqzBXFHZaL5PeeD74rW5OysFoUXY8sebUZleFTUa/+zBKVTFDopTReXNuZq47QjkWnxjirCommO4L/GrFtVV21EpMyw8wyThL5Y59d88xtlx1g1ttSICDwnof6lt/6zliPzgVUL8jWBjC0o2D6Kg+jNuThkAlaDJsq/AG2aKA//A76avw2KNqtv223P+Wq3StRDDNKFFgtsFukYt1GFDWooFVXitaNhb3RCyJi4cMeNjROiPEDb4k+G3+hD8tsg+5hhmSc/8t2JTSwYoCzAI75doq8QTHe+E/Tw0RQSUDlU+6uBeNN3h6jJGX/mH8oj0i3caCNsjvTnoh73BtyZpsflHLq6AfwJNCDX4S98h4+pCOhGKDhV3rtkKHMa3EG4J9y8zFWI4UsfNzC/Rl5midNn7gwoN9j23HGCQQ+OAZpTTPMdiVow740gIyuEtd0qVxMyNXhHcnuXRKdw5wDUSL358ktjMXmAkvIB73BLa1vfF9BAUZInPYJiwxqFWQQBVk7gQH4ojfUQ/KEjn+A/WR6EEe4CtbpoLe1mzHkajgTIoE0SLDHVauKhrq12zrAXBGbPPWKCt4DGedq3JyGRbmPFW32bE7T20+73BatV/qQhhBWfWBFHfhYWXjALts38FemnoT+9bn1jDBMcUMmYgSc0e7GQjv2MUBwLU8ionCpgV+Qrhg7iUIfUY6JFxR0Y+ZTCPM+rVuq0GNLyJXX6nrUTt8HzFBRY1E/FIm2EeVA9NcXrj7S6YYIChVQCWr/m2fYUjC4j0XLkzZ8GCSLfmkW3PB/xq+nlXsKVBOj7vTvqKCOMq7Ztqr3cQ+N8gBnPaAps+oGwWOkbuxnRYj/x/WjiDclVrs22xMK4qArE1Ztk1456kiJriw6abkNeRHogaPRBgbgF9Z8i/tbzWELN4CvbqtrqV9TtGSnmPS2F9kqOIBaazHYaJ9bi3AoDBvlZasMluxt0BDXfhp02Jn411aVt6S4TUB8ZgFDkI6TP6gwPY85w+oUQSsjIeXVminrwIdK2ZAawb8Se6XOJbOaliQxHSrnAeONDLuCnFejIbp4YDtBcQCwMsYiRZfHefuEJqJcwKTTJ8sx5hjHmJI1sPFHOr6W9AhZ2NAod38mnLQk1gOz2LCAohoQbgMbUK9RMEA3LkiF7Sr9tLZp6lkciIGhE2V546w3Mam53VtVkGbB9w0Yk2XiRnCmbpxmHr2k4eSC0RuNbjNsUfDIfc8DZvRvgUDe1IlKdZTzcT4ZGEb53dp8VtsoZlyXzLHOdAbsp1LPTVaHvLA0GYDFMbAW/WUBfUAdHwqLFAV+3uHvYWrCfhUOR2i89qvCBoOb48usAGdcF2M4aKn79k/43WzBZ+xR1L0uZfia70XP9soQReeuhZiUnXFDG1T8/OXNmssTSnYO+3kVLAgeiY719uDwL9FQycgLPessNihMZbAKG7qwPZyG11G1+ZA3jAX2yddpYfmaKBlmfcK/V0mwIRUDC0nJSOPUl2KB8h13F4dlVZiRhdGY5farwN+f9hEb1cRi41ZcGDn6Xe9MMSTOY81ULJyXIHSWFIQHstVYLiJEiUjktlHiGjntN5/btB8Fu+vp28zl2fZXN+dJDyN6EXhS+0yzqpl/LSJNEUVxmu7BsNdjAY0jVsAhkNuuY0E1G48ej25mSt+00yPbQ4SRCVkIwb6ISvYtmJRPz9Zt5dk76blf+lJwAPH5KDF+vHAmACLoCdG2Adii6dOHnNJnTmZtoOGO8Q1jy1veMw6gbLFToQmfJa7nT7Al89mRbRkZZQxJTKgK5Kc9INzmTJFp0tpAPzNmyL/F08bX3nhCumM/cR/2RPn9emZ3VljokttZD1zVWXlUIqEU7SLk5I0lFRU0AcENXBYazNaVzsVHA/sD3o9hm42wbHIRb/BBQTKzAi8s3+bMtpOOZgLdQzCYPfX3UUxKd1WYVkGH7lh/RBBgMZZwXzU9+GYxdBqlGs0LP+DZ5g2BWNh6FAcR944B+K/JTWI3t9YyVyRhlP4CCoUk/mmF7+r2pilVBjxXBHFaBfBtr9hbVn2zDuI0kEOG3kBx8CGdPOjX1ph1POOZJUO1JEGG0jzUy2tK4X0CgVNYhmkqqQysRNtKuPdCJqK3WW57kaV17vXgiyPrl4KEEWgiGF1euI4QkSFHFf0TDroQiLNKJiLbdhH0YBhriRNCHPxSqJmNNoketaioohqMglh6wLtEGWSM1EZbQg72h0UJAIPVFCAJOThpQGGdKfFovcwEeiBuZHN2Ob4uVM7+gwZLz1D9E7ta4RmMZ24OBBAg7Eh6dLXGofZ4U2TFOCQMKjwhVckjrydRS+YaqCw1kYt6UexuzbNEDyYLTZnrY1PzsHZJT4U+awO2xlqTSYu6n/U29O2wPXgGOEKDMSq+zTUtyc8+6iLp0ivav4FKx+xxVy4FxhIF/pucVDqpsVe2jFOfdZhTzLz2QjtzvsTCvDPU7bzDH2eXVKUV9TZ+qFtaSSxnYgYdXKwVreIgvWhT9eGDB2OvnWyPLfIIIfNnfIxU8nW7MbcH05nhlsYtaW9EZRsxWcKdEqInq1DiZPKCz7iGmAU9/ccnnQud2pNgIGFYOTAWjhIrd63aPDgfj8/sdlD4l+UTlcxTI9jbaMqqN0gQxSHs60IAcW3cH4p3V1aSciTKB29L1tz2eUQhRiTgTvmqc+sGtBNh4ky0mQJGsdycBREP+fAaSs1EREDVo5gvgi5+aCN7NECw30owbCc1mSpjiahyNVwJd1jiGgzSwfTpzf2c5XJvG/g1n0fH88KHNnf+u7ZiRMlXueSIsloJBUtW9ezvsx9grfsX/FNxnbxU1Lvg0hLxixypHKGFAaPu0xCD8oDTeFSyfRT6s8109GMUZL8m2xXp8X2dpPCWWdX84iga4BrTlOfqox4shqEgh/Ht4qRst52cA1xOIUuOxgfUivp6v5f8IVyaryEdpVk72ERAwdT4aoY1usBgmP+0m06Q216H/nubtNYxHaOIYjcach3A8Ez/zc0KcShhel0HCYjFsA0FjYqyJ5ZUH1aZw3+zWC0hLpM6GDfcAdn9fq2orPmZbW6XXrf+Krc9RtvII5jeD3dFoT1KwZJwxfUMvc5KLfn8rROW23Jw89sJ2a5dpB3qWDUBWF2iX8OCuKprHosJ2mflBR+Wqs86VvgI/XMnsqb97+VlKdPVysczPj8Jhzf+WCvGBHijAqYlavbF60soMWlHbvKT+ScvhprgeTln51xX0sF+Eadc/l2s2a5BgkVbHYyz0E85p0LstqH+gEGiR84nBRRFIn8hLSZrGwqjZ3E29cuGi+5Z5bp7EM8MWFa9ssS/vy4VrDfECSv7DSU84DaP0sXI3Ap4lWznQ65nQoTKRWU30gd7Nn8ZowUvGIx4aqyXGwmA/PB4qN8msJUODezUHEl0VP9uo+cZ8vPFodSIB4C7lQYjEFj8yu49C2KIV3qxMFYTevG8KqAr0TPlkbzHHnTpDpvpzziAiNFh8xiT7C/TiyH0EguUw4vxAgpnE27WIypV+uFN2zW7xniF/n75trs9IJ5amB1zXXZ1LFkJ6GbS/dFokzl4cc2mamVwhL4XU0Av5gDWAl+aEWhAP7t2VIwU+EpvfOPDcLASX7H7lZpXA2XQfbSlD4qU18NffNPoAKMNSccBfO9YVVgmlW4RydBqfHAV7+hrZ84WJGho6bNT0YMhxxLdOx/dwGj0oyak9aAkNJ8lRJzUuA8sR+fPyiyTgUHio5+Pp+YaKlHrhR41jY5NESPS3x+zTMe0S2HnLOKCOQPpdxKyviBvdHrCDRqO+l96HhhNBLXWv4yEMuEUYo8kXnYJM8oIgVM4XJ+xXOev4YbWeqsvgq0lmw4/PiYr9sYLt+W5EAuYSFnJEan8CwJwbtASBfLBBpJZiRPor/aCJBZsM+MhvS7ZepyHvU8m5WSmaZnxuLts8ojl6KkS8oSAHkq5GWlCB/NgJ5W3rO2Cj1MK7ahxsCrbTT3a0V/QQH+sErxV4XUWDHx0kkFy25bPmBMBQ6BU3HoHhhYcJB9JhP6NXUWKxnE0raXHB6U9KHpWdQCQI72qevp5fMzcm+AvC85rsynVQhruDA9fp9COe7N56cg1UKGSas89vrN+WlGLYTwi5W+0xYdKEGtGCeNJwXKDU0XqU5uQYnWsMwTENLGtbQMvoGjIFIEMzCRal4rnBAg7D/CSn8MsCvS+FDJJAzoiioJEhZJgAp9n2+1Yznr7H+6eT4YkJ9Mpj60ImcW4i4iHDLn9RydB8dx3QYm3rsX6n4VRrZDsYK6DCGwkwd5n3/INFEpk16fYpP6JtMQpqEMzcOfQGAHXBTEGzuLJ03GYQL9bmV2/7ExDlRf+Uvf1sM2frRtCWmal12pMgtonvSCtR4n1CLUZRdTHDHP1Otwqd+rcdlavnKjUB/OYXQHUJzpNyFoKpQK+2OgrEKpGyIgIBgn2y9QHnTJihZOpEvOKIoHAMGAXHmj21Lym39Mbiow4IF+77xNuewziNVBxr6KD5e+9HzZSBIlUa/AmsDFJFXeyrQakR3FwowTGcADJHcEfhGkXYNGSYo4dh4bxwLM+28xjiqkdn0/3R4UEkvcBrBfn/SzBc1XhKM2VPlJgKSorjDac96V2UnQYXl1/yZPT4DVelgO+soMjexXwYO58VLl5xInQUZI8jc3H2CPnCNb9X05nOxIy4MlecasTqGK6s2az4RjpF2cQP2G28R+7wDPsZDZC/kWtjdoHC7SpdPmqQrUAhMwKVuxCmYTiD9q/O7GHtZvPSN0CAUQN/rymXZNniYLlJDE70bsk6Xxsh4kDOdxe7A2wo7P9F5YvqqRDI6brf79yPCSp4I0jVoO4YnLYtX5nzspR5WB4AKOYtR1ujXbOQpPyYDvfRE3FN5zw0i7reehdi7yV0YDRKRllGCGRk5Yz+Uv1fYl2ZwrnGsqsjgAVo0xEUba8ohjaNMJNwTwZA/wBDWFSCpg1eUH8MYL2zdioxRTqgGQrDZxQyNzyBJPXZF0+oxITJAbj7oNC5JwgDMUJaM5GqlGCWc//KCIrI+aclEe4IA0uzv7cuj6GCdaJONpi13O544vbtIHBF+A+JeDFUQNy61Gki3rtyQ4aUywn6ru314/dkGiP8Iwjo0J/2Txs49ZkwEl4mx+iYUUO55I6pJzU4P+7RRs+DXZkyKUYZqVWrPF4I94m4Wx1tXeE74o9GuX977yvJ/jkdak8+AmoHVjI15V+WwBdARFV2IPirJgVMdsg1Pez2VNHqa7EHWdTkl3XTcyjG9BiueWFvQfXI8aWSkuuRmqi/HUuzqyvLJfNfs0txMqldYYflWB1BS31WkuPJGGwXUCpjiQSktkuBMWwHjSkQxeehqw1Kgz0Trzm7QbtgxiEPDVmWCNCAeCfROTphd1ZNOhzLy6XfJyG6Xgd5MCAZw4xie0Sj5AnY1/akDgNS9YFl3Y06vd6FAsg2gVQJtzG7LVq1OH2frbXNHWH/NY89NNZ4QUSJqL2yEcGADbT38X0bGdukqYlSoliKOcsSTuqhcaemUeYLLoI8+MZor2RxXTRThF1LrHfqf/5LcLAjdl4EERgUysYS2geE+yFdasU91UgUDsc2cSQ1ZoT9+uLOwdgAmifwQqF028INc2IQEDfTmUw3eZxvz7Ud1z3xc1PQfeCvfKsB9jOhRj7rFyb9XcDWLcYj0bByosychMezMLVkFiYcdBBQtvI6K0KRuOZQH2kBsYHJaXTkup8F0eIhO1/GcIwWKpr2mouB7g5TUDJNvORXPXa/mU8bh27TAZYBe2sKx4NSv5OjnHIWD2RuysCzBlUfeNXhDd2jxnHoUlheJ3jBApzURy0fwm2FwwsSU0caQGl0Kv8hopRQE211NnvtLRsmCNrhhpEDoNiZEzD2QdJWKbRRWnaFedXHAELSN0t0bfsCsMf0ktfBoXBoNA+nZN9+pSlmuzspFevmsqqcMllzzvkyXrzoA+Ryo1ePXpdGOoJvhyru+EBRsmOp7MXZ0vNUMUqHLUoKglg1p73sWeZmPc+KAw0pE2zIsFFE5H4192KwDvDxdxEYoDBDNZjbg2bmADTeUKK57IPD4fTYF4c6EnXx/teYMORBDtIhPJneiZny7Nv/zG+YmekIKCoxr6kauE2bZtBLufetNG0BtBY7f+/ImUypMBvdWu/Q7vTMRzw5aQGZWuc1V0HEsItFYMIBnoKGZ0xcarba/TYZq50kCaflFysYjA4EDKHqGdpYWdKYmm+a7TADmW35yfnOYpZYrkpVEtiqF0EujI00aeplNs2k+qyFZNeE3CDPL9P6b4PQ/kataHkVpLSEVGK7EX6rAa7IVNrvZtFvOA6okKvBgMtFDAGZOx88MeBcJ8AR3AgUUeIznAN6tjCUipGDZONm1FjWJp4A3QIzSaIOmZ7DvF/ysYYbM/fFDOV0jntAjRdapxJxL0eThpEhKOjCDDq2ks+3GrwxqIFKLe1WdOzII8XIOPGnwy6LKXVfpSDOTEfaRsGujhpS4hBIsMOqHbl16PJxc4EkaVu9wpEYlF/84NSv5Zum4drMfp9yXbzzAOJqqS4YkI4cBrFrC7bMPiCfgI3nNZAqkk3QOZqR+yyqx+nDQKBBBZ7QKrfGMCL+XpqFaBJU0wpkBdAhbR4hJsmT5aynlvkouoxm/NjD5oe6BzVIO9uktM+/5dEC5P7vZvarmuO/lKXz4sBabVPIATuKTrwbJP8XUkdM6uEctHKXICUJGjaZIWRbZp8czquQYfY6ynBUCfIU+gG6wqSIBmYIm9pZpXdaL121V7q0VjDjmQnXvMe7ysoEZnZL15B0SpxS1jjd83uNIOKZwu5MPzg2NhOx3xMOPYwEn2CUzbSrwAs5OAtrz3GAaUkJOU74XwjaYUmGJdZBS1NJVkGYrToINLKDjxcuIlyfVsKQSG/G4DyiO2SlQvJ0d0Ot1uOG5IFSAkq+PRVMgVMDvOIJMdqjeCFKUGRWBW9wigYvcbU7CQL/7meF2KZAaWl+4y9uhowAX7elogAvItAAxo2+SFxGRsHGEW9BnhlTuWigYxRcnVUBRQHV41LV+Fr5CJYV7sHfeywswx4XMtUx6EkBhR+q8AXXUA8uPJ73Pb49i9KG9fOljvXeyFj9ixgbo6CcbAJ7WHWqKHy/h+YjBwp6VcN7M89FGzQ04qbrQtgrOFybg3gQRTYG5xn73ArkfQWjCJROwy3J38Dx/D7jOa6BBNsitEw1wGq780EEioOeD+ZGp2J66ADiVGMayiHYucMk8nTK2zzT9CnEraAk95kQjy4k0GRElLL5YAKLQErJ5rp1eay9O4Fb6yJGm9U4FaMwPGxtKD6odIIHKoWnhKo1U8KIpFC+MVn59ZXmc7ZTBZfsg6FQ8W10YfTr4u0nYrpHZbZ1jXiLmooF0cOm0+mPnJBXQtepc7n0BqOipNCqI6yyloTeRShNKH04FIo0gcMk0H/xThyN4pPAWjDDkEp3lNNPRNVfpMI44CWRlRgViP64eK0JSRp0WUvCWYumlW/c58Vcz/yMwVcW5oYb9+26TEhwvbxiNg48hl1VI1UXTU//Eta+BMKnGUivctfL5wINDD0giQL1ipt6U7C9cd4+lgqY2lMUZ02Uv6Prs+ZEZer7ZfWBXVghlfOOrClwsoOFKzWEfz6RZu1eCs+K8fLvkts5+BX0gyrFYve0C3qHrn5U/Oh6D/CihmWIrY7HUZRhJaxde+tldu6adYJ+LeXupQw0XExC36RETdNFxcq9glMu4cNQSX9cqR/GQYp+IxUkIcNGWVU7ZtGa6P3XAyodRt0XeS3Tp01AnCh0ZbUh4VrSZeV9RWfSoWyxnY3hzcZ30G/InDq4wxRrEejreBxnhIQbkxenxkaxl+k7eLUQkUR6vKJ2iDFNGX3WmVA1yaOH+mvhBd+sE6vacQzFobwY5BqEAFmejwW5ne7HtVNolOUgJc8CsUxmc/LBi8N5mu9VsIA5HyErnS6zeCz7VLI9+n/hbT6hTokMXTVyXJRKSG2hd2labXTbtmK4fNH3IZBPreSA4FMeVouVN3zG5x9CiGpLw/3pceo4qGqp+rVp+z+7yQ98oEf+nyH4F3+J9IheDBa94Wi63zJbLBCIZm7P0asHGpIJt3PzE3m0S4YIWyXBCVXGikj8MudDPB/6Nm2v4IxJ5gU0ii0guy5SUHqGUYzTP0jIJU5E82RHUXtX4lDdrihBLdP1YaG1AGUC12rQKuIaGvCpMjZC9bWSCYnjDlvpWbkdXMTNeBHLKiuoozMGIvkczmP0aRJSJ8PYnLCVNhKHXBNckH79e8Z8Kc2wUej4sQZoH8qDRGkg86maW/ZQWGNnLcXmq3FlXM6ssR/3P6E/bHMvm6HLrv1yRixit25JsH3/IOr2UV4BWJhxXW5BJ6Xdr07n9kF3ZNAk6/Xpc5MSFmYJ2R7bdL8Kk7q1OU9Elg/tCxJ8giT27wSTySF0GOxg4PbYJdi/Nyia9Nn89CGDulfJemm1aiEr/eleGSN+5MRrVJ4K6lgyTTIW3i9cQ0dAi6FHt0YMbH3wDSAtGLSAccezzxHitt1QdhW36CQgPcA8vIIBh3/JNjf/Obmc2yzpk8edSlS4lVdwgW5vzbYEyFoF4GCBBby1keVNueHAH+evi+H7oOVfS3XuPQSNTXOONAbzJeSb5stwdQHl1ZjrGoE49I8+A9j3t+ahhQj74FCSWpZrj7wRSFJJnnwi1T9HL5qrCFW/JZq6P62XkMWTb+u4lGpKfmmwiJWx178GOG7KbrZGqyWwmuyKWPkNswkZ1q8uptUlviIi+AXh2bOOTOLsrtNkfqbQJeh24reebkINLkjut5r4d9GR/r8CBa9SU0UQhsnZp5cP+RqWCixRm7i4YRFbtZ4EAkhtNa6jHb6gPYQv7MKqkPLRmX3dFsK8XsRLVZ6IEVrCbmNDc8o5mqsogjAQfoC9Bc7R6gfw03m+lQpv6kTfhxscDIX6s0w+fBxtkhjXAXr10UouWCx3C/p/FYwJRS/AXRKkjOb5CLmK4XRe0+xeDDwVkJPZau52bzLEDHCqV0f44pPgKOkYKgTZJ33fmk3Tu8SdxJ02SHM8Fem5SMsWqRyi2F1ynfRJszcFKykdWlNqgDA/L9lKYBmc7Zu/q9ii1FPF47VJkqhirUob53zoiJtVVRVwMR34gV9iqcBaHbRu9kkvqk3yMpfRFG49pKKjIiq7h/VpRwPGTHoY4cg05X5028iHsLvUW/uz+kjPyIEhhcKUwCkJAwbR9pIEGOn8z6svAO8i89sJ3dL5qDWFYbS+HGPRMxYwJItFQN86YESeJQhn2urGiLRffQeLptDl8dAgb+Tp47UQPxWOw17OeChLN1WnzlkPL1T5O+O3Menpn4C3IY5LEepHpnPeZHbvuWfeVtPlkH4LZjPbBrkJT3NoRJzBt86CO0Xq59oQ+8dsm0ymRcmQyn8w71mhmcuEI5byuF+C88VPYly2sEzjlzAQ3vdn/1+Hzguw6qFNNbqenhZGbdiG6RwZaTG7jTA2X9RdXjDN9yj1uQpyO4Lx8KRAcZcbZMafp4wPOd5MdXoFY52V1A8M9hi3sso93+uprE0qYNMjkE22CvK4HuUxqN7oIz5pWuETq1lQAjqlSlqdD2Rnr/ggp/TVkQYjn9lMfYelk2sH5HPdopYo7MHwlV1or9Bxf+QCyLzm92vzG2wjiIjC/ZHEJzeroJl6bdFPTpZho5MV2U86fLQqxNlGIMqCGy+9WYhJ8ob1r0+Whxde9L2PdysETv97O+xVw+VNN1TZSQN5I6l9m5Ip6pLIqLm4a1B1ffH6gHyqT9p82NOjntRWGIofO3bJz5GhkvSWbsXueTAMaJDou99kGLqDlhwBZNEQ4mKPuDvVwSK4WmLluHyhA97pZiVe8g+JxmnJF8IkV/tCs4Jq/HgOoAEGR9tCDsDbDmi3OviUQpG5D8XmKcSAUaFLRXb2lmJTNYdhtYyfjBYZQmN5qT5CNuaD3BVnlkCk7bsMW3AtXkNMMTuW4HjUERSJnVQ0vsBGa1wo3Qh7115XGeTF3NTz8w0440AgU7c3bSXO/KMINaIWXd0oLpoq/0/QJxCQSJ9XnYy1W7TYLBJpHsVWD1ahsA7FjNvRd6mxCiHsm8g6Z0pnzqIpF1dHUtP2ITU5Z1hZHbu+L3BEEStBbL9XYvGfEakv1bmf+bOZGnoiuHEdlBnaChxYKNzB23b8sw8YyT7Ajxfk49eJIAvdbVkdFCe2J0gMefhQ0bIZxhx3fzMIysQNiN8PgOUKxOMur10LduigREDRMZyP4oGWrP1GFY4t6groASsZ421os48wAdnrbovNhLt7ScNULkwZ5AIZJTrbaKYTLjA1oJ3sIuN/aYocm/9uoQHEIlacF1s/TM1fLcPTL38O9fOsjMEIwoPKfvt7opuI9G2Hf/PR4aCLDQ7wNmIdEuXJ/QNL72k5q4NejAldPfe3UVVqzkys8YZ/jYOGOp6c+YzRCrCuq0M11y7TiN6qk7YXRMn/gukxrEimbMQjr3jwRM6dKVZ4RUfWQr8noPXLJq6yh5R3EH1IVOHESst/LItbG2D2vRsZRkAObzvQAAD3mb3/G4NzopI0FAiHfbpq0X72adg6SRj+8OHMShtFxxLZlf/nLgRLbClwl5WmaYSs+yEjkq48tY7Z2bE0N91mJwt+ua0NlRJIDh0HikF4UvSVorFj2YVu9YeS5tfvlVjPSoNu/Zu6dEUfBOT555hahBdN3Sa5Xuj2Rvau1lQNIaC944y0RWj9UiNDskAK1WoL+EfXcC6IbBXFRyVfX/WKXxPAwUyIAGW8ggZ08hcijKTt1YKnUO6QPvcrmDVAb0FCLIXn5id4fD/Jx4tw/gbXs7WF9b2RgXtPhLBG9vF5FEkdHAKrQHZAJC/HWvk7nvzzDzIXZlfFTJoC3JpGgLPBY7SQTjGlUvG577yNutZ1hTfs9/1nkSXK9zzKLRZ3VODeKUovJe0WCq1zVMYxCJMenmNzPIU2S8TA4E7wWmbNkxq9rI2dd6v0VpcAPVMxnDsvWTWFayyqvKZO7Z08a62i/oH2/jxf8rpmfO64in3FLiL1GX8IGtVE9M23yGsIqJbxDTy+LtaMWDaPqkymb5VrQdzOvqldeU0SUi6IirG8UZ3jcpRbwHa1C0Dww9G/SFX3gPvTJQE+kyz+g1BeMILKKO+olcHzctOWgzxYHnOD7dpCRtuZEXACjgqesZMasoPgnuDC4nUviAAxDc5pngjoAITIkvhKwg5d608pdrZcA+qn5TMT6Uo/QzBaOxBCLTJX3Mgk85rMfsnWx86oLxf7p2PX5ONqieTa/qM3tPw4ZXvlAp83NSD8F7+ZgctK1TpoYwtiU2h02HCGioH5tkVCqNVTMH5p00sRy2JU1qyDBP2CII/Dg4WDsIl+zgeX7589srx6YORRQMBfKbodbB743Tl4WLKOEnwWUVBsm94SOlCracU72MSyj068wdpYjyz1FwC2bjQnxnB6Mp/pZ+yyZXtguEaYB+kqhjQ6UUmwSFazOb+rhYjLaoiM+aN9/8KKn0zaCTFpN9eKwWy7/u4EHzO46TdFSNjMfn2iPSJwDPCFHc0I1+vjdAZw5ZjqR/uzi9Zn20oAa5JnLEk/EA3VRWE7J/XrupfFJPtCUuqHPpnlL7ISJtRpSVcB8qsZCm2QEkWoROtCKKxUh3yEcMbWYJwk6DlEBG0bZP6eg06FL3v6RPb7odGuwm7FN8fG4woqtB8e7M5klPpo97GoObNwt+ludTAmxyC5hmcFx+dIvEZKI6igFKHqLH01iY1o7903VzG9QGetyVx5RNmBYUU+zIuSva/yIcECUi4pRmE3VkF2avqulQEUY4yZ/wmNboBzPmAPey3+dSYtBZUjeWWT0pPwCz4Vozxp9xeClIU60qvEFMQCaPvPaA70WlOP9f/ey39macvpGCVa+zfa8gO44wbxpJUlC8GN/pRMTQtzY8Z8/hiNrU+Zq64ZfFGIkdj7m7abcK1EBtws1X4J/hnqvasPvvDSDYWN+QcQVGMqXalkDtTad5rYY0TIR1Eqox3czwPMjKPvF5sFv17Thujr1IZ1Ytl4VX1J0vjXKmLY4lmXipRAro0qVGEcXxEVMMEl54jQMd4J7RjgomU0j1ptjyxY+cLiSyXPfiEcIS2lWDK3ISAy6UZ3Hb5vnPncA94411jcy75ay6B6DSTzK6UTCZR9uDANtPBrvIDgjsfarMiwoax2OlLxaSoYn4iRgkpEGqEkwox5tyI8aKkLlfZ12lO11TxsqRMY89j5JaO55XfPJPDL1LGSnC88Re9Ai+Nu5bZjtwRrvFITUFHPR4ZmxGslQMecgbZO7nHk32qHxYkdvWpup07ojcMCaVrpFAyFZJJbNvBpZfdf39Hdo2kPtT7v0/f8R/B5Nz4f1t9/3zNM/7n6SUHfcWk5dfQFJvcJMgPolGCpOFb/WC0FGWU2asuQyT+rm88ZKZ78Cei/CAh939CH0JYbpZIPtxc2ufXqjS3pHH9lnWK4iJ7OjR/EESpCo2R3MYKyE7rHfhTvWho4cL1QdN4jFTyR6syMwFm124TVDDRXMNveI1Dp/ntwdz8k8kxw7iFSx6+Yx6O+1LzMVrN0BBzziZi9kneZSzgollBnVwBh6oSOPHXrglrOj+QmR/AESrhDpKrWT+8/AiMDxS/5wwRNuGQPLlJ9ovomhJWn8sMLVItQ8N/7IXvtD8kdOoHaw+vBSbFImQsv/OCAIui99E+YSIOMlMvBXkAt+NAZK8wB9Jf8CPtB+TOUOR+z71d/AFXpPBT6+A5FLjxMjLIEoJzrQfquvxEIi+WoUzGR1IzQFNvbYOnxb2PyQ0kGdyXKzW2axQL8lNAXPk6NEjqrRD1oZtKLlFoofrXw0dCNWASHzy+7PSzOUJ3XtaPZsxLDjr+o41fKuKWNmjiZtfkOzItvlV2MDGSheGF0ma04qE3TUEfqJMrXFm7DpK+27DSvCUVf7rbNoljPhha5W7KBqVq0ShUSTbRmuqPtQreVWH4JET5yMhuqMoSd4r/N8sDmeQiQQvi1tcZv7Moc7dT5X5AtCD6kNEGZOzVcNYlpX4AbTsLgSYYliiPyVoniuYYySxsBy5cgb3pD+EK0Gpb0wJg031dPgaL8JZt6sIvzNPEHfVPOjXmaXj4bd4voXzpZ5GApMhILgMbCEWZ2zwgdeQgjNHLbPIt+KqxRwWPLTN6HwZ0Ouijj4UF+Sg0Au8XuIKW0WxlexdrFrDcZJ8Shauat3X0XmHygqgL1nAu2hrJFb4wZXkcS+i36KMyU1yFvYv23bQUJi/3yQpqr/naUOoiEWOxckyq/gq43dFou1DVDaYMZK9tho7+IXXokBCs5GRfOcBK7g3A+jXQ39K4YA8PBRW4m5+yR0ZAxWJncjRVbITvIAPHYRt1EJ3YLiUbqIvoKHtzHKtUy1ddRUQ0AUO41vonZDUOW+mrszw+SW/6Q/IUgNpcXFjkM7F4CSSQ2ExZg85otsMs7kqsQD4OxYeBNDcSpifjMoLb7GEbGWTwasVObmB/bfPcUlq0wYhXCYEDWRW02TP5bBrYsKTGWjnWDDJ1F7zWai0zW/2XsCuvBQjPFcTYaQX3tSXRSm8hsAoDdjArK/OFp6vcWYOE7lizP0Yc+8p16i7/NiXIiiQTp7c7Xus925VEtlKAjUdFhyaiLT7VxDagprMFwix4wZ05u0qj7cDWFd0W9OYHIu3JbJKMXRJ1aYNovugg+QqRN7fNHSi26VSgBpn+JfMuPo3aeqPWik/wI5Rz3BWarPQX4i5+dM0npwVOsX+KsOhC7vDg+OJsz4Q5zlnIeflUWL6QYMbf9WDfLmosLF4Qev3mJiOuHjoor/dMeBpA9iKDkMjYBNbRo414HCxjsHrB4EXNbHzNMDHCLuNBG6Sf+J4MZ/ElVsDSLxjIiGsTPhw8BPjxbfQtskj+dyNMKOOcUYIRBEIqbazz3lmjlRQhplxq673VklMMY6597vu+d89ec/zq7Mi4gQvh87ehYbpOuZEXj5g/Q7S7BFDAAB9DzG35SC853xtWVcnZQoH54jeOqYLR9NDuwxsVthTV7V99n/B7HSbAytbEyVTz/5NhJ8gGIjG0E5j3griULUd5Rg7tQR+90hJgNQKQH2btbSfPcaTOfIexc1db1BxUOhM1vWCpLaYuKr3FdNTt/T3PWCpEUWDKEtzYrjpzlL/wri3MITKsFvtF8QVV/NhVo97aKIBgdliNc10dWdXVDpVtsNn+2UIolrgqdWA4EY8so0YvB4a+aLzMXiMAuOHQrXY0tr+CL10JbvZzgjJJuB1cRkdT7DUqTvnswVUp5kkUSFVtIIFYK05+tQxT6992HHNWVhWxUsD1PkceIrlXuUVRogwmfdhyrf6zzaL8+c0L7GXMZOteAhAVQVwdJh+7nrX7x4LaIIfz2F2v7Dg/uDfz2Fa+4gFm2zHAor8UqimJG3VTJtZEoFXhnDYXvxMJFc6ku2bhbCxzij2z5UNuK0jmp1mnvkVNUfR+SEmj1Lr94Lym75PO7Fs0MIr3GdsWXRXSfgLTVY0FLqba97u1In8NAcY7IC6TjWLigwKEIm43NxTdaVTv9mcKkzuzBkKd8x/xt1p/9BbP7Wyb4bpo1K1gnOpbLvKz58pWl3B55RJ/Z5mRDLPtNQg14jdOEs9+h/V5UVpwrAI8kGbX8KPVPDIMfIqKDjJD9UyDOPhjZ3vFAyecwyq4akUE9mDOtJEK1hpDyi6Ae87sWAClXGTiwPwN7PXWwjxaR79ArHRIPeYKTunVW24sPr/3HPz2IwH8oKH4OlWEmt4BLM6W5g4kMcYbLwj2usodD1088stZA7VOsUSpEVl4w7NMb1EUHMRxAxLF0CIV+0L3iZb+ekB1vSDSFjAZ3hfLJf7gFaXrOKn+mhR+rWw/eTXIcAgl4HvFuBg1LOmOAwJH3eoVEjjwheKA4icbrQCmvAtpQ0mXG0agYp5mj4Rb6mdQ+RV4QBPbxMqh9C7o8nP0Wko2ocnCHeRGhN1XVyT2b9ACsL+6ylUy+yC3QEnaKRIJK91YtaoSrcWZMMwxuM0E9J68Z+YyjA0g8p1PfHAAIROy6Sa04VXOuT6A351FOWhKfTGsFJ3RTJGWYPoLk5FVK4OaYR9hkJvezwF9vQN1126r6isMGXWTqFW+3HL3I/jurlIdDWIVvYY+s6yq7lrFSPAGRdnU7PVwY/SvWbZGpXzy3BQ2LmAJlrONUsZs4oGkly0V267xbD5KMY8woNNsmWG1VVgLCra8aQBBcI4DP2BlNwxhiCtHlaz6OWFoCW0vMR3ErrG7JyMjTSCnvRcsEHgmPnwA6iNpJ2DrFb4gLlhKJyZGaWkA97H6FFdwEcLT6DRQQL++fOkVC4cYGW1TG/3iK5dShRSuiBulmihqgjR45Vi03o2RbQbP3sxt90VxQ6vzdlGfkXmmKmjOi080JSHkLntjvsBJnv7gKscOaTOkEaRQqAnCA4HWtB4XnMtOhpRmH2FH8tTXrIjAGNWEmudQLCkcVlGTQ965Kh0H6ixXbgImQP6b42B49sO5C8pc7iRlgyvSYvcnH9FgQ3azLbQG2cUW96SDojTQStxkOJyOuDGTHAnnWkz29aEwN9FT8EJ4yhXOg+jLTrCPKeEoJ9a7lDXOjEr8AgX4BmnMQ668oW0zYPyQiVMPxKRHtpfnEEyaKhdzNVThlxxDQNdrHeZiUFb6NoY2KwvSb7BnRcpJy+/g/zAYx3fYSN5QEaVD2Y1VsNWxB0BSO12MRsRY8JLfAezRMz5lURuLUnG1ToKk6Q30FughqWN6gBNcFxP/nY/iv+iaUQOa+2Nuym46wtI/DvSfzSp1jEi4SdYBE7YhTiVV5cX9gwboVDMVgZp5YBQlHOQvaDNfcCoCJuYhf5kz5kwiIKPjzgpcRJHPbOhJajeoeRL53cuMahhV8Z7IRr6M4hW0JzT7mzaMUzQpm866zwM7Cs07fJYXuWvjAMkbe5O6V4bu71sOG6JQ4oL8zIeXHheFVavzxmlIyBkgc9IZlEDplMPr8xlcyss4pVUdwK1e7CK2kTsSdq7g5SHRAl3pYUB9Ko4fsh4qleOyJv1z3KFSTSvwEcRO/Ew8ozEDYZSqpfoVW9uhJfYrNAXR0Z3VmeoAD+rVWtwP/13sE/3ICX3HhDG3CMc476dEEC0K3umSAD4j+ZQLVdFOsWL2C1TH5+4KiSWH+lMibo+B55hR3Gq40G1n25sGcN0mEcoU2wN9FCVyQLBhYOu9aHVLWjEKx2JIUZi5ySoHUAI9b8hGzaLMxCZDMLhv8MkcpTqEwz9KFDpCpqQhVmsGQN8m24wyB82FAKNmjgfKRsXRmsSESovAwXjBIoMKSG51p6Um8b3i7GISs7kjTq/PZoioCfJzfKdJTN0Q45kQEQuh9H88M3yEs3DbtRTKALraM0YC8laiMiOOe6ADmTcCiREeAWZelBaEXRaSuj2lx0xHaRYqF65O0Lo5OCFU18A8cMDE4MLYm9w2QSr9NgQAIcRxZsNpA7UJR0e71JL+VU+ISWFk5I97lra8uGg7GlQYhGd4Gc6rxsLFRiIeGO4abP4S4ekQ1fiqDCy87GZHd52fn5aaDGuvOmIofrzpVwMvtbreZ/855OaXTRcNiNE0wzGZSxbjg26v8ko8L537v/XCCWP2MFaArJpvnkep0pA+O86MWjRAZPQRfznZiSIaTppy6m3p6HrNSsY7fDtz7Cl4V/DJAjQDoyiL2uwf1UHVd2AIrzBUSlJaTj4k6NL97a/GqhWKU9RUmjnYKpm2r+JYUcrkCuZKvcYvrg8pDoUKQywY9GDWg03DUFSirlUXBS5SWn/KAntnf0IdHGL/7mwXqDG+LZYjbEdQmqUqq4y54TNmWUP7IgcAw5816YBzwiNIJiE9M4lPCzeI/FGBeYy3p6IAmH4AjXXmvQ4Iy0Y82NTobcAggT2Cdqz6Mx4TdGoq9fn2etrWKUNFyatAHydQTVUQ2S5OWVUlugcNvoUrlA8cJJz9MqOa/W3iVno4zDHfE7zhoY5f5lRTVZDhrQbR8LS4eRLz8iPMyBL6o4PiLlp89FjdokQLaSBmKHUwWp0na5fE3v9zny2YcDXG/jfI9sctulHRbdkI5a4GOPJx4oAJQzVZ/yYAado8KNZUdEFs9ZPiBsausotXMNebEgr0dyopuqfScFJ3ODNPHgclACPdccwv0YJGQdsN2lhoV4HVGBxcEUeUX/alr4nqpcc1CCR3vR7g40zteQg/JvWmFlUE4mAiTpHlYGrB7w+U2KdSwQz2QJKBe/5eiixWipmfP15AFWrK8Sh1GBBYLgzki1wTMhGQmagXqJ2+FuqJ8f0XzXCVJFHQdMAw8xco11HhM347alrAu+wmX3pDFABOvkC+WPX0Uhg1Z5MVHKNROxaR84YV3s12UcM+70cJ460SzEaKLyh472vOMD3XnaK7zxZcXlWqenEvcjmgGNR2OKbI1s8U+iwiW+HotHalp3e1MGDy6BMVIvajnAzkFHbeVsgjmJUkrP9OAwnEHYXVBqYx3q7LvXjoVR0mY8h+ZaOnh053pdsGkmbqhyryN01eVHySr+CkDYkSMeZ1xjPNVM+gVLTDKu2VGsMUJqWO4TwPDP0VOg2/8ITbAUaMGb4LjL7L+Pi11lEVMXTYIlAZ/QHmTENjyx3kDkBdfcvvQt6tKk6jYFM4EG5UXDTaF5+1ZjRz6W7MdJPC+wTkbDUim4p5QQH3b9kGk2Bkilyeur8Bc20wm5uJSBO95GfYDI1EZipoRaH7uVveneqz43tlTZGRQ4a7CNmMHgXyOQQOL6WQkgMUTQDT8vh21aSdz7ERiZT1jK9F+v6wgFvuEmGngSvIUR2CJkc5tx1QygfZnAruONobB1idCLB1FCfO7N1ZdRocT8/Wye+EnDiO9pzqIpnLDl4bkaRKW+ekBVwHn46Shw1X0tclt/0ROijuUB4kIInrVJU4buWf4YITJtjOJ6iKdr1u+flgQeFH70GxKjhdgt/MrwfB4K/sXczQ+9zYcrD4dhY6qZhZ010rrxggWA8JaZyg2pYij8ieYEg1aZJkZK9O1Re7sB0iouf60rK0Gd+AYlp7soqCBCDGwfKeUQhCBn0E0o0GS6PdmjLi0TtCYZeqazqwN+yNINIA8Lk3iPDnWUiIPLGNcHmZDxfeK0iAdxm/T7LnN+gemRL61hHIc0NCAZaiYJR+OHnLWSe8sLrK905B5eEJHNlWq4RmEXIaFTmo49f8w61+NwfEUyuJAwVqZCLFcyHBKAcIVj3sNzfEOXzVKIndxHw+AR93owhbCxUZf6Gs8cz6/1VdrFEPrv330+9s6BtMVPJ3zl/Uf9rUi0Z/opexfdL3ykF76e999GPfVv8fJv/Y/+/5hEMon1tqNFyVRevV9y9/uIvsG3dbB8GRRrgaEXfhx+2xeOFt+cEn3RZanNxdEe2+B6MHpNbrRE53PlDifPvFcp4kO78ILR0T4xyW/WGPyBsqGdoA7zJJCu1TKbGfhnqgnRbxbB2B3UZoeQ2bz2sTVnUwokTcTU21RxN1PYPS3Sar7T0eRIsyCNowr9amwoMU/od9s2APtiKNL6ENOlyKADstAEWKA+sdKDhrJ6BOhRJmZ+QJbAaZ3/5Fq0/lumCgEzGEbu3yi0Y4I4EgVAjqxh4HbuQn0GrRhOWyAfsglQJAVL1y/6yezS2k8RE2MstJLh92NOB3GCYgFXznF4d25qiP4ZCyI4RYGesut6FXK6GwPpKK8WHEkhYui0AyEmr5Ml3uBFtPFdnioI8RiCooa7Z1G1WuyIi3nSNglutc+xY8BkeW3JJXPK6jd2VIMpaSxpVtFq+R+ySK9J6WG5Qvt+C+QH1hyYUOVK7857nFmyDBYgZ/o+AnibzNVqyYCJQvyDXDTK+iXdkA71bY7TL3bvuLxLBQ8kbTvTEY9aqkQ3+MiLWbEgjLzOH+lXgco1ERgzd80rDCymlpaRQbOYnKG/ODoFl46lzT0cjM5FYVvv0qLUbD5lyJtMUaC1pFlTkNONx6lliaX9o0i/1vws5bNKn5OuENQEKmLlcP4o2ZmJjD4zzd3Fk32uQ4uRWkPSUqb4LBe3EXHdORNB2BWsws5daRnMfNVX7isPSb1hMQdAJi1/qmDMfRUlCU74pmnzjbXfL8PVG8NsW6IQM2Ne23iCPIpryJjYbVnm5hCvKpMa7HLViNiNc+xTfDIaKm3jctViD8A1M9YPJNk003VVr4Zo2MuGW8vil8SLaGpPXqG7I4DLdtl8a4Rbx1Lt4w5Huqaa1XzZBtj208EJVGcmKYEuaeN27zT9EE6a09JerXdEbpaNgNqYJdhP1NdqiPKsbDRUi86XvvNC7rME5mrSQtrzAZVndtSjCMqd8BmaeGR4l4YFULGRBeXIV9Y4yxLFdyoUNpiy2IhePSWzBofYPP0eIa2q5JP4j9G8at/AqoSsLAUuRXtvgsqX/zYwsE+of6oSDbUOo4RMJw+DOUTJq+hnqwKim9Yy/napyZNTc2rCq6V9jHtJbxGPDwlzWj/Sk3zF/BHOlT/fSjSq7FqlPI1q6J+ru8Aku008SFINXZfOfnZNOvGPMtEmn2gLPt+H4QLA+/SYe4j398auzhKIp2Pok3mPC5q1IN1HgR+mnEfc4NeeHYwd2/kpszR3cBn7ni9NbIqhtSWFW8xbUJuUPVOeeXu3j0IGZmFNiwaNZ6rH4/zQ2ODz6tFxRLsUYZu1bfd1uIvfQDt4YD/efKYv8VF8bHGDgK22w2Wqwpi43vNCOXFJZCGMqWiPbL8mil6tsmOTXAWCyMCw73e2rADZj2IK6rqksM3EXF2cbLb4vjB14wa/yXK5vwU+05MzERJ5nXsXsW21o7M+gO0js2OyKciP5uF2iXyb2DiptwQeHeqygkrNsqVCSlldxBMpwHi1vfc8RKpP/4L3Lmpq6DZcvhDDfxTCE3splacTcOtXdK2g303dIWBVe2wD/Gvja1cClFQ67gw0t1ZUttsUgQ1Veky8oOpS6ksYEc4bqseCbZy766SvL3FodmnahlWJRgVCNjPxhL/fk2wyvlKhITH/VQCipOI0dNcRa5B1M5HmOBjTLeZQJy237e2mobwmDyJNHePhdDmiknvLKaDbShL+Is1XTCJuLQd2wmdJL7+mKvs294whXQD+vtd88KKk0DXP8B1Xu9J+xo69VOuFgexgTrcvI6SyltuLix9OPuE6/iRJYoBMEXxU4shQMf4Fjqwf1PtnJ/wWSZd29rhZjRmTGgiGTAUQqRz+nCdjeMfYhsBD5Lv60KILWEvNEHfmsDs2L0A252351eUoYxAysVaCJVLdH9QFWAmqJDCODUcdoo12+gd6bW2boY0pBVHWL6LQDK5bYWh1V8vFvi0cRpfwv7cJiMX3AZNJuTddHehTIdU0YQ/sQ1dLoF2xQPcCuHKiuCWOY30DHe1OwcClLAhqAKyqlnIbH/8u9ScJpcS4kgp6HKDUdiOgRaRGSiUCRBjzI5gSksMZKqy7Sd51aeg0tgJ+x0TH9YH2Mgsap9N7ENZdEB0bey2DMTrBA1hn56SErNHf3tKtqyL9b6yXEP97/rc+jgD2N1LNUH6RM9AzP3kSipr06RkKOolR7HO768jjWiH1X92jA7dkg7gcNcjqsZCgfqWw0tPXdLg20cF6vnQypg7gLtkazrHAodyYfENPQZsdfnjMZiNu4nJO97D1/sQE+3vNFzrSDOKw+keLECYf7RJwVHeP/j79833oZ0egonYB2FlFE5qj02B/LVOMJQlsB8uNg3Leg4qtZwntsOSNidR0abbZmAK4sCzvt8Yiuz2yrNCJoH5O8XvX/vLeR/BBYTWj0sOPYM/jyxRd5+/JziKAABaPcw/34UA3aj/gLZxZgRCWN6m4m3demanNgsx0P237/Q+Ew5VYnJPkyCY0cIVHoFn2Ay/e7U4P19APbPFXEHX94N6KhEMPG7iwB3+I+O1jd5n6VSgHegxgaSawO6iQCYFgDsPSMsNOcUj4q3sF6KzGaH/0u5PQoAj/8zq6Uc9MoNrGqhYeb2jQo0WlGlXjxtanZLS24/OIN5Gx/2g684BPDQpwlqnkFcxpmP/osnOXrFuu4PqifouQH0eF5qCkvITQbJw/Zvy5mAHWC9oU+cTiYhJmSfKsCyt1cGVxisKu+NymEQIAyaCgud/V09qT3nk/9s/SWsYtha7yNpzBIMM40rCSGaJ9u6lEkl00vXBiEt7p9P5IBCiavynEOv7FgLqPdeqxRiCwuFVMolSIUBcoyfUC2e2FJSAUgYdVGFf0b0Kn2EZlK97yyxrT2MVgvtRikfdaAW8RwEEfN+B7/eK8bBdp7URpbqn1xcrC6d2UjdsKbzCjBFqkKkoZt7Mrhg6YagE7spkqj0jOrWM+UGQ0MUlG2evP1uE1p2xSv4dMK0dna6ENcNUF+xkaJ7B764NdxLCpuvhblltVRAf7vK5qPttJ/9RYFUUSGcLdibnz6mf7WkPO3MkUUhR2mAOuGv8IWw5XG1ZvoVMnjSAZe6T7WYA99GENxoHkMiKxHlCuK5Gd0INrISImHQrQmv6F4mqU/TTQ8nHMDzCRivKySQ8dqkpQgnUMnwIkaAuc6/FGq1hw3b2Sba398BhUwUZSAIO8XZvnuLdY2n6hOXws+gq9BHUKcKFA6kz6FDnpxLPICa3qGhnc97bo1FT/XJk48LrkHJ2CAtBv0RtN97N21plfpXHvZ8gMJb7Zc4cfI6MbPwsW7AilCSXMFIEUEmir8XLEklA0ztYbGpTTGqttp5hpFTTIqUyaAIqvMT9A/x+Ji5ejA4Bhxb/cl1pUdOD6epd3yilIdO6j297xInoiBPuEDW2/UfslDyhGkQs7Wy253bVnlT+SWg89zYIK/9KXFl5fe+jow2rd5FXv8zDPrmfMXiUPt9QBO/iK4QGbX5j/7Rx1c1vzsY8ONbP3lVIaPrhL4+1QrECTN3nyKavGG0gBBtHvTKhGoBHgMXHStFowN+HKrPriYu+OZ05Frn8okQrPaaxoKP1ULCS/cmKFN3gcH7HQlVjraCeQmtjg1pSQxeuqXiSKgLpxc/1OiZsU4+n4lz4hpahGyWBURLi4642n1gn9qz9bIsaCeEPJ0uJmenMWp2tJmIwLQ6VSgDYErOeBCfSj9P4G/vI7oIF+l/n5fp956QgxGvur77ynawAu3G9MdFbJbu49NZnWnnFcQHjxRuhUYvg1U/e84N4JTecciDAKb/KYIFXzloyuE1eYXf54MmhjTq7B/yBToDzzpx3tJCTo3HCmVPYfmtBRe3mPYEE/6RlTIxbf4fSOcaKFGk4gbaUWe44hVk9SZzhW80yfW5QWBHxmtUzvMhfVQli4gZTktIOZd9mjJ5hsbmzttaHQB29Am3dZkmx3g/qvYocyhZ2PXAWsNQiIaf+Q8W/MWPIK7/TjvCx5q2XRp4lVWydMc2wIQkhadDB0xsnw/kSEyGjLKjI4coVIwtubTF3E7MJ6LS6UOsJKj82XVAVPJJcepfewbzE91ivXZvOvYfsmMevwtPpfMzGmC7WJlyW2j0jh7AF1JLmwEJSKYwIvu6DHc3YnyLH9ZdIBnQ+nOVDRiP+REpqv++typYHIvoJyICGA40d8bR7HR2k7do6UQTHF4oriYeIQbxKe4Th6+/l1BjUtS9hqORh3MbgvYrStXTfSwaBOmAVQZzpYNqsAmQyjY56MUqty3c/xH6GuhNvNaG9vGbG6cPtBM8UA3e8r51D0AR9kozKuGGSMgLz3nAHxDNnc7GTwpLj7/6HeWp1iksDeTjwCLpxejuMtpMnGJgsiku1sOACwQ9ukzESiDRN77YNESxR5LphOlcASXA5uIts1LnBIcn1J7BLWs49DMALSnuz95gdOrTZr0u1SeYHinno/pE58xYoXbVO/S+FEMMs5qyWkMnp8Q3ClyTlZP52Y9nq7b8fITPuVXUk9ohG5EFHw4gAEcjFxfKb3xuAsEjx2z1wxNbSZMcgS9GKyW3R6KwJONgtA64LTyxWm8Bvudp0M1FdJPEGopM4Fvg7G/hsptkhCfHFegv4ENwxPeXmYhxwZy7js+BeM27t9ODBMynVCLJ7RWcBMteZJtvjOYHb5lOnCLYWNEMKC59BA7covu1cANa2PXL05iGdufOzkgFqqHBOrgQVUmLEc+Mkz4Rq8O6WkNr7atNkH4M8d+SD1t/tSzt3oFql+neVs+AwEI5JaBJaxARtY2Z4mKoUqxds4UpZ0sv3zIbNoo0J4fihldQTX3XNcuNcZmcrB5LTWMdzeRuAtBk3cZHYQF6gTi3PNuDJ0nmR+4LPLoHvxQIxRgJ9iNNXqf2SYJhcvCtJiVWo85TsyFOuq7EyBPJrAdhEgE0cTq16FQXhYPJFqSfiVn0IQnPOy0LbU4BeG94QjdYNB0CiQ3QaxQqD2ebSMiNjaVaw8WaM4Z5WnzcVDsr4eGweSLa2DE3BWViaxhZFIcSTjgxNCAfelg+hznVOYoe5VqTYs1g7WtfTm3e4/WduC6p+qqAM8H4ZyrJCGpewThTDPe6H7CzX/zQ8Tm+r65HeZn+MsmxUciEWPlAVaK/VBaQBWfoG/aRL/jSZIQfep/89GjasWmbaWzeEZ2R1FOjvyJT37O9B8046SRSKVEnXWlBqbkb5XCS3qFeuE9xb9+frEknxWB5h1D/hruz2iVDEAS7+qkEz5Ot5agHJc7WCdY94Ws61sURcX5nG8UELGBAHZ3i+3VulAyT0nKNNz4K2LBHBWJcTBX1wzf+//u/j/9+//v87+9/l9Lbh/L/uyNYiTsWV2LwsjaA6MxTuzFMqmxW8Jw/+IppdX8t/Clgi1rI1SN0UC/r6tX/4lUc2VV1OQReSeCsjUpKZchw4XUcjHfw6ryCV3R8s6VXm67vp4n+lcPV9gJwmbKQEsmrJi9c2vkwrm8HFbVYNTaRGq8D91t9n5+U+aD/hNtN3HjC/nC/vUoGFSCkXP+NlRcmLUqLbiUBl4LYf1U/CCvwtd3ryCH8gUmGITAxiH1O5rnGTz7y1LuFjmnFGQ1UWuM7HwfXtWl2fPFKklYwNUpF2IL/TmaRETjQiM5SJacI+3Gv5MBU8lP5Io6gWkawpyzNEVGqOdx4YlO1dCvjbWFZWbCmeiFKPSlMKtKcMFLs/KQxtgAHi7NZNCQ32bBAW2mbHflVZ8wXKi1JKVHkW20bnYnl3dKWJeWJOiX3oKPBD6Zbi0ZvSIuWktUHB8qDR8DMMh1ZfkBL9FS9x5r0hBGLJ8pUCJv3NYH+Ae8p40mZWd5m5fhobFjQeQvqTT4VKWIYfRL0tfaXKiVl75hHReuTJEcqVlug+eOIIc4bdIydtn2K0iNZPsYWQvQio2qbO3OqAlPHDDOB7DfjGEfVF51FqqNacd6QmgFKJpMfLp5DHTv4wXlONKVXF9zTJpDV4m1sYZqJPhotcsliZM8yksKkCkzpiXt+EcRQvSQqmBS9WdWkxMTJXPSw94jqI3varCjQxTazjlMH8jTS8ilaW8014/vwA/LNa+YiFoyyx3s/KswP3O8QW1jtq45yTM/DX9a8M4voTVaO2ebvw1EooDw/yg6Y1faY+WwrdVs5Yt0hQ5EwRfYXSFxray1YvSM+kYmlpLG2/9mm1MfmbKHXr44Ih8nVKb1M537ZANUkCtdsPZ80JVKVKabVHCadaLXg+IV8i5GSwpZti0h6diTaKs9sdpUKEpd7jDUpYmHtiX33SKiO3tuydkaxA7pEc9XIQEOfWJlszj5YpL5bKeQyT7aZSBOamvSHl8xsWvgo26IP/bqk+0EJUz+gkkcvlUlyPp2kdKFtt7y5aCdks9ZJJcFp5ZWeaWKgtnXMN3ORwGLBE0PtkEIek5FY2aVssUZHtsWIvnljMVJtuVIjpZup/5VL1yPOHWWHkOMc6YySWMckczD5jUj2mlLVquFaMU8leGVaqeXis+aRRL8zm4WuBk6cyWfGMxgtr8useQEx7k/PvRoZyd9nde1GUCV84gMX8Ogu/BWezYPSR27llzQnA97oo0pYyxobYUJfsj+ysTm9zJ+S4pk0TGo9VTG0KjqYhTmALfoDZVKla2b5yhv241PxFaLJs3i05K0AAIdcGxCJZmT3ZdT7CliR7q+kur7WdQjygYtOWRL9B8E4s4LI8KpAj7bE0dg7DLOaX+MGeAi0hMMSSWZEz+RudXbZCsGYS0QqiXjH9XQbd8sCB+nIVTq7/T/FDS+zWY9q7Z2fdq1tdLb6v3hKKVDAw5gjj6o9r1wHFROdHc18MJp4SJ2Ucvu+iQ9EgkekW8VCM+psM6y+/2SBy8tNN4a3L1MzP+OLsyvESo5gS7IQOnIqMmviJBVc6zbVG1n8eXiA3j46kmvvtJlewwNDrxk4SbJOtP/TV/lIVK9ueShNbbMHfwnLTLLhbZuO79ec5XvfgRwLFK+w1r5ZWW15rVFZrE+wKqNRv5KqsLNfpGgnoUU6Y71NxEmN7MyqwqAQqoIULOw/LbuUB2+uE75gJt+kq1qY4LoxV+qR/zalupea3D5+WMeaRIn0sAI6DDWDh158fqUb4YhAxhREbUN0qyyJYkBU4V2KARXDT65gW3gRsiv7xSPYEKLwzgriWcWgPr0sbZnv7m1XHNFW6xPdGNZUdxFiUYlmXNjDVWuu7LCkX/nVkrXaJhiYktBISC2xgBXQnNEP+cptWl1eG62a7CPXrnrkTQ5BQASbEqUZWMDiZUisKyHDeLFOaJILUo5f6iDt4ZO8MlqaKLto0AmTHVVbkGuyPa1R/ywZsWRoRDoRdNMMHwYTsklMVnlAd2S0282bgMI8fiJpDh69OSL6K3qbo20KfpNMurnYGQSr/stFqZ7hYsxKlLnKAKhsmB8AIpEQ4bd/NrTLTXefsE6ChRmKWjXKVgpGoPs8GAicgKVw4K0qgDgy1A6hFq1WRat3fHF+FkU+b6H4NWpOU3KXTxrIb2qSHAb+qhm8hiSROi/9ofapjxhyKxxntPpge6KL5Z4+WBMYkAcE6+0Hd3Yh2zBsK2MV3iW0Y6cvOCroXlRb2MMJtdWx+3dkFzGh2Pe3DZ9QpSqpaR/rE1ImOrHqYYyccpiLC22amJIjRWVAherTfpQLmo6/K2pna85GrDuQPlH1Tsar8isAJbXLafSwOof4gg9RkAGm/oYpBQQiPUoyDk2BCQ1k+KILq48ErFo4WSRhHLq/y7mgw3+L85PpP6xWr6cgp9sOjYjKagOrxF148uhuaWtjet953fh1IQiEzgC+d2IgBCcUZqgTAICm2bR8oCjDLBsmg+ThyhfD+zBalsKBY1Ce54Y/t9cwfbLu9SFwEgphfopNA3yNxgyDafUM3mYTovZNgPGdd4ZFFOj1vtfFW3u7N+iHEN1HkeesDMXKPyoCDCGVMo4GCCD6PBhQ3dRZIHy0Y/3MaE5zU9mTCrwwnZojtE+qNpMSkJSpmGe0EzLyFelMJqhfFQ7a50uXxZ8pCc2wxtAKWgHoeamR2O7R+bq7IbPYItO0esdRgoTaY38hZLJ5y02oIVwoPokGIzxAMDuanQ1vn2WDQ00Rh6o5QOaCRu99fwDbQcN0XAuqkFpxT/cfz3slGRVokrNU0iqiMAJFEbKScZdmSkTUznC0U+MfwFOGdLgsewRyPKwBZYSmy6U325iUhBQNxbAC3FLKDV9VSOuQpOOukJ/GAmu/tyEbX9DgEp6dv1zoU0IqzpG6gssSjIYRVPGgU1QAQYRgIT8gEV0EXr1sqeh2I6rXjtmoCYyEDCe/PkFEi/Q48FuT29p557iN+LCwk5CK/CZ2WdAdfQZh2Z9QGrzPLSNRj5igUWzl9Vi0rCqH8G1Kp4QMLkuwMCAypdviDXyOIk0AHTM8HBYKh3b0/F+DxoNj4ZdoZfCpQVdnZarqoMaHWnMLNVcyevytGsrXQEoIbubqWYNo7NRHzdc0zvT21fWVirj7g36iy6pxogfvgHp1xH1Turbz8QyyHnXeBJicpYUctbzApwzZ1HT+FPEXMAgUZetgeGMwt4G+DHiDT2Lu+PT21fjJCAfV16a/Wu1PqOkUHSTKYhWW6PhhHUlNtWzFnA7MbY+r64vkwdpfNB2JfWgWXAvkzd42K4lN9x7Wrg4kIKgXCb4mcW595MCPJ/cTfPAMQMFWwnqwde4w8HZYJFpQwcSMhjVz4B8p6ncSCN1X4klxoIH4BN2J6taBMj6lHkAOs8JJAmXq5xsQtrPIPIIp/HG6i21xMGcFgqDXSRF0xQg14d2uy6HgKE13LSvQe52oShF5Jx1R6avyL4thhXQZHfC94oZzuPUBKFYf1VvDaxIrtV6dNGSx7DO0i1p6CzBkuAmEqyWceQY7F9+U0ObYDzoa1iKao/cOD/v6Q9gHrrr1uCeOk8fST9MG23Ul0KmM3r+Wn6Hi6WAcL7gEeaykicvgjzkjSwFsAXIR81Zx4QJ6oosVyJkCcT+4xAldCcihqvTf94HHUPXYp3REIaR4dhpQF6+FK1H0i9i7Pvh8owu3lO4PT1iuqu+DkL2Bj9+kdfGAg2TXw03iNHyobxofLE2ibjsYDPgeEQlRMR7afXbSGQcnPjI2D+sdtmuQ771dbASUsDndU7t58jrrNGRzISvwioAlHs5FA+cBE5Ccznkd8NMV6BR6ksnKLPZnMUawRDU1MZ/ib3xCdkTblHKu4blNiylH5n213yM0zubEie0o4JhzcfAy3H5qh2l17uLooBNLaO+gzonTH2uF8PQu9EyH+pjGsACTMy4cHzsPdymUSXYJOMP3yTkXqvO/lpvt0cX5ekDEu9PUfBeZODkFuAjXCaGdi6ew4qxJ8PmFfwmPpkgQjQlWqomFY6UkjmcnAtJG75EVR+NpzGpP1Ef5qUUbfowrC3zcSLX3BxgWEgEx/v9cP8H8u1Mvt9/rMDYf6sjwU1xSOPBgzFEeJLMRVFtKo5QHsUYT8ZRLCah27599EuqoC9PYjYO6aoAMHB8X1OHwEAYouHfHB3nyb2B+SnZxM/vw/bCtORjLMSy5aZoEpvgdGvlJfNPFUu/p7Z4VVK1hiI0/UTuB3ZPq4ohEbm7Mntgc1evEtknaosgZSwnDC2BdMmibpeg48X8Ixl+/8+xXdbshQXUPPvx8jT3fkELivHSmqbhblfNFShWAyQnJ3WBU6SMYSIpTDmHjdLVAdlADdz9gCplZw6mTiHqDwIsxbm9ErGusiVpg2w8Q3khKV/R9Oj8PFeF43hmW/nSd99nZzhyjCX3QOZkkB6BsH4H866WGyv9E0hVAzPYah2tkRfQZMmP2rinfOeQalge0ovhduBjJs9a1GBwReerceify49ctOh5/65ATYuMsAkVltmvTLBk4oHpdl6i+p8DoNj4Fb2vhdFYer2JSEilEwPd5n5zNoGBXEjreg/wh2NFnNRaIUHSOXa4eJRwygZoX6vnWnqVdCRT1ARxeFrNBJ+tsdooMwqnYhE7zIxnD8pZH+P0Nu1wWxCPTADfNWmqx626IBJJq6NeapcGeOmbtXvl0TeWG0Y7OGGV4+EHTtNBIT5Wd0Bujl7inXgZgfXTM5efD3qDTJ54O9v3Bkv+tdIRlq1kXcVD0BEMirmFxglNPt5pedb1AnxuCYMChUykwsTIWqT23XDpvTiKEru1cTcEMeniB+HQDehxPXNmkotFdwUPnilB/u4Nx5Xc6l8J9jH1EgKZUUt8t8cyoZleDBEt8oibDmJRAoMKJ5Oe9CSWS5ZMEJvacsGVdXDWjp/Ype5x0p9PXB2PAwt2LRD3d+ftNgpuyvxlP8pB84oB1i73vAVpwyrmXW72hfW6Dzn9Jkj4++0VQ4d0KSx1AsDA4OtXXDo63/w+GD+zC7w5SJaxsmnlYRQ4dgdjA7tTl2KNLnpJ+mvkoDxtt1a4oPaX3EVqj96o9sRKBQqU7ZOiupeAIyLMD+Y3YwHx30XWHB5CQiw7q3mj1EDlP2eBsZbz79ayUMbyHQ7s8gu4Lgip1LiGJj7NQj905/+rgUYKAA5qdrlHKIknWmqfuR+PB8RdBkDg/NgnlT89G72h2NvySnj7UyBwD+mi/IWs1xWbxuVwUIVXun5cMqBtFbrccI+DILjsVQg6eeq0itiRfedn89CvyFtpkxaauEvSANuZmB1p8FGPbU94J9medwsZ9HkUYjmI7OH5HuxendLbxTaYrPuIfE2ffXFKhoNBUp33HsFAXmCV/Vxpq5AYgFoRr5Ay93ZLRlgaIPjhZjXZZChT+aE5iWAXMX0oSFQEtwjiuhQQItTQX5IYrKfKB+queTNplR1Hoflo5/I6aPPmACwQCE2jTOYo5Dz1cs7Sod0KTG/3kEDGk3kUaUCON19xSJCab3kNpWZhSWkO8l+SpW70Wn3g0ciOIJO5JXma6dbos6jyisuxXwUUhj2+1uGhcvuliKtWwsUTw4gi1c/diEEpZHoKoxTBeMDmhPhKTx7TXWRakV8imJR355DcIHkR9IREHxohP4TbyR5LtFU24umRPRmEYHbpe1LghyxPx7YgUHjNbbQFRQhh4KeU1EabXx8FS3JAxp2rwRDoeWkJgWRUSKw6gGP5U2PuO9V4ZuiKXGGzFQuRuf+tkSSsbBtRJKhCi3ENuLlXhPbjTKD4djXVnfXFds6Zb+1XiUrRfyayGxJq1+SYBEfbKlgjiSmk0orgTqzSS+DZ5rTqsJbttiNtp+KMqGE2AHGFw6jQqM5vD6vMptmXV9OAjq49Uf/Lx9Opam+Hn5O9p8qoBBAQixzQZ4eNVkO9sPzJAMyR1y4/RCQQ1s0pV5KAU5sKLw3tkcFbI/JqrjCsK4Mw+W8aod4lioYuawUiCyVWBE/qPaFi5bnkgpfu/ae47174rI1fqQoTbW0HrU6FAejq7ByM0V4zkZTg02/YJK2N7hUQRCeZ4BIgSEqgD8XsjzG6LIsSbuHoIdz/LhFzbNn1clci1NHWJ0/6/O8HJMdIpEZbqi1RrrFfoo/rI/7ufm2MPG5lUI0IYJ4MAiHRTSOFJ2oTverFHYXThkYFIoyFx6rMYFgaOKM4xNWdlOnIcKb/suptptgTOTdVIf4YgdaAjJnIAm4qNNHNQqqAzvi53GkyRCEoseUBrHohZsjUbkR8gfKtc/+Oa72lwxJ8Mq6HDfDATbfbJhzeIuFQJSiw1uZprHlzUf90WgqG76zO0eCB1WdPv1IT6sNxxh91GEL2YpgC97ikFHyoaH92ndwduqZ6IYjkg20DX33MWdoZk7QkcKUCgisIYslOaaLyvIIqRKWQj16jE1DlQWJJaPopWTJjXfixEjRJJo8g4++wuQjbq+WVYjsqCuNIQW3YjnxKe2M5ZKEqq+cX7ZVgnkbsU3RWIyXA1rxv4kGersYJjD//auldXGmcEbcfTeF16Y1708FB1HIfmWv6dSFi6oD4E+RIjCsEZ+kY7dKnwReJJw3xCjKvi3kGN42rvyhUlIz0Bp+fNSV5xwFiuBzG296e5s/oHoFtUyUplmPulIPl+e1CQIQVtjlzLzzzbV+D/OVQtYzo5ixtMi5BmHuG4N/uKfJk5UIREp7+12oZlKtPBomXSzAY0KgtbPzzZoHQxujnREUgBU+O/jKKhgxVhRPtbqyHiUaRwRpHv7pgRPyUrnE7fYkVblGmfTY28tFCvlILC04Tz3ivkNWVazA+OsYrxvRM/hiNn8Fc4bQBeUZABGx5S/xFf9Lbbmk298X7iFg2yeimvsQqqJ+hYbt6uq+Zf9jC+Jcwiccd61NKQtFvGWrgJiHB5lwi6fR8KzYS7EaEHf/ka9EC7H8D+WEa3TEACHBkNSj/cXxFeq4RllC+fUFm2xtstYLL2nos1DfzsC9vqDDdRVcPA3Ho95aEQHvExVThXPqym65llkKlfRXbPTRiDepdylHjmV9YTWAEjlD9DdQnCem7Aj/ml58On366392214B5zrmQz/9ySG2mFqEwjq5sFl5tYJPw5hNz8lyZPUTsr5E0F2C9VMPnZckWP7+mbwp/BiN7f4kf7vtGnZF2JGvjK/sDX1RtcFY5oPQnE4lIAYV49U3C9SP0LCY/9i/WIFK9ORjzM9kG/KGrAuwFmgdEpdLaiqQNpCTGZVuAO65afkY1h33hrqyLjZy92JK3/twdj9pafFcwfXONmPQWldPlMe7jlP24Js0v9m8bIJ9TgS2IuRvE9ZVRaCwSJYOtAfL5H/YS4FfzKWKbek+GFulheyKtDNlBtrdmr+KU+ibHTdalzFUmMfxw3f36x+3cQbJLItSilW9cuvZEMjKw987jykZRlsH/UI+HlKfo2tLwemBEeBFtmxF2xmItA/dAIfQ+rXnm88dqvXa+GapOYVt/2waFimXFx3TC2MUiOi5/Ml+3rj/YU6Ihx2hXgiDXFsUeQkRAD6wF3SCPi2flk7XwKAA4zboqynuELD312EJ88lmDEVOMa1W/K/a8tGylZRMrMoILyoMQzzbDJHNZrhH77L9qSC42HVmKiZ5S0016UTp83gOhCwz9XItK9fgXfK3F5d7nZCBUekoLxrutQaPHa16Rjsa0gTrzyjqTnmcIcrxg6X6dkKiucudc0DD5W4pJPf0vuDW8r5/uw24YfMuxFRpD2ovT2mFX79xH6Jf+MVdv2TYqR6/955QgVPe3JCD/WjAYcLA9tpXgFiEjge2J5ljeI/iUzg91KQuHkII4mmHZxC3XQORLAC6G7uFn5LOmlnXkjFdoO976moNTxElS8HdxWoPAkjjocDR136m2l+f5t6xaaNgdodOvTu0rievnhNAB79WNrVs6EsPgkgfahF9gSFzzAd+rJSraw5Mllit7vUP5YxA843lUpu6/5jAR0RvH4rRXkSg3nE+O5GFyfe+L0s5r3k05FyghSFnKo4TTgs07qj4nTLqOYj6qaW9knJTDkF5OFMYbmCP+8H16Ty482OjvERV6OFyw043L9w3hoJi408sR+SGo1WviXUu8d7qS+ehKjpKwxeCthsm2LBFSFeetx0x4AaKPxtp3CxdWqCsLrB1s/j5TAhc1jNZsXWl6tjo/WDoewxzg8T8NnhZ1niUwL/nhfygLanCnRwaFGDyLw+sfZhyZ1UtYTp8TYB6dE7R3VsKKH95CUxJ8u8N+9u2/9HUNKHW3x3w5GQrfOPafk2w5qZq8MaHT0ebeY3wIsp3rN9lrpIsW9c1ws3VNV+JwNz0Lo9+V7zZr6GD56We6gWVIvtmam5GPPkVAbr74r6SwhuL+TRXtW/0pgyX16VNl4/EAD50TnUPuwrW6OcUO2VlWXS0inq872kk7GUlW6o/ozFKq+Sip6LcTtSDfDrPTcCHhx75H8BeRon+KG2wRwzfDgWhALmiWOMO6h3pm1UCZEPEjScyk7tdLx6WrdA2N1QTPENvNnhCQjW6kl057/qv7IwRryHrZBCwVSbLLnFRiHdTwk8mlYixFt1slEcPD7FVht13HyqVeyD55HOXrh2ElAxJyinGeoFzwKA91zfrdLvDxJSjzmImfvTisreI25EDcVfGsmxLVbfU8PGe/7NmWWKjXcdTJ11jAlVIY/Bv/mcxg/Q10vCHwKG1GW/XbJq5nxDhyLqiorn7Wd7VEVL8UgVzpHMjQ+Z8DUgSukiVwWAKkeTlVVeZ7t1DGnCgJVIdBPZAEK5f8CDyDNo7tK4/5DBjdD5MPV86TaEhGsLVFPQSI68KlBYy84FievdU9gWh6XZrugvtCZmi9vfd6db6V7FmoEcRHnG36VZH8N4aZaldq9zZawt1uBFgxYYx+Gs/qW1jwANeFy+LCoymyM6zgG7j8bGzUyLhvrbJkTYAEdICEb4kMKusKT9V3eIwMLsjdUdgijMc+7iKrr+TxrVWG0U+W95SGrxnxGrE4eaJFfgvAjUM4SAy8UaRwE9j6ZQH5qYAWGtXByvDiLSDfOD0yFA3UCMKSyQ30fyy1mIRg4ZcgZHLNHWl+c9SeijOvbOJxoQy7lTN2r3Y8p6ovxvUY74aOYbuVezryqXA6U+fcp6wSV9X5/OZKP18tB56Ua0gMyxJI7XyNT7IrqN8GsB9rL/kP5KMrjXxgqKLDa+V5OCH6a5hmOWemMUsea9vQl9t5Oce76PrTyTv50ExOqngE3PHPfSL//AItPdB7kGnyTRhVUUFNdJJ2z7RtktZwgmQzhBG/G7QsjZmJfCE7k75EmdIKH7xlnmDrNM/XbTT6FzldcH/rcRGxlPrv4qDScqE7JSmQABJWqRT/TUcJSwoQM+1jvDigvrjjH8oeK2in1S+/yO1j8xAws/T5u0VnIvAPqaE1atNuN0cuRliLcH2j0nTL4JpcR7w9Qya0JoaHgsOiALLCCzRkl1UUESz+ze/gIXHGtDwgYrK6pCFKJ1webSDog4zTlPkgXZqxlQDiYMjhDpwTtBW2WxthWbov9dt2X9XFLFmcF+eEc1UaQ74gqZiZsdj63pH1qcv3Vy8JYciogIVKsJ8Yy3J9w/GhjWVSQAmrS0BPOWK+RKV+0lWqXgYMnIFwpcZVD7zPSp547i9HlflB8gVnSTGmmq1ClO081OW/UH11pEQMfkEdDFzjLC1Cdo/BdL3s7cXb8J++Hzz1rhOUVZFIPehRiZ8VYu6+7Er7j5PSZu9g/GBdmNzJmyCD9wiswj9BZw+T3iBrg81re36ihMLjoVLoWc+62a1U/7qVX5CpvTVF7rocSAKwv4cBVqZm7lLDS/qoXs4fMs/VQi6BtVbNA3uSzKpQfjH1o3x4LrvkOn40zhm6hjduDglzJUwA0POabgdXIndp9fzhOo23Pe+Rk9GSLX0d71Poqry8NQDTzNlsa+JTNG9+UrEf+ngxCjGEsDCc0bz+udVRyHQI1jmEO3S+IOQycEq7XwB6z3wfMfa73m8PVRp+iOgtZfeSBl01xn03vMaQJkyj7vnhGCklsCWVRUl4y+5oNUzQ63B2dbjDF3vikd/3RUMifPYnX5Glfuk2FsV/7RqjI9yKTbE8wJY+74p7qXO8+dIYgjtLD/N8TJtRh04N9tXJA4H59IkMmLElgvr0Q5OCeVfdAt+5hkh4pQgfRMHpL74XatLQpPiOyHRs/OdmHtBf8nOZcxVKzdGclIN16lE7kJ+pVMjspOI+5+TqLRO6m0ZpNXJoZRv9MPDRcAfJUtNZHyig/s2wwReakFgPPJwCQmu1I30/tcBbji+Na53i1W1N+BqoY7Zxo+U/M9XyJ4Ok2SSkBtoOrwuhAY3a03Eu6l8wFdIG1cN+e8hopTkiKF093KuH/BcB39rMiGDLn6XVhGKEaaT/vqb/lufuAdpGExevF1+J9itkFhCfymWr9vGb3BTK4j598zRH7+e+MU9maruZqb0pkGxRDRE1CD4Z8LV4vhgPidk5w2Bq816g3nHw1//j3JStz7NR9HIWELO8TMn3QrP/zZp//+Dv9p429/ogv+GATR+n/UdF+ns9xNkXZQJXY4t9jMkJNUFygAtzndXwjss+yWH9HAnLQQfhAskdZS2l01HLWv7L7us5uTH409pqitvfSOQg/c+Zt7k879P3K9+WV68n7+3cZfuRd/dDPP/03rn+d+/nBvWfgDlt8+LzjqJ/vx3CnNOwiXhho778C96iD+1TBvRZYeP+EH81LE0vVwOOrmCLB3iKzI1x+vJEsrPH4uF0UB4TJ4X3uDfOCo3PYpYe0MF4bouh0DQ/l43fxUF7Y+dpWuvTSffB0yO2UQUETI/LwCZE3BvnevJ7c9zUlY3H58xzke6DNFDQG8n0WtDN4LAYN4nogKav1ezOfK/z+t6tsCTp+dhx4ymjWuCJk1dEUifDP+HyS4iP/Vg9B2jTo9L4NbiBuDS4nuuHW6H+JDQn2JtqRKGkEQPEYE7uzazXIkcxIAqUq1esasZBETlEZY7y7Jo+RoV/IsjY9eIMkUvr42Hc0xqtsavZvhz1OLwSxMOTuqzlhb0WbdOwBH9EYiyBjatz40bUxTHbiWxqJ0uma19qhPruvcWJlbiSSH48OLDDpaHPszvyct41ZfTu10+vjox6kOqK6v0K/gEPphEvMl/vwSv+A4Hhm36JSP9IXTyCZDm4kKsqD5ay8b1Sad/vaiyO5N/sDfEV6Z4q95E+yfjxpqBoBETW2C7xl4pIO2bDODDFurUPwE7EWC2Uplq+AHmBHvir2PSgkR12/Ry65O0aZtQPeXi9mTlF/Wj5GQ+vFkYyhXsLTjrBSP9hwk4GPqDP5rBn5/l8b0mLRAvRSzXHc293bs3s8EsdE3m2exxidWVB4joHR+S+dz5/W+v00K3TqN14CDBth8eWcsTbiwXPsygHdGid0PEdy6HHm2v/IUuV5RVapYmzGsX90mpnIdNGcOOq64Dbc5GUbYpD9M7S+6cLY//QmjxFLP5cuTFRm3vA5rkFZroFnO3bjHF35uU3s8mvL7Tp9nyTc4mymTJ5sLIp7umSnGkO23faehtz3mmTS7fbVx5rP7x3HXIjRNeq/A3xCs9JNB08c9S9BF2O3bOur0ItslFxXgRPdaapBIi4dRpKGxVz7ir69t/bc9qTxjvtOyGOfiLGDhR4fYywHv1WdOplxIV87TpLBy3Wc0QP0P9s4G7FBNOdITS/tep3o3h1TEa5XDDii7fWtqRzUEReP2fbxz7bHWWJdbIOxOUJZtItNZpTFRfj6vm9sYjRxQVO+WTdiOhdPeTJ+8YirPvoeL88l5iLYOHd3b/Imkq+1ZN1El3UikhftuteEYxf1Wujof8Pr4ICTu5ezZyZ4tHQMxlzUHLYO2VMOoNMGL/20S5i2o2obfk+8qqdR7xzbRDbgU0lnuIgz4LelQ5XS7xbLuSQtNS95v3ZUOdaUx/Qd8qxCt6xf2E62yb/HukLO6RyorV8KgYl5YNc75y+KvefrxY+lc/64y9kvWP0a0bDz/rojq+RWjO06WeruWqNFU7r3HPIcLWRql8ICZsz2Ls/qOm/CLn6++X+Qf7mGspYCrZod/lpl6Rw4xN/yuq8gqV4B6aHk1hVE1SfILxWu5gvXqbfARYQpspcxKp1F/c8XOPzkZvmoSw+vEqBLdrq1fr3wAPv5NnM9i8F+jdAuxkP5Z71c6uhK3enlnGymr7UsWZKC12qgUiG8XXGQ9mxnqz4GSIlybF9eXmbqj2sHX+a1jf0gRoONHRdRSrIq03Ty89eQ1GbV/Bk+du4+V15zls+vvERvZ4E7ZbnxWTVjDjb4o/k8jlw44pTIrUGxxuJvBeO+heuhOjpFsO6lVJ/aXnJDa/bM0Ql1cLbXE/Pbv3EZ3vj3iVrB5irjupZTzlnv677NrI9UNYNqbPgp/HZXS+lJmk87wec+7YOxTDo2aw2l3NfDr34VNlvqWJBknuK7oSlZ6/T10zuOoPZOeoIk81N+sL843WJ2Q4Z0fZ3scsqC/JV2fuhWi1jGURSKZV637lf53Xnnx16/vKEXY89aVJ0fv91jGdfG+G4+sniwHes4hS+udOr4RfhFhG/F5gUG35QaU+McuLmclb5ZWmR+sG5V6nf+PxYzlrnFGxpZaK8eqqVo0NfmAWoGfXDiT/FnUbWvzGDOTr8aktOZWg4BYvz5YH12ZbfCcGtNk+dDAZNGWvHov+PIOnY9Prjg8h/wLRrT69suaMVZ5bNuK00lSVpnqSX1NON/81FoP92rYndionwgOiA8WMf4vc8l15KqEEG4yAm2+WAN5Brfu1sq9suWYqgoajgOYt/JCk1gC8wPkK+XKCtRX6TAtgvrnuBgNRmn6I8lVDipOVB9kX6Oxkp4ZKyd1M6Gj8/v2U7k+YQBL95Kb9PQENucJb0JlW3b5tObN7m/Z1j1ev388d7o15zgXsI9CikAGAViR6lkJv7nb4Ak40M2G8TJ447kN+pvfHiOFjSUSP6PM+QfbAywKJCBaxSVxpizHseZUyUBhq59vFwrkyGoRiHbo0apweEZeSLuNiQ+HAekOnarFg00dZNXaPeoHPTRR0FmEyqYExOVaaaO8c0uFUh7U4e/UxdBmthlBDgg257Q33j1hA7HTxSeTTSuVnPZbgW1nodwmG16aKBDKxEetv7D9OjO0JhrbJTnoe+kcGoDJazFSO8/fUN9Jy/g4XK5PUkw2dgPDGpJqBfhe7GA+cjzfE/EGsMM+FV9nj9IAhrSfT/J3QE5TEIYyk5UjsI6ZZcCPr6A8FZUF4g9nnpVmjX90MLSQysIPD0nFzqwCcSJmIb5mYv2Cmk+C1MDFkZQyCBq4c/Yai9LJ6xYkGS/x2s5/frIW2vmG2Wrv0APpCdgCA9snFvfpe8uc0OwdRs4G9973PGEBnQB5qKrCQ6m6X/H7NInZ7y/1674/ZXOVp7OeuCRk8JFS516VHrnH1HkIUIlTIljjHaQtEtkJtosYul77cVwjk3gW1Ajaa6zWeyHGLlpk3VHE2VFzT2yI/EvlGUSz2H9zYE1s4nsKMtMqNyKNtL/59CpFJki5Fou6VXGm8vWATEPwrUVOLvoA8jLuwOzVBCgHB2Cr5V6OwEWtJEKokJkfc87h+sNHTvMb0KVTp5284QTPupoWvQVUwUeogZR3kBMESYo0mfukewRVPKh5+rzLQb7HKjFFIgWhj1w3yN/qCNoPI8XFiUgBNT1hCHBsAz8L7Oyt8wQWUFj92ONn/APyJFg8hzueqoJdNj57ROrFbffuS/XxrSXLTRgj5uxZjpgQYceeMc2wJrahReSKpm3QjHfqExTLAB2ipVumE8pqcZv8LYXQiPHHsgb5BMW8zM5pvQit+mQx8XGaVDcfVbLyMTlY8xcfmm/RSAT/H09UQol5gIz7rESDmnrQ4bURIB4iRXMDQwxgex1GgtDxKp2HayIkR+E/aDmCttNm2C6lytWdfOVzD6X2SpDWjQDlMRvAp1symWv4my1bPCD+E1EmGnMGWhNwmycJnDV2WrQNxO45ukEb08AAffizYKVULp15I4vbNK5DzWwCSUADfmKhfGSUqii1L2UsE8rB7mLuHuUJZOx4+WiizHBJ/hwboaBzhpNOVvgFTf5cJsHef7L1HCI9dOUUbb+YxUJWn6dYOLz+THi91kzY5dtO5c+grX7v0jEbsuoOGnoIreDIg/sFMyG+TyCLIcAWd1IZ1UNFxE8Uie13ucm40U2fcxC0u3WLvLOxwu+F7MWUsHsdtFQZ7W+nlfCASiAKyh8rnP3EyDByvtJb6Kax6/HkLzT9SyEyTMVM1zPtM0MJY14DmsWh4MgD15Ea9Hd00AdkTZ0EiG5NAGuIBzQJJ0JR0na+OB7lQA6UKxMfihIQ7GCCnVz694QvykWXTxpS2soDu+smru1UdIxSvAszBFD1c8c6ZOobA8bJiJIvuycgIXBQIXWwhyTgZDQxJTRXgEwRNAawGSXO0a1DKjdihLVNp/taE/xYhsgwe+VpKEEB4LlraQyE84gEihxCnbfoyOuJIEXy2FIYw+JjRusybKlU2g/vhTSGTydvCvXhYBdtAXtS2v7LkHtmXh/8fly1do8FI/D0f8UbzVb5h+KRhMGSAmR2mhi0YG/uj7wgxcfzCrMvdjitUIpXDX8ae2JcF/36qUWIMwN6JsjaRGNj+jEteGDcFyTUb8X/NHSucKMJp7pduxtD6KuxVlyxxwaeiC1FbGBESO84lbyrAugYxdl+2N8/6AgWpo/IeoAOcsG35IA/b3AuSyoa55L7llBLlaWlEWvuCFd8f8NfcTUgzJv6CbB+6ohWwodlk9nGWFpBAOaz5uEW5xBvmjnHFeDsb0mXwayj3mdYq5gxxNf3H3/tnCgHwjSrpSgVxLmiTtuszdRUFIsn6LiMPjL808vL1uQhDbM7aA43mISXReqjSskynIRcHCJ9qeFopJfx9tqyUoGbSwJex/0aDE3plBPGtNBYgWbdLom3+Q/bjdizR2/AS/c/dH/d3G7pyl1qDXgtOFtEqidwLqxPYtrNEveasWq3vPUUtqTeu8gpov4bdOQRI2kneFvRNMrShyVeEupK1PoLDPMSfWMIJcs267mGB8X9CehQCF0gIyhpP10mbyM7lwW1e6TGvHBV1sg/UyTghHPGRqMyaebC6pbB1WKNCQtlai1GGvmq9zUKaUzLaXsXEBYtHxmFbEZ2kJhR164LhWW2Tlp1dhsGE7ZgIWRBOx3Zcu2DxgH+G83WTPceKG0TgQKKiiNNOlWgvqNEbnrk6fVD+AqRam2OguZb0YWSTX88N+i/ELSxbaUUpPx4vJUzYg/WonSeA8xUK6u7DPHgpqWpEe6D4cXg5uK9FIYVba47V/nb+wyOtk+zG8RrS4EA0ouwa04iByRLSvoJA2FzaobbZtXnq8GdbfqEp5I2dpfpj59TCVif6+E75p665faiX8gS213RqBxTZqfHP46nF6NSenOneuT+vgbLUbdTH2/t0REFXZJOEB6DHvx6N6g9956CYrY/AYcm9gELJXYkrSi+0F0geKDZgOCIYkLU/+GOW5aGj8mvLFgtFH5+XC8hvAE3CvHRfl4ofM/Qwk4x2A+R+nyc9gNu/9Tem7XW4XRnyRymf52z09cTOdr+PG6+P/Vb4QiXlwauc5WB1z3o+IJjlbxI8MyWtSzT+k4sKVbhF3xa+vDts3NxXa87iiu+xRH9cAprnOL2h6vV54iQRXuOAj1s8nLFK8gZ70ThIQcWdF19/2xaJmT0efrkNDkWbpAQPdo92Z8+Hn/aLjbOzB9AI/k12fPs9HhUNDJ1u6ax2VxD3R6PywN7BrLJ26z6s3QoMp76qzzwetrDABKSGkfW5PwS1GvYNUbK6uRqxfyVGNyFB0E+OugMM8kKwmJmupuRWO8XkXXXQECyRVw9UyIrtCtcc4oNqXqr7AURBmKn6Khz3eBN96LwIJrAGP9mr/59uTOSx631suyT+QujDd4beUFpZ0kJEEnjlP+X/Kr2kCKhnENTg4BsMTOmMqlj2WMFLRUlVG0fzdCBgUta9odrJfpVdFomTi6ak0tFjXTcdqqvWBAzjY6hVrH9sbt3Z9gn+AVDpTcQImefbB4edirjzrsNievve4ZT4EUZWV3TxEsIW+9MT/RJoKfZZYSRGfC1CwPG/9rdMOM8qR/LUYvw5f/emUSoD7YSFuOoqchdUg2UePd1eCtFSKgxLSZ764oy4lvRCIH6bowPxZWwxNFctksLeil47pfevcBipkkBIc4ngZG+kxGZ71a72KQ7VaZ6MZOZkQJZXM6kb/Ac0/XkJx8dvyfJcWbI3zONEaEPIW8GbkYjsZcwy+eMoKrYjDmvEEixHzkCSCRPRzhOfJZuLdcbx19EL23MA8rnjTZZ787FGMnkqnpuzB5/90w1gtUSRaWcb0eta8198VEeZMUSfIhyuc4/nywFQ9uqn7jdqXh+5wwv+RK9XouNPbYdoEelNGo34KyySwigsrfCe0v/PlWPvQvQg8R0KgHO18mTVThhQrlbEQ0Kp/JxPdjHyR7E1QPw/ut0r+HDDG7BwZFm9IqEUZRpv2WpzlMkOemeLcAt5CsrzskLGaVOAxyySzZV/D2EY7ydNZMf8e8VhHcKGHAWNszf1EOq8fNstijMY4JXyATwTdncFFqcNDfDo+mWFvxJJpc4sEZtjXyBdoFcxbUmniCoKq5jydUHNjYJxMqN1KzYV62MugcELVhS3Bnd+TLLOh7dws/zSXWzxEb4Nj4aFun5x4kDWLK5TUF/yCXB/cZYvI9kPgVsG2jShtXkxfgT+xzjJofXqPEnIXIQ1lnIdmVzBOM90EXvJUW6a0nZ/7XjJGl8ToO3H/fdxnxmTNKBZxnkpXLVgLXCZywGT3YyS75w/PAH5I/jMuRspej8xZObU9kREbRA+kqjmKRFaKGWAmFQspC+QLbKPf0RaK3OXvBSWqo46p70ws/eZpu6jCtZUgQy6r4tHMPUdAgWGGUYNbuv/1a6K+MVFsd3T183+T8capSo6m0+Sh57fEeG/95dykGJBQMj09DSW2bY0mUonDy9a8trLnnL5B5LW3Nl8rJZNysO8Zb+80zXxqUGFpud3Qzwb7bf+8mq6x0TAnJU9pDQR9YQmZhlna2xuxJt0aCO/f1SU8gblOrbIyMsxTlVUW69VJPzYU2HlRXcqE2lLLxnObZuz2tT9CivfTAUYfmzJlt/lOPgsR6VN64/xQd4Jlk/RV7UKVv2Gx/AWsmTAuCWKhdwC+4HmKEKYZh2Xis4KsUR1BeObs1c13wqFRnocdmuheaTV30gvVXZcouzHKK5zwrN52jXJEuX6dGx3BCpV/++4f3hyaW/cQJLFKqasjsMuO3B3WlMq2gyYfdK1e7L2pO/tRye2mwzwZPfdUMrl5wdLqdd2Kv/wVtnpyWYhd49L6rsOV+8HXPrWH2Kup89l2tz6bf80iYSd+V4LROSOHeamvexR524q4r43rTmtFzQvArpvWfLYFZrbFspBsXNUqqenjxNNsFXatZvlIhk7teUPfK+YL32F8McTnjv0BZNppb+vshoCrtLXjIWq3EJXpVXIlG6ZNL0dh6qEm2WMwDjD3LfOfkGh1/czYc/0qhiD2ozNnH4882MVVt3JbVFkbwowNCO3KL5IoYW5wlVeGCViOuv1svZx7FbzxKzA4zGqBlRRaRWCobXaVq4yYCWbZf8eiJwt3OY+MFiSJengcFP2t0JMfzOiJ7cECvpx7neg1Rc5x+7myPJOXt2FohVRyXtD+/rDoTOyGYInJelZMjolecVHUhUNqvdZWg2J2t0jPmiLFeRD/8fOT4o+NGILb+TufCo9ceBBm3JLVn+MO2675n7qiEX/6W+188cYg3Zn5NSTjgOKfWFSAANa6raCxSoVU851oJLY11WIoYK0du0ec5E4tCnAPoKh71riTsjVIp3gKvBbEYQiNYrmH22oLQWA2AdwMnID6PX9b58dR2QKo4qag1D1Z+L/FwEKTR7osOZPWECPJIHQqPUsM5i/CH5YupVPfFA5pHUBcsesh8eO5YhyWnaVRPZn/BmdXVumZWPxMP5e28zm2uqHgFoT9CymHYNNrzrrjlXZM06HnzDxYNlI5b/QosxLmmrqDFqmogQdqk0WLkUceoAvQxHgkIyvWU69BPFr24VB6+lx75Rna6dGtrmOxDnvBojvi1/4dHjVeg8owofPe1cOnxU1ioh016s/Vudv9mhV9f35At+Sh28h1bpp8xhr09+vf47Elx3Ms6hyp6QvB3t0vnLbOhwo660cp7K0vvepabK7YJfxEWWfrC2YzJfYOjygPwfwd/1amTqa0hZ5ueebhWYVMubRTwIjj+0Oq0ohU3zfRfuL8gt59XsHdwKtxTQQ4Y2qz6gisxnm2UdlmpEkgOsZz7iEk6QOt8BuPwr+NR01LTqXmJo1C76o1N274twJvl+I069TiLpenK/miRxhyY8jvYV6W1WuSwhH9q7kuwnJMtm7IWcqs7HsnyHSqWXLSpYtZGaR1V3t0gauninFPZGtWskF65rtti48UV9uV9KM8kfDYs0pgB00S+TlzTXV6P8mxq15b9En8sz3jWSszcifZa/NuufPNnNTb031pptt0+sRSH/7UG8pzbsgtt3OG3ut7B9JzDMt2mTZuyRNIV8D54TuTrpNcHtgmMlYJeiY9XS83NYJicjRjtJSf9BZLsQv629QdDsKQhTK5CnXhpk7vMNkHzPhm0ExW/VCGApHfPyBagtZQTQmPHx7g5IXXsrQDPzIVhv2LB6Ih138iSDww1JNHrDvzUxvp73MsQBVhW8EbrReaVUcLB1R3PUXyaYG4HpJUcLVxMgDxcPkVRQpL7VTAGabDzbKcvg12t5P8TSGQkrj/gOrpnbiDHwluA73xbXts/L7u468cRWSWRtgTwlQnA47EKg0OiZDgFxAKQQUcsbGomITgeXUAAyKe03eA7Mp4gnyKQmm0LXJtEk6ddksMJCuxDmmHzmVhO+XaN2A54MIh3niw5CF7PwiXFZrnA8wOdeHLvvhdoqIDG9PDI7UnWWHq526T8y6ixJPhkuVKZnoUruOpUgOOp3iIKBjk+yi1vHo5cItHXb1PIKzGaZlRS0g5d3MV2pD8FQdGYLZ73aae/eEIUePMc4NFz8pIUfLCrrF4jVWH5gQneN3S8vANBmUXrEcKGn6hIUN95y1vpsvLwbGpzV9L0ZKTan6TDXM05236uLJcIEMKVAxKNT0K8WljuwNny3BNQRfzovA85beI9zr1AGNYnYCVkR1aGngWURUrgqR+gRrQhxW81l3CHevjvGEPzPMTxdsIfB9dfGRbZU0cg/1mcubtECX4tvaedmNAvTxCJtc2QaoUalGfENCGK7IS/O8CRpdOVca8EWCRwv2sSWE8CJPW5PCugjCXPd3h6U60cPD+bdhtXZuYB6stcoveE7Sm5MM2yvfUHXFSW7KzLmi7/EeEWL0wqcOH9MOSKjhCHHmw+JGLcYE/7SBZQCRggox0ZZTAxrlzNNXYXL5fNIjkdT4YMqVUz6p8YDt049v4OXGdg3qTrtLBUXOZf7ahPlZAY/O+7Sp0bvGSHdyQ8B1LOsplqMb9Se8VAE7gIdSZvxbRSrfl+Lk5Qaqi5QJceqjitdErcHXg/3MryljPSIAMaaloFm1cVwBJ8DNmkDqoGROSHFetrgjQ5CahuKkdH5pRPigMrgTtlFI8ufJPJSUlGgTjbBSvpRc0zypiUn6U5KZqcRoyrtzhmJ7/caeZkmVRwJQeLOG8LY6vP5ChpKhc8Js0El+n6FXqbx9ItdtLtYP92kKfaTLtCi8StLZdENJa9Ex1nOoz1kQ7qxoiZFKRyLf4O4CHRT0T/0W9F8epNKVoeyxUXhy3sQMMsJjQJEyMOjmOhMFgOmmlscV4eFi1CldU92yjwleirEKPW3bPAuEhRZV7JsKV3Lr5cETAiFuX5Nw5UlF7d2HZ96Bh0sgFIL5KGaKSoVYVlvdKpZJVP5+NZ7xDEkQhmDgsDKciazJCXJ6ZN2B3FY2f6VZyGl/t4aunGIAk/BHaS+i+SpdRfnB/OktOvyjinWNfM9Ksr6WwtCa1hCmeRI6icpFM4o8quCLsikU0tMoZI/9EqXRMpKGaWzofl4nQuVQm17d5fU5qXCQeCDqVaL9XJ9qJ08n3G3EFZS28SHEb3cdRBdtO0YcTzil3QknNKEe/smQ1fTb0XbpyNB5xAeuIlf+5KWlEY0DqJbsnzJlQxJPOVyHiKMx5Xu9FcEv1Fbg6Fhm4t+Jyy5JC1W3YO8dYLsO0PXPbxodBgttTbH3rt9Cp1lJIk2r3O1Zqu94eRbnIz2f50lWolYzuKsj4PMok4abHLO8NAC884hiXx5Fy5pWKO0bWL7uEGXaJCtznhP67SlQ4xjWIfgq6EpZ28QMtuZK7JC0RGbl9nA4XtFLug/NLMoH1pGt9IonAJqcEDLyH6TDROcbsmGPaGIxMo41IUAnQVPMPGByp4mOmh9ZQMkBAcksUK55LsZj7E5z5XuZoyWCKu6nHmDq22xI/9Z8YdxJy4kWpD16jLVrpwGLWfyOD0Wd+cBzFBxVaGv7S5k9qwh/5t/LQEXsRqI3Q9Rm3QIoaZW9GlsDaKOUyykyWuhNOprSEi0s1G4rgoiX1V743EELti+pJu5og6X0g6oTynUqlhH9k6ezyRi05NGZHz0nvp3HOJr7ebrAUFrDjbkFBObEvdQWkkUbL0pEvMU46X58vF9j9F3j6kpyetNUBItrEubW9ZvMPM4qNqLlsSBJqOH3XbNwv/cXDXNxN8iFLzUhteisYY+RlHYOuP29/Cb+L+xv+35Rv7xudnZ6ohK4cMPfCG8KI7dNmjNk/H4e84pOxn/sZHK9psfvj8ncA8qJz7O8xqbxESDivGJOZzF7o5PJLQ7g34qAWoyuA+x3btU98LT6ZyGyceIXjrqob2CAVql4VOTQPUQYvHV/g4zAuCZGvYQBtf0wmd5lilrvuEn1BXLny01B4h4SMDlYsnNpm9d7m9h578ufpef9Z4WplqWQvqo52fyUA7J24eZD5av6SyGIV9kpmHNqyvdfzcpEMw97BvknV2fq+MFHun9BT3Lsf8pbzvisWiIQvYkng+8Vxk1V+dli1u56kY50LRjaPdotvT5BwqtwyF+emo/z9J3yVUVGfKrxQtJMOAQWoQii/4dp9wgybSa5mkucmRLtEQZ/pz0tL/NVcgWAd95nEQ3Tg6tNbuyn3Iepz65L3huMUUBntllWuu4DbtOFSMSbpILV4fy6wlM0SOvi6CpLh81c1LreIvKd61uEWBcDw1lUBUW1I0Z+m/PaRlX+PQ/oxg0Ye6KUiIiTF4ADNk59Ydpt5/rkxmq9tV5Kcp/eQLUVVmBzQNVuytQCP6Ezd0G8eLxWyHpmZWJ3bAzkWTtg4lZlw42SQezEmiUPaJUuR/qklVA/87S4ArFCpALdY3QRdUw3G3XbWUp6aq9z0zUizcPa7351p9JXOZyfdZBFnqt90VzQndXB/mwf8LC9STj5kenVpNuqOQQP3mIRJj7eV21FxG8VAxKrEn3c+XfmZ800EPb9/5lIlijscUbB6da0RQaMook0zug1G0tKi/JBC4rw7/D3m4ARzAkzMcVrDcT2SyFtUdWAsFlsPDFqV3N+EjyXaoEePwroaZCiLqEzb8MW+PNE9TmTC01EzWli51PzZvUqkmyuROU+V6ik+Le/9qT6nwzUzf9tP68tYei0YaDGx6kAd7jn1cKqOCuYbiELH9zYqcc4MnRJjkeGiqaGwLImhyeKs+xKJMBlOJ05ow9gGCKZ1VpnMKoSCTbMS+X+23y042zOb5MtcY/6oBeAo1Vy89OTyhpavFP78jXCcFH0t7Gx24hMEOm2gsEfGabVpQgvFqbQKMsknFRRmuPHcZu0Su/WMFphZvB2r/EGbG72rpGGho3h+Msz0uGzJ7hNK2uqQiE1qmn0zgacKYYZBCqsxV+sjbpoVdSilW/b94n2xNb648VmNIoizqEWhBnsen+d0kbCPmRItfWqSBeOd9Wne3c6bcd6uvXOJ6WdiSsuXq0ndhqrQ4QoWUjCjYtZ0EAhnSOP1m44xkf0O7jXghrzSJWxP4a/t72jU29Vu2rvu4n7HfHkkmQOMGSS+NPeLGO5I73mC2B7+lMiBQQZRM9/9liLIfowupUFAbPBbR+lxDM6M8Ptgh1paJq5Rvs7yEuLQv/7d1oU2woFSb3FMPWQOKMuCuJ7pDDjpIclus5TeEoMBy2YdVB4fxmesaCeMNsEgTHKS5WDSGyNUOoEpcC2OFWtIRf0w27ck34/DjxRTVIcc9+kqZE6iMSiVDsiKdP/Xz5XfEhm/sBhO50p1rvJDlkyyxuJ9SPgs7YeUJBjXdeAkE+P9OQJm6SZnn1svcduI78dYmbkE2mtziPrcjVisXG78spLvbZaSFx/Rks9zP4LKn0Cdz/3JsetkT06A8f/yCgMO6Mb1Hme0JJ7b2wZz1qleqTuKBGokhPVUZ0dVu+tnQYNEY1fmkZSz6+EGZ5EzL7657mreZGR3jUfaEk458PDniBzsSmBKhDRzfXameryJv9/D5m6HIqZ0R+ouCE54Dzp4IJuuD1e4Dc5i+PpSORJfG23uVgqixAMDvchMR0nZdH5brclYwRoJRWv/rlxGRI5ffD5NPGmIDt7vDE1434pYdVZIFh89Bs94HGGJbTwrN8T6lh1HZFTOB4lWzWj6EVqxSMvC0/ljWBQ3F2kc/mO2b6tWonT2JEqEwFts8rz2h+oWNds9ceR2cb7zZvJTDppHaEhK5avWqsseWa2Dt5BBhabdWSktS80oMQrL4TvAM9b5HMmyDnO+OkkbMXfUJG7eXqTIG6lqSOEbqVR+qYdP7uWb57WEJqzyh411GAVsDinPs7KvUeXItlcMdOUWzXBH6zscymV1LLVCtc8IePojzXHF9m5b5zGwBRdzcyUJkiu938ApmAayRdJrX1PmVguWUvt2ThQ62czItTyWJMW2An/hdDfMK7SiFQlGIdAbltHz3ycoh7j9V7GxNWBpbtcSdqm4XxRwTawc3cbZ+xfSv9qQfEkDKfZTwCkqWGI/ur250ItXlMlh6vUNWEYIg9A3GzbgmbqvTN8js2YMo87CU5y6nZ4dbJLDQJj9fc7yM7tZzJDZFtqOcU8+mZjYlq4VmifI23iHb1ZoT9E+kT2dolnP1AfiOkt7PQCSykBiXy5mv637IegWSKj9IKrYZf4Lu9+I7ub+mkRdlvYzehh/jaJ9n7HUH5b2IbgeNdkY7wx1yVzxS7pbvky6+nmVUtRllEFfweUQ0/nG017WoUYSxs+j2B4FV/F62EtHlMWZXYrjGHpthnNb1x66LKZ0Qe92INWHdfR/vqp02wMS8r1G4dJqHok8KmQ7947G13a4YXbsGgHcBvRuVu1eAi4/A5+ZixmdSXM73LupB/LH7O9yxLTVXJTyBbI1S49TIROrfVCOb/czZ9pM4JsZx8kUz8dQGv7gUWKxXvTH7QM/3J2OuXXgciUhqY+cgtaOliQQVOYthBLV3xpESZT3rmfEYNZxmpBbb24CRao86prn+i9TNOh8VxRJGXJfXHATJHs1T5txgc/opYrY8XjlGQQbRcoxIBcnVsMjmU1ymmIUL4dviJXndMAJ0Yet+c7O52/p98ytlmAsGBaTAmMhimAnvp1TWNGM9BpuitGj+t810CU2UhorrjPKGtThVC8WaXw04WFnT5fTjqmPyrQ0tN3CkLsctVy2xr0ZWgiWVZ1OrlFjjxJYsOiZv2cAoOvE+7sY0I/TwWcZqMoyIKNOftwP7w++Rfg67ljfovKYa50if3fzE/8aPYVey/Nq35+nH2sLPh/fP5TsylSKGOZ4k69d2PnH43+kq++sRXHQqGArWdwhx+hpwQC6JgT2uxehYU4Zbw7oNb6/HLikPyJROGK2ouyr+vzseESp9G50T4AyFrSqOQ0rroCYP4sMDFBrHn342EyZTMlSyk47rHSq89Y9/nI3zG5lX16Z5lxphguLOcZUndL8wNcrkyjH82jqg8Bo8OYkynrxZvbFno5lUS3OPr8Ko3mX9NoRPdYOKKjD07bvgFgpZ/RF+YzkWvJ/Hs/tUbfeGzGWLxNAjfDzHHMVSDwB5SabQLsIZHiBp43FjGkaienYoDd18hu2BGwOK7U3o70K/WY/kuuKdmdrykIBUdG2mvE91L1JtTbh20mOLbk1vCAamu7utlXeGU2ooVikbU/actcgmsC1FKk2qmj3GWeIWbj4tGIxE7BLcBWUvvcnd/lYxsMV4F917fWeFB/XbINN3qGvIyTpCalz1lVewdIGqeAS/gB8Mi+sA+BqDiX3VGD2eUunTRbSY+AuDy4E3Qx3hAhwnSXX+B0zuj3eQ1miS8Vux2z/l6/BkWtjKGU72aJkOCWhGcSf3+kFkkB15vGOsQrSdFr6qTj0gBYiOlnBO41170gOWHSUoBVRU2JjwppYdhIFDfu7tIRHccSNM5KZOFDPz0TGMAjzzEpeLwTWp+kn201kU6NjbiMQJx83+LX1e1tZ10kuChJZ/XBUQ1dwaBHjTDJDqOympEk8X2M3VtVw21JksChA8w1tTefO3RJ1FMbqZ01bHHkudDB/OhLfe7P5GOHaI28ZXKTMuqo0hLWQ4HabBsGG7NbP1RiXtETz074er6w/OerJWEqjmkq2y51q1BVI+JUudnVa3ogBpzdhFE7fC7kybrAt2Z6RqDjATAUEYeYK45WMupBKQRtQlU+uNsjnzj6ZmGrezA+ASrWxQ6LMkHRXqXwNq7ftv28dUx/ZSJciDXP2SWJsWaN0FjPX9Yko6LobZ7aYW/IdUktI9apTLyHS8DyWPyuoZyxN1TK/vtfxk3HwWh6JczZC8Ftn0bIJay2g+n5wd7lm9rEsKO+svqVmi+c1j88hSCxbzrg4+HEP0Nt1/B6YW1XVm09T1CpAKjc9n18hjqsaFGdfyva1ZG0Xu3ip6N6JGpyTSqY5h4BOlpLPaOnyw45PdXTN+DtAKg7DLrLFTnWusoSBHk3s0d7YouJHq85/R09Tfc37ENXZF48eAYLnq9GLioNcwDZrC6FW6godB8JnqYUPvn0pWLfQz0lM0Yy8Mybgn84Ds3Q9bDP10bLyOV+qzxa4Rd9Dhu7cju8mMaONXK3UqmBQ9qIg7etIwEqM/kECk/Dzja4Bs1xR+Q/tCbc8IKrSGsTdJJ0vge7IG20W687uVmK6icWQ6cD3lwFzgNMGtFvO5qyJeKflGLAAcQZOrkxVwy3cWvqlGpvjmf9Qe6Ap20MPbV92DPV0OhFM4kz8Yr0ffC2zLWSQ1kqY6QdQrttR3kh1YLtQd1kCEv5hVoPIRWl5ERcUTttBIrWp6Xs5Ehh5OUUwI5aEBvuiDmUoENmnVw1FohCrbRp1A1E+XSlWVOTi7ADW+5Ohb9z1vK4qx5R5lPdGCPBJZ00mC+Ssp8VUbgpGAvXWMuWQQRbCqI6Rr2jtxZxtfP7W/8onz+yz0Gs76LaT5HX9ecyiZCB/ZR/gFtMxPsDwohoeCRtiuLxE1GM1vUEUgBv86+eehL58/P56QFGQ/MqOe/vC76L63jzmeax4exd/OKTUvkXg+fOJUHych9xt/9goJMrapSgvXrj8+8vk/N80f22Sewj6cyGqt1B6mztoeklVHHraouhvHJaG/OuBz6DHKMpFmQULU1bRWlyYE0RPXYYkUycIemN7TLtgNCJX6BqdyxDKkegO7nJK5xQ7OVYDZTMf9bVHidtk6DQX9Et+V9M7esgbsYBdEeUpsB0Xvw2kd9+rI7V+m47u+O/tq7mw7262HU1WlS9uFzsV6JxIHNmUCy0QS9e077JGRFbG65z3/dOKB/Zk+yDdKpUmdXjn/aS3N5nv4fK7bMHHmPlHd4E2+iTbV5rpzScRnxk6KARuDTJ8Q1LpK2mP8gj1EbuJ9RIyY+EWK4hCiIDBAS1Tm2IEXAFfgKPgdL9O6mAa06wjCcUAL6EsxPQWO9VNegBPm/0GgkZbDxCynxujX/92vmGcjZRMAY45puak2sFLCLSwXpEsyy5fnF0jGJBhm+fNSHKKUUfy+276A7/feLOFxxUuHRNJI2Osenxyvf8DAGObT60pfTTlhEg9u/KKkhJqm5U1/+BEcSkpFDA5XeCqxwXmPac1jcuZ3JWQ+p0NdWzb/5v1ZvF8GtMTFFEdQjpLO0bwPb0BHNWnip3liDXI2fXf05jjvfJ0NpjLCUgfTh9CMFYVFKEd4Z/OG/2C+N435mnK+9t1gvCiVcaaH7rK4+PjCvpVNiz+t2QyqH1O8x3JKZVl6Q+Lp/XK8wMjVMslOq9FdSw5FtUs/CptXH9PW+wbWHgrV17R5jTVOtGtKFu3nb80T+E0tv9QkzW3J2dbaw/8ddAKZ0pxIaEqLjlPrji3VgJ3GvdFvlqD8075woxh4fVt0JZE0KVFsAvqhe0dqN9b35jtSpnYMXkU+vZq+IAHad3IHc2s/LYrnD1anfG46IFiMIr9oNbZDWvwthqYNqOigaKd/XlLU4XHfk/PXIjPsLy/9/kAtQ+/wKH+hI/IROWj5FPvTZAT9f7j4ZXQyG4M0TujMAFXYkKvEHv1xhySekgXGGqNxWeWKlf8dDAlLuB1cb/qOD+rk7cmwt+1yKpk9cudqBanTi6zTbXRtV8qylNtjyOVKy1HTz0GW9rjt6sSjAZcT5R+KdtyYb0zyqG9pSLuCw5WBwAn7fjBjKLLoxLXMI+52L9cLwIR2B6OllJZLHJ8vDxmWdtF+QJnmt1rsHPIWY20lftk8fYePkAIg6Hgn532QoIpegMxiWgAOfe5/U44APR8Ac0NeZrVh3gEhs12W+tVSiWiUQekf/YBECUy5fdYbA08dd7VzPAP9aiVcIB9k6tY7WdJ1wNV+bHeydNtmC6G5ICtFC1ZwmJU/j8hf0I8TRVKSiz5oYIa93EpUI78X8GYIAZabx47/n8LDAAJ0nNtP1rpROprqKMBRecShca6qXuTSI3jZBLOB3Vp381B5rCGhjSvh/NSVkYp2qIdP/Bg=';
+				},
+				{},
+			],
+			6: [
+				function ( require, module, exports ) {
+					/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Collection of static dictionary words.
+*/
+
+					var data = require( './dictionary-browser' );
+					exports.init = function () {
+						exports.dictionary = data.init();
+					};
+
+					exports.offsetsByLength = new Uint32Array( [
+						0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032, 53248,
+						63488, 74752, 87040, 93696, 100864, 104704, 106752,
+						108928, 113536, 115968, 118528, 119872, 121280, 122016,
+					] );
+
+					exports.sizeBitsByLength = new Uint8Array( [
+						0, 0, 0, 0, 10, 10, 11, 11, 10, 10, 10, 10, 10, 9, 9, 8,
+						7, 7, 8, 7, 7, 6, 6, 5, 5,
+					] );
+
+					exports.minDictionaryWordLength = 4;
+					exports.maxDictionaryWordLength = 24;
+				},
+				{ './dictionary-browser': 4 },
+			],
+			7: [
+				function ( require, module, exports ) {
+					function HuffmanCode( bits, value ) {
+						this.bits =
+							bits; /* number of bits used for this symbol */
+						this.value = value; /* symbol value or table offset */
+					}
+
+					exports.HuffmanCode = HuffmanCode;
+
+					var MAX_LENGTH = 15;
+
+					/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the
+   bit-wise reversal of the len least significant bits of key. */
+					function GetNextKey( key, len ) {
+						var step = 1 << ( len - 1 );
+						while ( key & step ) {
+							step >>= 1;
+						}
+						return ( key & ( step - 1 ) ) + step;
+					}
+
+					/* Stores code in table[0], table[step], table[2*step], ..., table[end] */
+					/* Assumes that end is an integer multiple of step */
+					function ReplicateValue( table, i, step, end, code ) {
+						do {
+							end -= step;
+							table[ i + end ] = new HuffmanCode(
+								code.bits,
+								code.value
+							);
+						} while ( end > 0 );
+					}
+
+					/* Returns the table width of the next 2nd level table. count is the histogram
+   of bit lengths for the remaining symbols, len is the code length of the next
+   processed symbol */
+					function NextTableBitSize( count, len, root_bits ) {
+						var left = 1 << ( len - root_bits );
+						while ( len < MAX_LENGTH ) {
+							left -= count[ len ];
+							if ( left <= 0 ) break;
+							++len;
+							left <<= 1;
+						}
+						return len - root_bits;
+					}
+
+					exports.BrotliBuildHuffmanTable = function (
+						root_table,
+						table,
+						root_bits,
+						code_lengths,
+						code_lengths_size
+					) {
+						var start_table = table;
+						var code; /* current table entry */
+						var len; /* current code length */
+						var symbol; /* symbol index in original or sorted table */
+						var key; /* reversed prefix code */
+						var step; /* step size to replicate values in current table */
+						var low; /* low bits for current root entry */
+						var mask; /* mask for low bits */
+						var table_bits; /* key length of current table */
+						var table_size; /* size of current table */
+						var total_size; /* sum of root table size and 2nd level table sizes */
+						var sorted; /* symbols sorted by code length */
+						var count = new Int32Array(
+							MAX_LENGTH + 1
+						); /* number of codes of each length */
+						var offset = new Int32Array(
+							MAX_LENGTH + 1
+						); /* offsets in sorted table for each length */
+
+						sorted = new Int32Array( code_lengths_size );
+
+						/* build histogram of code lengths */
+						for (
+							symbol = 0;
+							symbol < code_lengths_size;
+							symbol++
+						) {
+							count[ code_lengths[ symbol ] ]++;
+						}
+
+						/* generate offsets into sorted symbol table by code length */
+						offset[ 1 ] = 0;
+						for ( len = 1; len < MAX_LENGTH; len++ ) {
+							offset[ len + 1 ] = offset[ len ] + count[ len ];
+						}
+
+						/* sort symbols by length, by symbol order within each length */
+						for (
+							symbol = 0;
+							symbol < code_lengths_size;
+							symbol++
+						) {
+							if ( code_lengths[ symbol ] !== 0 ) {
+								sorted[ offset[ code_lengths[ symbol ] ]++ ] =
+									symbol;
+							}
+						}
+
+						table_bits = root_bits;
+						table_size = 1 << table_bits;
+						total_size = table_size;
+
+						/* special case code with only one value */
+						if ( offset[ MAX_LENGTH ] === 1 ) {
+							for ( key = 0; key < total_size; ++key ) {
+								root_table[ table + key ] = new HuffmanCode(
+									0,
+									sorted[ 0 ] & 0xffff
+								);
+							}
+
+							return total_size;
+						}
+
+						/* fill in root table */
+						key = 0;
+						symbol = 0;
+						for (
+							len = 1, step = 2;
+							len <= root_bits;
+							++len, step <<= 1
+						) {
+							for ( ; count[ len ] > 0; --count[ len ] ) {
+								code = new HuffmanCode(
+									len & 0xff,
+									sorted[ symbol++ ] & 0xffff
+								);
+								ReplicateValue(
+									root_table,
+									table + key,
+									step,
+									table_size,
+									code
+								);
+								key = GetNextKey( key, len );
+							}
+						}
+
+						/* fill in 2nd level tables and add pointers to root table */
+						mask = total_size - 1;
+						low = -1;
+						for (
+							len = root_bits + 1, step = 2;
+							len <= MAX_LENGTH;
+							++len, step <<= 1
+						) {
+							for ( ; count[ len ] > 0; --count[ len ] ) {
+								if ( ( key & mask ) !== low ) {
+									table += table_size;
+									table_bits = NextTableBitSize(
+										count,
+										len,
+										root_bits
+									);
+									table_size = 1 << table_bits;
+									total_size += table_size;
+									low = key & mask;
+									root_table[ start_table + low ] =
+										new HuffmanCode(
+											( table_bits + root_bits ) & 0xff,
+											( table - start_table - low ) &
+												0xffff
+										);
+								}
+								code = new HuffmanCode(
+									( len - root_bits ) & 0xff,
+									sorted[ symbol++ ] & 0xffff
+								);
+								ReplicateValue(
+									root_table,
+									table + ( key >> root_bits ),
+									step,
+									table_size,
+									code
+								);
+								key = GetNextKey( key, len );
+							}
+						}
+
+						return total_size;
+					};
+				},
+				{},
+			],
+			8: [
+				function ( require, module, exports ) {
+					'use strict';
+
+					exports.byteLength = byteLength;
+					exports.toByteArray = toByteArray;
+					exports.fromByteArray = fromByteArray;
+
+					var lookup = [];
+					var revLookup = [];
+					var Arr =
+						typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
+
+					var code =
+						'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+					for ( var i = 0, len = code.length; i < len; ++i ) {
+						lookup[ i ] = code[ i ];
+						revLookup[ code.charCodeAt( i ) ] = i;
+					}
+
+					// Support decoding URL-safe base64 strings, as Node.js does.
+					// See: https://en.wikipedia.org/wiki/Base64#URL_applications
+					revLookup[ '-'.charCodeAt( 0 ) ] = 62;
+					revLookup[ '_'.charCodeAt( 0 ) ] = 63;
+
+					function getLens( b64 ) {
+						var len = b64.length;
+
+						if ( len % 4 > 0 ) {
+							throw new Error(
+								'Invalid string. Length must be a multiple of 4'
+							);
+						}
+
+						// Trim off extra bytes after placeholder bytes are found
+						// See: https://github.com/beatgammit/base64-js/issues/42
+						var validLen = b64.indexOf( '=' );
+						if ( validLen === -1 ) validLen = len;
+
+						var placeHoldersLen =
+							validLen === len ? 0 : 4 - ( validLen % 4 );
+
+						return [ validLen, placeHoldersLen ];
+					}
+
+					// base64 is 4/3 + up to two characters of the original data
+					function byteLength( b64 ) {
+						var lens = getLens( b64 );
+						var validLen = lens[ 0 ];
+						var placeHoldersLen = lens[ 1 ];
+						return (
+							( ( validLen + placeHoldersLen ) * 3 ) / 4 -
+							placeHoldersLen
+						);
+					}
+
+					function _byteLength( b64, validLen, placeHoldersLen ) {
+						return (
+							( ( validLen + placeHoldersLen ) * 3 ) / 4 -
+							placeHoldersLen
+						);
+					}
+
+					function toByteArray( b64 ) {
+						var tmp;
+						var lens = getLens( b64 );
+						var validLen = lens[ 0 ];
+						var placeHoldersLen = lens[ 1 ];
+
+						var arr = new Arr(
+							_byteLength( b64, validLen, placeHoldersLen )
+						);
+
+						var curByte = 0;
+
+						// if there are placeholders, only get up to the last complete 4 chars
+						var len = placeHoldersLen > 0 ? validLen - 4 : validLen;
+
+						for ( var i = 0; i < len; i += 4 ) {
+							tmp =
+								( revLookup[ b64.charCodeAt( i ) ] << 18 ) |
+								( revLookup[ b64.charCodeAt( i + 1 ) ] << 12 ) |
+								( revLookup[ b64.charCodeAt( i + 2 ) ] << 6 ) |
+								revLookup[ b64.charCodeAt( i + 3 ) ];
+							arr[ curByte++ ] = ( tmp >> 16 ) & 0xff;
+							arr[ curByte++ ] = ( tmp >> 8 ) & 0xff;
+							arr[ curByte++ ] = tmp & 0xff;
+						}
+
+						if ( placeHoldersLen === 2 ) {
+							tmp =
+								( revLookup[ b64.charCodeAt( i ) ] << 2 ) |
+								( revLookup[ b64.charCodeAt( i + 1 ) ] >> 4 );
+							arr[ curByte++ ] = tmp & 0xff;
+						}
+
+						if ( placeHoldersLen === 1 ) {
+							tmp =
+								( revLookup[ b64.charCodeAt( i ) ] << 10 ) |
+								( revLookup[ b64.charCodeAt( i + 1 ) ] << 4 ) |
+								( revLookup[ b64.charCodeAt( i + 2 ) ] >> 2 );
+							arr[ curByte++ ] = ( tmp >> 8 ) & 0xff;
+							arr[ curByte++ ] = tmp & 0xff;
+						}
+
+						return arr;
+					}
+
+					function tripletToBase64( num ) {
+						return (
+							lookup[ ( num >> 18 ) & 0x3f ] +
+							lookup[ ( num >> 12 ) & 0x3f ] +
+							lookup[ ( num >> 6 ) & 0x3f ] +
+							lookup[ num & 0x3f ]
+						);
+					}
+
+					function encodeChunk( uint8, start, end ) {
+						var tmp;
+						var output = [];
+						for ( var i = start; i < end; i += 3 ) {
+							tmp =
+								( ( uint8[ i ] << 16 ) & 0xff0000 ) +
+								( ( uint8[ i + 1 ] << 8 ) & 0xff00 ) +
+								( uint8[ i + 2 ] & 0xff );
+							output.push( tripletToBase64( tmp ) );
+						}
+						return output.join( '' );
+					}
+
+					function fromByteArray( uint8 ) {
+						var tmp;
+						var len = uint8.length;
+						var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
+						var parts = [];
+						var maxChunkLength = 16383; // must be multiple of 3
+
+						// go through the array every three bytes, we'll deal with trailing stuff later
+						for (
+							var i = 0, len2 = len - extraBytes;
+							i < len2;
+							i += maxChunkLength
+						) {
+							parts.push(
+								encodeChunk(
+									uint8,
+									i,
+									i + maxChunkLength > len2
+										? len2
+										: i + maxChunkLength
+								)
+							);
+						}
+
+						// pad the end with zeros, but make sure to not forget the extra bytes
+						if ( extraBytes === 1 ) {
+							tmp = uint8[ len - 1 ];
+							parts.push(
+								lookup[ tmp >> 2 ] +
+									lookup[ ( tmp << 4 ) & 0x3f ] +
+									'=='
+							);
+						} else if ( extraBytes === 2 ) {
+							tmp = ( uint8[ len - 2 ] << 8 ) + uint8[ len - 1 ];
+							parts.push(
+								lookup[ tmp >> 10 ] +
+									lookup[ ( tmp >> 4 ) & 0x3f ] +
+									lookup[ ( tmp << 2 ) & 0x3f ] +
+									'='
+							);
+						}
+
+						return parts.join( '' );
+					}
+				},
+				{},
+			],
+			9: [
+				function ( require, module, exports ) {
+					/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Lookup tables to map prefix codes to value ranges. This is used during
+   decoding of the block lengths, literal insertion lengths and copy lengths.
+*/
+
+					/* Represents the range of values belonging to a prefix code: */
+					/* [offset, offset + 2^nbits) */
+					function PrefixCodeRange( offset, nbits ) {
+						this.offset = offset;
+						this.nbits = nbits;
+					}
+
+					exports.kBlockLengthPrefixCode = [
+						new PrefixCodeRange( 1, 2 ),
+						new PrefixCodeRange( 5, 2 ),
+						new PrefixCodeRange( 9, 2 ),
+						new PrefixCodeRange( 13, 2 ),
+						new PrefixCodeRange( 17, 3 ),
+						new PrefixCodeRange( 25, 3 ),
+						new PrefixCodeRange( 33, 3 ),
+						new PrefixCodeRange( 41, 3 ),
+						new PrefixCodeRange( 49, 4 ),
+						new PrefixCodeRange( 65, 4 ),
+						new PrefixCodeRange( 81, 4 ),
+						new PrefixCodeRange( 97, 4 ),
+						new PrefixCodeRange( 113, 5 ),
+						new PrefixCodeRange( 145, 5 ),
+						new PrefixCodeRange( 177, 5 ),
+						new PrefixCodeRange( 209, 5 ),
+						new PrefixCodeRange( 241, 6 ),
+						new PrefixCodeRange( 305, 6 ),
+						new PrefixCodeRange( 369, 7 ),
+						new PrefixCodeRange( 497, 8 ),
+						new PrefixCodeRange( 753, 9 ),
+						new PrefixCodeRange( 1265, 10 ),
+						new PrefixCodeRange( 2289, 11 ),
+						new PrefixCodeRange( 4337, 12 ),
+						new PrefixCodeRange( 8433, 13 ),
+						new PrefixCodeRange( 16625, 24 ),
+					];
+
+					exports.kInsertLengthPrefixCode = [
+						new PrefixCodeRange( 0, 0 ),
+						new PrefixCodeRange( 1, 0 ),
+						new PrefixCodeRange( 2, 0 ),
+						new PrefixCodeRange( 3, 0 ),
+						new PrefixCodeRange( 4, 0 ),
+						new PrefixCodeRange( 5, 0 ),
+						new PrefixCodeRange( 6, 1 ),
+						new PrefixCodeRange( 8, 1 ),
+						new PrefixCodeRange( 10, 2 ),
+						new PrefixCodeRange( 14, 2 ),
+						new PrefixCodeRange( 18, 3 ),
+						new PrefixCodeRange( 26, 3 ),
+						new PrefixCodeRange( 34, 4 ),
+						new PrefixCodeRange( 50, 4 ),
+						new PrefixCodeRange( 66, 5 ),
+						new PrefixCodeRange( 98, 5 ),
+						new PrefixCodeRange( 130, 6 ),
+						new PrefixCodeRange( 194, 7 ),
+						new PrefixCodeRange( 322, 8 ),
+						new PrefixCodeRange( 578, 9 ),
+						new PrefixCodeRange( 1090, 10 ),
+						new PrefixCodeRange( 2114, 12 ),
+						new PrefixCodeRange( 6210, 14 ),
+						new PrefixCodeRange( 22594, 24 ),
+					];
+
+					exports.kCopyLengthPrefixCode = [
+						new PrefixCodeRange( 2, 0 ),
+						new PrefixCodeRange( 3, 0 ),
+						new PrefixCodeRange( 4, 0 ),
+						new PrefixCodeRange( 5, 0 ),
+						new PrefixCodeRange( 6, 0 ),
+						new PrefixCodeRange( 7, 0 ),
+						new PrefixCodeRange( 8, 0 ),
+						new PrefixCodeRange( 9, 0 ),
+						new PrefixCodeRange( 10, 1 ),
+						new PrefixCodeRange( 12, 1 ),
+						new PrefixCodeRange( 14, 2 ),
+						new PrefixCodeRange( 18, 2 ),
+						new PrefixCodeRange( 22, 3 ),
+						new PrefixCodeRange( 30, 3 ),
+						new PrefixCodeRange( 38, 4 ),
+						new PrefixCodeRange( 54, 4 ),
+						new PrefixCodeRange( 70, 5 ),
+						new PrefixCodeRange( 102, 5 ),
+						new PrefixCodeRange( 134, 6 ),
+						new PrefixCodeRange( 198, 7 ),
+						new PrefixCodeRange( 326, 8 ),
+						new PrefixCodeRange( 582, 9 ),
+						new PrefixCodeRange( 1094, 10 ),
+						new PrefixCodeRange( 2118, 24 ),
+					];
+
+					exports.kInsertRangeLut = [ 0, 0, 8, 8, 0, 16, 8, 16, 16 ];
+
+					exports.kCopyRangeLut = [ 0, 8, 0, 8, 16, 0, 16, 8, 16 ];
+				},
+				{},
+			],
+			10: [
+				function ( require, module, exports ) {
+					function BrotliInput( buffer ) {
+						this.buffer = buffer;
+						this.pos = 0;
+					}
+
+					BrotliInput.prototype.read = function ( buf, i, count ) {
+						if ( this.pos + count > this.buffer.length ) {
+							count = this.buffer.length - this.pos;
+						}
+
+						for ( var p = 0; p < count; p++ )
+							buf[ i + p ] = this.buffer[ this.pos + p ];
+
+						this.pos += count;
+						return count;
+					};
+
+					exports.BrotliInput = BrotliInput;
+
+					function BrotliOutput( buf ) {
+						this.buffer = buf;
+						this.pos = 0;
+					}
+
+					BrotliOutput.prototype.write = function ( buf, count ) {
+						if ( this.pos + count > this.buffer.length )
+							throw new Error(
+								'Output buffer is not large enough'
+							);
+
+						this.buffer.set( buf.subarray( 0, count ), this.pos );
+						this.pos += count;
+						return count;
+					};
+
+					exports.BrotliOutput = BrotliOutput;
+				},
+				{},
+			],
+			11: [
+				function ( require, module, exports ) {
+					/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Transformations on dictionary words.
+*/
+
+					var BrotliDictionary = require( './dictionary' );
+
+					var kIdentity = 0;
+					var kOmitLast1 = 1;
+					var kOmitLast2 = 2;
+					var kOmitLast3 = 3;
+					var kOmitLast4 = 4;
+					var kOmitLast5 = 5;
+					var kOmitLast6 = 6;
+					var kOmitLast7 = 7;
+					var kOmitLast8 = 8;
+					var kOmitLast9 = 9;
+					var kUppercaseFirst = 10;
+					var kUppercaseAll = 11;
+					var kOmitFirst1 = 12;
+					var kOmitFirst2 = 13;
+					var kOmitFirst3 = 14;
+					var kOmitFirst4 = 15;
+					var kOmitFirst5 = 16;
+					var kOmitFirst6 = 17;
+					var kOmitFirst7 = 18;
+					var kOmitFirst8 = 19;
+					var kOmitFirst9 = 20;
+
+					function Transform( prefix, transform, suffix ) {
+						this.prefix = new Uint8Array( prefix.length );
+						this.transform = transform;
+						this.suffix = new Uint8Array( suffix.length );
+
+						for ( var i = 0; i < prefix.length; i++ )
+							this.prefix[ i ] = prefix.charCodeAt( i );
+
+						for ( var i = 0; i < suffix.length; i++ )
+							this.suffix[ i ] = suffix.charCodeAt( i );
+					}
+
+					var kTransforms = [
+						new Transform( '', kIdentity, '' ),
+						new Transform( '', kIdentity, ' ' ),
+						new Transform( ' ', kIdentity, ' ' ),
+						new Transform( '', kOmitFirst1, '' ),
+						new Transform( '', kUppercaseFirst, ' ' ),
+						new Transform( '', kIdentity, ' the ' ),
+						new Transform( ' ', kIdentity, '' ),
+						new Transform( 's ', kIdentity, ' ' ),
+						new Transform( '', kIdentity, ' of ' ),
+						new Transform( '', kUppercaseFirst, '' ),
+						new Transform( '', kIdentity, ' and ' ),
+						new Transform( '', kOmitFirst2, '' ),
+						new Transform( '', kOmitLast1, '' ),
+						new Transform( ', ', kIdentity, ' ' ),
+						new Transform( '', kIdentity, ', ' ),
+						new Transform( ' ', kUppercaseFirst, ' ' ),
+						new Transform( '', kIdentity, ' in ' ),
+						new Transform( '', kIdentity, ' to ' ),
+						new Transform( 'e ', kIdentity, ' ' ),
+						new Transform( '', kIdentity, '"' ),
+						new Transform( '', kIdentity, '.' ),
+						new Transform( '', kIdentity, '">' ),
+						new Transform( '', kIdentity, '\n' ),
+						new Transform( '', kOmitLast3, '' ),
+						new Transform( '', kIdentity, ']' ),
+						new Transform( '', kIdentity, ' for ' ),
+						new Transform( '', kOmitFirst3, '' ),
+						new Transform( '', kOmitLast2, '' ),
+						new Transform( '', kIdentity, ' a ' ),
+						new Transform( '', kIdentity, ' that ' ),
+						new Transform( ' ', kUppercaseFirst, '' ),
+						new Transform( '', kIdentity, '. ' ),
+						new Transform( '.', kIdentity, '' ),
+						new Transform( ' ', kIdentity, ', ' ),
+						new Transform( '', kOmitFirst4, '' ),
+						new Transform( '', kIdentity, ' with ' ),
+						new Transform( '', kIdentity, "'" ),
+						new Transform( '', kIdentity, ' from ' ),
+						new Transform( '', kIdentity, ' by ' ),
+						new Transform( '', kOmitFirst5, '' ),
+						new Transform( '', kOmitFirst6, '' ),
+						new Transform( ' the ', kIdentity, '' ),
+						new Transform( '', kOmitLast4, '' ),
+						new Transform( '', kIdentity, '. The ' ),
+						new Transform( '', kUppercaseAll, '' ),
+						new Transform( '', kIdentity, ' on ' ),
+						new Transform( '', kIdentity, ' as ' ),
+						new Transform( '', kIdentity, ' is ' ),
+						new Transform( '', kOmitLast7, '' ),
+						new Transform( '', kOmitLast1, 'ing ' ),
+						new Transform( '', kIdentity, '\n\t' ),
+						new Transform( '', kIdentity, ':' ),
+						new Transform( ' ', kIdentity, '. ' ),
+						new Transform( '', kIdentity, 'ed ' ),
+						new Transform( '', kOmitFirst9, '' ),
+						new Transform( '', kOmitFirst7, '' ),
+						new Transform( '', kOmitLast6, '' ),
+						new Transform( '', kIdentity, '(' ),
+						new Transform( '', kUppercaseFirst, ', ' ),
+						new Transform( '', kOmitLast8, '' ),
+						new Transform( '', kIdentity, ' at ' ),
+						new Transform( '', kIdentity, 'ly ' ),
+						new Transform( ' the ', kIdentity, ' of ' ),
+						new Transform( '', kOmitLast5, '' ),
+						new Transform( '', kOmitLast9, '' ),
+						new Transform( ' ', kUppercaseFirst, ', ' ),
+						new Transform( '', kUppercaseFirst, '"' ),
+						new Transform( '.', kIdentity, '(' ),
+						new Transform( '', kUppercaseAll, ' ' ),
+						new Transform( '', kUppercaseFirst, '">' ),
+						new Transform( '', kIdentity, '="' ),
+						new Transform( ' ', kIdentity, '.' ),
+						new Transform( '.com/', kIdentity, '' ),
+						new Transform( ' the ', kIdentity, ' of the ' ),
+						new Transform( '', kUppercaseFirst, "'" ),
+						new Transform( '', kIdentity, '. This ' ),
+						new Transform( '', kIdentity, ',' ),
+						new Transform( '.', kIdentity, ' ' ),
+						new Transform( '', kUppercaseFirst, '(' ),
+						new Transform( '', kUppercaseFirst, '.' ),
+						new Transform( '', kIdentity, ' not ' ),
+						new Transform( ' ', kIdentity, '="' ),
+						new Transform( '', kIdentity, 'er ' ),
+						new Transform( ' ', kUppercaseAll, ' ' ),
+						new Transform( '', kIdentity, 'al ' ),
+						new Transform( ' ', kUppercaseAll, '' ),
+						new Transform( '', kIdentity, "='" ),
+						new Transform( '', kUppercaseAll, '"' ),
+						new Transform( '', kUppercaseFirst, '. ' ),
+						new Transform( ' ', kIdentity, '(' ),
+						new Transform( '', kIdentity, 'ful ' ),
+						new Transform( ' ', kUppercaseFirst, '. ' ),
+						new Transform( '', kIdentity, 'ive ' ),
+						new Transform( '', kIdentity, 'less ' ),
+						new Transform( '', kUppercaseAll, "'" ),
+						new Transform( '', kIdentity, 'est ' ),
+						new Transform( ' ', kUppercaseFirst, '.' ),
+						new Transform( '', kUppercaseAll, '">' ),
+						new Transform( ' ', kIdentity, "='" ),
+						new Transform( '', kUppercaseFirst, ',' ),
+						new Transform( '', kIdentity, 'ize ' ),
+						new Transform( '', kUppercaseAll, '.' ),
+						new Transform( '\xc2\xa0', kIdentity, '' ),
+						new Transform( ' ', kIdentity, ',' ),
+						new Transform( '', kUppercaseFirst, '="' ),
+						new Transform( '', kUppercaseAll, '="' ),
+						new Transform( '', kIdentity, 'ous ' ),
+						new Transform( '', kUppercaseAll, ', ' ),
+						new Transform( '', kUppercaseFirst, "='" ),
+						new Transform( ' ', kUppercaseFirst, ',' ),
+						new Transform( ' ', kUppercaseAll, '="' ),
+						new Transform( ' ', kUppercaseAll, ', ' ),
+						new Transform( '', kUppercaseAll, ',' ),
+						new Transform( '', kUppercaseAll, '(' ),
+						new Transform( '', kUppercaseAll, '. ' ),
+						new Transform( ' ', kUppercaseAll, '.' ),
+						new Transform( '', kUppercaseAll, "='" ),
+						new Transform( ' ', kUppercaseAll, '. ' ),
+						new Transform( ' ', kUppercaseFirst, '="' ),
+						new Transform( ' ', kUppercaseAll, "='" ),
+						new Transform( ' ', kUppercaseFirst, "='" ),
+					];
+
+					exports.kTransforms = kTransforms;
+					exports.kNumTransforms = kTransforms.length;
+
+					function ToUpperCase( p, i ) {
+						if ( p[ i ] < 0xc0 ) {
+							if ( p[ i ] >= 97 && p[ i ] <= 122 ) {
+								p[ i ] ^= 32;
+							}
+							return 1;
+						}
+
+						/* An overly simplified uppercasing model for utf-8. */
+						if ( p[ i ] < 0xe0 ) {
+							p[ i + 1 ] ^= 32;
+							return 2;
+						}
+
+						/* An arbitrary transform for three byte characters. */
+						p[ i + 2 ] ^= 5;
+						return 3;
+					}
+
+					exports.transformDictionaryWord = function (
+						dst,
+						idx,
+						word,
+						len,
+						transform
+					) {
+						var prefix = kTransforms[ transform ].prefix;
+						var suffix = kTransforms[ transform ].suffix;
+						var t = kTransforms[ transform ].transform;
+						var skip =
+							t < kOmitFirst1 ? 0 : t - ( kOmitFirst1 - 1 );
+						var i = 0;
+						var start_idx = idx;
+						var uppercase;
+
+						if ( skip > len ) {
+							skip = len;
+						}
+
+						var prefix_pos = 0;
+						while ( prefix_pos < prefix.length ) {
+							dst[ idx++ ] = prefix[ prefix_pos++ ];
+						}
+
+						word += skip;
+						len -= skip;
+
+						if ( t <= kOmitLast9 ) {
+							len -= t;
+						}
+
+						for ( i = 0; i < len; i++ ) {
+							dst[ idx++ ] =
+								BrotliDictionary.dictionary[ word + i ];
+						}
+
+						uppercase = idx - len;
+
+						if ( t === kUppercaseFirst ) {
+							ToUpperCase( dst, uppercase );
+						} else if ( t === kUppercaseAll ) {
+							while ( len > 0 ) {
+								var step = ToUpperCase( dst, uppercase );
+								uppercase += step;
+								len -= step;
+							}
+						}
+
+						var suffix_pos = 0;
+						while ( suffix_pos < suffix.length ) {
+							dst[ idx++ ] = suffix[ suffix_pos++ ];
+						}
+
+						return idx - start_idx;
+					};
+				},
+				{ './dictionary': 6 },
+			],
+			12: [
+				function ( require, module, exports ) {
+					module.exports =
+						require( './dec/decode' ).BrotliDecompressBuffer;
+				},
+				{ './dec/decode': 3 },
+			],
+		},
+		{},
+		[ 12 ]
+	)( 12 );
+} );
+/* eslint-enable */
 
 
 /***/ }),
 
-/***/ 9894:
-/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
-
-// Load in dependencies
-var computedStyle = __webpack_require__(4827);
-
-/**
- * Calculate the `line-height` of a given node
- * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.
- * @returns {Number} `line-height` of the element in pixels
- */
-function lineHeight(node) {
-  // Grab the line-height via style
-  var lnHeightStr = computedStyle(node, 'line-height');
-  var lnHeight = parseFloat(lnHeightStr, 10);
-
-  // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')
-  if (lnHeightStr === lnHeight + '') {
-    // Save the old lineHeight style and update the em unit to the element
-    var _lnHeightStyle = node.style.lineHeight;
-    node.style.lineHeight = lnHeightStr + 'em';
-
-    // Calculate the em based height
-    lnHeightStr = computedStyle(node, 'line-height');
-    lnHeight = parseFloat(lnHeightStr, 10);
-
-    // Revert the lineHeight style
-    if (_lnHeightStyle) {
-      node.style.lineHeight = _lnHeightStyle;
-    } else {
-      delete node.style.lineHeight;
-    }
-  }
-
-  // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)
-  // DEV: `em` units are converted to `pt` in IE6
-  // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length
-  if (lnHeightStr.indexOf('pt') !== -1) {
-    lnHeight *= 4;
-    lnHeight /= 3;
-  // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)
-  } else if (lnHeightStr.indexOf('mm') !== -1) {
-    lnHeight *= 96;
-    lnHeight /= 25.4;
-  // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)
-  } else if (lnHeightStr.indexOf('cm') !== -1) {
-    lnHeight *= 96;
-    lnHeight /= 2.54;
-  // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)
-  } else if (lnHeightStr.indexOf('in') !== -1) {
-    lnHeight *= 96;
-  // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)
-  } else if (lnHeightStr.indexOf('pc') !== -1) {
-    lnHeight *= 16;
-  }
-
-  // Continue our computation
-  lnHeight = Math.round(lnHeight);
-
-  // If the line-height is "normal", calculate by font-size
-  if (lnHeightStr === 'normal') {
-    // Create a temporary node
-    var nodeName = node.nodeName;
-    var _node = document.createElement(nodeName);
-    _node.innerHTML = '&nbsp;';
-
-    // If we have a text area, reset it to only 1 row
-    // https://github.com/twolfson/line-height/issues/4
-    if (nodeName.toUpperCase() === 'TEXTAREA') {
-      _node.setAttribute('rows', '1');
-    }
-
-    // Set the font-size of the element
-    var fontSizeStr = computedStyle(node, 'font-size');
-    _node.style.fontSize = fontSizeStr;
-
-    // Remove default padding/border which can affect offset height
-    // https://github.com/twolfson/line-height/issues/4
-    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight
-    _node.style.padding = '0px';
-    _node.style.border = '0px';
-
-    // Append it to the body
-    var body = document.body;
-    body.appendChild(_node);
-
-    // Assume the line height of the element is the height
-    var height = _node.offsetHeight;
-    lnHeight = height;
-
-    // Remove our child from the DOM
-    body.removeChild(_node);
-  }
-
-  // Return the calculated height
-  return lnHeight;
-}
-
-// Export lineHeight
-module.exports = lineHeight;
-
-
-/***/ }),
-
-/***/ 5372:
-/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
-
-"use strict";
-/**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-
-
-var ReactPropTypesSecret = __webpack_require__(9567);
-
-function emptyFunction() {}
-function emptyFunctionWithReset() {}
-emptyFunctionWithReset.resetWarningCache = emptyFunction;
-
-module.exports = function() {
-  function shim(props, propName, componentName, location, propFullName, secret) {
-    if (secret === ReactPropTypesSecret) {
-      // It is still safe when called from React.
-      return;
-    }
-    var err = new Error(
-      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
-      'Use PropTypes.checkPropTypes() to call them. ' +
-      'Read more at http://fb.me/use-check-prop-types'
-    );
-    err.name = 'Invariant Violation';
-    throw err;
-  };
-  shim.isRequired = shim;
-  function getShim() {
-    return shim;
-  };
-  // Important!
-  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
-  var ReactPropTypes = {
-    array: shim,
-    bigint: shim,
-    bool: shim,
-    func: shim,
-    number: shim,
-    object: shim,
-    string: shim,
-    symbol: shim,
-
-    any: shim,
-    arrayOf: getShim,
-    element: shim,
-    elementType: shim,
-    instanceOf: getShim,
-    node: shim,
-    objectOf: getShim,
-    oneOf: getShim,
-    oneOfType: getShim,
-    shape: getShim,
-    exact: getShim,
-
-    checkPropTypes: emptyFunctionWithReset,
-    resetWarningCache: emptyFunction
-  };
-
-  ReactPropTypes.PropTypes = ReactPropTypes;
-
-  return ReactPropTypes;
-};
+/***/ 9681:
+/***/ ((module) => {
+
+var characterMap = {
+	"À": "A",
+	"Á": "A",
+	"Â": "A",
+	"Ã": "A",
+	"Ä": "A",
+	"Å": "A",
+	"Ấ": "A",
+	"Ắ": "A",
+	"Ẳ": "A",
+	"Ẵ": "A",
+	"Ặ": "A",
+	"Æ": "AE",
+	"Ầ": "A",
+	"Ằ": "A",
+	"Ȃ": "A",
+	"Ả": "A",
+	"Ạ": "A",
+	"Ẩ": "A",
+	"Ẫ": "A",
+	"Ậ": "A",
+	"Ç": "C",
+	"Ḉ": "C",
+	"È": "E",
+	"É": "E",
+	"Ê": "E",
+	"Ë": "E",
+	"Ế": "E",
+	"Ḗ": "E",
+	"Ề": "E",
+	"Ḕ": "E",
+	"Ḝ": "E",
+	"Ȇ": "E",
+	"Ẻ": "E",
+	"Ẽ": "E",
+	"Ẹ": "E",
+	"Ể": "E",
+	"Ễ": "E",
+	"Ệ": "E",
+	"Ì": "I",
+	"Í": "I",
+	"Î": "I",
+	"Ï": "I",
+	"Ḯ": "I",
+	"Ȋ": "I",
+	"Ỉ": "I",
+	"Ị": "I",
+	"Ð": "D",
+	"Ñ": "N",
+	"Ò": "O",
+	"Ó": "O",
+	"Ô": "O",
+	"Õ": "O",
+	"Ö": "O",
+	"Ø": "O",
+	"Ố": "O",
+	"Ṍ": "O",
+	"Ṓ": "O",
+	"Ȏ": "O",
+	"Ỏ": "O",
+	"Ọ": "O",
+	"Ổ": "O",
+	"Ỗ": "O",
+	"Ộ": "O",
+	"Ờ": "O",
+	"Ở": "O",
+	"Ỡ": "O",
+	"Ớ": "O",
+	"Ợ": "O",
+	"Ù": "U",
+	"Ú": "U",
+	"Û": "U",
+	"Ü": "U",
+	"Ủ": "U",
+	"Ụ": "U",
+	"Ử": "U",
+	"Ữ": "U",
+	"Ự": "U",
+	"Ý": "Y",
+	"à": "a",
+	"á": "a",
+	"â": "a",
+	"ã": "a",
+	"ä": "a",
+	"å": "a",
+	"ấ": "a",
+	"ắ": "a",
+	"ẳ": "a",
+	"ẵ": "a",
+	"ặ": "a",
+	"æ": "ae",
+	"ầ": "a",
+	"ằ": "a",
+	"ȃ": "a",
+	"ả": "a",
+	"ạ": "a",
+	"ẩ": "a",
+	"ẫ": "a",
+	"ậ": "a",
+	"ç": "c",
+	"ḉ": "c",
+	"è": "e",
+	"é": "e",
+	"ê": "e",
+	"ë": "e",
+	"ế": "e",
+	"ḗ": "e",
+	"ề": "e",
+	"ḕ": "e",
+	"ḝ": "e",
+	"ȇ": "e",
+	"ẻ": "e",
+	"ẽ": "e",
+	"ẹ": "e",
+	"ể": "e",
+	"ễ": "e",
+	"ệ": "e",
+	"ì": "i",
+	"í": "i",
+	"î": "i",
+	"ï": "i",
+	"ḯ": "i",
+	"ȋ": "i",
+	"ỉ": "i",
+	"ị": "i",
+	"ð": "d",
+	"ñ": "n",
+	"ò": "o",
+	"ó": "o",
+	"ô": "o",
+	"õ": "o",
+	"ö": "o",
+	"ø": "o",
+	"ố": "o",
+	"ṍ": "o",
+	"ṓ": "o",
+	"ȏ": "o",
+	"ỏ": "o",
+	"ọ": "o",
+	"ổ": "o",
+	"ỗ": "o",
+	"ộ": "o",
+	"ờ": "o",
+	"ở": "o",
+	"ỡ": "o",
+	"ớ": "o",
+	"ợ": "o",
+	"ù": "u",
+	"ú": "u",
+	"û": "u",
+	"ü": "u",
+	"ủ": "u",
+	"ụ": "u",
+	"ử": "u",
+	"ữ": "u",
+	"ự": "u",
+	"ý": "y",
+	"ÿ": "y",
+	"Ā": "A",
+	"ā": "a",
+	"Ă": "A",
+	"ă": "a",
+	"Ą": "A",
+	"ą": "a",
+	"Ć": "C",
+	"ć": "c",
+	"Ĉ": "C",
+	"ĉ": "c",
+	"Ċ": "C",
+	"ċ": "c",
+	"Č": "C",
+	"č": "c",
+	"C̆": "C",
+	"c̆": "c",
+	"Ď": "D",
+	"ď": "d",
+	"Đ": "D",
+	"đ": "d",
+	"Ē": "E",
+	"ē": "e",
+	"Ĕ": "E",
+	"ĕ": "e",
+	"Ė": "E",
+	"ė": "e",
+	"Ę": "E",
+	"ę": "e",
+	"Ě": "E",
+	"ě": "e",
+	"Ĝ": "G",
+	"Ǵ": "G",
+	"ĝ": "g",
+	"ǵ": "g",
+	"Ğ": "G",
+	"ğ": "g",
+	"Ġ": "G",
+	"ġ": "g",
+	"Ģ": "G",
+	"ģ": "g",
+	"Ĥ": "H",
+	"ĥ": "h",
+	"Ħ": "H",
+	"ħ": "h",
+	"Ḫ": "H",
+	"ḫ": "h",
+	"Ĩ": "I",
+	"ĩ": "i",
+	"Ī": "I",
+	"ī": "i",
+	"Ĭ": "I",
+	"ĭ": "i",
+	"Į": "I",
+	"į": "i",
+	"İ": "I",
+	"ı": "i",
+	"IJ": "IJ",
+	"ij": "ij",
+	"Ĵ": "J",
+	"ĵ": "j",
+	"Ķ": "K",
+	"ķ": "k",
+	"Ḱ": "K",
+	"ḱ": "k",
+	"K̆": "K",
+	"k̆": "k",
+	"Ĺ": "L",
+	"ĺ": "l",
+	"Ļ": "L",
+	"ļ": "l",
+	"Ľ": "L",
+	"ľ": "l",
+	"Ŀ": "L",
+	"ŀ": "l",
+	"Ł": "l",
+	"ł": "l",
+	"Ḿ": "M",
+	"ḿ": "m",
+	"M̆": "M",
+	"m̆": "m",
+	"Ń": "N",
+	"ń": "n",
+	"Ņ": "N",
+	"ņ": "n",
+	"Ň": "N",
+	"ň": "n",
+	"ʼn": "n",
+	"N̆": "N",
+	"n̆": "n",
+	"Ō": "O",
+	"ō": "o",
+	"Ŏ": "O",
+	"ŏ": "o",
+	"Ő": "O",
+	"ő": "o",
+	"Œ": "OE",
+	"œ": "oe",
+	"P̆": "P",
+	"p̆": "p",
+	"Ŕ": "R",
+	"ŕ": "r",
+	"Ŗ": "R",
+	"ŗ": "r",
+	"Ř": "R",
+	"ř": "r",
+	"R̆": "R",
+	"r̆": "r",
+	"Ȓ": "R",
+	"ȓ": "r",
+	"Ś": "S",
+	"ś": "s",
+	"Ŝ": "S",
+	"ŝ": "s",
+	"Ş": "S",
+	"Ș": "S",
+	"ș": "s",
+	"ş": "s",
+	"Š": "S",
+	"š": "s",
+	"Ţ": "T",
+	"ţ": "t",
+	"ț": "t",
+	"Ț": "T",
+	"Ť": "T",
+	"ť": "t",
+	"Ŧ": "T",
+	"ŧ": "t",
+	"T̆": "T",
+	"t̆": "t",
+	"Ũ": "U",
+	"ũ": "u",
+	"Ū": "U",
+	"ū": "u",
+	"Ŭ": "U",
+	"ŭ": "u",
+	"Ů": "U",
+	"ů": "u",
+	"Ű": "U",
+	"ű": "u",
+	"Ų": "U",
+	"ų": "u",
+	"Ȗ": "U",
+	"ȗ": "u",
+	"V̆": "V",
+	"v̆": "v",
+	"Ŵ": "W",
+	"ŵ": "w",
+	"Ẃ": "W",
+	"ẃ": "w",
+	"X̆": "X",
+	"x̆": "x",
+	"Ŷ": "Y",
+	"ŷ": "y",
+	"Ÿ": "Y",
+	"Y̆": "Y",
+	"y̆": "y",
+	"Ź": "Z",
+	"ź": "z",
+	"Ż": "Z",
+	"ż": "z",
+	"Ž": "Z",
+	"ž": "z",
+	"ſ": "s",
+	"ƒ": "f",
+	"Ơ": "O",
+	"ơ": "o",
+	"Ư": "U",
+	"ư": "u",
+	"Ǎ": "A",
+	"ǎ": "a",
+	"Ǐ": "I",
+	"ǐ": "i",
+	"Ǒ": "O",
+	"ǒ": "o",
+	"Ǔ": "U",
+	"ǔ": "u",
+	"Ǖ": "U",
+	"ǖ": "u",
+	"Ǘ": "U",
+	"ǘ": "u",
+	"Ǚ": "U",
+	"ǚ": "u",
+	"Ǜ": "U",
+	"ǜ": "u",
+	"Ứ": "U",
+	"ứ": "u",
+	"Ṹ": "U",
+	"ṹ": "u",
+	"Ǻ": "A",
+	"ǻ": "a",
+	"Ǽ": "AE",
+	"ǽ": "ae",
+	"Ǿ": "O",
+	"ǿ": "o",
+	"Þ": "TH",
+	"þ": "th",
+	"Ṕ": "P",
+	"ṕ": "p",
+	"Ṥ": "S",
+	"ṥ": "s",
+	"X́": "X",
+	"x́": "x",
+	"Ѓ": "Г",
+	"ѓ": "г",
+	"Ќ": "К",
+	"ќ": "к",
+	"A̋": "A",
+	"a̋": "a",
+	"E̋": "E",
+	"e̋": "e",
+	"I̋": "I",
+	"i̋": "i",
+	"Ǹ": "N",
+	"ǹ": "n",
+	"Ồ": "O",
+	"ồ": "o",
+	"Ṑ": "O",
+	"ṑ": "o",
+	"Ừ": "U",
+	"ừ": "u",
+	"Ẁ": "W",
+	"ẁ": "w",
+	"Ỳ": "Y",
+	"ỳ": "y",
+	"Ȁ": "A",
+	"ȁ": "a",
+	"Ȅ": "E",
+	"ȅ": "e",
+	"Ȉ": "I",
+	"ȉ": "i",
+	"Ȍ": "O",
+	"ȍ": "o",
+	"Ȑ": "R",
+	"ȑ": "r",
+	"Ȕ": "U",
+	"ȕ": "u",
+	"B̌": "B",
+	"b̌": "b",
+	"Č̣": "C",
+	"č̣": "c",
+	"Ê̌": "E",
+	"ê̌": "e",
+	"F̌": "F",
+	"f̌": "f",
+	"Ǧ": "G",
+	"ǧ": "g",
+	"Ȟ": "H",
+	"ȟ": "h",
+	"J̌": "J",
+	"ǰ": "j",
+	"Ǩ": "K",
+	"ǩ": "k",
+	"M̌": "M",
+	"m̌": "m",
+	"P̌": "P",
+	"p̌": "p",
+	"Q̌": "Q",
+	"q̌": "q",
+	"Ř̩": "R",
+	"ř̩": "r",
+	"Ṧ": "S",
+	"ṧ": "s",
+	"V̌": "V",
+	"v̌": "v",
+	"W̌": "W",
+	"w̌": "w",
+	"X̌": "X",
+	"x̌": "x",
+	"Y̌": "Y",
+	"y̌": "y",
+	"A̧": "A",
+	"a̧": "a",
+	"B̧": "B",
+	"b̧": "b",
+	"Ḑ": "D",
+	"ḑ": "d",
+	"Ȩ": "E",
+	"ȩ": "e",
+	"Ɛ̧": "E",
+	"ɛ̧": "e",
+	"Ḩ": "H",
+	"ḩ": "h",
+	"I̧": "I",
+	"i̧": "i",
+	"Ɨ̧": "I",
+	"ɨ̧": "i",
+	"M̧": "M",
+	"m̧": "m",
+	"O̧": "O",
+	"o̧": "o",
+	"Q̧": "Q",
+	"q̧": "q",
+	"U̧": "U",
+	"u̧": "u",
+	"X̧": "X",
+	"x̧": "x",
+	"Z̧": "Z",
+	"z̧": "z",
+	"й":"и",
+	"Й":"И",
+	"ё":"е",
+	"Ё":"Е",
+};
+
+var chars = Object.keys(characterMap).join('|');
+var allAccents = new RegExp(chars, 'g');
+var firstAccent = new RegExp(chars, '');
+
+function matcher(match) {
+	return characterMap[match];
+}
+
+var removeAccents = function(string) {
+	return string.replace(allAccents, matcher);
+};
+
+var hasAccents = function(string) {
+	return !!string.match(firstAccent);
+};
+
+module.exports = removeAccents;
+module.exports.has = hasAccents;
+module.exports.remove = removeAccents;
 
 
 /***/ }),
 
-/***/ 2652:
-/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
-
-/**
- * Copyright (c) 2013-present, Facebook, Inc.
+/***/ 8477:
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+/**
+ * @license React
+ * use-sync-external-store-shim.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
  *
  * This source code is licensed under the MIT license found in the
  * LICENSE file in the root directory of this source tree.
  */
-
-if (false) { var throwOnDirectAccess, ReactIs; } else {
-  // By explicitly using `prop-types` you are opting into new production behavior.
-  // http://fb.me/prop-types-in-prod
-  module.exports = __webpack_require__(5372)();
-}
-
-
-/***/ }),
-
-/***/ 9567:
-/***/ (function(module) {
-
-"use strict";
-/**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-
-
-var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
-
-module.exports = ReactPropTypesSecret;
+var e=__webpack_require__(1609);function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k="function"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}
+function r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u="undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;
 
 
 /***/ }),
 
-/***/ 5438:
-/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
+/***/ 422:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
 "use strict";
 
-var __extends = (this && this.__extends) || (function () {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
-    return function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-})();
-var __assign = (this && this.__assign) || Object.assign || function(t) {
-    for (var s, i = 1, n = arguments.length; i < n; i++) {
-        s = arguments[i];
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
-            t[p] = s[p];
-    }
-    return t;
-};
-var __rest = (this && this.__rest) || function (s, e) {
-    var t = {};
-    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-        t[p] = s[p];
-    if (s != null && typeof Object.getOwnPropertySymbols === "function")
-        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
-            t[p[i]] = s[p[i]];
-    return t;
-};
-exports.__esModule = true;
-var React = __webpack_require__(9196);
-var PropTypes = __webpack_require__(2652);
-var autosize = __webpack_require__(6411);
-var _getLineHeight = __webpack_require__(9894);
-var getLineHeight = _getLineHeight;
-var RESIZED = "autosize:resized";
-/**
- * A light replacement for built-in textarea component
- * which automaticaly adjusts its height to match the content
- */
-var TextareaAutosizeClass = /** @class */ (function (_super) {
-    __extends(TextareaAutosizeClass, _super);
-    function TextareaAutosizeClass() {
-        var _this = _super !== null && _super.apply(this, arguments) || this;
-        _this.state = {
-            lineHeight: null
-        };
-        _this.textarea = null;
-        _this.onResize = function (e) {
-            if (_this.props.onResize) {
-                _this.props.onResize(e);
-            }
-        };
-        _this.updateLineHeight = function () {
-            if (_this.textarea) {
-                _this.setState({
-                    lineHeight: getLineHeight(_this.textarea)
-                });
-            }
-        };
-        _this.onChange = function (e) {
-            var onChange = _this.props.onChange;
-            _this.currentValue = e.currentTarget.value;
-            onChange && onChange(e);
-        };
-        return _this;
-    }
-    TextareaAutosizeClass.prototype.componentDidMount = function () {
-        var _this = this;
-        var _a = this.props, maxRows = _a.maxRows, async = _a.async;
-        if (typeof maxRows === "number") {
-            this.updateLineHeight();
-        }
-        if (typeof maxRows === "number" || async) {
-            /*
-              the defer is needed to:
-                - force "autosize" to activate the scrollbar when this.props.maxRows is passed
-                - support StyledComponents (see #71)
-            */
-            setTimeout(function () { return _this.textarea && autosize(_this.textarea); });
-        }
-        else {
-            this.textarea && autosize(this.textarea);
-        }
-        if (this.textarea) {
-            this.textarea.addEventListener(RESIZED, this.onResize);
-        }
-    };
-    TextareaAutosizeClass.prototype.componentWillUnmount = function () {
-        if (this.textarea) {
-            this.textarea.removeEventListener(RESIZED, this.onResize);
-            autosize.destroy(this.textarea);
-        }
-    };
-    TextareaAutosizeClass.prototype.render = function () {
-        var _this = this;
-        var _a = this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, children = _b.children, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "innerRef", "children"]), lineHeight = _a.state.lineHeight;
-        var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null;
-        return (React.createElement("textarea", __assign({}, props, { onChange: this.onChange, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, ref: function (element) {
-                _this.textarea = element;
-                if (typeof _this.props.innerRef === 'function') {
-                    _this.props.innerRef(element);
-                }
-                else if (_this.props.innerRef) {
-                    _this.props.innerRef.current = element;
-                }
-            } }), children));
-    };
-    TextareaAutosizeClass.prototype.componentDidUpdate = function () {
-        this.textarea && autosize.update(this.textarea);
-    };
-    TextareaAutosizeClass.defaultProps = {
-        rows: 1,
-        async: false
-    };
-    TextareaAutosizeClass.propTypes = {
-        rows: PropTypes.number,
-        maxRows: PropTypes.number,
-        onResize: PropTypes.func,
-        innerRef: PropTypes.any,
-        async: PropTypes.bool
-    };
-    return TextareaAutosizeClass;
-}(React.Component));
-exports.TextareaAutosize = React.forwardRef(function (props, ref) {
-    return React.createElement(TextareaAutosizeClass, __assign({}, props, { innerRef: ref }));
-});
+
+if (true) {
+  module.exports = __webpack_require__(8477);
+} else {}
 
 
 /***/ }),
 
-/***/ 773:
-/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
-
-"use strict";
-var __webpack_unused_export__;
-
-__webpack_unused_export__ = true;
-var TextareaAutosize_1 = __webpack_require__(5438);
-exports.Z = TextareaAutosize_1.TextareaAutosize;
-
-
-/***/ }),
-
-/***/ 9196:
-/***/ (function(module) {
+/***/ 1609:
+/***/ ((module) => {
 
 "use strict";
 module.exports = window["React"];
@@ -948,7 +7296,7 @@
 /******/ 		};
 /******/ 	
 /******/ 		// Execute the module function
-/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
 /******/ 	
 /******/ 		// Return the exports of the module
 /******/ 		return module.exports;
@@ -956,165 +7304,844 @@
 /******/ 	
 /************************************************************************/
 /******/ 	/* webpack/runtime/compat get default export */
-/******/ 	!function() {
+/******/ 	(() => {
 /******/ 		// getDefaultExport function for compatibility with non-harmony modules
-/******/ 		__webpack_require__.n = function(module) {
+/******/ 		__webpack_require__.n = (module) => {
 /******/ 			var getter = module && module.__esModule ?
-/******/ 				function() { return module['default']; } :
-/******/ 				function() { return module; };
+/******/ 				() => (module['default']) :
+/******/ 				() => (module);
 /******/ 			__webpack_require__.d(getter, { a: getter });
 /******/ 			return getter;
 /******/ 		};
-/******/ 	}();
+/******/ 	})();
+/******/ 	
+/******/ 	/* webpack/runtime/create fake namespace object */
+/******/ 	(() => {
+/******/ 		var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
+/******/ 		var leafPrototypes;
+/******/ 		// create a fake namespace object
+/******/ 		// mode & 1: value is a module id, require it
+/******/ 		// mode & 2: merge all properties of value into the ns
+/******/ 		// mode & 4: return value when already ns object
+/******/ 		// mode & 16: return value when it's Promise-like
+/******/ 		// mode & 8|1: behave like require
+/******/ 		__webpack_require__.t = function(value, mode) {
+/******/ 			if(mode & 1) value = this(value);
+/******/ 			if(mode & 8) return value;
+/******/ 			if(typeof value === 'object' && value) {
+/******/ 				if((mode & 4) && value.__esModule) return value;
+/******/ 				if((mode & 16) && typeof value.then === 'function') return value;
+/******/ 			}
+/******/ 			var ns = Object.create(null);
+/******/ 			__webpack_require__.r(ns);
+/******/ 			var def = {};
+/******/ 			leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
+/******/ 			for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
+/******/ 				Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
+/******/ 			}
+/******/ 			def['default'] = () => (value);
+/******/ 			__webpack_require__.d(ns, def);
+/******/ 			return ns;
+/******/ 		};
+/******/ 	})();
 /******/ 	
 /******/ 	/* webpack/runtime/define property getters */
-/******/ 	!function() {
+/******/ 	(() => {
 /******/ 		// define getter functions for harmony exports
-/******/ 		__webpack_require__.d = function(exports, definition) {
+/******/ 		__webpack_require__.d = (exports, definition) => {
 /******/ 			for(var key in definition) {
 /******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
 /******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
 /******/ 				}
 /******/ 			}
 /******/ 		};
-/******/ 	}();
+/******/ 	})();
 /******/ 	
 /******/ 	/* webpack/runtime/hasOwnProperty shorthand */
-/******/ 	!function() {
-/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
-/******/ 	}();
+/******/ 	(() => {
+/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ 	})();
 /******/ 	
 /******/ 	/* webpack/runtime/make namespace object */
-/******/ 	!function() {
+/******/ 	(() => {
 /******/ 		// define __esModule on exports
-/******/ 		__webpack_require__.r = function(exports) {
+/******/ 		__webpack_require__.r = (exports) => {
 /******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
 /******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
 /******/ 			}
 /******/ 			Object.defineProperty(exports, '__esModule', { value: true });
 /******/ 		};
-/******/ 	}();
+/******/ 	})();
 /******/ 	
 /************************************************************************/
 var __webpack_exports__ = {};
 // This entry need to be wrapped in an IIFE because it need to be in strict mode.
-!function() {
+(() => {
 "use strict";
 // ESM COMPAT FLAG
 __webpack_require__.r(__webpack_exports__);
 
 // EXPORTS
 __webpack_require__.d(__webpack_exports__, {
-  "PluginMoreMenuItem": function() { return /* reexport */ plugin_more_menu_item; },
-  "PluginSidebar": function() { return /* reexport */ PluginSidebarEditSite; },
-  "PluginSidebarMoreMenuItem": function() { return /* reexport */ PluginSidebarMoreMenuItem; },
-  "__experimentalMainDashboardButton": function() { return /* reexport */ main_dashboard_button; },
-  "__experimentalNavigationToggle": function() { return /* reexport */ navigation_toggle; },
-  "initializeEditor": function() { return /* binding */ initializeEditor; },
-  "reinitializeEditor": function() { return /* binding */ reinitializeEditor; }
-});
-
-// NAMESPACE OBJECT: ./node_modules/@wordpress/interface/build-module/store/actions.js
+  PluginMoreMenuItem: () => (/* reexport */ PluginMoreMenuItem),
+  PluginSidebar: () => (/* reexport */ PluginSidebar),
+  PluginSidebarMoreMenuItem: () => (/* reexport */ PluginSidebarMoreMenuItem),
+  PluginTemplateSettingPanel: () => (/* reexport */ plugin_template_setting_panel),
+  initializeEditor: () => (/* binding */ initializeEditor),
+  reinitializeEditor: () => (/* binding */ reinitializeEditor),
+  store: () => (/* reexport */ store)
+});
+
+// NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/actions.js
 var actions_namespaceObject = {};
 __webpack_require__.r(actions_namespaceObject);
 __webpack_require__.d(actions_namespaceObject, {
-  "disableComplementaryArea": function() { return disableComplementaryArea; },
-  "enableComplementaryArea": function() { return enableComplementaryArea; },
-  "pinItem": function() { return pinItem; },
-  "setFeatureDefaults": function() { return setFeatureDefaults; },
-  "setFeatureValue": function() { return setFeatureValue; },
-  "toggleFeature": function() { return toggleFeature; },
-  "unpinItem": function() { return unpinItem; }
-});
-
-// NAMESPACE OBJECT: ./node_modules/@wordpress/interface/build-module/store/selectors.js
-var selectors_namespaceObject = {};
-__webpack_require__.r(selectors_namespaceObject);
-__webpack_require__.d(selectors_namespaceObject, {
-  "getActiveComplementaryArea": function() { return getActiveComplementaryArea; },
-  "isFeatureActive": function() { return isFeatureActive; },
-  "isItemPinned": function() { return isItemPinned; }
-});
-
-// NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/actions.js
-var store_actions_namespaceObject = {};
-__webpack_require__.r(store_actions_namespaceObject);
-__webpack_require__.d(store_actions_namespaceObject, {
-  "__experimentalSetPreviewDeviceType": function() { return __experimentalSetPreviewDeviceType; },
-  "addTemplate": function() { return addTemplate; },
-  "closeGeneralSidebar": function() { return closeGeneralSidebar; },
-  "openGeneralSidebar": function() { return openGeneralSidebar; },
-  "openNavigationPanelToMenu": function() { return openNavigationPanelToMenu; },
-  "removeTemplate": function() { return removeTemplate; },
-  "revertTemplate": function() { return revertTemplate; },
-  "setHomeTemplateId": function() { return setHomeTemplateId; },
-  "setIsInserterOpened": function() { return setIsInserterOpened; },
-  "setIsListViewOpened": function() { return setIsListViewOpened; },
-  "setIsNavigationPanelOpened": function() { return setIsNavigationPanelOpened; },
-  "setNavigationPanelActiveMenu": function() { return setNavigationPanelActiveMenu; },
-  "setPage": function() { return setPage; },
-  "setTemplate": function() { return setTemplate; },
-  "setTemplatePart": function() { return setTemplatePart; },
-  "switchEditorMode": function() { return switchEditorMode; },
-  "toggleFeature": function() { return actions_toggleFeature; },
-  "updateSettings": function() { return updateSettings; }
+  __experimentalSetPreviewDeviceType: () => (__experimentalSetPreviewDeviceType),
+  addTemplate: () => (addTemplate),
+  closeGeneralSidebar: () => (closeGeneralSidebar),
+  openGeneralSidebar: () => (openGeneralSidebar),
+  openNavigationPanelToMenu: () => (openNavigationPanelToMenu),
+  removeTemplate: () => (removeTemplate),
+  revertTemplate: () => (revertTemplate),
+  setEditedEntity: () => (setEditedEntity),
+  setEditedPostContext: () => (setEditedPostContext),
+  setHasPageContentFocus: () => (setHasPageContentFocus),
+  setHomeTemplateId: () => (setHomeTemplateId),
+  setIsInserterOpened: () => (setIsInserterOpened),
+  setIsListViewOpened: () => (setIsListViewOpened),
+  setIsNavigationPanelOpened: () => (setIsNavigationPanelOpened),
+  setIsSaveViewOpened: () => (setIsSaveViewOpened),
+  setNavigationMenu: () => (setNavigationMenu),
+  setNavigationPanelActiveMenu: () => (setNavigationPanelActiveMenu),
+  setPage: () => (setPage),
+  setTemplate: () => (setTemplate),
+  setTemplatePart: () => (setTemplatePart),
+  switchEditorMode: () => (switchEditorMode),
+  toggleDistractionFree: () => (toggleDistractionFree),
+  toggleFeature: () => (toggleFeature),
+  updateSettings: () => (updateSettings)
+});
+
+// NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/private-actions.js
+var private_actions_namespaceObject = {};
+__webpack_require__.r(private_actions_namespaceObject);
+__webpack_require__.d(private_actions_namespaceObject, {
+  setCanvasMode: () => (setCanvasMode),
+  setEditorCanvasContainerView: () => (setEditorCanvasContainerView)
 });
 
 // NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/selectors.js
-var store_selectors_namespaceObject = {};
-__webpack_require__.r(store_selectors_namespaceObject);
-__webpack_require__.d(store_selectors_namespaceObject, {
-  "__experimentalGetInsertionPoint": function() { return __experimentalGetInsertionPoint; },
-  "__experimentalGetPreviewDeviceType": function() { return __experimentalGetPreviewDeviceType; },
-  "__unstableGetPreference": function() { return __unstableGetPreference; },
-  "getCanUserCreateMedia": function() { return getCanUserCreateMedia; },
-  "getCurrentTemplateNavigationPanelSubMenu": function() { return getCurrentTemplateNavigationPanelSubMenu; },
-  "getCurrentTemplateTemplateParts": function() { return getCurrentTemplateTemplateParts; },
-  "getEditedPostId": function() { return getEditedPostId; },
-  "getEditedPostType": function() { return getEditedPostType; },
-  "getEditorMode": function() { return getEditorMode; },
-  "getHomeTemplateId": function() { return getHomeTemplateId; },
-  "getNavigationPanelActiveMenu": function() { return getNavigationPanelActiveMenu; },
-  "getPage": function() { return getPage; },
-  "getReusableBlocks": function() { return getReusableBlocks; },
-  "getSettings": function() { return getSettings; },
-  "isFeatureActive": function() { return selectors_isFeatureActive; },
-  "isInserterOpened": function() { return isInserterOpened; },
-  "isListViewOpened": function() { return isListViewOpened; },
-  "isNavigationOpened": function() { return isNavigationOpened; }
-});
-
-;// CONCATENATED MODULE: external ["wp","element"]
-var external_wp_element_namespaceObject = window["wp"]["element"];
+var selectors_namespaceObject = {};
+__webpack_require__.r(selectors_namespaceObject);
+__webpack_require__.d(selectors_namespaceObject, {
+  __experimentalGetInsertionPoint: () => (__experimentalGetInsertionPoint),
+  __experimentalGetPreviewDeviceType: () => (__experimentalGetPreviewDeviceType),
+  getCanUserCreateMedia: () => (getCanUserCreateMedia),
+  getCurrentTemplateNavigationPanelSubMenu: () => (getCurrentTemplateNavigationPanelSubMenu),
+  getCurrentTemplateTemplateParts: () => (getCurrentTemplateTemplateParts),
+  getEditedPostContext: () => (getEditedPostContext),
+  getEditedPostId: () => (getEditedPostId),
+  getEditedPostType: () => (getEditedPostType),
+  getEditorMode: () => (getEditorMode),
+  getHomeTemplateId: () => (getHomeTemplateId),
+  getNavigationPanelActiveMenu: () => (getNavigationPanelActiveMenu),
+  getPage: () => (getPage),
+  getReusableBlocks: () => (getReusableBlocks),
+  getSettings: () => (getSettings),
+  hasPageContentFocus: () => (hasPageContentFocus),
+  isFeatureActive: () => (isFeatureActive),
+  isInserterOpened: () => (isInserterOpened),
+  isListViewOpened: () => (isListViewOpened),
+  isNavigationOpened: () => (isNavigationOpened),
+  isPage: () => (isPage),
+  isSaveViewOpened: () => (isSaveViewOpened)
+});
+
+// NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/private-selectors.js
+var private_selectors_namespaceObject = {};
+__webpack_require__.r(private_selectors_namespaceObject);
+__webpack_require__.d(private_selectors_namespaceObject, {
+  getCanvasMode: () => (getCanvasMode),
+  getEditorCanvasContainerView: () => (getEditorCanvasContainerView)
+});
+
 ;// CONCATENATED MODULE: external ["wp","blocks"]
-var external_wp_blocks_namespaceObject = window["wp"]["blocks"];
+const external_wp_blocks_namespaceObject = window["wp"]["blocks"];
 ;// CONCATENATED MODULE: external ["wp","blockLibrary"]
-var external_wp_blockLibrary_namespaceObject = window["wp"]["blockLibrary"];
+const external_wp_blockLibrary_namespaceObject = window["wp"]["blockLibrary"];
 ;// CONCATENATED MODULE: external ["wp","data"]
-var external_wp_data_namespaceObject = window["wp"]["data"];
-;// CONCATENATED MODULE: external ["wp","coreData"]
-var external_wp_coreData_namespaceObject = window["wp"]["coreData"];
+const external_wp_data_namespaceObject = window["wp"]["data"];
+;// CONCATENATED MODULE: external ["wp","deprecated"]
+const external_wp_deprecated_namespaceObject = window["wp"]["deprecated"];
+var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject);
+;// CONCATENATED MODULE: external ["wp","element"]
+const external_wp_element_namespaceObject = window["wp"]["element"];
 ;// CONCATENATED MODULE: external ["wp","editor"]
-var external_wp_editor_namespaceObject = window["wp"]["editor"];
+const external_wp_editor_namespaceObject = window["wp"]["editor"];
 ;// CONCATENATED MODULE: external ["wp","preferences"]
-var external_wp_preferences_namespaceObject = window["wp"]["preferences"];
+const external_wp_preferences_namespaceObject = window["wp"]["preferences"];
+;// CONCATENATED MODULE: external ["wp","widgets"]
+const external_wp_widgets_namespaceObject = window["wp"]["widgets"];
+;// CONCATENATED MODULE: external ["wp","hooks"]
+const external_wp_hooks_namespaceObject = window["wp"]["hooks"];
+;// CONCATENATED MODULE: external ["wp","compose"]
+const external_wp_compose_namespaceObject = window["wp"]["compose"];
+;// CONCATENATED MODULE: external ["wp","blockEditor"]
+const external_wp_blockEditor_namespaceObject = window["wp"]["blockEditor"];
+;// CONCATENATED MODULE: external ["wp","components"]
+const external_wp_components_namespaceObject = window["wp"]["components"];
 ;// CONCATENATED MODULE: external ["wp","i18n"]
-var external_wp_i18n_namespaceObject = window["wp"]["i18n"];
-;// CONCATENATED MODULE: external ["wp","viewport"]
-var external_wp_viewport_namespaceObject = window["wp"]["viewport"];
-;// CONCATENATED MODULE: external ["wp","url"]
-var external_wp_url_namespaceObject = window["wp"]["url"];
-;// CONCATENATED MODULE: external ["wp","hooks"]
-var external_wp_hooks_namespaceObject = window["wp"]["hooks"];
-;// CONCATENATED MODULE: external ["wp","mediaUtils"]
-var external_wp_mediaUtils_namespaceObject = window["wp"]["mediaUtils"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/hooks/components.js
-/**
- * WordPress dependencies
- */
-
-
-(0,external_wp_hooks_namespaceObject.addFilter)('editor.MediaUpload', 'core/edit-site/components/media-upload', () => external_wp_mediaUtils_namespaceObject.MediaUpload);
+const external_wp_i18n_namespaceObject = window["wp"]["i18n"];
+;// CONCATENATED MODULE: external ["wp","notices"]
+const external_wp_notices_namespaceObject = window["wp"]["notices"];
+;// CONCATENATED MODULE: external ["wp","coreData"]
+const external_wp_coreData_namespaceObject = window["wp"]["coreData"];
+;// CONCATENATED MODULE: ./node_modules/colord/index.mjs
+var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return"string"==typeof r?r.length>0:"number"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?"0"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,colord_p=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,v=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,m=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(t){var n=l.exec(t)||colord_p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u="deg"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},"hsl"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},"rgb"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},"hsl"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},"hsv"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return"string"==typeof r?N(r.trim(),y.string):"object"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},colord_j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):"","#"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?"rgba("+t+", "+n+", "+e+", "+u+")":"rgb("+t+", "+n+", "+e+")";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?"hsla("+t+", "+n+"%, "+e+"%, "+u+")":"hsl("+t+", "+n+"%, "+e+"%)";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return"number"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return"number"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof colord_j?r:new colord_j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(colord_j,y),S.push(r))})},E=function(){return new colord_j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};
+
+;// CONCATENATED MODULE: ./node_modules/colord/plugins/a11y.mjs
+var a11y_o=function(o){var t=o/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},a11y_t=function(t){return.2126*a11y_o(t.r)+.7152*a11y_o(t.g)+.0722*a11y_o(t.b)};/* harmony default export */ function a11y(o){o.prototype.luminance=function(){return o=a11y_t(this.rgba),void 0===(r=2)&&(r=0),void 0===n&&(n=Math.pow(10,r)),Math.round(n*o)/n+0;var o,r,n},o.prototype.contrast=function(r){void 0===r&&(r="#FFF");var n,a,i,e,v,u,d,c=r instanceof o?r:new o(r);return e=this.rgba,v=c.toRgb(),u=a11y_t(e),d=a11y_t(v),n=u>d?(u+.05)/(d+.05):(d+.05)/(u+.05),void 0===(a=2)&&(a=0),void 0===i&&(i=Math.pow(10,a)),Math.floor(i*n)/i+0},o.prototype.isReadable=function(o,t){return void 0===o&&(o="#FFF"),void 0===t&&(t={}),this.contrast(o)>=(e=void 0===(i=(r=t).size)?"normal":i,"AAA"===(a=void 0===(n=r.level)?"AA":n)&&"normal"===e?7:"AA"===a&&"large"===e?3:4.5);var r,n,a,i,e}}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/clone-deep.js
+/**
+ * Makes a copy of an object without storing any references to the original object.
+ * @param {Object} object
+ * @return {Object} The cloned object.
+ */
+function cloneDeep(object) {
+  return !object ? {} : JSON.parse(JSON.stringify(object));
+}
+
+;// CONCATENATED MODULE: external ["wp","privateApis"]
+const external_wp_privateApis_namespaceObject = window["wp"]["privateApis"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/lock-unlock.js
+/**
+ * WordPress dependencies
+ */
+
+const {
+  lock,
+  unlock: lock_unlock_unlock
+} = (0,external_wp_privateApis_namespaceObject.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.', '@wordpress/edit-site');
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  GlobalStylesContext
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const {
+  mergeBaseAndUserConfigs
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+
+/**
+ * Removes all instances of a property from an object.
+ *
+ * @param {Object} object   The object to remove the property from.
+ * @param {string} property The property to remove.
+ * @return {Object} The modified object.
+ */
+function removePropertyFromObject(object, property) {
+  if (!property || typeof property !== 'string') {
+    return object;
+  }
+  if (typeof object !== 'object' || !object || !Object.keys(object).length) {
+    return object;
+  }
+  for (const key in object) {
+    if (key === property) {
+      delete object[key];
+    } else if (typeof object[key] === 'object') {
+      removePropertyFromObject(object[key], property);
+    }
+  }
+  return object;
+}
+
+/**
+ * Fetches the current theme style variations that contain only the specified property
+ * and merges them with the user config.
+ *
+ * @param {Object} props          Object of hook args.
+ * @param {string} props.property The property to filter by.
+ * @return {Object[]|*} The merged object.
+ */
+function useCurrentMergeThemeStyleVariationsWithUserConfig({
+  property
+}) {
+  const {
+    variationsFromTheme
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const _variationsFromTheme = select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations();
+    return {
+      variationsFromTheme: _variationsFromTheme || []
+    };
+  }, []);
+  const {
+    user: userVariation
+  } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
+  return (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const clonedUserVariation = cloneDeep(userVariation);
+
+    // Get user variation and remove the settings for the given property.
+    const userVariationWithoutProperty = removePropertyFromObject(clonedUserVariation, property);
+    userVariationWithoutProperty.title = (0,external_wp_i18n_namespaceObject.__)('Default');
+    const variationsWithSinglePropertyAndBase = variationsFromTheme.filter(variation => {
+      return isVariationWithSingleProperty(variation, property);
+    }).map(variation => {
+      return mergeBaseAndUserConfigs(userVariationWithoutProperty, variation);
+    });
+    return [userVariationWithoutProperty, ...variationsWithSinglePropertyAndBase];
+  }, [property, userVariation, variationsFromTheme]);
+}
+
+/**
+ * Returns a new object, with properties specified in `property`,
+ * maintain the original object tree structure.
+ * The function is recursive, so it will perform a deep search for the given property.
+ * E.g., the function will return `{ a: { b: { c: { test: 1 } } } }` if the property is `test`.
+ *
+ * @param {Object} object   The object to filter
+ * @param {Object} property The property to filter by
+ * @return {Object} The merged object.
+ */
+const filterObjectByProperty = (object, property) => {
+  if (!object) {
+    return {};
+  }
+  const newObject = {};
+  Object.keys(object).forEach(key => {
+    if (key === property) {
+      newObject[key] = object[key];
+    } else if (typeof object[key] === 'object') {
+      const newFilter = filterObjectByProperty(object[key], property);
+      if (Object.keys(newFilter).length) {
+        newObject[key] = newFilter;
+      }
+    }
+  });
+  return newObject;
+};
+
+/**
+ * Compares a style variation to the same variation filtered by a single property.
+ * Returns true if the variation contains only the property specified.
+ *
+ * @param {Object} variation The variation to compare.
+ * @param {string} property  The property to compare.
+ * @return {boolean} Whether the variation contains only a single property.
+ */
+function isVariationWithSingleProperty(variation, property) {
+  const variationWithProperty = filterObjectByProperty(cloneDeep(variation), property);
+  return JSON.stringify(variationWithProperty?.styles) === JSON.stringify(variation?.styles) && JSON.stringify(variationWithProperty?.settings) === JSON.stringify(variation?.settings);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/hooks.js
+/**
+ * External dependencies
+ */
+
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  useGlobalSetting,
+  useGlobalStyle
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+
+// Enable colord's a11y plugin.
+k([a11y]);
+function useColorRandomizer(name) {
+  const [themeColors, setThemeColors] = useGlobalSetting('color.palette.theme', name);
+  function randomizeColors() {
+    /* eslint-disable no-restricted-syntax */
+    const randomRotationValue = Math.floor(Math.random() * 225);
+    /* eslint-enable no-restricted-syntax */
+
+    const newColors = themeColors.map(colorObject => {
+      const {
+        color
+      } = colorObject;
+      const newColor = w(color).rotate(randomRotationValue).toHex();
+      return {
+        ...colorObject,
+        color: newColor
+      };
+    });
+    setThemeColors(newColors);
+  }
+  return window.__experimentalEnableColorRandomizer ? [randomizeColors] : [];
+}
+function useStylesPreviewColors() {
+  const [textColor = 'black'] = useGlobalStyle('color.text');
+  const [backgroundColor = 'white'] = useGlobalStyle('color.background');
+  const [headingColor = textColor] = useGlobalStyle('elements.h1.color.text');
+  const [linkColor = headingColor] = useGlobalStyle('elements.link.color.text');
+  const [buttonBackgroundColor = linkColor] = useGlobalStyle('elements.button.color.background');
+  const [coreColors] = useGlobalSetting('color.palette.core');
+  const [themeColors] = useGlobalSetting('color.palette.theme');
+  const [customColors] = useGlobalSetting('color.palette.custom');
+  const paletteColors = (themeColors !== null && themeColors !== void 0 ? themeColors : []).concat(customColors !== null && customColors !== void 0 ? customColors : []).concat(coreColors !== null && coreColors !== void 0 ? coreColors : []);
+  const textColorObject = paletteColors.filter(({
+    color
+  }) => color === textColor);
+  const buttonBackgroundColorObject = paletteColors.filter(({
+    color
+  }) => color === buttonBackgroundColor);
+  const highlightedColors = textColorObject.concat(buttonBackgroundColorObject).concat(paletteColors).filter(
+  // we exclude these background color because it is already visible in the preview.
+  ({
+    color
+  }) => color !== backgroundColor).slice(0, 2);
+  return {
+    paletteColors,
+    highlightedColors
+  };
+}
+function useSupportedStyles(name, element) {
+  const {
+    supportedPanels
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    return {
+      supportedPanels: lock_unlock_unlock(select(external_wp_blocks_namespaceObject.store)).getSupportedStyles(name, element)
+    };
+  }, [name, element]);
+  return supportedPanels;
+}
+function useColorVariations() {
+  const colorVariations = useCurrentMergeThemeStyleVariationsWithUserConfig({
+    property: 'color'
+  });
+  /*
+   * Filter out variations with no settings or styles.
+   */
+  return colorVariations?.length ? colorVariations.filter(variation => {
+    const {
+      settings,
+      styles,
+      title
+    } = variation;
+    return title === (0,external_wp_i18n_namespaceObject.__)('Default') ||
+    // Always preseve the default variation.
+    Object.keys(settings).length > 0 || Object.keys(styles).length > 0;
+  }) : [];
+}
+function useTypographyVariations() {
+  const typographyVariations = useCurrentMergeThemeStyleVariationsWithUserConfig({
+    property: 'typography'
+  });
+  /*
+   * Filter out variations with no settings or styles.
+   */
+  return typographyVariations?.length ? typographyVariations.filter(variation => {
+    const {
+      settings,
+      styles,
+      title
+    } = variation;
+    return title === (0,external_wp_i18n_namespaceObject.__)('Default') ||
+    // Always preseve the default variation.
+    Object.keys(settings).length > 0 || Object.keys(styles).length > 0;
+  }) : [];
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/set-nested-value.js
+/**
+ * Sets the value at path of object.
+ * If a portion of path doesn’t exist, it’s created.
+ * Arrays are created for missing index properties while objects are created
+ * for all other missing properties.
+ *
+ * This function intentionally mutates the input object.
+ *
+ * Inspired by _.set().
+ *
+ * @see https://lodash.com/docs/4.17.15#set
+ *
+ * @todo Needs to be deduplicated with its copy in `@wordpress/core-data`.
+ *
+ * @param {Object} object Object to modify
+ * @param {Array}  path   Path of the property to set.
+ * @param {*}      value  Value to set.
+ */
+function setNestedValue(object, path, value) {
+  if (!object || typeof object !== 'object') {
+    return object;
+  }
+  path.reduce((acc, key, idx) => {
+    if (acc[key] === undefined) {
+      if (Number.isInteger(path[idx + 1])) {
+        acc[key] = [];
+      } else {
+        acc[key] = {};
+      }
+    }
+    if (idx === path.length - 1) {
+      acc[key] = value;
+    }
+    return acc[key];
+  }, object);
+  return object;
+}
+
+;// CONCATENATED MODULE: external "ReactJSXRuntime"
+const external_ReactJSXRuntime_namespaceObject = window["ReactJSXRuntime"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/hooks/push-changes-to-global-styles/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  cleanEmptyObject,
+  GlobalStylesContext: push_changes_to_global_styles_GlobalStylesContext
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+
+// Block Gap is a special case and isn't defined within the blocks
+// style properties config. We'll add it here to allow it to be pushed
+// to global styles as well.
+const STYLE_PROPERTY = {
+  ...external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY,
+  blockGap: {
+    value: ['spacing', 'blockGap']
+  }
+};
+
+// TODO: Temporary duplication of constant in @wordpress/block-editor. Can be
+// removed by moving PushChangesToGlobalStylesControl to
+// @wordpress/block-editor.
+const STYLE_PATH_TO_CSS_VAR_INFIX = {
+  'border.color': 'color',
+  'color.background': 'color',
+  'color.text': 'color',
+  'elements.link.color.text': 'color',
+  'elements.link.:hover.color.text': 'color',
+  'elements.link.typography.fontFamily': 'font-family',
+  'elements.link.typography.fontSize': 'font-size',
+  'elements.button.color.text': 'color',
+  'elements.button.color.background': 'color',
+  'elements.button.typography.fontFamily': 'font-family',
+  'elements.button.typography.fontSize': 'font-size',
+  'elements.caption.color.text': 'color',
+  'elements.heading.color': 'color',
+  'elements.heading.color.background': 'color',
+  'elements.heading.typography.fontFamily': 'font-family',
+  'elements.heading.gradient': 'gradient',
+  'elements.heading.color.gradient': 'gradient',
+  'elements.h1.color': 'color',
+  'elements.h1.color.background': 'color',
+  'elements.h1.typography.fontFamily': 'font-family',
+  'elements.h1.color.gradient': 'gradient',
+  'elements.h2.color': 'color',
+  'elements.h2.color.background': 'color',
+  'elements.h2.typography.fontFamily': 'font-family',
+  'elements.h2.color.gradient': 'gradient',
+  'elements.h3.color': 'color',
+  'elements.h3.color.background': 'color',
+  'elements.h3.typography.fontFamily': 'font-family',
+  'elements.h3.color.gradient': 'gradient',
+  'elements.h4.color': 'color',
+  'elements.h4.color.background': 'color',
+  'elements.h4.typography.fontFamily': 'font-family',
+  'elements.h4.color.gradient': 'gradient',
+  'elements.h5.color': 'color',
+  'elements.h5.color.background': 'color',
+  'elements.h5.typography.fontFamily': 'font-family',
+  'elements.h5.color.gradient': 'gradient',
+  'elements.h6.color': 'color',
+  'elements.h6.color.background': 'color',
+  'elements.h6.typography.fontFamily': 'font-family',
+  'elements.h6.color.gradient': 'gradient',
+  'color.gradient': 'gradient',
+  blockGap: 'spacing',
+  'typography.fontSize': 'font-size',
+  'typography.fontFamily': 'font-family'
+};
+
+// TODO: Temporary duplication of constant in @wordpress/block-editor. Can be
+// removed by moving PushChangesToGlobalStylesControl to
+// @wordpress/block-editor.
+const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {
+  'border.color': 'borderColor',
+  'color.background': 'backgroundColor',
+  'color.text': 'textColor',
+  'color.gradient': 'gradient',
+  'typography.fontSize': 'fontSize',
+  'typography.fontFamily': 'fontFamily'
+};
+const SUPPORTED_STYLES = ['border', 'color', 'spacing', 'typography'];
+const getValueFromObjectPath = (object, path) => {
+  let value = object;
+  path.forEach(fieldName => {
+    value = value?.[fieldName];
+  });
+  return value;
+};
+const flatBorderProperties = ['borderColor', 'borderWidth', 'borderStyle'];
+const sides = ['top', 'right', 'bottom', 'left'];
+function getBorderStyleChanges(border, presetColor, userStyle) {
+  if (!border && !presetColor) {
+    return [];
+  }
+  const changes = [...getFallbackBorderStyleChange('top', border, userStyle), ...getFallbackBorderStyleChange('right', border, userStyle), ...getFallbackBorderStyleChange('bottom', border, userStyle), ...getFallbackBorderStyleChange('left', border, userStyle)];
+
+  // Handle a flat border i.e. all sides the same, CSS shorthand.
+  const {
+    color: customColor,
+    style,
+    width
+  } = border || {};
+  const hasColorOrWidth = presetColor || customColor || width;
+  if (hasColorOrWidth && !style) {
+    // Global Styles need individual side configurations to overcome
+    // theme.json configurations which are per side as well.
+    sides.forEach(side => {
+      // Only add fallback border-style if global styles don't already
+      // have something set.
+      if (!userStyle?.[side]?.style) {
+        changes.push({
+          path: ['border', side, 'style'],
+          value: 'solid'
+        });
+      }
+    });
+  }
+  return changes;
+}
+function getFallbackBorderStyleChange(side, border, globalBorderStyle) {
+  if (!border?.[side] || globalBorderStyle?.[side]?.style) {
+    return [];
+  }
+  const {
+    color,
+    style,
+    width
+  } = border[side];
+  const hasColorOrWidth = color || width;
+  if (!hasColorOrWidth || style) {
+    return [];
+  }
+  return [{
+    path: ['border', side, 'style'],
+    value: 'solid'
+  }];
+}
+function useChangesToPush(name, attributes, userConfig) {
+  const supports = useSupportedStyles(name);
+  const blockUserConfig = userConfig?.styles?.blocks?.[name];
+  return (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const changes = supports.flatMap(key => {
+      if (!STYLE_PROPERTY[key]) {
+        return [];
+      }
+      const {
+        value: path
+      } = STYLE_PROPERTY[key];
+      const presetAttributeKey = path.join('.');
+      const presetAttributeValue = attributes[STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE[presetAttributeKey]];
+      const value = presetAttributeValue ? `var:preset|${STYLE_PATH_TO_CSS_VAR_INFIX[presetAttributeKey]}|${presetAttributeValue}` : getValueFromObjectPath(attributes.style, path);
+
+      // Links only have a single support entry but have two element
+      // style properties, color and hover color. The following check
+      // will add the hover color to the changes if required.
+      if (key === 'linkColor') {
+        const linkChanges = value ? [{
+          path,
+          value
+        }] : [];
+        const hoverPath = ['elements', 'link', ':hover', 'color', 'text'];
+        const hoverValue = getValueFromObjectPath(attributes.style, hoverPath);
+        if (hoverValue) {
+          linkChanges.push({
+            path: hoverPath,
+            value: hoverValue
+          });
+        }
+        return linkChanges;
+      }
+
+      // The shorthand border styles can't be mapped directly as global
+      // styles requires longhand config.
+      if (flatBorderProperties.includes(key) && value) {
+        // The shorthand config path is included to clear the block attribute.
+        const borderChanges = [{
+          path,
+          value
+        }];
+        sides.forEach(side => {
+          const currentPath = [...path];
+          currentPath.splice(-1, 0, side);
+          borderChanges.push({
+            path: currentPath,
+            value
+          });
+        });
+        return borderChanges;
+      }
+      return value ? [{
+        path,
+        value
+      }] : [];
+    });
+
+    // To ensure display of a visible border, global styles require a
+    // default border style if a border color or width is present.
+    getBorderStyleChanges(attributes.style?.border, attributes.borderColor, blockUserConfig?.border).forEach(change => changes.push(change));
+    return changes;
+  }, [supports, attributes, blockUserConfig]);
+}
+function PushChangesToGlobalStylesControl({
+  name,
+  attributes,
+  setAttributes
+}) {
+  const {
+    user: userConfig,
+    setUserConfig
+  } = (0,external_wp_element_namespaceObject.useContext)(push_changes_to_global_styles_GlobalStylesContext);
+  const changes = useChangesToPush(name, attributes, userConfig);
+  const {
+    __unstableMarkNextChangeAsNotPersistent
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
+  const {
+    createSuccessNotice
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
+  const pushChanges = (0,external_wp_element_namespaceObject.useCallback)(() => {
+    if (changes.length === 0) {
+      return;
+    }
+    if (changes.length > 0) {
+      const {
+        style: blockStyles
+      } = attributes;
+      const newBlockStyles = cloneDeep(blockStyles);
+      const newUserConfig = cloneDeep(userConfig);
+      for (const {
+        path,
+        value
+      } of changes) {
+        setNestedValue(newBlockStyles, path, undefined);
+        setNestedValue(newUserConfig, ['styles', 'blocks', name, ...path], value);
+      }
+      const newBlockAttributes = {
+        borderColor: undefined,
+        backgroundColor: undefined,
+        textColor: undefined,
+        gradient: undefined,
+        fontSize: undefined,
+        fontFamily: undefined,
+        style: cleanEmptyObject(newBlockStyles)
+      };
+
+      // @wordpress/core-data doesn't support editing multiple entity types in
+      // a single undo level. So for now, we disable @wordpress/core-data undo
+      // tracking and implement our own Undo button in the snackbar
+      // notification.
+      __unstableMarkNextChangeAsNotPersistent();
+      setAttributes(newBlockAttributes);
+      setUserConfig(newUserConfig, {
+        undoIgnore: true
+      });
+      createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: Title of the block e.g. 'Heading'.
+      (0,external_wp_i18n_namespaceObject.__)('%s styles applied.'), (0,external_wp_blocks_namespaceObject.getBlockType)(name).title), {
+        type: 'snackbar',
+        actions: [{
+          label: (0,external_wp_i18n_namespaceObject.__)('Undo'),
+          onClick() {
+            __unstableMarkNextChangeAsNotPersistent();
+            setAttributes(attributes);
+            setUserConfig(userConfig, {
+              undoIgnore: true
+            });
+          }
+        }]
+      });
+    }
+  }, [__unstableMarkNextChangeAsNotPersistent, attributes, changes, createSuccessNotice, name, setAttributes, setUserConfig, userConfig]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.BaseControl, {
+    className: "edit-site-push-changes-to-global-styles-control",
+    help: (0,external_wp_i18n_namespaceObject.sprintf)(
+    // translators: %s: Title of the block e.g. 'Heading'.
+    (0,external_wp_i18n_namespaceObject.__)('Apply this block’s typography, spacing, dimensions, and color styles to all %s blocks.'), (0,external_wp_blocks_namespaceObject.getBlockType)(name).title),
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.BaseControl.VisualLabel, {
+      children: (0,external_wp_i18n_namespaceObject.__)('Styles')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+      __next40pxDefaultSize: true,
+      variant: "secondary",
+      __experimentalIsFocusable: true,
+      disabled: changes.length === 0,
+      onClick: pushChanges,
+      children: (0,external_wp_i18n_namespaceObject.__)('Apply globally')
+    })]
+  });
+}
+function PushChangesToGlobalStyles(props) {
+  const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)();
+  const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.is_block_theme, []);
+  const supportsStyles = SUPPORTED_STYLES.some(feature => (0,external_wp_blocks_namespaceObject.hasBlockSupport)(props.name, feature));
+  const isDisplayed = blockEditingMode === 'default' && supportsStyles && isBlockBasedTheme;
+  if (!isDisplayed) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorAdvancedControls, {
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PushChangesToGlobalStylesControl, {
+      ...props
+    })
+  });
+}
+const withPushChangesToGlobalStyles = (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(BlockEdit => props => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+  children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockEdit, {
+    ...props
+  }), props.isSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PushChangesToGlobalStyles, {
+    ...props
+  })]
+}));
+(0,external_wp_hooks_namespaceObject.addFilter)('editor.BlockEdit', 'core/edit-site/push-changes-to-global-styles', withPushChangesToGlobalStyles);
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/hooks/index.js
 /**
@@ -1122,98 +8149,12 @@
  */
 
 
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/constants.js
-/**
- * The identifier for the data store.
- *
- * @type {string}
- */
-const STORE_NAME = 'core/edit-site';
-const TEMPLATE_PART_AREA_HEADER = 'header';
-const TEMPLATE_PART_AREA_FOOTER = 'footer';
-const TEMPLATE_PART_AREA_SIDEBAR = 'sidebar';
-const TEMPLATE_PART_AREA_GENERAL = 'uncategorized';
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-panel/constants.js
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-const TEMPLATES_PRIMARY = ['index', 'singular', 'archive', 'single', 'page', 'home', '404', 'search'];
-const TEMPLATES_SECONDARY = ['author', 'category', 'taxonomy', 'date', 'tag', 'attachment', 'single-post', 'front-page'];
-const TEMPLATES_TOP_LEVEL = [...TEMPLATES_PRIMARY, ...TEMPLATES_SECONDARY];
-const TEMPLATES_GENERAL = ['page-home'];
-const TEMPLATES_POSTS_PREFIXES = ['post-', 'author-', 'single-post-', 'tag-'];
-const TEMPLATES_PAGES_PREFIXES = ['page-'];
-const TEMPLATE_OVERRIDES = {
-  singular: ['single', 'page'],
-  index: ['archive', '404', 'search', 'singular', 'home'],
-  home: ['front-page']
-};
-const MENU_ROOT = 'root';
-const MENU_TEMPLATE_PARTS = 'template-parts';
-const MENU_TEMPLATES = 'templates';
-const MENU_TEMPLATES_GENERAL = 'templates-general';
-const MENU_TEMPLATES_PAGES = 'templates-pages';
-const MENU_TEMPLATES_POSTS = 'templates-posts';
-const MENU_TEMPLATES_UNUSED = 'templates-unused';
-const MENU_TEMPLATE_PARTS_HEADERS = 'template-parts-headers';
-const MENU_TEMPLATE_PARTS_FOOTERS = 'template-parts-footers';
-const MENU_TEMPLATE_PARTS_SIDEBARS = 'template-parts-sidebars';
-const MENU_TEMPLATE_PARTS_GENERAL = 'template-parts-general';
-const TEMPLATE_PARTS_SUB_MENUS = [{
-  area: TEMPLATE_PART_AREA_HEADER,
-  menu: MENU_TEMPLATE_PARTS_HEADERS,
-  title: (0,external_wp_i18n_namespaceObject.__)('headers')
-}, {
-  area: TEMPLATE_PART_AREA_FOOTER,
-  menu: MENU_TEMPLATE_PARTS_FOOTERS,
-  title: (0,external_wp_i18n_namespaceObject.__)('footers')
-}, {
-  area: TEMPLATE_PART_AREA_SIDEBAR,
-  menu: MENU_TEMPLATE_PARTS_SIDEBARS,
-  title: (0,external_wp_i18n_namespaceObject.__)('sidebars')
-}, {
-  area: TEMPLATE_PART_AREA_GENERAL,
-  menu: MENU_TEMPLATE_PARTS_GENERAL,
-  title: (0,external_wp_i18n_namespaceObject.__)('general')
-}];
-
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/reducer.js
 /**
  * WordPress dependencies
  */
 
-/**
- * Internal dependencies
- */
-
-
-/**
- * Reducer returning the editing canvas device type.
- *
- * @param {Object} state  Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {Object} Updated state.
- */
-
-function deviceType() {
-  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Desktop';
-  let action = arguments.length > 1 ? arguments[1] : undefined;
-
-  switch (action.type) {
-    case 'SET_PREVIEW_DEVICE_TYPE':
-      return action.deviceType;
-  }
-
-  return state;
-}
+
 /**
  * Reducer returning the settings.
  *
@@ -1222,20 +8163,17 @@
  *
  * @return {Object} Updated state.
  */
-
-function settings() {
-  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  let action = arguments.length > 1 ? arguments[1] : undefined;
-
+function settings(state = {}, action) {
   switch (action.type) {
     case 'UPDATE_SETTINGS':
-      return { ...state,
+      return {
+        ...state,
         ...action.settings
       };
   }
-
   return state;
 }
+
 /**
  * Reducer keeping track of the currently edited Post Type,
  * Post Id and the context provided to fill the content of the block editor.
@@ -1245,1436 +8183,130 @@
  *
  * @return {Object} Updated state.
  */
-
-function editedPost() {
-  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  let action = arguments.length > 1 ? arguments[1] : undefined;
-
+function editedPost(state = {}, action) {
   switch (action.type) {
-    case 'SET_TEMPLATE':
-    case 'SET_PAGE':
+    case 'SET_EDITED_POST':
       return {
-        type: 'wp_template',
-        id: action.templateId,
-        page: action.page
+        postType: action.postType,
+        id: action.id,
+        context: action.context
       };
-
-    case 'SET_TEMPLATE_PART':
+    case 'SET_EDITED_POST_CONTEXT':
       return {
-        type: 'wp_template_part',
-        id: action.templatePartId
+        ...state,
+        context: action.context
       };
   }
-
   return state;
 }
-/**
- * Reducer for information about the site's homepage.
- *
- * @param {Object} state  Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {Object} Updated state.
- */
-
-function homeTemplateId(state, action) {
-  switch (action.type) {
-    case 'SET_HOME_TEMPLATE':
-      return action.homeTemplateId;
-  }
-
-  return state;
-}
-/**
- * Reducer for information about the navigation panel, such as its active menu
- * and whether it should be opened or closed.
- *
- * Note: this reducer interacts with the inserter and list view panels reducers
- * to make sure that only one of the three panels is open at the same time.
+
+/**
+ * Reducer to set the save view panel open or closed.
  *
  * @param {Object} state  Current state.
  * @param {Object} action Dispatched action.
  */
-
-function navigationPanel() {
-  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
-    menu: MENU_ROOT,
-    isOpen: false
-  };
-  let action = arguments.length > 1 ? arguments[1] : undefined;
-
+function saveViewPanel(state = false, action) {
   switch (action.type) {
-    case 'SET_NAVIGATION_PANEL_ACTIVE_MENU':
-      return { ...state,
-        menu: action.menu
-      };
-
-    case 'OPEN_NAVIGATION_PANEL_TO_MENU':
-      return { ...state,
-        isOpen: true,
-        menu: action.menu
-      };
-
-    case 'SET_IS_NAVIGATION_PANEL_OPENED':
-      return { ...state,
-        menu: !action.isOpen ? MENU_ROOT : state.menu,
-        // Set menu to root when closing panel.
-        isOpen: action.isOpen
-      };
-
-    case 'SET_IS_LIST_VIEW_OPENED':
-      return { ...state,
-        menu: state.isOpen && action.isOpen ? MENU_ROOT : state.menu,
-        // Set menu to root when closing panel.
-        isOpen: action.isOpen ? false : state.isOpen
-      };
-
-    case 'SET_IS_INSERTER_OPENED':
-      return { ...state,
-        menu: state.isOpen && action.value ? MENU_ROOT : state.menu,
-        // Set menu to root when closing panel.
-        isOpen: action.value ? false : state.isOpen
-      };
-  }
-
+    case 'SET_IS_SAVE_VIEW_OPENED':
+      return action.isOpen;
+    case 'SET_CANVAS_MODE':
+      return false;
+  }
   return state;
 }
-/**
- * Reducer to set the block inserter panel open or closed.
- *
- * Note: this reducer interacts with the navigation and list view panels reducers
- * to make sure that only one of the three panels is open at the same time.
- *
- * @param {boolean|Object} state  Current state.
- * @param {Object}         action Dispatched action.
- */
-
-function blockInserterPanel() {
-  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
-  let action = arguments.length > 1 ? arguments[1] : undefined;
-
-  switch (action.type) {
-    case 'OPEN_NAVIGATION_PANEL_TO_MENU':
-      return false;
-
-    case 'SET_IS_NAVIGATION_PANEL_OPENED':
-    case 'SET_IS_LIST_VIEW_OPENED':
-      return action.isOpen ? false : state;
-
-    case 'SET_IS_INSERTER_OPENED':
-      return action.value;
-  }
-
-  return state;
-}
-/**
- * Reducer to set the list view panel open or closed.
- *
- * Note: this reducer interacts with the navigation and inserter panels reducers
- * to make sure that only one of the three panels is open at the same time.
+
+/**
+ * Reducer used to track the site editor canvas mode (edit or view).
  *
  * @param {Object} state  Current state.
  * @param {Object} action Dispatched action.
  */
-
-function listViewPanel() {
-  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
-  let action = arguments.length > 1 ? arguments[1] : undefined;
-
+function canvasMode(state = 'init', action) {
   switch (action.type) {
-    case 'OPEN_NAVIGATION_PANEL_TO_MENU':
-      return false;
-
-    case 'SET_IS_NAVIGATION_PANEL_OPENED':
-      return action.isOpen ? false : state;
-
-    case 'SET_IS_INSERTER_OPENED':
-      return action.value ? false : state;
-
-    case 'SET_IS_LIST_VIEW_OPENED':
-      return action.isOpen;
-  }
-
+    case 'SET_CANVAS_MODE':
+      return action.mode;
+  }
   return state;
 }
-/* harmony default export */ var reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
-  deviceType,
+
+/**
+ * Reducer used to track the site editor canvas container view.
+ * Default is `undefined`, denoting the default, visual block editor.
+ * This could be, for example, `'style-book'` (the style book).
+ *
+ * @param {string|undefined} state  Current state.
+ * @param {Object}           action Dispatched action.
+ */
+function editorCanvasContainerView(state = undefined, action) {
+  switch (action.type) {
+    case 'SET_EDITOR_CANVAS_CONTAINER_VIEW':
+      return action.view;
+  }
+  return state;
+}
+/* harmony default export */ const reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
   settings,
   editedPost,
-  homeTemplateId,
-  navigationPanel,
-  blockInserterPanel,
-  listViewPanel
-}));
-
-;// CONCATENATED MODULE: external ["wp","apiFetch"]
-var external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"];
-var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject);
-;// CONCATENATED MODULE: external ["wp","deprecated"]
-var external_wp_deprecated_namespaceObject = window["wp"]["deprecated"];
-var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject);
-;// CONCATENATED MODULE: external ["wp","notices"]
-var external_wp_notices_namespaceObject = window["wp"]["notices"];
-;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
-function extends_extends() {
-  extends_extends = Object.assign ? Object.assign.bind() : function (target) {
-    for (var i = 1; i < arguments.length; i++) {
-      var source = arguments[i];
-
-      for (var key in source) {
-        if (Object.prototype.hasOwnProperty.call(source, key)) {
-          target[key] = source[key];
-        }
-      }
-    }
-
-    return target;
-  };
-  return extends_extends.apply(this, arguments);
-}
-// EXTERNAL MODULE: ./node_modules/classnames/index.js
-var classnames = __webpack_require__(4403);
-var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
-;// CONCATENATED MODULE: external ["wp","components"]
-var external_wp_components_namespaceObject = window["wp"]["components"];
-;// CONCATENATED MODULE: external ["wp","primitives"]
-var external_wp_primitives_namespaceObject = window["wp"]["primitives"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/check.js
-
-
-/**
- * WordPress dependencies
- */
-
-const check = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"
-}));
-/* harmony default export */ var library_check = (check);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/star-filled.js
-
-
-/**
- * WordPress dependencies
- */
-
-const starFilled = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z"
-}));
-/* harmony default export */ var star_filled = (starFilled);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/star-empty.js
-
-
-/**
- * WordPress dependencies
- */
-
-const starEmpty = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  fillRule: "evenodd",
-  d: "M9.706 8.646a.25.25 0 01-.188.137l-4.626.672a.25.25 0 00-.139.427l3.348 3.262a.25.25 0 01.072.222l-.79 4.607a.25.25 0 00.362.264l4.138-2.176a.25.25 0 01.233 0l4.137 2.175a.25.25 0 00.363-.263l-.79-4.607a.25.25 0 01.072-.222l3.347-3.262a.25.25 0 00-.139-.427l-4.626-.672a.25.25 0 01-.188-.137l-2.069-4.192a.25.25 0 00-.448 0L9.706 8.646zM12 7.39l-.948 1.921a1.75 1.75 0 01-1.317.957l-2.12.308 1.534 1.495c.412.402.6.982.503 1.55l-.362 2.11 1.896-.997a1.75 1.75 0 011.629 0l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39z",
-  clipRule: "evenodd"
-}));
-/* harmony default export */ var star_empty = (starEmpty);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close-small.js
-
-
-/**
- * WordPress dependencies
- */
-
-const closeSmall = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"
-}));
-/* harmony default export */ var close_small = (closeSmall);
-
-;// CONCATENATED MODULE: external "lodash"
-var external_lodash_namespaceObject = window["lodash"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/actions.js
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Enable the complementary area.
- *
- * @param {string} scope Complementary area scope.
- * @param {string} area  Area identifier.
- */
-
-const enableComplementaryArea = (scope, area) => _ref => {
-  let {
-    registry
-  } = _ref;
-
-  // Return early if there's no area.
-  if (!area) {
-    return;
-  }
-
-  registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'complementaryArea', area);
-};
-/**
- * Disable the complementary area.
- *
- * @param {string} scope Complementary area scope.
- */
-
-const disableComplementaryArea = scope => _ref2 => {
-  let {
-    registry
-  } = _ref2;
-  registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'complementaryArea', null);
-};
-/**
- * Pins an item.
- *
- * @param {string} scope Item scope.
- * @param {string} item  Item identifier.
- *
- * @return {Object} Action object.
- */
-
-const pinItem = (scope, item) => _ref3 => {
-  let {
-    registry
-  } = _ref3;
-
-  // Return early if there's no item.
-  if (!item) {
-    return;
-  }
-
-  const pinnedItems = registry.select(external_wp_preferences_namespaceObject.store).get(scope, 'pinnedItems'); // The item is already pinned, there's nothing to do.
-
-  if ((pinnedItems === null || pinnedItems === void 0 ? void 0 : pinnedItems[item]) === true) {
-    return;
-  }
-
-  registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'pinnedItems', { ...pinnedItems,
-    [item]: true
-  });
-};
-/**
- * Unpins an item.
- *
- * @param {string} scope Item scope.
- * @param {string} item  Item identifier.
- */
-
-const unpinItem = (scope, item) => _ref4 => {
-  let {
-    registry
-  } = _ref4;
-
-  // Return early if there's no item.
-  if (!item) {
-    return;
-  }
-
-  const pinnedItems = registry.select(external_wp_preferences_namespaceObject.store).get(scope, 'pinnedItems');
-  registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'pinnedItems', { ...pinnedItems,
-    [item]: false
-  });
-};
-/**
- * Returns an action object used in signalling that a feature should be toggled.
- *
- * @param {string} scope       The feature scope (e.g. core/edit-post).
- * @param {string} featureName The feature name.
- */
-
-function toggleFeature(scope, featureName) {
-  return function (_ref5) {
-    let {
-      registry
-    } = _ref5;
-    external_wp_deprecated_default()(`dispatch( 'core/interface' ).toggleFeature`, {
-      since: '6.0',
-      alternative: `dispatch( 'core/preferences' ).toggle`
-    });
-    registry.dispatch(external_wp_preferences_namespaceObject.store).toggle(scope, featureName);
-  };
-}
-/**
- * Returns an action object used in signalling that a feature should be set to
- * a true or false value
- *
- * @param {string}  scope       The feature scope (e.g. core/edit-post).
- * @param {string}  featureName The feature name.
- * @param {boolean} value       The value to set.
- *
- * @return {Object} Action object.
- */
-
-function setFeatureValue(scope, featureName, value) {
-  return function (_ref6) {
-    let {
-      registry
-    } = _ref6;
-    external_wp_deprecated_default()(`dispatch( 'core/interface' ).setFeatureValue`, {
-      since: '6.0',
-      alternative: `dispatch( 'core/preferences' ).set`
-    });
-    registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, featureName, !!value);
-  };
-}
-/**
- * Returns an action object used in signalling that defaults should be set for features.
- *
- * @param {string}                  scope    The feature scope (e.g. core/edit-post).
- * @param {Object<string, boolean>} defaults A key/value map of feature names to values.
- *
- * @return {Object} Action object.
- */
-
-function setFeatureDefaults(scope, defaults) {
-  return function (_ref7) {
-    let {
-      registry
-    } = _ref7;
-    external_wp_deprecated_default()(`dispatch( 'core/interface' ).setFeatureDefaults`, {
-      since: '6.0',
-      alternative: `dispatch( 'core/preferences' ).setDefaults`
-    });
-    registry.dispatch(external_wp_preferences_namespaceObject.store).setDefaults(scope, defaults);
-  };
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/selectors.js
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Returns the complementary area that is active in a given scope.
- *
- * @param {Object} state Global application state.
- * @param {string} scope Item scope.
- *
- * @return {string} The complementary area that is active in the given scope.
- */
-
-const getActiveComplementaryArea = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, scope) => {
-  return select(external_wp_preferences_namespaceObject.store).get(scope, 'complementaryArea');
-});
-/**
- * Returns a boolean indicating if an item is pinned or not.
- *
- * @param {Object} state Global application state.
- * @param {string} scope Scope.
- * @param {string} item  Item to check.
- *
- * @return {boolean} True if the item is pinned and false otherwise.
- */
-
-const isItemPinned = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, scope, item) => {
-  var _pinnedItems$item;
-
-  const pinnedItems = select(external_wp_preferences_namespaceObject.store).get(scope, 'pinnedItems');
-  return (_pinnedItems$item = pinnedItems === null || pinnedItems === void 0 ? void 0 : pinnedItems[item]) !== null && _pinnedItems$item !== void 0 ? _pinnedItems$item : true;
-});
-/**
- * Returns a boolean indicating whether a feature is active for a particular
- * scope.
- *
- * @param {Object} state       The store state.
- * @param {string} scope       The scope of the feature (e.g. core/edit-post).
- * @param {string} featureName The name of the feature.
- *
- * @return {boolean} Is the feature enabled?
- */
-
-const isFeatureActive = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, scope, featureName) => {
-  external_wp_deprecated_default()(`select( 'core/interface' ).isFeatureActive( scope, featureName )`, {
-    since: '6.0',
-    alternative: `select( 'core/preferences' ).get( scope, featureName )`
-  });
-  return !!select(external_wp_preferences_namespaceObject.store).get(scope, featureName);
-});
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/constants.js
-/**
- * The identifier for the data store.
- *
- * @type {string}
- */
-const constants_STORE_NAME = 'core/interface';
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/index.js
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-
-/**
- * Store definition for the interface namespace.
- *
- * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
- *
- * @type {Object}
- */
-
-const store = (0,external_wp_data_namespaceObject.createReduxStore)(constants_STORE_NAME, {
-  reducer: () => {},
-  actions: actions_namespaceObject,
-  selectors: selectors_namespaceObject
-}); // Once we build a more generic persistence plugin that works across types of stores
-// we'd be able to replace this with a register call.
-
-(0,external_wp_data_namespaceObject.register)(store);
-
-;// CONCATENATED MODULE: external ["wp","plugins"]
-var external_wp_plugins_namespaceObject = window["wp"]["plugins"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-context/index.js
-/**
- * WordPress dependencies
- */
-
-/* harmony default export */ var complementary_area_context = ((0,external_wp_plugins_namespaceObject.withPluginContext)((context, ownProps) => {
-  return {
-    icon: ownProps.icon || context.icon,
-    identifier: ownProps.identifier || `${context.name}/${ownProps.name}`
-  };
+  saveViewPanel,
+  canvasMode,
+  editorCanvasContainerView
 }));
 
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-toggle/index.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function ComplementaryAreaToggle(_ref) {
-  let {
-    as = external_wp_components_namespaceObject.Button,
-    scope,
-    identifier,
-    icon,
-    selectedIcon,
-    ...props
-  } = _ref;
-  const ComponentToUse = as;
-  const isSelected = (0,external_wp_data_namespaceObject.useSelect)(select => select(store).getActiveComplementaryArea(scope) === identifier, [identifier]);
-  const {
-    enableComplementaryArea,
-    disableComplementaryArea
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
-  return (0,external_wp_element_namespaceObject.createElement)(ComponentToUse, extends_extends({
-    icon: selectedIcon && isSelected ? selectedIcon : icon,
-    onClick: () => {
-      if (isSelected) {
-        disableComplementaryArea(scope);
-      } else {
-        enableComplementaryArea(scope, identifier);
-      }
-    }
-  }, (0,external_lodash_namespaceObject.omit)(props, ['name'])));
-}
-
-/* harmony default export */ var complementary_area_toggle = (complementary_area_context(ComplementaryAreaToggle));
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-header/index.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-const ComplementaryAreaHeader = _ref => {
-  let {
-    smallScreenTitle,
-    children,
-    className,
-    toggleButtonProps
-  } = _ref;
-  const toggleButton = (0,external_wp_element_namespaceObject.createElement)(complementary_area_toggle, extends_extends({
-    icon: close_small
-  }, toggleButtonProps));
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "components-panel__header interface-complementary-area-header__small"
-  }, smallScreenTitle && (0,external_wp_element_namespaceObject.createElement)("span", {
-    className: "interface-complementary-area-header__small-title"
-  }, smallScreenTitle), toggleButton), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: classnames_default()('components-panel__header', 'interface-complementary-area-header', className),
-    tabIndex: -1
-  }, children, toggleButton));
-};
-
-/* harmony default export */ var complementary_area_header = (ComplementaryAreaHeader);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/action-item/index.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-function ActionItemSlot(_ref) {
-  let {
-    name,
-    as: Component = external_wp_components_namespaceObject.ButtonGroup,
-    fillProps = {},
-    bubblesVirtually,
-    ...props
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Slot, {
-    name: name,
-    bubblesVirtually: bubblesVirtually,
-    fillProps: fillProps
-  }, fills => {
-    if ((0,external_lodash_namespaceObject.isEmpty)(external_wp_element_namespaceObject.Children.toArray(fills))) {
-      return null;
-    } // Special handling exists for backward compatibility.
-    // It ensures that menu items created by plugin authors aren't
-    // duplicated with automatically injected menu items coming
-    // from pinnable plugin sidebars.
-    // @see https://github.com/WordPress/gutenberg/issues/14457
-
-
-    const initializedByPlugins = [];
-    external_wp_element_namespaceObject.Children.forEach(fills, _ref2 => {
-      let {
-        props: {
-          __unstableExplicitMenuItem,
-          __unstableTarget
-        }
-      } = _ref2;
-
-      if (__unstableTarget && __unstableExplicitMenuItem) {
-        initializedByPlugins.push(__unstableTarget);
-      }
-    });
-    const children = external_wp_element_namespaceObject.Children.map(fills, child => {
-      if (!child.props.__unstableExplicitMenuItem && initializedByPlugins.includes(child.props.__unstableTarget)) {
-        return null;
-      }
-
-      return child;
-    });
-    return (0,external_wp_element_namespaceObject.createElement)(Component, props, children);
-  });
-}
-
-function ActionItem(_ref3) {
-  let {
-    name,
-    as: Component = external_wp_components_namespaceObject.Button,
-    onClick,
-    ...props
-  } = _ref3;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Fill, {
-    name: name
-  }, _ref4 => {
-    let {
-      onClick: fpOnClick
-    } = _ref4;
-    return (0,external_wp_element_namespaceObject.createElement)(Component, extends_extends({
-      onClick: onClick || fpOnClick ? function () {
-        (onClick || external_lodash_namespaceObject.noop)(...arguments);
-        (fpOnClick || external_lodash_namespaceObject.noop)(...arguments);
-      } : undefined
-    }, props));
-  });
-}
-
-ActionItem.Slot = ActionItemSlot;
-/* harmony default export */ var action_item = (ActionItem);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-more-menu-item/index.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-const PluginsMenuItem = props => // Menu item is marked with unstable prop for backward compatibility.
-// They are removed so they don't leak to DOM elements.
-// @see https://github.com/WordPress/gutenberg/issues/14457
-(0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, (0,external_lodash_namespaceObject.omit)(props, ['__unstableExplicitMenuItem', '__unstableTarget']));
-
-function ComplementaryAreaMoreMenuItem(_ref) {
-  let {
-    scope,
-    target,
-    __unstableExplicitMenuItem,
-    ...props
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(complementary_area_toggle, extends_extends({
-    as: toggleProps => {
-      return (0,external_wp_element_namespaceObject.createElement)(action_item, extends_extends({
-        __unstableExplicitMenuItem: __unstableExplicitMenuItem,
-        __unstableTarget: `${scope}/${target}`,
-        as: PluginsMenuItem,
-        name: `${scope}/plugin-more-menu`
-      }, toggleProps));
-    },
-    role: "menuitemcheckbox",
-    selectedIcon: library_check,
-    name: target,
-    scope: scope
-  }, props));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/pinned-items/index.js
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-function PinnedItems(_ref) {
-  let {
-    scope,
-    ...props
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Fill, extends_extends({
-    name: `PinnedItems/${scope}`
-  }, props));
-}
-
-function PinnedItemsSlot(_ref2) {
-  let {
-    scope,
-    className,
-    ...props
-  } = _ref2;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Slot, extends_extends({
-    name: `PinnedItems/${scope}`
-  }, props), fills => !(0,external_lodash_namespaceObject.isEmpty)(fills) && (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: classnames_default()(className, 'interface-pinned-items')
-  }, fills));
-}
-
-PinnedItems.Slot = PinnedItemsSlot;
-/* harmony default export */ var pinned_items = (PinnedItems);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area/index.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-function ComplementaryAreaSlot(_ref) {
-  let {
-    scope,
-    ...props
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Slot, extends_extends({
-    name: `ComplementaryArea/${scope}`
-  }, props));
-}
-
-function ComplementaryAreaFill(_ref2) {
-  let {
-    scope,
-    children,
-    className
-  } = _ref2;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Fill, {
-    name: `ComplementaryArea/${scope}`
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: className
-  }, children));
-}
-
-function useAdjustComplementaryListener(scope, identifier, activeArea, isActive, isSmall) {
-  const previousIsSmall = (0,external_wp_element_namespaceObject.useRef)(false);
-  const shouldOpenWhenNotSmall = (0,external_wp_element_namespaceObject.useRef)(false);
-  const {
-    enableComplementaryArea,
-    disableComplementaryArea
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    // If the complementary area is active and the editor is switching from a big to a small window size.
-    if (isActive && isSmall && !previousIsSmall.current) {
-      // Disable the complementary area.
-      disableComplementaryArea(scope); // Flag the complementary area to be reopened when the window size goes from small to big.
-
-      shouldOpenWhenNotSmall.current = true;
-    } else if ( // If there is a flag indicating the complementary area should be enabled when we go from small to big window size
-    // and we are going from a small to big window size.
-    shouldOpenWhenNotSmall.current && !isSmall && previousIsSmall.current) {
-      // Remove the flag indicating the complementary area should be enabled.
-      shouldOpenWhenNotSmall.current = false; // Enable the complementary area.
-
-      enableComplementaryArea(scope, identifier);
-    } else if ( // If the flag is indicating the current complementary should be reopened but another complementary area becomes active,
-    // remove the flag.
-    shouldOpenWhenNotSmall.current && activeArea && activeArea !== identifier) {
-      shouldOpenWhenNotSmall.current = false;
-    }
-
-    if (isSmall !== previousIsSmall.current) {
-      previousIsSmall.current = isSmall;
-    }
-  }, [isActive, isSmall, scope, identifier, activeArea]);
-}
-
-function ComplementaryArea(_ref3) {
-  let {
-    children,
-    className,
-    closeLabel = (0,external_wp_i18n_namespaceObject.__)('Close plugin'),
-    identifier,
-    header,
-    headerClassName,
-    icon,
-    isPinnable = true,
-    panelClassName,
-    scope,
-    name,
-    smallScreenTitle,
-    title,
-    toggleShortcut,
-    isActiveByDefault,
-    showIconLabels = false
-  } = _ref3;
-  const {
-    isActive,
-    isPinned,
-    activeArea,
-    isSmall,
-    isLarge
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const {
-      getActiveComplementaryArea,
-      isItemPinned
-    } = select(store);
-
-    const _activeArea = getActiveComplementaryArea(scope);
-
-    return {
-      isActive: _activeArea === identifier,
-      isPinned: isItemPinned(scope, identifier),
-      activeArea: _activeArea,
-      isSmall: select(external_wp_viewport_namespaceObject.store).isViewportMatch('< medium'),
-      isLarge: select(external_wp_viewport_namespaceObject.store).isViewportMatch('large')
-    };
-  }, [identifier, scope]);
-  useAdjustComplementaryListener(scope, identifier, activeArea, isActive, isSmall);
-  const {
-    enableComplementaryArea,
-    disableComplementaryArea,
-    pinItem,
-    unpinItem
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    if (isActiveByDefault && activeArea === undefined && !isSmall) {
-      enableComplementaryArea(scope, identifier);
-    }
-  }, [activeArea, isActiveByDefault, scope, identifier, isSmall]);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, isPinnable && (0,external_wp_element_namespaceObject.createElement)(pinned_items, {
-    scope: scope
-  }, isPinned && (0,external_wp_element_namespaceObject.createElement)(complementary_area_toggle, {
-    scope: scope,
-    identifier: identifier,
-    isPressed: isActive && (!showIconLabels || isLarge),
-    "aria-expanded": isActive,
-    label: title,
-    icon: showIconLabels ? library_check : icon,
-    showTooltip: !showIconLabels,
-    variant: showIconLabels ? 'tertiary' : undefined
-  })), name && isPinnable && (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaMoreMenuItem, {
-    target: name,
-    scope: scope,
-    icon: icon
-  }, title), isActive && (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaFill, {
-    className: classnames_default()('interface-complementary-area', className),
-    scope: scope
-  }, (0,external_wp_element_namespaceObject.createElement)(complementary_area_header, {
-    className: headerClassName,
-    closeLabel: closeLabel,
-    onClose: () => disableComplementaryArea(scope),
-    smallScreenTitle: smallScreenTitle,
-    toggleButtonProps: {
-      label: closeLabel,
-      shortcut: toggleShortcut,
-      scope,
-      identifier
-    }
-  }, header || (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("strong", null, title), isPinnable && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    className: "interface-complementary-area__pin-unpin-item",
-    icon: isPinned ? star_filled : star_empty,
-    label: isPinned ? (0,external_wp_i18n_namespaceObject.__)('Unpin from toolbar') : (0,external_wp_i18n_namespaceObject.__)('Pin to toolbar'),
-    onClick: () => (isPinned ? unpinItem : pinItem)(scope, identifier),
-    isPressed: isPinned,
-    "aria-expanded": isPinned
-  }))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Panel, {
-    className: panelClassName
-  }, children)));
-}
-
-const ComplementaryAreaWrapped = complementary_area_context(ComplementaryArea);
-ComplementaryAreaWrapped.Slot = ComplementaryAreaSlot;
-/* harmony default export */ var complementary_area = (ComplementaryAreaWrapped);
-
-;// CONCATENATED MODULE: external ["wp","compose"]
-var external_wp_compose_namespaceObject = window["wp"]["compose"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/interface-skeleton/index.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-function useHTMLClass(className) {
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    const element = document && document.querySelector(`html:not(.${className})`);
-
-    if (!element) {
-      return;
-    }
-
-    element.classList.toggle(className);
-    return () => {
-      element.classList.toggle(className);
-    };
-  }, [className]);
-}
-
-function InterfaceSkeleton(_ref, ref) {
-  let {
-    footer,
-    header,
-    sidebar,
-    secondarySidebar,
-    notices,
-    content,
-    drawer,
-    actions,
-    labels,
-    className,
-    shortcuts
-  } = _ref;
-  const navigateRegionsProps = (0,external_wp_components_namespaceObject.__unstableUseNavigateRegions)(shortcuts);
-  useHTMLClass('interface-interface-skeleton__html-container');
-  const defaultLabels = {
-    /* translators: accessibility text for the nav bar landmark region. */
-    drawer: (0,external_wp_i18n_namespaceObject.__)('Drawer'),
-
-    /* translators: accessibility text for the top bar landmark region. */
-    header: (0,external_wp_i18n_namespaceObject.__)('Header'),
-
-    /* translators: accessibility text for the content landmark region. */
-    body: (0,external_wp_i18n_namespaceObject.__)('Content'),
-
-    /* translators: accessibility text for the secondary sidebar landmark region. */
-    secondarySidebar: (0,external_wp_i18n_namespaceObject.__)('Block Library'),
-
-    /* translators: accessibility text for the settings landmark region. */
-    sidebar: (0,external_wp_i18n_namespaceObject.__)('Settings'),
-
-    /* translators: accessibility text for the publish landmark region. */
-    actions: (0,external_wp_i18n_namespaceObject.__)('Publish'),
-
-    /* translators: accessibility text for the footer landmark region. */
-    footer: (0,external_wp_i18n_namespaceObject.__)('Footer')
-  };
-  const mergedLabels = { ...defaultLabels,
-    ...labels
-  };
-  return (0,external_wp_element_namespaceObject.createElement)("div", extends_extends({}, navigateRegionsProps, {
-    ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([ref, navigateRegionsProps.ref]),
-    className: classnames_default()(className, 'interface-interface-skeleton', navigateRegionsProps.className, !!footer && 'has-footer')
-  }), !!drawer && (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-interface-skeleton__drawer",
-    role: "region",
-    "aria-label": mergedLabels.drawer,
-    tabIndex: "-1"
-  }, drawer), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-interface-skeleton__editor"
-  }, !!header && (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-interface-skeleton__header",
-    role: "region",
-    "aria-label": mergedLabels.header,
-    tabIndex: "-1"
-  }, header), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-interface-skeleton__body"
-  }, !!secondarySidebar && (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-interface-skeleton__secondary-sidebar",
-    role: "region",
-    "aria-label": mergedLabels.secondarySidebar,
-    tabIndex: "-1"
-  }, secondarySidebar), !!notices && (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-interface-skeleton__notices"
-  }, notices), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-interface-skeleton__content",
-    role: "region",
-    "aria-label": mergedLabels.body,
-    tabIndex: "-1"
-  }, content), !!sidebar && (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-interface-skeleton__sidebar",
-    role: "region",
-    "aria-label": mergedLabels.sidebar,
-    tabIndex: "-1"
-  }, sidebar), !!actions && (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-interface-skeleton__actions",
-    role: "region",
-    "aria-label": mergedLabels.actions,
-    tabIndex: "-1"
-  }, actions))), !!footer && (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-interface-skeleton__footer",
-    role: "region",
-    "aria-label": mergedLabels.footer,
-    tabIndex: "-1"
-  }, footer));
-}
-
-/* harmony default export */ var interface_skeleton = ((0,external_wp_element_namespaceObject.forwardRef)(InterfaceSkeleton));
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/more-vertical.js
-
-
-/**
- * WordPress dependencies
- */
-
-const moreVertical = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"
-}));
-/* harmony default export */ var more_vertical = (moreVertical);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/more-menu-dropdown/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-function MoreMenuDropdown(_ref) {
-  let {
-    as: DropdownComponent = external_wp_components_namespaceObject.DropdownMenu,
-    className,
-
-    /* translators: button label text should, if possible, be under 16 characters. */
-    label = (0,external_wp_i18n_namespaceObject.__)('Options'),
-    popoverProps,
-    toggleProps,
-    children
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(DropdownComponent, {
-    className: classnames_default()('interface-more-menu-dropdown', className),
-    icon: more_vertical,
-    label: label,
-    popoverProps: {
-      position: 'bottom left',
-      ...popoverProps,
-      className: classnames_default()('interface-more-menu-dropdown__content', popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.className)
-    },
-    toggleProps: {
-      tooltipPosition: 'bottom',
-      ...toggleProps
-    }
-  }, onClose => children(onClose));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-function PreferencesModal(_ref) {
-  let {
-    closeModal,
-    children
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, {
-    className: "interface-preferences-modal",
-    title: (0,external_wp_i18n_namespaceObject.__)('Preferences'),
-    closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'),
-    onRequestClose: closeModal
-  }, children);
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/icon/index.js
-/**
- * WordPress dependencies
- */
-
-/** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */
-
-/**
- * Return an SVG icon.
- *
- * @param {IconProps} props icon is the SVG component to render
- *                          size is a number specifiying the icon size in pixels
- *                          Other props will be passed to wrapped SVG component
- *
- * @return {JSX.Element}  Icon component
- */
-
-function Icon(_ref) {
-  let {
-    icon,
-    size = 24,
-    ...props
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.cloneElement)(icon, {
-    width: size,
-    height: size,
-    ...props
-  });
-}
-
-/* harmony default export */ var icon = (Icon);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-left.js
-
-
-/**
- * WordPress dependencies
- */
-
-const chevronLeft = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"
-}));
-/* harmony default export */ var chevron_left = (chevronLeft);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-right.js
-
-
-/**
- * WordPress dependencies
- */
-
-const chevronRight = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"
-}));
-/* harmony default export */ var chevron_right = (chevronRight);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal-tabs/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-const PREFERENCES_MENU = 'preferences-menu';
-function PreferencesModalTabs(_ref) {
-  let {
-    sections
-  } = _ref;
-  const isLargeViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium'); // This is also used to sync the two different rendered components
-  // between small and large viewports.
-
-  const [activeMenu, setActiveMenu] = (0,external_wp_element_namespaceObject.useState)(PREFERENCES_MENU);
-  /**
-   * Create helper objects from `sections` for easier data handling.
-   * `tabs` is used for creating the `TabPanel` and `sectionsContentMap`
-   * is used for easier access to active tab's content.
-   */
-
-  const {
-    tabs,
-    sectionsContentMap
-  } = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    let mappedTabs = {
-      tabs: [],
-      sectionsContentMap: {}
-    };
-
-    if (sections.length) {
-      mappedTabs = sections.reduce((accumulator, _ref2) => {
-        let {
-          name,
-          tabLabel: title,
-          content
-        } = _ref2;
-        accumulator.tabs.push({
-          name,
-          title
-        });
-        accumulator.sectionsContentMap[name] = content;
-        return accumulator;
-      }, {
-        tabs: [],
-        sectionsContentMap: {}
-      });
-    }
-
-    return mappedTabs;
-  }, [sections]);
-  const getCurrentTab = (0,external_wp_element_namespaceObject.useCallback)(tab => sectionsContentMap[tab.name] || null, [sectionsContentMap]);
-  let modalContent; // We render different components based on the viewport size.
-
-  if (isLargeViewport) {
-    modalContent = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TabPanel, {
-      className: "interface-preferences__tabs",
-      tabs: tabs,
-      initialTabName: activeMenu !== PREFERENCES_MENU ? activeMenu : undefined,
-      onSelect: setActiveMenu,
-      orientation: "vertical"
-    }, getCurrentTab);
-  } else {
-    modalContent = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorProvider, {
-      initialPath: "/",
-      className: "interface-preferences__provider"
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, {
-      path: "/"
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, {
-      isBorderless: true,
-      size: "small"
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, null, tabs.map(tab => {
-      return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorButton, {
-        key: tab.name,
-        path: tab.name,
-        as: external_wp_components_namespaceObject.__experimentalItem,
-        isAction: true
-      }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-        justify: "space-between"
-      }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalTruncate, null, tab.title)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(icon, {
-        icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
-      }))));
-    }))))), sections.length && sections.map(section => {
-      return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, {
-        key: `${section.name}-menu`,
-        path: section.name
-      }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, {
-        isBorderless: true,
-        size: "large"
-      }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardHeader, {
-        isBorderless: false,
-        justify: "left",
-        size: "small",
-        gap: "6"
-      }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorBackButton, {
-        icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left,
-        "aria-label": (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous view')
-      }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, {
-        size: "16"
-      }, section.tabLabel)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, section.content)));
-    }));
-  }
-
-  return modalContent;
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal-section/index.js
-
-
-const Section = _ref => {
-  let {
-    description,
-    title,
-    children
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)("fieldset", {
-    className: "interface-preferences-modal__section"
-  }, (0,external_wp_element_namespaceObject.createElement)("legend", null, (0,external_wp_element_namespaceObject.createElement)("h2", {
-    className: "interface-preferences-modal__section-title"
-  }, title), description && (0,external_wp_element_namespaceObject.createElement)("p", {
-    className: "interface-preferences-modal__section-description"
-  }, description)), children);
-};
-
-/* harmony default export */ var preferences_modal_section = (Section);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal-base-option/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-function BaseOption(_ref) {
-  let {
-    help,
-    label,
-    isChecked,
-    onChange,
-    children
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "interface-preferences-modal__option"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToggleControl, {
-    help: help,
-    label: label,
-    checked: isChecked,
-    onChange: onChange
-  }), children);
-}
-
-/* harmony default export */ var preferences_modal_base_option = (BaseOption);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/index.js
-
-
-
-
-
-
-
-
-
-
-
-
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/index.js
-
-
-
-;// CONCATENATED MODULE: external ["wp","blockEditor"]
-var external_wp_blockEditor_namespaceObject = window["wp"]["blockEditor"];
-;// CONCATENATED MODULE: external ["wp","a11y"]
-var external_wp_a11y_namespaceObject = window["wp"]["a11y"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/is-template-revertable.js
-/**
- * Check if a template is revertable to its original theme-provided template file.
- *
- * @param {Object} template The template entity to check.
- * @return {boolean} Whether the template is revertable.
- */
-function isTemplateRevertable(template) {
-  if (!template) {
-    return false;
-  }
-  /* eslint-disable camelcase */
-
-
-  return (template === null || template === void 0 ? void 0 : template.source) === 'custom' && (template === null || template === void 0 ? void 0 : template.has_theme_file);
-  /* eslint-enable camelcase */
-}
+;// CONCATENATED MODULE: external ["wp","patterns"]
+const external_wp_patterns_namespaceObject = window["wp"]["patterns"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/constants.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+// Navigation
+const NAVIGATION_POST_TYPE = 'wp_navigation';
+
+// Templates.
+const TEMPLATE_POST_TYPE = 'wp_template';
+const TEMPLATE_PART_POST_TYPE = 'wp_template_part';
+const TEMPLATE_ORIGINS = {
+  custom: 'custom',
+  theme: 'theme',
+  plugin: 'plugin'
+};
+const TEMPLATE_PART_AREA_DEFAULT_CATEGORY = 'uncategorized';
+const TEMPLATE_PART_ALL_AREAS_CATEGORY = 'all-parts';
+
+// Patterns.
+const {
+  PATTERN_TYPES,
+  PATTERN_DEFAULT_CATEGORY,
+  PATTERN_USER_CATEGORY,
+  EXCLUDED_PATTERN_SOURCES,
+  PATTERN_SYNC_TYPES
+} = lock_unlock_unlock(external_wp_patterns_namespaceObject.privateApis);
+
+// Entities that are editable in focus mode.
+const FOCUSABLE_ENTITIES = [TEMPLATE_PART_POST_TYPE, NAVIGATION_POST_TYPE, PATTERN_TYPES.user];
+const POST_TYPE_LABELS = {
+  [TEMPLATE_POST_TYPE]: (0,external_wp_i18n_namespaceObject.__)('Template'),
+  [TEMPLATE_PART_POST_TYPE]: (0,external_wp_i18n_namespaceObject.__)('Template part'),
+  [PATTERN_TYPES.user]: (0,external_wp_i18n_namespaceObject.__)('Pattern'),
+  [NAVIGATION_POST_TYPE]: (0,external_wp_i18n_namespaceObject.__)('Navigation')
+};
+
+// DataViews constants
+const LAYOUT_GRID = 'grid';
+const LAYOUT_TABLE = 'table';
+const LAYOUT_LIST = 'list';
+const OPERATOR_IS = 'is';
+const OPERATOR_IS_NOT = 'isNot';
+const OPERATOR_IS_ANY = 'isAny';
+const OPERATOR_IS_NONE = 'isNone';
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/actions.js
 /**
@@ -2687,143 +8319,112 @@
 
 
 
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  interfaceStore
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
 
 /**
  * Dispatches an action that toggles a feature flag.
  *
  * @param {string} featureName Feature name.
  */
-
-function actions_toggleFeature(featureName) {
-  return function (_ref) {
-    let {
-      registry
-    } = _ref;
-    external_wp_deprecated_default()("select( 'core/edit-site' ).toggleFeature( featureName )", {
+function toggleFeature(featureName) {
+  return function ({
+    registry
+  }) {
+    external_wp_deprecated_default()("dispatch( 'core/edit-site' ).toggleFeature( featureName )", {
       since: '6.0',
-      alternative: "select( 'core/preferences').toggle( 'core/edit-site', featureName )"
+      alternative: "dispatch( 'core/preferences').toggle( 'core/edit-site', featureName )"
     });
     registry.dispatch(external_wp_preferences_namespaceObject.store).toggle('core/edit-site', featureName);
   };
 }
+
 /**
  * Action that changes the width of the editing canvas.
  *
+ * @deprecated
+ *
  * @param {string} deviceType
  *
  * @return {Object} Action object.
  */
-
-function __experimentalSetPreviewDeviceType(deviceType) {
-  return {
-    type: 'SET_PREVIEW_DEVICE_TYPE',
-    deviceType
-  };
-}
+const __experimentalSetPreviewDeviceType = deviceType => ({
+  registry
+}) => {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).__experimentalSetPreviewDeviceType", {
+    since: '6.5',
+    version: '6.7',
+    hint: 'registry.dispatch( editorStore ).setDeviceType'
+  });
+  registry.dispatch(external_wp_editor_namespaceObject.store).setDeviceType(deviceType);
+};
+
 /**
  * Action that sets a template, optionally fetching it from REST API.
  *
- * @param {number} templateId   The template ID.
- * @param {string} templateSlug The template slug.
  * @return {Object} Action object.
  */
-
-const setTemplate = (templateId, templateSlug) => async _ref2 => {
-  let {
-    dispatch,
-    registry
-  } = _ref2;
-
-  if (!templateSlug) {
-    const template = await registry.resolveSelect(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', 'wp_template', templateId);
-    templateSlug = template === null || template === void 0 ? void 0 : template.slug;
-  }
-
-  dispatch({
-    type: 'SET_TEMPLATE',
-    templateId,
-    page: {
-      context: {
-        templateSlug
-      }
-    }
-  });
-};
+function setTemplate() {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setTemplate", {
+    since: '6.5',
+    version: '6.8',
+    hint: 'The setTemplate is not needed anymore, the correct entity is resolved from the URL automatically.'
+  });
+  return {
+    type: 'NOTHING'
+  };
+}
+
 /**
  * Action that adds a new template and sets it as the current template.
  *
  * @param {Object} template The template.
  *
+ * @deprecated
+ *
  * @return {Object} Action object used to set the current template.
  */
-
-const addTemplate = template => async _ref3 => {
-  let {
-    dispatch,
-    registry
-  } = _ref3;
-  const newTemplate = await registry.dispatch(external_wp_coreData_namespaceObject.store).saveEntityRecord('postType', 'wp_template', template);
-
+const addTemplate = template => async ({
+  dispatch,
+  registry
+}) => {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).addTemplate", {
+    since: '6.5',
+    version: '6.8',
+    hint: 'use saveEntityRecord directly'
+  });
+  const newTemplate = await registry.dispatch(external_wp_coreData_namespaceObject.store).saveEntityRecord('postType', TEMPLATE_POST_TYPE, template);
   if (template.content) {
-    registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', 'wp_template', newTemplate.id, {
+    registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', TEMPLATE_POST_TYPE, newTemplate.id, {
       blocks: (0,external_wp_blocks_namespaceObject.parse)(template.content)
     }, {
       undoIgnore: true
     });
   }
-
   dispatch({
-    type: 'SET_TEMPLATE',
-    templateId: newTemplate.id,
-    page: {
-      context: {
-        templateSlug: newTemplate.slug
-      }
-    }
-  });
-};
+    type: 'SET_EDITED_POST',
+    postType: TEMPLATE_POST_TYPE,
+    id: newTemplate.id
+  });
+};
+
 /**
  * Action that removes a template.
  *
  * @param {Object} template The template object.
  */
-
-const removeTemplate = template => async _ref4 => {
-  let {
-    registry
-  } = _ref4;
-
-  try {
-    await registry.dispatch(external_wp_coreData_namespaceObject.store).deleteEntityRecord('postType', template.type, template.id, {
-      force: true
-    });
-    const lastError = registry.select(external_wp_coreData_namespaceObject.store).getLastEntityDeleteError('postType', template.type, template.id);
-
-    if (lastError) {
-      throw lastError;
-    }
-
-    registry.dispatch(external_wp_notices_namespaceObject.store).createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
-    /* translators: The template/part's name. */
-    (0,external_wp_i18n_namespaceObject.__)('"%s" deleted.'), template.title.rendered), {
-      type: 'snackbar'
-    });
-  } catch (error) {
-    const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while deleting the template.');
-    registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice(errorMessage, {
-      type: 'snackbar'
-    });
-  }
-};
+const removeTemplate = template => ({
+  registry
+}) => {
+  return lock_unlock_unlock(registry.dispatch(external_wp_editor_namespaceObject.store)).removeTemplates([template]);
+};
+
 /**
  * Action that sets a template part.
  *
@@ -2831,128 +8432,174 @@
  *
  * @return {Object} Action object.
  */
-
 function setTemplatePart(templatePartId) {
   return {
-    type: 'SET_TEMPLATE_PART',
-    templatePartId
-  };
-}
-/**
- * Action that sets the home template ID to the template ID of the page resolved
- * from a given path.
- *
- * @param {number} homeTemplateId The template ID for the homepage.
- */
-
-function setHomeTemplateId(homeTemplateId) {
-  return {
-    type: 'SET_HOME_TEMPLATE',
-    homeTemplateId
-  };
-}
+    type: 'SET_EDITED_POST',
+    postType: TEMPLATE_PART_POST_TYPE,
+    id: templatePartId
+  };
+}
+
+/**
+ * Action that sets a navigation menu.
+ *
+ * @param {string} navigationMenuId The Navigation Menu Post ID.
+ *
+ * @return {Object} Action object.
+ */
+function setNavigationMenu(navigationMenuId) {
+  return {
+    type: 'SET_EDITED_POST',
+    postType: NAVIGATION_POST_TYPE,
+    id: navigationMenuId
+  };
+}
+
+/**
+ * Action that sets an edited entity.
+ *
+ * @param {string} postType The entity's post type.
+ * @param {string} postId   The entity's ID.
+ * @param {Object} context  The entity's context.
+ *
+ * @return {Object} Action object.
+ */
+function setEditedEntity(postType, postId, context) {
+  return {
+    type: 'SET_EDITED_POST',
+    postType,
+    id: postId,
+    context
+  };
+}
+
+/**
+ * @deprecated
+ */
+function setHomeTemplateId() {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setHomeTemplateId", {
+    since: '6.2',
+    version: '6.4'
+  });
+  return {
+    type: 'NOTHING'
+  };
+}
+
+/**
+ * Set's the current block editor context.
+ *
+ * @param {Object} context The context object.
+ *
+ * @return {Object} Action object.
+ */
+function setEditedPostContext(context) {
+  return {
+    type: 'SET_EDITED_POST_CONTEXT',
+    context
+  };
+}
+
 /**
  * Resolves the template for a page and displays both. If no path is given, attempts
  * to use the postId to generate a path like `?p=${ postId }`.
  *
- * @param {Object} page         The page object.
- * @param {string} page.type    The page type.
- * @param {string} page.slug    The page slug.
- * @param {string} page.path    The page path.
- * @param {Object} page.context The page context.
- *
- * @return {number} The resolved template ID for the page route.
- */
-
-const setPage = page => async _ref5 => {
-  var _page$context;
-
-  let {
-    dispatch,
-    registry
-  } = _ref5;
-
-  if (!page.path && (_page$context = page.context) !== null && _page$context !== void 0 && _page$context.postId) {
-    const entity = await registry.resolveSelect(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', page.context.postType || 'post', page.context.postId); // If the entity is undefined for some reason, path will resolve to "/"
-
-    page.path = (0,external_wp_url_namespaceObject.getPathAndQueryString)(entity === null || entity === void 0 ? void 0 : entity.link);
-  }
-
-  const template = await registry.resolveSelect(external_wp_coreData_namespaceObject.store).__experimentalGetTemplateForLink(page.path);
-
-  if (!template) {
-    return;
-  }
-
-  dispatch({
-    type: 'SET_PAGE',
-    page: template.slug ? { ...page,
-      context: { ...page.context,
-        templateSlug: template.slug
-      }
-    } : page,
-    templateId: template.id
-  });
-  return template.id;
-};
+ * @deprecated
+ *
+ * @return {Object} Action object.
+ */
+function setPage() {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setPage", {
+    since: '6.5',
+    version: '6.8',
+    hint: 'The setPage is not needed anymore, the correct entity is resolved from the URL automatically.'
+  });
+  return {
+    type: 'NOTHING'
+  };
+}
+
 /**
  * Action that sets the active navigation panel menu.
  *
- * @param {string} menu Menu prop of active menu.
+ * @deprecated
  *
  * @return {Object} Action object.
  */
-
-function setNavigationPanelActiveMenu(menu) {
-  return {
-    type: 'SET_NAVIGATION_PANEL_ACTIVE_MENU',
-    menu
-  };
-}
+function setNavigationPanelActiveMenu() {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setNavigationPanelActiveMenu", {
+    since: '6.2',
+    version: '6.4'
+  });
+  return {
+    type: 'NOTHING'
+  };
+}
+
 /**
  * Opens the navigation panel and sets its active menu at the same time.
  *
- * @param {string} menu Identifies the menu to open.
- */
-
-function openNavigationPanelToMenu(menu) {
-  return {
-    type: 'OPEN_NAVIGATION_PANEL_TO_MENU',
-    menu
-  };
-}
+ * @deprecated
+ */
+function openNavigationPanelToMenu() {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).openNavigationPanelToMenu", {
+    since: '6.2',
+    version: '6.4'
+  });
+  return {
+    type: 'NOTHING'
+  };
+}
+
 /**
  * Sets whether the navigation panel should be open.
  *
- * @param {boolean} isOpen If true, opens the nav panel. If false, closes it. It
- *                         does not toggle the state, but sets it directly.
- */
-
-function setIsNavigationPanelOpened(isOpen) {
-  return {
-    type: 'SET_IS_NAVIGATION_PANEL_OPENED',
-    isOpen
-  };
-}
-/**
- * Opens or closes the inserter.
- *
- * @param {boolean|Object} value                Whether the inserter should be
- *                                              opened (true) or closed (false).
- *                                              To specify an insertion point,
- *                                              use an object.
- * @param {string}         value.rootClientId   The root client ID to insert at.
- * @param {number}         value.insertionIndex The index to insert at.
- *
- * @return {Object} Action object.
- */
-
-function setIsInserterOpened(value) {
-  return {
-    type: 'SET_IS_INSERTER_OPENED',
-    value
-  };
-}
+ * @deprecated
+ */
+function setIsNavigationPanelOpened() {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setIsNavigationPanelOpened", {
+    since: '6.2',
+    version: '6.4'
+  });
+  return {
+    type: 'NOTHING'
+  };
+}
+
+/**
+ * Returns an action object used to open/close the inserter.
+ *
+ * @deprecated
+ *
+ * @param {boolean|Object} value Whether the inserter should be opened (true) or closed (false).
+ */
+const setIsInserterOpened = value => ({
+  registry
+}) => {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setIsInserterOpened", {
+    since: '6.5',
+    alternative: "dispatch( 'core/editor').setIsInserterOpened"
+  });
+  registry.dispatch(external_wp_editor_namespaceObject.store).setIsInserterOpened(value);
+};
+
+/**
+ * Returns an action object used to open/close the list view.
+ *
+ * @deprecated
+ *
+ * @param {boolean} isOpen A boolean representing whether the list view should be opened or closed.
+ */
+const setIsListViewOpened = isOpen => ({
+  registry
+}) => {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setIsListViewOpened", {
+    since: '6.5',
+    alternative: "dispatch( 'core/editor').setIsListViewOpened"
+  });
+  registry.dispatch(external_wp_editor_namespaceObject.store).setIsListViewOpened(isOpen);
+};
+
 /**
  * Returns an action object used to update the settings.
  *
@@ -2960,26 +8607,26 @@
  *
  * @return {Object} Action object.
  */
-
 function updateSettings(settings) {
   return {
     type: 'UPDATE_SETTINGS',
     settings
   };
 }
-/**
- * Sets whether the list view panel should be open.
- *
- * @param {boolean} isOpen If true, opens the list view. If false, closes it.
+
+/**
+ * Sets whether the save view panel should be open.
+ *
+ * @param {boolean} isOpen If true, opens the save view. If false, closes it.
  *                         It does not toggle the state, but sets it directly.
  */
-
-function setIsListViewOpened(isOpen) {
-  return {
-    type: 'SET_IS_LIST_VIEW_OPENED',
+function setIsSaveViewOpened(isOpen) {
+  return {
+    type: 'SET_IS_SAVE_VIEW_OPENED',
     isOpen
   };
 }
+
 /**
  * Reverts a template to its original theme-provided file.
  *
@@ -2988,508 +8635,177 @@
  * @param {boolean} [options.allowUndo] Whether to allow the user to undo
  *                                      reverting the template. Default true.
  */
-
-const revertTemplate = function (template) {
-  let {
-    allowUndo = true
-  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  return async _ref6 => {
-    let {
-      registry
-    } = _ref6;
-
-    if (!isTemplateRevertable(template)) {
-      registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice((0,external_wp_i18n_namespaceObject.__)('This template is not revertable.'), {
-        type: 'snackbar'
-      });
-      return;
-    }
-
-    try {
-      var _fileTemplate$content;
-
-      const templateEntityConfig = registry.select(external_wp_coreData_namespaceObject.store).getEntityConfig('postType', template.type);
-
-      if (!templateEntityConfig) {
-        registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice((0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error. Please reload.'), {
-          type: 'snackbar'
-        });
-        return;
-      }
-
-      const fileTemplatePath = (0,external_wp_url_namespaceObject.addQueryArgs)(`${templateEntityConfig.baseURL}/${template.id}`, {
-        context: 'edit',
-        source: 'theme'
-      });
-      const fileTemplate = await external_wp_apiFetch_default()({
-        path: fileTemplatePath
-      });
-
-      if (!fileTemplate) {
-        registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice((0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error. Please reload.'), {
-          type: 'snackbar'
-        });
-        return;
-      }
-
-      const serializeBlocks = _ref7 => {
-        let {
-          blocks: blocksForSerialization = []
-        } = _ref7;
-        return (0,external_wp_blocks_namespaceObject.__unstableSerializeAndClean)(blocksForSerialization);
-      };
-
-      const edited = registry.select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('postType', template.type, template.id); // We are fixing up the undo level here to make sure we can undo
-      // the revert in the header toolbar correctly.
-
-      registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', template.type, template.id, {
-        content: serializeBlocks,
-        // Required to make the `undo` behave correctly.
-        blocks: edited.blocks,
-        // Required to revert the blocks in the editor.
-        source: 'custom' // required to avoid turning the editor into a dirty state
-
-      }, {
-        undoIgnore: true // Required to merge this edit with the last undo level.
-
-      });
-      const blocks = (0,external_wp_blocks_namespaceObject.parse)(fileTemplate === null || fileTemplate === void 0 ? void 0 : (_fileTemplate$content = fileTemplate.content) === null || _fileTemplate$content === void 0 ? void 0 : _fileTemplate$content.raw);
-      registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', template.type, fileTemplate.id, {
-        content: serializeBlocks,
-        blocks,
-        source: 'theme'
-      });
-
-      if (allowUndo) {
-        const undoRevert = () => {
-          registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', template.type, edited.id, {
-            content: serializeBlocks,
-            blocks: edited.blocks,
-            source: 'custom'
-          });
-        };
-
-        registry.dispatch(external_wp_notices_namespaceObject.store).createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Template reverted.'), {
-          type: 'snackbar',
-          actions: [{
-            label: (0,external_wp_i18n_namespaceObject.__)('Undo'),
-            onClick: undoRevert
-          }]
-        });
-      } else {
-        registry.dispatch(external_wp_notices_namespaceObject.store).createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Template reverted.'));
-      }
-    } catch (error) {
-      const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('Template revert failed. Please reload.');
-      registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice(errorMessage, {
-        type: 'snackbar'
-      });
-    }
-  };
-};
+const revertTemplate = (template, options) => ({
+  registry
+}) => {
+  return lock_unlock_unlock(registry.dispatch(external_wp_editor_namespaceObject.store)).revertTemplate(template, options);
+};
+
 /**
  * Action that opens an editor sidebar.
  *
  * @param {?string} name Sidebar name to be opened.
  */
-
-const openGeneralSidebar = name => _ref8 => {
-  let {
-    registry
-  } = _ref8;
-  registry.dispatch(store).enableComplementaryArea(STORE_NAME, name);
-};
+const openGeneralSidebar = name => ({
+  registry
+}) => {
+  registry.dispatch(interfaceStore).enableComplementaryArea('core', name);
+};
+
 /**
  * Action that closes the sidebar.
  */
-
-const closeGeneralSidebar = () => _ref9 => {
-  let {
-    registry
-  } = _ref9;
-  registry.dispatch(store).disableComplementaryArea(STORE_NAME);
-};
-const switchEditorMode = mode => _ref10 => {
-  let {
-    registry
-  } = _ref10;
-  registry.dispatch('core/preferences').set('core/edit-site', 'editorMode', mode); // Unselect blocks when we switch to a non visual mode.
-
-  if (mode !== 'visual') {
+const closeGeneralSidebar = () => ({
+  registry
+}) => {
+  registry.dispatch(interfaceStore).disableComplementaryArea('core');
+};
+
+/**
+ * Triggers an action used to switch editor mode.
+ *
+ * @deprecated
+ *
+ * @param {string} mode The editor mode.
+ */
+const switchEditorMode = mode => ({
+  registry
+}) => {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).switchEditorMode", {
+    since: '6.6',
+    alternative: "dispatch( 'core/editor').switchEditorMode"
+  });
+  registry.dispatch(external_wp_editor_namespaceObject.store).switchEditorMode(mode);
+};
+
+/**
+ * Sets whether or not the editor allows only page content to be edited.
+ *
+ * @param {boolean} hasPageContentFocus True to allow only page content to be
+ *                                      edited, false to allow template to be
+ *                                      edited.
+ */
+const setHasPageContentFocus = hasPageContentFocus => ({
+  dispatch,
+  registry
+}) => {
+  external_wp_deprecated_default()(`dispatch( 'core/edit-site' ).setHasPageContentFocus`, {
+    since: '6.5'
+  });
+  if (hasPageContentFocus) {
     registry.dispatch(external_wp_blockEditor_namespaceObject.store).clearSelectedBlock();
   }
-
-  if (mode === 'visual') {
-    (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Visual editor selected'), 'assertive');
-  } else if (mode === 'mosaic') {
-    (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Mosaic view selected'), 'assertive');
-  }
-};
-
-;// CONCATENATED MODULE: ./node_modules/rememo/es/rememo.js
-
-
-var LEAF_KEY, hasWeakMap;
-
-/**
- * Arbitrary value used as key for referencing cache object in WeakMap tree.
- *
- * @type {Object}
- */
-LEAF_KEY = {};
-
-/**
- * Whether environment supports WeakMap.
- *
- * @type {boolean}
- */
-hasWeakMap = typeof WeakMap !== 'undefined';
-
-/**
- * Returns the first argument as the sole entry in an array.
- *
- * @param {*} value Value to return.
- *
- * @return {Array} Value returned as entry in array.
- */
-function arrayOf( value ) {
-	return [ value ];
-}
-
-/**
- * Returns true if the value passed is object-like, or false otherwise. A value
- * is object-like if it can support property assignment, e.g. object or array.
- *
- * @param {*} value Value to test.
- *
- * @return {boolean} Whether value is object-like.
- */
-function isObjectLike( value ) {
-	return !! value && 'object' === typeof value;
-}
-
-/**
- * Creates and returns a new cache object.
- *
- * @return {Object} Cache object.
- */
-function createCache() {
-	var cache = {
-		clear: function() {
-			cache.head = null;
-		},
-	};
-
-	return cache;
-}
-
-/**
- * Returns true if entries within the two arrays are strictly equal by
- * reference from a starting index.
- *
- * @param {Array}  a         First array.
- * @param {Array}  b         Second array.
- * @param {number} fromIndex Index from which to start comparison.
- *
- * @return {boolean} Whether arrays are shallowly equal.
- */
-function isShallowEqual( a, b, fromIndex ) {
-	var i;
-
-	if ( a.length !== b.length ) {
-		return false;
-	}
-
-	for ( i = fromIndex; i < a.length; i++ ) {
-		if ( a[ i ] !== b[ i ] ) {
-			return false;
-		}
-	}
-
-	return true;
-}
-
-/**
- * Returns a memoized selector function. The getDependants function argument is
- * called before the memoized selector and is expected to return an immutable
- * reference or array of references on which the selector depends for computing
- * its own return value. The memoize cache is preserved only as long as those
- * dependant references remain the same. If getDependants returns a different
- * reference(s), the cache is cleared and the selector value regenerated.
- *
- * @param {Function} selector      Selector function.
- * @param {Function} getDependants Dependant getter returning an immutable
- *                                 reference or array of reference used in
- *                                 cache bust consideration.
- *
- * @return {Function} Memoized selector.
- */
-/* harmony default export */ function rememo(selector, getDependants ) {
-	var rootCache, getCache;
-
-	// Use object source as dependant if getter not provided
-	if ( ! getDependants ) {
-		getDependants = arrayOf;
-	}
-
-	/**
-	 * Returns the root cache. If WeakMap is supported, this is assigned to the
-	 * root WeakMap cache set, otherwise it is a shared instance of the default
-	 * cache object.
-	 *
-	 * @return {(WeakMap|Object)} Root cache object.
-	 */
-	function getRootCache() {
-		return rootCache;
-	}
-
-	/**
-	 * Returns the cache for a given dependants array. When possible, a WeakMap
-	 * will be used to create a unique cache for each set of dependants. This
-	 * is feasible due to the nature of WeakMap in allowing garbage collection
-	 * to occur on entries where the key object is no longer referenced. Since
-	 * WeakMap requires the key to be an object, this is only possible when the
-	 * dependant is object-like. The root cache is created as a hierarchy where
-	 * each top-level key is the first entry in a dependants set, the value a
-	 * WeakMap where each key is the next dependant, and so on. This continues
-	 * so long as the dependants are object-like. If no dependants are object-
-	 * like, then the cache is shared across all invocations.
-	 *
-	 * @see isObjectLike
-	 *
-	 * @param {Array} dependants Selector dependants.
-	 *
-	 * @return {Object} Cache object.
-	 */
-	function getWeakMapCache( dependants ) {
-		var caches = rootCache,
-			isUniqueByDependants = true,
-			i, dependant, map, cache;
-
-		for ( i = 0; i < dependants.length; i++ ) {
-			dependant = dependants[ i ];
-
-			// Can only compose WeakMap from object-like key.
-			if ( ! isObjectLike( dependant ) ) {
-				isUniqueByDependants = false;
-				break;
-			}
-
-			// Does current segment of cache already have a WeakMap?
-			if ( caches.has( dependant ) ) {
-				// Traverse into nested WeakMap.
-				caches = caches.get( dependant );
-			} else {
-				// Create, set, and traverse into a new one.
-				map = new WeakMap();
-				caches.set( dependant, map );
-				caches = map;
-			}
-		}
-
-		// We use an arbitrary (but consistent) object as key for the last item
-		// in the WeakMap to serve as our running cache.
-		if ( ! caches.has( LEAF_KEY ) ) {
-			cache = createCache();
-			cache.isUniqueByDependants = isUniqueByDependants;
-			caches.set( LEAF_KEY, cache );
-		}
-
-		return caches.get( LEAF_KEY );
-	}
-
-	// Assign cache handler by availability of WeakMap
-	getCache = hasWeakMap ? getWeakMapCache : getRootCache;
-
-	/**
-	 * Resets root memoization cache.
-	 */
-	function clear() {
-		rootCache = hasWeakMap ? new WeakMap() : createCache();
-	}
-
-	// eslint-disable-next-line jsdoc/check-param-names
-	/**
-	 * The augmented selector call, considering first whether dependants have
-	 * changed before passing it to underlying memoize function.
-	 *
-	 * @param {Object} source    Source object for derivation.
-	 * @param {...*}   extraArgs Additional arguments to pass to selector.
-	 *
-	 * @return {*} Selector result.
-	 */
-	function callSelector( /* source, ...extraArgs */ ) {
-		var len = arguments.length,
-			cache, node, i, args, dependants;
-
-		// Create copy of arguments (avoid leaking deoptimization).
-		args = new Array( len );
-		for ( i = 0; i < len; i++ ) {
-			args[ i ] = arguments[ i ];
-		}
-
-		dependants = getDependants.apply( null, args );
-		cache = getCache( dependants );
-
-		// If not guaranteed uniqueness by dependants (primitive type or lack
-		// of WeakMap support), shallow compare against last dependants and, if
-		// references have changed, destroy cache to recalculate result.
-		if ( ! cache.isUniqueByDependants ) {
-			if ( cache.lastDependants && ! isShallowEqual( dependants, cache.lastDependants, 0 ) ) {
-				cache.clear();
-			}
-
-			cache.lastDependants = dependants;
-		}
-
-		node = cache.head;
-		while ( node ) {
-			// Check whether node arguments match arguments
-			if ( ! isShallowEqual( node.args, args, 1 ) ) {
-				node = node.next;
-				continue;
-			}
-
-			// At this point we can assume we've found a match
-
-			// Surface matched node to head if not already
-			if ( node !== cache.head ) {
-				// Adjust siblings to point to each other.
-				node.prev.next = node.next;
-				if ( node.next ) {
-					node.next.prev = node.prev;
-				}
-
-				node.next = cache.head;
-				node.prev = null;
-				cache.head.prev = node;
-				cache.head = node;
-			}
-
-			// Return immediately
-			return node.val;
-		}
-
-		// No cached value found. Continue to insertion phase:
-
-		node = {
-			// Generate the result from original function
-			val: selector.apply( null, args ),
-		};
-
-		// Avoid including the source object in the cache.
-		args[ 0 ] = null;
-		node.args = args;
-
-		// Don't need to check whether node is already head, since it would
-		// have been returned above already if it was
-
-		// Shift existing head down list
-		if ( cache.head ) {
-			cache.head.prev = node;
-			node.next = cache.head;
-		}
-
-		cache.head = node;
-
-		return node.val;
-	}
-
-	callSelector.getDependants = getDependants;
-	callSelector.clear = clear;
-	clear();
-
-	return callSelector;
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js
-/**
- * External dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-function isTemplateSuperseded(slug, existingSlugs, showOnFront) {
-  if (!TEMPLATE_OVERRIDES[slug]) {
-    return false;
-  } // `home` template is unused if it is superseded by `front-page`
-  // or "show on front" is set to show a page rather than blog posts.
-
-
-  if (slug === 'home' && showOnFront !== 'posts') {
-    return true;
-  }
-
-  return TEMPLATE_OVERRIDES[slug].every(overrideSlug => existingSlugs.includes(overrideSlug) || isTemplateSuperseded(overrideSlug, existingSlugs, showOnFront));
-}
-function getTemplateLocation(slug) {
-  const isTopLevelTemplate = TEMPLATES_TOP_LEVEL.includes(slug);
-
-  if (isTopLevelTemplate) {
-    return MENU_TEMPLATES;
-  }
-
-  const isGeneralTemplate = TEMPLATES_GENERAL.includes(slug);
-
-  if (isGeneralTemplate) {
-    return MENU_TEMPLATES_GENERAL;
-  }
-
-  const isPostsTemplate = TEMPLATES_POSTS_PREFIXES.some(prefix => slug.startsWith(prefix));
-
-  if (isPostsTemplate) {
-    return MENU_TEMPLATES_POSTS;
-  }
-
-  const isPagesTemplate = TEMPLATES_PAGES_PREFIXES.some(prefix => slug.startsWith(prefix));
-
-  if (isPagesTemplate) {
-    return MENU_TEMPLATES_PAGES;
-  }
-
-  return MENU_TEMPLATES_GENERAL;
-}
-function getUnusedTemplates(templates, showOnFront) {
-  const templateSlugs = map(templates, 'slug');
-  const supersededTemplates = templates.filter(_ref => {
-    let {
-      slug
-    } = _ref;
-    return isTemplateSuperseded(slug, templateSlugs, showOnFront);
-  });
-  return supersededTemplates;
-}
-function getTemplatesLocationMap(templates) {
-  return templates.reduce((obj, template) => {
-    obj[template.slug] = getTemplateLocation(template.slug);
-    return obj;
-  }, {});
-}
+  dispatch({
+    type: 'SET_HAS_PAGE_CONTENT_FOCUS',
+    hasPageContentFocus
+  });
+};
+
+/**
+ * Action that toggles Distraction free mode.
+ * Distraction free mode expects there are no sidebars, as due to the
+ * z-index values set, you can't close sidebars.
+ *
+ * @deprecated
+ */
+const toggleDistractionFree = () => ({
+  registry
+}) => {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).toggleDistractionFree", {
+    since: '6.6',
+    alternative: "dispatch( 'core/editor').toggleDistractionFree"
+  });
+  registry.dispatch(external_wp_editor_namespaceObject.store).toggleDistractionFree();
+};
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/private-actions.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Action that switches the canvas mode.
+ *
+ * @param {?string} mode Canvas mode.
+ */
+const setCanvasMode = mode => ({
+  registry,
+  dispatch
+}) => {
+  const isMediumOrBigger = window.matchMedia('(min-width: 782px)').matches;
+  const switchCanvasMode = () => {
+    registry.batch(() => {
+      registry.dispatch(external_wp_blockEditor_namespaceObject.store).clearSelectedBlock();
+      registry.dispatch(external_wp_editor_namespaceObject.store).setDeviceType('Desktop');
+      registry.dispatch(external_wp_blockEditor_namespaceObject.store).__unstableSetEditorMode('edit');
+      const isPublishSidebarOpened = registry.select(external_wp_editor_namespaceObject.store).isPublishSidebarOpened();
+      dispatch({
+        type: 'SET_CANVAS_MODE',
+        mode
+      });
+      const isEditMode = mode === 'edit';
+      if (isPublishSidebarOpened && !isEditMode) {
+        registry.dispatch(external_wp_editor_namespaceObject.store).closePublishSidebar();
+      }
+
+      // Check if the block list view should be open by default.
+      // If `distractionFree` mode is enabled, the block list view should not be open.
+      // This behavior is disabled for small viewports.
+      if (isMediumOrBigger && isEditMode && registry.select(external_wp_preferences_namespaceObject.store).get('core', 'showListViewByDefault') && !registry.select(external_wp_preferences_namespaceObject.store).get('core', 'distractionFree')) {
+        registry.dispatch(external_wp_editor_namespaceObject.store).setIsListViewOpened(true);
+      } else {
+        registry.dispatch(external_wp_editor_namespaceObject.store).setIsListViewOpened(false);
+      }
+      registry.dispatch(external_wp_editor_namespaceObject.store).setIsInserterOpened(false);
+    });
+  };
+
+  /*
+   * Skip transition in mobile, otherwise it crashes the browser.
+   * See: https://github.com/WordPress/gutenberg/pull/63002.
+   */
+  if (!isMediumOrBigger || !document.startViewTransition) {
+    switchCanvasMode();
+  } else {
+    document.documentElement.classList.add(`canvas-mode-${mode}-transition`);
+    const transition = document.startViewTransition(() => switchCanvasMode());
+    transition.finished.finally(() => {
+      document.documentElement.classList.remove(`canvas-mode-${mode}-transition`);
+    });
+  }
+};
+
+/**
+ * Action that switches the editor canvas container view.
+ *
+ * @param {?string} view Editor canvas container view.
+ */
+const setEditorCanvasContainerView = view => ({
+  dispatch
+}) => {
+  dispatch({
+    type: 'SET_EDITOR_CANVAS_CONTAINER_VIEW',
+    view
+  });
+};
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/selectors.js
 /**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
 
 
 /**
@@ -3497,43 +8813,40 @@
  */
 
 /**
- * Helper for getting a preference from the preferences store.
- *
- * This is only present so that `getSettings` doesn't need to be made a
- * registry selector.
- *
- * It's unstable because the selector needs to be exported and so part of the
- * public API to work.
- */
-
-const __unstableGetPreference = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, name) => select(external_wp_preferences_namespaceObject.store).get('core/edit-site', name));
-/**
  * Returns whether the given feature is enabled or not.
  *
+ * @deprecated
  * @param {Object} state       Global application state.
  * @param {string} featureName Feature slug.
  *
  * @return {boolean} Is active.
  */
-
-function selectors_isFeatureActive(state, featureName) {
-  external_wp_deprecated_default()(`select( 'core/interface' ).isFeatureActive`, {
+const isFeatureActive = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (_, featureName) => {
+  external_wp_deprecated_default()(`select( 'core/edit-site' ).isFeatureActive`, {
     since: '6.0',
     alternative: `select( 'core/preferences' ).get`
   });
-  return !!__unstableGetPreference(state, featureName);
-}
+  return !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', featureName);
+});
+
 /**
  * Returns the current editing canvas device type.
  *
+ * @deprecated
+ *
  * @param {Object} state Global application state.
  *
  * @return {string} Device type.
  */
-
-function __experimentalGetPreviewDeviceType(state) {
-  return state.deviceType;
-}
+const __experimentalGetPreviewDeviceType = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
+  external_wp_deprecated_default()(`select( 'core/edit-site' ).__experimentalGetPreviewDeviceType`, {
+    since: '6.5',
+    version: '6.7',
+    alternative: `select( 'core/editor' ).getDeviceType`
+  });
+  return select(external_wp_editor_namespaceObject.store).getDeviceType();
+});
+
 /**
  * Returns whether the current user can create media or not.
  *
@@ -3541,8 +8854,8 @@
  *
  * @return {Object} Whether the current user can create media or not.
  */
-
 const getCanUserCreateMedia = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => select(external_wp_coreData_namespaceObject.store).canUser('create', 'media'));
+
 /**
  * Returns any available Reusable blocks.
  *
@@ -3550,241 +8863,159 @@
  *
  * @return {Array} The available reusable blocks.
  */
-
 const getReusableBlocks = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
+  external_wp_deprecated_default()("select( 'core/core' ).getEntityRecords( 'postType', 'wp_block' )", {
+    since: '6.5',
+    version: '6.8'
+  });
   const isWeb = external_wp_element_namespaceObject.Platform.OS === 'web';
   return isWeb ? select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_block', {
     per_page: -1
   }) : [];
 });
-/**
- * Returns the settings, taking into account active features and permissions.
- *
- * @param {Object}   state             Global application state.
- * @param {Function} setIsInserterOpen Setter for the open state of the global inserter.
+
+/**
+ * Returns the site editor settings.
+ *
+ * @param {Object} state Global application state.
  *
  * @return {Object} Settings.
  */
-
-const getSettings = rememo((state, setIsInserterOpen) => {
-  const settings = { ...state.settings,
-    outlineMode: true,
-    focusMode: !!__unstableGetPreference(state, 'focusMode'),
-    hasFixedToolbar: !!__unstableGetPreference(state, 'fixedToolbar'),
-    keepCaretInsideBlock: !!__unstableGetPreference(state, 'keepCaretInsideBlock'),
-    showIconLabels: !!__unstableGetPreference(state, 'showIconLabels'),
-    __experimentalSetIsInserterOpened: setIsInserterOpen,
-    __experimentalReusableBlocks: getReusableBlocks(state),
-    __experimentalPreferPatternsOnRoot: 'wp_template' === getEditedPostType(state)
-  };
-  const canUserCreateMedia = getCanUserCreateMedia(state);
-
-  if (!canUserCreateMedia) {
-    return settings;
-  }
-
-  settings.mediaUpload = _ref => {
-    let {
-      onError,
-      ...rest
-    } = _ref;
-    (0,external_wp_mediaUtils_namespaceObject.uploadMedia)({
-      wpAllowedMimeTypes: state.settings.allowedMimeTypes,
-      onError: _ref2 => {
-        let {
-          message
-        } = _ref2;
-        return onError(message);
-      },
-      ...rest
-    });
-  };
-
-  return settings;
-}, state => [getCanUserCreateMedia(state), state.settings, __unstableGetPreference(state, 'focusMode'), __unstableGetPreference(state, 'fixedToolbar'), __unstableGetPreference(state, 'keepCaretInsideBlock'), __unstableGetPreference(state, 'showIconLabels'), getReusableBlocks(state), getEditedPostType(state)]);
-/**
- * Returns the current home template ID.
- *
- * @param {Object} state Global application state.
- *
- * @return {number?} Home template ID.
- */
-
-function getHomeTemplateId(state) {
-  return state.homeTemplateId;
-}
-
-function getCurrentEditedPost(state) {
-  return state.editedPost;
-}
+function getSettings(state) {
+  // It is important that we don't inject anything into these settings locally.
+  // The reason for this is that we have an effect in place that calls setSettings based on the previous value of getSettings.
+  // If we add computed settings here, we'll be adding these computed settings to the state which is very unexpected.
+  return state.settings;
+}
+
+/**
+ * @deprecated
+ */
+function getHomeTemplateId() {
+  external_wp_deprecated_default()("select( 'core/edit-site' ).getHomeTemplateId", {
+    since: '6.2',
+    version: '6.4'
+  });
+}
+
 /**
  * Returns the current edited post type (wp_template or wp_template_part).
  *
  * @param {Object} state Global application state.
  *
- * @return {TemplateType?} Template type.
- */
-
-
+ * @return {?TemplateType} Template type.
+ */
 function getEditedPostType(state) {
-  return getCurrentEditedPost(state).type;
-}
+  return state.editedPost.postType;
+}
+
 /**
  * Returns the ID of the currently edited template or template part.
  *
  * @param {Object} state Global application state.
  *
- * @return {string?} Post ID.
- */
-
+ * @return {?string} Post ID.
+ */
 function getEditedPostId(state) {
-  return getCurrentEditedPost(state).id;
-}
+  return state.editedPost.id;
+}
+
+/**
+ * Returns the edited post's context object.
+ *
+ * @deprecated
+ * @param {Object} state Global application state.
+ *
+ * @return {Object} Page.
+ */
+function getEditedPostContext(state) {
+  return state.editedPost.context;
+}
+
 /**
  * Returns the current page object.
  *
+ * @deprecated
  * @param {Object} state Global application state.
  *
  * @return {Object} Page.
  */
-
 function getPage(state) {
-  return getCurrentEditedPost(state).page;
-}
-/**
- * Returns the active menu in the navigation panel.
- *
- * @param {Object} state Global application state.
- *
- * @return {string} Active menu.
- */
-
-function getNavigationPanelActiveMenu(state) {
-  return state.navigationPanel.menu;
-}
-/**
- * Returns the current template or template part's corresponding
- * navigation panel's sub menu, to be used with `openNavigationPanelToMenu`.
+  return {
+    context: state.editedPost.context
+  };
+}
+
+/**
+ * Returns true if the inserter is opened.
+ *
+ * @deprecated
  *
  * @param {Object} state Global application state.
  *
- * @return {string} The current template or template part's sub menu.
- */
-
-const getCurrentTemplateNavigationPanelSubMenu = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
-  const templateType = getEditedPostType(state);
-  const templateId = getEditedPostId(state);
-  const template = templateId ? select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', templateType, templateId) : null;
-
-  if (!template) {
-    return MENU_ROOT;
-  }
-
-  if ('wp_template_part' === templateType) {
-    var _TEMPLATE_PARTS_SUB_M;
-
-    return ((_TEMPLATE_PARTS_SUB_M = TEMPLATE_PARTS_SUB_MENUS.find(submenu => submenu.area === (template === null || template === void 0 ? void 0 : template.area))) === null || _TEMPLATE_PARTS_SUB_M === void 0 ? void 0 : _TEMPLATE_PARTS_SUB_M.menu) || MENU_TEMPLATE_PARTS;
-  }
-
-  const templates = select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_template');
-  const showOnFront = select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('root', 'site').show_on_front;
-
-  if (isTemplateSuperseded(template.slug, (0,external_lodash_namespaceObject.map)(templates, 'slug'), showOnFront)) {
-    return MENU_TEMPLATES_UNUSED;
-  }
-
-  return getTemplateLocation(template.slug);
-});
-/**
- * Returns the current opened/closed state of the navigation panel.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} True if the navigation panel should be open; false if closed.
- */
-
-function isNavigationOpened(state) {
-  return state.navigationPanel.isOpen;
-}
-/**
- * Returns the current opened/closed state of the inserter panel.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} True if the inserter panel should be open; false if closed.
- */
-
-function isInserterOpened(state) {
-  return !!state.blockInserterPanel;
-}
+ * @return {boolean} Whether the inserter is opened.
+ */
+const isInserterOpened = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
+  external_wp_deprecated_default()(`select( 'core/edit-site' ).isInserterOpened`, {
+    since: '6.5',
+    alternative: `select( 'core/editor' ).isInserterOpened`
+  });
+  return select(external_wp_editor_namespaceObject.store).isInserterOpened();
+});
+
 /**
  * Get the insertion point for the inserter.
  *
+ * @deprecated
+ *
  * @param {Object} state Global application state.
  *
  * @return {Object} The root client ID, index to insert at and starting filter value.
  */
-
-function __experimentalGetInsertionPoint(state) {
-  const {
-    rootClientId,
-    insertionIndex,
-    filterValue
-  } = state.blockInserterPanel;
-  return {
-    rootClientId,
-    insertionIndex,
-    filterValue
-  };
-}
-/**
- * Returns the current opened/closed state of the list view panel.
+const __experimentalGetInsertionPoint = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
+  external_wp_deprecated_default()(`select( 'core/edit-site' ).__experimentalGetInsertionPoint`, {
+    since: '6.5',
+    version: '6.7'
+  });
+  return lock_unlock_unlock(select(external_wp_editor_namespaceObject.store)).getInsertionPoint();
+});
+
+/**
+ * Returns true if the list view is opened.
  *
  * @param {Object} state Global application state.
  *
- * @return {boolean} True if the list view panel should be open; false if closed.
- */
-
-function isListViewOpened(state) {
-  return state.listViewPanel;
-}
+ * @return {boolean} Whether the list view is opened.
+ */
+const isListViewOpened = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
+  external_wp_deprecated_default()(`select( 'core/edit-site' ).isListViewOpened`, {
+    since: '6.5',
+    alternative: `select( 'core/editor' ).isListViewOpened`
+  });
+  return select(external_wp_editor_namespaceObject.store).isListViewOpened();
+});
+
+/**
+ * Returns the current opened/closed state of the save panel.
+ *
+ * @param {Object} state Global application state.
+ *
+ * @return {boolean} True if the save panel should be open; false if closed.
+ */
+function isSaveViewOpened(state) {
+  return state.saveViewPanel;
+}
+
 /**
  * Returns the template parts and their blocks for the current edited template.
  *
  * @param {Object} state Global application state.
  * @return {Array} Template parts and their blocks in an array.
  */
-
-const getCurrentTemplateTemplateParts = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
-  var _template$blocks;
-
-  const templateType = getEditedPostType(state);
-  const templateId = getEditedPostId(state);
-  const template = select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('postType', templateType, templateId);
-  const templateParts = select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_template_part', {
-    per_page: -1
-  });
-  const templatePartsById = (0,external_lodash_namespaceObject.keyBy)(templateParts, templatePart => templatePart.id);
-  return ((_template$blocks = template.blocks) !== null && _template$blocks !== void 0 ? _template$blocks : []).filter(block => (0,external_wp_blocks_namespaceObject.isTemplatePart)(block)).map(block => {
-    const {
-      attributes: {
-        theme,
-        slug
-      }
-    } = block;
-    const templatePartId = `${theme}//${slug}`;
-    const templatePart = templatePartsById[templatePartId];
-    return {
-      templatePart,
-      block
-    };
-  }).filter(_ref3 => {
-    let {
-      templatePart
-    } = _ref3;
-    return !!templatePart;
-  });
-});
+const getCurrentTemplateTemplateParts = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
+  return lock_unlock_unlock(select(external_wp_editor_namespaceObject.store)).getCurrentTemplateTemplateParts();
+});
+
 /**
  * Returns the current editing mode.
  *
@@ -3792,19 +9023,109 @@
  *
  * @return {string} Editing mode.
  */
-
-function getEditorMode(state) {
-  return __unstableGetPreference(state, 'editorMode');
-}
+const getEditorMode = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
+  return select(external_wp_preferences_namespaceObject.store).get('core', 'editorMode');
+});
+
+/**
+ * @deprecated
+ */
+function getCurrentTemplateNavigationPanelSubMenu() {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).getCurrentTemplateNavigationPanelSubMenu", {
+    since: '6.2',
+    version: '6.4'
+  });
+}
+
+/**
+ * @deprecated
+ */
+function getNavigationPanelActiveMenu() {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).getNavigationPanelActiveMenu", {
+    since: '6.2',
+    version: '6.4'
+  });
+}
+
+/**
+ * @deprecated
+ */
+function isNavigationOpened() {
+  external_wp_deprecated_default()("dispatch( 'core/edit-site' ).isNavigationOpened", {
+    since: '6.2',
+    version: '6.4'
+  });
+}
+
+/**
+ * Whether or not the editor has a page loaded into it.
+ *
+ * @see setPage
+ *
+ * @param {Object} state Global application state.
+ *
+ * @return {boolean} Whether or not the editor has a page loaded into it.
+ */
+function isPage(state) {
+  return !!state.editedPost.context?.postId;
+}
+
+/**
+ * Whether or not the editor allows only page content to be edited.
+ *
+ * @deprecated
+ *
+ * @return {boolean} Whether or not focus is on editing page content.
+ */
+function hasPageContentFocus() {
+  external_wp_deprecated_default()(`select( 'core/edit-site' ).hasPageContentFocus`, {
+    since: '6.5'
+  });
+  return false;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/private-selectors.js
+/**
+ * Returns the current canvas mode.
+ *
+ * @param {Object} state Global application state.
+ *
+ * @return {string} Canvas mode.
+ */
+function getCanvasMode(state) {
+  return state.canvasMode;
+}
+
+/**
+ * Returns the editor canvas container view.
+ *
+ * @param {Object} state Global application state.
+ *
+ * @return {string} Editor canvas container view.
+ */
+function getEditorCanvasContainerView(state) {
+  return state.editorCanvasContainerView;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/constants.js
+/**
+ * The identifier for the data store.
+ *
+ * @type {string}
+ */
+const STORE_NAME = 'core/edit-site';
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/index.js
 /**
  * WordPress dependencies
  */
 
-/**
- * Internal dependencies
- */
+
+/**
+ * Internal dependencies
+ */
+
+
 
 
 
@@ -3812,7099 +9133,688 @@
 
 const storeConfig = {
   reducer: reducer,
-  actions: store_actions_namespaceObject,
-  selectors: store_selectors_namespaceObject
-};
-const store_store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, storeConfig);
-(0,external_wp_data_namespaceObject.register)(store_store);
-
-;// CONCATENATED MODULE: ./node_modules/history/index.js
-
-
-/**
- * Actions represent the type of change to a location value.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#action
- */
-var Action;
-
-(function (Action) {
-  /**
-   * A POP indicates a change to an arbitrary index in the history stack, such
-   * as a back or forward navigation. It does not describe the direction of the
-   * navigation, only that the current index changed.
-   *
-   * Note: This is the default action for newly created history objects.
-   */
-  Action["Pop"] = "POP";
-  /**
-   * A PUSH indicates a new entry being added to the history stack, such as when
-   * a link is clicked and a new page loads. When this happens, all subsequent
-   * entries in the stack are lost.
-   */
-
-  Action["Push"] = "PUSH";
-  /**
-   * A REPLACE indicates the entry at the current index in the history stack
-   * being replaced by a new one.
-   */
-
-  Action["Replace"] = "REPLACE";
-})(Action || (Action = {}));
-
-var readOnly =  false ? 0 : function (obj) {
-  return obj;
-};
-
-function warning(cond, message) {
-  if (!cond) {
-    // eslint-disable-next-line no-console
-    if (typeof console !== 'undefined') console.warn(message);
-
-    try {
-      // Welcome to debugging history!
-      //
-      // This error is thrown as a convenience so you can more easily
-      // find the source for a warning that appears in the console by
-      // enabling "pause on exceptions" in your JavaScript debugger.
-      throw new Error(message); // eslint-disable-next-line no-empty
-    } catch (e) {}
-  }
-}
-
-var BeforeUnloadEventType = 'beforeunload';
-var HashChangeEventType = 'hashchange';
-var PopStateEventType = 'popstate';
-/**
- * Browser history stores the location in regular URLs. This is the standard for
- * most web apps, but it requires some configuration on the server to ensure you
- * serve the same app at multiple URLs.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory
- */
-
-function createBrowserHistory(options) {
-  if (options === void 0) {
-    options = {};
-  }
-
-  var _options = options,
-      _options$window = _options.window,
-      window = _options$window === void 0 ? document.defaultView : _options$window;
-  var globalHistory = window.history;
-
-  function getIndexAndLocation() {
-    var _window$location = window.location,
-        pathname = _window$location.pathname,
-        search = _window$location.search,
-        hash = _window$location.hash;
-    var state = globalHistory.state || {};
-    return [state.idx, readOnly({
-      pathname: pathname,
-      search: search,
-      hash: hash,
-      state: state.usr || null,
-      key: state.key || 'default'
-    })];
-  }
-
-  var blockedPopTx = null;
-
-  function handlePop() {
-    if (blockedPopTx) {
-      blockers.call(blockedPopTx);
-      blockedPopTx = null;
-    } else {
-      var nextAction = Action.Pop;
-
-      var _getIndexAndLocation = getIndexAndLocation(),
-          nextIndex = _getIndexAndLocation[0],
-          nextLocation = _getIndexAndLocation[1];
-
-      if (blockers.length) {
-        if (nextIndex != null) {
-          var delta = index - nextIndex;
-
-          if (delta) {
-            // Revert the POP
-            blockedPopTx = {
-              action: nextAction,
-              location: nextLocation,
-              retry: function retry() {
-                go(delta * -1);
-              }
-            };
-            go(delta);
-          }
-        } else {
-          // Trying to POP to a location with no index. We did not create
-          // this location, so we can't effectively block the navigation.
-           false ? 0 : void 0;
-        }
-      } else {
-        applyTx(nextAction);
-      }
-    }
-  }
-
-  window.addEventListener(PopStateEventType, handlePop);
-  var action = Action.Pop;
-
-  var _getIndexAndLocation2 = getIndexAndLocation(),
-      index = _getIndexAndLocation2[0],
-      location = _getIndexAndLocation2[1];
-
-  var listeners = createEvents();
-  var blockers = createEvents();
-
-  if (index == null) {
-    index = 0;
-    globalHistory.replaceState(extends_extends({}, globalHistory.state, {
-      idx: index
-    }), '');
-  }
-
-  function createHref(to) {
-    return typeof to === 'string' ? to : createPath(to);
-  } // state defaults to `null` because `window.history.state` does
-
-
-  function getNextLocation(to, state) {
-    if (state === void 0) {
-      state = null;
-    }
-
-    return readOnly(extends_extends({
-      pathname: location.pathname,
-      hash: '',
-      search: ''
-    }, typeof to === 'string' ? parsePath(to) : to, {
-      state: state,
-      key: createKey()
-    }));
-  }
-
-  function getHistoryStateAndUrl(nextLocation, index) {
-    return [{
-      usr: nextLocation.state,
-      key: nextLocation.key,
-      idx: index
-    }, createHref(nextLocation)];
-  }
-
-  function allowTx(action, location, retry) {
-    return !blockers.length || (blockers.call({
-      action: action,
-      location: location,
-      retry: retry
-    }), false);
-  }
-
-  function applyTx(nextAction) {
-    action = nextAction;
-
-    var _getIndexAndLocation3 = getIndexAndLocation();
-
-    index = _getIndexAndLocation3[0];
-    location = _getIndexAndLocation3[1];
-    listeners.call({
-      action: action,
-      location: location
-    });
-  }
-
-  function push(to, state) {
-    var nextAction = Action.Push;
-    var nextLocation = getNextLocation(to, state);
-
-    function retry() {
-      push(to, state);
-    }
-
-    if (allowTx(nextAction, nextLocation, retry)) {
-      var _getHistoryStateAndUr = getHistoryStateAndUrl(nextLocation, index + 1),
-          historyState = _getHistoryStateAndUr[0],
-          url = _getHistoryStateAndUr[1]; // TODO: Support forced reloading
-      // try...catch because iOS limits us to 100 pushState calls :/
-
-
-      try {
-        globalHistory.pushState(historyState, '', url);
-      } catch (error) {
-        // They are going to lose state here, but there is no real
-        // way to warn them about it since the page will refresh...
-        window.location.assign(url);
-      }
-
-      applyTx(nextAction);
-    }
-  }
-
-  function replace(to, state) {
-    var nextAction = Action.Replace;
-    var nextLocation = getNextLocation(to, state);
-
-    function retry() {
-      replace(to, state);
-    }
-
-    if (allowTx(nextAction, nextLocation, retry)) {
-      var _getHistoryStateAndUr2 = getHistoryStateAndUrl(nextLocation, index),
-          historyState = _getHistoryStateAndUr2[0],
-          url = _getHistoryStateAndUr2[1]; // TODO: Support forced reloading
-
-
-      globalHistory.replaceState(historyState, '', url);
-      applyTx(nextAction);
-    }
-  }
-
-  function go(delta) {
-    globalHistory.go(delta);
-  }
-
-  var history = {
-    get action() {
-      return action;
-    },
-
-    get location() {
-      return location;
-    },
-
-    createHref: createHref,
-    push: push,
-    replace: replace,
-    go: go,
-    back: function back() {
-      go(-1);
-    },
-    forward: function forward() {
-      go(1);
-    },
-    listen: function listen(listener) {
-      return listeners.push(listener);
-    },
-    block: function block(blocker) {
-      var unblock = blockers.push(blocker);
-
-      if (blockers.length === 1) {
-        window.addEventListener(BeforeUnloadEventType, promptBeforeUnload);
-      }
-
-      return function () {
-        unblock(); // Remove the beforeunload listener so the document may
-        // still be salvageable in the pagehide event.
-        // See https://html.spec.whatwg.org/#unloading-documents
-
-        if (!blockers.length) {
-          window.removeEventListener(BeforeUnloadEventType, promptBeforeUnload);
-        }
-      };
-    }
-  };
-  return history;
-}
-/**
- * Hash history stores the location in window.location.hash. This makes it ideal
- * for situations where you don't want to send the location to the server for
- * some reason, either because you do cannot configure it or the URL space is
- * reserved for something else.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory
- */
-
-function createHashHistory(options) {
-  if (options === void 0) {
-    options = {};
-  }
-
-  var _options2 = options,
-      _options2$window = _options2.window,
-      window = _options2$window === void 0 ? document.defaultView : _options2$window;
-  var globalHistory = window.history;
-
-  function getIndexAndLocation() {
-    var _parsePath = parsePath(window.location.hash.substr(1)),
-        _parsePath$pathname = _parsePath.pathname,
-        pathname = _parsePath$pathname === void 0 ? '/' : _parsePath$pathname,
-        _parsePath$search = _parsePath.search,
-        search = _parsePath$search === void 0 ? '' : _parsePath$search,
-        _parsePath$hash = _parsePath.hash,
-        hash = _parsePath$hash === void 0 ? '' : _parsePath$hash;
-
-    var state = globalHistory.state || {};
-    return [state.idx, readOnly({
-      pathname: pathname,
-      search: search,
-      hash: hash,
-      state: state.usr || null,
-      key: state.key || 'default'
-    })];
-  }
-
-  var blockedPopTx = null;
-
-  function handlePop() {
-    if (blockedPopTx) {
-      blockers.call(blockedPopTx);
-      blockedPopTx = null;
-    } else {
-      var nextAction = Action.Pop;
-
-      var _getIndexAndLocation4 = getIndexAndLocation(),
-          nextIndex = _getIndexAndLocation4[0],
-          nextLocation = _getIndexAndLocation4[1];
-
-      if (blockers.length) {
-        if (nextIndex != null) {
-          var delta = index - nextIndex;
-
-          if (delta) {
-            // Revert the POP
-            blockedPopTx = {
-              action: nextAction,
-              location: nextLocation,
-              retry: function retry() {
-                go(delta * -1);
-              }
-            };
-            go(delta);
-          }
-        } else {
-          // Trying to POP to a location with no index. We did not create
-          // this location, so we can't effectively block the navigation.
-           false ? 0 : void 0;
-        }
-      } else {
-        applyTx(nextAction);
-      }
-    }
-  }
-
-  window.addEventListener(PopStateEventType, handlePop); // popstate does not fire on hashchange in IE 11 and old (trident) Edge
-  // https://developer.mozilla.org/de/docs/Web/API/Window/popstate_event
-
-  window.addEventListener(HashChangeEventType, function () {
-    var _getIndexAndLocation5 = getIndexAndLocation(),
-        nextLocation = _getIndexAndLocation5[1]; // Ignore extraneous hashchange events.
-
-
-    if (createPath(nextLocation) !== createPath(location)) {
-      handlePop();
-    }
-  });
-  var action = Action.Pop;
-
-  var _getIndexAndLocation6 = getIndexAndLocation(),
-      index = _getIndexAndLocation6[0],
-      location = _getIndexAndLocation6[1];
-
-  var listeners = createEvents();
-  var blockers = createEvents();
-
-  if (index == null) {
-    index = 0;
-    globalHistory.replaceState(_extends({}, globalHistory.state, {
-      idx: index
-    }), '');
-  }
-
-  function getBaseHref() {
-    var base = document.querySelector('base');
-    var href = '';
-
-    if (base && base.getAttribute('href')) {
-      var url = window.location.href;
-      var hashIndex = url.indexOf('#');
-      href = hashIndex === -1 ? url : url.slice(0, hashIndex);
-    }
-
-    return href;
-  }
-
-  function createHref(to) {
-    return getBaseHref() + '#' + (typeof to === 'string' ? to : createPath(to));
-  }
-
-  function getNextLocation(to, state) {
-    if (state === void 0) {
-      state = null;
-    }
-
-    return readOnly(_extends({
-      pathname: location.pathname,
-      hash: '',
-      search: ''
-    }, typeof to === 'string' ? parsePath(to) : to, {
-      state: state,
-      key: createKey()
-    }));
-  }
-
-  function getHistoryStateAndUrl(nextLocation, index) {
-    return [{
-      usr: nextLocation.state,
-      key: nextLocation.key,
-      idx: index
-    }, createHref(nextLocation)];
-  }
-
-  function allowTx(action, location, retry) {
-    return !blockers.length || (blockers.call({
-      action: action,
-      location: location,
-      retry: retry
-    }), false);
-  }
-
-  function applyTx(nextAction) {
-    action = nextAction;
-
-    var _getIndexAndLocation7 = getIndexAndLocation();
-
-    index = _getIndexAndLocation7[0];
-    location = _getIndexAndLocation7[1];
-    listeners.call({
-      action: action,
-      location: location
-    });
-  }
-
-  function push(to, state) {
-    var nextAction = Action.Push;
-    var nextLocation = getNextLocation(to, state);
-
-    function retry() {
-      push(to, state);
-    }
-
-     false ? 0 : void 0;
-
-    if (allowTx(nextAction, nextLocation, retry)) {
-      var _getHistoryStateAndUr3 = getHistoryStateAndUrl(nextLocation, index + 1),
-          historyState = _getHistoryStateAndUr3[0],
-          url = _getHistoryStateAndUr3[1]; // TODO: Support forced reloading
-      // try...catch because iOS limits us to 100 pushState calls :/
-
-
-      try {
-        globalHistory.pushState(historyState, '', url);
-      } catch (error) {
-        // They are going to lose state here, but there is no real
-        // way to warn them about it since the page will refresh...
-        window.location.assign(url);
-      }
-
-      applyTx(nextAction);
-    }
-  }
-
-  function replace(to, state) {
-    var nextAction = Action.Replace;
-    var nextLocation = getNextLocation(to, state);
-
-    function retry() {
-      replace(to, state);
-    }
-
-     false ? 0 : void 0;
-
-    if (allowTx(nextAction, nextLocation, retry)) {
-      var _getHistoryStateAndUr4 = getHistoryStateAndUrl(nextLocation, index),
-          historyState = _getHistoryStateAndUr4[0],
-          url = _getHistoryStateAndUr4[1]; // TODO: Support forced reloading
-
-
-      globalHistory.replaceState(historyState, '', url);
-      applyTx(nextAction);
-    }
-  }
-
-  function go(delta) {
-    globalHistory.go(delta);
-  }
-
-  var history = {
-    get action() {
-      return action;
-    },
-
-    get location() {
-      return location;
-    },
-
-    createHref: createHref,
-    push: push,
-    replace: replace,
-    go: go,
-    back: function back() {
-      go(-1);
-    },
-    forward: function forward() {
-      go(1);
-    },
-    listen: function listen(listener) {
-      return listeners.push(listener);
-    },
-    block: function block(blocker) {
-      var unblock = blockers.push(blocker);
-
-      if (blockers.length === 1) {
-        window.addEventListener(BeforeUnloadEventType, promptBeforeUnload);
-      }
-
-      return function () {
-        unblock(); // Remove the beforeunload listener so the document may
-        // still be salvageable in the pagehide event.
-        // See https://html.spec.whatwg.org/#unloading-documents
-
-        if (!blockers.length) {
-          window.removeEventListener(BeforeUnloadEventType, promptBeforeUnload);
-        }
-      };
-    }
-  };
-  return history;
-}
-/**
- * Memory history stores the current location in memory. It is designed for use
- * in stateful non-browser environments like tests and React Native.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#creatememoryhistory
- */
-
-function createMemoryHistory(options) {
-  if (options === void 0) {
-    options = {};
-  }
-
-  var _options3 = options,
-      _options3$initialEntr = _options3.initialEntries,
-      initialEntries = _options3$initialEntr === void 0 ? ['/'] : _options3$initialEntr,
-      initialIndex = _options3.initialIndex;
-  var entries = initialEntries.map(function (entry) {
-    var location = readOnly(_extends({
-      pathname: '/',
-      search: '',
-      hash: '',
-      state: null,
-      key: createKey()
-    }, typeof entry === 'string' ? parsePath(entry) : entry));
-     false ? 0 : void 0;
-    return location;
-  });
-  var index = clamp(initialIndex == null ? entries.length - 1 : initialIndex, 0, entries.length - 1);
-  var action = Action.Pop;
-  var location = entries[index];
-  var listeners = createEvents();
-  var blockers = createEvents();
-
-  function createHref(to) {
-    return typeof to === 'string' ? to : createPath(to);
-  }
-
-  function getNextLocation(to, state) {
-    if (state === void 0) {
-      state = null;
-    }
-
-    return readOnly(_extends({
-      pathname: location.pathname,
-      search: '',
-      hash: ''
-    }, typeof to === 'string' ? parsePath(to) : to, {
-      state: state,
-      key: createKey()
-    }));
-  }
-
-  function allowTx(action, location, retry) {
-    return !blockers.length || (blockers.call({
-      action: action,
-      location: location,
-      retry: retry
-    }), false);
-  }
-
-  function applyTx(nextAction, nextLocation) {
-    action = nextAction;
-    location = nextLocation;
-    listeners.call({
-      action: action,
-      location: location
-    });
-  }
-
-  function push(to, state) {
-    var nextAction = Action.Push;
-    var nextLocation = getNextLocation(to, state);
-
-    function retry() {
-      push(to, state);
-    }
-
-     false ? 0 : void 0;
-
-    if (allowTx(nextAction, nextLocation, retry)) {
-      index += 1;
-      entries.splice(index, entries.length, nextLocation);
-      applyTx(nextAction, nextLocation);
-    }
-  }
-
-  function replace(to, state) {
-    var nextAction = Action.Replace;
-    var nextLocation = getNextLocation(to, state);
-
-    function retry() {
-      replace(to, state);
-    }
-
-     false ? 0 : void 0;
-
-    if (allowTx(nextAction, nextLocation, retry)) {
-      entries[index] = nextLocation;
-      applyTx(nextAction, nextLocation);
-    }
-  }
-
-  function go(delta) {
-    var nextIndex = clamp(index + delta, 0, entries.length - 1);
-    var nextAction = Action.Pop;
-    var nextLocation = entries[nextIndex];
-
-    function retry() {
-      go(delta);
-    }
-
-    if (allowTx(nextAction, nextLocation, retry)) {
-      index = nextIndex;
-      applyTx(nextAction, nextLocation);
-    }
-  }
-
-  var history = {
-    get index() {
-      return index;
-    },
-
-    get action() {
-      return action;
-    },
-
-    get location() {
-      return location;
-    },
-
-    createHref: createHref,
-    push: push,
-    replace: replace,
-    go: go,
-    back: function back() {
-      go(-1);
-    },
-    forward: function forward() {
-      go(1);
-    },
-    listen: function listen(listener) {
-      return listeners.push(listener);
-    },
-    block: function block(blocker) {
-      return blockers.push(blocker);
-    }
-  };
-  return history;
-} ////////////////////////////////////////////////////////////////////////////////
-// UTILS
-////////////////////////////////////////////////////////////////////////////////
-
-function clamp(n, lowerBound, upperBound) {
-  return Math.min(Math.max(n, lowerBound), upperBound);
-}
-
-function promptBeforeUnload(event) {
-  // Cancel the event.
-  event.preventDefault(); // Chrome (and legacy IE) requires returnValue to be set.
-
-  event.returnValue = '';
-}
-
-function createEvents() {
-  var handlers = [];
-  return {
-    get length() {
-      return handlers.length;
-    },
-
-    push: function push(fn) {
-      handlers.push(fn);
-      return function () {
-        handlers = handlers.filter(function (handler) {
-          return handler !== fn;
-        });
-      };
-    },
-    call: function call(arg) {
-      handlers.forEach(function (fn) {
-        return fn && fn(arg);
-      });
-    }
-  };
-}
-
-function createKey() {
-  return Math.random().toString(36).substr(2, 8);
-}
-/**
- * Creates a string URL path from the given pathname, search, and hash components.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createpath
- */
-
-
-function createPath(_ref) {
-  var _ref$pathname = _ref.pathname,
-      pathname = _ref$pathname === void 0 ? '/' : _ref$pathname,
-      _ref$search = _ref.search,
-      search = _ref$search === void 0 ? '' : _ref$search,
-      _ref$hash = _ref.hash,
-      hash = _ref$hash === void 0 ? '' : _ref$hash;
-  if (search && search !== '?') pathname += search.charAt(0) === '?' ? search : '?' + search;
-  if (hash && hash !== '#') pathname += hash.charAt(0) === '#' ? hash : '#' + hash;
-  return pathname;
-}
-/**
- * Parses a string URL path into its separate pathname, search, and hash components.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#parsepath
- */
-
-function parsePath(path) {
-  var parsedPath = {};
-
-  if (path) {
-    var hashIndex = path.indexOf('#');
-
-    if (hashIndex >= 0) {
-      parsedPath.hash = path.substr(hashIndex);
-      path = path.substr(0, hashIndex);
-    }
-
-    var searchIndex = path.indexOf('?');
-
-    if (searchIndex >= 0) {
-      parsedPath.search = path.substr(searchIndex);
-      path = path.substr(0, searchIndex);
-    }
-
-    if (path) {
-      parsedPath.pathname = path;
-    }
-  }
-
-  return parsedPath;
-}
-
-
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/history.js
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-const history_history = createBrowserHistory();
-const originalHistoryPush = history_history.push;
-const originalHistoryReplace = history_history.replace;
-
-function push(params, state) {
-  return originalHistoryPush.call(history_history, (0,external_wp_url_namespaceObject.addQueryArgs)(window.location.href, params), state);
-}
-
-function replace(params, state) {
-  return originalHistoryReplace.call(history_history, (0,external_wp_url_namespaceObject.addQueryArgs)(window.location.href, params), state);
-}
-
-history_history.push = push;
-history_history.replace = replace;
-/* harmony default export */ var utils_history = (history_history);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-const RoutesContext = (0,external_wp_element_namespaceObject.createContext)();
-const HistoryContext = (0,external_wp_element_namespaceObject.createContext)();
-function useLocation() {
-  return (0,external_wp_element_namespaceObject.useContext)(RoutesContext);
-}
-function useHistory() {
-  return (0,external_wp_element_namespaceObject.useContext)(HistoryContext);
-}
-
-function getLocationWithParams(location) {
-  const searchParams = new URLSearchParams(location.search);
-  return { ...location,
-    params: Object.fromEntries(searchParams.entries())
-  };
-}
-
-function Routes(_ref) {
-  let {
-    children
-  } = _ref;
-  const [location, setLocation] = (0,external_wp_element_namespaceObject.useState)(() => getLocationWithParams(utils_history.location));
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    return utils_history.listen(_ref2 => {
-      let {
-        location: updatedLocation
-      } = _ref2;
-      setLocation(getLocationWithParams(updatedLocation));
-    });
-  }, []);
-  return (0,external_wp_element_namespaceObject.createElement)(HistoryContext.Provider, {
-    value: utils_history
-  }, (0,external_wp_element_namespaceObject.createElement)(RoutesContext.Provider, {
-    value: location
-  }, children(location)));
-}
-
+  actions: actions_namespaceObject,
+  selectors: selectors_namespaceObject
+};
+const store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, storeConfig);
+(0,external_wp_data_namespaceObject.register)(store);
+lock_unlock_unlock(store).registerPrivateSelectors(private_selectors_namespaceObject);
+lock_unlock_unlock(store).registerPrivateActions(private_actions_namespaceObject);
+
+;// CONCATENATED MODULE: external ["wp","plugins"]
+const external_wp_plugins_namespaceObject = window["wp"]["plugins"];
+;// CONCATENATED MODULE: external ["wp","router"]
+const external_wp_router_namespaceObject = window["wp"]["router"];
+;// CONCATENATED MODULE: ./node_modules/clsx/dist/clsx.mjs
+function clsx_r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=clsx_r(e[t]))&&(n&&(n+=" "),n+=f)}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=clsx_r(e))&&(n&&(n+=" "),n+=t);return n}/* harmony default export */ const dist_clsx = (clsx);
 ;// CONCATENATED MODULE: external ["wp","keyboardShortcuts"]
-var external_wp_keyboardShortcuts_namespaceObject = window["wp"]["keyboardShortcuts"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plus.js
-
-
-/**
- * WordPress dependencies
- */
-
-const plus = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M18 11.2h-5.2V6h-1.6v5.2H6v1.6h5.2V18h1.6v-5.2H18z"
-}));
-/* harmony default export */ var library_plus = (plus);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/list-view.js
-
-
-/**
- * WordPress dependencies
- */
-
-const listView = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  viewBox: "0 0 24 24",
-  xmlns: "http://www.w3.org/2000/svg"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M13.8 5.2H3v1.5h10.8V5.2zm-3.6 12v1.5H21v-1.5H10.2zm7.2-6H6.6v1.5h10.8v-1.5z"
-}));
-/* harmony default export */ var list_view = (listView);
-
-;// CONCATENATED MODULE: external ["wp","keycodes"]
-var external_wp_keycodes_namespaceObject = window["wp"]["keycodes"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/external.js
-
-
-/**
- * WordPress dependencies
- */
-
-const external = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M18.2 17c0 .7-.6 1.2-1.2 1.2H7c-.7 0-1.2-.6-1.2-1.2V7c0-.7.6-1.2 1.2-1.2h3.2V4.2H7C5.5 4.2 4.2 5.5 4.2 7v10c0 1.5 1.2 2.8 2.8 2.8h10c1.5 0 2.8-1.2 2.8-2.8v-3.6h-1.5V17zM14.9 3v1.5h3.7l-6.4 6.4 1.1 1.1 6.4-6.4v3.7h1.5V3h-6.3z"
-}));
-/* harmony default export */ var library_external = (external);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/config.js
-/**
- * WordPress dependencies
- */
-
-const textFormattingShortcuts = [{
-  keyCombination: {
-    modifier: 'primary',
-    character: 'b'
-  },
-  description: (0,external_wp_i18n_namespaceObject.__)('Make the selected text bold.')
-}, {
-  keyCombination: {
-    modifier: 'primary',
-    character: 'i'
-  },
-  description: (0,external_wp_i18n_namespaceObject.__)('Make the selected text italic.')
-}, {
-  keyCombination: {
-    modifier: 'primary',
-    character: 'k'
-  },
-  description: (0,external_wp_i18n_namespaceObject.__)('Convert the selected text into a link.')
-}, {
-  keyCombination: {
-    modifier: 'primaryShift',
-    character: 'k'
-  },
-  description: (0,external_wp_i18n_namespaceObject.__)('Remove a link.')
-}, {
-  keyCombination: {
-    modifier: 'primary',
-    character: 'u'
-  },
-  description: (0,external_wp_i18n_namespaceObject.__)('Underline the selected text.')
-}];
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/shortcut.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-function KeyCombination(_ref) {
-  let {
-    keyCombination,
-    forceAriaLabel
-  } = _ref;
-  const shortcut = keyCombination.modifier ? external_wp_keycodes_namespaceObject.displayShortcutList[keyCombination.modifier](keyCombination.character) : keyCombination.character;
-  const ariaLabel = keyCombination.modifier ? external_wp_keycodes_namespaceObject.shortcutAriaLabel[keyCombination.modifier](keyCombination.character) : keyCombination.character;
-  return (0,external_wp_element_namespaceObject.createElement)("kbd", {
-    className: "edit-site-keyboard-shortcut-help-modal__shortcut-key-combination",
-    "aria-label": forceAriaLabel || ariaLabel
-  }, (0,external_lodash_namespaceObject.castArray)(shortcut).map((character, index) => {
-    if (character === '+') {
-      return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, {
-        key: index
-      }, character);
-    }
-
-    return (0,external_wp_element_namespaceObject.createElement)("kbd", {
-      key: index,
-      className: "edit-site-keyboard-shortcut-help-modal__shortcut-key"
-    }, character);
-  }));
-}
-
-function Shortcut(_ref2) {
-  let {
-    description,
-    keyCombination,
-    aliases = [],
-    ariaLabel
-  } = _ref2;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-keyboard-shortcut-help-modal__shortcut-description"
-  }, description), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-keyboard-shortcut-help-modal__shortcut-term"
-  }, (0,external_wp_element_namespaceObject.createElement)(KeyCombination, {
-    keyCombination: keyCombination,
-    forceAriaLabel: ariaLabel
-  }), aliases.map((alias, index) => (0,external_wp_element_namespaceObject.createElement)(KeyCombination, {
-    keyCombination: alias,
-    forceAriaLabel: ariaLabel,
-    key: index
-  }))));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-function DynamicShortcut(_ref) {
-  let {
-    name
-  } = _ref;
-  const {
-    keyCombination,
-    description,
-    aliases
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const {
-      getShortcutKeyCombination,
-      getShortcutDescription,
-      getShortcutAliases
-    } = select(external_wp_keyboardShortcuts_namespaceObject.store);
-    return {
-      keyCombination: getShortcutKeyCombination(name),
-      aliases: getShortcutAliases(name),
-      description: getShortcutDescription(name)
-    };
-  }, [name]);
-
-  if (!keyCombination) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(Shortcut, {
-    keyCombination: keyCombination,
-    description: description,
-    aliases: aliases
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/index.js
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-const ShortcutList = _ref => {
-  let {
-    shortcuts
-  } = _ref;
-  return (
-    /*
-     * Disable reason: The `list` ARIA role is redundant but
-     * Safari+VoiceOver won't announce the list otherwise.
-     */
-
-    /* eslint-disable jsx-a11y/no-redundant-roles */
-    (0,external_wp_element_namespaceObject.createElement)("ul", {
-      className: "edit-site-keyboard-shortcut-help-modal__shortcut-list",
-      role: "list"
-    }, shortcuts.map((shortcut, index) => (0,external_wp_element_namespaceObject.createElement)("li", {
-      className: "edit-site-keyboard-shortcut-help-modal__shortcut",
-      key: index
-    }, (0,external_lodash_namespaceObject.isString)(shortcut) ? (0,external_wp_element_namespaceObject.createElement)(DynamicShortcut, {
-      name: shortcut
-    }) : (0,external_wp_element_namespaceObject.createElement)(Shortcut, shortcut))))
-    /* eslint-enable jsx-a11y/no-redundant-roles */
-
-  );
-};
-
-const ShortcutSection = _ref2 => {
-  let {
-    title,
-    shortcuts,
-    className
-  } = _ref2;
-  return (0,external_wp_element_namespaceObject.createElement)("section", {
-    className: classnames_default()('edit-site-keyboard-shortcut-help-modal__section', className)
-  }, !!title && (0,external_wp_element_namespaceObject.createElement)("h2", {
-    className: "edit-site-keyboard-shortcut-help-modal__section-title"
-  }, title), (0,external_wp_element_namespaceObject.createElement)(ShortcutList, {
-    shortcuts: shortcuts
-  }));
-};
-
-const ShortcutCategorySection = _ref3 => {
-  let {
-    title,
-    categoryName,
-    additionalShortcuts = []
-  } = _ref3;
-  const categoryShortcuts = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    return select(external_wp_keyboardShortcuts_namespaceObject.store).getCategoryShortcuts(categoryName);
-  }, [categoryName]);
-  return (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, {
-    title: title,
-    shortcuts: categoryShortcuts.concat(additionalShortcuts)
-  });
-};
-
-function KeyboardShortcutHelpModal(_ref4) {
-  let {
-    isModalActive,
-    toggleModal
-  } = _ref4;
-
-  if (!isModalActive) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, {
-    className: "edit-site-keyboard-shortcut-help-modal",
-    title: (0,external_wp_i18n_namespaceObject.__)('Keyboard shortcuts'),
-    closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'),
-    onRequestClose: toggleModal
-  }, (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, {
-    className: "edit-site-keyboard-shortcut-help-modal__main-shortcuts",
-    shortcuts: ['core/edit-site/keyboard-shortcuts']
-  }), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Global shortcuts'),
-    categoryName: "global"
-  }), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Selection shortcuts'),
-    categoryName: "selection"
-  }), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Block shortcuts'),
-    categoryName: "block",
-    additionalShortcuts: [{
-      keyCombination: {
-        character: '/'
-      },
-      description: (0,external_wp_i18n_namespaceObject.__)('Change the block type after adding a new paragraph.'),
-
-      /* translators: The forward-slash character. e.g. '/'. */
-      ariaLabel: (0,external_wp_i18n_namespaceObject.__)('Forward-slash')
-    }]
-  }), (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Text formatting'),
-    shortcuts: textFormattingShortcuts
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/preferences-modal/enable-feature.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-function EnableFeature(props) {
-  const {
-    featureName,
-    ...remainingProps
-  } = props;
-  const isChecked = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', featureName), [featureName]);
-  const {
-    toggle
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
-
-  const onChange = () => toggle('core/edit-site', featureName);
-
-  return (0,external_wp_element_namespaceObject.createElement)(preferences_modal_base_option, extends_extends({
-    onChange: onChange,
-    isChecked: isChecked
-  }, remainingProps));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/preferences-modal/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function EditSitePreferencesModal(_ref) {
-  let {
-    isModalActive,
-    toggleModal
-  } = _ref;
-  const sections = (0,external_wp_element_namespaceObject.useMemo)(() => [{
-    name: 'general',
-    tabLabel: (0,external_wp_i18n_namespaceObject.__)('General'),
-    content: (0,external_wp_element_namespaceObject.createElement)(preferences_modal_section, {
-      title: (0,external_wp_i18n_namespaceObject.__)('Appearance'),
-      description: (0,external_wp_i18n_namespaceObject.__)('Customize options related to the block editor interface and editing flow.')
-    }, (0,external_wp_element_namespaceObject.createElement)(EnableFeature, {
-      featureName: "focusMode",
-      help: (0,external_wp_i18n_namespaceObject.__)('Highlights the current block and fades other content.'),
-      label: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode')
-    }), (0,external_wp_element_namespaceObject.createElement)(EnableFeature, {
-      featureName: "showIconLabels",
-      label: (0,external_wp_i18n_namespaceObject.__)('Show button text labels'),
-      help: (0,external_wp_i18n_namespaceObject.__)('Show text instead of icons on buttons')
-    }))
-  }, {
-    name: 'blocks',
-    tabLabel: (0,external_wp_i18n_namespaceObject.__)('Blocks'),
-    content: (0,external_wp_element_namespaceObject.createElement)(preferences_modal_section, {
-      title: (0,external_wp_i18n_namespaceObject.__)('Block interactions'),
-      description: (0,external_wp_i18n_namespaceObject.__)('Customize how you interact with blocks in the block library and editing canvas.')
-    }, (0,external_wp_element_namespaceObject.createElement)(EnableFeature, {
-      featureName: "keepCaretInsideBlock",
-      help: (0,external_wp_i18n_namespaceObject.__)('Aids screen readers by stopping text caret from leaving blocks.'),
-      label: (0,external_wp_i18n_namespaceObject.__)('Contain text cursor inside block')
-    }))
-  }]);
-
-  if (!isModalActive) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(PreferencesModal, {
-    closeModal: toggleModal
-  }, (0,external_wp_element_namespaceObject.createElement)(PreferencesModalTabs, {
-    sections: sections
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/tools-more-menu-group/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-const {
-  Fill: ToolsMoreMenuGroup,
-  Slot
-} = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteToolsMoreMenuGroup');
-
-ToolsMoreMenuGroup.Slot = _ref => {
-  let {
-    fillProps
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(Slot, {
-    fillProps: fillProps
-  }, fills => !(0,external_lodash_namespaceObject.isEmpty)(fills) && fills);
-};
-
-/* harmony default export */ var tools_more_menu_group = (ToolsMoreMenuGroup);
-
-// EXTERNAL MODULE: ./node_modules/downloadjs/download.js
-var download = __webpack_require__(8981);
-var download_default = /*#__PURE__*/__webpack_require__.n(download);
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/download.js
-
-
-/**
- * WordPress dependencies
- */
-
-const download_download = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M18 11.3l-1-1.1-4 4V3h-1.5v11.3L7 10.2l-1 1.1 6.2 5.8 5.8-5.8zm.5 3.7v3.5h-13V15H4v5h16v-5h-1.5z"
-}));
-/* harmony default export */ var library_download = (download_download);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/site-export.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-function SiteExport() {
-  const {
-    createErrorNotice
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
-
-  async function handleExport() {
-    try {
-      const response = await external_wp_apiFetch_default()({
-        path: '/wp-block-editor/v1/export',
-        parse: false
-      });
-      const blob = await response.blob();
-      const contentDisposition = response.headers.get('content-disposition');
-      const contentDispositionMatches = contentDisposition.match(/=(.+)\.zip/);
-      const fileName = contentDispositionMatches[1] ? contentDispositionMatches[1] : 'edit-site-export';
-      download_default()(blob, fileName + '.zip', 'application/zip');
-    } catch (errorResponse) {
-      let error = {};
-
-      try {
-        error = await errorResponse.json();
-      } catch (e) {}
-
-      const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the site export.');
-      createErrorNotice(errorMessage, {
-        type: 'snackbar'
-      });
-    }
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-    role: "menuitem",
-    icon: library_download,
-    onClick: handleExport,
-    info: (0,external_wp_i18n_namespaceObject.__)('Download your theme with updated templates and styles.')
-  }, (0,external_wp_i18n_namespaceObject._x)('Export', 'site exporter menu item'));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/welcome-guide-menu-item.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-function WelcomeGuideMenuItem() {
-  const {
-    toggle
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-    onClick: () => toggle('core/edit-site', 'welcomeGuide')
-  }, (0,external_wp_i18n_namespaceObject.__)('Welcome Guide'));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/copy-content-menu-item.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function CopyContentMenuItem() {
-  const {
-    createNotice
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
-  const getText = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    return () => {
-      const {
-        getEditedPostId,
-        getEditedPostType
-      } = select(store_store);
-      const {
-        getEditedEntityRecord
-      } = select(external_wp_coreData_namespaceObject.store);
-      const record = getEditedEntityRecord('postType', getEditedPostType(), getEditedPostId());
-
-      if (record) {
-        if (typeof record.content === 'function') {
-          return record.content(record);
-        } else if (record.blocks) {
-          return (0,external_wp_blocks_namespaceObject.__unstableSerializeAndClean)(record.blocks);
-        } else if (record.content) {
-          return record.content;
-        }
-      }
-
-      return '';
-    };
-  }, []);
-
-  function onSuccess() {
-    createNotice('info', (0,external_wp_i18n_namespaceObject.__)('All content copied.'), {
-      isDismissible: true,
-      type: 'snackbar'
-    });
-  }
-
-  const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(getText, onSuccess);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-    ref: ref
-  }, (0,external_wp_i18n_namespaceObject.__)('Copy all content'));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/mode-switcher/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Set of available mode options.
- *
- * @type {Array}
- */
-
-const MODES = [{
-  value: 'visual',
-  label: (0,external_wp_i18n_namespaceObject.__)('Visual editor')
-}, {
-  value: 'text',
-  label: (0,external_wp_i18n_namespaceObject.__)('Code editor')
-}];
-
-function ModeSwitcher() {
-  const {
-    shortcut,
-    mode
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
-    shortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getShortcutRepresentation('core/edit-site/toggle-mode'),
-    isRichEditingEnabled: select(store_store).getSettings().richEditingEnabled,
-    isCodeEditingEnabled: select(store_store).getSettings().codeEditingEnabled,
-    mode: select(store_store).getEditorMode()
-  }), []);
-  const {
-    switchEditorMode
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const choices = MODES.map(choice => {
-    if (choice.value !== mode) {
-      return { ...choice,
-        shortcut
-      };
-    }
-
-    return choice;
-  });
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
-    label: (0,external_wp_i18n_namespaceObject.__)('Editor')
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItemsChoice, {
-    choices: choices,
-    value: mode,
-    onSelect: switchEditorMode
-  }));
-}
-
-/* harmony default export */ var mode_switcher = (ModeSwitcher);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-function MoreMenu() {
-  const [isModalActive, toggleModal] = (0,external_wp_element_namespaceObject.useReducer)(isActive => !isActive, false);
-  const [isPreferencesModalActive, togglePreferencesModal] = (0,external_wp_element_namespaceObject.useReducer)(isActive => !isActive, false);
-  (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/keyboard-shortcuts', toggleModal);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(MoreMenuDropdown, null, _ref => {
-    let {
-      onClose
-    } = _ref;
-    return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
-      label: (0,external_wp_i18n_namespaceObject._x)('View', 'noun')
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_preferences_namespaceObject.PreferenceToggleMenuItem, {
-      scope: "core/edit-site",
-      name: "fixedToolbar",
-      label: (0,external_wp_i18n_namespaceObject.__)('Top toolbar'),
-      info: (0,external_wp_i18n_namespaceObject.__)('Access all block and document tools in a single place'),
-      messageActivated: (0,external_wp_i18n_namespaceObject.__)('Top toolbar activated'),
-      messageDeactivated: (0,external_wp_i18n_namespaceObject.__)('Top toolbar deactivated')
-    }), (0,external_wp_element_namespaceObject.createElement)(external_wp_preferences_namespaceObject.PreferenceToggleMenuItem, {
-      scope: "core/edit-site",
-      name: "focusMode",
-      label: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode'),
-      info: (0,external_wp_i18n_namespaceObject.__)('Focus on one block at a time'),
-      messageActivated: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode activated'),
-      messageDeactivated: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode deactivated')
-    }), (0,external_wp_element_namespaceObject.createElement)(mode_switcher, null), (0,external_wp_element_namespaceObject.createElement)(action_item.Slot, {
-      name: "core/edit-site/plugin-more-menu",
-      label: (0,external_wp_i18n_namespaceObject.__)('Plugins'),
-      as: external_wp_components_namespaceObject.MenuGroup,
-      fillProps: {
-        onClick: onClose
-      }
-    })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
-      label: (0,external_wp_i18n_namespaceObject.__)('Tools')
-    }, (0,external_wp_element_namespaceObject.createElement)(SiteExport, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-      onClick: toggleModal,
-      shortcut: external_wp_keycodes_namespaceObject.displayShortcut.access('h')
-    }, (0,external_wp_i18n_namespaceObject.__)('Keyboard shortcuts')), (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideMenuItem, null), (0,external_wp_element_namespaceObject.createElement)(CopyContentMenuItem, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-      icon: library_external,
-      role: "menuitem",
-      href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/support/article/site-editor/'),
-      target: "_blank",
-      rel: "noopener noreferrer"
-    }, (0,external_wp_i18n_namespaceObject.__)('Help'), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
-      as: "span"
-    },
-    /* translators: accessibility text */
-    (0,external_wp_i18n_namespaceObject.__)('(opens in a new tab)'))), (0,external_wp_element_namespaceObject.createElement)(tools_more_menu_group.Slot, {
-      fillProps: {
-        onClose
-      }
-    })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-      onClick: togglePreferencesModal
-    }, (0,external_wp_i18n_namespaceObject.__)('Preferences'))));
-  }), (0,external_wp_element_namespaceObject.createElement)(KeyboardShortcutHelpModal, {
-    isModalActive: isModalActive,
-    toggleModal: toggleModal
-  }), (0,external_wp_element_namespaceObject.createElement)(EditSitePreferencesModal, {
-    isModalActive: isPreferencesModalActive,
-    toggleModal: togglePreferencesModal
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/save-button/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-function SaveButton(_ref) {
-  let {
-    openEntitiesSavedStates,
-    isEntitiesSavedStatesOpen
-  } = _ref;
-  const {
-    isDirty,
-    isSaving
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const {
-      __experimentalGetDirtyEntityRecords,
-      isSavingEntityRecord
-    } = select(external_wp_coreData_namespaceObject.store);
-
-    const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
-
-    return {
-      isDirty: dirtyEntityRecords.length > 0,
-      isSaving: (0,external_lodash_namespaceObject.some)(dirtyEntityRecords, record => isSavingEntityRecord(record.kind, record.name, record.key))
-    };
-  }, []);
-  const disabled = !isDirty || isSaving;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    variant: "primary",
-    className: "edit-site-save-button__button",
-    "aria-disabled": disabled,
-    "aria-expanded": isEntitiesSavedStatesOpen,
-    disabled: disabled,
-    isBusy: isSaving,
-    onClick: disabled ? undefined : openEntitiesSavedStates
-  }, (0,external_wp_i18n_namespaceObject.__)('Save')));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/undo.js
-
-
-/**
- * WordPress dependencies
- */
-
-const undo = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M18.3 11.7c-.6-.6-1.4-.9-2.3-.9H6.7l2.9-3.3-1.1-1-4.5 5L8.5 16l1-1-2.7-2.7H16c.5 0 .9.2 1.3.5 1 1 1 3.4 1 4.5v.3h1.5v-.2c0-1.5 0-4.3-1.5-5.7z"
-}));
-/* harmony default export */ var library_undo = (undo);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/redo.js
-
-
-/**
- * WordPress dependencies
- */
-
-const redo = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M15.6 6.5l-1.1 1 2.9 3.3H8c-.9 0-1.7.3-2.3.9-1.4 1.5-1.4 4.2-1.4 5.6v.2h1.5v-.3c0-1.1 0-3.5 1-4.5.3-.3.7-.5 1.3-.5h9.2L14.5 15l1.1 1.1 4.6-4.6-4.6-5z"
-}));
-/* harmony default export */ var library_redo = (redo);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/undo-redo/undo.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-function UndoButton() {
-  const hasUndo = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).hasUndo(), []);
-  const {
-    undo
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    icon: !(0,external_wp_i18n_namespaceObject.isRTL)() ? library_undo : library_redo,
-    label: (0,external_wp_i18n_namespaceObject.__)('Undo'),
-    shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('z') // If there are no undo levels we don't want to actually disable this
-    // button, because it will remove focus for keyboard users.
-    // See: https://github.com/WordPress/gutenberg/issues/3486
-    ,
-    "aria-disabled": !hasUndo,
-    onClick: hasUndo ? undo : undefined
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/undo-redo/redo.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-function RedoButton() {
-  const hasRedo = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).hasRedo(), []);
-  const {
-    redo
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    icon: !(0,external_wp_i18n_namespaceObject.isRTL)() ? library_redo : library_undo,
-    label: (0,external_wp_i18n_namespaceObject.__)('Redo'),
-    shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primaryShift('z') // If there are no undo levels we don't want to actually disable this
-    // button, because it will remove focus for keyboard users.
-    // See: https://github.com/WordPress/gutenberg/issues/3486
-    ,
-    "aria-disabled": !hasRedo,
-    onClick: hasRedo ? redo : undefined
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-down.js
-
-
-/**
- * WordPress dependencies
- */
-
-const chevronDown = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  viewBox: "0 0 24 24",
-  xmlns: "http://www.w3.org/2000/svg"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"
-}));
-/* harmony default export */ var chevron_down = (chevronDown);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/document-actions/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-
-function getBlockDisplayText(block) {
-  if (block) {
-    const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(block.name);
-    return blockType ? (0,external_wp_blocks_namespaceObject.__experimentalGetBlockLabel)(blockType, block.attributes) : null;
-  }
-
-  return null;
-}
-
-function useSecondaryText() {
-  const {
-    getBlock
-  } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store);
-  const activeEntityBlockId = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).__experimentalGetActiveBlockIdByBlockNames(['core/template-part']), []);
-
-  if (activeEntityBlockId) {
-    return {
-      label: getBlockDisplayText(getBlock(activeEntityBlockId)),
-      isActive: true
-    };
-  }
-
-  return {};
-}
-/**
- * @param {Object}   props                Props for the DocumentActions component.
- * @param {string}   props.entityTitle    The title to display.
- * @param {string}   props.entityLabel    A label to use for entity-related options.
- *                                        E.g. "template" would be used for "edit
- *                                        template" and "show template details".
- * @param {boolean}  props.isLoaded       Whether the data is available.
- * @param {Function} props.children       React component to use for the
- *                                        information dropdown area. Should be a
- *                                        function which accepts dropdown props.
- * @param {boolean}  props.showIconLabels Whether buttons display icons or text labels.
- */
-
-
-function DocumentActions(_ref) {
-  let {
-    entityTitle,
-    entityLabel,
-    isLoaded,
-    children: dropdownContent,
-    showIconLabels
-  } = _ref;
-  const {
-    label
-  } = useSecondaryText(); // The title ref is passed to the popover as the anchorRef so that the
-  // dropdown is centered over the whole title area rather than just one
-  // part of it.
-
-  const titleRef = (0,external_wp_element_namespaceObject.useRef)(); // Return a simple loading indicator until we have information to show.
-
-  if (!isLoaded) {
-    return (0,external_wp_element_namespaceObject.createElement)("div", {
-      className: "edit-site-document-actions"
-    }, (0,external_wp_i18n_namespaceObject.__)('Loading…'));
-  } // Return feedback that the template does not seem to exist.
-
-
-  if (!entityTitle) {
-    return (0,external_wp_element_namespaceObject.createElement)("div", {
-      className: "edit-site-document-actions"
-    }, (0,external_wp_i18n_namespaceObject.__)('Template not found'));
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: classnames_default()('edit-site-document-actions', {
-      'has-secondary-label': !!label
-    })
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    ref: titleRef,
-    className: "edit-site-document-actions__title-wrapper"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, {
-    size: "body",
-    className: "edit-site-document-actions__title",
-    as: "h1"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
-    as: "span"
-  }, (0,external_wp_i18n_namespaceObject.sprintf)(
-  /* translators: %s: the entity being edited, like "template"*/
-  (0,external_wp_i18n_namespaceObject.__)('Editing %s: '), entityLabel)), entityTitle), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, {
-    size: "body",
-    className: "edit-site-document-actions__secondary-item"
-  }, label !== null && label !== void 0 ? label : ''), dropdownContent && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Dropdown, {
-    popoverProps: {
-      anchorRef: titleRef.current
-    },
-    position: "bottom center",
-    renderToggle: _ref2 => {
-      let {
-        isOpen,
-        onToggle
-      } = _ref2;
-      return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-        className: "edit-site-document-actions__get-info",
-        icon: chevron_down,
-        "aria-expanded": isOpen,
-        "aria-haspopup": "true",
-        onClick: onToggle,
-        label: (0,external_wp_i18n_namespaceObject.sprintf)(
-        /* translators: %s: the entity to see details about, like "template"*/
-        (0,external_wp_i18n_namespaceObject.__)('Show %s details'), entityLabel)
-      }, showIconLabels && (0,external_wp_i18n_namespaceObject.__)('Details'));
-    },
-    contentClassName: "edit-site-document-actions__info-dropdown",
-    renderContent: dropdownContent
-  })));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/link.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-function useLink() {
-  let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  let state = arguments.length > 1 ? arguments[1] : undefined;
-  let shouldReplace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
-  const history = useHistory();
-
-  function onClick(event) {
-    event.preventDefault();
-
-    if (shouldReplace) {
-      history.replace(params, state);
-    } else {
-      history.push(params, state);
-    }
-  }
-
-  return {
-    href: (0,external_wp_url_namespaceObject.addQueryArgs)(window.location.href, params),
-    onClick
-  };
-}
-function Link(_ref) {
-  let {
-    params = {},
-    state,
-    replace: shouldReplace = false,
-    children,
-    ...props
-  } = _ref;
-  const {
-    href,
-    onClick
-  } = useLink(params, state, shouldReplace);
-  return (0,external_wp_element_namespaceObject.createElement)("a", extends_extends({
-    href: href,
-    onClick: onClick
-  }, props), children);
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-details/template-areas.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-function TemplatePartItemMore(_ref) {
-  var _templatePart$title;
-
-  let {
-    onClose,
-    templatePart,
-    closeTemplateDetailsDropdown
-  } = _ref;
-  const {
-    revertTemplate
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const {
-    params
-  } = useLocation();
-  const editLinkProps = useLink({
-    postId: templatePart.id,
-    postType: templatePart.type
-  }, {
-    fromTemplateId: params.postId
-  });
-
-  function editTemplatePart(event) {
-    editLinkProps.onClick(event);
-    onClose();
-    closeTemplateDetailsDropdown();
-  }
-
-  function clearCustomizations() {
-    revertTemplate(templatePart);
-    onClose();
-    closeTemplateDetailsDropdown();
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, extends_extends({}, editLinkProps, {
-    onClick: editTemplatePart
-  }), (0,external_wp_i18n_namespaceObject.sprintf)(
-  /* translators: %s: template part title */
-  (0,external_wp_i18n_namespaceObject.__)('Edit %s'), (_templatePart$title = templatePart.title) === null || _templatePart$title === void 0 ? void 0 : _templatePart$title.rendered))), isTemplateRevertable(templatePart) && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-    info: (0,external_wp_i18n_namespaceObject.__)('Restore template to default state'),
-    onClick: clearCustomizations
-  }, (0,external_wp_i18n_namespaceObject.__)('Clear customizations'))));
-}
-
-function TemplatePartItem(_ref2) {
-  let {
-    templatePart,
-    clientId,
-    closeTemplateDetailsDropdown
-  } = _ref2;
-  const {
-    selectBlock,
-    toggleBlockHighlight
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
-  const templatePartArea = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const defaultAreas = select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas();
-
-    return defaultAreas.find(defaultArea => defaultArea.area === templatePart.area);
-  }, [templatePart.area]);
-
-  const highlightBlock = () => toggleBlockHighlight(clientId, true);
-
-  const cancelHighlightBlock = () => toggleBlockHighlight(clientId, false);
-
-  return (0,external_wp_element_namespaceObject.createElement)("div", {
-    role: "menuitem",
-    className: "edit-site-template-details__template-areas-item"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-    role: "button",
-    icon: templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.icon,
-    iconPosition: "left",
-    onClick: () => {
-      selectBlock(clientId);
-    },
-    onMouseOver: highlightBlock,
-    onMouseLeave: cancelHighlightBlock,
-    onFocus: highlightBlock,
-    onBlur: cancelHighlightBlock
-  }, templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.label), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, {
-    icon: more_vertical,
-    label: (0,external_wp_i18n_namespaceObject.__)('More options'),
-    className: "edit-site-template-details__template-areas-item-more"
-  }, _ref3 => {
-    let {
-      onClose
-    } = _ref3;
-    return (0,external_wp_element_namespaceObject.createElement)(TemplatePartItemMore, {
-      onClose: onClose,
-      templatePart: templatePart,
-      closeTemplateDetailsDropdown: closeTemplateDetailsDropdown
-    });
-  }));
-}
-
-function TemplateAreas(_ref4) {
-  let {
-    closeTemplateDetailsDropdown
-  } = _ref4;
-  const templateParts = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getCurrentTemplateTemplateParts(), []);
-
-  if (!templateParts.length) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
-    label: (0,external_wp_i18n_namespaceObject.__)('Areas'),
-    className: "edit-site-template-details__group edit-site-template-details__template-areas"
-  }, templateParts.map(_ref5 => {
-    let {
-      templatePart,
-      block
-    } = _ref5;
-    return (0,external_wp_element_namespaceObject.createElement)(TemplatePartItem, {
-      key: templatePart.slug,
-      clientId: block.clientId,
-      templatePart: templatePart,
-      closeTemplateDetailsDropdown: closeTemplateDetailsDropdown
-    });
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-details/edit-template-title.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-function EditTemplateTitle(_ref) {
-  let {
-    template
-  } = _ref;
-  const [title, setTitle] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', template.type, 'title', template.id);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
-    label: (0,external_wp_i18n_namespaceObject.__)('Title'),
-    value: title,
-    help: (0,external_wp_i18n_namespaceObject.__)('Give the template a title that indicates its purpose, e.g. "Full Width".'),
-    onChange: newTitle => {
-      setTitle(newTitle || template.slug);
-    }
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-details/index.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-function TemplateDetails(_ref) {
-  let {
-    template,
-    onClose
-  } = _ref;
-  const {
-    title,
-    description
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetTemplateInfo(template), []);
-  const {
-    revertTemplate
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const templateSubMenu = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    if ((template === null || template === void 0 ? void 0 : template.type) === 'wp_template') {
-      return {
-        title: (0,external_wp_i18n_namespaceObject.__)('templates'),
-        menu: MENU_TEMPLATES
-      };
-    }
-
-    return TEMPLATE_PARTS_SUB_MENUS.find(_ref2 => {
-      let {
-        area
-      } = _ref2;
-      return area === (template === null || template === void 0 ? void 0 : template.area);
-    });
-  }, [template]);
-  const browseAllLinkProps = useLink({
-    // TODO: We should update this to filter by template part's areas as well.
-    postType: template.type,
-    postId: undefined
-  }); // Only user-created and non-default templates can change the name.
-
-  const canEditTitle = template.is_custom && !template.has_theme_file;
-
-  if (!template) {
-    return null;
-  }
-
-  const revert = () => {
-    revertTemplate(template);
-    onClose();
-  };
-
-  return (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-template-details"
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-template-details__group"
-  }, canEditTitle ? (0,external_wp_element_namespaceObject.createElement)(EditTemplateTitle, {
-    template: template
-  }) : (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
-    level: 4,
-    weight: 600,
-    className: "edit-site-template-details__title"
-  }, title), description && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, {
-    size: "body",
-    className: "edit-site-template-details__description",
-    as: "p"
-  }, description)), (0,external_wp_element_namespaceObject.createElement)(TemplateAreas, {
-    closeTemplateDetailsDropdown: onClose
-  }), isTemplateRevertable(template) && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
-    className: "edit-site-template-details__group edit-site-template-details__revert"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-    className: "edit-site-template-details__revert-button",
-    info: (0,external_wp_i18n_namespaceObject.__)('Restore template to default state'),
-    onClick: revert
-  }, (0,external_wp_i18n_namespaceObject.__)('Clear customizations'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, extends_extends({
-    className: "edit-site-template-details__show-all-button"
-  }, browseAllLinkProps), (0,external_wp_i18n_namespaceObject.sprintf)(
-  /* translators: the template part's area name ("Headers", "Sidebars") or "templates". */
-  (0,external_wp_i18n_namespaceObject.__)('Browse all %s'), templateSubMenu.title)));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-
-const preventDefault = event => {
-  event.preventDefault();
-};
-
-function Header(_ref) {
-  let {
-    openEntitiesSavedStates,
-    isEntitiesSavedStatesOpen,
-    showIconLabels
-  } = _ref;
-  const inserterButton = (0,external_wp_element_namespaceObject.useRef)();
-  const {
-    deviceType,
-    entityTitle,
-    template,
-    templateType,
-    isInserterOpen,
-    isListViewOpen,
-    listViewShortcut,
-    isLoaded,
-    isVisualMode
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const {
-      __experimentalGetPreviewDeviceType,
-      getEditedPostType,
-      getEditedPostId,
-      isInserterOpened,
-      isListViewOpened,
-      getEditorMode
-    } = select(store_store);
-    const {
-      getEditedEntityRecord
+const external_wp_keyboardShortcuts_namespaceObject = window["wp"]["keyboardShortcuts"];
+;// CONCATENATED MODULE: external ["wp","commands"]
+const external_wp_commands_namespaceObject = window["wp"]["commands"];
+;// CONCATENATED MODULE: external ["wp","coreCommands"]
+const external_wp_coreCommands_namespaceObject = window["wp"]["coreCommands"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/error-boundary/warning.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+function CopyButton({
+  text,
+  children
+}) {
+  const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(text);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+    variant: "secondary",
+    ref: ref,
+    children: children
+  });
+}
+function ErrorBoundaryWarning({
+  message,
+  error
+}) {
+  const actions = [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CopyButton, {
+    text: error.stack,
+    children: (0,external_wp_i18n_namespaceObject.__)('Copy Error')
+  }, "copy-error")];
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, {
+    className: "editor-error-boundary",
+    actions: actions,
+    children: message
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/error-boundary/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+class ErrorBoundary extends external_wp_element_namespaceObject.Component {
+  constructor() {
+    super(...arguments);
+    this.state = {
+      error: null
+    };
+  }
+  componentDidCatch(error) {
+    (0,external_wp_hooks_namespaceObject.doAction)('editor.ErrorBoundary.errorLogged', error);
+  }
+  static getDerivedStateFromError(error) {
+    return {
+      error
+    };
+  }
+  render() {
+    if (!this.state.error) {
+      return this.props.children;
+    }
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ErrorBoundaryWarning, {
+      message: (0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error.'),
+      error: this.state.error
+    });
+  }
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const postTypesWithoutParentTemplate = [TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE, NAVIGATION_POST_TYPE, PATTERN_TYPES.user];
+const authorizedPostTypes = ['page'];
+function useResolveEditedEntityAndContext({
+  postId,
+  postType
+}) {
+  const {
+    hasLoadedAllDependencies,
+    homepageId,
+    postsPageId,
+    url,
+    frontPageTemplateId
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getSite,
+      getUnstableBase,
+      getEntityRecords
     } = select(external_wp_coreData_namespaceObject.store);
-    const {
-      __experimentalGetTemplateInfo: getTemplateInfo
-    } = select(external_wp_editor_namespaceObject.store);
-    const {
-      getShortcutRepresentation
-    } = select(external_wp_keyboardShortcuts_namespaceObject.store);
-    const postType = getEditedPostType();
-    const postId = getEditedPostId();
-    const record = getEditedEntityRecord('postType', postType, postId);
-
-    const _isLoaded = !!postId;
-
-    return {
-      deviceType: __experimentalGetPreviewDeviceType(),
-      entityTitle: getTemplateInfo(record).title,
-      isLoaded: _isLoaded,
-      template: record,
-      templateType: postType,
-      isInserterOpen: isInserterOpened(),
-      isListViewOpen: isListViewOpened(),
-      listViewShortcut: getShortcutRepresentation('core/edit-site/toggle-list-view'),
-      isVisualMode: getEditorMode() === 'visual'
-    };
-  }, []);
-  const {
-    __experimentalSetPreviewDeviceType: setPreviewDeviceType,
-    setIsInserterOpened,
-    setIsListViewOpened
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const isLargeViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium');
-  const openInserter = (0,external_wp_element_namespaceObject.useCallback)(() => {
-    if (isInserterOpen) {
-      // Focusing the inserter button closes the inserter popover.
-      inserterButton.current.focus();
-    } else {
-      setIsInserterOpened(true);
-    }
-  }, [isInserterOpen, setIsInserterOpened]);
-  const toggleListView = (0,external_wp_element_namespaceObject.useCallback)(() => setIsListViewOpened(!isListViewOpen), [setIsListViewOpened, isListViewOpen]);
-  const isFocusMode = templateType === 'wp_template_part';
-  return (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-header"
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-header_start"
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-header__toolbar"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    ref: inserterButton,
-    variant: "primary",
-    isPressed: isInserterOpen,
-    className: "edit-site-header-toolbar__inserter-toggle",
-    disabled: !isVisualMode,
-    onMouseDown: preventDefault,
-    onClick: openInserter,
-    icon: library_plus,
-    label: (0,external_wp_i18n_namespaceObject._x)('Toggle block inserter', 'Generic label for block inserter button')
-  }, showIconLabels && (!isInserterOpen ? (0,external_wp_i18n_namespaceObject.__)('Add') : (0,external_wp_i18n_namespaceObject.__)('Close'))), isLargeViewport && (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToolbarItem, {
-    as: external_wp_blockEditor_namespaceObject.ToolSelector,
-    disabled: !isVisualMode
-  }), (0,external_wp_element_namespaceObject.createElement)(UndoButton, null), (0,external_wp_element_namespaceObject.createElement)(RedoButton, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    className: "edit-site-header-toolbar__list-view-toggle",
-    disabled: !isVisualMode,
-    icon: list_view,
-    isPressed: isListViewOpen
-    /* translators: button label text should, if possible, be under 16 characters. */
-    ,
-    label: (0,external_wp_i18n_namespaceObject.__)('List View'),
-    onClick: toggleListView,
-    shortcut: listViewShortcut
-  })))), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-header_center"
-  }, (0,external_wp_element_namespaceObject.createElement)(DocumentActions, {
-    entityTitle: entityTitle,
-    entityLabel: templateType === 'wp_template_part' ? 'template part' : 'template',
-    isLoaded: isLoaded,
-    showIconLabels: showIconLabels
-  }, _ref2 => {
-    let {
-      onClose
-    } = _ref2;
-    return (0,external_wp_element_namespaceObject.createElement)(TemplateDetails, {
-      template: template,
-      onClose: onClose
-    });
-  })), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-header_end"
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-header__actions"
-  }, !isFocusMode && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalPreviewOptions, {
-    deviceType: deviceType,
-    setDeviceType: setPreviewDeviceType
-  }), (0,external_wp_element_namespaceObject.createElement)(SaveButton, {
-    openEntitiesSavedStates: openEntitiesSavedStates,
-    isEntitiesSavedStatesOpen: isEntitiesSavedStatesOpen
-  }), (0,external_wp_element_namespaceObject.createElement)(pinned_items.Slot, {
-    scope: "core/edit-site"
-  }), (0,external_wp_element_namespaceObject.createElement)(MoreMenu, null))));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/cog.js
-
-
-/**
- * WordPress dependencies
- */
-
-const cog = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  fillRule: "evenodd",
-  d: "M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z",
-  clipRule: "evenodd"
-}));
-/* harmony default export */ var library_cog = (cog);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/default-sidebar.js
-
-
-/**
- * WordPress dependencies
- */
-
-function default_sidebar_DefaultSidebar(_ref) {
-  let {
-    className,
-    identifier,
-    title,
-    icon,
-    children,
-    closeLabel,
-    header,
-    headerClassName,
-    panelClassName
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(complementary_area, {
-    className: className,
-    scope: "core/edit-site",
-    identifier: identifier,
-    title: title,
-    icon: icon,
-    closeLabel: closeLabel,
-    header: header,
-    headerClassName: headerClassName,
-    panelClassName: panelClassName
-  }, children), (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaMoreMenuItem, {
-    scope: "core/edit-site",
-    identifier: identifier,
-    icon: icon
-  }, title));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/styles.js
-
-
-/**
- * WordPress dependencies
- */
-
-const styles = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  viewBox: "0 0 24 24",
-  xmlns: "http://www.w3.org/2000/svg"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z"
-}));
-/* harmony default export */ var library_styles = (styles);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/icon-with-current-color.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-function IconWithCurrentColor(_ref) {
-  let {
-    className,
-    ...props
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, extends_extends({
-    className: classnames_default()(className, 'edit-site-global-styles-icon-with-current-color')
-  }, props));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/navigation-button.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-function GenericNavigationButton(_ref) {
-  let {
-    icon,
-    children,
-    ...props
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItem, props, icon && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    justify: "flex-start"
-  }, (0,external_wp_element_namespaceObject.createElement)(IconWithCurrentColor, {
-    icon: icon,
-    size: 24
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, children)), !icon && children);
-}
-
-function NavigationButton(props) {
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorButton, extends_extends({
-    as: GenericNavigationButton
-  }, props));
-}
-
-function NavigationBackButton(props) {
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorBackButton, extends_extends({
-    as: GenericNavigationButton
-  }, props));
-}
-
-
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/typography.js
-
-
-/**
- * WordPress dependencies
- */
-
-const typography = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M6.9 7L3 17.8h1.7l1-2.8h4.1l1 2.8h1.7L8.6 7H6.9zm-.7 6.6l1.5-4.3 1.5 4.3h-3zM21.6 17c-.1.1-.2.2-.3.2-.1.1-.2.1-.4.1s-.3-.1-.4-.2c-.1-.1-.1-.3-.1-.6V12c0-.5 0-1-.1-1.4-.1-.4-.3-.7-.5-1-.2-.2-.5-.4-.9-.5-.4 0-.8-.1-1.3-.1s-1 .1-1.4.2c-.4.1-.7.3-1 .4-.2.2-.4.3-.6.5-.1.2-.2.4-.2.7 0 .3.1.5.2.8.2.2.4.3.8.3.3 0 .6-.1.8-.3.2-.2.3-.4.3-.7 0-.3-.1-.5-.2-.7-.2-.2-.4-.3-.6-.4.2-.2.4-.3.7-.4.3-.1.6-.1.8-.1.3 0 .6 0 .8.1.2.1.4.3.5.5.1.2.2.5.2.9v1.1c0 .3-.1.5-.3.6-.2.2-.5.3-.9.4-.3.1-.7.3-1.1.4-.4.1-.8.3-1.1.5-.3.2-.6.4-.8.7-.2.3-.3.7-.3 1.2 0 .6.2 1.1.5 1.4.3.4.9.5 1.6.5.5 0 1-.1 1.4-.3.4-.2.8-.6 1.1-1.1 0 .4.1.7.3 1 .2.3.6.4 1.2.4.4 0 .7-.1.9-.2.2-.1.5-.3.7-.4h-.3zm-3-.9c-.2.4-.5.7-.8.8-.3.2-.6.2-.8.2-.4 0-.6-.1-.9-.3-.2-.2-.3-.6-.3-1.1 0-.5.1-.9.3-1.2s.5-.5.8-.7c.3-.2.7-.3 1-.5.3-.1.6-.3.7-.6v3.4z"
-}));
-/* harmony default export */ var library_typography = (typography);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/color.js
-
-
-/**
- * WordPress dependencies
- */
-
-const color = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  viewBox: "0 0 24 24",
-  xmlns: "http://www.w3.org/2000/svg"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3zm-5.1 7.6c-2.5 0-4.6-2.1-4.6-4.6 0-.3.1-1 .8-2.3.5-.9 1.1-1.9 2-3.1.7-.9 1.3-1.7 1.8-2.3.7.8 1.3 1.6 1.8 2.3.8 1.1 1.5 2.2 2 3.1.7 1.3.8 2 .8 2.3 0 2.5-2.1 4.6-4.6 4.6z"
-}));
-/* harmony default export */ var library_color = (color);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/layout.js
-
-
-/**
- * WordPress dependencies
- */
-
-const layout = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"
-}));
-/* harmony default export */ var library_layout = (layout);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/utils.js
-/**
- * External dependencies
- */
-
-/* Supporting data. */
-
-const ROOT_BLOCK_NAME = 'root';
-const ROOT_BLOCK_SELECTOR = 'body';
-const ROOT_BLOCK_SUPPORTS = (/* unused pure expression or super */ null && (['background', 'backgroundColor', 'color', 'linkColor', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'lineHeight', 'textDecoration', 'textTransform', 'padding']));
-const PRESET_METADATA = [{
-  path: ['color', 'palette'],
-  valueKey: 'color',
-  cssVarInfix: 'color',
-  classes: [{
-    classSuffix: 'color',
-    propertyName: 'color'
-  }, {
-    classSuffix: 'background-color',
-    propertyName: 'background-color'
-  }, {
-    classSuffix: 'border-color',
-    propertyName: 'border-color'
-  }]
-}, {
-  path: ['color', 'gradients'],
-  valueKey: 'gradient',
-  cssVarInfix: 'gradient',
-  classes: [{
-    classSuffix: 'gradient-background',
-    propertyName: 'background'
-  }]
-}, {
-  path: ['color', 'duotone'],
-  cssVarInfix: 'duotone',
-  valueFunc: _ref => {
-    let {
-      slug
-    } = _ref;
-    return `url( '#wp-duotone-${slug}' )`;
-  },
-  classes: []
-}, {
-  path: ['typography', 'fontSizes'],
-  valueKey: 'size',
-  cssVarInfix: 'font-size',
-  classes: [{
-    classSuffix: 'font-size',
-    propertyName: 'font-size'
-  }]
-}, {
-  path: ['typography', 'fontFamilies'],
-  valueKey: 'fontFamily',
-  cssVarInfix: 'font-family',
-  classes: [{
-    classSuffix: 'font-family',
-    propertyName: 'font-family'
-  }]
-}];
-const STYLE_PATH_TO_CSS_VAR_INFIX = {
-  'color.background': 'color',
-  'color.text': 'color',
-  'elements.link.color.text': 'color',
-  'color.gradient': 'gradient',
-  'typography.fontSize': 'font-size',
-  'typography.fontFamily': 'font-family'
-};
-
-function findInPresetsBy(features, blockName, presetPath, presetProperty, presetValueValue) {
-  // Block presets take priority above root level presets.
-  const orderedPresetsByOrigin = [(0,external_lodash_namespaceObject.get)(features, ['blocks', blockName, ...presetPath]), (0,external_lodash_namespaceObject.get)(features, presetPath)];
-
-  for (const presetByOrigin of orderedPresetsByOrigin) {
-    if (presetByOrigin) {
-      // Preset origins ordered by priority.
-      const origins = ['custom', 'theme', 'default'];
-
-      for (const origin of origins) {
-        const presets = presetByOrigin[origin];
-
-        if (presets) {
-          const presetObject = (0,external_lodash_namespaceObject.find)(presets, preset => preset[presetProperty] === presetValueValue);
-
-          if (presetObject) {
-            if (presetProperty === 'slug') {
-              return presetObject;
-            } // If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.
-
-
-            const highestPresetObjectWithSameSlug = findInPresetsBy(features, blockName, presetPath, 'slug', presetObject.slug);
-
-            if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) {
-              return presetObject;
-            }
-
-            return undefined;
-          }
-        }
-      }
-    }
-  }
-}
-
-function getPresetVariableFromValue(features, blockName, variableStylePath, presetPropertyValue) {
-  if (!presetPropertyValue) {
-    return presetPropertyValue;
-  }
-
-  const cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[variableStylePath];
-  const metadata = (0,external_lodash_namespaceObject.find)(PRESET_METADATA, ['cssVarInfix', cssVarInfix]);
-
-  if (!metadata) {
-    // The property doesn't have preset data
-    // so the value should be returned as it is.
-    return presetPropertyValue;
-  }
-
-  const {
-    valueKey,
-    path
-  } = metadata;
-  const presetObject = findInPresetsBy(features, blockName, path, valueKey, presetPropertyValue);
-
-  if (!presetObject) {
-    // Value wasn't found in the presets,
-    // so it must be a custom value.
-    return presetPropertyValue;
-  }
-
-  return `var:preset|${cssVarInfix}|${presetObject.slug}`;
-}
-
-function getValueFromPresetVariable(features, blockName, variable, _ref2) {
-  let [presetType, slug] = _ref2;
-  const metadata = (0,external_lodash_namespaceObject.find)(PRESET_METADATA, ['cssVarInfix', presetType]);
-
-  if (!metadata) {
-    return variable;
-  }
-
-  const presetObject = findInPresetsBy(features, blockName, metadata.path, 'slug', slug);
-
-  if (presetObject) {
-    const {
-      valueKey
-    } = metadata;
-    const result = presetObject[valueKey];
-    return getValueFromVariable(features, blockName, result);
-  }
-
-  return variable;
-}
-
-function getValueFromCustomVariable(features, blockName, variable, path) {
-  var _get;
-
-  const result = (_get = (0,external_lodash_namespaceObject.get)(features, ['blocks', blockName, 'custom', ...path])) !== null && _get !== void 0 ? _get : (0,external_lodash_namespaceObject.get)(features, ['custom', ...path]);
-
-  if (!result) {
-    return variable;
-  } // A variable may reference another variable so we need recursion until we find the value.
-
-
-  return getValueFromVariable(features, blockName, result);
-}
-
-function getValueFromVariable(features, blockName, variable) {
-  if (!variable || !(0,external_lodash_namespaceObject.isString)(variable)) {
-    return variable;
-  }
-
-  const USER_VALUE_PREFIX = 'var:';
-  const THEME_VALUE_PREFIX = 'var(--wp--';
-  const THEME_VALUE_SUFFIX = ')';
-  let parsedVar;
-
-  if (variable.startsWith(USER_VALUE_PREFIX)) {
-    parsedVar = variable.slice(USER_VALUE_PREFIX.length).split('|');
-  } else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) {
-    parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split('--');
-  } else {
-    // We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`
-    return variable;
-  }
-
-  const [type, ...path] = parsedVar;
-
-  if (type === 'preset') {
-    return getValueFromPresetVariable(features, blockName, variable, path);
-  }
-
-  if (type === 'custom') {
-    return getValueFromCustomVariable(features, blockName, variable, path);
-  }
-
-  return variable;
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/context.js
-/**
- * WordPress dependencies
- */
-
-const DEFAULT_GLOBAL_STYLES_CONTEXT = {
-  user: {},
-  base: {},
-  merged: {},
-  setUserConfig: () => {}
-};
-const GlobalStylesContext = (0,external_wp_element_namespaceObject.createContext)(DEFAULT_GLOBAL_STYLES_CONTEXT);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/hooks.js
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-const EMPTY_CONFIG = {
-  settings: {},
-  styles: {}
-};
-const useGlobalStylesReset = () => {
-  const {
-    user: config,
-    setUserConfig
-  } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
-  const canReset = !!config && !(0,external_lodash_namespaceObject.isEqual)(config, EMPTY_CONFIG);
-  return [canReset, (0,external_wp_element_namespaceObject.useCallback)(() => setUserConfig(() => EMPTY_CONFIG), [setUserConfig])];
-};
-function useSetting(path, blockName) {
-  var _getSettingValueForCo;
-
-  let source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'all';
-  const {
-    merged: mergedConfig,
-    base: baseConfig,
-    user: userConfig,
-    setUserConfig
-  } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
-  const fullPath = !blockName ? `settings.${path}` : `settings.blocks.${blockName}.${path}`;
-
-  const setSetting = newValue => {
-    setUserConfig(currentConfig => {
-      const newUserConfig = (0,external_lodash_namespaceObject.cloneDeep)(currentConfig);
-      const pathToSet = external_wp_blocks_namespaceObject.__EXPERIMENTAL_PATHS_WITH_MERGE[path] ? fullPath + '.custom' : fullPath;
-      (0,external_lodash_namespaceObject.set)(newUserConfig, pathToSet, newValue);
-      return newUserConfig;
-    });
-  };
-
-  const getSettingValueForContext = name => {
-    const currentPath = !name ? `settings.${path}` : `settings.blocks.${name}.${path}`;
-
-    const getSettingValue = configToUse => {
-      const result = (0,external_lodash_namespaceObject.get)(configToUse, currentPath);
-
-      if (external_wp_blocks_namespaceObject.__EXPERIMENTAL_PATHS_WITH_MERGE[path]) {
-        var _ref, _result$custom;
-
-        return (_ref = (_result$custom = result === null || result === void 0 ? void 0 : result.custom) !== null && _result$custom !== void 0 ? _result$custom : result === null || result === void 0 ? void 0 : result.theme) !== null && _ref !== void 0 ? _ref : result === null || result === void 0 ? void 0 : result.default;
-      }
-
-      return result;
-    };
-
-    let result;
-
-    switch (source) {
-      case 'all':
-        result = getSettingValue(mergedConfig);
-        break;
-
-      case 'user':
-        result = getSettingValue(userConfig);
-        break;
-
-      case 'base':
-        result = getSettingValue(baseConfig);
-        break;
-
-      default:
-        throw 'Unsupported source';
-    }
-
-    return result;
-  }; // Unlike styles settings get inherited from top level settings.
-
-
-  const resultWithFallback = (_getSettingValueForCo = getSettingValueForContext(blockName)) !== null && _getSettingValueForCo !== void 0 ? _getSettingValueForCo : getSettingValueForContext();
-  return [resultWithFallback, setSetting];
-}
-function useStyle(path, blockName) {
-  var _get;
-
-  let source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'all';
-  const {
-    merged: mergedConfig,
-    base: baseConfig,
-    user: userConfig,
-    setUserConfig
-  } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
-  const finalPath = !blockName ? `styles.${path}` : `styles.blocks.${blockName}.${path}`;
-
-  const setStyle = newValue => {
-    setUserConfig(currentConfig => {
-      const newUserConfig = (0,external_lodash_namespaceObject.cloneDeep)(currentConfig);
-      (0,external_lodash_namespaceObject.set)(newUserConfig, finalPath, getPresetVariableFromValue(mergedConfig.settings, blockName, path, newValue));
-      return newUserConfig;
-    });
-  };
-
-  let result;
-
-  switch (source) {
-    case 'all':
-      result = getValueFromVariable(mergedConfig.settings, blockName, (_get = (0,external_lodash_namespaceObject.get)(userConfig, finalPath)) !== null && _get !== void 0 ? _get : (0,external_lodash_namespaceObject.get)(baseConfig, finalPath));
-      break;
-
-    case 'user':
-      result = getValueFromVariable(mergedConfig.settings, blockName, (0,external_lodash_namespaceObject.get)(userConfig, finalPath));
-      break;
-
-    case 'base':
-      result = getValueFromVariable(baseConfig.settings, blockName, (0,external_lodash_namespaceObject.get)(baseConfig, finalPath));
-      break;
-
-    default:
-      throw 'Unsupported source';
-  }
-
-  return [result, setStyle];
-}
-const hooks_ROOT_BLOCK_SUPPORTS = ['background', 'backgroundColor', 'color', 'linkColor', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'lineHeight', 'textDecoration', 'textTransform', 'padding'];
-function getSupportedGlobalStylesPanels(name) {
-  if (!name) {
-    return hooks_ROOT_BLOCK_SUPPORTS;
-  }
-
-  const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(name);
-
-  if (!blockType) {
-    return [];
-  }
-
-  const supportKeys = [];
-  Object.keys(external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY).forEach(styleName => {
-    if (!external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].support) {
-      return;
-    } // Opting out means that, for certain support keys like background color,
-    // blocks have to explicitly set the support value false. If the key is
-    // unset, we still enable it.
-
-
-    if (external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].requiresOptOut) {
-      if ((0,external_lodash_namespaceObject.has)(blockType.supports, external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].support[0]) && (0,external_lodash_namespaceObject.get)(blockType.supports, external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].support) !== false) {
-        return supportKeys.push(styleName);
-      }
-    }
-
-    if ((0,external_lodash_namespaceObject.get)(blockType.supports, external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].support, false)) {
-      return supportKeys.push(styleName);
-    }
-  });
-  return supportKeys;
-}
-function useColorsPerOrigin(name) {
-  const [customColors] = useSetting('color.palette.custom', name);
-  const [themeColors] = useSetting('color.palette.theme', name);
-  const [defaultColors] = useSetting('color.palette.default', name);
-  const [shouldDisplayDefaultColors] = useSetting('color.defaultPalette');
-  return (0,external_wp_element_namespaceObject.useMemo)(() => {
-    const result = [];
-
-    if (themeColors && themeColors.length) {
-      result.push({
-        name: (0,external_wp_i18n_namespaceObject._x)('Theme', 'Indicates this palette comes from the theme.'),
-        colors: themeColors
-      });
-    }
-
-    if (shouldDisplayDefaultColors && defaultColors && defaultColors.length) {
-      result.push({
-        name: (0,external_wp_i18n_namespaceObject._x)('Default', 'Indicates this palette comes from WordPress.'),
-        colors: defaultColors
-      });
-    }
-
-    if (customColors && customColors.length) {
-      result.push({
-        name: (0,external_wp_i18n_namespaceObject._x)('Custom', 'Indicates this palette is created by the user.'),
-        colors: customColors
-      });
-    }
-
-    return result;
-  }, [customColors, themeColors, defaultColors]);
-}
-function useGradientsPerOrigin(name) {
-  const [customGradients] = useSetting('color.gradients.custom', name);
-  const [themeGradients] = useSetting('color.gradients.theme', name);
-  const [defaultGradients] = useSetting('color.gradients.default', name);
-  const [shouldDisplayDefaultGradients] = useSetting('color.defaultGradients');
-  return (0,external_wp_element_namespaceObject.useMemo)(() => {
-    const result = [];
-
-    if (themeGradients && themeGradients.length) {
-      result.push({
-        name: (0,external_wp_i18n_namespaceObject._x)('Theme', 'Indicates this palette comes from the theme.'),
-        gradients: themeGradients
-      });
-    }
-
-    if (shouldDisplayDefaultGradients && defaultGradients && defaultGradients.length) {
-      result.push({
-        name: (0,external_wp_i18n_namespaceObject._x)('Default', 'Indicates this palette comes from WordPress.'),
-        gradients: defaultGradients
-      });
-    }
-
-    if (customGradients && customGradients.length) {
-      result.push({
-        name: (0,external_wp_i18n_namespaceObject._x)('Custom', 'Indicates this palette is created by the user.'),
-        gradients: customGradients
-      });
-    }
-
-    return result;
-  }, [customGradients, themeGradients, defaultGradients]);
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/border-panel.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-const MIN_BORDER_WIDTH = 0;
-function useHasBorderPanel(name) {
-  const controls = [useHasBorderColorControl(name), useHasBorderRadiusControl(name), useHasBorderStyleControl(name), useHasBorderWidthControl(name)];
-  return controls.some(Boolean);
-}
-
-function useHasBorderColorControl(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  return useSetting('border.color', name)[0] && supports.includes('borderColor');
-}
-
-function useHasBorderRadiusControl(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  return useSetting('border.radius', name)[0] && supports.includes('borderRadius');
-}
-
-function useHasBorderStyleControl(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  return useSetting('border.style', name)[0] && supports.includes('borderStyle');
-}
-
-function useHasBorderWidthControl(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  return useSetting('border.width', name)[0] && supports.includes('borderWidth');
-}
-
-function BorderPanel(_ref) {
-  let {
-    name
-  } = _ref;
-  // To better reflect if the user has customized a value we need to
-  // ensure the style value being checked is from the `user` origin.
-  const [userBorderStyles] = useStyle('border', name, 'user');
-
-  const createHasValueCallback = feature => () => !!(userBorderStyles !== null && userBorderStyles !== void 0 && userBorderStyles[feature]);
-
-  const createResetCallback = setStyle => () => setStyle(undefined);
-
-  const handleOnChange = setStyle => value => {
-    setStyle(value || undefined);
-  };
-
-  const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({
-    availableUnits: useSetting('spacing.units')[0] || ['px', 'em', 'rem']
-  }); // Border width.
-
-  const showBorderWidth = useHasBorderWidthControl(name);
-  const [borderWidthValue, setBorderWidth] = useStyle('border.width', name); // Border style.
-
-  const showBorderStyle = useHasBorderStyleControl(name);
-  const [borderStyle, setBorderStyle] = useStyle('border.style', name); // When we set a border color or width ensure we have a style so the user
-  // can see a visible border.
-
-  const handleOnChangeWithStyle = setStyle => value => {
-    if (!!value && !borderStyle) {
-      setBorderStyle('solid');
-    }
-
-    setStyle(value || undefined);
-  }; // Border color.
-
-
-  const showBorderColor = useHasBorderColorControl(name);
-  const [borderColor, setBorderColor] = useStyle('border.color', name);
-  const disableCustomColors = !useSetting('color.custom')[0];
-  const disableCustomGradients = !useSetting('color.customGradient')[0];
-  const borderColorSettings = [{
-    label: (0,external_wp_i18n_namespaceObject.__)('Color'),
-    colors: useColorsPerOrigin(name),
-    colorValue: borderColor,
-    onColorChange: handleOnChangeWithStyle(setBorderColor),
-    clearable: false
-  }]; // Border radius.
-
-  const showBorderRadius = useHasBorderRadiusControl(name);
-  const [borderRadiusValues, setBorderRadius] = useStyle('border.radius', name);
-
-  const hasBorderRadius = () => {
-    const borderValues = userBorderStyles === null || userBorderStyles === void 0 ? void 0 : userBorderStyles.radius;
-
-    if (typeof borderValues === 'object') {
-      return Object.entries(borderValues).some(Boolean);
-    }
-
-    return !!borderValues;
-  };
-
-  const resetAll = () => {
-    setBorderColor(undefined);
-    setBorderRadius(undefined);
-    setBorderStyle(undefined);
-    setBorderWidth(undefined);
-  };
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanel, {
-    label: (0,external_wp_i18n_namespaceObject.__)('Border'),
-    resetAll: resetAll
-  }, showBorderWidth && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
-    className: "single-column",
-    hasValue: createHasValueCallback('width'),
-    label: (0,external_wp_i18n_namespaceObject.__)('Width'),
-    onDeselect: createResetCallback(setBorderWidth),
-    isShownByDefault: true
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalUnitControl, {
-    value: borderWidthValue,
-    label: (0,external_wp_i18n_namespaceObject.__)('Width'),
-    min: MIN_BORDER_WIDTH,
-    onChange: handleOnChangeWithStyle(setBorderWidth),
-    units: units
-  })), showBorderStyle && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
-    className: "single-column",
-    hasValue: createHasValueCallback('style'),
-    label: (0,external_wp_i18n_namespaceObject.__)('Style'),
-    onDeselect: createResetCallback(setBorderStyle),
-    isShownByDefault: true
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalBorderStyleControl, {
-    value: borderStyle,
-    onChange: handleOnChange(setBorderStyle)
-  })), showBorderColor && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
-    hasValue: createHasValueCallback('color'),
-    label: (0,external_wp_i18n_namespaceObject.__)('Color'),
-    onDeselect: createResetCallback(setBorderColor),
-    isShownByDefault: true
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientSettingsDropdown, {
-    __experimentalHasMultipleOrigins: true,
-    __experimentalIsRenderedInSidebar: true,
-    disableCustomColors: disableCustomColors,
-    disableCustomGradients: disableCustomGradients,
-    enableAlpha: true,
-    settings: borderColorSettings
-  })), showBorderRadius && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
-    hasValue: hasBorderRadius,
-    label: (0,external_wp_i18n_namespaceObject.__)('Radius'),
-    onDeselect: createResetCallback(setBorderRadius),
-    isShownByDefault: true
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalBorderRadiusControl, {
-    values: borderRadiusValues,
-    onChange: handleOnChange(setBorderRadius)
-  })));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-utils.js
-/**
- * Internal dependencies
- */
-
-function useHasColorPanel(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  return supports.includes('color') || supports.includes('backgroundColor') || supports.includes('background') || supports.includes('linkColor');
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/dimensions-panel.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-const AXIAL_SIDES = ['horizontal', 'vertical'];
-function useHasDimensionsPanel(name) {
-  const hasPadding = useHasPadding(name);
-  const hasMargin = useHasMargin(name);
-  const hasGap = useHasGap(name);
-  return hasPadding || hasMargin || hasGap;
-}
-
-function useHasPadding(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  const [settings] = useSetting('spacing.padding', name);
-  return settings && supports.includes('padding');
-}
-
-function useHasMargin(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  const [settings] = useSetting('spacing.margin', name);
-  return settings && supports.includes('margin');
-}
-
-function useHasGap(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  const [settings] = useSetting('spacing.blockGap', name); // Do not show the gap control panel for block-level global styles
-  // as they do not work on the frontend.
-  // See: https://github.com/WordPress/gutenberg/pull/39845.
-  // We can revert this condition when they're working again.
-
-  return !!name ? false : settings && supports.includes('--wp--style--block-gap');
-}
-
-function filterValuesBySides(values, sides) {
-  if (!sides) {
-    // If no custom side configuration all sides are opted into by default.
-    return values;
-  } // Only include sides opted into within filtered values.
-
-
-  const filteredValues = {};
-  sides.forEach(side => {
-    if (side === 'vertical') {
-      filteredValues.top = values.top;
-      filteredValues.bottom = values.bottom;
-    }
-
-    if (side === 'horizontal') {
-      filteredValues.left = values.left;
-      filteredValues.right = values.right;
-    }
-
-    filteredValues[side] = values[side];
-  });
-  return filteredValues;
-}
-
-function splitStyleValue(value) {
-  // Check for shorthand value ( a string value ).
-  if (value && typeof value === 'string') {
-    // Convert to value for individual sides for BoxControl.
-    return {
-      top: value,
-      right: value,
-      bottom: value,
-      left: value
-    };
-  }
-
-  return value;
-}
-
-function DimensionsPanel(_ref) {
-  let {
-    name
-  } = _ref;
-  const showPaddingControl = useHasPadding(name);
-  const showMarginControl = useHasMargin(name);
-  const showGapControl = useHasGap(name);
-  const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({
-    availableUnits: useSetting('spacing.units', name)[0] || ['%', 'px', 'em', 'rem', 'vw']
-  });
-  const [rawPadding, setRawPadding] = useStyle('spacing.padding', name);
-  const paddingValues = splitStyleValue(rawPadding);
-  const paddingSides = (0,external_wp_blockEditor_namespaceObject.__experimentalUseCustomSides)(name, 'padding');
-  const isAxialPadding = paddingSides && paddingSides.some(side => AXIAL_SIDES.includes(side));
-
-  const setPaddingValues = newPaddingValues => {
-    const padding = filterValuesBySides(newPaddingValues, paddingSides);
-    setRawPadding(padding);
-  };
-
-  const resetPaddingValue = () => setPaddingValues({});
-
-  const hasPaddingValue = () => !!paddingValues && Object.keys(paddingValues).length;
-
-  const [rawMargin, setRawMargin] = useStyle('spacing.margin', name);
-  const marginValues = splitStyleValue(rawMargin);
-  const marginSides = (0,external_wp_blockEditor_namespaceObject.__experimentalUseCustomSides)(name, 'margin');
-  const isAxialMargin = marginSides && marginSides.some(side => AXIAL_SIDES.includes(side));
-
-  const setMarginValues = newMarginValues => {
-    const margin = filterValuesBySides(newMarginValues, marginSides);
-    setRawMargin(margin);
-  };
-
-  const resetMarginValue = () => setMarginValues({});
-
-  const hasMarginValue = () => !!marginValues && Object.keys(marginValues).length;
-
-  const [gapValue, setGapValue] = useStyle('spacing.blockGap', name);
-
-  const resetGapValue = () => setGapValue(undefined);
-
-  const hasGapValue = () => !!gapValue;
-
-  const resetAll = () => {
-    resetPaddingValue();
-    resetMarginValue();
-    resetGapValue();
-  };
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanel, {
-    label: (0,external_wp_i18n_namespaceObject.__)('Dimensions'),
-    resetAll: resetAll
-  }, showPaddingControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
-    hasValue: hasPaddingValue,
-    label: (0,external_wp_i18n_namespaceObject.__)('Padding'),
-    onDeselect: resetPaddingValue,
-    isShownByDefault: true
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalBoxControl, {
-    values: paddingValues,
-    onChange: setPaddingValues,
-    label: (0,external_wp_i18n_namespaceObject.__)('Padding'),
-    sides: paddingSides,
-    units: units,
-    allowReset: false,
-    splitOnAxis: isAxialPadding
-  })), showMarginControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
-    hasValue: hasMarginValue,
-    label: (0,external_wp_i18n_namespaceObject.__)('Margin'),
-    onDeselect: resetMarginValue,
-    isShownByDefault: true
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalBoxControl, {
-    values: marginValues,
-    onChange: setMarginValues,
-    label: (0,external_wp_i18n_namespaceObject.__)('Margin'),
-    sides: marginSides,
-    units: units,
-    allowReset: false,
-    splitOnAxis: isAxialMargin
-  })), showGapControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
-    hasValue: hasGapValue,
-    label: (0,external_wp_i18n_namespaceObject.__)('Block spacing'),
-    onDeselect: resetGapValue,
-    isShownByDefault: true
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalUnitControl, {
-    label: (0,external_wp_i18n_namespaceObject.__)('Block spacing'),
-    __unstableInputWidth: "80px",
-    min: 0,
-    onChange: setGapValue,
-    units: units,
-    value: gapValue
-  })));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-panel.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-function useHasTypographyPanel(name) {
-  const hasLineHeight = useHasLineHeightControl(name);
-  const hasFontAppearance = useHasAppearanceControl(name);
-  const hasLetterSpacing = useHasLetterSpacingControl(name);
-  const supports = getSupportedGlobalStylesPanels(name);
-  return hasLineHeight || hasFontAppearance || hasLetterSpacing || supports.includes('fontSize');
-}
-
-function useHasLineHeightControl(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  return useSetting('typography.lineHeight', name)[0] && supports.includes('lineHeight');
-}
-
-function useHasAppearanceControl(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  const hasFontStyles = useSetting('typography.fontStyle', name)[0] && supports.includes('fontStyle');
-  const hasFontWeights = useSetting('typography.fontWeight', name)[0] && supports.includes('fontWeight');
-  return hasFontStyles || hasFontWeights;
-}
-
-function useHasLetterSpacingControl(name) {
-  const supports = getSupportedGlobalStylesPanels(name);
-  return useSetting('typography.letterSpacing', name)[0] && supports.includes('letterSpacing');
-}
-
-function TypographyPanel(_ref) {
-  let {
-    name,
-    element
-  } = _ref;
-  const supports = getSupportedGlobalStylesPanels(name);
-  const prefix = element === 'text' || !element ? '' : `elements.${element}.`;
-  const [fontSizes] = useSetting('typography.fontSizes', name);
-  const disableCustomFontSizes = !useSetting('typography.customFontSize', name)[0];
-  const [fontFamilies] = useSetting('typography.fontFamilies', name);
-  const hasFontStyles = useSetting('typography.fontStyle', name)[0] && supports.includes('fontStyle');
-  const hasFontWeights = useSetting('typography.fontWeight', name)[0] && supports.includes('fontWeight');
-  const hasLineHeightEnabled = useHasLineHeightControl(name);
-  const hasAppearanceControl = useHasAppearanceControl(name);
-  const hasLetterSpacingControl = useHasLetterSpacingControl(name);
-  const [fontFamily, setFontFamily] = useStyle(prefix + 'typography.fontFamily', name);
-  const [fontSize, setFontSize] = useStyle(prefix + 'typography.fontSize', name);
-  const [fontStyle, setFontStyle] = useStyle(prefix + 'typography.fontStyle', name);
-  const [fontWeight, setFontWeight] = useStyle(prefix + 'typography.fontWeight', name);
-  const [lineHeight, setLineHeight] = useStyle(prefix + 'typography.lineHeight', name);
-  const [letterSpacing, setLetterSpacing] = useStyle(prefix + 'typography.letterSpacing', name);
-  const [backgroundColor] = useStyle(prefix + 'color.background', name);
-  const [gradientValue] = useStyle(prefix + 'color.gradient', name);
-  const [color] = useStyle(prefix + 'color.text', name);
-  const extraStyles = element === 'link' ? {
-    textDecoration: 'underline'
-  } : {};
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, {
-    className: "edit-site-typography-panel",
-    initialOpen: true
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-typography-panel__preview",
-    style: {
-      fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif',
-      background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor,
-      color,
-      fontSize,
-      fontStyle,
-      fontWeight,
-      letterSpacing,
-      ...extraStyles
-    }
-  }, "Aa"), supports.includes('fontFamily') && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalFontFamilyControl, {
-    fontFamilies: fontFamilies,
-    value: fontFamily,
-    onChange: setFontFamily
-  }), supports.includes('fontSize') && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FontSizePicker, {
-    value: fontSize,
-    onChange: setFontSize,
-    fontSizes: fontSizes,
-    disableCustomFontSizes: disableCustomFontSizes
-  }), hasLineHeightEnabled && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalSpacer, {
-    marginBottom: 6
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.LineHeightControl, {
-    __nextHasNoMarginBottom: true,
-    value: lineHeight,
-    onChange: setLineHeight
-  })), hasAppearanceControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalFontAppearanceControl, {
-    value: {
-      fontStyle,
-      fontWeight
-    },
-    onChange: _ref2 => {
-      let {
-        fontStyle: newFontStyle,
-        fontWeight: newFontWeight
-      } = _ref2;
-      setFontStyle(newFontStyle);
-      setFontWeight(newFontWeight);
-    },
-    hasFontStyles: hasFontStyles,
-    hasFontWeights: hasFontWeights
-  }), hasLetterSpacingControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalLetterSpacingControl, {
-    value: letterSpacing,
-    onChange: setLetterSpacing
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/context-menu.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-function ContextMenu(_ref) {
-  let {
-    name,
-    parentMenu = ''
-  } = _ref;
-  const hasTypographyPanel = useHasTypographyPanel(name);
-  const hasColorPanel = useHasColorPanel(name);
-  const hasBorderPanel = useHasBorderPanel(name);
-  const hasDimensionsPanel = useHasDimensionsPanel(name);
-  const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, null, hasTypographyPanel && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    icon: library_typography,
-    path: parentMenu + '/typography'
-  }, (0,external_wp_i18n_namespaceObject.__)('Typography')), hasColorPanel && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    icon: library_color,
-    path: parentMenu + '/colors'
-  }, (0,external_wp_i18n_namespaceObject.__)('Colors')), hasLayoutPanel && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    icon: library_layout,
-    path: parentMenu + '/layout'
-  }, (0,external_wp_i18n_namespaceObject.__)('Layout')));
-}
-
-/* harmony default export */ var context_menu = (ContextMenu);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/utils.js
-/**
- * External dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-function generateBoxRules(style, options, path, ruleKey) {
-  const boxStyle = (0,external_lodash_namespaceObject.get)(style, path);
-
-  if (!boxStyle) {
-    return [];
-  }
-
-  const rules = [];
-
-  if (typeof boxStyle === 'string') {
-    rules.push({
-      selector: options.selector,
-      key: ruleKey,
-      value: boxStyle
-    });
-  } else {
-    const sideRules = ['top', 'right', 'bottom', 'left'].reduce((acc, side) => {
-      const value = (0,external_lodash_namespaceObject.get)(boxStyle, [side]);
-
-      if (value) {
-        acc.push({
-          selector: options.selector,
-          key: `${ruleKey}${(0,external_lodash_namespaceObject.upperFirst)(side)}`,
-          value
-        });
-      }
-
-      return acc;
-    }, []);
-    rules.push(...sideRules);
-  }
-
-  return rules;
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/padding.js
-/**
- * Internal dependencies
- */
-
-const padding = {
-  name: 'padding',
-  generate: (style, options) => {
-    return generateBoxRules(style, options, ['spacing', 'padding'], 'padding');
-  }
-};
-/* harmony default export */ var styles_padding = (padding);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/margin.js
-/**
- * Internal dependencies
- */
-
-const margin = {
-  name: 'margin',
-  generate: (style, options) => {
-    return generateBoxRules(style, options, ['spacing', 'margin'], 'margin');
-  }
-};
-/* harmony default export */ var styles_margin = (margin);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/index.js
-/**
- * Internal dependencies
- */
-
-
-const styleDefinitions = [styles_margin, styles_padding];
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/index.js
-/**
- * External dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Generates a stylesheet for a given style object and selector.
- *
- * @param  style   Style object.
- * @param  options Options object with settings to adjust how the styles are generated.
- *
- * @return generated stylesheet.
- */
-
-function generate(style, options) {
-  const rules = getCSSRules(style, options);
-  const groupedRules = groupBy(rules, 'selector');
-  const selectorRules = Object.keys(groupedRules).reduce((acc, subSelector) => {
-    acc.push(`${subSelector} { ${groupedRules[subSelector].map(rule => `${kebabCase(rule.key)}: ${rule.value};`).join(' ')} }`);
-    return acc;
-  }, []);
-  return selectorRules.join('\n');
-}
-/**
- * Returns a JSON representation of the generated CSS rules.
- *
- * @param  style   Style object.
- * @param  options Options object with settings to adjust how the styles are generated.
- *
- * @return generated styles.
- */
-
-function getCSSRules(style, options) {
-  const rules = [];
-  styleDefinitions.forEach(definition => {
-    rules.push(...definition.generate(style, options));
-  });
-  return rules;
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/use-global-styles-output.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function compileStyleValue(uncompiledValue) {
-  const VARIABLE_REFERENCE_PREFIX = 'var:';
-  const VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|';
-  const VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--';
-
-  if ((0,external_lodash_namespaceObject.startsWith)(uncompiledValue, VARIABLE_REFERENCE_PREFIX)) {
-    const variable = uncompiledValue.slice(VARIABLE_REFERENCE_PREFIX.length).split(VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE).join(VARIABLE_PATH_SEPARATOR_TOKEN_STYLE);
-    return `var(--wp--${variable})`;
-  }
-
-  return uncompiledValue;
-}
-/**
- * Transform given preset tree into a set of style declarations.
- *
- * @param {Object} blockPresets
- *
- * @return {Array} An array of style declarations.
- */
-
-
-function getPresetsDeclarations() {
-  let blockPresets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  return (0,external_lodash_namespaceObject.reduce)(PRESET_METADATA, (declarations, _ref) => {
-    let {
-      path,
-      valueKey,
-      valueFunc,
-      cssVarInfix
-    } = _ref;
-    const presetByOrigin = (0,external_lodash_namespaceObject.get)(blockPresets, path, []);
-    ['default', 'theme', 'custom'].forEach(origin => {
-      if (presetByOrigin[origin]) {
-        presetByOrigin[origin].forEach(value => {
-          if (valueKey) {
-            declarations.push(`--wp--preset--${cssVarInfix}--${(0,external_lodash_namespaceObject.kebabCase)(value.slug)}: ${value[valueKey]}`);
-          } else if (valueFunc && typeof valueFunc === 'function') {
-            declarations.push(`--wp--preset--${cssVarInfix}--${(0,external_lodash_namespaceObject.kebabCase)(value.slug)}: ${valueFunc(value)}`);
-          }
-        });
-      }
-    });
-    return declarations;
-  }, []);
-}
-/**
- * Transform given preset tree into a set of preset class declarations.
- *
- * @param {string} blockSelector
- * @param {Object} blockPresets
- * @return {string} CSS declarations for the preset classes.
- */
-
-
-function getPresetsClasses(blockSelector) {
-  let blockPresets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  return (0,external_lodash_namespaceObject.reduce)(PRESET_METADATA, (declarations, _ref2) => {
-    let {
-      path,
-      cssVarInfix,
-      classes
-    } = _ref2;
-
-    if (!classes) {
-      return declarations;
-    }
-
-    const presetByOrigin = (0,external_lodash_namespaceObject.get)(blockPresets, path, []);
-    ['default', 'theme', 'custom'].forEach(origin => {
-      if (presetByOrigin[origin]) {
-        presetByOrigin[origin].forEach(_ref3 => {
-          let {
-            slug
-          } = _ref3;
-          classes.forEach(_ref4 => {
-            let {
-              classSuffix,
-              propertyName
-            } = _ref4;
-            const classSelectorToUse = `.has-${(0,external_lodash_namespaceObject.kebabCase)(slug)}-${classSuffix}`;
-            const selectorToUse = blockSelector.split(',') // Selector can be "h1, h2, h3"
-            .map(selector => `${selector}${classSelectorToUse}`).join(',');
-            const value = `var(--wp--preset--${cssVarInfix}--${(0,external_lodash_namespaceObject.kebabCase)(slug)})`;
-            declarations += `${selectorToUse}{${propertyName}: ${value} !important;}`;
-          });
-        });
-      }
-    });
-    return declarations;
-  }, '');
-}
-
-function getPresetsSvgFilters() {
-  let blockPresets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  return PRESET_METADATA.filter( // Duotone are the only type of filters for now.
-  metadata => metadata.path.at(-1) === 'duotone').flatMap(metadata => {
-    const presetByOrigin = (0,external_lodash_namespaceObject.get)(blockPresets, metadata.path, {});
-    return ['default', 'theme'].filter(origin => presetByOrigin[origin]).flatMap(origin => presetByOrigin[origin].map(preset => (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstablePresetDuotoneFilter, {
-      preset: preset,
-      key: preset.slug
-    })));
-  });
-}
-
-function flattenTree() {
-  let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  let prefix = arguments.length > 1 ? arguments[1] : undefined;
-  let token = arguments.length > 2 ? arguments[2] : undefined;
-  let result = [];
-  Object.keys(input).forEach(key => {
-    const newKey = prefix + (0,external_lodash_namespaceObject.kebabCase)(key.replace('/', '-'));
-    const newLeaf = input[key];
-
-    if (newLeaf instanceof Object) {
-      const newPrefix = newKey + token;
-      result = [...result, ...flattenTree(newLeaf, newPrefix, token)];
-    } else {
-      result.push(`${newKey}: ${newLeaf}`);
-    }
-  });
-  return result;
-}
-/**
- * Transform given style tree into a set of style declarations.
- *
- * @param {Object} blockStyles Block styles.
- *
- * @return {Array} An array of style declarations.
- */
-
-
-function getStylesDeclarations() {
-  let blockStyles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  const output = (0,external_lodash_namespaceObject.reduce)(external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY, (declarations, _ref5, key) => {
-    let {
-      value,
-      properties,
-      useEngine
-    } = _ref5;
-    const pathToValue = value;
-
-    if ((0,external_lodash_namespaceObject.first)(pathToValue) === 'elements' || useEngine) {
-      return declarations;
-    }
-
-    const styleValue = (0,external_lodash_namespaceObject.get)(blockStyles, pathToValue);
-
-    if (!!properties && !(0,external_lodash_namespaceObject.isString)(styleValue)) {
-      Object.entries(properties).forEach(entry => {
-        const [name, prop] = entry;
-
-        if (!(0,external_lodash_namespaceObject.get)(styleValue, [prop], false)) {
-          // Do not create a declaration
-          // for sub-properties that don't have any value.
-          return;
-        }
-
-        const cssProperty = (0,external_lodash_namespaceObject.kebabCase)(name);
-        declarations.push(`${cssProperty}: ${compileStyleValue((0,external_lodash_namespaceObject.get)(styleValue, [prop]))}`);
-      });
-    } else if ((0,external_lodash_namespaceObject.get)(blockStyles, pathToValue, false)) {
-      const cssProperty = key.startsWith('--') ? key : (0,external_lodash_namespaceObject.kebabCase)(key);
-      declarations.push(`${cssProperty}: ${compileStyleValue((0,external_lodash_namespaceObject.get)(blockStyles, pathToValue))}`);
-    }
-
-    return declarations;
-  }, []); // The goal is to move everything to server side generated engine styles
-  // This is temporary as we absorb more and more styles into the engine.
-
-  const extraRules = getCSSRules(blockStyles, {
-    selector: 'self'
-  });
-  extraRules.forEach(rule => {
-    if (rule.selector !== 'self') {
-      throw "This style can't be added as inline style";
-    }
-
-    const cssProperty = rule.key.startsWith('--') ? rule.key : (0,external_lodash_namespaceObject.kebabCase)(rule.key);
-    output.push(`${cssProperty}: ${compileStyleValue(rule.value)}`);
-  });
-  return output;
-}
-
-const getNodesWithStyles = (tree, blockSelectors) => {
-  var _tree$styles, _tree$styles2;
-
-  const nodes = [];
-
-  if (!(tree !== null && tree !== void 0 && tree.styles)) {
-    return nodes;
-  }
-
-  const pickStyleKeys = treeToPickFrom => (0,external_lodash_namespaceObject.pickBy)(treeToPickFrom, (value, key) => ['border', 'color', 'spacing', 'typography', 'filter'].includes(key)); // Top-level.
-
-
-  const styles = pickStyleKeys(tree.styles);
-
-  if (!!styles) {
-    nodes.push({
-      styles,
-      selector: ROOT_BLOCK_SELECTOR
-    });
-  }
-
-  (0,external_lodash_namespaceObject.forEach)((_tree$styles = tree.styles) === null || _tree$styles === void 0 ? void 0 : _tree$styles.elements, (value, key) => {
-    if (!!value && !!external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[key]) {
-      nodes.push({
-        styles: value,
-        selector: external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[key]
-      });
-    }
-  }); // Iterate over blocks: they can have styles & elements.
-
-  (0,external_lodash_namespaceObject.forEach)((_tree$styles2 = tree.styles) === null || _tree$styles2 === void 0 ? void 0 : _tree$styles2.blocks, (node, blockName) => {
-    var _blockSelectors$block;
-
-    const blockStyles = pickStyleKeys(node);
-
-    if (!!blockStyles && !!(blockSelectors !== null && blockSelectors !== void 0 && (_blockSelectors$block = blockSelectors[blockName]) !== null && _blockSelectors$block !== void 0 && _blockSelectors$block.selector)) {
-      nodes.push({
-        styles: blockStyles,
-        selector: blockSelectors[blockName].selector,
-        duotoneSelector: blockSelectors[blockName].duotoneSelector
-      });
-    }
-
-    (0,external_lodash_namespaceObject.forEach)(node === null || node === void 0 ? void 0 : node.elements, (value, elementName) => {
-      if (!!value && !!(blockSelectors !== null && blockSelectors !== void 0 && blockSelectors[blockName]) && !!(external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS !== null && external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS !== void 0 && external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[elementName])) {
-        nodes.push({
-          styles: value,
-          selector: blockSelectors[blockName].selector.split(',').map(sel => sel + ' ' + external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[elementName]).join(',')
-        });
-      }
-    });
-  });
-  return nodes;
-};
-const getNodesWithSettings = (tree, blockSelectors) => {
-  var _tree$settings, _tree$settings2;
-
-  const nodes = [];
-
-  if (!(tree !== null && tree !== void 0 && tree.settings)) {
-    return nodes;
-  }
-
-  const pickPresets = treeToPickFrom => {
-    const presets = {};
-    PRESET_METADATA.forEach(_ref6 => {
-      let {
-        path
-      } = _ref6;
-      const value = (0,external_lodash_namespaceObject.get)(treeToPickFrom, path, false);
-
-      if (value !== false) {
-        (0,external_lodash_namespaceObject.set)(presets, path, value);
-      }
-    });
-    return presets;
-  }; // Top-level.
-
-
-  const presets = pickPresets(tree.settings);
-  const custom = (_tree$settings = tree.settings) === null || _tree$settings === void 0 ? void 0 : _tree$settings.custom;
-
-  if (!(0,external_lodash_namespaceObject.isEmpty)(presets) || !!custom) {
-    nodes.push({
-      presets,
-      custom,
-      selector: ROOT_BLOCK_SELECTOR
-    });
-  } // Blocks.
-
-
-  (0,external_lodash_namespaceObject.forEach)((_tree$settings2 = tree.settings) === null || _tree$settings2 === void 0 ? void 0 : _tree$settings2.blocks, (node, blockName) => {
-    const blockPresets = pickPresets(node);
-    const blockCustom = node.custom;
-
-    if (!(0,external_lodash_namespaceObject.isEmpty)(blockPresets) || !!blockCustom) {
-      nodes.push({
-        presets: blockPresets,
-        custom: blockCustom,
-        selector: blockSelectors[blockName].selector
-      });
-    }
-  });
-  return nodes;
-};
-const toCustomProperties = (tree, blockSelectors) => {
-  const settings = getNodesWithSettings(tree, blockSelectors);
-  let ruleset = '';
-  settings.forEach(_ref7 => {
-    let {
-      presets,
-      custom,
-      selector
-    } = _ref7;
-    const declarations = getPresetsDeclarations(presets);
-    const customProps = flattenTree(custom, '--wp--custom--', '--');
-
-    if (customProps.length > 0) {
-      declarations.push(...customProps);
-    }
-
-    if (declarations.length > 0) {
-      ruleset = ruleset + `${selector}{${declarations.join(';')};}`;
-    }
-  });
-  return ruleset;
-};
-const toStyles = (tree, blockSelectors) => {
-  const nodesWithStyles = getNodesWithStyles(tree, blockSelectors);
-  const nodesWithSettings = getNodesWithSettings(tree, blockSelectors);
-  /*
-   * Reset default browser margin on the root body element.
-   * This is set on the root selector **before** generating the ruleset
-   * from the `theme.json`. This is to ensure that if the `theme.json` declares
-   * `margin` in its `spacing` declaration for the `body` element then these
-   * user-generated values take precedence in the CSS cascade.
-   * @link https://github.com/WordPress/gutenberg/issues/36147.
+    const siteData = getSite();
+    const base = getUnstableBase();
+    const templates = getEntityRecords('postType', TEMPLATE_POST_TYPE, {
+      per_page: -1
+    });
+    const _homepageId = siteData?.show_on_front === 'page' && ['number', 'string'].includes(typeof siteData.page_on_front) && !!+siteData.page_on_front // We also need to check if it's not zero(`0`).
+    ? siteData.page_on_front.toString() : null;
+    const _postsPageId = siteData?.show_on_front === 'page' && ['number', 'string'].includes(typeof siteData.page_for_posts) ? siteData.page_for_posts.toString() : null;
+    let _frontPageTemplateId;
+    if (templates) {
+      const frontPageTemplate = templates.find(t => t.slug === 'front-page');
+      _frontPageTemplateId = frontPageTemplate ? frontPageTemplate.id : false;
+    }
+    return {
+      hasLoadedAllDependencies: !!base && !!siteData,
+      homepageId: _homepageId,
+      postsPageId: _postsPageId,
+      url: base?.home,
+      frontPageTemplateId: _frontPageTemplateId
+    };
+  }, []);
+
+  /**
+   * This is a hook that recreates the logic to resolve a template for a given WordPress postID postTypeId
+   * in order to match the frontend as closely as possible in the site editor.
+   *
+   * It is not possible to rely on the server logic because there maybe unsaved changes that impact the template resolution.
    */
-
-  let ruleset = 'body {margin: 0;}';
-  nodesWithStyles.forEach(_ref8 => {
-    let {
-      selector,
-      duotoneSelector,
-      styles
-    } = _ref8;
-    const duotoneStyles = {};
-
-    if (styles !== null && styles !== void 0 && styles.filter) {
-      duotoneStyles.filter = styles.filter;
-      delete styles.filter;
-    } // Process duotone styles (they use color.__experimentalDuotone selector).
-
-
-    if (duotoneSelector) {
-      const duotoneDeclarations = getStylesDeclarations(duotoneStyles);
-
-      if (duotoneDeclarations.length === 0) {
-        return;
-      }
-
-      ruleset = ruleset + `${duotoneSelector}{${duotoneDeclarations.join(';')};}`;
-    } // Process the remaning block styles (they use either normal block class or __experimentalSelector).
-
-
-    const declarations = getStylesDeclarations(styles);
-
-    if (declarations.length === 0) {
-      return;
-    }
-
-    ruleset = ruleset + `${selector}{${declarations.join(';')};}`;
-  });
-  nodesWithSettings.forEach(_ref9 => {
-    let {
-      selector,
-      presets
-    } = _ref9;
-
-    if (ROOT_BLOCK_SELECTOR === selector) {
-      // Do not add extra specificity for top-level classes.
-      selector = '';
-    }
-
-    const classes = getPresetsClasses(selector, presets);
-
-    if (!(0,external_lodash_namespaceObject.isEmpty)(classes)) {
-      ruleset = ruleset + classes;
-    }
-  });
-  return ruleset;
-};
-function toSvgFilters(tree, blockSelectors) {
-  const nodesWithSettings = getNodesWithSettings(tree, blockSelectors);
-  return nodesWithSettings.flatMap(_ref10 => {
-    let {
-      presets
-    } = _ref10;
-    return getPresetsSvgFilters(presets);
-  });
-}
-
-const getBlockSelectors = blockTypes => {
-  const result = {};
-  blockTypes.forEach(blockType => {
-    var _blockType$supports$_, _blockType$supports, _blockType$supports$c, _blockType$supports2, _blockType$supports2$;
-
-    const name = blockType.name;
-    const selector = (_blockType$supports$_ = blockType === null || blockType === void 0 ? void 0 : (_blockType$supports = blockType.supports) === null || _blockType$supports === void 0 ? void 0 : _blockType$supports.__experimentalSelector) !== null && _blockType$supports$_ !== void 0 ? _blockType$supports$_ : '.wp-block-' + name.replace('core/', '').replace('/', '-');
-    const duotoneSelector = (_blockType$supports$c = blockType === null || blockType === void 0 ? void 0 : (_blockType$supports2 = blockType.supports) === null || _blockType$supports2 === void 0 ? void 0 : (_blockType$supports2$ = _blockType$supports2.color) === null || _blockType$supports2$ === void 0 ? void 0 : _blockType$supports2$.__experimentalDuotone) !== null && _blockType$supports$c !== void 0 ? _blockType$supports$c : null;
-    result[name] = {
-      name,
-      selector,
-      duotoneSelector
-    };
-  });
-  return result;
-};
-
-function useGlobalStylesOutput() {
-  const [stylesheets, setStylesheets] = (0,external_wp_element_namespaceObject.useState)([]);
-  const [settings, setSettings] = (0,external_wp_element_namespaceObject.useState)({});
-  const [svgFilters, setSvgFilters] = (0,external_wp_element_namespaceObject.useState)({});
-  const {
-    merged: mergedConfig
-  } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    if (!(mergedConfig !== null && mergedConfig !== void 0 && mergedConfig.styles) || !(mergedConfig !== null && mergedConfig !== void 0 && mergedConfig.settings)) {
-      return;
-    }
-
-    const blockSelectors = getBlockSelectors((0,external_wp_blocks_namespaceObject.getBlockTypes)());
-    const customProperties = toCustomProperties(mergedConfig, blockSelectors);
-    const globalStyles = toStyles(mergedConfig, blockSelectors);
-    const filters = toSvgFilters(mergedConfig, blockSelectors);
-    setStylesheets([{
-      css: customProperties,
-      isGlobalStyles: true
-    }, {
-      css: globalStyles,
-      isGlobalStyles: true
-    }]);
-    setSettings(mergedConfig.settings);
-    setSvgFilters(filters);
-  }, [mergedConfig]);
-  return [stylesheets, settings, svgFilters];
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-const firstFrame = {
-  start: {
-    opacity: 1,
-    display: 'block'
-  },
-  hover: {
-    opacity: 0,
-    display: 'none'
-  }
-};
-const secondFrame = {
-  hover: {
-    opacity: 1,
-    display: 'block'
-  },
-  start: {
-    opacity: 0,
-    display: 'none'
-  }
-};
-const normalizedWidth = 248;
-const normalizedHeight = 152;
-const normalizedColorSwatchSize = 32;
-
-const StylesPreview = _ref => {
-  let {
-    label,
-    isFocused
-  } = _ref;
-  const [fontWeight] = useStyle('typography.fontWeight');
-  const [fontFamily = 'serif'] = useStyle('typography.fontFamily');
-  const [headingFontFamily = fontFamily] = useStyle('elements.h1.typography.fontFamily');
-  const [headingFontWeight = fontWeight] = useStyle('elements.h1.typography.fontWeight');
-  const [textColor = 'black'] = useStyle('color.text');
-  const [headingColor = textColor] = useStyle('elements.h1.color.text');
-  const [linkColor = 'blue'] = useStyle('elements.link.color.text');
-  const [backgroundColor = 'white'] = useStyle('color.background');
-  const [gradientValue] = useStyle('color.gradient');
-  const [styles] = useGlobalStylesOutput();
-  const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
-  const [coreColors] = useSetting('color.palette.core');
-  const [themeColors] = useSetting('color.palette.theme');
-  const [customColors] = useSetting('color.palette.custom');
-  const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false);
-  const [containerResizeListener, {
-    width
-  }] = (0,external_wp_compose_namespaceObject.useResizeObserver)();
-  const ratio = width ? width / normalizedWidth : 1;
-  const paletteColors = (themeColors !== null && themeColors !== void 0 ? themeColors : []).concat(customColors !== null && customColors !== void 0 ? customColors : []).concat(coreColors !== null && coreColors !== void 0 ? coreColors : []);
-  const highlightedColors = paletteColors.filter( // we exclude these two colors because they are already visible in the preview.
-  _ref2 => {
-    let {
-      color
-    } = _ref2;
-    return color !== backgroundColor && color !== headingColor;
-  }).slice(0, 2); // Reset leaked styles from WP common.css.
-
-  const editorStyles = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    if (styles) {
-      return [...styles, {
-        css: 'body{min-width: 0;}',
-        isGlobalStyles: true
-      }];
-    }
-
-    return styles;
-  }, [styles]);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableIframe, {
-    className: "edit-site-global-styles-preview__iframe",
-    head: (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, {
-      styles: editorStyles
-    }),
-    style: {
-      height: normalizedHeight * ratio,
-      visibility: !width ? 'hidden' : 'visible'
-    },
-    onMouseEnter: () => setIsHovered(true),
-    onMouseLeave: () => setIsHovered(false),
-    tabIndex: -1
-  }, containerResizeListener, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, {
-    style: {
-      height: normalizedHeight * ratio,
-      width: '100%',
-      background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor,
-      cursor: 'pointer'
-    },
-    initial: "start",
-    animate: (isHovered || isFocused) && !disableMotion ? 'hover' : 'start'
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, {
-    variants: firstFrame,
-    style: {
-      height: '100%',
-      overflow: 'hidden'
-    }
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    spacing: 10 * ratio,
-    justify: "center",
-    style: {
-      height: '100%',
-      overflow: 'hidden'
-    }
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    style: {
-      fontFamily: headingFontFamily,
-      fontSize: 65 * ratio,
-      color: headingColor,
-      fontWeight: headingFontWeight
-    }
-  }, "Aa"), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
-    spacing: 4 * ratio
-  }, highlightedColors.map(_ref3 => {
-    let {
-      slug,
-      color
-    } = _ref3;
-    return (0,external_wp_element_namespaceObject.createElement)("div", {
-      key: slug,
-      style: {
-        height: normalizedColorSwatchSize * ratio,
-        width: normalizedColorSwatchSize * ratio,
-        background: color,
-        borderRadius: normalizedColorSwatchSize * ratio / 2
-      }
-    });
-  })))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, {
-    variants: secondFrame,
-    style: {
-      height: '100%',
-      overflow: 'hidden'
-    }
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
-    spacing: 3 * ratio,
-    justify: "center",
-    style: {
-      height: '100%',
-      overflow: 'hidden',
-      padding: 10 * ratio,
-      boxSizing: 'border-box'
-    }
-  }, label && (0,external_wp_element_namespaceObject.createElement)("div", {
-    style: {
-      fontSize: 35 * ratio,
-      fontFamily: headingFontFamily,
-      color: headingColor,
-      fontWeight: headingFontWeight,
-      lineHeight: '1em'
-    }
-  }, label), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    spacing: 2 * ratio,
-    justify: "flex-start"
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    style: {
-      fontFamily,
-      fontSize: 24 * ratio,
-      color: textColor
-    }
-  }, "Aa"), (0,external_wp_element_namespaceObject.createElement)("div", {
-    style: {
-      fontFamily,
-      fontSize: 24 * ratio,
-      color: linkColor
-    }
-  }, "Aa")), paletteColors && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    spacing: 0
-  }, paletteColors.slice(0, 4).map((_ref4, index) => {
-    let {
-      color
-    } = _ref4;
-    return (0,external_wp_element_namespaceObject.createElement)("div", {
-      key: index,
-      style: {
-        height: 10 * ratio,
-        width: 30 * ratio,
-        background: color,
-        flexGrow: 1
-      }
-    });
-  }))))));
-};
-
-/* harmony default export */ var preview = (StylesPreview);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-root.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-function ScreenRoot() {
-  const {
-    variations
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    return {
-      variations: select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations()
-    };
-  }, []);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, {
-    size: "small"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
-    spacing: 2
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardMedia, null, (0,external_wp_element_namespaceObject.createElement)(preview, null))), !!(variations !== null && variations !== void 0 && variations.length) && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    path: "/variations"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    justify: "space-between"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Browse styles')), (0,external_wp_element_namespaceObject.createElement)(IconWithCurrentColor, {
-    icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
-  }))))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(context_menu, null)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardDivider, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItem, null, (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of specific blocks for the whole site.')), (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    path: "/blocks"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    justify: "space-between"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Blocks')), (0,external_wp_element_namespaceObject.createElement)(IconWithCurrentColor, {
-    icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
-  }))))));
-}
-
-/* harmony default export */ var screen_root = (ScreenRoot);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/header.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function ScreenHeader(_ref) {
-  let {
-    title,
-    description
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
-    spacing: 2
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    spacing: 2
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalView, null, (0,external_wp_element_namespaceObject.createElement)(NavigationBackButton, {
-    icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left,
-    size: "small",
-    "aria-label": (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous view')
-  })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalSpacer, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
-    level: 5
-  }, title))), description && (0,external_wp_element_namespaceObject.createElement)("p", {
-    className: "edit-site-global-styles-header__description"
-  }, description));
-}
-
-/* harmony default export */ var header = (ScreenHeader);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-block-list.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-function useSortedBlockTypes() {
-  const blockItems = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blocks_namespaceObject.store).getBlockTypes(), []); // Ensure core blocks are prioritized in the returned results,
-  // because third party blocks can be registered earlier than
-  // the core blocks (usually by using the `init` action),
-  // thus affecting the display order.
-  // We don't sort reusable blocks as they are handled differently.
-
-  const groupByType = (blocks, block) => {
-    const {
-      core,
-      noncore
-    } = blocks;
-    const type = block.name.startsWith('core/') ? core : noncore;
-    type.push(block);
-    return blocks;
-  };
-
-  const {
-    core: coreItems,
-    noncore: nonCoreItems
-  } = blockItems.reduce(groupByType, {
-    core: [],
-    noncore: []
-  });
-  return [...coreItems, ...nonCoreItems];
-}
-
-function BlockMenuItem(_ref) {
-  let {
-    block
-  } = _ref;
-  const hasTypographyPanel = useHasTypographyPanel(block.name);
-  const hasColorPanel = useHasColorPanel(block.name);
-  const hasBorderPanel = useHasBorderPanel(block.name);
-  const hasDimensionsPanel = useHasDimensionsPanel(block.name);
-  const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
-  const hasBlockMenuItem = hasTypographyPanel || hasColorPanel || hasLayoutPanel;
-
-  if (!hasBlockMenuItem) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    path: '/blocks/' + block.name
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    justify: "flex-start"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockIcon, {
-    icon: block.icon
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, block.title)));
-}
-
-function ScreenBlockList() {
-  const sortedBlockTypes = useSortedBlockTypes();
-  const [filterValue, setFilterValue] = (0,external_wp_element_namespaceObject.useState)('');
-  const debouncedSpeak = (0,external_wp_compose_namespaceObject.useDebounce)(external_wp_a11y_namespaceObject.speak, 500);
-  const isMatchingSearchTerm = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blocks_namespaceObject.store).isMatchingSearchTerm, []);
-  const filteredBlockTypes = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    if (!filterValue) {
-      return sortedBlockTypes;
-    }
-
-    return sortedBlockTypes.filter(blockType => isMatchingSearchTerm(blockType, filterValue));
-  }, [filterValue, sortedBlockTypes, isMatchingSearchTerm]);
-  const blockTypesListRef = (0,external_wp_element_namespaceObject.useRef)(); // Announce search results on change
-
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    if (!filterValue) {
-      return;
-    } // We extract the results from the wrapper div's `ref` because
-    // filtered items can contain items that will eventually not
-    // render and there is no reliable way to detect when a child
-    // will return `null`.
-    // TODO: We should find a better way of handling this as it's
-    // fragile and depends on the number of rendered elements of `BlockMenuItem`,
-    // which is now one.
-    // @see https://github.com/WordPress/gutenberg/pull/39117#discussion_r816022116
-
-
-    const count = blockTypesListRef.current.childElementCount;
-    const resultsFoundMessage = (0,external_wp_i18n_namespaceObject.sprintf)(
-    /* translators: %d: number of results. */
-    (0,external_wp_i18n_namespaceObject._n)('%d result found.', '%d results found.', count), count);
-    debouncedSpeak(resultsFoundMessage, count);
-  }, [filterValue, debouncedSpeak]);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Blocks'),
-    description: (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of specific blocks and for the whole site.')
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SearchControl, {
-    className: "edit-site-block-types-search",
-    onChange: setFilterValue,
-    value: filterValue,
-    label: (0,external_wp_i18n_namespaceObject.__)('Search for blocks'),
-    placeholder: (0,external_wp_i18n_namespaceObject.__)('Search')
-  }), (0,external_wp_element_namespaceObject.createElement)("div", {
-    ref: blockTypesListRef,
-    className: "edit-site-block-types-item-list"
-  }, filteredBlockTypes.map(block => (0,external_wp_element_namespaceObject.createElement)(BlockMenuItem, {
-    block: block,
-    key: 'menu-itemblock-' + block.name
-  }))));
-}
-
-/* harmony default export */ var screen_block_list = (ScreenBlockList);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-block.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function ScreenBlock(_ref) {
-  let {
-    name
-  } = _ref;
-  const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(name);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    title: blockType.title
-  }), (0,external_wp_element_namespaceObject.createElement)(context_menu, {
-    parentMenu: '/blocks/' + name,
-    name: name
-  }));
-}
-
-/* harmony default export */ var screen_block = (ScreenBlock);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/subtitle.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-function Subtitle(_ref) {
-  let {
-    children
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
-    className: "edit-site-global-styles-subtitle",
-    level: 2
-  }, children);
-}
-
-/* harmony default export */ var subtitle = (Subtitle);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-function Item(_ref) {
-  let {
-    name,
-    parentMenu,
-    element,
-    label
-  } = _ref;
-  const hasSupport = !name;
-  const prefix = element === 'text' || !element ? '' : `elements.${element}.`;
-  const extraStyles = element === 'link' ? {
-    textDecoration: 'underline'
-  } : {};
-  const [fontFamily] = useStyle(prefix + 'typography.fontFamily', name);
-  const [fontStyle] = useStyle(prefix + 'typography.fontStyle', name);
-  const [fontWeight] = useStyle(prefix + 'typography.fontWeight', name);
-  const [letterSpacing] = useStyle(prefix + 'typography.letterSpacing', name);
-  const [backgroundColor] = useStyle(prefix + 'color.background', name);
-  const [gradientValue] = useStyle(prefix + 'color.gradient', name);
-  const [color] = useStyle(prefix + 'color.text', name);
-
-  if (!hasSupport) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    path: parentMenu + '/typography/' + element
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    justify: "flex-start"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, {
-    className: "edit-site-global-styles-screen-typography__indicator",
-    style: {
-      fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif',
-      background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor,
-      color,
-      fontStyle,
-      fontWeight,
-      letterSpacing,
-      ...extraStyles
-    }
-  }, (0,external_wp_i18n_namespaceObject.__)('Aa')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, label)));
-}
-
-function ScreenTypography(_ref2) {
-  let {
-    name
-  } = _ref2;
-  const parentMenu = name === undefined ? '' : '/blocks/' + name;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Typography'),
-    description: (0,external_wp_i18n_namespaceObject.__)('Manage the typography settings for different elements.')
-  }), !name && (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-global-styles-screen-typography"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
-    spacing: 3
-  }, (0,external_wp_element_namespaceObject.createElement)(subtitle, null, (0,external_wp_i18n_namespaceObject.__)('Elements')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, {
-    isBordered: true,
-    isSeparated: true
-  }, (0,external_wp_element_namespaceObject.createElement)(Item, {
-    name: name,
-    parentMenu: parentMenu,
-    element: "text",
-    label: (0,external_wp_i18n_namespaceObject.__)('Text')
-  }), (0,external_wp_element_namespaceObject.createElement)(Item, {
-    name: name,
-    parentMenu: parentMenu,
-    element: "link",
-    label: (0,external_wp_i18n_namespaceObject.__)('Links')
-  })))), !!name && (0,external_wp_element_namespaceObject.createElement)(TypographyPanel, {
-    name: name,
-    element: "text"
-  }));
-}
-
-/* harmony default export */ var screen_typography = (ScreenTypography);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography-element.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-const screen_typography_element_elements = {
-  text: {
-    description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts used on the site.'),
-    title: (0,external_wp_i18n_namespaceObject.__)('Text')
-  },
-  link: {
-    description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on the links.'),
-    title: (0,external_wp_i18n_namespaceObject.__)('Links')
-  }
-};
-
-function ScreenTypographyElement(_ref) {
-  let {
-    name,
-    element
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    title: screen_typography_element_elements[element].title,
-    description: screen_typography_element_elements[element].description
-  }), (0,external_wp_element_namespaceObject.createElement)(TypographyPanel, {
-    name: name,
-    element: element
-  }));
-}
-
-/* harmony default export */ var screen_typography_element = (ScreenTypographyElement);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-indicator-wrapper.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-function ColorIndicatorWrapper(_ref) {
-  let {
-    className,
-    ...props
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, extends_extends({
-    className: classnames_default()('edit-site-global-styles__color-indicator-wrapper', className)
-  }, props));
-}
-
-/* harmony default export */ var color_indicator_wrapper = (ColorIndicatorWrapper);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/palette.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-const EMPTY_COLORS = [];
-
-function Palette(_ref) {
-  let {
-    name
-  } = _ref;
-  const [customColors] = useSetting('color.palette.custom');
-  const [themeColors] = useSetting('color.palette.theme');
-  const [defaultColors] = useSetting('color.palette.default');
-  const [defaultPaletteEnabled] = useSetting('color.defaultPalette', name);
-  const colors = (0,external_wp_element_namespaceObject.useMemo)(() => [...(customColors || EMPTY_COLORS), ...(themeColors || EMPTY_COLORS), ...(defaultColors && defaultPaletteEnabled ? defaultColors : EMPTY_COLORS)], [customColors, themeColors, defaultColors, defaultPaletteEnabled]);
-  const screenPath = !name ? '/colors/palette' : '/blocks/' + name + '/colors/palette';
-  const paletteButtonText = colors.length > 0 ? (0,external_wp_i18n_namespaceObject.sprintf)( // Translators: %d: Number of palette colors.
-  (0,external_wp_i18n_namespaceObject._n)('%d color', '%d colors', colors.length), colors.length) : (0,external_wp_i18n_namespaceObject.__)('Add custom colors');
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
-    spacing: 3
-  }, (0,external_wp_element_namespaceObject.createElement)(subtitle, null, (0,external_wp_i18n_namespaceObject.__)('Palette')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, {
-    isBordered: true,
-    isSeparated: true
-  }, (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    path: screenPath
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    direction: colors.length === 0 ? 'row-reverse' : 'row'
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalZStack, {
-    isLayered: false,
-    offset: -8
-  }, colors.slice(0, 5).map(_ref2 => {
-    let {
-      color
-    } = _ref2;
-    return (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, {
-      key: color
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, {
-      colorValue: color
-    }));
-  })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, paletteButtonText)))));
-}
-
-/* harmony default export */ var palette = (Palette);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-colors.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-function BackgroundColorItem(_ref) {
-  let {
-    name,
-    parentMenu
-  } = _ref;
-  const supports = getSupportedGlobalStylesPanels(name);
-  const hasSupport = supports.includes('backgroundColor') || supports.includes('background');
-  const [backgroundColor] = useStyle('color.background', name);
-  const [gradientValue] = useStyle('color.gradient', name);
-
-  if (!hasSupport) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    path: parentMenu + '/colors/background'
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    justify: "flex-start"
-  }, (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, {
-    expanded: false
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, {
-    colorValue: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor
-  })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Background'))));
-}
-
-function TextColorItem(_ref2) {
-  let {
-    name,
-    parentMenu
-  } = _ref2;
-  const supports = getSupportedGlobalStylesPanels(name);
-  const hasSupport = supports.includes('color');
-  const [color] = useStyle('color.text', name);
-
-  if (!hasSupport) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    path: parentMenu + '/colors/text'
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    justify: "flex-start"
-  }, (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, {
-    expanded: false
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, {
-    colorValue: color
-  })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Text'))));
-}
-
-function LinkColorItem(_ref3) {
-  let {
-    name,
-    parentMenu
-  } = _ref3;
-  const supports = getSupportedGlobalStylesPanels(name);
-  const hasSupport = supports.includes('linkColor');
-  const [color] = useStyle('elements.link.color.text', name);
-
-  if (!hasSupport) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
-    path: parentMenu + '/colors/link'
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    justify: "flex-start"
-  }, (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, {
-    expanded: false
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, {
-    colorValue: color
-  })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Links'))));
-}
-
-function ScreenColors(_ref4) {
-  let {
-    name
-  } = _ref4;
-  const parentMenu = name === undefined ? '' : '/blocks/' + name;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Colors'),
-    description: (0,external_wp_i18n_namespaceObject.__)('Manage palettes and the default color of different global elements on the site.')
-  }), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-global-styles-screen-colors"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
-    spacing: 10
-  }, (0,external_wp_element_namespaceObject.createElement)(palette, {
-    name: name
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
-    spacing: 3
-  }, (0,external_wp_element_namespaceObject.createElement)(subtitle, null, (0,external_wp_i18n_namespaceObject.__)('Elements')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, {
-    isBordered: true,
-    isSeparated: true
-  }, (0,external_wp_element_namespaceObject.createElement)(BackgroundColorItem, {
-    name: name,
-    parentMenu: parentMenu
-  }), (0,external_wp_element_namespaceObject.createElement)(TextColorItem, {
-    name: name,
-    parentMenu: parentMenu
-  }), (0,external_wp_element_namespaceObject.createElement)(LinkColorItem, {
-    name: name,
-    parentMenu: parentMenu
-  }))))));
-}
-
-/* harmony default export */ var screen_colors = (ScreenColors);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-palette-panel.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-function ColorPalettePanel(_ref) {
-  let {
-    name
-  } = _ref;
-  const [themeColors, setThemeColors] = useSetting('color.palette.theme', name);
-  const [baseThemeColors] = useSetting('color.palette.theme', name, 'base');
-  const [defaultColors, setDefaultColors] = useSetting('color.palette.default', name);
-  const [baseDefaultColors] = useSetting('color.palette.default', name, 'base');
-  const [customColors, setCustomColors] = useSetting('color.palette.custom', name);
-  const [defaultPaletteEnabled] = useSetting('color.defaultPalette', name);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
-    className: "edit-site-global-styles-color-palette-panel",
-    spacing: 10
-  }, !!themeColors && !!themeColors.length && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
-    canReset: themeColors !== baseThemeColors,
-    canOnlyChangeValues: true,
-    colors: themeColors,
-    onChange: setThemeColors,
-    paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme')
-  }), !!defaultColors && !!defaultColors.length && !!defaultPaletteEnabled && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
-    canReset: defaultColors !== baseDefaultColors,
-    canOnlyChangeValues: true,
-    colors: defaultColors,
-    onChange: setDefaultColors,
-    paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default')
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
-    colors: customColors,
-    onChange: setCustomColors,
-    paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'),
-    emptyMessage: (0,external_wp_i18n_namespaceObject.__)('Custom colors are empty! Add some colors to create your own color palette.'),
-    slugPrefix: "custom-"
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/gradients-palette-panel.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function GradientPalettePanel(_ref) {
-  let {
-    name
-  } = _ref;
-  const [themeGradients, setThemeGradients] = useSetting('color.gradients.theme', name);
-  const [baseThemeGradients] = useSetting('color.gradients.theme', name, 'base');
-  const [defaultGradients, setDefaultGradients] = useSetting('color.gradients.default', name);
-  const [baseDefaultGradients] = useSetting('color.gradients.default', name, 'base');
-  const [customGradients, setCustomGradients] = useSetting('color.gradients.custom', name);
-  const [defaultPaletteEnabled] = useSetting('color.defaultGradients', name);
-  const [duotonePalette] = useSetting('color.duotone') || [];
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
-    className: "edit-site-global-styles-gradient-palette-panel",
-    spacing: 10
-  }, !!themeGradients && !!themeGradients.length && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
-    canReset: themeGradients !== baseThemeGradients,
-    canOnlyChangeValues: true,
-    gradients: themeGradients,
-    onChange: setThemeGradients,
-    paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme')
-  }), !!defaultGradients && !!defaultGradients.length && !!defaultPaletteEnabled && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
-    canReset: defaultGradients !== baseDefaultGradients,
-    canOnlyChangeValues: true,
-    gradients: defaultGradients,
-    onChange: setDefaultGradients,
-    paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default')
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
-    gradients: customGradients,
-    onChange: setCustomGradients,
-    paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'),
-    emptyMessage: (0,external_wp_i18n_namespaceObject.__)('Custom gradients are empty! Add some gradients to create your own palette.'),
-    slugPrefix: "custom-"
-  }), (0,external_wp_element_namespaceObject.createElement)("div", null, (0,external_wp_element_namespaceObject.createElement)(subtitle, null, (0,external_wp_i18n_namespaceObject.__)('Duotone')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalSpacer, {
-    margin: 3
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DuotonePicker, {
-    duotonePalette: duotonePalette,
-    disableCustomDuotone: true,
-    disableCustomColors: true,
-    clearable: false,
-    onChange: external_lodash_namespaceObject.noop
-  })));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-color-palette.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-function ScreenColorPalette(_ref) {
-  let {
-    name
-  } = _ref;
-  const [currentTab, setCurrentTab] = (0,external_wp_element_namespaceObject.useState)('solid');
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Palette'),
-    description: (0,external_wp_i18n_namespaceObject.__)('Palettes are used to provide default color options for blocks and various design tools. Here you can edit the colors with their labels.')
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, {
-    className: "edit-site-screen-color-palette-toggle",
-    value: currentTab,
-    onChange: setCurrentTab,
-    label: (0,external_wp_i18n_namespaceObject.__)('Select palette type'),
-    hideLabelFromVision: true,
-    isBlock: true
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
-    value: "solid",
-    label: (0,external_wp_i18n_namespaceObject.__)('Solid')
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
-    value: "gradient",
-    label: (0,external_wp_i18n_namespaceObject.__)('Gradient')
-  })), currentTab === 'solid' && (0,external_wp_element_namespaceObject.createElement)(ColorPalettePanel, {
-    name: name
-  }), currentTab === 'gradient' && (0,external_wp_element_namespaceObject.createElement)(GradientPalettePanel, {
-    name: name
-  }));
-}
-
-/* harmony default export */ var screen_color_palette = (ScreenColorPalette);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-background-color.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function ScreenBackgroundColor(_ref) {
-  let {
-    name
-  } = _ref;
-  const supports = getSupportedGlobalStylesPanels(name);
-  const [solids] = useSetting('color.palette', name);
-  const [gradients] = useSetting('color.gradients', name);
-  const [areCustomSolidsEnabled] = useSetting('color.custom', name);
-  const [areCustomGradientsEnabled] = useSetting('color.customGradient', name);
-  const colorsPerOrigin = useColorsPerOrigin(name);
-  const gradientsPerOrigin = useGradientsPerOrigin(name);
-  const [isBackgroundEnabled] = useSetting('color.background', name);
-  const hasBackgroundColor = supports.includes('backgroundColor') && isBackgroundEnabled && (solids.length > 0 || areCustomSolidsEnabled);
-  const hasGradientColor = supports.includes('background') && (gradients.length > 0 || areCustomGradientsEnabled);
-  const [backgroundColor, setBackgroundColor] = useStyle('color.background', name);
-  const [userBackgroundColor] = useStyle('color.background', name, 'user');
-  const [gradient, setGradient] = useStyle('color.gradient', name);
-  const [userGradient] = useStyle('color.gradient', name, 'user');
-
-  if (!hasBackgroundColor && !hasGradientColor) {
-    return null;
-  }
-
-  let backgroundSettings = {};
-
-  if (hasBackgroundColor) {
-    backgroundSettings = {
-      colorValue: backgroundColor,
-      onColorChange: setBackgroundColor
-    };
-
-    if (backgroundColor) {
-      backgroundSettings.clearable = backgroundColor === userBackgroundColor;
-    }
-  }
-
-  let gradientSettings = {};
-
-  if (hasGradientColor) {
-    gradientSettings = {
-      gradientValue: gradient,
-      onGradientChange: setGradient
-    };
-
-    if (gradient) {
-      gradientSettings.clearable = gradient === userGradient;
-    }
-  }
-
-  const controlProps = { ...backgroundSettings,
-    ...gradientSettings
-  };
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Background'),
-    description: (0,external_wp_i18n_namespaceObject.__)('Set a background color or gradient for the whole site.')
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientControl, extends_extends({
-    className: "edit-site-screen-background-color__control",
-    colors: colorsPerOrigin,
-    gradients: gradientsPerOrigin,
-    disableCustomColors: !areCustomSolidsEnabled,
-    disableCustomGradients: !areCustomGradientsEnabled,
-    __experimentalHasMultipleOrigins: true,
-    showTitle: false,
-    enableAlpha: true,
-    __experimentalIsRenderedInSidebar: true
-  }, controlProps)));
-}
-
-/* harmony default export */ var screen_background_color = (ScreenBackgroundColor);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-text-color.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function ScreenTextColor(_ref) {
-  let {
-    name
-  } = _ref;
-  const supports = getSupportedGlobalStylesPanels(name);
-  const [solids] = useSetting('color.palette', name);
-  const [areCustomSolidsEnabled] = useSetting('color.custom', name);
-  const [isTextEnabled] = useSetting('color.text', name);
-  const colorsPerOrigin = useColorsPerOrigin(name);
-  const hasTextColor = supports.includes('color') && isTextEnabled && (solids.length > 0 || areCustomSolidsEnabled);
-  const [color, setColor] = useStyle('color.text', name);
-  const [userColor] = useStyle('color.text', name, 'user');
-
-  if (!hasTextColor) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Text'),
-    description: (0,external_wp_i18n_namespaceObject.__)('Set the default color used for text across the site.')
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientControl, {
-    className: "edit-site-screen-text-color__control",
-    colors: colorsPerOrigin,
-    disableCustomColors: !areCustomSolidsEnabled,
-    __experimentalHasMultipleOrigins: true,
-    showTitle: false,
-    enableAlpha: true,
-    __experimentalIsRenderedInSidebar: true,
-    colorValue: color,
-    onColorChange: setColor,
-    clearable: color === userColor
-  }));
-}
-
-/* harmony default export */ var screen_text_color = (ScreenTextColor);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-link-color.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function ScreenLinkColor(_ref) {
-  let {
-    name
-  } = _ref;
-  const supports = getSupportedGlobalStylesPanels(name);
-  const [solids] = useSetting('color.palette', name);
-  const [areCustomSolidsEnabled] = useSetting('color.custom', name);
-  const colorsPerOrigin = useColorsPerOrigin(name);
-  const [isLinkEnabled] = useSetting('color.link', name);
-  const hasLinkColor = supports.includes('linkColor') && isLinkEnabled && (solids.length > 0 || areCustomSolidsEnabled);
-  const [linkColor, setLinkColor] = useStyle('elements.link.color.text', name);
-  const [userLinkColor] = useStyle('elements.link.color.text', name, 'user');
-
-  if (!hasLinkColor) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Links'),
-    description: (0,external_wp_i18n_namespaceObject.__)('Set the default color used for links across the site.')
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientControl, {
-    className: "edit-site-screen-link-color__control",
-    colors: colorsPerOrigin,
-    disableCustomColors: !areCustomSolidsEnabled,
-    __experimentalHasMultipleOrigins: true,
-    showTitle: false,
-    enableAlpha: true,
-    __experimentalIsRenderedInSidebar: true,
-    colorValue: linkColor,
-    onColorChange: setLinkColor,
-    clearable: linkColor === userLinkColor
-  }));
-}
-
-/* harmony default export */ var screen_link_color = (ScreenLinkColor);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-layout.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-function ScreenLayout(_ref) {
-  let {
-    name
-  } = _ref;
-  const hasBorderPanel = useHasBorderPanel(name);
-  const hasDimensionsPanel = useHasDimensionsPanel(name);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Layout')
-  }), hasDimensionsPanel && (0,external_wp_element_namespaceObject.createElement)(DimensionsPanel, {
-    name: name
-  }), hasBorderPanel && (0,external_wp_element_namespaceObject.createElement)(BorderPanel, {
-    name: name
-  }));
-}
-
-/* harmony default export */ var screen_layout = (ScreenLayout);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/global-styles-provider.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function mergeTreesCustomizer(_, srcValue) {
-  // We only pass as arrays the presets,
-  // in which case we want the new array of values
-  // to override the old array (no merging).
-  if (Array.isArray(srcValue)) {
-    return srcValue;
-  }
-}
-
-function mergeBaseAndUserConfigs(base, user) {
-  return (0,external_lodash_namespaceObject.mergeWith)({}, base, user, mergeTreesCustomizer);
-}
-
-const cleanEmptyObject = object => {
-  if (!(0,external_lodash_namespaceObject.isObject)(object) || Array.isArray(object)) {
-    return object;
-  }
-
-  const cleanedNestedObjects = (0,external_lodash_namespaceObject.pickBy)((0,external_lodash_namespaceObject.mapValues)(object, cleanEmptyObject), external_lodash_namespaceObject.identity);
-  return (0,external_lodash_namespaceObject.isEmpty)(cleanedNestedObjects) ? undefined : cleanedNestedObjects;
-};
-
-function useGlobalStylesUserConfig() {
-  const {
-    globalStylesId,
-    settings,
-    styles
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const _globalStylesId = select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentGlobalStylesId();
-
-    const record = _globalStylesId ? select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('root', 'globalStyles', _globalStylesId) : undefined;
-    return {
-      globalStylesId: _globalStylesId,
-      settings: record === null || record === void 0 ? void 0 : record.settings,
-      styles: record === null || record === void 0 ? void 0 : record.styles
-    };
-  }, []);
-  const {
-    getEditedEntityRecord
-  } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store);
-  const {
-    editEntityRecord
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
-  const config = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    return {
-      settings: settings !== null && settings !== void 0 ? settings : {},
-      styles: styles !== null && styles !== void 0 ? styles : {}
-    };
-  }, [settings, styles]);
-  const setConfig = (0,external_wp_element_namespaceObject.useCallback)(callback => {
-    var _record$styles, _record$settings;
-
-    const record = getEditedEntityRecord('root', 'globalStyles', globalStylesId);
-    const currentConfig = {
-      styles: (_record$styles = record === null || record === void 0 ? void 0 : record.styles) !== null && _record$styles !== void 0 ? _record$styles : {},
-      settings: (_record$settings = record === null || record === void 0 ? void 0 : record.settings) !== null && _record$settings !== void 0 ? _record$settings : {}
-    };
-    const updatedConfig = callback(currentConfig);
-    editEntityRecord('root', 'globalStyles', globalStylesId, {
-      styles: cleanEmptyObject(updatedConfig.styles) || {},
-      settings: cleanEmptyObject(updatedConfig.settings) || {}
-    });
-  }, [globalStylesId]);
-  return [!!settings || !!styles, config, setConfig];
-}
-
-function useGlobalStylesBaseConfig() {
-  const baseConfig = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    return select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeBaseGlobalStyles();
-  }, []);
-  return [!!baseConfig, baseConfig];
-}
-
-function useGlobalStylesContext() {
-  const [isUserConfigReady, userConfig, setUserConfig] = useGlobalStylesUserConfig();
-  const [isBaseConfigReady, baseConfig] = useGlobalStylesBaseConfig();
-  const mergedConfig = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    if (!baseConfig || !userConfig) {
+  const resolvedTemplateId = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    // If we're rendering a post type that doesn't have a template
+    // no need to resolve its template.
+    if (postTypesWithoutParentTemplate.includes(postType) && postId) {
+      return undefined;
+    }
+    const {
+      getEditedEntityRecord,
+      getEntityRecords,
+      getDefaultTemplateId,
+      __experimentalGetTemplateForLink
+    } = select(external_wp_coreData_namespaceObject.store);
+    function resolveTemplateForPostTypeAndId(postTypeToResolve, postIdToResolve) {
+      // For the front page, we always use the front page template if existing.
+      if (postTypeToResolve === 'page' && homepageId === postIdToResolve) {
+        // We're still checking whether the front page template exists.
+        // Don't resolve the template yet.
+        if (frontPageTemplateId === undefined) {
+          return undefined;
+        }
+        if (!!frontPageTemplateId) {
+          return frontPageTemplateId;
+        }
+      }
+      const editedEntity = getEditedEntityRecord('postType', postTypeToResolve, postIdToResolve);
+      if (!editedEntity) {
+        return undefined;
+      }
+      // Check if the current page is the posts page.
+      if (postTypeToResolve === 'page' && postsPageId === postIdToResolve) {
+        return __experimentalGetTemplateForLink(editedEntity.link)?.id;
+      }
+      // First see if the post/page has an assigned template and fetch it.
+      const currentTemplateSlug = editedEntity.template;
+      if (currentTemplateSlug) {
+        const currentTemplate = getEntityRecords('postType', TEMPLATE_POST_TYPE, {
+          per_page: -1
+        })?.find(({
+          slug
+        }) => slug === currentTemplateSlug);
+        if (currentTemplate) {
+          return currentTemplate.id;
+        }
+      }
+      // If no template is assigned, use the default template.
+      let slugToCheck;
+      // In `draft` status we might not have a slug available, so we use the `single`
+      // post type templates slug(ex page, single-post, single-product etc..).
+      // Pages do not need the `single` prefix in the slug to be prioritized
+      // through template hierarchy.
+      if (editedEntity.slug) {
+        slugToCheck = postTypeToResolve === 'page' ? `${postTypeToResolve}-${editedEntity.slug}` : `single-${postTypeToResolve}-${editedEntity.slug}`;
+      } else {
+        slugToCheck = postTypeToResolve === 'page' ? 'page' : `single-${postTypeToResolve}`;
+      }
+      return getDefaultTemplateId({
+        slug: slugToCheck
+      });
+    }
+    if (!hasLoadedAllDependencies) {
+      return undefined;
+    }
+
+    // If we're rendering a specific page, we need to resolve its template.
+    // The site editor only supports pages for now, not other CPTs.
+    if (postType && postId && authorizedPostTypes.includes(postType)) {
+      return resolveTemplateForPostTypeAndId(postType, postId);
+    }
+
+    // If we're rendering the home page, and we have a static home page, resolve its template.
+    if (homepageId) {
+      return resolveTemplateForPostTypeAndId('page', homepageId);
+    }
+
+    // If we're not rendering a specific page, use the front page template.
+    if (url) {
+      const template = __experimentalGetTemplateForLink(url);
+      return template?.id;
+    }
+  }, [homepageId, postsPageId, hasLoadedAllDependencies, url, postId, postType, frontPageTemplateId]);
+  const context = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (postTypesWithoutParentTemplate.includes(postType) && postId) {
       return {};
     }
-
-    return mergeBaseAndUserConfigs(baseConfig, userConfig);
-  }, [userConfig, baseConfig]);
-  const context = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    return {
-      isReady: isUserConfigReady && isBaseConfigReady,
-      user: userConfig,
-      base: baseConfig,
-      merged: mergedConfig,
-      setUserConfig
-    };
-  }, [mergedConfig, userConfig, baseConfig, setUserConfig, isUserConfigReady, isBaseConfigReady]);
-  return context;
-}
-
-function GlobalStylesProvider(_ref) {
-  let {
-    children
-  } = _ref;
-  const context = useGlobalStylesContext();
-
-  if (!context.isReady) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(GlobalStylesContext.Provider, {
-    value: context
-  }, children);
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-style-variations.js
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-function compareVariations(a, b) {
-  return (0,external_lodash_namespaceObject.isEqual)(a.styles, b.styles) && (0,external_lodash_namespaceObject.isEqual)(a.settings, b.settings);
-}
-
-function Variation(_ref) {
-  let {
-    variation
-  } = _ref;
-  const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false);
-  const {
-    base,
-    user,
-    setUserConfig
-  } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
-  const context = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    var _variation$settings, _variation$styles;
-
-    return {
-      user: {
-        settings: (_variation$settings = variation.settings) !== null && _variation$settings !== void 0 ? _variation$settings : {},
-        styles: (_variation$styles = variation.styles) !== null && _variation$styles !== void 0 ? _variation$styles : {}
-      },
-      base,
-      merged: mergeBaseAndUserConfigs(base, variation),
-      setUserConfig: () => {}
-    };
-  }, [variation, base]);
-
-  const selectVariation = () => {
-    setUserConfig(() => {
+    if (postType && postId && authorizedPostTypes.includes(postType)) {
       return {
-        settings: variation.settings,
-        styles: variation.styles
+        postType,
+        postId
+      };
+    }
+    if (homepageId) {
+      return {
+        postType: 'page',
+        postId: homepageId
       };
-    });
-  };
-
-  const selectOnEnter = event => {
-    if (event.keyCode === external_wp_keycodes_namespaceObject.ENTER) {
-      event.preventDefault();
-      selectVariation();
-    }
-  };
-
-  const isActive = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    return compareVariations(user, variation);
-  }, [user, variation]);
-  return (0,external_wp_element_namespaceObject.createElement)(GlobalStylesContext.Provider, {
-    value: context
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: classnames_default()('edit-site-global-styles-variations_item', {
-      'is-active': isActive
-    }),
-    role: "button",
-    onClick: selectVariation,
-    onKeyDown: selectOnEnter,
-    tabIndex: "0",
-    "aria-label": variation === null || variation === void 0 ? void 0 : variation.title,
-    onFocus: () => setIsFocused(true),
-    onBlur: () => setIsFocused(false)
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-global-styles-variations_item-preview"
-  }, (0,external_wp_element_namespaceObject.createElement)(preview, {
-    label: variation === null || variation === void 0 ? void 0 : variation.title,
-    isFocused: isFocused
-  }))));
-}
-
-function ScreenStyleVariations() {
-  const {
-    variations
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    return {
-      variations: select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations()
-    };
-  }, []);
-  const withEmptyVariation = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    return [{
-      title: (0,external_wp_i18n_namespaceObject.__)('Default'),
-      settings: {},
-      styles: {}
-    }, ...variations];
-  }, [variations]);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
-    back: "/",
-    title: (0,external_wp_i18n_namespaceObject.__)('Browse styles'),
-    description: (0,external_wp_i18n_namespaceObject.__)('Choose a different style combination for the theme styles')
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, {
-    size: "small",
-    isBorderless: true
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalGrid, {
-    columns: 2
-  }, withEmptyVariation === null || withEmptyVariation === void 0 ? void 0 : withEmptyVariation.map((variation, index) => (0,external_wp_element_namespaceObject.createElement)(Variation, {
-    key: index,
-    variation: variation
-  }))))));
-}
-
-/* harmony default export */ var screen_style_variations = (ScreenStyleVariations);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/ui.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-function GlobalStylesNavigationScreen(_ref) {
-  let {
-    className,
-    ...props
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, extends_extends({
-    className: ['edit-site-global-styles-sidebar__navigator-screen', className].filter(Boolean).join(' ')
-  }, props));
-}
-
-function ContextScreens(_ref2) {
-  let {
-    name
-  } = _ref2;
-  const parentMenu = name === undefined ? '' : '/blocks/' + name;
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: parentMenu + '/typography'
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_typography, {
-    name: name
-  })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: parentMenu + '/typography/text'
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_typography_element, {
-    name: name,
-    element: "text"
-  })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: parentMenu + '/typography/link'
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_typography_element, {
-    name: name,
-    element: "link"
-  })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: parentMenu + '/colors'
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_colors, {
-    name: name
-  })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: parentMenu + '/colors/palette'
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_color_palette, {
-    name: name
-  })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: parentMenu + '/colors/background'
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_background_color, {
-    name: name
-  })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: parentMenu + '/colors/text'
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_text_color, {
-    name: name
-  })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: parentMenu + '/colors/link'
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_link_color, {
-    name: name
-  })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: parentMenu + '/layout'
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_layout, {
-    name: name
-  })));
-}
-
-function GlobalStylesUI() {
-  const blocks = (0,external_wp_blocks_namespaceObject.getBlockTypes)();
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorProvider, {
-    className: "edit-site-global-styles-sidebar__navigator-provider",
-    initialPath: "/"
-  }, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: "/"
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_root, null)), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: "/variations"
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_style_variations, null)), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    path: "/blocks"
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_block_list, null)), blocks.map(block => (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
-    key: 'menu-block-' + block.name,
-    path: '/blocks/' + block.name
-  }, (0,external_wp_element_namespaceObject.createElement)(screen_block, {
-    name: block.name
-  }))), (0,external_wp_element_namespaceObject.createElement)(ContextScreens, null), blocks.map(block => (0,external_wp_element_namespaceObject.createElement)(ContextScreens, {
-    key: 'screens-block-' + block.name,
-    name: block.name
-  })));
-}
-
-/* harmony default export */ var ui = (GlobalStylesUI);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/index.js
-
-
-
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/global-styles-sidebar.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function GlobalStylesSidebar() {
-  const [canReset, onReset] = useGlobalStylesReset();
-  const {
-    toggle
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
-  return (0,external_wp_element_namespaceObject.createElement)(default_sidebar_DefaultSidebar, {
-    className: "edit-site-global-styles-sidebar",
-    identifier: "edit-site/global-styles",
-    title: (0,external_wp_i18n_namespaceObject.__)('Styles'),
-    icon: library_styles,
-    closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close global styles sidebar'),
-    panelClassName: "edit-site-global-styles-sidebar__panel",
-    header: (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexBlock, null, (0,external_wp_element_namespaceObject.createElement)("strong", null, (0,external_wp_i18n_namespaceObject.__)('Styles')), (0,external_wp_element_namespaceObject.createElement)("span", {
-      className: "edit-site-global-styles-sidebar__beta"
-    }, (0,external_wp_i18n_namespaceObject.__)('Beta'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, {
-      icon: more_vertical,
-      label: (0,external_wp_i18n_namespaceObject.__)('More Global Styles Actions'),
-      controls: [{
-        title: (0,external_wp_i18n_namespaceObject.__)('Reset to defaults'),
-        onClick: onReset,
-        isDisabled: !canReset
-      }, {
-        title: (0,external_wp_i18n_namespaceObject.__)('Welcome Guide'),
-        onClick: () => toggle('core/edit-site', 'welcomeGuideStyles')
-      }]
-    })))
-  }, (0,external_wp_element_namespaceObject.createElement)(ui, null));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-const ALLOWED_BLOCKS = {
-  'core/navigation': ['core/navigation-link', 'core/search', 'core/social-links', 'core/page-list', 'core/spacer', 'core/home-link', 'core/site-title', 'core/site-logo', 'core/navigation-submenu'],
-  'core/social-links': ['core/social-link'],
-  'core/navigation-submenu': ['core/navigation-link', 'core/navigation-submenu'],
-  'core/navigation-link': ['core/navigation-link', 'core/navigation-submenu']
-};
-function navigation_menu_NavigationMenu(_ref) {
-  let {
-    innerBlocks,
-    id
-  } = _ref;
-  const {
-    updateBlockListSettings
-  } = useDispatch(blockEditorStore); //TODO: Block settings are normally updated as a side effect of rendering InnerBlocks in BlockList
-  //Think through a better way of doing this, possible with adding allowed blocks to block library metadata
-
-  useEffect(() => {
-    updateBlockListSettings('', {
-      allowedBlocks: ALLOWED_BLOCKS['core/navigation']
-    });
-    innerBlocks.forEach(block => {
-      if (ALLOWED_BLOCKS[block.name]) {
-        updateBlockListSettings(block.clientId, {
-          allowedBlocks: ALLOWED_BLOCKS[block.name]
-        });
-      }
-    });
-  }, [updateBlockListSettings, innerBlocks]);
-  return createElement(Fragment, null, createElement(ListView, {
-    id: id,
-    showNestedBlocks: true,
-    expandNested: false,
-    __experimentalFeatures: true,
-    __experimentalPersistentListViewFeatures: true
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/navigation-menu-sidebar/navigation-inspector.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-const NAVIGATION_MENUS_QUERY = [{
-  per_page: -1,
-  status: 'publish'
-}];
-function navigation_inspector_NavigationInspector() {
-  var _navigationMenus$;
-
-  const {
-    selectedNavigationBlockId,
-    clientIdToRef,
-    navigationMenus,
-    isResolvingNavigationMenus,
-    hasResolvedNavigationMenus,
-    firstNavigationBlockId
-  } = useSelect(select => {
-    const {
-      __experimentalGetActiveBlockIdByBlockNames,
-      __experimentalGetGlobalBlocksByName,
-      getBlock
-    } = select(blockEditorStore);
-    const {
-      getEntityRecords,
-      hasFinishedResolution,
-      isResolving
-    } = select(coreStore);
-    const navigationMenusQuery = ['postType', 'wp_navigation', NAVIGATION_MENUS_QUERY[0]]; // Get the active Navigation block (if present).
-
-    const selectedNavId = __experimentalGetActiveBlockIdByBlockNames('core/navigation'); // Get all Navigation blocks currently within the editor canvas.
-
-
-    const navBlockIds = __experimentalGetGlobalBlocksByName('core/navigation');
-
-    const idToRef = {};
-    navBlockIds.forEach(id => {
-      var _getBlock, _getBlock$attributes;
-
-      idToRef[id] = (_getBlock = getBlock(id)) === null || _getBlock === void 0 ? void 0 : (_getBlock$attributes = _getBlock.attributes) === null || _getBlock$attributes === void 0 ? void 0 : _getBlock$attributes.ref;
-    });
-    return {
-      selectedNavigationBlockId: selectedNavId,
-      firstNavigationBlockId: navBlockIds === null || navBlockIds === void 0 ? void 0 : navBlockIds[0],
-      clientIdToRef: idToRef,
-      navigationMenus: getEntityRecords(...navigationMenusQuery),
-      isResolvingNavigationMenus: isResolving('getEntityRecords', navigationMenusQuery),
-      hasResolvedNavigationMenus: hasFinishedResolution('getEntityRecords', navigationMenusQuery)
-    };
-  }, []);
-  const navMenuListId = useInstanceId(NavigationMenu, 'edit-site-navigation-inspector-menu');
-  const firstNavRefInTemplate = clientIdToRef[firstNavigationBlockId];
-  const firstNavigationMenuRef = navigationMenus === null || navigationMenus === void 0 ? void 0 : (_navigationMenus$ = navigationMenus[0]) === null || _navigationMenus$ === void 0 ? void 0 : _navigationMenus$.id; // Default Navigation Menu is either:
-  // - the Navigation Menu referenced by the first Nav block within the template.
-  // - the first of the available Navigation Menus (`wp_navigation`) posts.
-
-  const defaultNavigationMenuId = firstNavRefInTemplate || firstNavigationMenuRef; // The Navigation Menu manually selected by the user within the Nav inspector.
-
-  const [currentMenuId, setCurrentMenuId] = useState(firstNavRefInTemplate); // If a Nav block is selected within the canvas then set the
-  // Navigation Menu referenced by it's `ref` attribute  to be
-  // active within the Navigation sidebar.
-
-  useEffect(() => {
-    if (selectedNavigationBlockId) {
-      setCurrentMenuId(clientIdToRef[selectedNavigationBlockId]);
-    }
-  }, [selectedNavigationBlockId]);
-  let options = [];
-
-  if (navigationMenus) {
-    options = navigationMenus.map(_ref => {
-      let {
-        id,
-        title
-      } = _ref;
-      return {
-        value: id,
-        label: title.rendered
-      };
-    });
-  }
-
-  const [innerBlocks, onInput, onChange] = useEntityBlockEditor('postType', 'wp_navigation', {
-    id: currentMenuId || defaultNavigationMenuId
-  });
-  const {
-    isLoadingInnerBlocks,
-    hasLoadedInnerBlocks
-  } = useSelect(select => {
-    const {
-      isResolving,
-      hasFinishedResolution
-    } = select(coreStore);
-    return {
-      isLoadingInnerBlocks: isResolving('getEntityRecord', ['postType', 'wp_navigation', currentMenuId || defaultNavigationMenuId]),
-      hasLoadedInnerBlocks: hasFinishedResolution('getEntityRecord', ['postType', 'wp_navigation', currentMenuId || defaultNavigationMenuId])
-    };
-  }, [currentMenuId, defaultNavigationMenuId]);
-  const isLoading = !(hasResolvedNavigationMenus && hasLoadedInnerBlocks);
-  const hasMoreThanOneNavigationMenu = (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 1;
-  const hasNavigationMenus = !!(navigationMenus !== null && navigationMenus !== void 0 && navigationMenus.length); // Entity block editor will return entities that are not currently published.
-  // Guard by only allowing their usage if there are published Nav Menus.
-
-  const publishedInnerBlocks = hasNavigationMenus ? innerBlocks : [];
-  const hasInnerBlocks = !!(publishedInnerBlocks !== null && publishedInnerBlocks !== void 0 && publishedInnerBlocks.length);
-  useEffect(() => {
-    if (isResolvingNavigationMenus) {
-      speak('Loading Navigation sidebar menus.');
-    }
-
-    if (hasResolvedNavigationMenus) {
-      speak('Navigation sidebar menus have loaded.');
-    }
-  }, [isResolvingNavigationMenus, hasResolvedNavigationMenus]);
-  useEffect(() => {
-    if (isLoadingInnerBlocks) {
-      speak('Loading Navigation sidebar selected menu items.');
-    }
-
-    if (hasLoadedInnerBlocks) {
-      speak('Navigation sidebar selected menu items have loaded.');
-    }
-  }, [isLoadingInnerBlocks, hasLoadedInnerBlocks]);
-  return createElement("div", {
-    className: "edit-site-navigation-inspector"
-  }, hasResolvedNavigationMenus && !hasNavigationMenus && createElement("p", {
-    className: "edit-site-navigation-inspector__empty-msg"
-  }, __('There are no Navigation Menus.')), !hasResolvedNavigationMenus && createElement("div", {
-    className: "edit-site-navigation-inspector__placeholder"
-  }), hasResolvedNavigationMenus && hasMoreThanOneNavigationMenu && createElement(SelectControl, {
-    "aria-controls": // aria-controls should only apply when referenced element is in DOM
-    hasLoadedInnerBlocks ? navMenuListId : undefined,
-    value: currentMenuId || defaultNavigationMenuId,
-    options: options,
-    onChange: newMenuId => setCurrentMenuId(Number(newMenuId))
-  }), isLoading && createElement(Fragment, null, createElement("div", {
-    className: "edit-site-navigation-inspector__placeholder is-child"
-  }), createElement("div", {
-    className: "edit-site-navigation-inspector__placeholder is-child"
-  }), createElement("div", {
-    className: "edit-site-navigation-inspector__placeholder is-child"
-  })), hasInnerBlocks && !isLoading && createElement(BlockEditorProvider, {
-    value: publishedInnerBlocks,
-    onChange: onChange,
-    onInput: onInput
-  }, createElement(NavigationMenu, {
-    id: navMenuListId,
-    innerBlocks: publishedInnerBlocks
-  })), !hasInnerBlocks && !isLoading && createElement("p", {
-    className: "edit-site-navigation-inspector__empty-msg"
-  }, __('Navigation Menu is empty.')));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/navigation-menu-sidebar/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function NavigationMenuSidebar() {
-  return createElement(DefaultSidebar, {
-    className: "edit-site-navigation-menu-sidebar",
-    identifier: "edit-site/navigation-menu",
-    title: __('Navigation Menus'),
-    icon: navigation,
-    closeLabel: __('Close navigation menu sidebar'),
-    panelClassName: "edit-site-navigation-menu-sidebar__panel",
-    header: createElement(Flex, null, createElement(FlexBlock, null, createElement("strong", null, __('Navigation Menus'))))
-  }, createElement(NavigationInspector, null));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/constants.js
-const SIDEBAR_TEMPLATE = 'edit-site/template';
-const SIDEBAR_BLOCK = 'edit-site/block-inspector';
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/settings-header/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-const SettingsHeader = _ref => {
-  let {
-    sidebarName
-  } = _ref;
-  const {
-    enableComplementaryArea
+    }
+    return {};
+  }, [homepageId, postType, postId]);
+  if (postTypesWithoutParentTemplate.includes(postType) && postId) {
+    return {
+      isReady: true,
+      postType,
+      postId,
+      context
+    };
+  }
+  if (hasLoadedAllDependencies) {
+    return {
+      isReady: resolvedTemplateId !== undefined,
+      postType: TEMPLATE_POST_TYPE,
+      postId: resolvedTemplateId,
+      context
+    };
+  }
+  return {
+    isReady: false
+  };
+}
+function useInitEditedEntityFromURL() {
+  const {
+    params = {}
+  } = useLocation();
+  const {
+    postType,
+    postId,
+    context,
+    isReady
+  } = useResolveEditedEntityAndContext(params);
+  const {
+    setEditedEntity
   } = (0,external_wp_data_namespaceObject.useDispatch)(store);
-
-  const openTemplateSettings = () => enableComplementaryArea(STORE_NAME, SIDEBAR_TEMPLATE);
-
-  const openBlockSettings = () => enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK);
-
-  const [templateAriaLabel, templateActiveClass] = sidebarName === SIDEBAR_TEMPLATE ? // translators: ARIA label for the Template sidebar tab, selected.
-  [(0,external_wp_i18n_namespaceObject.__)('Template (selected)'), 'is-active'] : // translators: ARIA label for the Template Settings Sidebar tab, not selected.
-  [(0,external_wp_i18n_namespaceObject.__)('Template'), ''];
-  const [blockAriaLabel, blockActiveClass] = sidebarName === SIDEBAR_BLOCK ? // translators: ARIA label for the Block Settings Sidebar tab, selected.
-  [(0,external_wp_i18n_namespaceObject.__)('Block (selected)'), 'is-active'] : // translators: ARIA label for the Block Settings Sidebar tab, not selected.
-  [(0,external_wp_i18n_namespaceObject.__)('Block'), ''];
-  /* Use a list so screen readers will announce how many tabs there are. */
-
-  return (0,external_wp_element_namespaceObject.createElement)("ul", null, (0,external_wp_element_namespaceObject.createElement)("li", null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    onClick: openTemplateSettings,
-    className: `edit-site-sidebar__panel-tab ${templateActiveClass}`,
-    "aria-label": templateAriaLabel // translators: Data label for the Template Settings Sidebar tab.
-    ,
-    "data-label": (0,external_wp_i18n_namespaceObject.__)('Template')
-  }, // translators: Text label for the Template Settings Sidebar tab.
-  (0,external_wp_i18n_namespaceObject.__)('Template'))), (0,external_wp_element_namespaceObject.createElement)("li", null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    onClick: openBlockSettings,
-    className: `edit-site-sidebar__panel-tab ${blockActiveClass}`,
-    "aria-label": blockAriaLabel // translators: Data label for the Block Settings Sidebar tab.
-    ,
-    "data-label": (0,external_wp_i18n_namespaceObject.__)('Block')
-  }, // translators: Text label for the Block Settings Sidebar tab.
-  (0,external_wp_i18n_namespaceObject.__)('Block'))));
-};
-
-/* harmony default export */ var settings_header = (SettingsHeader);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/template-card/template-areas.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function TemplateAreaItem(_ref) {
-  let {
-    area,
-    clientId
-  } = _ref;
-  const {
-    selectBlock,
-    toggleBlockHighlight
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
-  const templatePartArea = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const defaultAreas = select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas();
-
-    return defaultAreas.find(defaultArea => defaultArea.area === area);
-  }, [area]);
-
-  const highlightBlock = () => toggleBlockHighlight(clientId, true);
-
-  const cancelHighlightBlock = () => toggleBlockHighlight(clientId, false);
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    className: "edit-site-template-card__template-areas-item",
-    icon: templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.icon,
-    onMouseOver: highlightBlock,
-    onMouseLeave: cancelHighlightBlock,
-    onFocus: highlightBlock,
-    onBlur: cancelHighlightBlock,
-    onClick: () => {
-      selectBlock(clientId);
-    }
-  }, templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.label);
-}
-
-function template_areas_TemplateAreas() {
-  const templateParts = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getCurrentTemplateTemplateParts(), []);
-
-  if (!templateParts.length) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)("section", {
-    className: "edit-site-template-card__template-areas"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
-    level: 3,
-    className: "edit-site-template-card__template-areas-title"
-  }, (0,external_wp_i18n_namespaceObject.__)('Areas')), (0,external_wp_element_namespaceObject.createElement)("ul", {
-    className: "edit-site-template-card__template-areas-list"
-  }, templateParts.map(_ref2 => {
-    let {
-      templatePart,
-      block
-    } = _ref2;
-    return (0,external_wp_element_namespaceObject.createElement)("li", {
-      key: templatePart.slug
-    }, (0,external_wp_element_namespaceObject.createElement)(TemplateAreaItem, {
-      area: templatePart.area,
-      clientId: block.clientId
-    }));
-  })));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/template-card/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function TemplateCard() {
-  const {
-    title,
-    description,
-    icon
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const {
-      getEditedPostType,
-      getEditedPostId
-    } = select(store_store);
-    const {
-      getEntityRecord
-    } = select(external_wp_coreData_namespaceObject.store);
-    const {
-      __experimentalGetTemplateInfo: getTemplateInfo
-    } = select(external_wp_editor_namespaceObject.store);
-    const postType = getEditedPostType();
-    const postId = getEditedPostId();
-    const record = getEntityRecord('postType', postType, postId);
-    const info = record ? getTemplateInfo(record) : {};
-    return info;
-  }, []);
-
-  if (!title && !description) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-template-card"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
-    className: "edit-site-template-card__icon",
-    icon: icon
-  }), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-template-card__content"
-  }, (0,external_wp_element_namespaceObject.createElement)("h2", {
-    className: "edit-site-template-card__title"
-  }, title), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-template-card__description"
-  }, description), (0,external_wp_element_namespaceObject.createElement)(template_areas_TemplateAreas, null)));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-const {
-  Slot: InspectorSlot,
-  Fill: InspectorFill
-} = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteSidebarInspector');
-const SidebarInspectorFill = InspectorFill;
-function SidebarComplementaryAreaFills() {
-  const {
-    sidebar,
-    isEditorSidebarOpened,
-    hasBlockSelection
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const _sidebar = select(store).getActiveComplementaryArea(STORE_NAME);
-
-    const _isEditorSidebarOpened = [SIDEBAR_BLOCK, SIDEBAR_TEMPLATE].includes(_sidebar);
-
-    return {
-      sidebar: _sidebar,
-      isEditorSidebarOpened: _isEditorSidebarOpened,
-      hasBlockSelection: !!select(external_wp_blockEditor_namespaceObject.store).getBlockSelectionStart()
-    };
-  }, []);
-  const {
-    enableComplementaryArea
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    if (!isEditorSidebarOpened) return;
-
-    if (hasBlockSelection) {
-      enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK);
-    } else {
-      enableComplementaryArea(STORE_NAME, SIDEBAR_TEMPLATE);
-    }
-  }, [hasBlockSelection, isEditorSidebarOpened]);
-  let sidebarName = sidebar;
-
-  if (!isEditorSidebarOpened) {
-    sidebarName = hasBlockSelection ? SIDEBAR_BLOCK : SIDEBAR_TEMPLATE;
-  } // Conditionally include NavMenu sidebar in Plugin only.
-  // Optimise for dead code elimination.
-  // See https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/feature-flags.md#dead-code-elimination.
-
-
-  let MaybeNavigationMenuSidebar = external_wp_element_namespaceObject.Fragment;
-
-  if (false) {}
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(default_sidebar_DefaultSidebar, {
-    identifier: sidebarName,
-    title: (0,external_wp_i18n_namespaceObject.__)('Settings'),
-    icon: library_cog,
-    closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close settings sidebar'),
-    header: (0,external_wp_element_namespaceObject.createElement)(settings_header, {
-      sidebarName: sidebarName
-    }),
-    headerClassName: "edit-site-sidebar__panel-tabs"
-  }, sidebarName === SIDEBAR_TEMPLATE && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, null, (0,external_wp_element_namespaceObject.createElement)(TemplateCard, null)), sidebarName === SIDEBAR_BLOCK && (0,external_wp_element_namespaceObject.createElement)(InspectorSlot, {
-    bubblesVirtually: true
-  })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesSidebar, null), (0,external_wp_element_namespaceObject.createElement)(MaybeNavigationMenuSidebar, null));
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (isReady) {
+      setEditedEntity(postType, postId, context);
+    }
+  }, [isReady, postType, postId, context, setEditedEntity]);
 }
 
 ;// CONCATENATED MODULE: external ["wp","htmlEntities"]
-var external_wp_htmlEntities_namespaceObject = window["wp"]["htmlEntities"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/home.js
-
-
-/**
- * WordPress dependencies
- */
-
-const home = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z"
-}));
-/* harmony default export */ var library_home = (home);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol-filled.js
-
-
-/**
- * WordPress dependencies
- */
-
-const symbolFilled = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"
-}));
-/* harmony default export */ var symbol_filled = (symbolFilled);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/main-dashboard-button/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-const slotName = '__experimentalMainDashboardButton';
-const {
-  Fill,
-  Slot: MainDashboardButtonSlot
-} = (0,external_wp_components_namespaceObject.createSlotFill)(slotName);
-const MainDashboardButton = Fill;
-
-const main_dashboard_button_Slot = _ref => {
-  let {
-    children
-  } = _ref;
-  const slot = (0,external_wp_components_namespaceObject.__experimentalUseSlot)(slotName);
-  const hasFills = Boolean(slot.fills && slot.fills.length);
-
-  if (!hasFills) {
-    return children;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(MainDashboardButtonSlot, {
-    bubblesVirtually: true
-  });
-};
-
-MainDashboardButton.Slot = main_dashboard_button_Slot;
-/* harmony default export */ var main_dashboard_button = (MainDashboardButton);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-panel/index.js
-
-
-
+const external_wp_htmlEntities_namespaceObject = window["wp"]["htmlEntities"];
+;// CONCATENATED MODULE: external ["wp","primitives"]
+const external_wp_primitives_namespaceObject = window["wp"]["primitives"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/search.js
+/**
+ * WordPress dependencies
+ */
+
+
+const search = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"
+  })
+});
+/* harmony default export */ const library_search = (search);
+
+;// CONCATENATED MODULE: external ["wp","keycodes"]
+const external_wp_keycodes_namespaceObject = window["wp"]["keycodes"];
+;// CONCATENATED MODULE: external ["wp","url"]
+const external_wp_url_namespaceObject = window["wp"]["url"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/wordpress.js
+/**
+ * WordPress dependencies
+ */
+
+
+const wordpress = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "-2 -2 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z"
+  })
+});
+/* harmony default export */ const library_wordpress = (wordpress);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/site-icon/index.js
 /**
  * External dependencies
  */
 
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-const SITE_EDITOR_KEY = 'site-editor';
-
-function NavLink(_ref) {
-  let {
-    params,
-    replace,
-    ...props
-  } = _ref;
-  const linkProps = useLink(params, replace);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationItem, extends_extends({}, linkProps, props));
-}
-
-const NavigationPanel = _ref2 => {
-  let {
-    activeItem = SITE_EDITOR_KEY
-  } = _ref2;
-  const {
-    homeTemplate,
-    isNavigationOpen,
-    siteTitle
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+function SiteIcon({
+  className
+}) {
+  const {
+    isRequestingSite,
+    siteIconUrl
   } = (0,external_wp_data_namespaceObject.useSelect)(select => {
     const {
       getEntityRecord
     } = select(external_wp_coreData_namespaceObject.store);
-    const {
-      getSettings,
-      isNavigationOpened
-    } = select(store_store);
-    const siteData = getEntityRecord('root', '__unstableBase', undefined) || {};
-    return {
-      siteTitle: siteData.name,
-      homeTemplate: getSettings().__unstableHomeTemplate,
-      isNavigationOpen: isNavigationOpened()
-    };
-  }, []);
-  const {
-    setIsNavigationPanelOpened
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-
-  const closeOnEscape = event => {
-    if (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE && !event.defaultPrevented) {
-      event.preventDefault();
-      setIsNavigationPanelOpened(false);
-    }
-  };
-
-  return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions
-    (0,external_wp_element_namespaceObject.createElement)("div", {
-      className: classnames_default()(`edit-site-navigation-panel`, {
-        'is-open': isNavigationOpen
-      }),
-      onKeyDown: closeOnEscape
-    }, (0,external_wp_element_namespaceObject.createElement)("div", {
-      className: "edit-site-navigation-panel__inner"
-    }, (0,external_wp_element_namespaceObject.createElement)("div", {
-      className: "edit-site-navigation-panel__site-title-container"
-    }, (0,external_wp_element_namespaceObject.createElement)("div", {
-      className: "edit-site-navigation-panel__site-title"
-    }, (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle))), (0,external_wp_element_namespaceObject.createElement)("div", {
-      className: "edit-site-navigation-panel__scroll-container"
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigation, {
-      activeItem: activeItem
-    }, (0,external_wp_element_namespaceObject.createElement)(main_dashboard_button.Slot, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationBackButton, {
-      backButtonLabel: (0,external_wp_i18n_namespaceObject.__)('Dashboard'),
-      className: "edit-site-navigation-panel__back-to-dashboard",
-      href: "index.php"
-    })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationMenu, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationGroup, {
-      title: (0,external_wp_i18n_namespaceObject.__)('Editor')
-    }, (0,external_wp_element_namespaceObject.createElement)(NavLink, {
-      icon: library_home,
-      title: (0,external_wp_i18n_namespaceObject.__)('Site'),
-      item: SITE_EDITOR_KEY,
-      params: {
-        postId: homeTemplate === null || homeTemplate === void 0 ? void 0 : homeTemplate.postId,
-        postType: homeTemplate === null || homeTemplate === void 0 ? void 0 : homeTemplate.postType
-      }
-    }), (0,external_wp_element_namespaceObject.createElement)(NavLink, {
-      icon: library_layout,
-      title: (0,external_wp_i18n_namespaceObject.__)('Templates'),
-      item: "wp_template",
-      params: {
-        postId: undefined,
-        postType: 'wp_template'
-      }
-    }), (0,external_wp_element_namespaceObject.createElement)(NavLink, {
-      icon: symbol_filled,
-      title: (0,external_wp_i18n_namespaceObject.__)('Template Parts'),
-      item: "wp_template_part",
-      params: {
-        postId: undefined,
-        postType: 'wp_template_part'
-      }
-    })))))))
-  );
-};
-
-/* harmony default export */ var navigation_panel = (NavigationPanel);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/wordpress.js
-
-
-/**
- * WordPress dependencies
- */
-
-const wordpress = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "-2 -2 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z"
-}));
-/* harmony default export */ var library_wordpress = (wordpress);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-toggle/index.js
-
-
+    const siteData = getEntityRecord('root', '__unstableBase', undefined);
+    return {
+      isRequestingSite: !siteData,
+      siteIconUrl: siteData?.site_icon_url
+    };
+  }, []);
+  if (isRequestingSite && !siteIconUrl) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-site-icon__image"
+    });
+  }
+  const icon = siteIconUrl ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
+    className: "edit-site-site-icon__image",
+    alt: (0,external_wp_i18n_namespaceObject.__)('Site Icon'),
+    src: siteIconUrl
+  }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+    className: "edit-site-site-icon__icon",
+    icon: library_wordpress,
+    size: 48
+  });
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    className: dist_clsx(className, 'edit-site-site-icon'),
+    children: icon
+  });
+}
+/* harmony default export */ const site_icon = (SiteIcon);
+
+;// CONCATENATED MODULE: external ["wp","dom"]
+const external_wp_dom_namespaceObject = window["wp"]["dom"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/index.js
 /**
  * External dependencies
  */
 
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function NavigationToggle(_ref) {
-  let {
-    icon
-  } = _ref;
-  const {
-    isNavigationOpen,
-    isRequestingSiteIcon,
-    siteIconUrl
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const {
-      getEntityRecord,
-      isResolving
-    } = select(external_wp_coreData_namespaceObject.store);
-    const siteData = getEntityRecord('root', '__unstableBase', undefined) || {};
-    return {
-      isNavigationOpen: select(store_store).isNavigationOpened(),
-      isRequestingSiteIcon: isResolving('core', 'getEntityRecord', ['root', '__unstableBase', undefined]),
-      siteIconUrl: siteData.site_icon_url
-    };
-  }, []);
-  const {
-    setIsNavigationPanelOpened
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
-  const navigationToggleRef = (0,external_wp_element_namespaceObject.useRef)();
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    // TODO: Remove this effect when alternative solution is merged.
-    // See: https://github.com/WordPress/gutenberg/pull/37314
-    if (!isNavigationOpen) {
-      navigationToggleRef.current.focus();
-    }
-  }, [isNavigationOpen]);
-
-  const toggleNavigationPanel = () => setIsNavigationPanelOpened(!isNavigationOpen);
-
-  let buttonIcon = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
-    size: "36px",
-    icon: library_wordpress
-  });
-  const effect = {
-    expand: {
-      scale: 1.25,
-      transition: {
-        type: 'tween',
-        duration: '0.3'
-      }
-    }
-  };
-
-  if (siteIconUrl) {
-    buttonIcon = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.img, {
-      variants: !disableMotion && effect,
-      alt: (0,external_wp_i18n_namespaceObject.__)('Site Icon'),
-      className: "edit-site-navigation-toggle__site-icon",
-      src: siteIconUrl
-    });
-  } else if (isRequestingSiteIcon) {
-    buttonIcon = null;
-  } else if (icon) {
-    buttonIcon = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
-      size: "36px",
-      icon: icon
-    });
-  }
-
-  const classes = classnames_default()({
-    'edit-site-navigation-toggle__button': true,
-    'has-icon': siteIconUrl
-  });
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, {
-    className: 'edit-site-navigation-toggle' + (isNavigationOpen ? ' is-open' : ''),
-    whileHover: "expand"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    className: classes,
-    label: (0,external_wp_i18n_namespaceObject.__)('Toggle navigation'),
-    ref: navigationToggleRef // isPressed will add unwanted styles.
-    ,
-    "aria-pressed": isNavigationOpen,
-    onClick: toggleNavigationPanel,
-    showTooltip: true
-  }, buttonIcon));
-}
-
-/* harmony default export */ var navigation_toggle = (NavigationToggle);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-const {
-  Fill: NavigationPanelPreviewFill,
-  Slot: NavigationPanelPreviewSlot
-} = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteNavigationPanelPreview');
-const {
-  Fill: NavigationSidebarFill,
-  Slot: NavigationSidebarSlot
-} = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteNavigationSidebar');
-
-function NavigationSidebar(_ref) {
-  let {
-    isDefaultOpen = false,
-    activeTemplateType
-  } = _ref;
-  const isDesktopViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium');
-  const {
-    setIsNavigationPanelOpened
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  (0,external_wp_element_namespaceObject.useEffect)(function autoOpenNavigationPanelOnViewportChange() {
-    setIsNavigationPanelOpened(isDefaultOpen && isDesktopViewport);
-  }, [isDefaultOpen, isDesktopViewport, setIsNavigationPanelOpened]);
-  return (0,external_wp_element_namespaceObject.createElement)(NavigationSidebarFill, null, (0,external_wp_element_namespaceObject.createElement)(navigation_toggle, null), (0,external_wp_element_namespaceObject.createElement)(navigation_panel, {
-    activeItem: activeTemplateType
-  }), (0,external_wp_element_namespaceObject.createElement)(NavigationPanelPreviewSlot, null));
-}
-
-NavigationSidebar.Slot = NavigationSidebarSlot;
-/* harmony default export */ var navigation_sidebar = (NavigationSidebar);
-
-;// CONCATENATED MODULE: external ["wp","reusableBlocks"]
-var external_wp_reusableBlocks_namespaceObject = window["wp"]["reusableBlocks"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/convert-to-regular.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-function ConvertToRegularBlocks(_ref) {
-  let {
-    clientId
-  } = _ref;
-  const {
-    getBlocks
-  } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store);
-  const {
-    replaceBlocks
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
-  const canRemove = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).canRemoveBlock(clientId), [clientId]);
-
-  if (!canRemove) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, null, _ref2 => {
-    let {
-      onClose
-    } = _ref2;
-    return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-      onClick: () => {
-        replaceBlocks(clientId, getBlocks(clientId));
-        onClose();
-      }
-    }, (0,external_wp_i18n_namespaceObject.__)('Detach blocks from template part'));
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/create-template-part-modal/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function CreateTemplatePartModal(_ref) {
-  let {
-    closeModal,
-    onCreate
-  } = _ref;
-  const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)('');
-  const [area, setArea] = (0,external_wp_element_namespaceObject.useState)(TEMPLATE_PART_AREA_GENERAL);
-  const [isSubmitting, setIsSubmitting] = (0,external_wp_element_namespaceObject.useState)(false);
-  const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(CreateTemplatePartModal);
-  const templatePartAreas = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas(), []);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Create a template part'),
-    closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'),
-    onRequestClose: closeModal,
-    overlayClassName: "edit-site-create-template-part-modal"
-  }, (0,external_wp_element_namespaceObject.createElement)("form", {
-    onSubmit: async event => {
-      event.preventDefault();
-
-      if (!title) {
-        return;
-      }
-
-      setIsSubmitting(true);
-      await onCreate({
-        title,
-        area
-      });
-    }
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
-    label: (0,external_wp_i18n_namespaceObject.__)('Name'),
-    value: title,
-    onChange: setTitle,
-    required: true
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.BaseControl, {
-    label: (0,external_wp_i18n_namespaceObject.__)('Area'),
-    id: `edit-site-create-template-part-modal__area-selection-${instanceId}`,
-    className: "edit-site-create-template-part-modal__area-base-control"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalRadioGroup, {
-    label: (0,external_wp_i18n_namespaceObject.__)('Area'),
-    className: "edit-site-create-template-part-modal__area-radio-group",
-    id: `edit-site-create-template-part-modal__area-selection-${instanceId}`,
-    onChange: setArea,
-    checked: area
-  }, templatePartAreas.map(_ref2 => {
-    let {
-      icon,
-      label,
-      area: value,
-      description
-    } = _ref2;
-    return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalRadio, {
-      key: label,
-      value: value,
-      className: "edit-site-create-template-part-modal__area-radio"
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, {
-      align: "start",
-      justify: "start"
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
-      icon: icon
-    })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexBlock, {
-      className: "edit-site-create-template-part-modal__option-label"
-    }, label, (0,external_wp_element_namespaceObject.createElement)("div", null, description)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, {
-      className: "edit-site-create-template-part-modal__checkbox"
-    }, area === value && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
-      icon: library_check
-    }))));
-  }))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, {
-    className: "edit-site-create-template-part-modal__modal-actions",
-    justify: "flex-end"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    variant: "secondary",
-    onClick: () => {
-      closeModal();
-    }
-  }, (0,external_wp_i18n_namespaceObject.__)('Cancel'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    variant: "primary",
-    type: "submit",
-    disabled: !title,
-    isBusy: isSubmitting
-  }, (0,external_wp_i18n_namespaceObject.__)('Create'))))));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/convert-to-template-part.js
-
-
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+const SidebarNavigationContext = (0,external_wp_element_namespaceObject.createContext)(() => {});
+// Focus a sidebar element after a navigation. The element to focus is either
+// specified by `focusSelector` (when navigating back) or it is the first
+// tabbable element (usually the "Back" button).
+function focusSidebarElement(el, direction, focusSelector) {
+  let elementToFocus;
+  if (direction === 'back' && focusSelector) {
+    elementToFocus = el.querySelector(focusSelector);
+  }
+  if (direction !== null && !elementToFocus) {
+    const [firstTabbable] = external_wp_dom_namespaceObject.focus.tabbable.find(el);
+    elementToFocus = firstTabbable !== null && firstTabbable !== void 0 ? firstTabbable : el;
+  }
+  elementToFocus?.focus();
+}
+
+// Navigation state that is updated when navigating back or forward. Helps us
+// manage the animations and also focus.
+function createNavState() {
+  let state = {
+    direction: null,
+    focusSelector: null
+  };
+  return {
+    get() {
+      return state;
+    },
+    navigate(direction, focusSelector = null) {
+      state = {
+        direction,
+        focusSelector: direction === 'forward' && focusSelector ? focusSelector : state.focusSelector
+      };
+    }
+  };
+}
+function SidebarContentWrapper({
+  children
+}) {
+  const navState = (0,external_wp_element_namespaceObject.useContext)(SidebarNavigationContext);
+  const wrapperRef = (0,external_wp_element_namespaceObject.useRef)();
+  const [navAnimation, setNavAnimation] = (0,external_wp_element_namespaceObject.useState)(null);
+  (0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
+    const {
+      direction,
+      focusSelector
+    } = navState.get();
+    focusSidebarElement(wrapperRef.current, direction, focusSelector);
+    setNavAnimation(direction);
+  }, [navState]);
+  const wrapperCls = dist_clsx('edit-site-sidebar__screen-wrapper', {
+    'slide-from-left': navAnimation === 'back',
+    'slide-from-right': navAnimation === 'forward'
+  });
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    ref: wrapperRef,
+    className: wrapperCls,
+    children: children
+  });
+}
+function SidebarContent({
+  routeKey,
+  children
+}) {
+  const [navState] = (0,external_wp_element_namespaceObject.useState)(createNavState);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationContext.Provider, {
+    value: navState,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-sidebar__content",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarContentWrapper, {
+        children: children
+      }, routeKey)
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/site-hub/index.js
 /**
  * External dependencies
  */
 
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function ConvertToTemplatePart(_ref) {
-  let {
-    clientIds,
-    blocks
-  } = _ref;
-  const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
-  const {
-    replaceBlocks
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
-  const {
-    saveEntityRecord
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
-  const {
-    createSuccessNotice
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
-
-  const onConvert = async _ref2 => {
-    let {
-      title,
-      area
-    } = _ref2;
-    // Currently template parts only allow latin chars.
-    // Fallback slug will receive suffix by default.
-    const cleanSlug = (0,external_lodash_namespaceObject.kebabCase)(title).replace(/[^\w-]+/g, '') || 'wp-custom-part';
-    const templatePart = await saveEntityRecord('postType', 'wp_template_part', {
-      slug: cleanSlug,
-      title,
-      content: (0,external_wp_blocks_namespaceObject.serialize)(blocks),
-      area
-    });
-    replaceBlocks(clientIds, (0,external_wp_blocks_namespaceObject.createBlock)('core/template-part', {
-      slug: templatePart.slug,
-      theme: templatePart.theme
-    }));
-    createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Template part created.'), {
-      type: 'snackbar'
-    }); // The modal and this component will be unmounted because of `replaceBlocks` above,
-    // so no need to call `closeModal` or `onClose`.
-  };
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, null, () => (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-    onClick: () => {
-      setIsModalOpen(true);
-    }
-  }, (0,external_wp_i18n_namespaceObject.__)('Make template part'))), isModalOpen && (0,external_wp_element_namespaceObject.createElement)(CreateTemplatePartModal, {
-    closeModal: () => {
-      setIsModalOpen(false);
-    },
-    onCreate: onConvert
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function TemplatePartConverter() {
-  var _blocks$;
-
-  const {
-    clientIds,
-    blocks
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const {
-      getSelectedBlockClientIds,
-      getBlocksByClientId
-    } = select(external_wp_blockEditor_namespaceObject.store);
-    const selectedBlockClientIds = getSelectedBlockClientIds();
-    return {
-      clientIds: selectedBlockClientIds,
-      blocks: getBlocksByClientId(selectedBlockClientIds)
-    };
-  }, []); // Allow converting a single template part to standard blocks.
-
-  if (blocks.length === 1 && ((_blocks$ = blocks[0]) === null || _blocks$ === void 0 ? void 0 : _blocks$.name) === 'core/template-part') {
-    return (0,external_wp_element_namespaceObject.createElement)(ConvertToRegularBlocks, {
-      clientId: clientIds[0]
-    });
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(ConvertToTemplatePart, {
-    clientIds: clientIds,
-    blocks: blocks
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pencil.js
-
-
-/**
- * WordPress dependencies
- */
-
-const pencil = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M20.1 5.1L16.9 2 6.2 12.7l-1.3 4.4 4.5-1.3L20.1 5.1zM4 20.8h8v-1.5H4v1.5z"
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+
+
+
+const SiteHub = (0,external_wp_element_namespaceObject.memo)((0,external_wp_element_namespaceObject.forwardRef)(({
+  isTransparent
+}, ref) => {
+  const {
+    dashboardLink,
+    homeUrl,
+    siteTitle
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getSettings
+    } = lock_unlock_unlock(select(store));
+    const {
+      getSite,
+      getUnstableBase // Site index.
+    } = select(external_wp_coreData_namespaceObject.store);
+    const _site = getSite();
+    return {
+      dashboardLink: getSettings().__experimentalDashboardLink || 'index.php',
+      homeUrl: getUnstableBase()?.home,
+      siteTitle: !_site?.title && !!_site?.url ? (0,external_wp_url_namespaceObject.filterURLForDisplay)(_site?.url) : _site?.title
+    };
+  }, []);
+  const {
+    open: openCommandCenter
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_commands_namespaceObject.store);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    className: "edit-site-site-hub",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "flex-start",
+      spacing: "0",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: dist_clsx('edit-site-site-hub__view-mode-toggle-container', {
+          'has-transparent-background': isTransparent
+        }),
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          ref: ref,
+          href: dashboardLink,
+          label: (0,external_wp_i18n_namespaceObject.__)('Go to the Dashboard'),
+          className: "edit-site-layout__view-mode-toggle",
+          style: {
+            transform: 'scale(0.5)',
+            borderRadius: 4
+          },
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(site_icon, {
+            className: "edit-site-layout__view-mode-toggle-icon"
+          })
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          className: "edit-site-site-hub__title",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            variant: "link",
+            href: homeUrl,
+            target: "_blank",
+            label: (0,external_wp_i18n_namespaceObject.__)('View site (opens in a new tab)'),
+            children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle)
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+          spacing: 0,
+          expanded: false,
+          className: "edit-site-site-hub__actions",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            className: "edit-site-site-hub_toggle-command-center",
+            icon: library_search,
+            onClick: () => openCommandCenter(),
+            label: (0,external_wp_i18n_namespaceObject.__)('Open command palette'),
+            shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('k')
+          })
+        })]
+      })]
+    })
+  });
 }));
-/* harmony default export */ var library_pencil = (pencil);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/edit.js
-/**
- * Internal dependencies
- */
-
-/* harmony default export */ var edit = (library_pencil);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigate-to-link/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-function NavigateToLink(_ref) {
-  let {
-    type,
-    id,
-    activePage,
-    onActivePageChange
-  } = _ref;
-  const post = (0,external_wp_data_namespaceObject.useSelect)(select => type && id && type !== 'URL' && select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', type, id), [type, id]);
-  const onClick = (0,external_wp_element_namespaceObject.useMemo)(() => {
-    if (!(post !== null && post !== void 0 && post.link)) return null;
-    const path = (0,external_wp_url_namespaceObject.getPathAndQueryString)(post.link);
-    if (path === (activePage === null || activePage === void 0 ? void 0 : activePage.path)) return null;
-    return () => onActivePageChange({
-      type,
-      slug: post.slug,
-      path,
-      context: {
-        postType: post.type,
-        postId: post.id
-      }
-    });
-  }, [post, activePage === null || activePage === void 0 ? void 0 : activePage.path, onActivePageChange]);
-  return onClick && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    icon: edit,
-    label: (0,external_wp_i18n_namespaceObject.__)('Edit Page Template'),
-    onClick: onClick
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/block-inspector-button.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function BlockInspectorButton(_ref) {
-  let {
-    onClick = () => {}
-  } = _ref;
-  const {
-    shortcut,
-    isBlockInspectorOpen
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
-    shortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getShortcutRepresentation('core/edit-site/toggle-block-settings-sidebar'),
-    isBlockInspectorOpen: select(store).getActiveComplementaryArea(store_store.name) === SIDEBAR_BLOCK
-  }), []);
-  const {
-    enableComplementaryArea,
-    disableComplementaryArea
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
-  const label = isBlockInspectorOpen ? (0,external_wp_i18n_namespaceObject.__)('Hide more settings') : (0,external_wp_i18n_namespaceObject.__)('Show more settings');
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-    onClick: () => {
-      if (isBlockInspectorOpen) {
-        disableComplementaryArea(STORE_NAME);
-        (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Block settings closed'));
-      } else {
-        enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK);
-        (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Additional settings are now available in the Editor block settings sidebar'));
-      } // Close dropdown menu.
-
-
-      onClick();
-    },
-    shortcut: shortcut
-  }, label);
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/edit-template-part-menu-button/index.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function EditTemplatePartMenuButton() {
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, null, _ref => {
-    let {
-      selectedClientIds,
-      onClose
-    } = _ref;
-    return (0,external_wp_element_namespaceObject.createElement)(EditTemplatePartMenuItem, {
-      selectedClientId: selectedClientIds[0],
-      onClose: onClose
-    });
-  });
-}
-
-function EditTemplatePartMenuItem(_ref2) {
-  let {
-    selectedClientId,
-    onClose
-  } = _ref2;
-  const {
-    params
-  } = useLocation();
-  const selectedTemplatePart = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const block = select(external_wp_blockEditor_namespaceObject.store).getBlock(selectedClientId);
-
-    if (block && (0,external_wp_blocks_namespaceObject.isTemplatePart)(block)) {
-      const {
-        theme,
-        slug
-      } = block.attributes;
-      return select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', 'wp_template_part', // Ideally this should be an official public API.
-      `${theme}//${slug}`);
-    }
-  }, [selectedClientId]);
-  const linkProps = useLink({
-    postId: selectedTemplatePart === null || selectedTemplatePart === void 0 ? void 0 : selectedTemplatePart.id,
-    postType: selectedTemplatePart === null || selectedTemplatePart === void 0 ? void 0 : selectedTemplatePart.type
-  }, {
-    fromTemplateId: params.postId
-  });
-
-  if (!selectedTemplatePart) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, extends_extends({}, linkProps, {
-    onClick: event => {
-      linkProps.onClick(event);
-      onClose();
-    }
-  }),
-  /* translators: %s: template part title */
-  (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Edit %s'), selectedTemplatePart.slug));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/arrow-left.js
-
-
-/**
- * WordPress dependencies
- */
-
-const arrowLeft = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M20 10.8H6.7l4.1-4.5-1.1-1.1-5.8 6.3 5.8 5.8 1.1-1.1-4-3.9H20z"
+/* harmony default export */ const site_hub = (SiteHub);
+const SiteHubMobile = (0,external_wp_element_namespaceObject.memo)((0,external_wp_element_namespaceObject.forwardRef)(({
+  isTransparent
+}, ref) => {
+  const history = useHistory();
+  const {
+    navigate
+  } = (0,external_wp_element_namespaceObject.useContext)(SidebarNavigationContext);
+  const {
+    homeUrl,
+    siteTitle
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getSite,
+      getUnstableBase // Site index.
+    } = select(external_wp_coreData_namespaceObject.store);
+    const _site = getSite();
+    return {
+      homeUrl: getUnstableBase()?.home,
+      siteTitle: !_site?.title && !!_site?.url ? (0,external_wp_url_namespaceObject.filterURLForDisplay)(_site?.url) : _site?.title
+    };
+  }, []);
+  const {
+    open: openCommandCenter
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_commands_namespaceObject.store);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    className: "edit-site-site-hub",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "flex-start",
+      spacing: "0",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: dist_clsx('edit-site-site-hub__view-mode-toggle-container', {
+          'has-transparent-background': isTransparent
+        }),
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          ref: ref,
+          label: (0,external_wp_i18n_namespaceObject.__)('Go to Site Editor'),
+          className: "edit-site-layout__view-mode-toggle",
+          style: {
+            transform: 'scale(0.5)',
+            borderRadius: 4
+          },
+          onClick: () => {
+            history.push({});
+            navigate('back');
+          },
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(site_icon, {
+            className: "edit-site-layout__view-mode-toggle-icon"
+          })
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          className: "edit-site-site-hub__title",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            variant: "link",
+            href: homeUrl,
+            target: "_blank",
+            label: (0,external_wp_i18n_namespaceObject.__)('View site (opens in a new tab)'),
+            children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle)
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+          spacing: 0,
+          expanded: false,
+          className: "edit-site-site-hub__actions",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            className: "edit-site-site-hub_toggle-command-center",
+            icon: library_search,
+            onClick: () => openCommandCenter(),
+            label: (0,external_wp_i18n_namespaceObject.__)('Open command palette'),
+            shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('k')
+          })
+        })]
+      })]
+    })
+  });
 }));
-/* harmony default export */ var arrow_left = (arrowLeft);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/back-button.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function BackButton() {
-  var _location$state;
-
-  const location = useLocation();
-  const history = useHistory();
-  const isTemplatePart = location.params.postType === 'wp_template_part';
-  const previousTemplateId = (_location$state = location.state) === null || _location$state === void 0 ? void 0 : _location$state.fromTemplateId;
-
-  if (!isTemplatePart || !previousTemplateId) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    className: "edit-site-visual-editor__back-button",
-    icon: arrow_left,
-    onClick: () => {
-      history.back();
-    }
-  }, (0,external_wp_i18n_namespaceObject.__)('Back'));
-}
-
-/* harmony default export */ var back_button = (BackButton);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/resize-handle.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-const DELTA_DISTANCE = 20; // The distance to resize per keydown in pixels.
-
-function ResizeHandle(_ref) {
-  let {
-    direction,
-    resizeWidthBy
-  } = _ref;
-
-  function handleKeyDown(event) {
-    const {
-      keyCode
-    } = event;
-
-    if (direction === 'left' && keyCode === external_wp_keycodes_namespaceObject.LEFT || direction === 'right' && keyCode === external_wp_keycodes_namespaceObject.RIGHT) {
-      resizeWidthBy(DELTA_DISTANCE);
-    } else if (direction === 'left' && keyCode === external_wp_keycodes_namespaceObject.RIGHT || direction === 'right' && keyCode === external_wp_keycodes_namespaceObject.LEFT) {
-      resizeWidthBy(-DELTA_DISTANCE);
-    }
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("button", {
-    className: `resizable-editor__drag-handle is-${direction}`,
-    "aria-label": (0,external_wp_i18n_namespaceObject.__)('Drag to resize'),
-    "aria-describedby": `resizable-editor__resize-help-${direction}`,
-    onKeyDown: handleKeyDown
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
-    id: `resizable-editor__resize-help-${direction}`
-  }, (0,external_wp_i18n_namespaceObject.__)('Use left and right arrow keys to resize the canvas.')));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/resizable-editor.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-const DEFAULT_STYLES = {
-  width: '100%',
-  height: '100%'
-}; // Removes the inline styles in the drag handles.
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/resizable-frame/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+// Removes the inline styles in the drag handles.
+
+
 
 const HANDLE_STYLES_OVERRIDE = {
   position: undefined,
@@ -10918,512 +9828,315 @@
   left: undefined
 };
 
-function ResizableEditor(_ref) {
-  let {
-    enableResizing,
-    settings,
-    children,
-    ...props
-  } = _ref;
-  const deviceType = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).__experimentalGetPreviewDeviceType(), []);
-  const deviceStyles = (0,external_wp_blockEditor_namespaceObject.__experimentalUseResizeCanvas)(deviceType);
-  const [width, setWidth] = (0,external_wp_element_namespaceObject.useState)(DEFAULT_STYLES.width);
-  const [height, setHeight] = (0,external_wp_element_namespaceObject.useState)(DEFAULT_STYLES.height);
-  const iframeRef = (0,external_wp_element_namespaceObject.useRef)();
-  const mouseMoveTypingResetRef = (0,external_wp_blockEditor_namespaceObject.__unstableUseMouseMoveTypingReset)();
-  const ref = (0,external_wp_compose_namespaceObject.useMergeRefs)([iframeRef, mouseMoveTypingResetRef]);
-  (0,external_wp_element_namespaceObject.useEffect)(function autoResizeIframeHeight() {
-    const iframe = iframeRef.current;
-
-    if (!iframe || !enableResizing) {
-      return;
-    }
-
-    let animationFrame = null;
-
-    function resizeHeight() {
-      if (!animationFrame) {
-        // Throttle the updates on animation frame.
-        animationFrame = iframe.contentWindow.requestAnimationFrame(() => {
-          setHeight(iframe.contentDocument.documentElement.scrollHeight);
-          animationFrame = null;
+// The minimum width of the frame (in px) while resizing.
+const FRAME_MIN_WIDTH = 320;
+// The reference width of the frame (in px) used to calculate the aspect ratio.
+const FRAME_REFERENCE_WIDTH = 1300;
+// 9 : 19.5 is the target aspect ratio enforced (when possible) while resizing.
+const FRAME_TARGET_ASPECT_RATIO = 9 / 19.5;
+// The minimum distance (in px) between the frame resize handle and the
+// viewport's edge. If the frame is resized to be closer to the viewport's edge
+// than this distance, then "canvas mode" will be enabled.
+const SNAP_TO_EDIT_CANVAS_MODE_THRESHOLD = 200;
+// Default size for the `frameSize` state.
+const INITIAL_FRAME_SIZE = {
+  width: '100%',
+  height: '100%'
+};
+function calculateNewHeight(width, initialAspectRatio) {
+  const lerp = (a, b, amount) => {
+    return a + (b - a) * amount;
+  };
+
+  // Calculate the intermediate aspect ratio based on the current width.
+  const lerpFactor = 1 - Math.max(0, Math.min(1, (width - FRAME_MIN_WIDTH) / (FRAME_REFERENCE_WIDTH - FRAME_MIN_WIDTH)));
+
+  // Calculate the height based on the intermediate aspect ratio
+  // ensuring the frame arrives at the target aspect ratio.
+  const intermediateAspectRatio = lerp(initialAspectRatio, FRAME_TARGET_ASPECT_RATIO, lerpFactor);
+  return width / intermediateAspectRatio;
+}
+function ResizableFrame({
+  isFullWidth,
+  isOversized,
+  setIsOversized,
+  isReady,
+  children,
+  /** The default (unresized) width/height of the frame, based on the space availalbe in the viewport. */
+  defaultSize,
+  innerContentStyle
+}) {
+  const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
+  const [frameSize, setFrameSize] = (0,external_wp_element_namespaceObject.useState)(INITIAL_FRAME_SIZE);
+  // The width of the resizable frame when a new resize gesture starts.
+  const [startingWidth, setStartingWidth] = (0,external_wp_element_namespaceObject.useState)();
+  const [isResizing, setIsResizing] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [shouldShowHandle, setShouldShowHandle] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [resizeRatio, setResizeRatio] = (0,external_wp_element_namespaceObject.useState)(1);
+  const canvasMode = (0,external_wp_data_namespaceObject.useSelect)(select => lock_unlock_unlock(select(store)).getCanvasMode(), []);
+  const {
+    setCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const FRAME_TRANSITION = {
+    type: 'tween',
+    duration: isResizing ? 0 : 0.5
+  };
+  const frameRef = (0,external_wp_element_namespaceObject.useRef)(null);
+  const resizableHandleHelpId = (0,external_wp_compose_namespaceObject.useInstanceId)(ResizableFrame, 'edit-site-resizable-frame-handle-help');
+  const defaultAspectRatio = defaultSize.width / defaultSize.height;
+  const handleResizeStart = (_event, _direction, ref) => {
+    // Remember the starting width so we don't have to get `ref.offsetWidth` on
+    // every resize event thereafter, which will cause layout thrashing.
+    setStartingWidth(ref.offsetWidth);
+    setIsResizing(true);
+  };
+
+  // Calculate the frame size based on the window width as its resized.
+  const handleResize = (_event, _direction, _ref, delta) => {
+    const normalizedDelta = delta.width / resizeRatio;
+    const deltaAbs = Math.abs(normalizedDelta);
+    const maxDoubledDelta = delta.width < 0 // is shrinking
+    ? deltaAbs : (defaultSize.width - startingWidth) / 2;
+    const deltaToDouble = Math.min(deltaAbs, maxDoubledDelta);
+    const doubleSegment = deltaAbs === 0 ? 0 : deltaToDouble / deltaAbs;
+    const singleSegment = 1 - doubleSegment;
+    setResizeRatio(singleSegment + doubleSegment * 2);
+    const updatedWidth = startingWidth + delta.width;
+    setIsOversized(updatedWidth > defaultSize.width);
+
+    // Width will be controlled by the library (via `resizeRatio`),
+    // so we only need to update the height.
+    setFrameSize({
+      height: isOversized ? '100%' : calculateNewHeight(updatedWidth, defaultAspectRatio)
+    });
+  };
+  const handleResizeStop = (_event, _direction, ref) => {
+    setIsResizing(false);
+    if (!isOversized) {
+      return;
+    }
+    setIsOversized(false);
+    const remainingWidth = ref.ownerDocument.documentElement.offsetWidth - ref.offsetWidth;
+    if (remainingWidth > SNAP_TO_EDIT_CANVAS_MODE_THRESHOLD) {
+      // Reset the initial aspect ratio if the frame is resized slightly
+      // above the sidebar but not far enough to trigger full screen.
+      setFrameSize(INITIAL_FRAME_SIZE);
+    } else {
+      // Trigger full screen if the frame is resized far enough to the left.
+      setCanvasMode('edit');
+    }
+  };
+
+  // Handle resize by arrow keys
+  const handleResizableHandleKeyDown = event => {
+    if (!['ArrowLeft', 'ArrowRight'].includes(event.key)) {
+      return;
+    }
+    event.preventDefault();
+    const step = 20 * (event.shiftKey ? 5 : 1);
+    const delta = step * (event.key === 'ArrowLeft' ? 1 : -1);
+    const newWidth = Math.min(Math.max(FRAME_MIN_WIDTH, frameRef.current.resizable.offsetWidth + delta), defaultSize.width);
+    setFrameSize({
+      width: newWidth,
+      height: calculateNewHeight(newWidth, defaultAspectRatio)
+    });
+  };
+  const frameAnimationVariants = {
+    default: {
+      flexGrow: 0,
+      height: frameSize.height
+    },
+    fullWidth: {
+      flexGrow: 1,
+      height: frameSize.height
+    }
+  };
+  const resizeHandleVariants = {
+    hidden: {
+      opacity: 0,
+      left: 0
+    },
+    visible: {
+      opacity: 1,
+      left: -14 // Account for the handle's width.
+    },
+    active: {
+      opacity: 1,
+      left: -14,
+      // Account for the handle's width.
+      scaleY: 1.3
+    }
+  };
+  const currentResizeHandleVariant = (() => {
+    if (isResizing) {
+      return 'active';
+    }
+    return shouldShowHandle ? 'visible' : 'hidden';
+  })();
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ResizableBox, {
+    as: external_wp_components_namespaceObject.__unstableMotion.div,
+    ref: frameRef,
+    initial: false,
+    variants: frameAnimationVariants,
+    animate: isFullWidth ? 'fullWidth' : 'default',
+    onAnimationComplete: definition => {
+      if (definition === 'fullWidth') {
+        setFrameSize({
+          width: '100%',
+          height: '100%'
         });
       }
-    }
-
-    let resizeObserver;
-
-    function registerObserver() {
-      var _resizeObserver;
-
-      (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : _resizeObserver.disconnect();
-      resizeObserver = new iframe.contentWindow.ResizeObserver(resizeHeight); // Observing the <html> rather than the <body> because the latter
-      // gets destroyed and remounted after initialization in <Iframe>.
-
-      resizeObserver.observe(iframe.contentDocument.documentElement);
-      resizeHeight();
-    } // This is only required in Firefox for some unknown reasons.
-
-
-    iframe.addEventListener('load', registerObserver); // This is required in Chrome and Safari.
-
-    registerObserver();
-    return () => {
-      var _iframe$contentWindow, _resizeObserver2;
-
-      (_iframe$contentWindow = iframe.contentWindow) === null || _iframe$contentWindow === void 0 ? void 0 : _iframe$contentWindow.cancelAnimationFrame(animationFrame);
-      (_resizeObserver2 = resizeObserver) === null || _resizeObserver2 === void 0 ? void 0 : _resizeObserver2.disconnect();
-      iframe.removeEventListener('load', registerObserver);
-    };
-  }, [enableResizing]);
-  const resizeWidthBy = (0,external_wp_element_namespaceObject.useCallback)(deltaPixels => {
-    if (iframeRef.current) {
-      setWidth(iframeRef.current.offsetWidth + deltaPixels);
-    }
-  }, []);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ResizableBox, {
-    size: {
-      width,
-      height
-    },
-    onResizeStop: (event, direction, element) => {
-      setWidth(element.style.width);
-    },
-    minWidth: 300,
-    maxWidth: "100%",
-    maxHeight: "100%",
+    },
+    whileHover: canvasMode === 'view' ? {
+      scale: 1.005,
+      transition: {
+        duration: disableMotion ? 0 : 0.5,
+        ease: 'easeOut'
+      }
+    } : {},
+    transition: FRAME_TRANSITION,
+    size: frameSize,
     enable: {
-      right: enableResizing,
-      left: enableResizing
-    },
-    showHandle: enableResizing // The editor is centered horizontally, resizing it only
-    // moves half the distance. Hence double the ratio to correctly
-    // align the cursor to the resizer handle.
-    ,
-    resizeRatio: 2,
-    handleComponent: {
-      left: (0,external_wp_element_namespaceObject.createElement)(ResizeHandle, {
-        direction: "left",
-        resizeWidthBy: resizeWidthBy
-      }),
-      right: (0,external_wp_element_namespaceObject.createElement)(ResizeHandle, {
-        direction: "right",
-        resizeWidthBy: resizeWidthBy
-      })
-    },
+      top: false,
+      right: false,
+      bottom: false,
+      // Resizing will be disabled until the editor content is loaded.
+      left: isReady,
+      topRight: false,
+      bottomRight: false,
+      bottomLeft: false,
+      topLeft: false
+    },
+    resizeRatio: resizeRatio,
     handleClasses: undefined,
     handleStyles: {
       left: HANDLE_STYLES_OVERRIDE,
       right: HANDLE_STYLES_OVERRIDE
-    }
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableIframe, extends_extends({
-    style: enableResizing ? undefined : deviceStyles,
-    head: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, {
-      styles: settings.styles
-    }), (0,external_wp_element_namespaceObject.createElement)("style", null, // Forming a "block formatting context" to prevent margin collapsing.
-    // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
-    `.is-root-container { display: flow-root; }`), enableResizing && (0,external_wp_element_namespaceObject.createElement)("style", null, // Force the <html> and <body>'s heights to fit the content.
-    `html, body { height: -moz-fit-content !important; height: fit-content !important; min-height: 0 !important; }`, // Some themes will have `min-height: 100vh` for the root container,
-    // which isn't a requirement in auto resize mode.
-    `.is-root-container { min-height: 0 !important; }`)),
-    assets: settings.__unstableResolvedAssets,
-    ref: ref,
-    name: "editor-canvas",
-    className: "edit-site-visual-editor__editor-canvas"
-  }, props), settings.svgFilters, children));
-}
-
-/* harmony default export */ var resizable_editor = (ResizableEditor);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/index.js
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-
-const LAYOUT = {
-  type: 'default',
-  // At the root level of the site editor, no alignments should be allowed.
-  alignments: []
-};
-function BlockEditor(_ref) {
-  var _storedSettings$__exp, _storedSettings$__exp2;
-
-  let {
-    setIsInserterOpen
-  } = _ref;
-  const {
-    storedSettings,
-    templateType,
-    templateId,
-    page
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const {
-      getSettings,
-      getEditedPostType,
-      getEditedPostId,
-      getPage
-    } = select(store_store);
-    return {
-      storedSettings: getSettings(setIsInserterOpen),
-      templateType: getEditedPostType(),
-      templateId: getEditedPostId(),
-      page: getPage()
-    };
-  }, [setIsInserterOpen]);
-  const settingsBlockPatterns = (_storedSettings$__exp = storedSettings.__experimentalAdditionalBlockPatterns) !== null && _storedSettings$__exp !== void 0 ? _storedSettings$__exp : // WP 6.0
-  storedSettings.__experimentalBlockPatterns; // WP 5.9
-
-  const settingsBlockPatternCategories = (_storedSettings$__exp2 = storedSettings.__experimentalAdditionalBlockPatternCategories) !== null && _storedSettings$__exp2 !== void 0 ? _storedSettings$__exp2 : // WP 6.0
-  storedSettings.__experimentalBlockPatternCategories; // WP 5.9
-
-  const {
-    restBlockPatterns,
-    restBlockPatternCategories
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
-    restBlockPatterns: select(external_wp_coreData_namespaceObject.store).getBlockPatterns(),
-    restBlockPatternCategories: select(external_wp_coreData_namespaceObject.store).getBlockPatternCategories()
-  }), []);
-  const blockPatterns = (0,external_wp_element_namespaceObject.useMemo)(() => (0,external_lodash_namespaceObject.unionBy)(settingsBlockPatterns, restBlockPatterns, 'name'), [settingsBlockPatterns, restBlockPatterns]);
-  const blockPatternCategories = (0,external_wp_element_namespaceObject.useMemo)(() => (0,external_lodash_namespaceObject.unionBy)(settingsBlockPatternCategories, restBlockPatternCategories, 'name'), [settingsBlockPatternCategories, restBlockPatternCategories]);
-  const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({ ...(0,external_lodash_namespaceObject.omit)(storedSettings, ['__experimentalAdditionalBlockPatterns', '__experimentalAdditionalBlockPatternCategories']),
-    __experimentalBlockPatterns: blockPatterns,
-    __experimentalBlockPatternCategories: blockPatternCategories
-  }), [storedSettings, blockPatterns, blockPatternCategories]);
-  const [blocks, onInput, onChange] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', templateType);
-  const {
-    setPage
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const {
-    enableComplementaryArea
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
-  const openNavigationSidebar = (0,external_wp_element_namespaceObject.useCallback)(() => {
-    enableComplementaryArea('core/edit-site', 'edit-site/navigation-menu');
-  }, [enableComplementaryArea]);
-  const contentRef = (0,external_wp_element_namespaceObject.useRef)();
-  const mergedRefs = (0,external_wp_compose_namespaceObject.useMergeRefs)([contentRef, (0,external_wp_blockEditor_namespaceObject.__unstableUseTypingObserver)()]);
-  const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<');
-  const {
-    clearSelectedBlock
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
-  const isTemplatePart = templateType === 'wp_template_part';
-  const hasBlocks = blocks.length !== 0;
-
-  const NavMenuSidebarToggle = () => (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToolbarGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToolbarButton, {
-    className: "components-toolbar__control",
-    label: (0,external_wp_i18n_namespaceObject.__)('Open list view'),
-    onClick: openNavigationSidebar,
-    icon: list_view
-  })); // Conditionally include NavMenu sidebar in Plugin only.
-  // Optimise for dead code elimination.
-  // See https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/feature-flags.md#dead-code-elimination.
-
-
-  let MaybeNavMenuSidebarToggle = external_wp_element_namespaceObject.Fragment;
-
-  if (false) {}
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, {
-    settings: settings,
-    value: blocks,
-    onInput: onInput,
-    onChange: onChange,
-    useSubRegistry: false
-  }, (0,external_wp_element_namespaceObject.createElement)(EditTemplatePartMenuButton, null), (0,external_wp_element_namespaceObject.createElement)(TemplatePartConverter, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalLinkControl.ViewerFill, null, (0,external_wp_element_namespaceObject.useCallback)(fillProps => (0,external_wp_element_namespaceObject.createElement)(NavigateToLink, extends_extends({}, fillProps, {
-    activePage: page,
-    onActivePageChange: setPage
-  })), [page])), (0,external_wp_element_namespaceObject.createElement)(SidebarInspectorFill, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockInspector, null)), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockTools, {
-    className: classnames_default()('edit-site-visual-editor', {
-      'is-focus-mode': isTemplatePart
+    },
+    minWidth: FRAME_MIN_WIDTH,
+    maxWidth: isFullWidth ? '100%' : '150%',
+    maxHeight: "100%",
+    onFocus: () => setShouldShowHandle(true),
+    onBlur: () => setShouldShowHandle(false),
+    onMouseOver: () => setShouldShowHandle(true),
+    onMouseOut: () => setShouldShowHandle(false),
+    handleComponent: {
+      left: canvasMode === 'view' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, {
+          text: (0,external_wp_i18n_namespaceObject.__)('Drag to resize'),
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.button, {
+            role: "separator",
+            "aria-orientation": "vertical",
+            className: dist_clsx('edit-site-resizable-frame__handle', {
+              'is-resizing': isResizing
+            }),
+            variants: resizeHandleVariants,
+            animate: currentResizeHandleVariant,
+            "aria-label": (0,external_wp_i18n_namespaceObject.__)('Drag to resize'),
+            "aria-describedby": resizableHandleHelpId,
+            "aria-valuenow": frameRef.current?.resizable?.offsetWidth || undefined,
+            "aria-valuemin": FRAME_MIN_WIDTH,
+            "aria-valuemax": defaultSize.width,
+            onKeyDown: handleResizableHandleKeyDown,
+            initial: "hidden",
+            exit: "hidden",
+            whileFocus: "active",
+            whileHover: "active"
+          }, "handle")
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          hidden: true,
+          id: resizableHandleHelpId,
+          children: (0,external_wp_i18n_namespaceObject.__)('Use left and right arrow keys to resize the canvas. Hold shift to resize in larger increments.')
+        })]
+      })
+    },
+    onResizeStart: handleResizeStart,
+    onResize: handleResize,
+    onResizeStop: handleResizeStop,
+    className: dist_clsx('edit-site-resizable-frame__inner', {
+      'is-resizing': isResizing
     }),
-    __unstableContentRef: contentRef,
-    onClick: event => {
-      // Clear selected block when clicking on the gray background.
-      if (event.target === event.currentTarget) {
-        clearSelectedBlock();
-      }
-    }
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockEditorKeyboardShortcuts.Register, null), (0,external_wp_element_namespaceObject.createElement)(back_button, null), (0,external_wp_element_namespaceObject.createElement)(resizable_editor // Reinitialize the editor and reset the states when the template changes.
-  , {
-    key: templateId,
-    enableResizing: isTemplatePart && // Disable resizing in mobile viewport.
-    !isMobileViewport,
-    settings: settings,
-    contentRef: mergedRefs
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockList, {
-    className: "edit-site-block-editor__block-list wp-site-blocks",
-    __experimentalLayout: LAYOUT,
-    renderAppender: isTemplatePart && hasBlocks ? false : undefined
-  })), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableBlockSettingsMenuFirstItem, null, _ref2 => {
-    let {
-      onClose
-    } = _ref2;
-    return (0,external_wp_element_namespaceObject.createElement)(BlockInspectorButton, {
-      onClick: onClose
-    });
-  }), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableBlockToolbarLastItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableBlockNameContext.Consumer, null, blockName => blockName === 'core/navigation' && (0,external_wp_element_namespaceObject.createElement)(MaybeNavMenuSidebarToggle, null)))), (0,external_wp_element_namespaceObject.createElement)(external_wp_reusableBlocks_namespaceObject.ReusableBlocksMenuItems, null));
-}
-
-// EXTERNAL MODULE: ./node_modules/react-autosize-textarea/lib/index.js
-var lib = __webpack_require__(773);
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/code-editor/code-editor-text-area.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-function CodeEditorTextArea(_ref) {
-  let {
-    value,
-    onChange,
-    onInput
-  } = _ref;
-  const [stateValue, setStateValue] = (0,external_wp_element_namespaceObject.useState)(value);
-  const [isDirty, setIsDirty] = (0,external_wp_element_namespaceObject.useState)(false);
-  const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(CodeEditorTextArea);
-
-  if (!isDirty && stateValue !== value) {
-    setStateValue(value);
-  }
-  /**
-   * Handles a textarea change event to notify the onChange prop callback and
-   * reflect the new value in the component's own state. This marks the start
-   * of the user's edits, if not already changed, preventing future props
-   * changes to value from replacing the rendered value. This is expected to
-   * be followed by a reset to dirty state via `stopEditing`.
-   *
-   * @see stopEditing
-   *
-   * @param {Event} event Change event.
-   */
-
-
-  const onChangeHandler = event => {
-    const newValue = event.target.value;
-    onInput(newValue);
-    setStateValue(newValue);
-    setIsDirty(true);
-  };
-  /**
-   * Function called when the user has completed their edits, responsible for
-   * ensuring that changes, if made, are surfaced to the onPersist prop
-   * callback and resetting dirty state.
-   */
-
-
-  const stopEditing = () => {
-    if (isDirty) {
-      onChange(stateValue);
-      setIsDirty(false);
-    }
-  };
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
-    as: "label",
-    htmlFor: `code-editor-text-area-${instanceId}`
-  }, (0,external_wp_i18n_namespaceObject.__)('Type text or HTML')), (0,external_wp_element_namespaceObject.createElement)(lib/* default */.Z, {
-    autoComplete: "off",
-    dir: "auto",
-    value: stateValue,
-    onChange: onChangeHandler,
-    onBlur: stopEditing,
-    className: "edit-site-code-editor-text-area",
-    id: `code-editor-text-area-${instanceId}`,
-    placeholder: (0,external_wp_i18n_namespaceObject.__)('Start writing with text or HTML')
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/code-editor/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function CodeEditor() {
-  const {
-    templateType,
-    shortcut
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const {
-      getEditedPostType
-    } = select(store_store);
-    const {
-      getShortcutRepresentation
-    } = select(external_wp_keyboardShortcuts_namespaceObject.store);
-    return {
-      templateType: getEditedPostType(),
-      shortcut: getShortcutRepresentation('core/edit-site/toggle-mode')
-    };
-  }, []);
-  const [contentStructure, setContent] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', templateType, 'content');
-  const [blocks,, onChange] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', templateType);
-  const content = contentStructure instanceof Function ? contentStructure({
-    blocks
-  }) : contentStructure;
-  const {
-    switchEditorMode
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  return (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-code-editor"
-  }, (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-code-editor__toolbar"
-  }, (0,external_wp_element_namespaceObject.createElement)("h2", null, (0,external_wp_i18n_namespaceObject.__)('Editing code')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    variant: "tertiary",
-    onClick: () => switchEditorMode('visual'),
-    shortcut: shortcut
-  }, (0,external_wp_i18n_namespaceObject.__)('Exit code editor'))), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-code-editor__body"
-  }, (0,external_wp_element_namespaceObject.createElement)(CodeEditorTextArea, {
-    value: content,
-    onChange: newContent => {
-      onChange((0,external_wp_blocks_namespaceObject.parse)(newContent), {
-        selection: undefined
-      });
-    },
-    onInput: setContent
-  })));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcuts/index.js
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-function KeyboardShortcuts(_ref) {
-  let {
-    openEntitiesSavedStates
-  } = _ref;
-  const {
-    __experimentalGetDirtyEntityRecords,
-    isSavingEntityRecord
-  } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store);
-  const {
-    getEditorMode
-  } = (0,external_wp_data_namespaceObject.useSelect)(store_store);
-  const isListViewOpen = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).isListViewOpened(), []);
-  const isBlockInspectorOpen = (0,external_wp_data_namespaceObject.useSelect)(select => select(store).getActiveComplementaryArea(store_store.name) === SIDEBAR_BLOCK, []);
-  const {
-    redo,
-    undo
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
-  const {
-    setIsListViewOpened,
-    switchEditorMode
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const {
-    enableComplementaryArea,
-    disableComplementaryArea
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
-  (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/save', event => {
-    event.preventDefault();
-
-    const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
-
-    const isDirty = !!dirtyEntityRecords.length;
-    const isSaving = dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key));
-
-    if (!isSaving && isDirty) {
-      openEntitiesSavedStates();
-    }
-  });
-  (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/undo', event => {
-    undo();
-    event.preventDefault();
-  });
-  (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/redo', event => {
-    redo();
-    event.preventDefault();
-  });
-  (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/toggle-list-view', () => {
-    setIsListViewOpened(!isListViewOpen);
-  });
-  (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/toggle-block-settings-sidebar', event => {
-    // This shortcut has no known clashes, but use preventDefault to prevent any
-    // obscure shortcuts from triggering.
-    event.preventDefault();
-
-    if (isBlockInspectorOpen) {
-      disableComplementaryArea(STORE_NAME);
-    } else {
-      enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK);
-    }
-  });
-  (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/toggle-mode', () => {
-    switchEditorMode(getEditorMode() === 'visual' ? 'text' : 'visual');
-  });
-  return null;
-}
+    showHandle: false // Do not show the default handle, as we're using a custom one.
+    ,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-resizable-frame__inner-content",
+      style: innerContentStyle,
+      children: children
+    })
+  });
+}
+/* harmony default export */ const resizable_frame = (ResizableFrame);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  useLocation: use_sync_canvas_mode_with_url_useLocation,
+  useHistory: use_sync_canvas_mode_with_url_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function useSyncCanvasModeWithURL() {
+  const history = use_sync_canvas_mode_with_url_useHistory();
+  const {
+    params
+  } = use_sync_canvas_mode_with_url_useLocation();
+  const canvasMode = (0,external_wp_data_namespaceObject.useSelect)(select => lock_unlock_unlock(select(store)).getCanvasMode(), []);
+  const {
+    setCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const currentCanvasMode = (0,external_wp_element_namespaceObject.useRef)(canvasMode);
+  const {
+    canvas: canvasInUrl
+  } = params;
+  const currentCanvasInUrl = (0,external_wp_element_namespaceObject.useRef)(canvasInUrl);
+  const currentUrlParams = (0,external_wp_element_namespaceObject.useRef)(params);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    currentUrlParams.current = params;
+  }, [params]);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    currentCanvasMode.current = canvasMode;
+    if (canvasMode === 'init') {
+      return;
+    }
+    if (canvasMode === 'edit' && currentCanvasInUrl.current !== canvasMode) {
+      history.push({
+        ...currentUrlParams.current,
+        canvas: 'edit'
+      });
+    }
+    if (canvasMode === 'view' && currentCanvasInUrl.current !== undefined) {
+      history.push({
+        ...currentUrlParams.current,
+        canvas: undefined
+      });
+    }
+  }, [canvasMode, history]);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    currentCanvasInUrl.current = canvasInUrl;
+    if (canvasInUrl !== 'edit' && currentCanvasMode.current !== 'view') {
+      setCanvasMode('view');
+    } else if (canvasInUrl === 'edit' && currentCanvasMode.current !== 'edit') {
+      setCanvasMode('edit');
+    }
+  }, [canvasInUrl, setCanvasMode]);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcuts/register.js
+/**
+ * WordPress dependencies
+ */
+
+
+
 
 function KeyboardShortcutsRegister() {
   // Registering the shortcuts.
@@ -11440,1389 +10153,572 @@
         character: 's'
       }
     });
-    registerShortcut({
-      name: 'core/edit-site/undo',
-      category: 'global',
-      description: (0,external_wp_i18n_namespaceObject.__)('Undo your last changes.'),
-      keyCombination: {
-        modifier: 'primary',
-        character: 'z'
-      }
-    });
-    registerShortcut({
-      name: 'core/edit-site/redo',
-      category: 'global',
-      description: (0,external_wp_i18n_namespaceObject.__)('Redo your last undo.'),
-      keyCombination: {
-        modifier: 'primaryShift',
-        character: 'z'
-      }
-    });
-    registerShortcut({
-      name: 'core/edit-site/toggle-list-view',
-      category: 'global',
-      description: (0,external_wp_i18n_namespaceObject.__)('Open the block list view.'),
-      keyCombination: {
-        modifier: 'access',
-        character: 'o'
-      }
-    });
-    registerShortcut({
-      name: 'core/edit-site/toggle-block-settings-sidebar',
-      category: 'global',
-      description: (0,external_wp_i18n_namespaceObject.__)('Show or hide the block settings sidebar.'),
-      keyCombination: {
-        modifier: 'primaryShift',
-        character: ','
-      }
-    });
-    registerShortcut({
-      name: 'core/edit-site/keyboard-shortcuts',
-      category: 'main',
-      description: (0,external_wp_i18n_namespaceObject.__)('Display these keyboard shortcuts.'),
-      keyCombination: {
-        modifier: 'access',
-        character: 'h'
-      }
-    });
-    registerShortcut({
-      name: 'core/edit-site/next-region',
-      category: 'global',
-      description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the next part of the editor.'),
-      keyCombination: {
-        modifier: 'ctrl',
-        character: '`'
-      },
-      aliases: [{
-        modifier: 'access',
-        character: 'n'
-      }]
-    });
-    registerShortcut({
-      name: 'core/edit-site/previous-region',
-      category: 'global',
-      description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous part of the editor.'),
-      keyCombination: {
-        modifier: 'ctrlShift',
-        character: '`'
-      },
-      aliases: [{
-        modifier: 'access',
-        character: 'p'
-      }]
-    });
-    registerShortcut({
-      name: 'core/edit-site/toggle-mode',
-      category: 'global',
-      description: (0,external_wp_i18n_namespaceObject.__)('Switch between visual editor and code editor.'),
-      keyCombination: {
-        modifier: 'secondary',
-        character: 'm'
-      }
-    });
   }, [registerShortcut]);
   return null;
 }
-
-KeyboardShortcuts.Register = KeyboardShortcutsRegister;
-/* harmony default export */ var keyboard_shortcuts = (KeyboardShortcuts);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/url-query-controller/index.js
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function URLQueryController() {
-  const {
-    setTemplate,
-    setTemplatePart,
-    setPage
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const {
-    params: {
-      postId,
-      postType
-    }
-  } = useLocation(); // Set correct entity on page navigation.
-
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    if ('page' === postType || 'post' === postType) {
-      setPage({
-        context: {
-          postType,
-          postId
-        }
-      }); // Resolves correct template based on ID.
-    } else if ('wp_template' === postType) {
-      setTemplate(postId);
-    } else if ('wp_template_part' === postType) {
-      setTemplatePart(postId);
-    }
-  }, [postId, postType]);
+/* harmony default export */ const register = (KeyboardShortcutsRegister);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcuts/global.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+function KeyboardShortcutsGlobal() {
+  const {
+    __experimentalGetDirtyEntityRecords,
+    isSavingEntityRecord
+  } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store);
+  const {
+    hasNonPostEntityChanges
+  } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_editor_namespaceObject.store);
+  const {
+    getCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useSelect)(store));
+  const {
+    setIsSaveViewOpened
+  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
+  (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/save', event => {
+    event.preventDefault();
+    const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
+    const hasDirtyEntities = !!dirtyEntityRecords.length;
+    const isSaving = dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key));
+    const _hasNonPostEntityChanges = hasNonPostEntityChanges();
+    const isViewMode = getCanvasMode() === 'view';
+    if ((!hasDirtyEntities || !_hasNonPostEntityChanges || isSaving) && !isViewMode) {
+      return;
+    }
+    // At this point, we know that there are dirty entities, other than
+    // the edited post, and we're not in the process of saving, so open
+    // save view.
+    setIsSaveViewOpened(true);
+  });
   return null;
 }
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close.js
-
-
-/**
- * WordPress dependencies
- */
-
-const close_close = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  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"
-}));
-/* harmony default export */ var library_close = (close_close);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/secondary-sidebar/inserter-sidebar.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function InserterSidebar() {
-  const {
-    setIsInserterOpened
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const insertionPoint = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).__experimentalGetInsertionPoint(), []);
-  const isMobile = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<');
-  const TagName = !isMobile ? external_wp_components_namespaceObject.VisuallyHidden : 'div';
-  const [inserterDialogRef, inserterDialogProps] = (0,external_wp_compose_namespaceObject.__experimentalUseDialog)({
-    onClose: () => setIsInserterOpened(false),
-    focusOnMount: null
-  });
-  const libraryRef = (0,external_wp_element_namespaceObject.useRef)();
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    libraryRef.current.focusSearch();
-  }, []);
-  return (0,external_wp_element_namespaceObject.createElement)("div", extends_extends({
-    ref: inserterDialogRef
-  }, inserterDialogProps, {
-    className: "edit-site-editor__inserter-panel"
-  }), (0,external_wp_element_namespaceObject.createElement)(TagName, {
-    className: "edit-site-editor__inserter-panel-header"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    icon: library_close,
-    label: (0,external_wp_i18n_namespaceObject.__)('Close block inserter'),
-    onClick: () => setIsInserterOpened(false)
-  })), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-editor__inserter-panel-content"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalLibrary, {
-    showInserterHelpPanel: true,
-    shouldFocusBlock: isMobile,
-    rootClientId: insertionPoint.rootClientId,
-    __experimentalInsertionIndex: insertionPoint.insertionIndex,
-    __experimentalFilterValue: insertionPoint.filterValue,
-    ref: libraryRef
-  })));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/secondary-sidebar/list-view-sidebar.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function ListViewSidebar() {
-  const {
-    setIsListViewOpened
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const focusOnMountRef = (0,external_wp_compose_namespaceObject.useFocusOnMount)('firstElement');
-  const headerFocusReturnRef = (0,external_wp_compose_namespaceObject.useFocusReturn)();
-  const contentFocusReturnRef = (0,external_wp_compose_namespaceObject.useFocusReturn)();
-
-  function closeOnEscape(event) {
-    if (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE && !event.defaultPrevented) {
-      setIsListViewOpened(false);
-    }
-  }
-
-  const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(ListViewSidebar);
-  const labelId = `edit-site-editor__list-view-panel-label-${instanceId}`;
-  return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions
-    (0,external_wp_element_namespaceObject.createElement)("div", {
-      "aria-labelledby": labelId,
-      className: "edit-site-editor__list-view-panel",
-      onKeyDown: closeOnEscape
-    }, (0,external_wp_element_namespaceObject.createElement)("div", {
-      className: "edit-site-editor__list-view-panel-header",
-      ref: headerFocusReturnRef
-    }, (0,external_wp_element_namespaceObject.createElement)("strong", {
-      id: labelId
-    }, (0,external_wp_i18n_namespaceObject.__)('List View')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-      icon: close_small,
-      label: (0,external_wp_i18n_namespaceObject.__)('Close List View Sidebar'),
-      onClick: () => setIsListViewOpened(false)
-    })), (0,external_wp_element_namespaceObject.createElement)("div", {
-      className: "edit-site-editor__list-view-panel-content",
-      ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([contentFocusReturnRef, focusOnMountRef])
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalListView, {
-      showNestedBlocks: true,
-      __experimentalFeatures: true,
-      __experimentalPersistentListViewFeatures: true
-    })))
-  );
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/error-boundary/warning.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-function CopyButton(_ref) {
-  let {
-    text,
-    children
-  } = _ref;
-  const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(text);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    variant: "secondary",
-    ref: ref
-  }, children);
-}
-
-function ErrorBoundaryWarning(_ref2) {
-  let {
-    message,
-    error,
-    reboot,
-    dashboardLink
-  } = _ref2;
-  const actions = [];
-
-  if (reboot) {
-    actions.push((0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-      key: "recovery",
-      onClick: reboot,
-      variant: "secondary"
-    }, (0,external_wp_i18n_namespaceObject.__)('Attempt Recovery')));
-  }
-
-  if (error) {
-    actions.push((0,external_wp_element_namespaceObject.createElement)(CopyButton, {
-      key: "copy-error",
-      text: error.stack
-    }, (0,external_wp_i18n_namespaceObject.__)('Copy Error')));
-  }
-
-  if (dashboardLink) {
-    actions.push((0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-      key: "back-to-dashboard",
-      variant: "secondary",
-      href: dashboardLink
-    }, (0,external_wp_i18n_namespaceObject.__)('Back to dashboard')));
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.Warning, {
-    className: "editor-error-boundary",
-    actions: actions
-  }, message);
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/error-boundary/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-class ErrorBoundary extends external_wp_element_namespaceObject.Component {
-  constructor() {
-    super(...arguments);
-    this.reboot = this.reboot.bind(this);
-    this.state = {
-      error: null
-    };
-  }
-
-  static getDerivedStateFromError(error) {
-    return {
-      error
-    };
-  }
-
-  reboot() {
-    this.props.onError();
-  }
-
-  render() {
-    const {
-      error
-    } = this.state;
-
-    if (!error) {
-      return this.props.children;
-    }
-
-    return (0,external_wp_element_namespaceObject.createElement)(ErrorBoundaryWarning, {
-      message: (0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error.'),
-      error: error,
-      reboot: this.reboot
-    });
-  }
-
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/image.js
-
-function WelcomeGuideImage(_ref) {
-  let {
-    nonAnimatedSrc,
-    animatedSrc
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)("picture", {
-    className: "edit-site-welcome-guide__image"
-  }, (0,external_wp_element_namespaceObject.createElement)("source", {
-    srcSet: nonAnimatedSrc,
-    media: "(prefers-reduced-motion: reduce)"
-  }), (0,external_wp_element_namespaceObject.createElement)("img", {
-    src: animatedSrc,
-    width: "312",
-    height: "240",
-    alt: ""
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/editor.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function WelcomeGuideEditor() {
-  const {
-    toggle
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
-  const isActive = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuide'), []);
-
-  if (!isActive) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Guide, {
-    className: "edit-site-welcome-guide",
-    contentLabel: (0,external_wp_i18n_namespaceObject.__)('Welcome to the site editor'),
-    finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Get Started'),
-    onFinish: () => toggle('core/edit-site', 'welcomeGuide'),
-    pages: [{
-      image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, {
-        nonAnimatedSrc: "https://s.w.org/images/block-editor/edit-your-site.svg?1",
-        animatedSrc: "https://s.w.org/images/block-editor/edit-your-site.gif?1"
-      }),
-      content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", {
-        className: "edit-site-welcome-guide__heading"
-      }, (0,external_wp_i18n_namespaceObject.__)('Edit your site')), (0,external_wp_element_namespaceObject.createElement)("p", {
-        className: "edit-site-welcome-guide__text"
-      }, (0,external_wp_i18n_namespaceObject.__)('Design everything on your site — from the header right down to the footer — using blocks.')), (0,external_wp_element_namespaceObject.createElement)("p", {
-        className: "edit-site-welcome-guide__text"
-      }, (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.__)('Click <StylesIconImage /> to start designing your blocks, and choose your typography, layout, and colors.'), {
-        StylesIconImage: (0,external_wp_element_namespaceObject.createElement)("img", {
-          alt: (0,external_wp_i18n_namespaceObject.__)('styles'),
-          src: "data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' fill='%231E1E1E'/%3E%3C/svg%3E%0A"
-        })
-      })))
-    }]
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/styles.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function WelcomeGuideStyles() {
-  const {
-    toggle
+/* harmony default export */ const global = (KeyboardShortcutsGlobal);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/styles.js
+/**
+ * WordPress dependencies
+ */
+
+
+const styles = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z"
+  })
+});
+/* harmony default export */ const library_styles = (styles);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/help.js
+/**
+ * WordPress dependencies
+ */
+
+
+const help = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M12 4.75a7.25 7.25 0 100 14.5 7.25 7.25 0 000-14.5zM3.25 12a8.75 8.75 0 1117.5 0 8.75 8.75 0 01-17.5 0zM12 8.75a1.5 1.5 0 01.167 2.99c-.465.052-.917.44-.917 1.01V14h1.5v-.845A3 3 0 109 10.25h1.5a1.5 1.5 0 011.5-1.5zM11.25 15v1.5h1.5V15h-1.5z"
+  })
+});
+/* harmony default export */ const library_help = (help);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/rotate-right.js
+/**
+ * WordPress dependencies
+ */
+
+
+const rotateRight = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M15.1 4.8l-3-2.5V4c-4.4 0-8 3.6-8 8 0 3.7 2.5 6.9 6 7.7.3.1.6.1 1 .2l.2-1.5c-.4 0-.7-.1-1.1-.2l-.1.2v-.2c-2.6-.8-4.5-3.3-4.5-6.2 0-3.6 2.9-6.5 6.5-6.5v1.8l3-2.5zM20 11c-.2-1.4-.7-2.7-1.6-3.8l-1.2.8c.7.9 1.1 2 1.3 3.1L20 11zm-1.5 1.8c-.1.5-.2 1.1-.4 1.6s-.5 1-.8 1.5l1.2.9c.4-.5.8-1.1 1-1.8s.5-1.3.5-2l-1.5-.2zm-5.6 5.6l.2 1.5c1.4-.2 2.7-.7 3.8-1.6l-.9-1.1c-.9.7-2 1.1-3.1 1.2z"
+  })
+});
+/* harmony default export */ const rotate_right = (rotateRight);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/rotate-left.js
+/**
+ * WordPress dependencies
+ */
+
+
+const rotateLeft = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M12 4V2.2L9 4.8l3 2.5V5.5c3.6 0 6.5 2.9 6.5 6.5 0 2.9-1.9 5.3-4.5 6.2v.2l-.1-.2c-.4.1-.7.2-1.1.2l.2 1.5c.3 0 .6-.1 1-.2 3.5-.9 6-4 6-7.7 0-4.4-3.6-8-8-8zm-7.9 7l1.5.2c.1-1.2.5-2.3 1.2-3.2l-1.1-.9C4.8 8.2 4.3 9.6 4.1 11zm1.5 1.8l-1.5.2c.1.7.3 1.4.5 2 .3.7.6 1.3 1 1.8l1.2-.8c-.3-.5-.6-1-.8-1.5s-.4-1.1-.4-1.7zm1.5 5.5c1.1.9 2.4 1.4 3.8 1.6l.2-1.5c-1.1-.1-2.2-.5-3.1-1.2l-.9 1.1z"
+  })
+});
+/* harmony default export */ const rotate_left = (rotateLeft);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/brush.js
+/**
+ * WordPress dependencies
+ */
+
+
+const brush = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M4 20h8v-1.5H4V20zM18.9 3.5c-.6-.6-1.5-.6-2.1 0l-7.2 7.2c-.4-.1-.7 0-1.1.1-.5.2-1.5.7-1.9 2.2-.4 1.7-.8 2.2-1.1 2.7-.1.1-.2.3-.3.4l-.6 1.1H6c2 0 3.4-.4 4.7-1.4.8-.6 1.2-1.4 1.3-2.3 0-.3 0-.5-.1-.7L19 5.7c.5-.6.5-1.6-.1-2.2zM9.7 14.7c-.7.5-1.5.8-2.4 1 .2-.5.5-1.2.8-2.3.2-.6.4-1 .8-1.1.5-.1 1 .1 1.3.3.2.2.3.5.2.8 0 .3-.1.9-.7 1.3z"
+  })
+});
+/* harmony default export */ const library_brush = (brush);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/backup.js
+/**
+ * WordPress dependencies
+ */
+
+
+const backup = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M5.5 12h1.75l-2.5 3-2.5-3H4a8 8 0 113.134 6.35l.907-1.194A6.5 6.5 0 105.5 12zm9.53 1.97l-2.28-2.28V8.5a.75.75 0 00-1.5 0V12a.747.747 0 00.218.529l1.282-.84-1.28.842 2.5 2.5a.75.75 0 101.06-1.061z"
+  })
+});
+/* harmony default export */ const library_backup = (backup);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/external.js
+/**
+ * WordPress dependencies
+ */
+
+
+const external = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z"
+  })
+});
+/* harmony default export */ const library_external = (external);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/hooks/commands/use-common-commands.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  useGlobalStylesReset
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const {
+  useHistory: use_common_commands_useHistory,
+  useLocation: use_common_commands_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function useGlobalStylesOpenStylesCommands() {
+  const {
+    openGeneralSidebar,
+    setCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const {
+    params
+  } = use_common_commands_useLocation();
+  const {
+    getCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useSelect)(store));
+  const history = use_common_commands_useHistory();
+  const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    return select(external_wp_coreData_namespaceObject.store).getCurrentTheme().is_block_theme;
+  }, []);
+  const commands = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!isBlockBasedTheme) {
+      return [];
+    }
+    return [{
+      name: 'core/edit-site/open-styles',
+      label: (0,external_wp_i18n_namespaceObject.__)('Open styles'),
+      callback: ({
+        close
+      }) => {
+        close();
+        if (!params.postId) {
+          history.push({
+            path: '/wp_global_styles',
+            canvas: 'edit'
+          });
+        }
+        if (params.postId && getCanvasMode() !== 'edit') {
+          setCanvasMode('edit');
+        }
+        openGeneralSidebar('edit-site/global-styles');
+      },
+      icon: library_styles
+    }];
+  }, [history, openGeneralSidebar, setCanvasMode, getCanvasMode, isBlockBasedTheme, params.postId]);
+  return {
+    isLoading: false,
+    commands
+  };
+}
+function useGlobalStylesToggleWelcomeGuideCommands() {
+  const {
+    openGeneralSidebar,
+    setCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const {
+    params
+  } = use_common_commands_useLocation();
+  const {
+    getCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useSelect)(store));
+  const {
+    set
   } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
-  const {
-    isActive,
-    isStylesOpen
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const sidebar = select(store).getActiveComplementaryArea(store_store.name);
-    return {
-      isActive: !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuideStyles'),
-      isStylesOpen: sidebar === 'edit-site/global-styles'
-    };
-  }, []);
-
-  if (!isActive || !isStylesOpen) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Guide, {
-    className: "edit-site-welcome-guide",
-    contentLabel: (0,external_wp_i18n_namespaceObject.__)('Welcome to styles'),
-    finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Get Started'),
-    onFinish: () => toggle('core/edit-site', 'welcomeGuideStyles'),
-    pages: [{
-      image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, {
-        nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.svg?1",
-        animatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.gif?1"
-      }),
-      content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", {
-        className: "edit-site-welcome-guide__heading"
-      }, (0,external_wp_i18n_namespaceObject.__)('Welcome to Styles')), (0,external_wp_element_namespaceObject.createElement)("p", {
-        className: "edit-site-welcome-guide__text"
-      }, (0,external_wp_i18n_namespaceObject.__)('Tweak your site, or give it a whole new look! Get creative — how about a new color palette for your buttons, or choosing a new font? Take a look at what you can do here.')))
-    }, {
-      image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, {
-        nonAnimatedSrc: "https://s.w.org/images/block-editor/set-the-design.svg?1",
-        animatedSrc: "https://s.w.org/images/block-editor/set-the-design.gif?1"
-      }),
-      content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", {
-        className: "edit-site-welcome-guide__heading"
-      }, (0,external_wp_i18n_namespaceObject.__)('Set the design')), (0,external_wp_element_namespaceObject.createElement)("p", {
-        className: "edit-site-welcome-guide__text"
-      }, (0,external_wp_i18n_namespaceObject.__)('You can customize your site as much as you like with different colors, typography, and layouts. Or if you prefer, just leave it up to your theme to handle! ')))
-    }, {
-      image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, {
-        nonAnimatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.svg?1",
-        animatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.gif?1"
-      }),
-      content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", {
-        className: "edit-site-welcome-guide__heading"
-      }, (0,external_wp_i18n_namespaceObject.__)('Personalize blocks')), (0,external_wp_element_namespaceObject.createElement)("p", {
-        className: "edit-site-welcome-guide__text"
-      }, (0,external_wp_i18n_namespaceObject.__)('You can adjust your blocks to ensure a cohesive experience across your site — add your unique colors to a branded Button block, or adjust the Heading block to your preferred size.')))
-    }, {
-      image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, {
-        nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.svg",
-        animatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.gif"
-      }),
-      content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", {
-        className: "edit-site-welcome-guide__heading"
-      }, (0,external_wp_i18n_namespaceObject.__)('Learn more')), (0,external_wp_element_namespaceObject.createElement)("p", {
-        className: "edit-site-welcome-guide__text"
-      }, (0,external_wp_i18n_namespaceObject.__)('New to block themes and styling your site? '), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ExternalLink, {
-        href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/support/article/styles-overview/')
-      }, (0,external_wp_i18n_namespaceObject.__)('Here’s a detailed guide to learn how to make the most of it.'))))
-    }]
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/index.js
-
-
-/**
- * Internal dependencies
- */
-
-
-function WelcomeGuide() {
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideEditor, null), (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideStyles, null));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor/global-styles-renderer.js
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function useGlobalStylesRenderer() {
-  const [styles, settings, svgFilters] = useGlobalStylesOutput();
-  const {
-    getSettings
-  } = (0,external_wp_data_namespaceObject.useSelect)(store_store);
-  const {
-    updateSettings
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    if (!styles || !settings) {
-      return;
-    }
-
-    const currentStoreSettings = getSettings();
-    const nonGlobalStyles = (0,external_lodash_namespaceObject.filter)(currentStoreSettings.styles, style => !style.isGlobalStyles);
-    updateSettings({ ...currentStoreSettings,
-      styles: [...nonGlobalStyles, ...styles],
-      svgFilters,
-      __experimentalFeatures: settings
-    });
-  }, [styles, settings]);
-}
-
-function GlobalStylesRenderer() {
-  useGlobalStylesRenderer();
-  return null;
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/use-title.js
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function useTitle(title) {
-  const location = useLocation();
-  const siteTitle = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    var _select$getEntityReco;
-
-    return (_select$getEntityReco = select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', 'site')) === null || _select$getEntityReco === void 0 ? void 0 : _select$getEntityReco.title;
-  }, []);
-  const isInitialLocationRef = (0,external_wp_element_namespaceObject.useRef)(true);
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    isInitialLocationRef.current = false;
-  }, [location]);
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    // Don't update or announce the title for initial page load.
-    if (isInitialLocationRef.current) {
-      return;
-    }
-
-    if (title && siteTitle) {
-      // @see https://github.com/WordPress/wordpress-develop/blob/94849898192d271d533e09756007e176feb80697/src/wp-admin/admin-header.php#L67-L68
-      const formattedTitle = (0,external_wp_i18n_namespaceObject.sprintf)(
-      /* translators: Admin screen title. 1: Admin screen name, 2: Network or site name. */
-      (0,external_wp_i18n_namespaceObject.__)('%1$s ‹ %2$s — WordPress'), title, siteTitle);
-      document.title = formattedTitle; // Announce title on route change for screen readers.
-
-      (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.sprintf)(
-      /* translators: The page title that is currently displaying. */
-      (0,external_wp_i18n_namespaceObject.__)('Now displaying: %s'), document.title), 'assertive');
-    }
-  }, [title, siteTitle, location]);
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-const interfaceLabels = {
-  drawer: (0,external_wp_i18n_namespaceObject.__)('Navigation Sidebar')
-};
-
-function Editor(_ref) {
-  let {
-    onError
-  } = _ref;
-  const {
-    isInserterOpen,
-    isListViewOpen,
-    sidebarIsOpened,
-    settings,
-    entityId,
-    templateType,
-    page,
-    template,
-    templateResolved,
-    isNavigationOpen,
-    previousShortcut,
-    nextShortcut,
-    editorMode,
-    showIconLabels
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    const {
-      isInserterOpened,
-      isListViewOpened,
-      getSettings,
-      getEditedPostType,
-      getEditedPostId,
-      getPage,
-      isNavigationOpened,
-      getEditorMode
-    } = select(store_store);
-    const {
-      hasFinishedResolution,
-      getEntityRecord
+  const history = use_common_commands_useHistory();
+  const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    return select(external_wp_coreData_namespaceObject.store).getCurrentTheme().is_block_theme;
+  }, []);
+  const commands = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!isBlockBasedTheme) {
+      return [];
+    }
+    return [{
+      name: 'core/edit-site/toggle-styles-welcome-guide',
+      label: (0,external_wp_i18n_namespaceObject.__)('Learn about styles'),
+      callback: ({
+        close
+      }) => {
+        close();
+        if (!params.postId) {
+          history.push({
+            path: '/wp_global_styles',
+            canvas: 'edit'
+          });
+        }
+        if (params.postId && getCanvasMode() !== 'edit') {
+          setCanvasMode('edit');
+        }
+        openGeneralSidebar('edit-site/global-styles');
+        set('core/edit-site', 'welcomeGuideStyles', true);
+        // sometimes there's a focus loss that happens after some time
+        // that closes the modal, we need to force reopening it.
+        setTimeout(() => {
+          set('core/edit-site', 'welcomeGuideStyles', true);
+        }, 500);
+      },
+      icon: library_help
+    }];
+  }, [history, openGeneralSidebar, setCanvasMode, getCanvasMode, isBlockBasedTheme, set, params.postId]);
+  return {
+    isLoading: false,
+    commands
+  };
+}
+function useGlobalStylesResetCommands() {
+  const [canReset, onReset] = useGlobalStylesReset();
+  const commands = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!canReset) {
+      return [];
+    }
+    return [{
+      name: 'core/edit-site/reset-global-styles',
+      label: (0,external_wp_i18n_namespaceObject.__)('Reset styles'),
+      icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? rotate_right : rotate_left,
+      callback: ({
+        close
+      }) => {
+        close();
+        onReset();
+      }
+    }];
+  }, [canReset, onReset]);
+  return {
+    isLoading: false,
+    commands
+  };
+}
+function useGlobalStylesOpenCssCommands() {
+  const {
+    openGeneralSidebar,
+    setEditorCanvasContainerView,
+    setCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const {
+    params
+  } = use_common_commands_useLocation();
+  const history = use_common_commands_useHistory();
+  const {
+    canEditCSS
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEntityRecord,
+      __experimentalGetCurrentGlobalStylesId
     } = select(external_wp_coreData_namespaceObject.store);
-    const postType = getEditedPostType();
-    const postId = getEditedPostId(); // The currently selected entity to display. Typically template or template part.
-
-    return {
-      isInserterOpen: isInserterOpened(),
-      isListViewOpen: isListViewOpened(),
-      sidebarIsOpened: !!select(store).getActiveComplementaryArea(store_store.name),
-      settings: getSettings(),
-      templateType: postType,
-      page: getPage(),
-      template: postId ? getEntityRecord('postType', postType, postId) : null,
-      templateResolved: postId ? hasFinishedResolution('getEntityRecord', ['postType', postType, postId]) : false,
-      entityId: postId,
-      isNavigationOpen: isNavigationOpened(),
-      previousShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/previous-region'),
-      nextShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/next-region'),
-      editorMode: getEditorMode(),
-      showIconLabels: select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'showIconLabels')
-    };
-  }, []);
-  const {
-    setPage,
-    setIsInserterOpened
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const {
-    enableComplementaryArea
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
-  const [isEntitiesSavedStatesOpen, setIsEntitiesSavedStatesOpen] = (0,external_wp_element_namespaceObject.useState)(false);
-  const openEntitiesSavedStates = (0,external_wp_element_namespaceObject.useCallback)(() => setIsEntitiesSavedStatesOpen(true), []);
-  const closeEntitiesSavedStates = (0,external_wp_element_namespaceObject.useCallback)(() => {
-    setIsEntitiesSavedStatesOpen(false);
-  }, []);
-  const blockContext = (0,external_wp_element_namespaceObject.useMemo)(() => ({ ...(page === null || page === void 0 ? void 0 : page.context),
-    queryContext: [(page === null || page === void 0 ? void 0 : page.context.queryContext) || {
-      page: 1
-    }, newQueryContext => setPage({ ...page,
-      context: { ...(page === null || page === void 0 ? void 0 : page.context),
-        queryContext: { ...(page === null || page === void 0 ? void 0 : page.context.queryContext),
-          ...newQueryContext
-        }
-      }
-    })]
-  }), [page === null || page === void 0 ? void 0 : page.context]);
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    if (isNavigationOpen) {
-      document.body.classList.add('is-navigation-sidebar-open');
-    } else {
-      document.body.classList.remove('is-navigation-sidebar-open');
-    }
-  }, [isNavigationOpen]);
-  (0,external_wp_element_namespaceObject.useEffect)(function openGlobalStylesOnLoad() {
-    const searchParams = new URLSearchParams(window.location.search);
-
-    if (searchParams.get('styles') === 'open') {
-      enableComplementaryArea('core/edit-site', 'edit-site/global-styles');
-    }
-  }, [enableComplementaryArea]); // Don't render the Editor until the settings are set and loaded.
-
-  const isReady = (settings === null || settings === void 0 ? void 0 : settings.siteUrl) && templateType !== undefined && entityId !== undefined;
-  const secondarySidebarLabel = isListViewOpen ? (0,external_wp_i18n_namespaceObject.__)('List View') : (0,external_wp_i18n_namespaceObject.__)('Block Library');
-
-  const secondarySidebar = () => {
-    if (editorMode === 'visual' && isInserterOpen) {
-      return (0,external_wp_element_namespaceObject.createElement)(InserterSidebar, null);
-    }
-
-    if (editorMode === 'visual' && isListViewOpen) {
-      return (0,external_wp_element_namespaceObject.createElement)(ListViewSidebar, null);
-    }
-
-    return null;
-  }; // Only announce the title once the editor is ready to prevent "Replace"
-  // action in <URlQueryController> from double-announcing.
-
-
-  useTitle(isReady && (0,external_wp_i18n_namespaceObject.__)('Editor (beta)'));
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(URLQueryController, null), isReady && (0,external_wp_element_namespaceObject.createElement)(external_wp_keyboardShortcuts_namespaceObject.ShortcutProvider, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_coreData_namespaceObject.EntityProvider, {
-    kind: "root",
-    type: "site"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_coreData_namespaceObject.EntityProvider, {
-    kind: "postType",
-    type: templateType,
-    id: entityId
-  }, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesProvider, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockContextProvider, {
-    value: blockContext
-  }, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesRenderer, null), (0,external_wp_element_namespaceObject.createElement)(ErrorBoundary, {
-    onError: onError
-  }, (0,external_wp_element_namespaceObject.createElement)(keyboard_shortcuts.Register, null), (0,external_wp_element_namespaceObject.createElement)(SidebarComplementaryAreaFills, null), (0,external_wp_element_namespaceObject.createElement)(interface_skeleton, {
-    labels: { ...interfaceLabels,
-      secondarySidebar: secondarySidebarLabel
-    },
-    className: showIconLabels && 'show-icon-labels',
-    secondarySidebar: secondarySidebar(),
-    sidebar: sidebarIsOpened && (0,external_wp_element_namespaceObject.createElement)(complementary_area.Slot, {
-      scope: "core/edit-site"
-    }),
-    drawer: (0,external_wp_element_namespaceObject.createElement)(navigation_sidebar.Slot, null),
-    header: (0,external_wp_element_namespaceObject.createElement)(Header, {
-      openEntitiesSavedStates: openEntitiesSavedStates,
-      showIconLabels: showIconLabels
-    }),
-    notices: (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.EditorSnackbars, null),
-    content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.EditorNotices, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockStyles.Slot, {
-      scope: "core/block-inspector"
-    }), editorMode === 'visual' && template && (0,external_wp_element_namespaceObject.createElement)(BlockEditor, {
-      setIsInserterOpen: setIsInserterOpened
-    }), editorMode === 'text' && template && (0,external_wp_element_namespaceObject.createElement)(CodeEditor, null), templateResolved && !template && (settings === null || settings === void 0 ? void 0 : settings.siteUrl) && entityId && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Notice, {
-      status: "warning",
-      isDismissible: false
-    }, (0,external_wp_i18n_namespaceObject.__)("You attempted to edit an item that doesn't exist. Perhaps it was deleted?")), (0,external_wp_element_namespaceObject.createElement)(keyboard_shortcuts, {
-      openEntitiesSavedStates: openEntitiesSavedStates
-    })),
-    actions: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, isEntitiesSavedStatesOpen ? (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.EntitiesSavedStates, {
-      close: closeEntitiesSavedStates
-    }) : (0,external_wp_element_namespaceObject.createElement)("div", {
-      className: "edit-site-editor__toggle-save-panel"
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-      variant: "secondary",
-      className: "edit-site-editor__toggle-save-panel-button",
-      onClick: openEntitiesSavedStates,
-      "aria-expanded": false
-    }, (0,external_wp_i18n_namespaceObject.__)('Open save panel')))),
-    footer: (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockBreadcrumb, {
-      rootLabelText: (0,external_wp_i18n_namespaceObject.__)('Template')
-    }),
-    shortcuts: {
-      previous: previousShortcut,
-      next: nextShortcut
-    }
-  }), (0,external_wp_element_namespaceObject.createElement)(WelcomeGuide, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Popover.Slot, null))))))));
-}
-
-/* harmony default export */ var editor = (Editor);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/use-register-shortcuts.js
-/**
- * WordPress dependencies
- */
-
-
-
-
-function useRegisterShortcuts() {
-  const {
-    registerShortcut
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_keyboardShortcuts_namespaceObject.store);
-  (0,external_wp_element_namespaceObject.useEffect)(() => {
-    registerShortcut({
-      name: 'core/edit-site/next-region',
-      category: 'global',
-      description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the next part of the editor.'),
-      keyCombination: {
-        modifier: 'ctrl',
-        character: '`'
-      },
-      aliases: [{
-        modifier: 'access',
-        character: 'n'
-      }]
-    });
-    registerShortcut({
-      name: 'core/edit-site/previous-region',
-      category: 'global',
-      description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous part of the editor.'),
-      keyCombination: {
-        modifier: 'ctrlShift',
-        character: '`'
-      },
-      aliases: [{
-        modifier: 'access',
-        character: 'p'
-      }]
-    });
-  }, []);
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post.js
-
-
-/**
- * WordPress dependencies
- */
-
-const post = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "m7.3 9.7 1.4 1.4c.2-.2.3-.3.4-.5 0 0 0-.1.1-.1.3-.5.4-1.1.3-1.6L12 7 9 4 7.2 6.5c-.6-.1-1.1 0-1.6.3 0 0-.1 0-.1.1-.3.1-.4.2-.6.4l1.4 1.4L4 11v1h1l2.3-2.3zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z"
-}));
-/* harmony default export */ var library_post = (post);
+    const globalStylesId = __experimentalGetCurrentGlobalStylesId();
+    const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
+    return {
+      canEditCSS: !!globalStyles?._links?.['wp:action-edit-css']
+    };
+  }, []);
+  const {
+    getCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useSelect)(store));
+  const commands = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!canEditCSS) {
+      return [];
+    }
+    return [{
+      name: 'core/edit-site/open-styles-css',
+      label: (0,external_wp_i18n_namespaceObject.__)('Customize CSS'),
+      icon: library_brush,
+      callback: ({
+        close
+      }) => {
+        close();
+        if (!params.postId) {
+          history.push({
+            path: '/wp_global_styles',
+            canvas: 'edit'
+          });
+        }
+        if (params.postId && getCanvasMode() !== 'edit') {
+          setCanvasMode('edit');
+        }
+        openGeneralSidebar('edit-site/global-styles');
+        setEditorCanvasContainerView('global-styles-css');
+      }
+    }];
+  }, [history, openGeneralSidebar, setEditorCanvasContainerView, canEditCSS, getCanvasMode, setCanvasMode, params.postId]);
+  return {
+    isLoading: false,
+    commands
+  };
+}
+function useGlobalStylesOpenRevisionsCommands() {
+  const {
+    openGeneralSidebar,
+    setEditorCanvasContainerView,
+    setCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const {
+    getCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useSelect)(store));
+  const {
+    params
+  } = use_common_commands_useLocation();
+  const history = use_common_commands_useHistory();
+  const hasRevisions = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEntityRecord,
+      __experimentalGetCurrentGlobalStylesId
+    } = select(external_wp_coreData_namespaceObject.store);
+    const globalStylesId = __experimentalGetCurrentGlobalStylesId();
+    const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
+    return !!globalStyles?._links?.['version-history']?.[0]?.count;
+  }, []);
+  const commands = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!hasRevisions) {
+      return [];
+    }
+    return [{
+      name: 'core/edit-site/open-global-styles-revisions',
+      label: (0,external_wp_i18n_namespaceObject.__)('Style revisions'),
+      icon: library_backup,
+      callback: ({
+        close
+      }) => {
+        close();
+        if (!params.postId) {
+          history.push({
+            path: '/wp_global_styles',
+            canvas: 'edit'
+          });
+        }
+        if (params.postId && getCanvasMode() !== 'edit') {
+          setCanvasMode('edit');
+        }
+        openGeneralSidebar('edit-site/global-styles');
+        setEditorCanvasContainerView('global-styles-revisions');
+      }
+    }];
+  }, [hasRevisions, history, openGeneralSidebar, setEditorCanvasContainerView, getCanvasMode, setCanvasMode, params.postId]);
+  return {
+    isLoading: false,
+    commands
+  };
+}
+function useCommonCommands() {
+  const homeUrl = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getUnstableBase // Site index.
+    } = select(external_wp_coreData_namespaceObject.store);
+    return getUnstableBase()?.home;
+  }, []);
+  (0,external_wp_commands_namespaceObject.useCommand)({
+    name: 'core/edit-site/view-site',
+    label: (0,external_wp_i18n_namespaceObject.__)('View site'),
+    callback: ({
+      close
+    }) => {
+      close();
+      window.open(homeUrl, '_blank');
+    },
+    icon: library_external
+  });
+  (0,external_wp_commands_namespaceObject.useCommandLoader)({
+    name: 'core/edit-site/open-styles',
+    hook: useGlobalStylesOpenStylesCommands
+  });
+  (0,external_wp_commands_namespaceObject.useCommandLoader)({
+    name: 'core/edit-site/toggle-styles-welcome-guide',
+    hook: useGlobalStylesToggleWelcomeGuideCommands
+  });
+  (0,external_wp_commands_namespaceObject.useCommandLoader)({
+    name: 'core/edit-site/reset-global-styles',
+    hook: useGlobalStylesResetCommands
+  });
+  (0,external_wp_commands_namespaceObject.useCommandLoader)({
+    name: 'core/edit-site/open-styles-css',
+    hook: useGlobalStylesOpenCssCommands
+  });
+  (0,external_wp_commands_namespaceObject.useCommandLoader)({
+    name: 'core/edit-site/open-styles-revisions',
+    hook: useGlobalStylesOpenRevisionsCommands
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/layout.js
+/**
+ * WordPress dependencies
+ */
+
+
+const layout = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"
+  })
+});
+/* harmony default export */ const library_layout = (layout);
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/page.js
-
-
-/**
- * WordPress dependencies
- */
-
-const page = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M7 5.5h10a.5.5 0 01.5.5v12a.5.5 0 01-.5.5H7a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM17 4H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V6a2 2 0 00-2-2zm-1 3.75H8v1.5h8v-1.5zM8 11h8v1.5H8V11zm6 3.25H8v1.5h6v-1.5z"
-}));
-/* harmony default export */ var library_page = (page);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/archive.js
-
-
-/**
- * WordPress dependencies
- */
-
-const archive = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  viewBox: "0 0 24 24",
-  xmlns: "http://www.w3.org/2000/svg"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M19 6.2h-5.9l-.6-1.1c-.3-.7-1-1.1-1.8-1.1H5c-1.1 0-2 .9-2 2v11.8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V8.2c0-1.1-.9-2-2-2zm.5 11.6c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h5.8c.2 0 .4.1.4.3l1 2H19c.3 0 .5.2.5.5v9.5zM8 12.8h8v-1.5H8v1.5zm0 3h8v-1.5H8v1.5z"
-}));
-/* harmony default export */ var library_archive = (archive);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/search.js
-
-
-/**
- * WordPress dependencies
- */
-
-const search = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M13.5 6C10.5 6 8 8.5 8 11.5c0 1.1.3 2.1.9 3l-3.4 3 1 1.1 3.4-2.9c1 .9 2.2 1.4 3.6 1.4 3 0 5.5-2.5 5.5-5.5C19 8.5 16.5 6 13.5 6zm0 9.5c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"
-}));
-/* harmony default export */ var library_search = (search);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/not-found.js
-
-
-/**
- * WordPress dependencies
- */
-
-const notFound = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M19 5H5c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm.5 12c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v10zm-11-7.6h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-.9 3.5H6.3l1.2-1.7v1.7zm5.6-3.2c-.4-.2-.8-.4-1.2-.4-.5 0-.9.1-1.2.4-.4.2-.6.6-.8 1-.2.4-.3.9-.3 1.5s.1 1.1.3 1.6c.2.4.5.8.8 1 .4.2.8.4 1.2.4.5 0 .9-.1 1.2-.4.4-.2.6-.6.8-1 .2-.4.3-1 .3-1.6 0-.6-.1-1.1-.3-1.5-.1-.5-.4-.8-.8-1zm0 3.6c-.1.3-.3.5-.5.7-.2.1-.4.2-.7.2-.3 0-.5-.1-.7-.2-.2-.1-.4-.4-.5-.7-.1-.3-.2-.7-.2-1.2 0-.7.1-1.2.4-1.5.3-.3.6-.5 1-.5s.7.2 1 .5c.3.3.4.8.4 1.5-.1.5-.1.9-.2 1.2zm5-3.9h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-1 3.5H16l1.2-1.7v1.7z"
-}));
-/* harmony default export */ var not_found = (notFound);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/list.js
-
-
-/**
- * WordPress dependencies
- */
-
-const list = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  viewBox: "0 0 24 24",
-  xmlns: "http://www.w3.org/2000/svg"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M4 4v1.5h16V4H4zm8 8.5h8V11h-8v1.5zM4 20h16v-1.5H4V20zm4-8c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2z"
-}));
-/* harmony default export */ var library_list = (list);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/category.js
-
-
-/**
- * WordPress dependencies
- */
-
-const category = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  viewBox: "0 0 24 24",
-  xmlns: "http://www.w3.org/2000/svg"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z",
-  fillRule: "evenodd",
-  clipRule: "evenodd"
-}));
-/* harmony default export */ var library_category = (category);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-author.js
-
-
-/**
- * WordPress dependencies
- */
-
-const postAuthor = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  viewBox: "0 0 24 24",
-  xmlns: "http://www.w3.org/2000/svg"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M10 4.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm2.25 7.5v-1A2.75 2.75 0 0011 8.25H7A2.75 2.75 0 004.25 11v1h1.5v-1c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v1h1.5zM4 20h9v-1.5H4V20zm16-4H4v-1.5h16V16z",
-  fillRule: "evenodd",
-  clipRule: "evenodd"
-}));
-/* harmony default export */ var post_author = (postAuthor);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/block-meta.js
-
-
-/**
- * WordPress dependencies
- */
-
-const blockMeta = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  fillRule: "evenodd",
-  d: "M8.95 11.25H4v1.5h4.95v4.5H13V18c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75h-2.55v-7.5H13V9c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75H8.95v4.5ZM14.5 15v3c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5Zm0-6V6c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5Z",
-  clipRule: "evenodd"
-}));
-/* harmony default export */ var block_meta = (blockMeta);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-date.js
-
-
-/**
- * WordPress dependencies
- */
-
-const postDate = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M11.696 13.972c.356-.546.599-.958.728-1.235a1.79 1.79 0 00.203-.783c0-.264-.077-.47-.23-.618-.148-.153-.354-.23-.618-.23-.295 0-.569.07-.82.212a3.413 3.413 0 00-.738.571l-.147-1.188c.289-.234.59-.41.903-.526.313-.117.66-.175 1.041-.175.375 0 .695.08.959.24.264.153.46.362.59.626.135.265.203.556.203.876 0 .362-.08.734-.24 1.115-.154.381-.427.87-.82 1.466l-.756 1.152H14v1.106h-4l1.696-2.609z"
-}), (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M19.5 7h-15v12a.5.5 0 00.5.5h14a.5.5 0 00.5-.5V7zM3 7V5a2 2 0 012-2h14a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V7z"
-}));
-/* harmony default export */ var post_date = (postDate);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/tag.js
-
-
-/**
- * WordPress dependencies
- */
-
-const tag = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M20.1 11.2l-6.7-6.7c-.1-.1-.3-.2-.5-.2H5c-.4-.1-.8.3-.8.7v7.8c0 .2.1.4.2.5l6.7 6.7c.2.2.5.4.7.5s.6.2.9.2c.3 0 .6-.1.9-.2.3-.1.5-.3.8-.5l5.6-5.6c.4-.4.7-1 .7-1.6.1-.6-.2-1.2-.6-1.6zM19 13.4L13.4 19c-.1.1-.2.1-.3.2-.2.1-.4.1-.6 0-.1 0-.2-.1-.3-.2l-6.5-6.5V5.8h6.8l6.5 6.5c.2.2.2.4.2.6 0 .1 0 .3-.2.5zM9 8c-.6 0-1 .4-1 1s.4 1 1 1 1-.4 1-1-.4-1-1-1z"
-}));
-/* harmony default export */ var library_tag = (tag);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/media.js
-
-
-/**
- * WordPress dependencies
- */
-
-const media = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h13.4c.4 0 .8.4.8.8v13.4zM10 15l5-3-5-3v6z"
-}));
-/* harmony default export */ var library_media = (media);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/new-template.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-const DEFAULT_TEMPLATE_SLUGS = ['front-page', 'single-post', 'page', 'index', 'archive', 'author', 'category', 'date', 'tag', 'taxonomy', 'search', '404'];
-const TEMPLATE_ICONS = {
-  'front-page': library_home,
-  'single-post': library_post,
-  page: library_page,
-  archive: library_archive,
-  search: library_search,
-  404: not_found,
-  index: library_list,
-  category: library_category,
-  author: post_author,
-  taxonomy: block_meta,
-  date: post_date,
-  tag: library_tag,
-  attachment: library_media
-};
-function NewTemplate(_ref) {
-  let {
-    postType
-  } = _ref;
-  const history = useHistory();
-  const {
-    templates,
-    defaultTemplateTypes
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
-    templates: select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_template', {
-      per_page: -1
-    }),
-    defaultTemplateTypes: select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplateTypes()
-  }), []);
-  const {
-    saveEntityRecord
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
-  const {
-    createErrorNotice
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
-  const {
-    setTemplate
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-
-  async function createTemplate(_ref2) {
-    let {
-      slug
-    } = _ref2;
-
-    try {
-      const {
-        title,
-        description
-      } = (0,external_lodash_namespaceObject.find)(defaultTemplateTypes, {
-        slug
-      });
-      const template = await saveEntityRecord('postType', 'wp_template', {
-        excerpt: description,
-        // Slugs need to be strings, so this is for template `404`
-        slug: slug.toString(),
-        status: 'publish',
-        title
-      }, {
-        throwOnError: true
-      }); // Set template before navigating away to avoid initial stale value.
-
-      setTemplate(template.id, template.slug); // Navigate to the created template editor.
-
-      history.push({
-        postId: template.id,
-        postType: template.type
-      }); // TODO: Add a success notice?
-    } catch (error) {
-      const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the template.');
-      createErrorNotice(errorMessage, {
-        type: 'snackbar'
-      });
-    }
-  }
-
-  const existingTemplateSlugs = (0,external_lodash_namespaceObject.map)(templates, 'slug');
-  const missingTemplates = (0,external_lodash_namespaceObject.filter)(defaultTemplateTypes, template => (0,external_lodash_namespaceObject.includes)(DEFAULT_TEMPLATE_SLUGS, template.slug) && !(0,external_lodash_namespaceObject.includes)(existingTemplateSlugs, template.slug));
-
-  if (!missingTemplates.length) {
-    return null;
-  } // Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.
-
-
-  missingTemplates.sort((template1, template2) => {
-    return DEFAULT_TEMPLATE_SLUGS.indexOf(template1.slug) - DEFAULT_TEMPLATE_SLUGS.indexOf(template2.slug);
-  });
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, {
-    className: "edit-site-new-template-dropdown",
-    icon: null,
-    text: postType.labels.add_new,
-    label: postType.labels.add_new_item,
-    popoverProps: {
-      noArrow: false
-    },
-    toggleProps: {
-      variant: 'primary'
-    }
-  }, () => (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.NavigableMenu, {
-    className: "edit-site-new-template-dropdown__popover"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
-    label: postType.labels.add_new_item
-  }, (0,external_lodash_namespaceObject.map)(missingTemplates, _ref3 => {
-    let {
-      title,
-      description,
-      slug
-    } = _ref3;
-    return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-      icon: TEMPLATE_ICONS[slug],
-      iconPosition: "left",
-      info: description,
-      key: slug,
-      onClick: () => {
-        createTemplate({
-          slug
-        }); // We will be navigated way so no need to close the dropdown.
-      }
-    }, title);
-  }))));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/new-template-part.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function NewTemplatePart(_ref) {
-  let {
-    postType
-  } = _ref;
-  const history = useHistory();
-  const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
-  const {
-    createErrorNotice
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
-  const {
-    saveEntityRecord
-  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
-
-  async function createTemplatePart(_ref2) {
-    let {
-      title,
-      area
-    } = _ref2;
-
-    if (!title) {
-      createErrorNotice((0,external_wp_i18n_namespaceObject.__)('Title is not defined.'), {
-        type: 'snackbar'
-      });
-      return;
-    }
-
-    try {
-      // Currently template parts only allow latin chars.
-      // Fallback slug will receive suffix by default.
-      const cleanSlug = (0,external_lodash_namespaceObject.kebabCase)(title).replace(/[^\w-]+/g, '') || 'wp-custom-part';
-      const templatePart = await saveEntityRecord('postType', 'wp_template_part', {
-        slug: cleanSlug,
-        title,
-        content: '',
-        area
-      }, {
-        throwOnError: true
-      });
-      setIsModalOpen(false); // Navigate to the created template part editor.
-
-      history.push({
-        postId: templatePart.id,
-        postType: templatePart.type
-      }); // TODO: Add a success notice?
-    } catch (error) {
-      const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the template part.');
-      createErrorNotice(errorMessage, {
-        type: 'snackbar'
-      });
-      setIsModalOpen(false);
-    }
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    variant: "primary",
-    onClick: () => {
-      setIsModalOpen(true);
-    }
-  }, postType.labels.add_new), isModalOpen && (0,external_wp_element_namespaceObject.createElement)(CreateTemplatePartModal, {
-    closeModal: () => setIsModalOpen(false),
-    onCreate: createTemplatePart
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function AddNewTemplate(_ref) {
-  let {
-    templateType = 'wp_template'
-  } = _ref;
-  const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]);
-
-  if (!postType) {
-    return null;
-  }
-
-  if (templateType === 'wp_template') {
-    return (0,external_wp_element_namespaceObject.createElement)(NewTemplate, {
-      postType: postType
-    });
-  } else if (templateType === 'wp_template_part') {
-    return (0,external_wp_element_namespaceObject.createElement)(NewTemplatePart, {
-      postType: postType
-    });
-  }
-
-  return null;
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/header.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function header_Header(_ref) {
-  var _postType$labels;
-
-  let {
-    templateType
-  } = _ref;
-  const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]);
-
-  if (!postType) {
-    return null;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)("header", {
-    className: "edit-site-list-header"
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
-    level: 1,
-    className: "edit-site-list-header__title"
-  }, (_postType$labels = postType.labels) === null || _postType$labels === void 0 ? void 0 : _postType$labels.name), (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: "edit-site-list-header__right"
-  }, (0,external_wp_element_namespaceObject.createElement)(AddNewTemplate, {
-    templateType: templateType
-  })));
+/**
+ * WordPress dependencies
+ */
+
+
+
+const page = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z"
+  }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z"
+  })]
+});
+/* harmony default export */ const library_page = (page);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/trash.js
+/**
+ * WordPress dependencies
+ */
+
+
+const trash = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    clipRule: "evenodd",
+    d: "M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z"
+  })
+});
+/* harmony default export */ const library_trash = (trash);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/use-edited-entity-record/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+function useEditedEntityRecord(postType, postId) {
+  const {
+    record,
+    title,
+    description,
+    isLoaded,
+    icon
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEditedPostType,
+      getEditedPostId
+    } = select(store);
+    const {
+      getEditedEntityRecord,
+      hasFinishedResolution
+    } = select(external_wp_coreData_namespaceObject.store);
+    const {
+      __experimentalGetTemplateInfo: getTemplateInfo
+    } = select(external_wp_editor_namespaceObject.store);
+    const usedPostType = postType !== null && postType !== void 0 ? postType : getEditedPostType();
+    const usedPostId = postId !== null && postId !== void 0 ? postId : getEditedPostId();
+    const _record = getEditedEntityRecord('postType', usedPostType, usedPostId);
+    const _isLoaded = usedPostId && hasFinishedResolution('getEditedEntityRecord', ['postType', usedPostType, usedPostId]);
+    const templateInfo = getTemplateInfo(_record);
+    return {
+      record: _record,
+      title: templateInfo.title,
+      description: templateInfo.description,
+      isLoaded: _isLoaded,
+      icon: templateInfo.icon
+    };
+  }, [postType, postId]);
+  return {
+    isLoaded,
+    icon,
+    record,
+    getTitle: () => title ? (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title) : null,
+    getDescription: () => description ? (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(description) : null
+  };
 }
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/is-template-removable.js
 /**
+ * Internal dependencies
+ */
+
+
+/**
  * Check if a template is removable.
  *
  * @param {Object} template The template entity to check.
@@ -12832,960 +10728,29895 @@
   if (!template) {
     return false;
   }
-
-  return template.source === 'custom' && !template.has_theme_file;
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/actions/rename-menu-item.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-function RenameMenuItem(_ref) {
-  let {
-    template,
-    onClose
-  } = _ref;
-  const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(() => template.title.rendered);
+  return template.source === TEMPLATE_ORIGINS.custom && !template.has_theme_file;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/is-template-revertable.js
+/**
+ * Internal dependencies
+ */
+
+
+/**
+ * Check if a template is revertable to its original theme-provided template file.
+ *
+ * @param {Object} template The template entity to check.
+ * @return {boolean} Whether the template is revertable.
+ */
+function isTemplateRevertable(template) {
+  if (!template) {
+    return false;
+  }
+  /* eslint-disable camelcase */
+  return template?.source === TEMPLATE_ORIGINS.custom && template?.has_theme_file;
+  /* eslint-enable camelcase */
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/is-previewing-theme.js
+/**
+ * WordPress dependencies
+ */
+
+function isPreviewingTheme() {
+  return (0,external_wp_url_namespaceObject.getQueryArg)(window.location.href, 'wp_theme_preview') !== undefined;
+}
+function currentlyPreviewingTheme() {
+  if (isPreviewingTheme()) {
+    return (0,external_wp_url_namespaceObject.getQueryArg)(window.location.href, 'wp_theme_preview');
+  }
+  return null;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/link.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  useHistory: link_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function useLink(params, state, shouldReplace = false) {
+  const history = link_useHistory();
+  function onClick(event) {
+    event?.preventDefault();
+    if (shouldReplace) {
+      history.replace(params, state);
+    } else {
+      history.push(params, state);
+    }
+  }
+  const currentArgs = (0,external_wp_url_namespaceObject.getQueryArgs)(window.location.href);
+  const currentUrlWithoutArgs = (0,external_wp_url_namespaceObject.removeQueryArgs)(window.location.href, ...Object.keys(currentArgs));
+  if (isPreviewingTheme()) {
+    params = {
+      ...params,
+      wp_theme_preview: currentlyPreviewingTheme()
+    };
+  }
+  const newUrl = (0,external_wp_url_namespaceObject.addQueryArgs)(currentUrlWithoutArgs, params);
+  return {
+    href: newUrl,
+    onClick
+  };
+}
+function Link({
+  params = {},
+  state,
+  replace: shouldReplace = false,
+  children,
+  ...props
+}) {
+  const {
+    href,
+    onClick
+  } = useLink(params, state, shouldReplace);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", {
+    href: href,
+    onClick: onClick,
+    ...props,
+    children: children
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/hooks/commands/use-edit-mode-commands.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  useHistory: use_edit_mode_commands_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function usePageContentFocusCommands() {
+  const {
+    record: template
+  } = useEditedEntityRecord();
+  const {
+    isPage,
+    canvasMode,
+    templateId,
+    currentPostType
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      isPage: _isPage,
+      getCanvasMode
+    } = lock_unlock_unlock(select(store));
+    const {
+      getCurrentPostType,
+      getCurrentTemplateId
+    } = select(external_wp_editor_namespaceObject.store);
+    return {
+      isPage: _isPage(),
+      canvasMode: getCanvasMode(),
+      templateId: getCurrentTemplateId(),
+      currentPostType: getCurrentPostType()
+    };
+  }, []);
+  const {
+    onClick: editTemplate
+  } = useLink({
+    postType: 'wp_template',
+    postId: templateId
+  });
+  const {
+    setRenderingMode
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store);
+  if (!isPage || canvasMode !== 'edit') {
+    return {
+      isLoading: false,
+      commands: []
+    };
+  }
+  const commands = [];
+  if (currentPostType !== 'wp_template') {
+    commands.push({
+      name: 'core/switch-to-template-focus',
+      label: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: template title */
+      (0,external_wp_i18n_namespaceObject.__)('Edit template: %s'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(template.title)),
+      icon: library_layout,
+      callback: ({
+        close
+      }) => {
+        editTemplate();
+        close();
+      }
+    });
+  } else {
+    commands.push({
+      name: 'core/switch-to-page-focus',
+      label: (0,external_wp_i18n_namespaceObject.__)('Back to page'),
+      icon: library_page,
+      callback: ({
+        close
+      }) => {
+        setRenderingMode('template-locked');
+        close();
+      }
+    });
+  }
+  return {
+    isLoading: false,
+    commands
+  };
+}
+function useManipulateDocumentCommands() {
+  const {
+    isLoaded,
+    record: template
+  } = useEditedEntityRecord();
+  const {
+    removeTemplate,
+    revertTemplate
+  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
+  const history = use_edit_mode_commands_useHistory();
+  const isEditingPage = (0,external_wp_data_namespaceObject.useSelect)(select => select(store).isPage() && select(external_wp_editor_namespaceObject.store).getCurrentPostType() !== 'wp_template', []);
+  if (!isLoaded) {
+    return {
+      isLoading: true,
+      commands: []
+    };
+  }
+  const commands = [];
+  if (isTemplateRevertable(template) && !isEditingPage) {
+    const label = template.type === TEMPLATE_POST_TYPE ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: template title */
+    (0,external_wp_i18n_namespaceObject.__)('Reset template: %s'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(template.title)) : (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: template part title */
+    (0,external_wp_i18n_namespaceObject.__)('Reset template part: %s'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(template.title));
+    commands.push({
+      name: 'core/reset-template',
+      label,
+      icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? rotate_right : rotate_left,
+      callback: ({
+        close
+      }) => {
+        revertTemplate(template);
+        close();
+      }
+    });
+  }
+  if (isTemplateRemovable(template) && !isEditingPage) {
+    const label = template.type === TEMPLATE_POST_TYPE ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: template title */
+    (0,external_wp_i18n_namespaceObject.__)('Delete template: %s'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(template.title)) : (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: template part title */
+    (0,external_wp_i18n_namespaceObject.__)('Delete template part: %s'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(template.title));
+    commands.push({
+      name: 'core/remove-template',
+      label,
+      icon: library_trash,
+      callback: ({
+        close
+      }) => {
+        removeTemplate(template);
+        // Navigate to the template list
+        history.push({
+          postType: template.type
+        });
+        close();
+      }
+    });
+  }
+  return {
+    isLoading: !isLoaded,
+    commands
+  };
+}
+function useEditModeCommands() {
+  (0,external_wp_commands_namespaceObject.useCommandLoader)({
+    name: 'core/edit-site/page-content-focus',
+    hook: usePageContentFocusCommands,
+    context: 'entity-edit'
+  });
+  (0,external_wp_commands_namespaceObject.useCommandLoader)({
+    name: 'core/edit-site/manipulate-document',
+    hook: useManipulateDocumentCommands
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/layout/hooks.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+const MAX_LOADING_TIME = 10000; // 10 seconds
+
+function useIsSiteEditorLoading() {
+  const {
+    isLoaded: hasLoadedPost
+  } = useEditedEntityRecord();
+  const [loaded, setLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
+  const inLoadingPause = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const hasResolvingSelectors = select(external_wp_coreData_namespaceObject.store).hasResolvingSelectors();
+    return !loaded && !hasResolvingSelectors;
+  }, [loaded]);
+
+  /*
+   * If the maximum expected loading time has passed, we're marking the
+   * editor as loaded, in order to prevent any failed requests from blocking
+   * the editor canvas from appearing.
+   */
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    let timeout;
+    if (!loaded) {
+      timeout = setTimeout(() => {
+        setLoaded(true);
+      }, MAX_LOADING_TIME);
+    }
+    return () => {
+      clearTimeout(timeout);
+    };
+  }, [loaded]);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (inLoadingPause) {
+      /*
+       * We're using an arbitrary 100ms timeout here to catch brief
+       * moments without any resolving selectors that would result in
+       * displaying brief flickers of loading state and loaded state.
+       *
+       * It's worth experimenting with different values, since this also
+       * adds 100ms of artificial delay after loading has finished.
+       */
+      const ARTIFICIAL_DELAY = 100;
+      const timeout = setTimeout(() => {
+        setLoaded(true);
+      }, ARTIFICIAL_DELAY);
+      return () => {
+        clearTimeout(timeout);
+      };
+    }
+  }, [inLoadingPause]);
+  return !loaded || !hasLoadedPost;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/image.js
+
+
+function WelcomeGuideImage({
+  nonAnimatedSrc,
+  animatedSrc
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("picture", {
+    className: "edit-site-welcome-guide__image",
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("source", {
+      srcSet: nonAnimatedSrc,
+      media: "(prefers-reduced-motion: reduce)"
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
+      src: animatedSrc,
+      width: "312",
+      height: "240",
+      alt: ""
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/editor.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+function WelcomeGuideEditor() {
+  const {
+    toggle
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
+  const {
+    isActive,
+    isBlockBasedTheme
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    return {
+      isActive: !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuide'),
+      isBlockBasedTheme: select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.is_block_theme
+    };
+  }, []);
+  if (!isActive || !isBlockBasedTheme) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Guide, {
+    className: "edit-site-welcome-guide guide-editor",
+    contentLabel: (0,external_wp_i18n_namespaceObject.__)('Welcome to the site editor'),
+    finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Get started'),
+    onFinish: () => toggle('core/edit-site', 'welcomeGuide'),
+    pages: [{
+      image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideImage, {
+        nonAnimatedSrc: "https://s.w.org/images/block-editor/edit-your-site.svg?1",
+        animatedSrc: "https://s.w.org/images/block-editor/edit-your-site.gif?1"
+      }),
+      content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
+          className: "edit-site-welcome-guide__heading",
+          children: (0,external_wp_i18n_namespaceObject.__)('Edit your site')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+          className: "edit-site-welcome-guide__text",
+          children: (0,external_wp_i18n_namespaceObject.__)('Design everything on your site — from the header right down to the footer — using blocks.')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+          className: "edit-site-welcome-guide__text",
+          children: (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.__)('Click <StylesIconImage /> to start designing your blocks, and choose your typography, layout, and colors.'), {
+            StylesIconImage: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
+              alt: (0,external_wp_i18n_namespaceObject.__)('styles'),
+              src: "data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' fill='%231E1E1E'/%3E%3C/svg%3E%0A"
+            })
+          })
+        })]
+      })
+    }]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/styles.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  interfaceStore: styles_interfaceStore
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+function WelcomeGuideStyles() {
+  const {
+    toggle
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
+  const {
+    isActive,
+    isStylesOpen
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const sidebar = select(styles_interfaceStore).getActiveComplementaryArea('core');
+    return {
+      isActive: !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuideStyles'),
+      isStylesOpen: sidebar === 'edit-site/global-styles'
+    };
+  }, []);
+  if (!isActive || !isStylesOpen) {
+    return null;
+  }
+  const welcomeLabel = (0,external_wp_i18n_namespaceObject.__)('Welcome to Styles');
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Guide, {
+    className: "edit-site-welcome-guide guide-styles",
+    contentLabel: welcomeLabel,
+    finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Get started'),
+    onFinish: () => toggle('core/edit-site', 'welcomeGuideStyles'),
+    pages: [{
+      image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideImage, {
+        nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.svg?1",
+        animatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.gif?1"
+      }),
+      content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
+          className: "edit-site-welcome-guide__heading",
+          children: welcomeLabel
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+          className: "edit-site-welcome-guide__text",
+          children: (0,external_wp_i18n_namespaceObject.__)('Tweak your site, or give it a whole new look! Get creative — how about a new color palette for your buttons, or choosing a new font? Take a look at what you can do here.')
+        })]
+      })
+    }, {
+      image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideImage, {
+        nonAnimatedSrc: "https://s.w.org/images/block-editor/set-the-design.svg?1",
+        animatedSrc: "https://s.w.org/images/block-editor/set-the-design.gif?1"
+      }),
+      content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
+          className: "edit-site-welcome-guide__heading",
+          children: (0,external_wp_i18n_namespaceObject.__)('Set the design')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+          className: "edit-site-welcome-guide__text",
+          children: (0,external_wp_i18n_namespaceObject.__)('You can customize your site as much as you like with different colors, typography, and layouts. Or if you prefer, just leave it up to your theme to handle!')
+        })]
+      })
+    }, {
+      image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideImage, {
+        nonAnimatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.svg?1",
+        animatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.gif?1"
+      }),
+      content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
+          className: "edit-site-welcome-guide__heading",
+          children: (0,external_wp_i18n_namespaceObject.__)('Personalize blocks')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+          className: "edit-site-welcome-guide__text",
+          children: (0,external_wp_i18n_namespaceObject.__)('You can adjust your blocks to ensure a cohesive experience across your site — add your unique colors to a branded Button block, or adjust the Heading block to your preferred size.')
+        })]
+      })
+    }, {
+      image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideImage, {
+        nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.svg",
+        animatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.gif"
+      }),
+      content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
+          className: "edit-site-welcome-guide__heading",
+          children: (0,external_wp_i18n_namespaceObject.__)('Learn more')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("p", {
+          className: "edit-site-welcome-guide__text",
+          children: [(0,external_wp_i18n_namespaceObject.__)('New to block themes and styling your site?'), ' ', /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, {
+            href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/documentation/article/styles-overview/'),
+            children: (0,external_wp_i18n_namespaceObject.__)('Here’s a detailed guide to learn how to make the most of it.')
+          })]
+        })]
+      })
+    }]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/page.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+function WelcomeGuidePage() {
+  const {
+    toggle
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
+  const isVisible = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const isPageActive = !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuidePage');
+    const isEditorActive = !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuide');
+    const {
+      isPage
+    } = select(store);
+    return isPageActive && !isEditorActive && isPage();
+  }, []);
+  if (!isVisible) {
+    return null;
+  }
+  const heading = (0,external_wp_i18n_namespaceObject.__)('Editing a page');
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Guide, {
+    className: "edit-site-welcome-guide guide-page",
+    contentLabel: heading,
+    finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Continue'),
+    onFinish: () => toggle('core/edit-site', 'welcomeGuidePage'),
+    pages: [{
+      image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", {
+        className: "edit-site-welcome-guide__video",
+        autoPlay: true,
+        loop: true,
+        muted: true,
+        width: "312",
+        height: "240",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("source", {
+          src: "https://s.w.org/images/block-editor/editing-your-page.mp4",
+          type: "video/mp4"
+        })
+      }),
+      content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
+          className: "edit-site-welcome-guide__heading",
+          children: heading
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+          className: "edit-site-welcome-guide__text",
+          children: (0,external_wp_i18n_namespaceObject.__)('It’s now possible to edit page content in the site editor. To customise other parts of the page like the header and footer switch to editing the template using the settings sidebar.')
+        })]
+      })
+    }]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/template.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+function WelcomeGuideTemplate() {
+  const {
+    toggle
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
+  const isVisible = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const isTemplateActive = !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuideTemplate');
+    const isEditorActive = !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuide');
+    const {
+      isPage
+    } = select(store);
+    const {
+      getCurrentPostType
+    } = select(external_wp_editor_namespaceObject.store);
+    return isTemplateActive && !isEditorActive && isPage() && getCurrentPostType() === 'wp_template';
+  }, []);
+  if (!isVisible) {
+    return null;
+  }
+  const heading = (0,external_wp_i18n_namespaceObject.__)('Editing a template');
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Guide, {
+    className: "edit-site-welcome-guide guide-template",
+    contentLabel: heading,
+    finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Continue'),
+    onFinish: () => toggle('core/edit-site', 'welcomeGuideTemplate'),
+    pages: [{
+      image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", {
+        className: "edit-site-welcome-guide__video",
+        autoPlay: true,
+        loop: true,
+        muted: true,
+        width: "312",
+        height: "240",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("source", {
+          src: "https://s.w.org/images/block-editor/editing-your-template.mp4",
+          type: "video/mp4"
+        })
+      }),
+      content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
+          className: "edit-site-welcome-guide__heading",
+          children: heading
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+          className: "edit-site-welcome-guide__text",
+          children: (0,external_wp_i18n_namespaceObject.__)('Note that the same template can be used by multiple pages, so any changes made here may affect other pages on the site. To switch back to editing the page content click the ‘Back’ button in the toolbar.')
+        })]
+      })
+    }]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/index.js
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+function WelcomeGuide() {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideEditor, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideStyles, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuidePage, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideTemplate, {})]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles-renderer/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  useGlobalStylesOutput
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function useGlobalStylesRenderer() {
+  const postType = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    return select(store).getEditedPostType();
+  });
+  const [styles, settings] = useGlobalStylesOutput(postType !== TEMPLATE_POST_TYPE);
+  const {
+    getSettings
+  } = (0,external_wp_data_namespaceObject.useSelect)(store);
+  const {
+    updateSettings
+  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    var _currentStoreSettings;
+    if (!styles || !settings) {
+      return;
+    }
+    const currentStoreSettings = getSettings();
+    const nonGlobalStyles = Object.values((_currentStoreSettings = currentStoreSettings.styles) !== null && _currentStoreSettings !== void 0 ? _currentStoreSettings : []).filter(style => !style.isGlobalStyles);
+    updateSettings({
+      ...currentStoreSettings,
+      styles: [...nonGlobalStyles, ...styles],
+      __experimentalFeatures: settings
+    });
+  }, [styles, settings, updateSettings, getSettings]);
+}
+function GlobalStylesRenderer() {
+  useGlobalStylesRenderer();
+  return null;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/canvas-loader/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  Theme
+} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+const {
+  useGlobalStyle: canvas_loader_useGlobalStyle
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function CanvasLoader({
+  id
+}) {
+  var _highlightedColors$0$;
+  const [fallbackIndicatorColor] = canvas_loader_useGlobalStyle('color.text');
+  const [backgroundColor] = canvas_loader_useGlobalStyle('color.background');
+  const {
+    highlightedColors
+  } = useStylesPreviewColors();
+  const indicatorColor = (_highlightedColors$0$ = highlightedColors[0]?.color) !== null && _highlightedColors$0$ !== void 0 ? _highlightedColors$0$ : fallbackIndicatorColor;
+  const {
+    elapsed,
+    total
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    var _selectorsByStatus$re, _selectorsByStatus$fi;
+    const selectorsByStatus = select(external_wp_coreData_namespaceObject.store).countSelectorsByStatus();
+    const resolving = (_selectorsByStatus$re = selectorsByStatus.resolving) !== null && _selectorsByStatus$re !== void 0 ? _selectorsByStatus$re : 0;
+    const finished = (_selectorsByStatus$fi = selectorsByStatus.finished) !== null && _selectorsByStatus$fi !== void 0 ? _selectorsByStatus$fi : 0;
+    return {
+      elapsed: finished,
+      total: finished + resolving
+    };
+  }, []);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    className: "edit-site-canvas-loader",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Theme, {
+      accent: indicatorColor,
+      background: backgroundColor,
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ProgressBar, {
+        id: id,
+        max: total,
+        value: elapsed
+      })
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/convert-to-regular.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+function ConvertToRegularBlocks({
+  clientId,
+  onClose
+}) {
+  const {
+    getBlocks
+  } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store);
+  const {
+    replaceBlocks
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
+  const canRemove = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).canRemoveBlock(clientId), [clientId]);
+  if (!canRemove) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+    onClick: () => {
+      replaceBlocks(clientId, getBlocks(clientId));
+      onClose();
+    },
+    children: (0,external_wp_i18n_namespaceObject.__)('Detach')
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol-filled.js
+/**
+ * WordPress dependencies
+ */
+
+
+const symbolFilled = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"
+  })
+});
+/* harmony default export */ const symbol_filled = (symbolFilled);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/convert-to-template-part.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  CreateTemplatePartModal
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+function ConvertToTemplatePart({
+  clientIds,
+  blocks
+}) {
   const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
   const {
-    editEntityRecord,
-    saveEditedEntityRecord
+    replaceBlocks
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
+  const {
+    createSuccessNotice
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
+  const {
+    canCreate
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      supportsTemplatePartsMode
+    } = select(store).getSettings();
+    return {
+      canCreate: !supportsTemplatePartsMode
+    };
+  }, []);
+  if (!canCreate) {
+    return null;
+  }
+  const onConvert = async templatePart => {
+    replaceBlocks(clientIds, (0,external_wp_blocks_namespaceObject.createBlock)('core/template-part', {
+      slug: templatePart.slug,
+      theme: templatePart.theme
+    }));
+    createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Template part created.'), {
+      type: 'snackbar'
+    });
+
+    // The modal and this component will be unmounted because of `replaceBlocks` above,
+    // so no need to call `closeModal` or `onClose`.
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+      icon: symbol_filled,
+      onClick: () => {
+        setIsModalOpen(true);
+      },
+      "aria-expanded": isModalOpen,
+      "aria-haspopup": "dialog",
+      children: (0,external_wp_i18n_namespaceObject.__)('Create template part')
+    }), isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CreateTemplatePartModal, {
+      closeModal: () => {
+        setIsModalOpen(false);
+      },
+      blocks: blocks,
+      onCreate: onConvert
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+function TemplatePartConverter() {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, {
+    children: ({
+      selectedClientIds,
+      onClose
+    }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplatePartConverterMenuItem, {
+      clientIds: selectedClientIds,
+      onClose: onClose
+    })
+  });
+}
+function TemplatePartConverterMenuItem({
+  clientIds,
+  onClose
+}) {
+  const {
+    isContentOnly,
+    blocks
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getBlocksByClientId,
+      getBlockEditingMode
+    } = select(external_wp_blockEditor_namespaceObject.store);
+    return {
+      blocks: getBlocksByClientId(clientIds),
+      isContentOnly: clientIds.length === 1 && getBlockEditingMode(clientIds[0]) === 'contentOnly'
+    };
+  }, [clientIds]);
+
+  // Do not show the convert button if the block is in content-only mode.
+  if (isContentOnly) {
+    return null;
+  }
+
+  // Allow converting a single template part to standard blocks.
+  if (blocks.length === 1 && blocks[0]?.name === 'core/template-part') {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ConvertToRegularBlocks, {
+      clientId: clientIds[0],
+      onClose: onClose
+    });
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ConvertToTemplatePart, {
+    clientIds: clientIds,
+    blocks: blocks
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/use-navigate-to-entity-record.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+const {
+  useHistory: use_navigate_to_entity_record_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function useNavigateToEntityRecord() {
+  const history = use_navigate_to_entity_record_useHistory();
+  const onNavigateToEntityRecord = (0,external_wp_element_namespaceObject.useCallback)(params => {
+    history.push({
+      ...params,
+      focusMode: true,
+      canvas: 'edit'
+    });
+  }, [history]);
+  return onNavigateToEntityRecord;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/use-site-editor-settings.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  useBlockEditorSettings
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+const {
+  useLocation: use_site_editor_settings_useLocation,
+  useHistory: use_site_editor_settings_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function useArchiveLabel(templateSlug) {
+  const taxonomyMatches = templateSlug?.match(/^(category|tag|taxonomy-([^-]+))$|^(((category|tag)|taxonomy-([^-]+))-(.+))$/);
+  let taxonomy;
+  let term;
+  let isAuthor = false;
+  let authorSlug;
+  if (taxonomyMatches) {
+    // If is for a all taxonomies of a type
+    if (taxonomyMatches[1]) {
+      taxonomy = taxonomyMatches[2] ? taxonomyMatches[2] : taxonomyMatches[1];
+    }
+    // If is for a all taxonomies of a type
+    else if (taxonomyMatches[3]) {
+      taxonomy = taxonomyMatches[6] ? taxonomyMatches[6] : taxonomyMatches[4];
+      term = taxonomyMatches[7];
+    }
+    taxonomy = taxonomy === 'tag' ? 'post_tag' : taxonomy;
+
+    //getTaxonomy( 'category' );
+    //wp.data.select('core').getEntityRecords( 'taxonomy', 'category', {slug: 'newcat'} );
+  } else {
+    const authorMatches = templateSlug?.match(/^(author)$|^author-(.+)$/);
+    if (authorMatches) {
+      isAuthor = true;
+      if (authorMatches[2]) {
+        authorSlug = authorMatches[2];
+      }
+    }
+  }
+  return (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEntityRecords,
+      getTaxonomy,
+      getAuthors
+    } = select(external_wp_coreData_namespaceObject.store);
+    let archiveTypeLabel;
+    let archiveNameLabel;
+    if (taxonomy) {
+      archiveTypeLabel = getTaxonomy(taxonomy)?.labels?.singular_name;
+    }
+    if (term) {
+      const records = getEntityRecords('taxonomy', taxonomy, {
+        slug: term,
+        per_page: 1
+      });
+      if (records && records[0]) {
+        archiveNameLabel = records[0].name;
+      }
+    }
+    if (isAuthor) {
+      archiveTypeLabel = 'Author';
+      if (authorSlug) {
+        const authorRecords = getAuthors({
+          slug: authorSlug
+        });
+        if (authorRecords && authorRecords[0]) {
+          archiveNameLabel = authorRecords[0].name;
+        }
+      }
+    }
+    return {
+      archiveTypeLabel,
+      archiveNameLabel
+    };
+  }, [authorSlug, isAuthor, taxonomy, term]);
+}
+function useNavigateToPreviousEntityRecord() {
+  const location = use_site_editor_settings_useLocation();
+  const previousLocation = (0,external_wp_compose_namespaceObject.usePrevious)(location);
+  const history = use_site_editor_settings_useHistory();
+  const goBack = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const isFocusMode = location.params.focusMode || location.params.postId && FOCUSABLE_ENTITIES.includes(location.params.postType);
+    const didComeFromEditorCanvas = previousLocation?.params.canvas === 'edit';
+    const showBackButton = isFocusMode && didComeFromEditorCanvas;
+    return showBackButton ? () => history.back() : undefined;
+    // Disable reason: previousLocation changes when the component updates for any reason, not
+    // just when location changes. Until this is fixed we can't add it to deps. See
+    // https://github.com/WordPress/gutenberg/pull/58710#discussion_r1479219465.
+    // eslint-disable-next-line react-hooks/exhaustive-deps
+  }, [location, history]);
+  return goBack;
+}
+function useSpecificEditorSettings() {
+  const onNavigateToEntityRecord = useNavigateToEntityRecord();
+  const {
+    templateSlug,
+    canvasMode,
+    settings,
+    postWithTemplate
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEditedPostType,
+      getEditedPostId,
+      getEditedPostContext,
+      getCanvasMode,
+      getSettings
+    } = lock_unlock_unlock(select(store));
+    const {
+      getEditedEntityRecord
+    } = select(external_wp_coreData_namespaceObject.store);
+    const usedPostType = getEditedPostType();
+    const usedPostId = getEditedPostId();
+    const _record = getEditedEntityRecord('postType', usedPostType, usedPostId);
+    const _context = getEditedPostContext();
+    return {
+      templateSlug: _record.slug,
+      canvasMode: getCanvasMode(),
+      settings: getSettings(),
+      postWithTemplate: _context?.postId
+    };
+  }, []);
+  const archiveLabels = useArchiveLabel(templateSlug);
+  const defaultRenderingMode = postWithTemplate ? 'template-locked' : 'post-only';
+  const onNavigateToPreviousEntityRecord = useNavigateToPreviousEntityRecord();
+  const defaultEditorSettings = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return {
+      ...settings,
+      richEditingEnabled: true,
+      supportsTemplateMode: true,
+      focusMode: canvasMode !== 'view',
+      defaultRenderingMode,
+      onNavigateToEntityRecord,
+      onNavigateToPreviousEntityRecord,
+      // I wonder if they should be set in the post editor too
+      __experimentalArchiveTitleTypeLabel: archiveLabels.archiveTypeLabel,
+      __experimentalArchiveTitleNameLabel: archiveLabels.archiveNameLabel,
+      __unstableIsPreviewMode: canvasMode === 'view'
+    };
+  }, [settings, canvasMode, defaultRenderingMode, onNavigateToEntityRecord, onNavigateToPreviousEntityRecord, archiveLabels.archiveTypeLabel, archiveLabels.archiveNameLabel]);
+  return defaultEditorSettings;
+}
+function useSiteEditorSettings() {
+  const defaultEditorSettings = useSpecificEditorSettings();
+  const {
+    postType,
+    postId
+  } = useSelect(select => {
+    const {
+      getEditedPostType,
+      getEditedPostId
+    } = unlock(select(editSiteStore));
+    const usedPostType = getEditedPostType();
+    const usedPostId = getEditedPostId();
+    return {
+      postType: usedPostType,
+      postId: usedPostId
+    };
+  }, []);
+  return useBlockEditorSettings(defaultEditorSettings, postType, postId);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/plugin-template-setting-panel/index.js
+/**
+ * Defines an extensibility slot for the Template sidebar.
+ */
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+const {
+  Fill,
+  Slot
+} = (0,external_wp_components_namespaceObject.createSlotFill)('PluginTemplateSettingPanel');
+const PluginTemplateSettingPanel = ({
+  children
+}) => {
+  external_wp_deprecated_default()('wp.editSite.PluginTemplateSettingPanel', {
+    since: '6.6',
+    version: '6.8',
+    alternative: 'wp.editor.PluginDocumentSettingPanel'
+  });
+  const isCurrentEntityTemplate = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).getCurrentPostType() === 'wp_template', []);
+  if (!isCurrentEntityTemplate) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Fill, {
+    children: children
+  });
+};
+PluginTemplateSettingPanel.Slot = Slot;
+
+/**
+ * Renders items in the Template Sidebar below the main information
+ * like the Template Card.
+ *
+ * @deprecated since 6.6. Use `wp.editor.PluginDocumentSettingPanel` instead.
+ *
+ * @example
+ * ```jsx
+ * // Using ESNext syntax
+ * import { PluginTemplateSettingPanel } from '@wordpress/edit-site';
+ *
+ * const MyTemplateSettingTest = () => (
+ * 		<PluginTemplateSettingPanel>
+ *			<p>Hello, World!</p>
+ *		</PluginTemplateSettingPanel>
+ *	);
+ * ```
+ *
+ * @return {Component} The component to be rendered.
+ */
+/* harmony default export */ const plugin_template_setting_panel = (PluginTemplateSettingPanel);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/seen.js
+/**
+ * WordPress dependencies
+ */
+
+
+const seen = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z"
+  })
+});
+/* harmony default export */ const library_seen = (seen);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/more-vertical.js
+/**
+ * WordPress dependencies
+ */
+
+
+const moreVertical = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"
+  })
+});
+/* harmony default export */ const more_vertical = (moreVertical);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-left.js
+/**
+ * WordPress dependencies
+ */
+
+
+const chevronLeft = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"
+  })
+});
+/* harmony default export */ const chevron_left = (chevronLeft);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-right.js
+/**
+ * WordPress dependencies
+ */
+
+
+const chevronRight = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"
+  })
+});
+/* harmony default export */ const chevron_right = (chevronRight);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/icon-with-current-color.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+function IconWithCurrentColor({
+  className,
+  ...props
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+    className: dist_clsx(className, 'edit-site-global-styles-icon-with-current-color'),
+    ...props
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/navigation-button.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+function GenericNavigationButton({
+  icon,
+  children,
+  ...props
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItem, {
+    ...props,
+    children: [icon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "flex-start",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(IconWithCurrentColor, {
+        icon: icon,
+        size: 24
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        children: children
+      })]
+    }), !icon && children]
+  });
+}
+function NavigationButtonAsItem(props) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalNavigatorButton, {
+    as: GenericNavigationButton,
+    ...props
+  });
+}
+function NavigationBackButtonAsItem(props) {
+  return /*#__PURE__*/_jsx(NavigatorToParentButton, {
+    as: GenericNavigationButton,
+    ...props
+  });
+}
+
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/typography.js
+/**
+ * WordPress dependencies
+ */
+
+
+const typography = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M6.9 7L3 17.8h1.7l1-2.8h4.1l1 2.8h1.7L8.6 7H6.9zm-.7 6.6l1.5-4.3 1.5 4.3h-3zM21.6 17c-.1.1-.2.2-.3.2-.1.1-.2.1-.4.1s-.3-.1-.4-.2c-.1-.1-.1-.3-.1-.6V12c0-.5 0-1-.1-1.4-.1-.4-.3-.7-.5-1-.2-.2-.5-.4-.9-.5-.4 0-.8-.1-1.3-.1s-1 .1-1.4.2c-.4.1-.7.3-1 .4-.2.2-.4.3-.6.5-.1.2-.2.4-.2.7 0 .3.1.5.2.8.2.2.4.3.8.3.3 0 .6-.1.8-.3.2-.2.3-.4.3-.7 0-.3-.1-.5-.2-.7-.2-.2-.4-.3-.6-.4.2-.2.4-.3.7-.4.3-.1.6-.1.8-.1.3 0 .6 0 .8.1.2.1.4.3.5.5.1.2.2.5.2.9v1.1c0 .3-.1.5-.3.6-.2.2-.5.3-.9.4-.3.1-.7.3-1.1.4-.4.1-.8.3-1.1.5-.3.2-.6.4-.8.7-.2.3-.3.7-.3 1.2 0 .6.2 1.1.5 1.4.3.4.9.5 1.6.5.5 0 1-.1 1.4-.3.4-.2.8-.6 1.1-1.1 0 .4.1.7.3 1 .2.3.6.4 1.2.4.4 0 .7-.1.9-.2.2-.1.5-.3.7-.4h-.3zm-3-.9c-.2.4-.5.7-.8.8-.3.2-.6.2-.8.2-.4 0-.6-.1-.9-.3-.2-.2-.3-.6-.3-1.1 0-.5.1-.9.3-1.2s.5-.5.8-.7c.3-.2.7-.3 1-.5.3-.1.6-.3.7-.6v3.4z"
+  })
+});
+/* harmony default export */ const library_typography = (typography);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/color.js
+/**
+ * WordPress dependencies
+ */
+
+
+const color = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3zm-5.1 7.6c-2.5 0-4.6-2.1-4.6-4.6 0-.3.1-1 .8-2.3.5-.9 1.1-1.9 2-3.1.7-.9 1.3-1.7 1.8-2.3.7.8 1.3 1.6 1.8 2.3.8 1.1 1.5 2.2 2 3.1.7 1.3.8 2 .8 2.3 0 2.5-2.1 4.6-4.6 4.6z"
+  })
+});
+/* harmony default export */ const library_color = (color);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/shadow.js
+/**
+ * WordPress dependencies
+ */
+
+
+const shadow = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M12 8c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm0 6.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5zM12.8 3h-1.5v3h1.5V3zm-1.6 18h1.5v-3h-1.5v3zm6.8-9.8v1.5h3v-1.5h-3zm-12 0H3v1.5h3v-1.5zm9.7 5.6 2.1 2.1 1.1-1.1-2.1-2.1-1.1 1.1zM8.3 7.2 6.2 5.1 5.1 6.2l2.1 2.1 1.1-1.1zM5.1 17.8l1.1 1.1 2.1-2.1-1.1-1.1-2.1 2.1zM18.9 6.2l-1.1-1.1-2.1 2.1 1.1 1.1 2.1-2.1z"
+  })
+});
+/* harmony default export */ const library_shadow = (shadow);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/root-menu.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  useHasDimensionsPanel,
+  useHasTypographyPanel,
+  useHasColorPanel,
+  useGlobalSetting: root_menu_useGlobalSetting,
+  useSettingsForBlockElement
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function RootMenu() {
+  const [rawSettings] = root_menu_useGlobalSetting('');
+  const settings = useSettingsForBlockElement(rawSettings);
+  const hasTypographyPanel = useHasTypographyPanel(settings);
+  const hasColorPanel = useHasColorPanel(settings);
+  const hasShadowPanel = true; // useHasShadowPanel( settings );
+  const hasDimensionsPanel = useHasDimensionsPanel(settings);
+  const hasLayoutPanel = hasDimensionsPanel;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+      children: [hasTypographyPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+        icon: library_typography,
+        path: "/typography",
+        "aria-label": (0,external_wp_i18n_namespaceObject.__)('Typography styles'),
+        children: (0,external_wp_i18n_namespaceObject.__)('Typography')
+      }), hasColorPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+        icon: library_color,
+        path: "/colors",
+        "aria-label": (0,external_wp_i18n_namespaceObject.__)('Colors styles'),
+        children: (0,external_wp_i18n_namespaceObject.__)('Colors')
+      }), hasShadowPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+        icon: library_shadow,
+        path: "/shadows",
+        "aria-label": (0,external_wp_i18n_namespaceObject.__)('Shadow styles'),
+        children: (0,external_wp_i18n_namespaceObject.__)('Shadows')
+      }), hasLayoutPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+        icon: library_layout,
+        path: "/layout",
+        "aria-label": (0,external_wp_i18n_namespaceObject.__)('Layout styles'),
+        children: (0,external_wp_i18n_namespaceObject.__)('Layout')
+      })]
+    })
+  });
+}
+/* harmony default export */ const root_menu = (RootMenu);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/preview-styles.js
+function findNearest(input, numbers) {
+  // If the numbers array is empty, return null
+  if (numbers.length === 0) {
+    return null;
+  }
+  // Sort the array based on the absolute difference with the input
+  numbers.sort((a, b) => Math.abs(input - a) - Math.abs(input - b));
+  // Return the first element (which will be the nearest) from the sorted array
+  return numbers[0];
+}
+function extractFontWeights(fontFaces) {
+  const result = [];
+  fontFaces.forEach(face => {
+    const weights = String(face.fontWeight).split(' ');
+    if (weights.length === 2) {
+      const start = parseInt(weights[0]);
+      const end = parseInt(weights[1]);
+      for (let i = start; i <= end; i += 100) {
+        result.push(i);
+      }
+    } else if (weights.length === 1) {
+      result.push(parseInt(weights[0]));
+    }
+  });
+  return result;
+}
+
+/*
+ * Format the font family to use in the CSS font-family property of a CSS rule.
+ *
+ * The input can be a string with the font family name or a string with multiple font family names separated by commas.
+ * It follows the recommendations from the CSS Fonts Module Level 4.
+ * https://www.w3.org/TR/css-fonts-4/#font-family-prop
+ *
+ * @param {string} input - The font family.
+ * @return {string} The formatted font family.
+ *
+ * Example:
+ * formatFontFamily( "Open Sans, Font+Name, sans-serif" ) => '"Open Sans", "Font+Name", sans-serif'
+ * formatFontFamily( "'Open Sans', generic(kai), sans-serif" ) => '"Open Sans", sans-serif'
+ * formatFontFamily( "DotGothic16, Slabo 27px, serif" ) => '"DotGothic16","Slabo 27px",serif'
+ * formatFontFamily( "Mine's, Moe's Typography" ) => `"mine's","Moe's Typography"`
+ */
+function formatFontFamily(input) {
+  // Matches strings that are not exclusively alphabetic characters or hyphens, and do not exactly follow the pattern generic(alphabetic characters or hyphens).
+  const regex = /^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/;
+  const output = input.trim();
+  const formatItem = item => {
+    item = item.trim();
+    if (item.match(regex)) {
+      // removes leading and trailing quotes.
+      item = item.replace(/^["']|["']$/g, '');
+      return `"${item}"`;
+    }
+    return item;
+  };
+  if (output.includes(',')) {
+    return output.split(',').map(formatItem).filter(item => item !== '').join(', ');
+  }
+  return formatItem(output);
+}
+
+/*
+ * Format the font face name to use in the font-family property of a font face.
+ *
+ * The input can be a string with the font face name or a string with multiple font face names separated by commas.
+ * It removes the leading and trailing quotes from the font face name.
+ *
+ * @param {string} input - The font face name.
+ * @return {string} The formatted font face name.
+ *
+ * Example:
+ * formatFontFaceName("Open Sans") => "Open Sans"
+ * formatFontFaceName("'Open Sans', sans-serif") => "Open Sans"
+ * formatFontFaceName(", 'Open Sans', 'Helvetica Neue', sans-serif") => "Open Sans"
+ */
+function formatFontFaceName(input) {
+  if (!input) {
+    return '';
+  }
+  let output = input.trim();
+  if (output.includes(',')) {
+    output = output.split(',')
+    // finds the first item that is not an empty string.
+    .find(item => item.trim() !== '').trim();
+  }
+  // removes leading and trailing quotes.
+  output = output.replace(/^["']|["']$/g, '');
+
+  // Firefox needs the font name to be wrapped in double quotes meanwhile other browsers don't.
+  if (window.navigator.userAgent.toLowerCase().includes('firefox')) {
+    output = `"${output}"`;
+  }
+  return output;
+}
+function getFamilyPreviewStyle(family) {
+  const style = {
+    fontFamily: formatFontFamily(family.fontFamily)
+  };
+  if (!Array.isArray(family.fontFace)) {
+    style.fontWeight = '400';
+    style.fontStyle = 'normal';
+    return style;
+  }
+  if (family.fontFace) {
+    //get all the font faces with normal style
+    const normalFaces = family.fontFace.filter(face => face?.fontStyle && face.fontStyle.toLowerCase() === 'normal');
+    if (normalFaces.length > 0) {
+      style.fontStyle = 'normal';
+      const normalWeights = extractFontWeights(normalFaces);
+      const nearestWeight = findNearest(400, normalWeights);
+      style.fontWeight = String(nearestWeight) || '400';
+    } else {
+      style.fontStyle = family.fontFace.length && family.fontFace[0].fontStyle || 'normal';
+      style.fontWeight = family.fontFace.length && String(family.fontFace[0].fontWeight) || '400';
+    }
+  }
+  return style;
+}
+function getFacePreviewStyle(face) {
+  return {
+    fontFamily: formatFontFamily(face.fontFamily),
+    fontStyle: face.fontStyle || 'normal',
+    fontWeight: face.fontWeight || '400'
+  };
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/utils.js
+/**
+ *
+ * @param {string} variation The variation name.
+ *
+ * @return {string} The variation class name.
+ */
+function getVariationClassName(variation) {
+  if (!variation) {
+    return '';
+  }
+  return `is-style-${variation}`;
+}
+
+/**
+ * Iterates through the presets array and searches for slugs that start with the specified
+ * slugPrefix followed by a numerical suffix. It identifies the highest numerical suffix found
+ * and returns one greater than the highest found suffix, ensuring that the new index is unique.
+ *
+ * @param {Array}  presets    The array of preset objects, each potentially containing a slug property.
+ * @param {string} slugPrefix The prefix to look for in the preset slugs.
+ *
+ * @return {number} The next available index for a preset with the specified slug prefix, or 1 if no matching slugs are found.
+ */
+function getNewIndexFromPresets(presets, slugPrefix) {
+  const nameRegex = new RegExp(`^${slugPrefix}([\\d]+)$`);
+  const highestPresetValue = presets.reduce((currentHighest, preset) => {
+    if (typeof preset?.slug === 'string') {
+      const matches = preset?.slug.match(nameRegex);
+      if (matches) {
+        const id = parseInt(matches[1], 10);
+        if (id > currentHighest) {
+          return id;
+        }
+      }
+    }
+    return currentHighest;
+  }, 0);
+  return highestPresetValue + 1;
+}
+function getFontFamilyFromSetting(fontFamilies, setting) {
+  if (!Array.isArray(fontFamilies) || !setting) {
+    return null;
+  }
+  const fontFamilyVariable = setting.replace('var(', '').replace(')', '');
+  const fontFamilySlug = fontFamilyVariable?.split('--').slice(-1)[0];
+  return fontFamilies.find(fontFamily => fontFamily.slug === fontFamilySlug);
+}
+function getFontFamilies(themeJson) {
+  const fontFamilies = themeJson?.settings?.typography?.fontFamilies?.theme; // TODO this could not be under theme.
+  const bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily;
+  const bodyFontFamily = getFontFamilyFromSetting(fontFamilies, bodyFontFamilySetting);
+  const headingFontFamilySetting = themeJson?.styles?.elements?.heading?.typography?.fontFamily;
+  let headingFontFamily;
+  if (!headingFontFamilySetting) {
+    headingFontFamily = bodyFontFamily;
+  } else {
+    headingFontFamily = getFontFamilyFromSetting(fontFamilies, themeJson?.styles?.elements?.heading?.typography?.fontFamily);
+  }
+  return [bodyFontFamily, headingFontFamily];
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-example.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  GlobalStylesContext: typography_example_GlobalStylesContext
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const {
+  mergeBaseAndUserConfigs: typography_example_mergeBaseAndUserConfigs
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+function PreviewTypography({
+  fontSize,
+  variation
+}) {
+  const {
+    base
+  } = (0,external_wp_element_namespaceObject.useContext)(typography_example_GlobalStylesContext);
+  let config = base;
+  if (variation) {
+    config = typography_example_mergeBaseAndUserConfigs(base, variation);
+  }
+  const [bodyFontFamilies, headingFontFamilies] = getFontFamilies(config);
+  const bodyPreviewStyle = bodyFontFamilies ? getFamilyPreviewStyle(bodyFontFamilies) : {};
+  const headingPreviewStyle = headingFontFamilies ? getFamilyPreviewStyle(headingFontFamilies) : {};
+  if (fontSize) {
+    bodyPreviewStyle.fontSize = fontSize;
+    headingPreviewStyle.fontSize = fontSize;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__unstableMotion.div, {
+    animate: {
+      scale: 1,
+      opacity: 1
+    },
+    initial: {
+      scale: 0.1,
+      opacity: 0
+    },
+    transition: {
+      delay: 0.3,
+      type: 'tween'
+    },
+    style: {
+      textAlign: 'center'
+    },
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+      style: headingPreviewStyle,
+      children: (0,external_wp_i18n_namespaceObject._x)('A', 'Uppercase letter A')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+      style: bodyPreviewStyle,
+      children: (0,external_wp_i18n_namespaceObject._x)('a', 'Lowercase letter A')
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/highlighted-colors.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+function HighlightedColors({
+  normalizedColorSwatchSize,
+  ratio
+}) {
+  const {
+    highlightedColors
+  } = useStylesPreviewColors();
+  const scaledSwatchSize = normalizedColorSwatchSize * ratio;
+  return highlightedColors.map(({
+    slug,
+    color
+  }, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
+    style: {
+      height: scaledSwatchSize,
+      width: scaledSwatchSize,
+      background: color,
+      borderRadius: scaledSwatchSize / 2
+    },
+    animate: {
+      scale: 1,
+      opacity: 1
+    },
+    initial: {
+      scale: 0.1,
+      opacity: 0
+    },
+    transition: {
+      delay: index === 1 ? 0.2 : 0.1
+    }
+  }, `${slug}-${index}`));
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview-iframe.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  useGlobalStyle: preview_iframe_useGlobalStyle,
+  useGlobalStylesOutput: preview_iframe_useGlobalStylesOutput
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const normalizedWidth = 248;
+const normalizedHeight = 152;
+
+// Throttle options for useThrottle. Must be defined outside of the component,
+// so that the object reference is the same on each render.
+const THROTTLE_OPTIONS = {
+  leading: true,
+  trailing: true
+};
+function PreviewIframe({
+  children,
+  label,
+  isFocused,
+  withHoverView
+}) {
+  const [backgroundColor = 'white'] = preview_iframe_useGlobalStyle('color.background');
+  const [gradientValue] = preview_iframe_useGlobalStyle('color.gradient');
+  const [styles] = preview_iframe_useGlobalStylesOutput();
+  const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
+  const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [containerResizeListener, {
+    width
+  }] = (0,external_wp_compose_namespaceObject.useResizeObserver)();
+  const [throttledWidth, setThrottledWidthState] = (0,external_wp_element_namespaceObject.useState)(width);
+  const [ratioState, setRatioState] = (0,external_wp_element_namespaceObject.useState)();
+  const setThrottledWidth = (0,external_wp_compose_namespaceObject.useThrottle)(setThrottledWidthState, 250, THROTTLE_OPTIONS);
+
+  // Must use useLayoutEffect to avoid a flash of the iframe at the wrong
+  // size before the width is set.
+  (0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
+    if (width) {
+      setThrottledWidth(width);
+    }
+  }, [width, setThrottledWidth]);
+
+  // Must use useLayoutEffect to avoid a flash of the iframe at the wrong
+  // size before the width is set.
+  (0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
+    const newRatio = throttledWidth ? throttledWidth / normalizedWidth : 1;
+    const ratioDiff = newRatio - (ratioState || 0);
+
+    // Only update the ratio state if the difference is big enough
+    // or if the ratio state is not yet set. This is to avoid an
+    // endless loop of updates at particular viewport heights when the
+    // presence of a scrollbar causes the width to change slightly.
+    const isRatioDiffBigEnough = Math.abs(ratioDiff) > 0.1;
+    if (isRatioDiffBigEnough || !ratioState) {
+      setRatioState(newRatio);
+    }
+  }, [throttledWidth, ratioState]);
+
+  // Set a fallbackRatio to use before the throttled ratio has been set.
+  const fallbackRatio = width ? width / normalizedWidth : 1;
+  /*
+   * Use the throttled ratio if it has been calculated, otherwise
+   * use the fallback ratio. The throttled ratio is used to avoid
+   * an endless loop of updates at particular viewport heights.
+   * See: https://github.com/WordPress/gutenberg/issues/55112
+   */
+  const ratio = ratioState ? ratioState : fallbackRatio;
+
+  /*
+   * Reset leaked styles from WP common.css and remove main content layout padding and border.
+   * Add pointer cursor to the body to indicate the iframe is interactive,
+   * similar to Typography variation previews.
+   */
+  const editorStyles = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (styles) {
+      return [...styles, {
+        css: 'html{overflow:hidden}body{min-width: 0;padding: 0;border: none;cursor: pointer;}',
+        isGlobalStyles: true
+      }];
+    }
+    return styles;
+  }, [styles]);
+  const isReady = !!width;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      style: {
+        position: 'relative'
+      },
+      children: containerResizeListener
+    }), isReady && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.__unstableIframe, {
+      className: "edit-site-global-styles-preview__iframe",
+      style: {
+        height: normalizedHeight * ratio
+      },
+      onMouseEnter: () => setIsHovered(true),
+      onMouseLeave: () => setIsHovered(false),
+      tabIndex: -1,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, {
+        styles: editorStyles
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
+        style: {
+          height: normalizedHeight * ratio,
+          width: '100%',
+          background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor,
+          cursor: withHoverView ? 'pointer' : undefined
+        },
+        initial: "start",
+        animate: (isHovered || isFocused) && !disableMotion && label ? 'hover' : 'start',
+        children: [].concat(children) // This makes sure children is always an array.
+        .map((child, key) => child({
+          ratio,
+          key
+        }))
+      })]
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview-styles.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  useGlobalStyle: preview_styles_useGlobalStyle
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const firstFrameVariants = {
+  start: {
+    scale: 1,
+    opacity: 1
+  },
+  hover: {
+    scale: 0,
+    opacity: 0
+  }
+};
+const midFrameVariants = {
+  hover: {
+    opacity: 1
+  },
+  start: {
+    opacity: 0.5
+  }
+};
+const secondFrameVariants = {
+  hover: {
+    scale: 1,
+    opacity: 1
+  },
+  start: {
+    scale: 0,
+    opacity: 0
+  }
+};
+const PreviewStyles = ({
+  label,
+  isFocused,
+  withHoverView,
+  variation
+}) => {
+  const [fontWeight] = preview_styles_useGlobalStyle('typography.fontWeight');
+  const [fontFamily = 'serif'] = preview_styles_useGlobalStyle('typography.fontFamily');
+  const [headingFontFamily = fontFamily] = preview_styles_useGlobalStyle('elements.h1.typography.fontFamily');
+  const [headingFontWeight = fontWeight] = preview_styles_useGlobalStyle('elements.h1.typography.fontWeight');
+  const [textColor = 'black'] = preview_styles_useGlobalStyle('color.text');
+  const [headingColor = textColor] = preview_styles_useGlobalStyle('elements.h1.color.text');
+  const {
+    paletteColors
+  } = useStylesPreviewColors();
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(PreviewIframe, {
+    label: label,
+    isFocused: isFocused,
+    withHoverView: withHoverView,
+    children: [({
+      ratio,
+      key
+    }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
+      variants: firstFrameVariants,
+      style: {
+        height: '100%',
+        overflow: 'hidden'
+      },
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        spacing: 10 * ratio,
+        justify: "center",
+        style: {
+          height: '100%',
+          overflow: 'hidden'
+        },
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewTypography, {
+          fontSize: 65 * ratio,
+          variation: variation
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
+          spacing: 4 * ratio,
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(HighlightedColors, {
+            normalizedColorSwatchSize: 32,
+            ratio: ratio
+          })
+        })]
+      })
+    }, key), ({
+      key
+    }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
+      variants: withHoverView && midFrameVariants,
+      style: {
+        height: '100%',
+        width: '100%',
+        position: 'absolute',
+        top: 0,
+        overflow: 'hidden',
+        filter: 'blur(60px)',
+        opacity: 0.1
+      },
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+        spacing: 0,
+        justify: "flex-start",
+        style: {
+          height: '100%',
+          overflow: 'hidden'
+        },
+        children: paletteColors.slice(0, 4).map(({
+          color
+        }, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          style: {
+            height: '100%',
+            background: color,
+            flexGrow: 1
+          }
+        }, index))
+      })
+    }, key), ({
+      ratio,
+      key
+    }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
+      variants: secondFrameVariants,
+      style: {
+        height: '100%',
+        width: '100%',
+        overflow: 'hidden',
+        position: 'absolute',
+        top: 0
+      },
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
+        spacing: 3 * ratio,
+        justify: "center",
+        style: {
+          height: '100%',
+          overflow: 'hidden',
+          padding: 10 * ratio,
+          boxSizing: 'border-box'
+        },
+        children: label && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          style: {
+            fontSize: 40 * ratio,
+            fontFamily: headingFontFamily,
+            color: headingColor,
+            fontWeight: headingFontWeight,
+            lineHeight: '1em',
+            textAlign: 'center'
+          },
+          children: label
+        })
+      })
+    }, key)]
+  });
+};
+/* harmony default export */ const preview_styles = (PreviewStyles);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-root.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+const {
+  useGlobalStyle: screen_root_useGlobalStyle
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function ScreenRoot() {
+  const [customCSS] = screen_root_useGlobalStyle('css');
+  const {
+    hasVariations,
+    canEditCSS
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEntityRecord,
+      __experimentalGetCurrentGlobalStylesId,
+      __experimentalGetCurrentThemeGlobalStylesVariations
+    } = select(external_wp_coreData_namespaceObject.store);
+    const globalStylesId = __experimentalGetCurrentGlobalStylesId();
+    const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
+    return {
+      hasVariations: !!__experimentalGetCurrentThemeGlobalStylesVariations()?.length,
+      canEditCSS: !!globalStyles?._links?.['wp:action-edit-css']
+    };
+  }, []);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Card, {
+    size: "small",
+    className: "edit-site-global-styles-screen-root",
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardBody, {
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+        spacing: 4,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Card, {
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardMedia, {
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(preview_styles, {})
+          })
+        }), hasVariations && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+            path: "/variations",
+            "aria-label": (0,external_wp_i18n_namespaceObject.__)('Browse styles'),
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+              justify: "space-between",
+              children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+                children: (0,external_wp_i18n_namespaceObject.__)('Browse styles')
+              }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(IconWithCurrentColor, {
+                icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
+              })]
+            })
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(root_menu, {})]
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardDivider, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.CardBody, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+        as: "p",
+        paddingTop: 2
+        /*
+         * 13px matches the text inset of the NavigationButton (12px padding, plus the width of the button's border).
+         * This is an ad hoc override for this instance and the Addtional CSS option below. Other options for matching the
+         * the nav button inset should be looked at before reusing further.
+         */,
+        paddingX: "13px",
+        marginBottom: 4,
+        children: (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of specific blocks for the whole site.')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+          path: "/blocks",
+          "aria-label": (0,external_wp_i18n_namespaceObject.__)('Blocks styles'),
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+            justify: "space-between",
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+              children: (0,external_wp_i18n_namespaceObject.__)('Blocks')
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(IconWithCurrentColor, {
+              icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
+            })]
+          })
+        })
+      })]
+    }), canEditCSS && !!customCSS && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardDivider, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.CardBody, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+          as: "p",
+          paddingTop: 2,
+          paddingX: "13px",
+          marginBottom: 4,
+          children: (0,external_wp_i18n_namespaceObject.__)('Add your own CSS to customize the appearance and layout of your site.')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+            path: "/css",
+            "aria-label": (0,external_wp_i18n_namespaceObject.__)('Additional CSS'),
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+              justify: "space-between",
+              children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+                children: (0,external_wp_i18n_namespaceObject.__)('Additional CSS')
+              }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(IconWithCurrentColor, {
+                icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
+              })]
+            })
+          })
+        })]
+      })]
+    })]
+  });
+}
+/* harmony default export */ const screen_root = (ScreenRoot);
+
+;// CONCATENATED MODULE: external ["wp","a11y"]
+const external_wp_a11y_namespaceObject = window["wp"]["a11y"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/variations/variations-panel.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  useGlobalStyle: variations_panel_useGlobalStyle
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+
+// Only core block styles (source === block) or block styles with a matching
+// theme.json style variation will be configurable via Global Styles.
+function getFilteredBlockStyles(blockStyles, variations) {
+  return blockStyles?.filter(style => style.source === 'block' || variations.includes(style.name));
+}
+function useBlockVariations(name) {
+  const blockStyles = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getBlockStyles
+    } = select(external_wp_blocks_namespaceObject.store);
+    return getBlockStyles(name);
+  }, [name]);
+  const [variations] = variations_panel_useGlobalStyle('variations', name);
+  const variationNames = Object.keys(variations !== null && variations !== void 0 ? variations : {});
+  return getFilteredBlockStyles(blockStyles, variationNames);
+}
+function VariationsPanel({
+  name
+}) {
+  const coreBlockStyles = useBlockVariations(name);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+    isBordered: true,
+    isSeparated: true,
+    children: coreBlockStyles.map((style, index) => {
+      if (style?.isDefault) {
+        return null;
+      }
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+        path: '/blocks/' + encodeURIComponent(name) + '/variations/' + encodeURIComponent(style.name),
+        "aria-label": style.label,
+        children: style.label
+      }, index);
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/header.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+function ScreenHeader({
+  title,
+  description,
+  onBack
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    spacing: 0,
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalView, {
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+        marginBottom: 0,
+        paddingX: 4,
+        paddingY: 3,
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+          spacing: 2,
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalNavigatorToParentButton, {
+            style:
+            // TODO: This style override is also used in ToolsPanelHeader.
+            // It should be supported out-of-the-box by Button.
+            {
+              minWidth: 24,
+              padding: 0
+            },
+            icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left,
+            size: "small",
+            label: (0,external_wp_i18n_namespaceObject.__)('Back'),
+            onClick: onBack
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+              className: "edit-site-global-styles-header",
+              level: 2,
+              size: 13,
+              children: title
+            })
+          })]
+        })
+      })
+    }), description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+      className: "edit-site-global-styles-header__description",
+      children: description
+    })]
+  });
+}
+/* harmony default export */ const header = (ScreenHeader);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-block-list.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  useHasDimensionsPanel: screen_block_list_useHasDimensionsPanel,
+  useHasTypographyPanel: screen_block_list_useHasTypographyPanel,
+  useHasBorderPanel,
+  useGlobalSetting: screen_block_list_useGlobalSetting,
+  useSettingsForBlockElement: screen_block_list_useSettingsForBlockElement,
+  useHasColorPanel: screen_block_list_useHasColorPanel
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function useSortedBlockTypes() {
+  const blockItems = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blocks_namespaceObject.store).getBlockTypes(), []);
+  // Ensure core blocks are prioritized in the returned results,
+  // because third party blocks can be registered earlier than
+  // the core blocks (usually by using the `init` action),
+  // thus affecting the display order.
+  // We don't sort reusable blocks as they are handled differently.
+  const groupByType = (blocks, block) => {
+    const {
+      core,
+      noncore
+    } = blocks;
+    const type = block.name.startsWith('core/') ? core : noncore;
+    type.push(block);
+    return blocks;
+  };
+  const {
+    core: coreItems,
+    noncore: nonCoreItems
+  } = blockItems.reduce(groupByType, {
+    core: [],
+    noncore: []
+  });
+  return [...coreItems, ...nonCoreItems];
+}
+function useBlockHasGlobalStyles(blockName) {
+  const [rawSettings] = screen_block_list_useGlobalSetting('', blockName);
+  const settings = screen_block_list_useSettingsForBlockElement(rawSettings, blockName);
+  const hasTypographyPanel = screen_block_list_useHasTypographyPanel(settings);
+  const hasColorPanel = screen_block_list_useHasColorPanel(settings);
+  const hasBorderPanel = useHasBorderPanel(settings);
+  const hasDimensionsPanel = screen_block_list_useHasDimensionsPanel(settings);
+  const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
+  const hasVariationsPanel = !!useBlockVariations(blockName)?.length;
+  const hasGlobalStyles = hasTypographyPanel || hasColorPanel || hasLayoutPanel || hasVariationsPanel;
+  return hasGlobalStyles;
+}
+function BlockMenuItem({
+  block
+}) {
+  const hasBlockMenuItem = useBlockHasGlobalStyles(block.name);
+  if (!hasBlockMenuItem) {
+    return null;
+  }
+  const navigationButtonLabel = (0,external_wp_i18n_namespaceObject.sprintf)(
+  // translators: %s: is the name of a block e.g., 'Image' or 'Table'.
+  (0,external_wp_i18n_namespaceObject.__)('%s block styles'), block.title);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+    path: '/blocks/' + encodeURIComponent(block.name),
+    "aria-label": navigationButtonLabel,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "flex-start",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, {
+        icon: block.icon
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        children: block.title
+      })]
+    })
+  });
+}
+function BlockList({
+  filterValue
+}) {
+  const sortedBlockTypes = useSortedBlockTypes();
+  const debouncedSpeak = (0,external_wp_compose_namespaceObject.useDebounce)(external_wp_a11y_namespaceObject.speak, 500);
+  const {
+    isMatchingSearchTerm
+  } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blocks_namespaceObject.store);
+  const filteredBlockTypes = !filterValue ? sortedBlockTypes : sortedBlockTypes.filter(blockType => isMatchingSearchTerm(blockType, filterValue));
+  const blockTypesListRef = (0,external_wp_element_namespaceObject.useRef)();
+
+  // Announce search results on change
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (!filterValue) {
+      return;
+    }
+    // We extract the results from the wrapper div's `ref` because
+    // filtered items can contain items that will eventually not
+    // render and there is no reliable way to detect when a child
+    // will return `null`.
+    // TODO: We should find a better way of handling this as it's
+    // fragile and depends on the number of rendered elements of `BlockMenuItem`,
+    // which is now one.
+    // @see https://github.com/WordPress/gutenberg/pull/39117#discussion_r816022116
+    const count = blockTypesListRef.current.childElementCount;
+    const resultsFoundMessage = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %d: number of results. */
+    (0,external_wp_i18n_namespaceObject._n)('%d result found.', '%d results found.', count), count);
+    debouncedSpeak(resultsFoundMessage, count);
+  }, [filterValue, debouncedSpeak]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    ref: blockTypesListRef,
+    className: "edit-site-block-types-item-list",
+    children: filteredBlockTypes.map(block => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockMenuItem, {
+      block: block
+    }, 'menu-itemblock-' + block.name))
+  });
+}
+const MemoizedBlockList = (0,external_wp_element_namespaceObject.memo)(BlockList);
+function ScreenBlockList() {
+  const [filterValue, setFilterValue] = (0,external_wp_element_namespaceObject.useState)('');
+  const deferredFilterValue = (0,external_wp_element_namespaceObject.useDeferredValue)(filterValue);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Blocks'),
+      description: (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of specific blocks and for the whole site.')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, {
+      __nextHasNoMarginBottom: true,
+      className: "edit-site-block-types-search",
+      onChange: setFilterValue,
+      value: filterValue,
+      label: (0,external_wp_i18n_namespaceObject.__)('Search for blocks'),
+      placeholder: (0,external_wp_i18n_namespaceObject.__)('Search')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MemoizedBlockList, {
+      filterValue: deferredFilterValue
+    })]
+  });
+}
+/* harmony default export */ const screen_block_list = (ScreenBlockList);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/block-preview-panel.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const BlockPreviewPanel = ({
+  name,
+  variation = ''
+}) => {
+  var _blockExample$viewpor;
+  const blockExample = (0,external_wp_blocks_namespaceObject.getBlockType)(name)?.example;
+  const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!blockExample) {
+      return null;
+    }
+    let example = blockExample;
+    if (variation) {
+      example = {
+        ...example,
+        attributes: {
+          ...example.attributes,
+          className: getVariationClassName(variation)
+        }
+      };
+    }
+    return (0,external_wp_blocks_namespaceObject.getBlockFromExample)(name, example);
+  }, [name, blockExample, variation]);
+  const viewportWidth = (_blockExample$viewpor = blockExample?.viewportWidth) !== null && _blockExample$viewpor !== void 0 ? _blockExample$viewpor : null;
+  const previewHeight = 150;
+  if (!blockExample) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+    marginX: 4,
+    marginBottom: 4,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-global-styles__block-preview-panel",
+      style: {
+        maxHeight: previewHeight,
+        boxSizing: 'initial'
+      },
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview, {
+        blocks: blocks,
+        viewportWidth: viewportWidth,
+        minHeight: previewHeight,
+        additionalStyles: [{
+          css: `
+								body{
+									min-height:${previewHeight}px;
+									display:flex;align-items:center;justify-content:center;
+								}
+							`
+        }]
+      })
+    })
+  });
+};
+/* harmony default export */ const block_preview_panel = (BlockPreviewPanel);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/subtitle.js
+/**
+ * WordPress dependencies
+ */
+
+
+function Subtitle({
+  children,
+  level
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+    className: "edit-site-global-styles-subtitle",
+    level: level !== null && level !== void 0 ? level : 2,
+    children: children
+  });
+}
+/* harmony default export */ const subtitle = (Subtitle);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-block.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+function applyFallbackStyle(border) {
+  if (!border) {
+    return border;
+  }
+  const hasColorOrWidth = border.color || border.width;
+  if (!border.style && hasColorOrWidth) {
+    return {
+      ...border,
+      style: 'solid'
+    };
+  }
+  if (border.style && !hasColorOrWidth) {
+    return undefined;
+  }
+  return border;
+}
+function applyAllFallbackStyles(border) {
+  if (!border) {
+    return border;
+  }
+  if ((0,external_wp_components_namespaceObject.__experimentalHasSplitBorders)(border)) {
+    return {
+      top: applyFallbackStyle(border.top),
+      right: applyFallbackStyle(border.right),
+      bottom: applyFallbackStyle(border.bottom),
+      left: applyFallbackStyle(border.left)
+    };
+  }
+  return applyFallbackStyle(border);
+}
+const {
+  useHasDimensionsPanel: screen_block_useHasDimensionsPanel,
+  useHasTypographyPanel: screen_block_useHasTypographyPanel,
+  useHasBorderPanel: screen_block_useHasBorderPanel,
+  useGlobalSetting: screen_block_useGlobalSetting,
+  useSettingsForBlockElement: screen_block_useSettingsForBlockElement,
+  useHasColorPanel: screen_block_useHasColorPanel,
+  useHasFiltersPanel,
+  useHasImageSettingsPanel,
+  useGlobalStyle: screen_block_useGlobalStyle,
+  BorderPanel: StylesBorderPanel,
+  ColorPanel: StylesColorPanel,
+  TypographyPanel: StylesTypographyPanel,
+  DimensionsPanel: StylesDimensionsPanel,
+  FiltersPanel: StylesFiltersPanel,
+  ImageSettingsPanel,
+  AdvancedPanel: StylesAdvancedPanel
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function ScreenBlock({
+  name,
+  variation
+}) {
+  let prefixParts = [];
+  if (variation) {
+    prefixParts = ['variations', variation].concat(prefixParts);
+  }
+  const prefix = prefixParts.join('.');
+  const [style] = screen_block_useGlobalStyle(prefix, name, 'user', {
+    shouldDecodeEncode: false
+  });
+  const [inheritedStyle, setStyle] = screen_block_useGlobalStyle(prefix, name, 'all', {
+    shouldDecodeEncode: false
+  });
+  const [userSettings] = screen_block_useGlobalSetting('', name, 'user');
+  const [rawSettings, setSettings] = screen_block_useGlobalSetting('', name);
+  const settings = screen_block_useSettingsForBlockElement(rawSettings, name);
+  const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(name);
+
+  // Only allow `blockGap` support if serialization has not been skipped, to be sure global spacing can be applied.
+  if (settings?.spacing?.blockGap && blockType?.supports?.spacing?.blockGap && (blockType?.supports?.spacing?.__experimentalSkipSerialization === true || blockType?.supports?.spacing?.__experimentalSkipSerialization?.some?.(spacingType => spacingType === 'blockGap'))) {
+    settings.spacing.blockGap = false;
+  }
+
+  // Only allow `aspectRatio` support if the block is not the grouping block.
+  // The grouping block allows the user to use Group, Row and Stack variations,
+  // and it is highly likely that the user will not want to set an aspect ratio
+  // for all three at once. Until there is the ability to set a different aspect
+  // ratio for each variation, we disable the aspect ratio controls for the
+  // grouping block in global styles.
+  if (settings?.dimensions?.aspectRatio && name === 'core/group') {
+    settings.dimensions.aspectRatio = false;
+  }
+  const blockVariations = useBlockVariations(name);
+  const hasTypographyPanel = screen_block_useHasTypographyPanel(settings);
+  const hasColorPanel = screen_block_useHasColorPanel(settings);
+  const hasBorderPanel = screen_block_useHasBorderPanel(settings);
+  const hasDimensionsPanel = screen_block_useHasDimensionsPanel(settings);
+  const hasFiltersPanel = useHasFiltersPanel(settings);
+  const hasImageSettingsPanel = useHasImageSettingsPanel(name, userSettings, settings);
+  const hasVariationsPanel = !!blockVariations?.length && !variation;
+  const {
+    canEditCSS
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEntityRecord,
+      __experimentalGetCurrentGlobalStylesId
+    } = select(external_wp_coreData_namespaceObject.store);
+    const globalStylesId = __experimentalGetCurrentGlobalStylesId();
+    const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
+    return {
+      canEditCSS: !!globalStyles?._links?.['wp:action-edit-css']
+    };
+  }, []);
+  const currentBlockStyle = variation ? blockVariations.find(s => s.name === variation) : null;
+
+  // These intermediary objects are needed because the "layout" property is stored
+  // in settings rather than styles.
+  const inheritedStyleWithLayout = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return {
+      ...inheritedStyle,
+      layout: settings.layout
+    };
+  }, [inheritedStyle, settings.layout]);
+  const styleWithLayout = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return {
+      ...style,
+      layout: userSettings.layout
+    };
+  }, [style, userSettings.layout]);
+  const onChangeDimensions = newStyle => {
+    const updatedStyle = {
+      ...newStyle
+    };
+    delete updatedStyle.layout;
+    setStyle(updatedStyle);
+    if (newStyle.layout !== userSettings.layout) {
+      setSettings({
+        ...userSettings,
+        layout: newStyle.layout
+      });
+    }
+  };
+  const onChangeLightbox = newSetting => {
+    // If the newSetting is undefined, this means that the user has deselected
+    // (reset) the lightbox setting.
+    if (newSetting === undefined) {
+      setSettings({
+        ...rawSettings,
+        lightbox: undefined
+      });
+
+      // Otherwise, we simply set the lightbox setting to the new value but
+      // taking care of not overriding the other lightbox settings.
+    } else {
+      setSettings({
+        ...rawSettings,
+        lightbox: {
+          ...rawSettings.lightbox,
+          ...newSetting
+        }
+      });
+    }
+  };
+  const onChangeBorders = newStyle => {
+    if (!newStyle?.border) {
+      setStyle(newStyle);
+      return;
+    }
+
+    // As Global Styles can't conditionally generate styles based on if
+    // other style properties have been set, we need to force split
+    // border definitions for user set global border styles. Border
+    // radius is derived from the same property i.e. `border.radius` if
+    // it is a string that is used. The longhand border radii styles are
+    // only generated if that property is an object.
+    //
+    // For borders (color, style, and width) those are all properties on
+    // the `border` style property. This means if the theme.json defined
+    // split borders and the user condenses them into a flat border or
+    // vice-versa we'd get both sets of styles which would conflict.
+    const {
+      radius,
+      ...newBorder
+    } = newStyle.border;
+    const border = applyAllFallbackStyles(newBorder);
+    const updatedBorder = !(0,external_wp_components_namespaceObject.__experimentalHasSplitBorders)(border) ? {
+      top: border,
+      right: border,
+      bottom: border,
+      left: border
+    } : {
+      color: null,
+      style: null,
+      width: null,
+      ...border
+    };
+    setStyle({
+      ...newStyle,
+      border: {
+        ...updatedBorder,
+        radius
+      }
+    });
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: variation ? currentBlockStyle?.label : blockType.title
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(block_preview_panel, {
+      name: name,
+      variation: variation
+    }), hasVariationsPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-global-styles-screen-variations",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+        spacing: 3,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
+          children: (0,external_wp_i18n_namespaceObject.__)('Style Variations')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(VariationsPanel, {
+          name: name
+        })]
+      })
+    }), hasColorPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesColorPanel, {
+      inheritedValue: inheritedStyle,
+      value: style,
+      onChange: setStyle,
+      settings: settings
+    }), hasTypographyPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesTypographyPanel, {
+      inheritedValue: inheritedStyle,
+      value: style,
+      onChange: setStyle,
+      settings: settings
+    }), hasDimensionsPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesDimensionsPanel, {
+      inheritedValue: inheritedStyleWithLayout,
+      value: styleWithLayout,
+      onChange: onChangeDimensions,
+      settings: settings,
+      includeLayoutControls: true
+    }), hasBorderPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesBorderPanel, {
+      inheritedValue: inheritedStyle,
+      value: style,
+      onChange: onChangeBorders,
+      settings: settings
+    }), hasFiltersPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesFiltersPanel, {
+      inheritedValue: inheritedStyleWithLayout,
+      value: styleWithLayout,
+      onChange: setStyle,
+      settings: settings,
+      includeLayoutControls: true
+    }), hasImageSettingsPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ImageSettingsPanel, {
+      onChange: onChangeLightbox,
+      value: userSettings,
+      inheritedValue: settings
+    }), canEditCSS && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Advanced'),
+      initialOpen: false,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+        children: (0,external_wp_i18n_namespaceObject.sprintf)(
+        // translators: %s: is the name of a block e.g., 'Image' or 'Table'.
+        (0,external_wp_i18n_namespaceObject.__)('Add your own CSS to customize the appearance of the %s block. You do not need to include a CSS selector, just add the property and value.'), blockType?.title)
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesAdvancedPanel, {
+        value: style,
+        onChange: setStyle,
+        inheritedValue: inheritedStyle
+      })]
+    })]
+  });
+}
+/* harmony default export */ const screen_block = (ScreenBlock);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-elements.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  useGlobalStyle: typography_elements_useGlobalStyle
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function ElementItem({
+  parentMenu,
+  element,
+  label
+}) {
+  var _ref;
+  const prefix = element === 'text' || !element ? '' : `elements.${element}.`;
+  const extraStyles = element === 'link' ? {
+    textDecoration: 'underline'
+  } : {};
+  const [fontFamily] = typography_elements_useGlobalStyle(prefix + 'typography.fontFamily');
+  const [fontStyle] = typography_elements_useGlobalStyle(prefix + 'typography.fontStyle');
+  const [fontWeight] = typography_elements_useGlobalStyle(prefix + 'typography.fontWeight');
+  const [letterSpacing] = typography_elements_useGlobalStyle(prefix + 'typography.letterSpacing');
+  const [backgroundColor] = typography_elements_useGlobalStyle(prefix + 'color.background');
+  const [fallbackBackgroundColor] = typography_elements_useGlobalStyle('color.background');
+  const [gradientValue] = typography_elements_useGlobalStyle(prefix + 'color.gradient');
+  const [color] = typography_elements_useGlobalStyle(prefix + 'color.text');
+  const navigationButtonLabel = (0,external_wp_i18n_namespaceObject.sprintf)(
+  // translators: %s: is a subset of Typography, e.g., 'text' or 'links'.
+  (0,external_wp_i18n_namespaceObject.__)('Typography %s styles'), label);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+    path: parentMenu + '/typography/' + element,
+    "aria-label": navigationButtonLabel,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "flex-start",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        className: "edit-site-global-styles-screen-typography__indicator",
+        style: {
+          fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif',
+          background: (_ref = gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor) !== null && _ref !== void 0 ? _ref : fallbackBackgroundColor,
+          color,
+          fontStyle,
+          fontWeight,
+          letterSpacing,
+          ...extraStyles
+        },
+        children: (0,external_wp_i18n_namespaceObject.__)('Aa')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        children: label
+      })]
+    })
+  });
+}
+function TypographyElements() {
+  const parentMenu = '';
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    spacing: 3,
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
+      level: 3,
+      children: (0,external_wp_i18n_namespaceObject.__)('Elements')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+      isBordered: true,
+      isSeparated: true,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ElementItem, {
+        parentMenu: parentMenu,
+        element: "text",
+        label: (0,external_wp_i18n_namespaceObject.__)('Text')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ElementItem, {
+        parentMenu: parentMenu,
+        element: "link",
+        label: (0,external_wp_i18n_namespaceObject.__)('Links')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ElementItem, {
+        parentMenu: parentMenu,
+        element: "heading",
+        label: (0,external_wp_i18n_namespaceObject.__)('Headings')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ElementItem, {
+        parentMenu: parentMenu,
+        element: "caption",
+        label: (0,external_wp_i18n_namespaceObject.__)('Captions')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ElementItem, {
+        parentMenu: parentMenu,
+        element: "button",
+        label: (0,external_wp_i18n_namespaceObject.__)('Buttons')
+      })]
+    })]
+  });
+}
+/* harmony default export */ const typography_elements = (TypographyElements);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/variations/variation.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  mergeBaseAndUserConfigs: variation_mergeBaseAndUserConfigs
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+const {
+  GlobalStylesContext: variation_GlobalStylesContext,
+  areGlobalStyleConfigsEqual
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function Variation({
+  variation,
+  children,
+  isPill,
+  property
+}) {
+  const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false);
+  const {
+    base,
+    user,
+    setUserConfig
+  } = (0,external_wp_element_namespaceObject.useContext)(variation_GlobalStylesContext);
+  const context = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    let merged = variation_mergeBaseAndUserConfigs(base, variation);
+    if (property) {
+      merged = filterObjectByProperty(merged, property);
+    }
+    return {
+      user: variation,
+      base,
+      merged,
+      setUserConfig: () => {}
+    };
+  }, [variation, base, property]);
+  const selectVariation = () => setUserConfig(variation);
+  const selectOnEnter = event => {
+    if (event.keyCode === external_wp_keycodes_namespaceObject.ENTER) {
+      event.preventDefault();
+      selectVariation();
+    }
+  };
+  const isActive = (0,external_wp_element_namespaceObject.useMemo)(() => areGlobalStyleConfigsEqual(user, variation), [user, variation]);
+  let label = variation?.title;
+  if (variation?.description) {
+    label = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %1$s: variation title. %2$s variation description. */
+    (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), variation?.title, variation?.description);
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(variation_GlobalStylesContext.Provider, {
+    value: context,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: dist_clsx('edit-site-global-styles-variations_item', {
+        'is-active': isActive
+      }),
+      role: "button",
+      onClick: selectVariation,
+      onKeyDown: selectOnEnter,
+      tabIndex: "0",
+      "aria-label": label,
+      "aria-current": isActive,
+      onFocus: () => setIsFocused(true),
+      onBlur: () => setIsFocused(false),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: dist_clsx('edit-site-global-styles-variations_item-preview', {
+          'is-pill': isPill
+        }),
+        children: children(isFocused)
+      })
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/variations/variations-typography.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+function TypographyVariations({
+  title,
+  gap = 2
+}) {
+  const typographyVariations = useTypographyVariations();
+
+  // Return null if there is only one variation (the default).
+  if (typographyVariations?.length <= 1) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    spacing: 3,
+    children: [title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
+      level: 3,
+      children: title
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
+      columns: 3,
+      gap: gap,
+      className: "edit-site-global-styles-style-variations-container",
+      children: typographyVariations && typographyVariations.length && typographyVariations.map((variation, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Variation, {
+        variation: variation,
+        property: "typography",
+        children: isFocused => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewIframe, {
+          label: variation?.title,
+          isFocused: isFocused,
+          children: ({
+            ratio,
+            key
+          }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
+            spacing: 10 * ratio,
+            justify: "center",
+            style: {
+              height: '100%',
+              overflow: 'hidden'
+            },
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewTypography, {
+              variation: variation,
+              fontSize: 85 * ratio
+            })
+          }, key)
+        })
+      }, index))
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/settings.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+const settings_settings = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "m19 7.5h-7.628c-.3089-.87389-1.1423-1.5-2.122-1.5-.97966 0-1.81309.62611-2.12197 1.5h-2.12803v1.5h2.12803c.30888.87389 1.14231 1.5 2.12197 1.5.9797 0 1.8131-.62611 2.122-1.5h7.628z"
+  }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "m19 15h-2.128c-.3089-.8739-1.1423-1.5-2.122-1.5s-1.8131.6261-2.122 1.5h-7.628v1.5h7.628c.3089.8739 1.1423 1.5 2.122 1.5s1.8131-.6261 2.122-1.5h2.128z"
+  })]
+});
+/* harmony default export */ const library_settings = (settings_settings);
+
+;// CONCATENATED MODULE: external ["wp","apiFetch"]
+const external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"];
+var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject);
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/resolvers.js
+/**
+ * WordPress dependencies
+ */
+
+const FONT_FAMILIES_URL = '/wp/v2/font-families';
+const FONT_COLLECTIONS_URL = '/wp/v2/font-collections';
+async function fetchInstallFontFamily(data) {
+  const config = {
+    path: FONT_FAMILIES_URL,
+    method: 'POST',
+    body: data
+  };
+  const response = await external_wp_apiFetch_default()(config);
+  return {
+    id: response.id,
+    ...response.font_family_settings,
+    fontFace: []
+  };
+}
+async function fetchInstallFontFace(fontFamilyId, data) {
+  const config = {
+    path: `${FONT_FAMILIES_URL}/${fontFamilyId}/font-faces`,
+    method: 'POST',
+    body: data
+  };
+  const response = await external_wp_apiFetch_default()(config);
+  return {
+    id: response.id,
+    ...response.font_face_settings
+  };
+}
+async function fetchGetFontFamilyBySlug(slug) {
+  const config = {
+    path: `${FONT_FAMILIES_URL}?slug=${slug}&_embed=true`,
+    method: 'GET'
+  };
+  const response = await external_wp_apiFetch_default()(config);
+  if (!response || response.length === 0) {
+    return null;
+  }
+  const fontFamilyPost = response[0];
+  return {
+    id: fontFamilyPost.id,
+    ...fontFamilyPost.font_family_settings,
+    fontFace: fontFamilyPost?._embedded?.font_faces.map(face => face.font_face_settings) || []
+  };
+}
+async function fetchUninstallFontFamily(fontFamilyId) {
+  const config = {
+    path: `${FONT_FAMILIES_URL}/${fontFamilyId}?force=true`,
+    method: 'DELETE'
+  };
+  return await external_wp_apiFetch_default()(config);
+}
+async function fetchFontCollections() {
+  const config = {
+    path: `${FONT_COLLECTIONS_URL}?_fields=slug,name,description`,
+    method: 'GET'
+  };
+  return await external_wp_apiFetch_default()(config);
+}
+async function fetchFontCollection(id) {
+  const config = {
+    path: `${FONT_COLLECTIONS_URL}/${id}`,
+    method: 'GET'
+  };
+  return await external_wp_apiFetch_default()(config);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/constants.js
+/**
+ * WordPress dependencies
+ */
+
+const ALLOWED_FILE_EXTENSIONS = ['otf', 'ttf', 'woff', 'woff2'];
+const FONT_WEIGHTS = {
+  100: (0,external_wp_i18n_namespaceObject._x)('Thin', 'font weight'),
+  200: (0,external_wp_i18n_namespaceObject._x)('Extra-light', 'font weight'),
+  300: (0,external_wp_i18n_namespaceObject._x)('Light', 'font weight'),
+  400: (0,external_wp_i18n_namespaceObject._x)('Normal', 'font weight'),
+  500: (0,external_wp_i18n_namespaceObject._x)('Medium', 'font weight'),
+  600: (0,external_wp_i18n_namespaceObject._x)('Semi-bold', 'font weight'),
+  700: (0,external_wp_i18n_namespaceObject._x)('Bold', 'font weight'),
+  800: (0,external_wp_i18n_namespaceObject._x)('Extra-bold', 'font weight'),
+  900: (0,external_wp_i18n_namespaceObject._x)('Black', 'font weight')
+};
+const FONT_STYLES = {
+  normal: (0,external_wp_i18n_namespaceObject._x)('Normal', 'font style'),
+  italic: (0,external_wp_i18n_namespaceObject._x)('Italic', 'font style')
+};
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+/**
+ * Browser dependencies
+ */
+const {
+  File
+} = window;
+const {
+  kebabCase
+} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function setUIValuesNeeded(font, extraValues = {}) {
+  if (!font.name && (font.fontFamily || font.slug)) {
+    font.name = font.fontFamily || font.slug;
+  }
+  return {
+    ...font,
+    ...extraValues
+  };
+}
+function isUrlEncoded(url) {
+  if (typeof url !== 'string') {
+    return false;
+  }
+  return url !== decodeURIComponent(url);
+}
+function getFontFaceVariantName(face) {
+  const weightName = FONT_WEIGHTS[face.fontWeight] || face.fontWeight;
+  const styleName = face.fontStyle === 'normal' ? '' : FONT_STYLES[face.fontStyle] || face.fontStyle;
+  return `${weightName} ${styleName}`;
+}
+function mergeFontFaces(existing = [], incoming = []) {
+  const map = new Map();
+  for (const face of existing) {
+    map.set(`${face.fontWeight}${face.fontStyle}`, face);
+  }
+  for (const face of incoming) {
+    // This will overwrite if the src already exists, keeping it unique.
+    map.set(`${face.fontWeight}${face.fontStyle}`, face);
+  }
+  return Array.from(map.values());
+}
+function mergeFontFamilies(existing = [], incoming = []) {
+  const map = new Map();
+  // Add the existing array to the map.
+  for (const font of existing) {
+    map.set(font.slug, {
+      ...font
+    });
+  }
+  // Add the incoming array to the map, overwriting existing values excepting fontFace that need to be merged.
+  for (const font of incoming) {
+    if (map.has(font.slug)) {
+      const {
+        fontFace: incomingFontFaces,
+        ...restIncoming
+      } = font;
+      const existingFont = map.get(font.slug);
+      // Merge the fontFaces existing with the incoming fontFaces.
+      const mergedFontFaces = mergeFontFaces(existingFont.fontFace, incomingFontFaces);
+      // Except for the fontFace key all the other keys are overwritten with the incoming values.
+      map.set(font.slug, {
+        ...restIncoming,
+        fontFace: mergedFontFaces
+      });
+    } else {
+      map.set(font.slug, {
+        ...font
+      });
+    }
+  }
+  return Array.from(map.values());
+}
+
+/*
+ * Loads the font face from a URL and adds it to the browser.
+ * It also adds it to the iframe document.
+ */
+async function loadFontFaceInBrowser(fontFace, source, addTo = 'all') {
+  let dataSource;
+  if (typeof source === 'string') {
+    dataSource = `url(${source})`;
+    // eslint-disable-next-line no-undef
+  } else if (source instanceof File) {
+    dataSource = await source.arrayBuffer();
+  } else {
+    return;
+  }
+  const newFont = new window.FontFace(formatFontFaceName(fontFace.fontFamily), dataSource, {
+    style: fontFace.fontStyle,
+    weight: fontFace.fontWeight
+  });
+  const loadedFace = await newFont.load();
+  if (addTo === 'document' || addTo === 'all') {
+    document.fonts.add(loadedFace);
+  }
+  if (addTo === 'iframe' || addTo === 'all') {
+    const iframeDocument = document.querySelector('iframe[name="editor-canvas"]').contentDocument;
+    iframeDocument.fonts.add(loadedFace);
+  }
+}
+
+/*
+ * Unloads the font face and remove it from the browser.
+ * It also removes it from the iframe document.
+ *
+ * Note that Font faces that were added to the set using the CSS @font-face rule
+ * remain connected to the corresponding CSS, and cannot be deleted.
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet/delete.
+ */
+function unloadFontFaceInBrowser(fontFace, removeFrom = 'all') {
+  const unloadFontFace = fonts => {
+    fonts.forEach(f => {
+      if (f.family === formatFontFaceName(fontFace?.fontFamily) && f.weight === fontFace?.fontWeight && f.style === fontFace?.fontStyle) {
+        fonts.delete(f);
+      }
+    });
+  };
+  if (removeFrom === 'document' || removeFrom === 'all') {
+    unloadFontFace(document.fonts);
+  }
+  if (removeFrom === 'iframe' || removeFrom === 'all') {
+    const iframeDocument = document.querySelector('iframe[name="editor-canvas"]').contentDocument;
+    unloadFontFace(iframeDocument.fonts);
+  }
+}
+
+/**
+ * Retrieves the display source from a font face src.
+ *
+ * @param {string|string[]} input - The font face src.
+ * @return {string|undefined} The display source or undefined if the input is invalid.
+ */
+function getDisplaySrcFromFontFace(input) {
+  if (!input) {
+    return;
+  }
+  let src;
+  if (Array.isArray(input)) {
+    src = input[0];
+  } else {
+    src = input;
+  }
+  // It's expected theme fonts will already be loaded in the browser.
+  if (src.startsWith('file:.')) {
+    return;
+  }
+  if (!isUrlEncoded(src)) {
+    src = encodeURI(src);
+  }
+  return src;
+}
+function makeFontFamilyFormData(fontFamily) {
+  const formData = new FormData();
+  const {
+    fontFace,
+    category,
+    ...familyWithValidParameters
+  } = fontFamily;
+  const fontFamilySettings = {
+    ...familyWithValidParameters,
+    slug: kebabCase(fontFamily.slug)
+  };
+  formData.append('font_family_settings', JSON.stringify(fontFamilySettings));
+  return formData;
+}
+function makeFontFacesFormData(font) {
+  if (font?.fontFace) {
+    const fontFacesFormData = font.fontFace.map((item, faceIndex) => {
+      const face = {
+        ...item
+      };
+      const formData = new FormData();
+      if (face.file) {
+        // Normalize to an array, since face.file may be a single file or an array of files.
+        const files = Array.isArray(face.file) ? face.file : [face.file];
+        const src = [];
+        files.forEach((file, key) => {
+          // Slugified file name because the it might contain spaces or characters treated differently on the server.
+          const fileId = `file-${faceIndex}-${key}`;
+          // Add the files to the formData
+          formData.append(fileId, file, file.name);
+          src.push(fileId);
+        });
+        face.src = src.length === 1 ? src[0] : src;
+        delete face.file;
+        formData.append('font_face_settings', JSON.stringify(face));
+      } else {
+        formData.append('font_face_settings', JSON.stringify(face));
+      }
+      return formData;
+    });
+    return fontFacesFormData;
+  }
+}
+async function batchInstallFontFaces(fontFamilyId, fontFacesData) {
+  const responses = [];
+
+  /*
+   * Uses the same response format as Promise.allSettled, but executes requests in sequence to work
+   * around a race condition that can cause an error when the fonts directory doesn't exist yet.
+   */
+  for (const faceData of fontFacesData) {
+    try {
+      const response = await fetchInstallFontFace(fontFamilyId, faceData);
+      responses.push({
+        status: 'fulfilled',
+        value: response
+      });
+    } catch (error) {
+      responses.push({
+        status: 'rejected',
+        reason: error
+      });
+    }
+  }
+  const results = {
+    errors: [],
+    successes: []
+  };
+  responses.forEach((result, index) => {
+    if (result.status === 'fulfilled') {
+      const response = result.value;
+      if (response.id) {
+        results.successes.push(response);
+      } else {
+        results.errors.push({
+          data: fontFacesData[index],
+          message: `Error: ${response.message}`
+        });
+      }
+    } else {
+      // Handle network errors or other fetch-related errors
+      results.errors.push({
+        data: fontFacesData[index],
+        message: result.reason.message
+      });
+    }
+  });
+  return results;
+}
+
+/*
+ * Downloads a font face asset from a URL to the client and returns a File object.
+ */
+async function downloadFontFaceAssets(src) {
+  // Normalize to an array, since `src` could be a string or array.
+  src = Array.isArray(src) ? src : [src];
+  const files = await Promise.all(src.map(async url => {
+    return fetch(new Request(url)).then(response => {
+      if (!response.ok) {
+        throw new Error(`Error downloading font face asset from ${url}. Server responded with status: ${response.status}`);
+      }
+      return response.blob();
+    }).then(blob => {
+      const filename = url.split('/').pop();
+      const file = new File([blob], filename, {
+        type: blob.type
+      });
+      return file;
+    });
+  }));
+
+  // If we only have one file return it (not the array).  Otherwise return all of them in the array.
+  return files.length === 1 ? files[0] : files;
+}
+
+/*
+ * Determine if a given Font Face is present in a given collection.
+ * We determine that a font face has been installed by comparing the fontWeight and fontStyle
+ *
+ * @param {Object} fontFace The Font Face to seek
+ * @param {Array} collection The Collection to seek in
+ * @returns True if the font face is found in the collection.  Otherwise False.
+ */
+function checkFontFaceInstalled(fontFace, collection) {
+  return -1 !== collection.findIndex(collectionFontFace => {
+    return collectionFontFace.fontWeight === fontFace.fontWeight && collectionFontFace.fontStyle === fontFace.fontStyle;
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/toggleFont.js
+/**
+ * Toggles the activation of a given font or font variant within a list of custom fonts.
+ *
+ * - If only the font is provided (without face), the entire font family's activation is toggled.
+ * - If both font and face are provided, the activation of the specific font variant is toggled.
+ *
+ * @param {Object} font            - The font to be toggled.
+ * @param {string} font.slug       - The unique identifier for the font.
+ * @param {Array}  [font.fontFace] - The list of font variants (faces) associated with the font.
+ *
+ * @param {Object} [face]          - The specific font variant to be toggled.
+ * @param {string} face.fontWeight - The weight of the font variant.
+ * @param {string} face.fontStyle  - The style of the font variant.
+ *
+ * @param {Array}  initialfonts    - The initial list of custom fonts.
+ *
+ * @return {Array} - The updated list of custom fonts with the font/font variant toggled.
+ *
+ * @example
+ * const customFonts = [
+ *     { slug: 'roboto', fontFace: [{ fontWeight: '400', fontStyle: 'normal' }] }
+ * ];
+ *
+ * toggleFont({ slug: 'roboto' }, null, customFonts);
+ * // This will remove 'roboto' from customFonts
+ *
+ * toggleFont({ slug: 'roboto' }, { fontWeight: '400', fontStyle: 'normal' }, customFonts);
+ * // This will remove the specified face from 'roboto' in customFonts
+ *
+ * toggleFont({ slug: 'roboto' }, { fontWeight: '500', fontStyle: 'normal' }, customFonts);
+ * // This will add the specified face to 'roboto' in customFonts
+ */
+function toggleFont(font, face, initialfonts) {
+  // Helper to check if a font is activated based on its slug
+  const isFontActivated = f => f.slug === font.slug;
+
+  // Helper to get the activated font from a list of fonts
+  const getActivatedFont = fonts => fonts.find(isFontActivated);
+
+  // Toggle the activation status of an entire font family
+  const toggleEntireFontFamily = activatedFont => {
+    if (!activatedFont) {
+      // If the font is not active, activate the entire font family
+      return [...initialfonts, font];
+    }
+    // If the font is already active, deactivate the entire font family
+    return initialfonts.filter(f => !isFontActivated(f));
+  };
+
+  // Toggle the activation status of a specific font variant
+  const toggleFontVariant = activatedFont => {
+    const isFaceActivated = f => f.fontWeight === face.fontWeight && f.fontStyle === face.fontStyle;
+    if (!activatedFont) {
+      // If the font family is not active, activate the font family with the font variant
+      return [...initialfonts, {
+        ...font,
+        fontFace: [face]
+      }];
+    }
+    let newFontFaces = activatedFont.fontFace || [];
+    if (newFontFaces.find(isFaceActivated)) {
+      // If the font variant is active, deactivate it
+      newFontFaces = newFontFaces.filter(f => !isFaceActivated(f));
+    } else {
+      // If the font variant is not active, activate it
+      newFontFaces = [...newFontFaces, face];
+    }
+
+    // If there are no more font faces, deactivate the font family
+    if (newFontFaces.length === 0) {
+      return initialfonts.filter(f => !isFontActivated(f));
+    }
+
+    // Return updated fonts list with toggled font variant
+    return initialfonts.map(f => isFontActivated(f) ? {
+      ...f,
+      fontFace: newFontFaces
+    } : f);
+  };
+  const activatedFont = getActivatedFont(initialfonts);
+  if (!face) {
+    return toggleEntireFontFamily(activatedFont);
+  }
+  return toggleFontVariant(activatedFont);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/context.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  useGlobalSetting: context_useGlobalSetting
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+
+
+
+
+const FontLibraryContext = (0,external_wp_element_namespaceObject.createContext)({});
+function FontLibraryProvider({
+  children
+}) {
+  const {
+    saveEntityRecord
   } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
   const {
+    globalStylesId
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      __experimentalGetCurrentGlobalStylesId
+    } = select(external_wp_coreData_namespaceObject.store);
+    return {
+      globalStylesId: __experimentalGetCurrentGlobalStylesId()
+    };
+  });
+  const globalStyles = (0,external_wp_coreData_namespaceObject.useEntityRecord)('root', 'globalStyles', globalStylesId);
+  const [isInstalling, setIsInstalling] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [refreshKey, setRefreshKey] = (0,external_wp_element_namespaceObject.useState)(0);
+  const [notice, setNotice] = (0,external_wp_element_namespaceObject.useState)(null);
+  const refreshLibrary = () => {
+    setRefreshKey(Date.now());
+  };
+  const {
+    records: libraryPosts = [],
+    isResolving: isResolvingLibrary
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', 'wp_font_family', {
+    refreshKey,
+    _embed: true
+  });
+  const libraryFonts = (libraryPosts || []).map(fontFamilyPost => {
+    return {
+      id: fontFamilyPost.id,
+      ...fontFamilyPost.font_family_settings,
+      fontFace: fontFamilyPost?._embedded?.font_faces.map(face => face.font_face_settings) || []
+    };
+  }) || [];
+
+  // Global Styles (settings) font families
+  const [fontFamilies, setFontFamilies] = context_useGlobalSetting('typography.fontFamilies');
+
+  /*
+   * Save the font families to the database.
+  	 * This function is called when the user activates or deactivates a font family.
+   * It only updates the global styles post content in the database for new font families.
+   * This avoids saving other styles/settings changed by the user using other parts of the editor.
+   *
+   * It uses the font families from the param to avoid using the font families from an outdated state.
+   *
+   * @param {Array} fonts - The font families that will be saved to the database.
+   */
+  const saveFontFamilies = async fonts => {
+    // Gets the global styles database post content.
+    const updatedGlobalStyles = globalStyles.record;
+
+    // Updates the database version of global styles with the edited font families in the client.
+    setNestedValue(updatedGlobalStyles, ['settings', 'typography', 'fontFamilies'], fonts);
+
+    // Saves a new version of the global styles in the database.
+    await saveEntityRecord('root', 'globalStyles', updatedGlobalStyles);
+  };
+
+  // Library Fonts
+  const [modalTabOpen, setModalTabOpen] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [libraryFontSelected, setLibraryFontSelected] = (0,external_wp_element_namespaceObject.useState)(null);
+
+  // Themes Fonts are the fonts defined in the global styles (database persisted theme.json data).
+  const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map(f => setUIValuesNeeded(f, {
+    source: 'theme'
+  })).sort((a, b) => a.name.localeCompare(b.name)) : [];
+  const customFonts = fontFamilies?.custom ? fontFamilies.custom.map(f => setUIValuesNeeded(f, {
+    source: 'custom'
+  })).sort((a, b) => a.name.localeCompare(b.name)) : [];
+  const baseCustomFonts = libraryFonts ? libraryFonts.map(f => setUIValuesNeeded(f, {
+    source: 'custom'
+  })).sort((a, b) => a.name.localeCompare(b.name)) : [];
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (!modalTabOpen) {
+      setLibraryFontSelected(null);
+    }
+  }, [modalTabOpen]);
+  const handleSetLibraryFontSelected = font => {
+    setNotice(null);
+
+    // If font is null, reset the selected font
+    if (!font) {
+      setLibraryFontSelected(null);
+      return;
+    }
+    const fonts = font.source === 'theme' ? themeFonts : baseCustomFonts;
+
+    // Tries to find the font in the installed fonts
+    const fontSelected = fonts.find(f => f.slug === font.slug);
+    // If the font is not found (it is only defined in custom styles), use the font from custom styles
+    setLibraryFontSelected({
+      ...(fontSelected || font),
+      source: font.source
+    });
+  };
+
+  // Demo
+  const [loadedFontUrls] = (0,external_wp_element_namespaceObject.useState)(new Set());
+  const getAvailableFontsOutline = availableFontFamilies => {
+    const outline = availableFontFamilies.reduce((acc, font) => {
+      const availableFontFaces = font?.fontFace && font.fontFace?.length > 0 ? font?.fontFace.map(face => `${face.fontStyle + face.fontWeight}`) : ['normal400']; // If the font doesn't have fontFace, we assume it is a system font and we add the defaults: normal 400
+
+      acc[font.slug] = availableFontFaces;
+      return acc;
+    }, {});
+    return outline;
+  };
+  const getActivatedFontsOutline = source => {
+    switch (source) {
+      case 'theme':
+        return getAvailableFontsOutline(themeFonts);
+      case 'custom':
+      default:
+        return getAvailableFontsOutline(customFonts);
+    }
+  };
+  const isFontActivated = (slug, style, weight, source) => {
+    if (!style && !weight) {
+      return !!getActivatedFontsOutline(source)[slug];
+    }
+    return !!getActivatedFontsOutline(source)[slug]?.includes(style + weight);
+  };
+  const getFontFacesActivated = (slug, source) => {
+    return getActivatedFontsOutline(source)[slug] || [];
+  };
+  async function installFonts(fontFamiliesToInstall) {
+    setIsInstalling(true);
+    try {
+      const fontFamiliesToActivate = [];
+      let installationErrors = [];
+      for (const fontFamilyToInstall of fontFamiliesToInstall) {
+        let isANewFontFamily = false;
+
+        // Get the font family if it already exists.
+        let installedFontFamily = await fetchGetFontFamilyBySlug(fontFamilyToInstall.slug);
+
+        // Otherwise create it.
+        if (!installedFontFamily) {
+          isANewFontFamily = true;
+          // Prepare font family form data to install.
+          installedFontFamily = await fetchInstallFontFamily(makeFontFamilyFormData(fontFamilyToInstall));
+        }
+
+        // Collect font faces that have already been installed (to be activated later)
+        const alreadyInstalledFontFaces = installedFontFamily.fontFace && fontFamilyToInstall.fontFace ? installedFontFamily.fontFace.filter(fontFaceToInstall => checkFontFaceInstalled(fontFaceToInstall, fontFamilyToInstall.fontFace)) : [];
+
+        // Filter out Font Faces that have already been installed (so that they are not re-installed)
+        if (installedFontFamily.fontFace && fontFamilyToInstall.fontFace) {
+          fontFamilyToInstall.fontFace = fontFamilyToInstall.fontFace.filter(fontFaceToInstall => !checkFontFaceInstalled(fontFaceToInstall, installedFontFamily.fontFace));
+        }
+
+        // Install the fonts (upload the font files to the server and create the post in the database).
+        let successfullyInstalledFontFaces = [];
+        let unsuccessfullyInstalledFontFaces = [];
+        if (fontFamilyToInstall?.fontFace?.length > 0) {
+          const response = await batchInstallFontFaces(installedFontFamily.id, makeFontFacesFormData(fontFamilyToInstall));
+          successfullyInstalledFontFaces = response?.successes;
+          unsuccessfullyInstalledFontFaces = response?.errors;
+        }
+
+        // Use the successfully installed font faces
+        // As well as any font faces that were already installed (those will be activated)
+        if (successfullyInstalledFontFaces?.length > 0 || alreadyInstalledFontFaces?.length > 0) {
+          // Use font data from REST API not from client to ensure
+          // correct font information is used.
+          installedFontFamily.fontFace = [...successfullyInstalledFontFaces];
+          fontFamiliesToActivate.push(installedFontFamily);
+        }
+
+        // If it's a system font but was installed successfully, activate it.
+        if (installedFontFamily && !fontFamilyToInstall?.fontFace?.length) {
+          fontFamiliesToActivate.push(installedFontFamily);
+        }
+
+        // If the font family is new and is not a system font, delete it to avoid having font families without font faces.
+        if (isANewFontFamily && fontFamilyToInstall?.fontFace?.length > 0 && successfullyInstalledFontFaces?.length === 0) {
+          await fetchUninstallFontFamily(installedFontFamily.id);
+        }
+        installationErrors = installationErrors.concat(unsuccessfullyInstalledFontFaces);
+      }
+      installationErrors = installationErrors.reduce((unique, item) => unique.includes(item.message) ? unique : [...unique, item.message], []);
+      if (fontFamiliesToActivate.length > 0) {
+        // Activate the font family (add the font family to the global styles).
+        const activeFonts = activateCustomFontFamilies(fontFamiliesToActivate);
+        // Save the global styles to the database.
+        await saveFontFamilies(activeFonts);
+        refreshLibrary();
+      }
+      if (installationErrors.length > 0) {
+        const installError = new Error((0,external_wp_i18n_namespaceObject.__)('There was an error installing fonts.'));
+        installError.installationErrors = installationErrors;
+        throw installError;
+      }
+    } finally {
+      setIsInstalling(false);
+    }
+  }
+  async function uninstallFontFamily(fontFamilyToUninstall) {
+    try {
+      // Uninstall the font family.
+      // (Removes the font files from the server and the posts from the database).
+      const uninstalledFontFamily = await fetchUninstallFontFamily(fontFamilyToUninstall.id);
+
+      // Deactivate the font family if delete request is successful
+      // (Removes the font family from the global styles).
+      if (uninstalledFontFamily.deleted) {
+        const activeFonts = deactivateFontFamily(fontFamilyToUninstall);
+        // Save the global styles to the database.
+        await saveFontFamilies(activeFonts);
+      }
+
+      // Refresh the library (the library font families from database).
+      refreshLibrary();
+      return uninstalledFontFamily;
+    } catch (error) {
+      // eslint-disable-next-line no-console
+      console.error(`There was an error uninstalling the font family:`, error);
+      throw error;
+    }
+  }
+  const deactivateFontFamily = font => {
+    var _fontFamilies$font$so;
+    // If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts
+    // We want to save as active all the theme fonts at the beginning
+    const initialCustomFonts = (_fontFamilies$font$so = fontFamilies?.[font.source]) !== null && _fontFamilies$font$so !== void 0 ? _fontFamilies$font$so : [];
+    const newCustomFonts = initialCustomFonts.filter(f => f.slug !== font.slug);
+    const activeFonts = {
+      ...fontFamilies,
+      [font.source]: newCustomFonts
+    };
+    setFontFamilies(activeFonts);
+    if (font.fontFace) {
+      font.fontFace.forEach(face => {
+        unloadFontFaceInBrowser(face, 'all');
+      });
+    }
+    return activeFonts;
+  };
+  const activateCustomFontFamilies = fontsToAdd => {
+    const fontsToActivate = cleanFontsForSave(fontsToAdd);
+    const activeFonts = {
+      ...fontFamilies,
+      // Merge the existing custom fonts with the new fonts.
+      custom: mergeFontFamilies(fontFamilies?.custom, fontsToActivate)
+    };
+
+    // Activate the fonts by set the new custom fonts array.
+    setFontFamilies(activeFonts);
+    loadFontsInBrowser(fontsToActivate);
+    return activeFonts;
+  };
+
+  // Removes the id from the families and faces to avoid saving that to global styles post content.
+  const cleanFontsForSave = fonts => {
+    return fonts.map(({
+      id: _familyDbId,
+      fontFace,
+      ...font
+    }) => ({
+      ...font,
+      ...(fontFace && fontFace.length > 0 ? {
+        fontFace: fontFace.map(({
+          id: _faceDbId,
+          ...face
+        }) => face)
+      } : {})
+    }));
+  };
+  const loadFontsInBrowser = fonts => {
+    // Add custom fonts to the browser.
+    fonts.forEach(font => {
+      if (font.fontFace) {
+        font.fontFace.forEach(face => {
+          // Load font faces just in the iframe because they already are in the document.
+          loadFontFaceInBrowser(face, getDisplaySrcFromFontFace(face.src), 'all');
+        });
+      }
+    });
+  };
+  const toggleActivateFont = (font, face) => {
+    var _fontFamilies$font$so2;
+    // If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts
+    // We want to save as active all the theme fonts at the beginning
+    const initialFonts = (_fontFamilies$font$so2 = fontFamilies?.[font.source]) !== null && _fontFamilies$font$so2 !== void 0 ? _fontFamilies$font$so2 : [];
+    // Toggles the received font family or font face
+    const newFonts = toggleFont(font, face, initialFonts);
+    // Updates the font families activated in global settings:
+    setFontFamilies({
+      ...fontFamilies,
+      [font.source]: newFonts
+    });
+    const isFaceActivated = isFontActivated(font.slug, face?.fontStyle, face?.fontWeight, font.source);
+    if (isFaceActivated) {
+      loadFontFaceInBrowser(face, getDisplaySrcFromFontFace(face?.src), 'all');
+    } else {
+      unloadFontFaceInBrowser(face, 'all');
+    }
+  };
+  const loadFontFaceAsset = async fontFace => {
+    // If the font doesn't have a src, don't load it.
+    if (!fontFace.src) {
+      return;
+    }
+    // Get the src of the font.
+    const src = getDisplaySrcFromFontFace(fontFace.src);
+    // If the font is already loaded, don't load it again.
+    if (!src || loadedFontUrls.has(src)) {
+      return;
+    }
+    // Load the font in the browser.
+    loadFontFaceInBrowser(fontFace, src, 'document');
+    // Add the font to the loaded fonts list.
+    loadedFontUrls.add(src);
+  };
+
+  // Font Collections
+  const [collections, setFontCollections] = (0,external_wp_element_namespaceObject.useState)([]);
+  const getFontCollections = async () => {
+    const response = await fetchFontCollections();
+    setFontCollections(response);
+  };
+  const getFontCollection = async slug => {
+    try {
+      const hasData = !!collections.find(collection => collection.slug === slug)?.font_families;
+      if (hasData) {
+        return;
+      }
+      const response = await fetchFontCollection(slug);
+      const updatedCollections = collections.map(collection => collection.slug === slug ? {
+        ...collection,
+        ...response
+      } : collection);
+      setFontCollections(updatedCollections);
+    } catch (e) {
+      // eslint-disable-next-line no-console
+      console.error(e);
+      throw e;
+    }
+  };
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    getFontCollections();
+  }, []);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FontLibraryContext.Provider, {
+    value: {
+      libraryFontSelected,
+      handleSetLibraryFontSelected,
+      fontFamilies,
+      baseCustomFonts,
+      isFontActivated,
+      getFontFacesActivated,
+      loadFontFaceAsset,
+      installFonts,
+      uninstallFontFamily,
+      toggleActivateFont,
+      getAvailableFontsOutline,
+      modalTabOpen,
+      setModalTabOpen,
+      refreshLibrary,
+      notice,
+      setNotice,
+      saveFontFamilies,
+      isResolvingLibrary,
+      isInstalling,
+      collections,
+      getFontCollection
+    },
+    children: children
+  });
+}
+/* harmony default export */ const context = (FontLibraryProvider);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/font-demo.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+function getPreviewUrl(fontFace) {
+  if (fontFace.preview) {
+    return fontFace.preview;
+  }
+  if (fontFace.src) {
+    return Array.isArray(fontFace.src) ? fontFace.src[0] : fontFace.src;
+  }
+}
+function getDisplayFontFace(font) {
+  // if this IS a font face return it
+  if (font.fontStyle || font.fontWeight) {
+    return font;
+  }
+  // if this is a font family with a collection of font faces
+  // return the first one that is normal and 400 OR just the first one
+  if (font.fontFace && font.fontFace.length) {
+    return font.fontFace.find(face => face.fontStyle === 'normal' && face.fontWeight === '400') || font.fontFace[0];
+  }
+  // This must be a font family with no font faces
+  // return a fake font face
+  return {
+    fontStyle: 'normal',
+    fontWeight: '400',
+    fontFamily: font.fontFamily,
+    fake: true
+  };
+}
+function FontDemo({
+  font,
+  text
+}) {
+  const ref = (0,external_wp_element_namespaceObject.useRef)(null);
+  const fontFace = getDisplayFontFace(font);
+  const style = getFamilyPreviewStyle(font);
+  text = text || font.name;
+  const customPreviewUrl = font.preview;
+  const [isIntersecting, setIsIntersecting] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [isAssetLoaded, setIsAssetLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
+  const {
+    loadFontFaceAsset
+  } = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
+  const previewUrl = customPreviewUrl !== null && customPreviewUrl !== void 0 ? customPreviewUrl : getPreviewUrl(fontFace);
+  const isPreviewImage = previewUrl && previewUrl.match(/\.(png|jpg|jpeg|gif|svg)$/i);
+  const faceStyles = getFacePreviewStyle(fontFace);
+  const textDemoStyle = {
+    fontSize: '18px',
+    lineHeight: 1,
+    opacity: isAssetLoaded ? '1' : '0',
+    ...style,
+    ...faceStyles
+  };
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    const observer = new window.IntersectionObserver(([entry]) => {
+      setIsIntersecting(entry.isIntersecting);
+    }, {});
+    observer.observe(ref.current);
+    return () => observer.disconnect();
+  }, [ref]);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    const loadAsset = async () => {
+      if (isIntersecting) {
+        if (!isPreviewImage && fontFace.src) {
+          await loadFontFaceAsset(fontFace);
+        }
+        setIsAssetLoaded(true);
+      }
+    };
+    loadAsset();
+  }, [fontFace, isIntersecting, loadFontFaceAsset, isPreviewImage]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    ref: ref,
+    children: isPreviewImage ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
+      src: previewUrl,
+      loading: "lazy",
+      alt: text,
+      className: "font-library-modal__font-variant_demo-image"
+    }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+      style: textDemoStyle,
+      className: "font-library-modal__font-variant_demo-text",
+      children: text
+    })
+  });
+}
+/* harmony default export */ const font_demo = (FontDemo);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/font-card.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+function FontCard({
+  font,
+  onClick,
+  variantsText,
+  navigatorPath
+}) {
+  const variantsCount = font.fontFace?.length || 1;
+  const style = {
+    cursor: !!onClick ? 'pointer' : 'default'
+  };
+  const navigator = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)();
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+    onClick: () => {
+      onClick();
+      if (navigatorPath) {
+        navigator.goTo(navigatorPath);
+      }
+    },
+    style: style,
+    className: "font-library-modal__font-card",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+      justify: "space-between",
+      wrap: false,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_demo, {
+        font: font
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+        justify: "flex-end",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+            className: "font-library-modal__font-card__count",
+            children: variantsText || (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %d: Number of font variants. */
+            (0,external_wp_i18n_namespaceObject._n)('%d variant', '%d variants', variantsCount), variantsCount)
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+            icon: chevron_right
+          })
+        })]
+      })]
+    })
+  });
+}
+/* harmony default export */ const font_card = (FontCard);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/library-font-variant.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+const {
+  kebabCase: library_font_variant_kebabCase
+} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function LibraryFontVariant({
+  face,
+  font
+}) {
+  const {
+    isFontActivated,
+    toggleActivateFont
+  } = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
+  const isInstalled = font?.fontFace?.length > 0 ? isFontActivated(font.slug, face.fontStyle, face.fontWeight, font.source) : isFontActivated(font.slug, null, null, font.source);
+  const handleToggleActivation = () => {
+    if (font?.fontFace?.length > 0) {
+      toggleActivateFont(font, face);
+      return;
+    }
+    toggleActivateFont(font);
+  };
+  const displayName = font.name + ' ' + getFontFaceVariantName(face);
+  const checkboxId = library_font_variant_kebabCase(`${font.slug}-${getFontFaceVariantName(face)}`);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    className: "font-library-modal__font-card",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+      justify: "flex-start",
+      align: "center",
+      gap: "1rem",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
+        checked: isInstalled,
+        onChange: handleToggleActivation,
+        __nextHasNoMarginBottom: true,
+        id: checkboxId
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("label", {
+        htmlFor: checkboxId,
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_demo, {
+          font: face,
+          text: displayName,
+          onClick: handleToggleActivation
+        })
+      })]
+    })
+  });
+}
+/* harmony default export */ const library_font_variant = (LibraryFontVariant);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/sort-font-faces.js
+function getNumericFontWeight(value) {
+  switch (value) {
+    case 'normal':
+      return 400;
+    case 'bold':
+      return 700;
+    case 'bolder':
+      return 500;
+    case 'lighter':
+      return 300;
+    default:
+      return parseInt(value, 10);
+  }
+}
+function sortFontFaces(faces) {
+  return faces.sort((a, b) => {
+    // Ensure 'normal' fontStyle is always first
+    if (a.fontStyle === 'normal' && b.fontStyle !== 'normal') {
+      return -1;
+    }
+    if (b.fontStyle === 'normal' && a.fontStyle !== 'normal') {
+      return 1;
+    }
+
+    // If both fontStyles are the same, sort by fontWeight
+    if (a.fontStyle === b.fontStyle) {
+      return getNumericFontWeight(a.fontWeight) - getNumericFontWeight(b.fontWeight);
+    }
+
+    // Sort other fontStyles alphabetically
+    return a.fontStyle.localeCompare(b.fontStyle);
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/installed-fonts.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+const {
+  useGlobalSetting: installed_fonts_useGlobalSetting
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function InstalledFonts() {
+  const {
+    baseCustomFonts,
+    libraryFontSelected,
+    handleSetLibraryFontSelected,
+    refreshLibrary,
+    uninstallFontFamily,
+    isResolvingLibrary,
+    isInstalling,
+    saveFontFamilies,
+    getFontFacesActivated,
+    notice,
+    setNotice,
+    fontFamilies
+  } = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
+  const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [baseFontFamilies] = installed_fonts_useGlobalSetting('typography.fontFamilies', undefined, 'base');
+  const globalStylesId = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      __experimentalGetCurrentGlobalStylesId
+    } = select(external_wp_coreData_namespaceObject.store);
+    return __experimentalGetCurrentGlobalStylesId();
+  });
+  const globalStyles = (0,external_wp_coreData_namespaceObject.useEntityRecord)('root', 'globalStyles', globalStylesId);
+  const fontFamiliesHasChanges = !!globalStyles?.edits?.settings?.typography?.fontFamilies;
+  const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map(f => setUIValuesNeeded(f, {
+    source: 'theme'
+  })).sort((a, b) => a.name.localeCompare(b.name)) : [];
+  const themeFontsSlugs = new Set(themeFonts.map(f => f.slug));
+  const baseThemeFonts = baseFontFamilies?.theme ? themeFonts.concat(baseFontFamilies.theme.filter(f => !themeFontsSlugs.has(f.slug)).map(f => setUIValuesNeeded(f, {
+    source: 'theme'
+  })).sort((a, b) => a.name.localeCompare(b.name))) : [];
+  const customFontFamilyId = libraryFontSelected?.source === 'custom' && libraryFontSelected?.id;
+  const canUserDelete = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      canUser
+    } = select(external_wp_coreData_namespaceObject.store);
+    return customFontFamilyId && canUser('delete', 'font-families', customFontFamilyId);
+  }, [customFontFamilyId]);
+  const shouldDisplayDeleteButton = !!libraryFontSelected && libraryFontSelected?.source !== 'theme' && canUserDelete;
+  const handleUninstallClick = () => {
+    setIsConfirmDeleteOpen(true);
+  };
+  const getFontFacesToDisplay = font => {
+    if (!font) {
+      return [];
+    }
+    if (!font.fontFace || !font.fontFace.length) {
+      return [{
+        fontFamily: font.fontFamily,
+        fontStyle: 'normal',
+        fontWeight: '400'
+      }];
+    }
+    return sortFontFaces(font.fontFace);
+  };
+  const getFontCardVariantsText = font => {
+    const variantsInstalled = font?.fontFace?.length > 0 ? font.fontFace.length : 1;
+    const variantsActive = getFontFacesActivated(font.slug, font.source).length;
+    return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Active font variants, 2: Total font variants. */
+    (0,external_wp_i18n_namespaceObject.__)('%1$s/%2$s variants active'), variantsActive, variantsInstalled);
+  };
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    handleSetLibraryFontSelected(libraryFontSelected);
+    refreshLibrary();
+  }, []);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+    className: "font-library-modal__tabpanel-layout",
+    children: [isResolvingLibrary && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "font-library-modal__loading",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ProgressBar, {})
+    }), !isResolvingLibrary && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalNavigatorProvider, {
+        initialPath: libraryFontSelected ? '/fontFamily' : '/',
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, {
+          path: "/",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+            spacing: "8",
+            children: [notice && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, {
+              status: notice.type,
+              onRemove: () => setNotice(null),
+              children: notice.message
+            }), baseCustomFonts.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+              children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", {
+                className: "font-library-modal__fonts-title",
+                children: (0,external_wp_i18n_namespaceObject.__)('Installed Fonts')
+              }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
+                role: "list",
+                className: "font-library-modal__fonts-list",
+                children: baseCustomFonts.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
+                  className: "font-library-modal__fonts-list-item",
+                  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_card, {
+                    font: font,
+                    navigatorPath: "/fontFamily",
+                    variantsText: getFontCardVariantsText(font),
+                    onClick: () => {
+                      handleSetLibraryFontSelected(font);
+                    }
+                  })
+                }, font.slug))
+              })]
+            }), baseThemeFonts.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+              children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", {
+                className: "font-library-modal__fonts-title",
+                children: (0,external_wp_i18n_namespaceObject.__)('Theme Fonts')
+              }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
+                role: "list",
+                className: "font-library-modal__fonts-list",
+                children: baseThemeFonts.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
+                  className: "font-library-modal__fonts-list-item",
+                  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_card, {
+                    font: font,
+                    navigatorPath: "/fontFamily",
+                    variantsText: getFontCardVariantsText(font),
+                    onClick: () => {
+                      handleSetLibraryFontSelected(font);
+                    }
+                  })
+                }, font.slug))
+              })]
+            })]
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, {
+          path: "/fontFamily",
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ConfirmDeleteDialog, {
+            font: libraryFontSelected,
+            isOpen: isConfirmDeleteOpen,
+            setIsOpen: setIsConfirmDeleteOpen,
+            setNotice: setNotice,
+            uninstallFontFamily: uninstallFontFamily,
+            handleSetLibraryFontSelected: handleSetLibraryFontSelected
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+            justify: "flex-start",
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalNavigatorToParentButton, {
+              icon: chevron_left,
+              size: "small",
+              onClick: () => {
+                handleSetLibraryFontSelected(null);
+              },
+              label: (0,external_wp_i18n_namespaceObject.__)('Back')
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+              level: 2,
+              size: 13,
+              className: "edit-site-global-styles-header",
+              children: libraryFontSelected?.name
+            })]
+          }), notice && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+              margin: 1
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, {
+              status: notice.type,
+              onRemove: () => setNotice(null),
+              children: notice.message
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+              margin: 1
+            })]
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+            margin: 4
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+            children: (0,external_wp_i18n_namespaceObject.__)('Choose font variants. Keep in mind that too many variants could make your site slower.')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+            margin: 4
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+            spacing: 0,
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+              margin: 8
+            }), getFontFacesToDisplay(libraryFontSelected).map((face, i) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(library_font_variant, {
+              font: libraryFontSelected,
+              face: face
+            }, `face${i}`))]
+          })]
+        })]
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        justify: "flex-end",
+        className: "font-library-modal__tabpanel-layout__footer",
+        children: [isInstalling && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ProgressBar, {}), shouldDisplayDeleteButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          isDestructive: true,
+          variant: "tertiary",
+          onClick: handleUninstallClick,
+          children: (0,external_wp_i18n_namespaceObject.__)('Delete')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          variant: "primary",
+          onClick: () => {
+            saveFontFamilies(fontFamilies);
+          },
+          disabled: !fontFamiliesHasChanges,
+          __experimentalIsFocusable: true,
+          children: (0,external_wp_i18n_namespaceObject.__)('Update')
+        })]
+      })]
+    })]
+  });
+}
+function ConfirmDeleteDialog({
+  font,
+  isOpen,
+  setIsOpen,
+  setNotice,
+  uninstallFontFamily,
+  handleSetLibraryFontSelected
+}) {
+  const navigator = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)();
+  const handleConfirmUninstall = async () => {
+    setNotice(null);
+    setIsOpen(false);
+    try {
+      await uninstallFontFamily(font);
+      navigator.goBack();
+      handleSetLibraryFontSelected(null);
+      setNotice({
+        type: 'success',
+        message: (0,external_wp_i18n_namespaceObject.__)('Font family uninstalled successfully.')
+      });
+    } catch (error) {
+      setNotice({
+        type: 'error',
+        message: (0,external_wp_i18n_namespaceObject.__)('There was an error uninstalling the font family. ') + error.message
+      });
+    }
+  };
+  const handleCancelUninstall = () => {
+    setIsOpen(false);
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
+    isOpen: isOpen,
+    cancelButtonText: (0,external_wp_i18n_namespaceObject.__)('Cancel'),
+    confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'),
+    onCancel: handleCancelUninstall,
+    onConfirm: handleConfirmUninstall,
+    size: "medium",
+    children: font && (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Name of the font. */
+    (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete "%s" font and all its variants and assets?'), font.name)
+  });
+}
+/* harmony default export */ const installed_fonts = (InstalledFonts);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js
+/**
+ * Filters a list of fonts based on the specified filters.
+ *
+ * This function filters a given array of fonts based on the criteria provided in the filters object.
+ * It supports filtering by category and a search term. If the category is provided and not equal to 'all',
+ * the function filters the fonts array to include only those fonts that belong to the specified category.
+ * Additionally, if a search term is provided, it filters the fonts array to include only those fonts
+ * whose name includes the search term, case-insensitively.
+ *
+ * @param {Array}  fonts   Array of font objects in font-collection schema fashion to be filtered. Each font object should have a 'categories' property and a 'font_family_settings' property with a 'name' key.
+ * @param {Object} filters Object containing the filter criteria. It should have a 'category' key and/or a 'search' key.
+ *                         The 'category' key is a string representing the category to filter by.
+ *                         The 'search' key is a string representing the search term to filter by.
+ * @return {Array} Array of filtered font objects based on the provided criteria.
+ */
+function filterFonts(fonts, filters) {
+  const {
+    category,
+    search
+  } = filters;
+  let filteredFonts = fonts || [];
+  if (category && category !== 'all') {
+    filteredFonts = filteredFonts.filter(font => font.categories.indexOf(category) !== -1);
+  }
+  if (search) {
+    filteredFonts = filteredFonts.filter(font => font.font_family_settings.name.toLowerCase().includes(search.toLowerCase()));
+  }
+  return filteredFonts;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js
+function getFontsOutline(fonts) {
+  return fonts.reduce((acc, font) => ({
+    ...acc,
+    [font.slug]: (font?.fontFace || []).reduce((faces, face) => ({
+      ...faces,
+      [`${face.fontStyle}-${face.fontWeight}`]: true
+    }), {})
+  }), {});
+}
+function isFontFontFaceInOutline(slug, face, outline) {
+  if (!face) {
+    return !!outline[slug];
+  }
+  return !!outline[slug]?.[`${face.fontStyle}-${face.fontWeight}`];
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+function GoogleFontsConfirmDialog() {
+  const handleConfirm = () => {
+    // eslint-disable-next-line no-undef
+    window.localStorage.setItem('wp-font-library-google-fonts-permission', 'true');
+    window.dispatchEvent(new Event('storage'));
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    className: "font-library__google-fonts-confirm",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Card, {
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.CardBody, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+          level: 2,
+          children: (0,external_wp_i18n_namespaceObject.__)('Connect to Google Fonts')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+          margin: 6
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+          as: "p",
+          children: (0,external_wp_i18n_namespaceObject.__)('To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+          margin: 3
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+          as: "p",
+          children: (0,external_wp_i18n_namespaceObject.__)('You can alternatively upload files directly on the Upload tab.')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+          margin: 6
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          __next40pxDefaultSize: true,
+          variant: "primary",
+          onClick: handleConfirm,
+          children: (0,external_wp_i18n_namespaceObject.__)('Allow access to Google Fonts')
+        })]
+      })
+    })
+  });
+}
+/* harmony default export */ const google_fonts_confirm_dialog = (GoogleFontsConfirmDialog);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/collection-font-variant.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  kebabCase: collection_font_variant_kebabCase
+} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function CollectionFontVariant({
+  face,
+  font,
+  handleToggleVariant,
+  selected
+}) {
+  const handleToggleActivation = () => {
+    if (font?.fontFace) {
+      handleToggleVariant(font, face);
+      return;
+    }
+    handleToggleVariant(font);
+  };
+  const displayName = font.name + ' ' + getFontFaceVariantName(face);
+  const checkboxId = collection_font_variant_kebabCase(`${font.slug}-${getFontFaceVariantName(face)}`);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    className: "font-library-modal__font-card",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+      justify: "flex-start",
+      align: "center",
+      gap: "1rem",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
+        checked: selected,
+        onChange: handleToggleActivation,
+        __nextHasNoMarginBottom: true,
+        id: checkboxId
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("label", {
+        htmlFor: checkboxId,
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_demo, {
+          font: face,
+          text: displayName,
+          onClick: handleToggleActivation
+        })
+      })]
+    })
+  });
+}
+/* harmony default export */ const collection_font_variant = (CollectionFontVariant);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/font-collection.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+const DEFAULT_CATEGORY = {
+  slug: 'all',
+  name: (0,external_wp_i18n_namespaceObject._x)('All', 'font categories')
+};
+const LOCAL_STORAGE_ITEM = 'wp-font-library-google-fonts-permission';
+const MIN_WINDOW_HEIGHT = 500;
+function FontCollection({
+  slug
+}) {
+  var _selectedCollection$c;
+  const requiresPermission = slug === 'google-fonts';
+  const getGoogleFontsPermissionFromStorage = () => {
+    return window.localStorage.getItem(LOCAL_STORAGE_ITEM) === 'true';
+  };
+  const [selectedFont, setSelectedFont] = (0,external_wp_element_namespaceObject.useState)(null);
+  const [fontsToInstall, setFontsToInstall] = (0,external_wp_element_namespaceObject.useState)([]);
+  const [page, setPage] = (0,external_wp_element_namespaceObject.useState)(1);
+  const [filters, setFilters] = (0,external_wp_element_namespaceObject.useState)({});
+  const [renderConfirmDialog, setRenderConfirmDialog] = (0,external_wp_element_namespaceObject.useState)(requiresPermission && !getGoogleFontsPermissionFromStorage());
+  const {
+    collections,
+    getFontCollection,
+    installFonts,
+    isInstalling,
+    notice,
+    setNotice
+  } = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
+  const selectedCollection = collections.find(collection => collection.slug === slug);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    const handleStorage = () => {
+      setRenderConfirmDialog(requiresPermission && !getGoogleFontsPermissionFromStorage());
+    };
+    handleStorage();
+    window.addEventListener('storage', handleStorage);
+    return () => window.removeEventListener('storage', handleStorage);
+  }, [slug, requiresPermission]);
+  const revokeAccess = () => {
+    window.localStorage.setItem(LOCAL_STORAGE_ITEM, 'false');
+    window.dispatchEvent(new Event('storage'));
+  };
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    const fetchFontCollection = async () => {
+      try {
+        await getFontCollection(slug);
+        resetFilters();
+      } catch (e) {
+        if (!notice) {
+          setNotice({
+            type: 'error',
+            message: e?.message
+          });
+        }
+      }
+    };
+    fetchFontCollection();
+  }, [slug, getFontCollection, setNotice, notice]);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    setSelectedFont(null);
+    setNotice(null);
+  }, [slug, setNotice]);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    // If the selected fonts change, reset the selected fonts to install
+    setFontsToInstall([]);
+  }, [selectedFont]);
+  const collectionFonts = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    var _selectedCollection$f;
+    return (_selectedCollection$f = selectedCollection?.font_families) !== null && _selectedCollection$f !== void 0 ? _selectedCollection$f : [];
+  }, [selectedCollection]);
+  const collectionCategories = (_selectedCollection$c = selectedCollection?.categories) !== null && _selectedCollection$c !== void 0 ? _selectedCollection$c : [];
+  const categories = [DEFAULT_CATEGORY, ...collectionCategories];
+  const fonts = (0,external_wp_element_namespaceObject.useMemo)(() => filterFonts(collectionFonts, filters), [collectionFonts, filters]);
+  const isLoading = !selectedCollection?.font_families && !notice;
+
+  // NOTE: The height of the font library modal unavailable to use for rendering font family items is roughly 417px
+  // The height of each font family item is 61px.
+  const windowHeight = Math.max(window.innerHeight, MIN_WINDOW_HEIGHT);
+  const pageSize = Math.floor((windowHeight - 417) / 61);
+  const totalPages = Math.ceil(fonts.length / pageSize);
+  const itemsStart = (page - 1) * pageSize;
+  const itemsLimit = page * pageSize;
+  const items = fonts.slice(itemsStart, itemsLimit);
+  const handleCategoryFilter = category => {
+    setFilters({
+      ...filters,
+      category
+    });
+    setPage(1);
+  };
+  const handleUpdateSearchInput = value => {
+    setFilters({
+      ...filters,
+      search: value
+    });
+    setPage(1);
+  };
+  const debouncedUpdateSearchInput = (0,external_wp_compose_namespaceObject.debounce)(handleUpdateSearchInput, 300);
+  const resetFilters = () => {
+    setFilters({});
+    setPage(1);
+  };
+  const handleToggleVariant = (font, face) => {
+    const newFontsToInstall = toggleFont(font, face, fontsToInstall);
+    setFontsToInstall(newFontsToInstall);
+  };
+  const fontToInstallOutline = getFontsOutline(fontsToInstall);
+  const resetFontsToInstall = () => {
+    setFontsToInstall([]);
+  };
+  const handleInstall = async () => {
+    setNotice(null);
+    const fontFamily = fontsToInstall[0];
+    try {
+      if (fontFamily?.fontFace) {
+        await Promise.all(fontFamily.fontFace.map(async fontFace => {
+          if (fontFace.src) {
+            fontFace.file = await downloadFontFaceAssets(fontFace.src);
+          }
+        }));
+      }
+    } catch (error) {
+      // If any of the fonts fail to download,
+      // show an error notice and stop the request from being sent.
+      setNotice({
+        type: 'error',
+        message: (0,external_wp_i18n_namespaceObject.__)('Error installing the fonts, could not be downloaded.')
+      });
+      return;
+    }
+    try {
+      await installFonts([fontFamily]);
+      setNotice({
+        type: 'success',
+        message: (0,external_wp_i18n_namespaceObject.__)('Fonts were installed successfully.')
+      });
+    } catch (error) {
+      setNotice({
+        type: 'error',
+        message: error.message
+      });
+    }
+    resetFontsToInstall();
+  };
+  const getSortedFontFaces = fontFamily => {
+    if (!fontFamily) {
+      return [];
+    }
+    if (!fontFamily.fontFace || !fontFamily.fontFace.length) {
+      return [{
+        fontFamily: fontFamily.fontFamily,
+        fontStyle: 'normal',
+        fontWeight: '400'
+      }];
+    }
+    return sortFontFaces(fontFamily.fontFace);
+  };
+  if (renderConfirmDialog) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(google_fonts_confirm_dialog, {});
+  }
+  const ActionsComponent = () => {
+    if (slug !== 'google-fonts' || renderConfirmDialog || selectedFont) {
+      return null;
+    }
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
+      icon: more_vertical,
+      label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
+      popoverProps: {
+        position: 'bottom left'
+      },
+      controls: [{
+        title: (0,external_wp_i18n_namespaceObject.__)('Revoke access to Google Fonts'),
+        onClick: revokeAccess
+      }]
+    });
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+    className: "font-library-modal__tabpanel-layout",
+    children: [isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "font-library-modal__loading",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ProgressBar, {})
+    }), !isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalNavigatorProvider, {
+        initialPath: "/",
+        className: "font-library-modal__tabpanel-layout",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, {
+          path: "/",
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+            justify: "space-between",
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+              children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+                level: 2,
+                size: 13,
+                children: selectedCollection.name
+              }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+                children: selectedCollection.description
+              })]
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionsComponent, {})]
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+            margin: 4
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+              children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, {
+                className: "font-library-modal__search",
+                value: filters.search,
+                placeholder: (0,external_wp_i18n_namespaceObject.__)('Font name…'),
+                label: (0,external_wp_i18n_namespaceObject.__)('Search'),
+                onChange: debouncedUpdateSearchInput,
+                __nextHasNoMarginBottom: true,
+                hideLabelFromVision: false
+              })
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+              children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, {
+                label: (0,external_wp_i18n_namespaceObject.__)('Category'),
+                value: filters.category,
+                onChange: handleCategoryFilter,
+                children: categories && categories.map(category => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("option", {
+                  value: category.slug,
+                  children: category.name
+                }, category.slug))
+              })
+            })]
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+            margin: 4
+          }), !!selectedCollection?.font_families?.length && !fonts.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+            children: (0,external_wp_i18n_namespaceObject.__)('No fonts found. Try with a different search term')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+            className: "font-library-modal__fonts-grid__main",
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
+              role: "list",
+              className: "font-library-modal__fonts-list",
+              children: items.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
+                className: "font-library-modal__fonts-list-item",
+                children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_card, {
+                  font: font.font_family_settings,
+                  navigatorPath: "/fontFamily",
+                  onClick: () => {
+                    setSelectedFont(font.font_family_settings);
+                  }
+                })
+              }, font.font_family_settings.slug))
+            }), ' ']
+          })]
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, {
+          path: "/fontFamily",
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+            justify: "flex-start",
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalNavigatorToParentButton, {
+              icon: chevron_left,
+              size: "small",
+              onClick: () => {
+                setSelectedFont(null);
+                setNotice(null);
+              },
+              label: (0,external_wp_i18n_namespaceObject.__)('Back')
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+              level: 2,
+              size: 13,
+              className: "edit-site-global-styles-header",
+              children: selectedFont?.name
+            })]
+          }), notice && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+              margin: 1
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, {
+              status: notice.type,
+              onRemove: () => setNotice(null),
+              children: notice.message
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+              margin: 1
+            })]
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+            margin: 4
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+            children: (0,external_wp_i18n_namespaceObject.__)('Select font variants to install.')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+            margin: 4
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+            spacing: 0,
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+              margin: 8
+            }), getSortedFontFaces(selectedFont).map((face, i) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(collection_font_variant, {
+              font: selectedFont,
+              face: face,
+              handleToggleVariant: handleToggleVariant,
+              selected: isFontFontFaceInOutline(selectedFont.slug, selectedFont.fontFace ? face : null,
+              // If the font has no fontFace, we want to check if the font is in the outline
+              fontToInstallOutline)
+            }, `face${i}`))]
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+            margin: 16
+          })]
+        })]
+      }), selectedFont && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
+        justify: "flex-end",
+        className: "font-library-modal__tabpanel-layout__footer",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          variant: "primary",
+          onClick: handleInstall,
+          isBusy: isInstalling,
+          disabled: fontsToInstall.length === 0 || isInstalling,
+          __experimentalIsFocusable: true,
+          children: (0,external_wp_i18n_namespaceObject.__)('Install')
+        })
+      }), !selectedFont && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+        justify: "center",
+        className: "font-library-modal__tabpanel-layout__footer",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          label: (0,external_wp_i18n_namespaceObject.__)('First page'),
+          size: "compact",
+          onClick: () => setPage(1),
+          disabled: page === 1,
+          __experimentalIsFocusable: true,
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+            children: "\xAB"
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Previous page'),
+          size: "compact",
+          onClick: () => setPage(page - 1),
+          disabled: page === 1,
+          __experimentalIsFocusable: true,
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+            children: "\u2039"
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+          justify: "flex-start",
+          expanded: false,
+          spacing: 2,
+          children: (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(
+          // translators: %s: Total number of pages.
+          (0,external_wp_i18n_namespaceObject._x)('Page <CurrentPageControl /> of %s', 'paging'), totalPages), {
+            CurrentPageControl: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, {
+              "aria-label": (0,external_wp_i18n_namespaceObject.__)('Current page'),
+              value: page,
+              options: [...Array(totalPages)].map((e, i) => {
+                return {
+                  label: i + 1,
+                  value: i + 1
+                };
+              }),
+              onChange: newPage => setPage(parseInt(newPage)),
+              size: "compact",
+              __nextHasNoMarginBottom: true
+            })
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Next page'),
+          size: "compact",
+          onClick: () => setPage(page + 1),
+          disabled: page === totalPages,
+          __experimentalIsFocusable: true,
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+            children: "\u203A"
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Last page'),
+          size: "compact",
+          onClick: () => setPage(totalPages),
+          disabled: page === totalPages,
+          __experimentalIsFocusable: true,
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+            children: "\xBB"
+          })
+        })]
+      })]
+    })]
+  });
+}
+/* harmony default export */ const font_collection = (FontCollection);
+
+// EXTERNAL MODULE: ./node_modules/@wordpress/edit-site/lib/unbrotli.js
+var unbrotli = __webpack_require__(8572);
+var unbrotli_default = /*#__PURE__*/__webpack_require__.n(unbrotli);
+// EXTERNAL MODULE: ./node_modules/@wordpress/edit-site/lib/inflate.js
+var inflate = __webpack_require__(4660);
+var inflate_default = /*#__PURE__*/__webpack_require__.n(inflate);
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/lib/lib-font.browser.js
+/* eslint eslint-comments/no-unlimited-disable: 0 */
+/* eslint-disable */
+// import pako from 'pako';
+
+
+
+let fetchFunction = globalThis.fetch;
+// if ( ! fetchFunction ) {
+// 	let backlog = [];
+// 	fetchFunction = globalThis.fetch = ( ...args ) =>
+// 		new Promise( ( resolve, reject ) => {
+// 			backlog.push( { args: args, resolve: resolve, reject: reject } );
+// 		} );
+// 	import( 'fs' )
+// 		.then( ( fs ) => {
+// 			fetchFunction = globalThis.fetch = async function ( path ) {
+// 				return new Promise( ( resolve, reject ) => {
+// 					fs.readFile( path, ( err, data ) => {
+// 						if ( err ) return reject( err );
+// 						resolve( { ok: true, arrayBuffer: () => data.buffer } );
+// 					} );
+// 				} );
+// 			};
+// 			while ( backlog.length ) {
+// 				let instruction = backlog.shift();
+// 				fetchFunction( ...instruction.args )
+// 					.then( ( data ) => instruction.resolve( data ) )
+// 					.catch( ( err ) => instruction.reject( err ) );
+// 			}
+// 		} )
+// 		.catch( ( err ) => {
+// 			console.error( err );
+// 			throw new Error(
+// 				`lib-font cannot run unless either the Fetch API or Node's filesystem module is available.`
+// 			);
+// 		} );
+// }
+class lib_font_browser_Event {
+	constructor( type, detail = {}, msg ) {
+		this.type = type;
+		this.detail = detail;
+		this.msg = msg;
+		Object.defineProperty( this, `__mayPropagate`, {
+			enumerable: false,
+			writable: true,
+		} );
+		this.__mayPropagate = true;
+	}
+	preventDefault() {}
+	stopPropagation() {
+		this.__mayPropagate = false;
+	}
+	valueOf() {
+		return this;
+	}
+	toString() {
+		return this.msg
+			? `[${ this.type } event]: ${ this.msg }`
+			: `[${ this.type } event]`;
+	}
+}
+class EventManager {
+	constructor() {
+		this.listeners = {};
+	}
+	addEventListener( type, listener, useCapture ) {
+		let bin = this.listeners[ type ] || [];
+		if ( useCapture ) bin.unshift( listener );
+		else bin.push( listener );
+		this.listeners[ type ] = bin;
+	}
+	removeEventListener( type, listener ) {
+		let bin = this.listeners[ type ] || [];
+		let pos = bin.findIndex( ( e ) => e === listener );
+		if ( pos > -1 ) {
+			bin.splice( pos, 1 );
+			this.listeners[ type ] = bin;
+		}
+	}
+	dispatch( event ) {
+		let bin = this.listeners[ event.type ];
+		if ( bin ) {
+			for ( let l = 0, e = bin.length; l < e; l++ ) {
+				if ( ! event.__mayPropagate ) break;
+				bin[ l ]( event );
+			}
+		}
+	}
+}
+const startDate = new Date( `1904-01-01T00:00:00+0000` ).getTime();
+function asText( data ) {
+	return Array.from( data )
+		.map( ( v ) => String.fromCharCode( v ) )
+		.join( `` );
+}
+class Parser {
+	constructor( dict, dataview, name ) {
+		this.name = ( name || dict.tag || `` ).trim();
+		this.length = dict.length;
+		this.start = dict.offset;
+		this.offset = 0;
+		this.data = dataview;
+		[
+			`getInt8`,
+			`getUint8`,
+			`getInt16`,
+			`getUint16`,
+			`getInt32`,
+			`getUint32`,
+			`getBigInt64`,
+			`getBigUint64`,
+		].forEach( ( name ) => {
+			let fn = name.replace( /get(Big)?/, '' ).toLowerCase();
+			let increment = parseInt( name.replace( /[^\d]/g, '' ) ) / 8;
+			Object.defineProperty( this, fn, {
+				get: () => this.getValue( name, increment ),
+			} );
+		} );
+	}
+	get currentPosition() {
+		return this.start + this.offset;
+	}
+	set currentPosition( position ) {
+		this.start = position;
+		this.offset = 0;
+	}
+	skip( n = 0, bits = 8 ) {
+		this.offset += ( n * bits ) / 8;
+	}
+	getValue( type, increment ) {
+		let pos = this.start + this.offset;
+		this.offset += increment;
+		try {
+			return this.data[ type ]( pos );
+		} catch ( e ) {
+			console.error( `parser`, type, increment, this );
+			console.error( `parser`, this.start, this.offset );
+			throw e;
+		}
+	}
+	flags( n ) {
+		if ( n === 8 || n === 16 || n === 32 || n === 64 ) {
+			return this[ `uint${ n }` ]
+				.toString( 2 )
+				.padStart( n, 0 )
+				.split( `` )
+				.map( ( v ) => v === '1' );
+		}
+		console.error(
+			`Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long`
+		);
+		console.trace();
+	}
+	get tag() {
+		const t = this.uint32;
+		return asText( [
+			( t >> 24 ) & 255,
+			( t >> 16 ) & 255,
+			( t >> 8 ) & 255,
+			t & 255,
+		] );
+	}
+	get fixed() {
+		let major = this.int16;
+		let minor = Math.round( ( 1e3 * this.uint16 ) / 65356 );
+		return major + minor / 1e3;
+	}
+	get legacyFixed() {
+		let major = this.uint16;
+		let minor = this.uint16.toString( 16 ).padStart( 4, 0 );
+		return parseFloat( `${ major }.${ minor }` );
+	}
+	get uint24() {
+		return ( this.uint8 << 16 ) + ( this.uint8 << 8 ) + this.uint8;
+	}
+	get uint128() {
+		let value = 0;
+		for ( let i = 0; i < 5; i++ ) {
+			let byte = this.uint8;
+			value = value * 128 + ( byte & 127 );
+			if ( byte < 128 ) break;
+		}
+		return value;
+	}
+	get longdatetime() {
+		return new Date( startDate + 1e3 * parseInt( this.int64.toString() ) );
+	}
+	get fword() {
+		return this.int16;
+	}
+	get ufword() {
+		return this.uint16;
+	}
+	get Offset16() {
+		return this.uint16;
+	}
+	get Offset32() {
+		return this.uint32;
+	}
+	get F2DOT14() {
+		const bits = p.uint16;
+		const integer = [ 0, 1, -2, -1 ][ bits >> 14 ];
+		const fraction = bits & 16383;
+		return integer + fraction / 16384;
+	}
+	verifyLength() {
+		if ( this.offset != this.length ) {
+			console.error(
+				`unexpected parsed table size (${ this.offset }) for "${ this.name }" (expected ${ this.length })`
+			);
+		}
+	}
+	readBytes( n = 0, position = 0, bits = 8, signed = false ) {
+		n = n || this.length;
+		if ( n === 0 ) return [];
+		if ( position ) this.currentPosition = position;
+		const fn = `${ signed ? `` : `u` }int${ bits }`,
+			slice = [];
+		while ( n-- ) slice.push( this[ fn ] );
+		return slice;
+	}
+}
+class ParsedData {
+	constructor( parser ) {
+		const pGetter = { enumerable: false, get: () => parser };
+		Object.defineProperty( this, `parser`, pGetter );
+		const start = parser.currentPosition;
+		const startGetter = { enumerable: false, get: () => start };
+		Object.defineProperty( this, `start`, startGetter );
+	}
+	load( struct ) {
+		Object.keys( struct ).forEach( ( p ) => {
+			let props = Object.getOwnPropertyDescriptor( struct, p );
+			if ( props.get ) {
+				this[ p ] = props.get.bind( this );
+			} else if ( props.value !== undefined ) {
+				this[ p ] = props.value;
+			}
+		} );
+		if ( this.parser.length ) {
+			this.parser.verifyLength();
+		}
+	}
+}
+class SimpleTable extends ParsedData {
+	constructor( dict, dataview, name ) {
+		const { parser: parser, start: start } = super(
+			new Parser( dict, dataview, name )
+		);
+		const pGetter = { enumerable: false, get: () => parser };
+		Object.defineProperty( this, `p`, pGetter );
+		const startGetter = { enumerable: false, get: () => start };
+		Object.defineProperty( this, `tableStart`, startGetter );
+	}
+}
+function lazy$1( object, property, getter ) {
+	let val;
+	Object.defineProperty( object, property, {
+		get: () => {
+			if ( val ) return val;
+			val = getter();
+			return val;
+		},
+		enumerable: true,
+	} );
+}
+class SFNT extends SimpleTable {
+	constructor( font, dataview, createTable ) {
+		const { p: p } = super( { offset: 0, length: 12 }, dataview, `sfnt` );
+		this.version = p.uint32;
+		this.numTables = p.uint16;
+		this.searchRange = p.uint16;
+		this.entrySelector = p.uint16;
+		this.rangeShift = p.uint16;
+		p.verifyLength();
+		this.directory = [ ...new Array( this.numTables ) ].map(
+			( _ ) => new TableRecord( p )
+		);
+		this.tables = {};
+		this.directory.forEach( ( entry ) => {
+			const getter = () =>
+				createTable(
+					this.tables,
+					{
+						tag: entry.tag,
+						offset: entry.offset,
+						length: entry.length,
+					},
+					dataview
+				);
+			lazy$1( this.tables, entry.tag.trim(), getter );
+		} );
+	}
+}
+class TableRecord {
+	constructor( p ) {
+		this.tag = p.tag;
+		this.checksum = p.uint32;
+		this.offset = p.uint32;
+		this.length = p.uint32;
+	}
+}
+const gzipDecode = (inflate_default()).inflate || undefined;
+let nativeGzipDecode = undefined;
+// if ( ! gzipDecode ) {
+// 	import( 'zlib' ).then( ( zlib ) => {
+// 		nativeGzipDecode = ( buffer ) => zlib.unzipSync( buffer );
+// 	} );
+// }
+class WOFF$1 extends SimpleTable {
+	constructor( font, dataview, createTable ) {
+		const { p: p } = super( { offset: 0, length: 44 }, dataview, `woff` );
+		this.signature = p.tag;
+		this.flavor = p.uint32;
+		this.length = p.uint32;
+		this.numTables = p.uint16;
+		p.uint16;
+		this.totalSfntSize = p.uint32;
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+		this.metaOffset = p.uint32;
+		this.metaLength = p.uint32;
+		this.metaOrigLength = p.uint32;
+		this.privOffset = p.uint32;
+		this.privLength = p.uint32;
+		p.verifyLength();
+		this.directory = [ ...new Array( this.numTables ) ].map(
+			( _ ) => new WoffTableDirectoryEntry( p )
+		);
+		buildWoffLazyLookups( this, dataview, createTable );
+	}
+}
+class WoffTableDirectoryEntry {
+	constructor( p ) {
+		this.tag = p.tag;
+		this.offset = p.uint32;
+		this.compLength = p.uint32;
+		this.origLength = p.uint32;
+		this.origChecksum = p.uint32;
+	}
+}
+function buildWoffLazyLookups( woff, dataview, createTable ) {
+	woff.tables = {};
+	woff.directory.forEach( ( entry ) => {
+		lazy$1( woff.tables, entry.tag.trim(), () => {
+			let offset = 0;
+			let view = dataview;
+			if ( entry.compLength !== entry.origLength ) {
+				const data = dataview.buffer.slice(
+					entry.offset,
+					entry.offset + entry.compLength
+				);
+				let unpacked;
+				if ( gzipDecode ) {
+					unpacked = gzipDecode( new Uint8Array( data ) );
+				} else if ( nativeGzipDecode ) {
+					unpacked = nativeGzipDecode( new Uint8Array( data ) );
+				} else {
+					const msg = `no brotli decoder available to decode WOFF2 font`;
+					if ( font.onerror ) font.onerror( msg );
+					throw new Error( msg );
+				}
+				view = new DataView( unpacked.buffer );
+			} else {
+				offset = entry.offset;
+			}
+			return createTable(
+				woff.tables,
+				{ tag: entry.tag, offset: offset, length: entry.origLength },
+				view
+			);
+		} );
+	} );
+}
+const brotliDecode = (unbrotli_default());
+let nativeBrotliDecode = undefined;
+// if ( ! brotliDecode ) {
+// 	import( 'zlib' ).then( ( zlib ) => {
+// 		nativeBrotliDecode = ( buffer ) => zlib.brotliDecompressSync( buffer );
+// 	} );
+// }
+class WOFF2$1 extends SimpleTable {
+	constructor( font, dataview, createTable ) {
+		const { p: p } = super( { offset: 0, length: 48 }, dataview, `woff2` );
+		this.signature = p.tag;
+		this.flavor = p.uint32;
+		this.length = p.uint32;
+		this.numTables = p.uint16;
+		p.uint16;
+		this.totalSfntSize = p.uint32;
+		this.totalCompressedSize = p.uint32;
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+		this.metaOffset = p.uint32;
+		this.metaLength = p.uint32;
+		this.metaOrigLength = p.uint32;
+		this.privOffset = p.uint32;
+		this.privLength = p.uint32;
+		p.verifyLength();
+		this.directory = [ ...new Array( this.numTables ) ].map(
+			( _ ) => new Woff2TableDirectoryEntry( p )
+		);
+		let dictOffset = p.currentPosition;
+		this.directory[ 0 ].offset = 0;
+		this.directory.forEach( ( e, i ) => {
+			let next = this.directory[ i + 1 ];
+			if ( next ) {
+				next.offset =
+					e.offset +
+					( e.transformLength !== undefined
+						? e.transformLength
+						: e.origLength );
+			}
+		} );
+		let decoded;
+		let buffer = dataview.buffer.slice( dictOffset );
+		if ( brotliDecode ) {
+			decoded = brotliDecode( new Uint8Array( buffer ) );
+		} else if ( nativeBrotliDecode ) {
+			decoded = new Uint8Array( nativeBrotliDecode( buffer ) );
+		} else {
+			const msg = `no brotli decoder available to decode WOFF2 font`;
+			if ( font.onerror ) font.onerror( msg );
+			throw new Error( msg );
+		}
+		buildWoff2LazyLookups( this, decoded, createTable );
+	}
+}
+class Woff2TableDirectoryEntry {
+	constructor( p ) {
+		this.flags = p.uint8;
+		const tagNumber = ( this.tagNumber = this.flags & 63 );
+		if ( tagNumber === 63 ) {
+			this.tag = p.tag;
+		} else {
+			this.tag = getWOFF2Tag( tagNumber );
+		}
+		const transformVersion = ( this.transformVersion =
+			( this.flags & 192 ) >> 6 );
+		let hasTransforms = transformVersion !== 0;
+		if ( this.tag === `glyf` || this.tag === `loca` ) {
+			hasTransforms = this.transformVersion !== 3;
+		}
+		this.origLength = p.uint128;
+		if ( hasTransforms ) {
+			this.transformLength = p.uint128;
+		}
+	}
+}
+function buildWoff2LazyLookups( woff2, decoded, createTable ) {
+	woff2.tables = {};
+	woff2.directory.forEach( ( entry ) => {
+		lazy$1( woff2.tables, entry.tag.trim(), () => {
+			const start = entry.offset;
+			const end =
+				start +
+				( entry.transformLength
+					? entry.transformLength
+					: entry.origLength );
+			const data = new DataView( decoded.slice( start, end ).buffer );
+			try {
+				return createTable(
+					woff2.tables,
+					{ tag: entry.tag, offset: 0, length: entry.origLength },
+					data
+				);
+			} catch ( e ) {
+				console.error( e );
+			}
+		} );
+	} );
+}
+function getWOFF2Tag( flag ) {
+	return [
+		`cmap`,
+		`head`,
+		`hhea`,
+		`hmtx`,
+		`maxp`,
+		`name`,
+		`OS/2`,
+		`post`,
+		`cvt `,
+		`fpgm`,
+		`glyf`,
+		`loca`,
+		`prep`,
+		`CFF `,
+		`VORG`,
+		`EBDT`,
+		`EBLC`,
+		`gasp`,
+		`hdmx`,
+		`kern`,
+		`LTSH`,
+		`PCLT`,
+		`VDMX`,
+		`vhea`,
+		`vmtx`,
+		`BASE`,
+		`GDEF`,
+		`GPOS`,
+		`GSUB`,
+		`EBSC`,
+		`JSTF`,
+		`MATH`,
+		`CBDT`,
+		`CBLC`,
+		`COLR`,
+		`CPAL`,
+		`SVG `,
+		`sbix`,
+		`acnt`,
+		`avar`,
+		`bdat`,
+		`bloc`,
+		`bsln`,
+		`cvar`,
+		`fdsc`,
+		`feat`,
+		`fmtx`,
+		`fvar`,
+		`gvar`,
+		`hsty`,
+		`just`,
+		`lcar`,
+		`mort`,
+		`morx`,
+		`opbd`,
+		`prop`,
+		`trak`,
+		`Zapf`,
+		`Silf`,
+		`Glat`,
+		`Gloc`,
+		`Feat`,
+		`Sill`,
+	][ flag & 63 ];
+}
+const tableClasses = {};
+let tableClassesLoaded = false;
+Promise.all( [
+	Promise.resolve().then( function () {
+		return cmap$1;
+	} ),
+	Promise.resolve().then( function () {
+		return head$1;
+	} ),
+	Promise.resolve().then( function () {
+		return hhea$1;
+	} ),
+	Promise.resolve().then( function () {
+		return hmtx$1;
+	} ),
+	Promise.resolve().then( function () {
+		return maxp$1;
+	} ),
+	Promise.resolve().then( function () {
+		return name$1;
+	} ),
+	Promise.resolve().then( function () {
+		return OS2$1;
+	} ),
+	Promise.resolve().then( function () {
+		return post$1;
+	} ),
+	Promise.resolve().then( function () {
+		return BASE$1;
+	} ),
+	Promise.resolve().then( function () {
+		return GDEF$1;
+	} ),
+	Promise.resolve().then( function () {
+		return GSUB$1;
+	} ),
+	Promise.resolve().then( function () {
+		return GPOS$1;
+	} ),
+	Promise.resolve().then( function () {
+		return SVG$1;
+	} ),
+	Promise.resolve().then( function () {
+		return fvar$1;
+	} ),
+	Promise.resolve().then( function () {
+		return cvt$1;
+	} ),
+	Promise.resolve().then( function () {
+		return fpgm$1;
+	} ),
+	Promise.resolve().then( function () {
+		return gasp$1;
+	} ),
+	Promise.resolve().then( function () {
+		return glyf$1;
+	} ),
+	Promise.resolve().then( function () {
+		return loca$1;
+	} ),
+	Promise.resolve().then( function () {
+		return prep$1;
+	} ),
+	Promise.resolve().then( function () {
+		return CFF$1;
+	} ),
+	Promise.resolve().then( function () {
+		return CFF2$1;
+	} ),
+	Promise.resolve().then( function () {
+		return VORG$1;
+	} ),
+	Promise.resolve().then( function () {
+		return EBLC$1;
+	} ),
+	Promise.resolve().then( function () {
+		return EBDT$1;
+	} ),
+	Promise.resolve().then( function () {
+		return EBSC$1;
+	} ),
+	Promise.resolve().then( function () {
+		return CBLC$1;
+	} ),
+	Promise.resolve().then( function () {
+		return CBDT$1;
+	} ),
+	Promise.resolve().then( function () {
+		return sbix$1;
+	} ),
+	Promise.resolve().then( function () {
+		return COLR$1;
+	} ),
+	Promise.resolve().then( function () {
+		return CPAL$1;
+	} ),
+	Promise.resolve().then( function () {
+		return DSIG$1;
+	} ),
+	Promise.resolve().then( function () {
+		return hdmx$1;
+	} ),
+	Promise.resolve().then( function () {
+		return kern$1;
+	} ),
+	Promise.resolve().then( function () {
+		return LTSH$1;
+	} ),
+	Promise.resolve().then( function () {
+		return MERG$1;
+	} ),
+	Promise.resolve().then( function () {
+		return meta$1;
+	} ),
+	Promise.resolve().then( function () {
+		return PCLT$1;
+	} ),
+	Promise.resolve().then( function () {
+		return VDMX$1;
+	} ),
+	Promise.resolve().then( function () {
+		return vhea$1;
+	} ),
+	Promise.resolve().then( function () {
+		return vmtx$1;
+	} ),
+] ).then( ( data ) => {
+	data.forEach( ( e ) => {
+		let name = Object.keys( e )[ 0 ];
+		tableClasses[ name ] = e[ name ];
+	} );
+	tableClassesLoaded = true;
+} );
+function createTable( tables, dict, dataview ) {
+	let name = dict.tag.replace( /[^\w\d]/g, `` );
+	let Type = tableClasses[ name ];
+	if ( Type ) return new Type( dict, dataview, tables );
+	console.warn(
+		`lib-font has no definition for ${ name }. The table was skipped.`
+	);
+	return {};
+}
+function loadTableClasses() {
+	let count = 0;
+	function checkLoaded( resolve, reject ) {
+		if ( ! tableClassesLoaded ) {
+			if ( count > 10 ) {
+				return reject( new Error( `loading took too long` ) );
+			}
+			count++;
+			return setTimeout( () => checkLoaded( resolve ), 250 );
+		}
+		resolve( createTable );
+	}
+	return new Promise( ( resolve, reject ) => checkLoaded( resolve ) );
+}
+function getFontCSSFormat( path, errorOnStyle ) {
+	let pos = path.lastIndexOf( `.` );
+	let ext = ( path.substring( pos + 1 ) || `` ).toLowerCase();
+	let format = {
+		ttf: `truetype`,
+		otf: `opentype`,
+		woff: `woff`,
+		woff2: `woff2`,
+	}[ ext ];
+	if ( format ) return format;
+	let msg = {
+		eot: `The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.`,
+		svg: `The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.`,
+		fon: `The .fon format is not supported: this is an ancient Windows bitmap font format.`,
+		ttc: `Based on the current CSS specification, font collections are not (yet?) supported.`,
+	}[ ext ];
+	if ( ! msg ) msg = `${ path } is not a known webfont format.`;
+	if ( errorOnStyle ) {
+		throw new Error( msg );
+	} else {
+		console.warn( `Could not load font: ${ msg }` );
+	}
+}
+async function setupFontFace( name, url, options = {} ) {
+	if ( ! globalThis.document ) return;
+	let format = getFontCSSFormat( url, options.errorOnStyle );
+	if ( ! format ) return;
+	let style = document.createElement( `style` );
+	style.className = `injected-by-Font-js`;
+	let rules = [];
+	if ( options.styleRules ) {
+		rules = Object.entries( options.styleRules ).map(
+			( [ key, value ] ) => `${ key }: ${ value };`
+		);
+	}
+	style.textContent = `\n@font-face {\n    font-family: "${ name }";\n    ${ rules.join(
+		`\n\t`
+	) }\n    src: url("${ url }") format("${ format }");\n}`;
+	globalThis.document.head.appendChild( style );
+	return style;
+}
+const TTF = [ 0, 1, 0, 0 ];
+const OTF = [ 79, 84, 84, 79 ];
+const WOFF = [ 119, 79, 70, 70 ];
+const WOFF2 = [ 119, 79, 70, 50 ];
+function match( ar1, ar2 ) {
+	if ( ar1.length !== ar2.length ) return;
+	for ( let i = 0; i < ar1.length; i++ ) {
+		if ( ar1[ i ] !== ar2[ i ] ) return;
+	}
+	return true;
+}
+function validFontFormat( dataview ) {
+	const LEAD_BYTES = [
+		dataview.getUint8( 0 ),
+		dataview.getUint8( 1 ),
+		dataview.getUint8( 2 ),
+		dataview.getUint8( 3 ),
+	];
+	if ( match( LEAD_BYTES, TTF ) || match( LEAD_BYTES, OTF ) ) return `SFNT`;
+	if ( match( LEAD_BYTES, WOFF ) ) return `WOFF`;
+	if ( match( LEAD_BYTES, WOFF2 ) ) return `WOFF2`;
+}
+function checkFetchResponseStatus( response ) {
+	if ( ! response.ok ) {
+		throw new Error(
+			`HTTP ${ response.status } - ${ response.statusText }`
+		);
+	}
+	return response;
+}
+class Font extends EventManager {
+	constructor( name, options = {} ) {
+		super();
+		this.name = name;
+		this.options = options;
+		this.metrics = false;
+	}
+	get src() {
+		return this.__src;
+	}
+	set src( src ) {
+		this.__src = src;
+		( async () => {
+			if ( globalThis.document && ! this.options.skipStyleSheet ) {
+				await setupFontFace( this.name, src, this.options );
+			}
+			this.loadFont( src );
+		} )();
+	}
+	async loadFont( url, filename ) {
+		fetch( url )
+			.then(
+				( response ) =>
+					checkFetchResponseStatus( response ) &&
+					response.arrayBuffer()
+			)
+			.then( ( buffer ) =>
+				this.fromDataBuffer( buffer, filename || url )
+			)
+			.catch( ( err ) => {
+				const evt = new lib_font_browser_Event(
+					`error`,
+					err,
+					`Failed to load font at ${ filename || url }`
+				);
+				this.dispatch( evt );
+				if ( this.onerror ) this.onerror( evt );
+			} );
+	}
+	async fromDataBuffer( buffer, filenameOrUrL ) {
+		this.fontData = new DataView( buffer );
+		let type = validFontFormat( this.fontData );
+		if ( ! type ) {
+			throw new Error(
+				`${ filenameOrUrL } is either an unsupported font format, or not a font at all.`
+			);
+		}
+		await this.parseBasicData( type );
+		const evt = new lib_font_browser_Event( 'load', { font: this } );
+		this.dispatch( evt );
+		if ( this.onload ) this.onload( evt );
+	}
+	async parseBasicData( type ) {
+		return loadTableClasses().then( ( createTable ) => {
+			if ( type === `SFNT` ) {
+				this.opentype = new SFNT( this, this.fontData, createTable );
+			}
+			if ( type === `WOFF` ) {
+				this.opentype = new WOFF$1( this, this.fontData, createTable );
+			}
+			if ( type === `WOFF2` ) {
+				this.opentype = new WOFF2$1( this, this.fontData, createTable );
+			}
+			return this.opentype;
+		} );
+	}
+	getGlyphId( char ) {
+		return this.opentype.tables.cmap.getGlyphId( char );
+	}
+	reverse( glyphid ) {
+		return this.opentype.tables.cmap.reverse( glyphid );
+	}
+	supports( char ) {
+		return this.getGlyphId( char ) !== 0;
+	}
+	supportsVariation( variation ) {
+		return (
+			this.opentype.tables.cmap.supportsVariation( variation ) !== false
+		);
+	}
+	measureText( text, size = 16 ) {
+		if ( this.__unloaded )
+			throw new Error(
+				'Cannot measure text: font was unloaded. Please reload before calling measureText()'
+			);
+		let d = document.createElement( 'div' );
+		d.textContent = text;
+		d.style.fontFamily = this.name;
+		d.style.fontSize = `${ size }px`;
+		d.style.color = `transparent`;
+		d.style.background = `transparent`;
+		d.style.top = `0`;
+		d.style.left = `0`;
+		d.style.position = `absolute`;
+		document.body.appendChild( d );
+		let bbox = d.getBoundingClientRect();
+		document.body.removeChild( d );
+		const OS2 = this.opentype.tables[ 'OS/2' ];
+		bbox.fontSize = size;
+		bbox.ascender = OS2.sTypoAscender;
+		bbox.descender = OS2.sTypoDescender;
+		return bbox;
+	}
+	unload() {
+		if ( this.styleElement.parentNode ) {
+			this.styleElement.parentNode.removeElement( this.styleElement );
+			const evt = new lib_font_browser_Event( 'unload', { font: this } );
+			this.dispatch( evt );
+			if ( this.onunload ) this.onunload( evt );
+		}
+		this._unloaded = true;
+	}
+	load() {
+		if ( this.__unloaded ) {
+			delete this.__unloaded;
+			document.head.appendChild( this.styleElement );
+			const evt = new lib_font_browser_Event( 'load', { font: this } );
+			this.dispatch( evt );
+			if ( this.onload ) this.onload( evt );
+		}
+	}
+}
+globalThis.Font = Font;
+class Subtable extends ParsedData {
+	constructor( p, plaformID, encodingID ) {
+		super( p );
+		this.plaformID = plaformID;
+		this.encodingID = encodingID;
+	}
+}
+class Format0 extends Subtable {
+	constructor( p, platformID, encodingID ) {
+		super( p, platformID, encodingID );
+		this.format = 0;
+		this.length = p.uint16;
+		this.language = p.uint16;
+		this.glyphIdArray = [ ...new Array( 256 ) ].map( ( _ ) => p.uint8 );
+	}
+	supports( charCode ) {
+		if ( charCode.charCodeAt ) {
+			charCode = -1;
+			console.warn(
+				`supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.`
+			);
+		}
+		return 0 <= charCode && charCode <= 255;
+	}
+	reverse( glyphID ) {
+		console.warn( `reverse not implemented for cmap subtable format 0` );
+		return {};
+	}
+	getSupportedCharCodes() {
+		return [ { start: 1, end: 256 } ];
+	}
+}
+class Format2 extends Subtable {
+	constructor( p, platformID, encodingID ) {
+		super( p, platformID, encodingID );
+		this.format = 2;
+		this.length = p.uint16;
+		this.language = p.uint16;
+		this.subHeaderKeys = [ ...new Array( 256 ) ].map( ( _ ) => p.uint16 );
+		const subHeaderCount = Math.max( ...this.subHeaderKeys );
+		const subHeaderOffset = p.currentPosition;
+		lazy$1( this, `subHeaders`, () => {
+			p.currentPosition = subHeaderOffset;
+			return [ ...new Array( subHeaderCount ) ].map(
+				( _ ) => new SubHeader( p )
+			);
+		} );
+		const glyphIndexOffset = subHeaderOffset + subHeaderCount * 8;
+		lazy$1( this, `glyphIndexArray`, () => {
+			p.currentPosition = glyphIndexOffset;
+			return [ ...new Array( subHeaderCount ) ].map( ( _ ) => p.uint16 );
+		} );
+	}
+	supports( charCode ) {
+		if ( charCode.charCodeAt ) {
+			charCode = -1;
+			console.warn(
+				`supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented.`
+			);
+		}
+		const low = charCode && 255;
+		const high = charCode && 65280;
+		const subHeaderKey = this.subHeaders[ high ];
+		const subheader = this.subHeaders[ subHeaderKey ];
+		const first = subheader.firstCode;
+		const last = first + subheader.entryCount;
+		return first <= low && low <= last;
+	}
+	reverse( glyphID ) {
+		console.warn( `reverse not implemented for cmap subtable format 2` );
+		return {};
+	}
+	getSupportedCharCodes( preservePropNames = false ) {
+		if ( preservePropNames ) {
+			return this.subHeaders.map( ( h ) => ( {
+				firstCode: h.firstCode,
+				lastCode: h.lastCode,
+			} ) );
+		}
+		return this.subHeaders.map( ( h ) => ( {
+			start: h.firstCode,
+			end: h.lastCode,
+		} ) );
+	}
+}
+class SubHeader {
+	constructor( p ) {
+		this.firstCode = p.uint16;
+		this.entryCount = p.uint16;
+		this.lastCode = this.first + this.entryCount;
+		this.idDelta = p.int16;
+		this.idRangeOffset = p.uint16;
+	}
+}
+class Format4 extends Subtable {
+	constructor( p, platformID, encodingID ) {
+		super( p, platformID, encodingID );
+		this.format = 4;
+		this.length = p.uint16;
+		this.language = p.uint16;
+		this.segCountX2 = p.uint16;
+		this.segCount = this.segCountX2 / 2;
+		this.searchRange = p.uint16;
+		this.entrySelector = p.uint16;
+		this.rangeShift = p.uint16;
+		const endCodePosition = p.currentPosition;
+		lazy$1( this, `endCode`, () =>
+			p.readBytes( this.segCount, endCodePosition, 16 )
+		);
+		const startCodePosition = endCodePosition + 2 + this.segCountX2;
+		lazy$1( this, `startCode`, () =>
+			p.readBytes( this.segCount, startCodePosition, 16 )
+		);
+		const idDeltaPosition = startCodePosition + this.segCountX2;
+		lazy$1( this, `idDelta`, () =>
+			p.readBytes( this.segCount, idDeltaPosition, 16, true )
+		);
+		const idRangePosition = idDeltaPosition + this.segCountX2;
+		lazy$1( this, `idRangeOffset`, () =>
+			p.readBytes( this.segCount, idRangePosition, 16 )
+		);
+		const glyphIdArrayPosition = idRangePosition + this.segCountX2;
+		const glyphIdArrayLength =
+			this.length - ( glyphIdArrayPosition - this.tableStart );
+		lazy$1( this, `glyphIdArray`, () =>
+			p.readBytes( glyphIdArrayLength, glyphIdArrayPosition, 16 )
+		);
+		lazy$1( this, `segments`, () =>
+			this.buildSegments( idRangePosition, glyphIdArrayPosition, p )
+		);
+	}
+	buildSegments( idRangePosition, glyphIdArrayPosition, p ) {
+		const build = ( _, i ) => {
+			let startCode = this.startCode[ i ],
+				endCode = this.endCode[ i ],
+				idDelta = this.idDelta[ i ],
+				idRangeOffset = this.idRangeOffset[ i ],
+				idRangeOffsetPointer = idRangePosition + 2 * i,
+				glyphIDs = [];
+			if ( idRangeOffset === 0 ) {
+				for (
+					let i = startCode + idDelta, e = endCode + idDelta;
+					i <= e;
+					i++
+				) {
+					glyphIDs.push( i );
+				}
+			} else {
+				for ( let i = 0, e = endCode - startCode; i <= e; i++ ) {
+					p.currentPosition =
+						idRangeOffsetPointer + idRangeOffset + i * 2;
+					glyphIDs.push( p.uint16 );
+				}
+			}
+			return {
+				startCode: startCode,
+				endCode: endCode,
+				idDelta: idDelta,
+				idRangeOffset: idRangeOffset,
+				glyphIDs: glyphIDs,
+			};
+		};
+		return [ ...new Array( this.segCount ) ].map( build );
+	}
+	reverse( glyphID ) {
+		let s = this.segments.find( ( v ) => v.glyphIDs.includes( glyphID ) );
+		if ( ! s ) return {};
+		const code = s.startCode + s.glyphIDs.indexOf( glyphID );
+		return { code: code, unicode: String.fromCodePoint( code ) };
+	}
+	getGlyphId( charCode ) {
+		if ( charCode.charCodeAt ) charCode = charCode.charCodeAt( 0 );
+		if ( 55296 <= charCode && charCode <= 57343 ) return 0;
+		if ( ( charCode & 65534 ) === 65534 || ( charCode & 65535 ) === 65535 )
+			return 0;
+		let segment = this.segments.find(
+			( s ) => s.startCode <= charCode && charCode <= s.endCode
+		);
+		if ( ! segment ) return 0;
+		return segment.glyphIDs[ charCode - segment.startCode ];
+	}
+	supports( charCode ) {
+		return this.getGlyphId( charCode ) !== 0;
+	}
+	getSupportedCharCodes( preservePropNames = false ) {
+		if ( preservePropNames ) return this.segments;
+		return this.segments.map( ( v ) => ( {
+			start: v.startCode,
+			end: v.endCode,
+		} ) );
+	}
+}
+class Format6 extends Subtable {
+	constructor( p, platformID, encodingID ) {
+		super( p, platformID, encodingID );
+		this.format = 6;
+		this.length = p.uint16;
+		this.language = p.uint16;
+		this.firstCode = p.uint16;
+		this.entryCount = p.uint16;
+		this.lastCode = this.firstCode + this.entryCount - 1;
+		const getter = () =>
+			[ ...new Array( this.entryCount ) ].map( ( _ ) => p.uint16 );
+		lazy$1( this, `glyphIdArray`, getter );
+	}
+	supports( charCode ) {
+		if ( charCode.charCodeAt ) {
+			charCode = -1;
+			console.warn(
+				`supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.`
+			);
+		}
+		if ( charCode < this.firstCode ) return {};
+		if ( charCode > this.firstCode + this.entryCount ) return {};
+		const code = charCode - this.firstCode;
+		return { code: code, unicode: String.fromCodePoint( code ) };
+	}
+	reverse( glyphID ) {
+		let pos = this.glyphIdArray.indexOf( glyphID );
+		if ( pos > -1 ) return this.firstCode + pos;
+	}
+	getSupportedCharCodes( preservePropNames = false ) {
+		if ( preservePropNames ) {
+			return [ { firstCode: this.firstCode, lastCode: this.lastCode } ];
+		}
+		return [ { start: this.firstCode, end: this.lastCode } ];
+	}
+}
+class Format8 extends Subtable {
+	constructor( p, platformID, encodingID ) {
+		super( p, platformID, encodingID );
+		this.format = 8;
+		p.uint16;
+		this.length = p.uint32;
+		this.language = p.uint32;
+		this.is32 = [ ...new Array( 8192 ) ].map( ( _ ) => p.uint8 );
+		this.numGroups = p.uint32;
+		const getter = () =>
+			[ ...new Array( this.numGroups ) ].map(
+				( _ ) => new SequentialMapGroup$1( p )
+			);
+		lazy$1( this, `groups`, getter );
+	}
+	supports( charCode ) {
+		if ( charCode.charCodeAt ) {
+			charCode = -1;
+			console.warn(
+				`supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.`
+			);
+		}
+		return (
+			this.groups.findIndex(
+				( s ) =>
+					s.startcharCode <= charCode && charCode <= s.endcharCode
+			) !== -1
+		);
+	}
+	reverse( glyphID ) {
+		console.warn( `reverse not implemented for cmap subtable format 8` );
+		return {};
+	}
+	getSupportedCharCodes( preservePropNames = false ) {
+		if ( preservePropNames ) return this.groups;
+		return this.groups.map( ( v ) => ( {
+			start: v.startcharCode,
+			end: v.endcharCode,
+		} ) );
+	}
+}
+class SequentialMapGroup$1 {
+	constructor( p ) {
+		this.startcharCode = p.uint32;
+		this.endcharCode = p.uint32;
+		this.startGlyphID = p.uint32;
+	}
+}
+class Format10 extends Subtable {
+	constructor( p, platformID, encodingID ) {
+		super( p, platformID, encodingID );
+		this.format = 10;
+		p.uint16;
+		this.length = p.uint32;
+		this.language = p.uint32;
+		this.startCharCode = p.uint32;
+		this.numChars = p.uint32;
+		this.endCharCode = this.startCharCode + this.numChars;
+		const getter = () =>
+			[ ...new Array( this.numChars ) ].map( ( _ ) => p.uint16 );
+		lazy$1( this, `glyphs`, getter );
+	}
+	supports( charCode ) {
+		if ( charCode.charCodeAt ) {
+			charCode = -1;
+			console.warn(
+				`supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.`
+			);
+		}
+		if ( charCode < this.startCharCode ) return false;
+		if ( charCode > this.startCharCode + this.numChars ) return false;
+		return charCode - this.startCharCode;
+	}
+	reverse( glyphID ) {
+		console.warn( `reverse not implemented for cmap subtable format 10` );
+		return {};
+	}
+	getSupportedCharCodes( preservePropNames = false ) {
+		if ( preservePropNames ) {
+			return [
+				{
+					startCharCode: this.startCharCode,
+					endCharCode: this.endCharCode,
+				},
+			];
+		}
+		return [ { start: this.startCharCode, end: this.endCharCode } ];
+	}
+}
+class Format12 extends Subtable {
+	constructor( p, platformID, encodingID ) {
+		super( p, platformID, encodingID );
+		this.format = 12;
+		p.uint16;
+		this.length = p.uint32;
+		this.language = p.uint32;
+		this.numGroups = p.uint32;
+		const getter = () =>
+			[ ...new Array( this.numGroups ) ].map(
+				( _ ) => new SequentialMapGroup( p )
+			);
+		lazy$1( this, `groups`, getter );
+	}
+	supports( charCode ) {
+		if ( charCode.charCodeAt ) charCode = charCode.charCodeAt( 0 );
+		if ( 55296 <= charCode && charCode <= 57343 ) return 0;
+		if ( ( charCode & 65534 ) === 65534 || ( charCode & 65535 ) === 65535 )
+			return 0;
+		return (
+			this.groups.findIndex(
+				( s ) =>
+					s.startCharCode <= charCode && charCode <= s.endCharCode
+			) !== -1
+		);
+	}
+	reverse( glyphID ) {
+		for ( let group of this.groups ) {
+			let start = group.startGlyphID;
+			if ( start > glyphID ) continue;
+			if ( start === glyphID ) return group.startCharCode;
+			let end = start + ( group.endCharCode - group.startCharCode );
+			if ( end < glyphID ) continue;
+			const code = group.startCharCode + ( glyphID - start );
+			return { code: code, unicode: String.fromCodePoint( code ) };
+		}
+		return {};
+	}
+	getSupportedCharCodes( preservePropNames = false ) {
+		if ( preservePropNames ) return this.groups;
+		return this.groups.map( ( v ) => ( {
+			start: v.startCharCode,
+			end: v.endCharCode,
+		} ) );
+	}
+}
+class SequentialMapGroup {
+	constructor( p ) {
+		this.startCharCode = p.uint32;
+		this.endCharCode = p.uint32;
+		this.startGlyphID = p.uint32;
+	}
+}
+class Format13 extends Subtable {
+	constructor( p, platformID, encodingID ) {
+		super( p, platformID, encodingID );
+		this.format = 13;
+		p.uint16;
+		this.length = p.uint32;
+		this.language = p.uint32;
+		this.numGroups = p.uint32;
+		const getter = [ ...new Array( this.numGroups ) ].map(
+			( _ ) => new ConstantMapGroup( p )
+		);
+		lazy$1( this, `groups`, getter );
+	}
+	supports( charCode ) {
+		if ( charCode.charCodeAt ) charCode = charCode.charCodeAt( 0 );
+		return (
+			this.groups.findIndex(
+				( s ) =>
+					s.startCharCode <= charCode && charCode <= s.endCharCode
+			) !== -1
+		);
+	}
+	reverse( glyphID ) {
+		console.warn( `reverse not implemented for cmap subtable format 13` );
+		return {};
+	}
+	getSupportedCharCodes( preservePropNames = false ) {
+		if ( preservePropNames ) return this.groups;
+		return this.groups.map( ( v ) => ( {
+			start: v.startCharCode,
+			end: v.endCharCode,
+		} ) );
+	}
+}
+class ConstantMapGroup {
+	constructor( p ) {
+		this.startCharCode = p.uint32;
+		this.endCharCode = p.uint32;
+		this.glyphID = p.uint32;
+	}
+}
+class Format14 extends Subtable {
+	constructor( p, platformID, encodingID ) {
+		super( p, platformID, encodingID );
+		this.subTableStart = p.currentPosition;
+		this.format = 14;
+		this.length = p.uint32;
+		this.numVarSelectorRecords = p.uint32;
+		lazy$1( this, `varSelectors`, () =>
+			[ ...new Array( this.numVarSelectorRecords ) ].map(
+				( _ ) => new VariationSelector( p )
+			)
+		);
+	}
+	supports() {
+		console.warn( `supports not implemented for cmap subtable format 14` );
+		return 0;
+	}
+	getSupportedCharCodes() {
+		console.warn(
+			`getSupportedCharCodes not implemented for cmap subtable format 14`
+		);
+		return [];
+	}
+	reverse( glyphID ) {
+		console.warn( `reverse not implemented for cmap subtable format 14` );
+		return {};
+	}
+	supportsVariation( variation ) {
+		let v = this.varSelector.find(
+			( uvs ) => uvs.varSelector === variation
+		);
+		return v ? v : false;
+	}
+	getSupportedVariations() {
+		return this.varSelectors.map( ( v ) => v.varSelector );
+	}
+}
+class VariationSelector {
+	constructor( p ) {
+		this.varSelector = p.uint24;
+		this.defaultUVSOffset = p.Offset32;
+		this.nonDefaultUVSOffset = p.Offset32;
+	}
+}
+function createSubTable( parser, platformID, encodingID ) {
+	const format = parser.uint16;
+	if ( format === 0 ) return new Format0( parser, platformID, encodingID );
+	if ( format === 2 ) return new Format2( parser, platformID, encodingID );
+	if ( format === 4 ) return new Format4( parser, platformID, encodingID );
+	if ( format === 6 ) return new Format6( parser, platformID, encodingID );
+	if ( format === 8 ) return new Format8( parser, platformID, encodingID );
+	if ( format === 10 ) return new Format10( parser, platformID, encodingID );
+	if ( format === 12 ) return new Format12( parser, platformID, encodingID );
+	if ( format === 13 ) return new Format13( parser, platformID, encodingID );
+	if ( format === 14 ) return new Format14( parser, platformID, encodingID );
+	return {};
+}
+class cmap extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.numTables = p.uint16;
+		this.encodingRecords = [ ...new Array( this.numTables ) ].map(
+			( _ ) => new EncodingRecord( p, this.tableStart )
+		);
+	}
+	getSubTable( tableID ) {
+		return this.encodingRecords[ tableID ].table;
+	}
+	getSupportedEncodings() {
+		return this.encodingRecords.map( ( r ) => ( {
+			platformID: r.platformID,
+			encodingId: r.encodingID,
+		} ) );
+	}
+	getSupportedCharCodes( platformID, encodingID ) {
+		const recordID = this.encodingRecords.findIndex(
+			( r ) => r.platformID === platformID && r.encodingID === encodingID
+		);
+		if ( recordID === -1 ) return false;
+		const subtable = this.getSubTable( recordID );
+		return subtable.getSupportedCharCodes();
+	}
+	reverse( glyphid ) {
+		for ( let i = 0; i < this.numTables; i++ ) {
+			let code = this.getSubTable( i ).reverse( glyphid );
+			if ( code ) return code;
+		}
+	}
+	getGlyphId( char ) {
+		let last = 0;
+		this.encodingRecords.some( ( _, tableID ) => {
+			let t = this.getSubTable( tableID );
+			if ( ! t.getGlyphId ) return false;
+			last = t.getGlyphId( char );
+			return last !== 0;
+		} );
+		return last;
+	}
+	supports( char ) {
+		return this.encodingRecords.some( ( _, tableID ) => {
+			const t = this.getSubTable( tableID );
+			return t.supports && t.supports( char ) !== false;
+		} );
+	}
+	supportsVariation( variation ) {
+		return this.encodingRecords.some( ( _, tableID ) => {
+			const t = this.getSubTable( tableID );
+			return (
+				t.supportsVariation &&
+				t.supportsVariation( variation ) !== false
+			);
+		} );
+	}
+}
+class EncodingRecord {
+	constructor( p, tableStart ) {
+		const platformID = ( this.platformID = p.uint16 );
+		const encodingID = ( this.encodingID = p.uint16 );
+		const offset = ( this.offset = p.Offset32 );
+		lazy$1( this, `table`, () => {
+			p.currentPosition = tableStart + offset;
+			return createSubTable( p, platformID, encodingID );
+		} );
+	}
+}
+var cmap$1 = Object.freeze( { __proto__: null, cmap: cmap } );
+class head extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.load( {
+			majorVersion: p.uint16,
+			minorVersion: p.uint16,
+			fontRevision: p.fixed,
+			checkSumAdjustment: p.uint32,
+			magicNumber: p.uint32,
+			flags: p.flags( 16 ),
+			unitsPerEm: p.uint16,
+			created: p.longdatetime,
+			modified: p.longdatetime,
+			xMin: p.int16,
+			yMin: p.int16,
+			xMax: p.int16,
+			yMax: p.int16,
+			macStyle: p.flags( 16 ),
+			lowestRecPPEM: p.uint16,
+			fontDirectionHint: p.uint16,
+			indexToLocFormat: p.uint16,
+			glyphDataFormat: p.uint16,
+		} );
+	}
+}
+var head$1 = Object.freeze( { __proto__: null, head: head } );
+class hhea extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+		this.ascender = p.fword;
+		this.descender = p.fword;
+		this.lineGap = p.fword;
+		this.advanceWidthMax = p.ufword;
+		this.minLeftSideBearing = p.fword;
+		this.minRightSideBearing = p.fword;
+		this.xMaxExtent = p.fword;
+		this.caretSlopeRise = p.int16;
+		this.caretSlopeRun = p.int16;
+		this.caretOffset = p.int16;
+		p.int16;
+		p.int16;
+		p.int16;
+		p.int16;
+		this.metricDataFormat = p.int16;
+		this.numberOfHMetrics = p.uint16;
+		p.verifyLength();
+	}
+}
+var hhea$1 = Object.freeze( { __proto__: null, hhea: hhea } );
+class hmtx extends SimpleTable {
+	constructor( dict, dataview, tables ) {
+		const { p: p } = super( dict, dataview );
+		const numberOfHMetrics = tables.hhea.numberOfHMetrics;
+		const numGlyphs = tables.maxp.numGlyphs;
+		const metricsStart = p.currentPosition;
+		lazy$1( this, `hMetrics`, () => {
+			p.currentPosition = metricsStart;
+			return [ ...new Array( numberOfHMetrics ) ].map(
+				( _ ) => new LongHorMetric( p.uint16, p.int16 )
+			);
+		} );
+		if ( numberOfHMetrics < numGlyphs ) {
+			const lsbStart = metricsStart + numberOfHMetrics * 4;
+			lazy$1( this, `leftSideBearings`, () => {
+				p.currentPosition = lsbStart;
+				return [ ...new Array( numGlyphs - numberOfHMetrics ) ].map(
+					( _ ) => p.int16
+				);
+			} );
+		}
+	}
+}
+class LongHorMetric {
+	constructor( w, b ) {
+		this.advanceWidth = w;
+		this.lsb = b;
+	}
+}
+var hmtx$1 = Object.freeze( { __proto__: null, hmtx: hmtx } );
+class maxp extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.legacyFixed;
+		this.numGlyphs = p.uint16;
+		if ( this.version === 1 ) {
+			this.maxPoints = p.uint16;
+			this.maxContours = p.uint16;
+			this.maxCompositePoints = p.uint16;
+			this.maxCompositeContours = p.uint16;
+			this.maxZones = p.uint16;
+			this.maxTwilightPoints = p.uint16;
+			this.maxStorage = p.uint16;
+			this.maxFunctionDefs = p.uint16;
+			this.maxInstructionDefs = p.uint16;
+			this.maxStackElements = p.uint16;
+			this.maxSizeOfInstructions = p.uint16;
+			this.maxComponentElements = p.uint16;
+			this.maxComponentDepth = p.uint16;
+		}
+		p.verifyLength();
+	}
+}
+var maxp$1 = Object.freeze( { __proto__: null, maxp: maxp } );
+class lib_font_browser_name extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.format = p.uint16;
+		this.count = p.uint16;
+		this.stringOffset = p.Offset16;
+		this.nameRecords = [ ...new Array( this.count ) ].map(
+			( _ ) => new NameRecord( p, this )
+		);
+		if ( this.format === 1 ) {
+			this.langTagCount = p.uint16;
+			this.langTagRecords = [ ...new Array( this.langTagCount ) ].map(
+				( _ ) => new LangTagRecord( p.uint16, p.Offset16 )
+			);
+		}
+		this.stringStart = this.tableStart + this.stringOffset;
+	}
+	get( nameID ) {
+		let record = this.nameRecords.find(
+			( record ) => record.nameID === nameID
+		);
+		if ( record ) return record.string;
+	}
+}
+class LangTagRecord {
+	constructor( length, offset ) {
+		this.length = length;
+		this.offset = offset;
+	}
+}
+class NameRecord {
+	constructor( p, nameTable ) {
+		this.platformID = p.uint16;
+		this.encodingID = p.uint16;
+		this.languageID = p.uint16;
+		this.nameID = p.uint16;
+		this.length = p.uint16;
+		this.offset = p.Offset16;
+		lazy$1( this, `string`, () => {
+			p.currentPosition = nameTable.stringStart + this.offset;
+			return decodeString( p, this );
+		} );
+	}
+}
+function decodeString( p, record ) {
+	const { platformID: platformID, length: length } = record;
+	if ( length === 0 ) return ``;
+	if ( platformID === 0 || platformID === 3 ) {
+		const str = [];
+		for ( let i = 0, e = length / 2; i < e; i++ )
+			str[ i ] = String.fromCharCode( p.uint16 );
+		return str.join( `` );
+	}
+	const bytes = p.readBytes( length );
+	const str = [];
+	bytes.forEach( function ( b, i ) {
+		str[ i ] = String.fromCharCode( b );
+	} );
+	return str.join( `` );
+}
+var name$1 = Object.freeze( { __proto__: null, name: lib_font_browser_name } );
+class OS2 extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.xAvgCharWidth = p.int16;
+		this.usWeightClass = p.uint16;
+		this.usWidthClass = p.uint16;
+		this.fsType = p.uint16;
+		this.ySubscriptXSize = p.int16;
+		this.ySubscriptYSize = p.int16;
+		this.ySubscriptXOffset = p.int16;
+		this.ySubscriptYOffset = p.int16;
+		this.ySuperscriptXSize = p.int16;
+		this.ySuperscriptYSize = p.int16;
+		this.ySuperscriptXOffset = p.int16;
+		this.ySuperscriptYOffset = p.int16;
+		this.yStrikeoutSize = p.int16;
+		this.yStrikeoutPosition = p.int16;
+		this.sFamilyClass = p.int16;
+		this.panose = [ ...new Array( 10 ) ].map( ( _ ) => p.uint8 );
+		this.ulUnicodeRange1 = p.flags( 32 );
+		this.ulUnicodeRange2 = p.flags( 32 );
+		this.ulUnicodeRange3 = p.flags( 32 );
+		this.ulUnicodeRange4 = p.flags( 32 );
+		this.achVendID = p.tag;
+		this.fsSelection = p.uint16;
+		this.usFirstCharIndex = p.uint16;
+		this.usLastCharIndex = p.uint16;
+		this.sTypoAscender = p.int16;
+		this.sTypoDescender = p.int16;
+		this.sTypoLineGap = p.int16;
+		this.usWinAscent = p.uint16;
+		this.usWinDescent = p.uint16;
+		if ( this.version === 0 ) return p.verifyLength();
+		this.ulCodePageRange1 = p.flags( 32 );
+		this.ulCodePageRange2 = p.flags( 32 );
+		if ( this.version === 1 ) return p.verifyLength();
+		this.sxHeight = p.int16;
+		this.sCapHeight = p.int16;
+		this.usDefaultChar = p.uint16;
+		this.usBreakChar = p.uint16;
+		this.usMaxContext = p.uint16;
+		if ( this.version <= 4 ) return p.verifyLength();
+		this.usLowerOpticalPointSize = p.uint16;
+		this.usUpperOpticalPointSize = p.uint16;
+		if ( this.version === 5 ) return p.verifyLength();
+	}
+}
+var OS2$1 = Object.freeze( { __proto__: null, OS2: OS2 } );
+class post extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.legacyFixed;
+		this.italicAngle = p.fixed;
+		this.underlinePosition = p.fword;
+		this.underlineThickness = p.fword;
+		this.isFixedPitch = p.uint32;
+		this.minMemType42 = p.uint32;
+		this.maxMemType42 = p.uint32;
+		this.minMemType1 = p.uint32;
+		this.maxMemType1 = p.uint32;
+		if ( this.version === 1 || this.version === 3 ) return p.verifyLength();
+		this.numGlyphs = p.uint16;
+		if ( this.version === 2 ) {
+			this.glyphNameIndex = [ ...new Array( this.numGlyphs ) ].map(
+				( _ ) => p.uint16
+			);
+			this.namesOffset = p.currentPosition;
+			this.glyphNameOffsets = [ 1 ];
+			for ( let i = 0; i < this.numGlyphs; i++ ) {
+				let index = this.glyphNameIndex[ i ];
+				if ( index < macStrings.length ) {
+					this.glyphNameOffsets.push( this.glyphNameOffsets[ i ] );
+					continue;
+				}
+				let bytelength = p.int8;
+				p.skip( bytelength );
+				this.glyphNameOffsets.push(
+					this.glyphNameOffsets[ i ] + bytelength + 1
+				);
+			}
+		}
+		if ( this.version === 2.5 ) {
+			this.offset = [ ...new Array( this.numGlyphs ) ].map(
+				( _ ) => p.int8
+			);
+		}
+	}
+	getGlyphName( glyphid ) {
+		if ( this.version !== 2 ) {
+			console.warn(
+				`post table version ${ this.version } does not support glyph name lookups`
+			);
+			return ``;
+		}
+		let index = this.glyphNameIndex[ glyphid ];
+		if ( index < 258 ) return macStrings[ index ];
+		let offset = this.glyphNameOffsets[ glyphid ];
+		let next = this.glyphNameOffsets[ glyphid + 1 ];
+		let len = next - offset - 1;
+		if ( len === 0 ) return `.notdef.`;
+		this.parser.currentPosition = this.namesOffset + offset;
+		const data = this.parser.readBytes(
+			len,
+			this.namesOffset + offset,
+			8,
+			true
+		);
+		return data.map( ( b ) => String.fromCharCode( b ) ).join( `` );
+	}
+}
+const macStrings = [
+	`.notdef`,
+	`.null`,
+	`nonmarkingreturn`,
+	`space`,
+	`exclam`,
+	`quotedbl`,
+	`numbersign`,
+	`dollar`,
+	`percent`,
+	`ampersand`,
+	`quotesingle`,
+	`parenleft`,
+	`parenright`,
+	`asterisk`,
+	`plus`,
+	`comma`,
+	`hyphen`,
+	`period`,
+	`slash`,
+	`zero`,
+	`one`,
+	`two`,
+	`three`,
+	`four`,
+	`five`,
+	`six`,
+	`seven`,
+	`eight`,
+	`nine`,
+	`colon`,
+	`semicolon`,
+	`less`,
+	`equal`,
+	`greater`,
+	`question`,
+	`at`,
+	`A`,
+	`B`,
+	`C`,
+	`D`,
+	`E`,
+	`F`,
+	`G`,
+	`H`,
+	`I`,
+	`J`,
+	`K`,
+	`L`,
+	`M`,
+	`N`,
+	`O`,
+	`P`,
+	`Q`,
+	`R`,
+	`S`,
+	`T`,
+	`U`,
+	`V`,
+	`W`,
+	`X`,
+	`Y`,
+	`Z`,
+	`bracketleft`,
+	`backslash`,
+	`bracketright`,
+	`asciicircum`,
+	`underscore`,
+	`grave`,
+	`a`,
+	`b`,
+	`c`,
+	`d`,
+	`e`,
+	`f`,
+	`g`,
+	`h`,
+	`i`,
+	`j`,
+	`k`,
+	`l`,
+	`m`,
+	`n`,
+	`o`,
+	`p`,
+	`q`,
+	`r`,
+	`s`,
+	`t`,
+	`u`,
+	`v`,
+	`w`,
+	`x`,
+	`y`,
+	`z`,
+	`braceleft`,
+	`bar`,
+	`braceright`,
+	`asciitilde`,
+	`Adieresis`,
+	`Aring`,
+	`Ccedilla`,
+	`Eacute`,
+	`Ntilde`,
+	`Odieresis`,
+	`Udieresis`,
+	`aacute`,
+	`agrave`,
+	`acircumflex`,
+	`adieresis`,
+	`atilde`,
+	`aring`,
+	`ccedilla`,
+	`eacute`,
+	`egrave`,
+	`ecircumflex`,
+	`edieresis`,
+	`iacute`,
+	`igrave`,
+	`icircumflex`,
+	`idieresis`,
+	`ntilde`,
+	`oacute`,
+	`ograve`,
+	`ocircumflex`,
+	`odieresis`,
+	`otilde`,
+	`uacute`,
+	`ugrave`,
+	`ucircumflex`,
+	`udieresis`,
+	`dagger`,
+	`degree`,
+	`cent`,
+	`sterling`,
+	`section`,
+	`bullet`,
+	`paragraph`,
+	`germandbls`,
+	`registered`,
+	`copyright`,
+	`trademark`,
+	`acute`,
+	`dieresis`,
+	`notequal`,
+	`AE`,
+	`Oslash`,
+	`infinity`,
+	`plusminus`,
+	`lessequal`,
+	`greaterequal`,
+	`yen`,
+	`mu`,
+	`partialdiff`,
+	`summation`,
+	`product`,
+	`pi`,
+	`integral`,
+	`ordfeminine`,
+	`ordmasculine`,
+	`Omega`,
+	`ae`,
+	`oslash`,
+	`questiondown`,
+	`exclamdown`,
+	`logicalnot`,
+	`radical`,
+	`florin`,
+	`approxequal`,
+	`Delta`,
+	`guillemotleft`,
+	`guillemotright`,
+	`ellipsis`,
+	`nonbreakingspace`,
+	`Agrave`,
+	`Atilde`,
+	`Otilde`,
+	`OE`,
+	`oe`,
+	`endash`,
+	`emdash`,
+	`quotedblleft`,
+	`quotedblright`,
+	`quoteleft`,
+	`quoteright`,
+	`divide`,
+	`lozenge`,
+	`ydieresis`,
+	`Ydieresis`,
+	`fraction`,
+	`currency`,
+	`guilsinglleft`,
+	`guilsinglright`,
+	`fi`,
+	`fl`,
+	`daggerdbl`,
+	`periodcentered`,
+	`quotesinglbase`,
+	`quotedblbase`,
+	`perthousand`,
+	`Acircumflex`,
+	`Ecircumflex`,
+	`Aacute`,
+	`Edieresis`,
+	`Egrave`,
+	`Iacute`,
+	`Icircumflex`,
+	`Idieresis`,
+	`Igrave`,
+	`Oacute`,
+	`Ocircumflex`,
+	`apple`,
+	`Ograve`,
+	`Uacute`,
+	`Ucircumflex`,
+	`Ugrave`,
+	`dotlessi`,
+	`circumflex`,
+	`tilde`,
+	`macron`,
+	`breve`,
+	`dotaccent`,
+	`ring`,
+	`cedilla`,
+	`hungarumlaut`,
+	`ogonek`,
+	`caron`,
+	`Lslash`,
+	`lslash`,
+	`Scaron`,
+	`scaron`,
+	`Zcaron`,
+	`zcaron`,
+	`brokenbar`,
+	`Eth`,
+	`eth`,
+	`Yacute`,
+	`yacute`,
+	`Thorn`,
+	`thorn`,
+	`minus`,
+	`multiply`,
+	`onesuperior`,
+	`twosuperior`,
+	`threesuperior`,
+	`onehalf`,
+	`onequarter`,
+	`threequarters`,
+	`franc`,
+	`Gbreve`,
+	`gbreve`,
+	`Idotaccent`,
+	`Scedilla`,
+	`scedilla`,
+	`Cacute`,
+	`cacute`,
+	`Ccaron`,
+	`ccaron`,
+	`dcroat`,
+];
+var post$1 = Object.freeze( { __proto__: null, post: post } );
+class BASE extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+		this.horizAxisOffset = p.Offset16;
+		this.vertAxisOffset = p.Offset16;
+		lazy$1(
+			this,
+			`horizAxis`,
+			() =>
+				new AxisTable(
+					{ offset: dict.offset + this.horizAxisOffset },
+					dataview
+				)
+		);
+		lazy$1(
+			this,
+			`vertAxis`,
+			() =>
+				new AxisTable(
+					{ offset: dict.offset + this.vertAxisOffset },
+					dataview
+				)
+		);
+		if ( this.majorVersion === 1 && this.minorVersion === 1 ) {
+			this.itemVarStoreOffset = p.Offset32;
+			lazy$1(
+				this,
+				`itemVarStore`,
+				() =>
+					new AxisTable(
+						{ offset: dict.offset + this.itemVarStoreOffset },
+						dataview
+					)
+			);
+		}
+	}
+}
+class AxisTable extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview, `AxisTable` );
+		this.baseTagListOffset = p.Offset16;
+		this.baseScriptListOffset = p.Offset16;
+		lazy$1(
+			this,
+			`baseTagList`,
+			() =>
+				new BaseTagListTable(
+					{ offset: dict.offset + this.baseTagListOffset },
+					dataview
+				)
+		);
+		lazy$1(
+			this,
+			`baseScriptList`,
+			() =>
+				new BaseScriptListTable(
+					{ offset: dict.offset + this.baseScriptListOffset },
+					dataview
+				)
+		);
+	}
+}
+class BaseTagListTable extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview, `BaseTagListTable` );
+		this.baseTagCount = p.uint16;
+		this.baselineTags = [ ...new Array( this.baseTagCount ) ].map(
+			( _ ) => p.tag
+		);
+	}
+}
+class BaseScriptListTable extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview, `BaseScriptListTable` );
+		this.baseScriptCount = p.uint16;
+		const recordStart = p.currentPosition;
+		lazy$1( this, `baseScriptRecords`, () => {
+			p.currentPosition = recordStart;
+			return [ ...new Array( this.baseScriptCount ) ].map(
+				( _ ) => new BaseScriptRecord( this.start, p )
+			);
+		} );
+	}
+}
+class BaseScriptRecord {
+	constructor( baseScriptListTableStart, p ) {
+		this.baseScriptTag = p.tag;
+		this.baseScriptOffset = p.Offset16;
+		lazy$1( this, `baseScriptTable`, () => {
+			p.currentPosition =
+				baseScriptListTableStart + this.baseScriptOffset;
+			return new BaseScriptTable( p );
+		} );
+	}
+}
+class BaseScriptTable {
+	constructor( p ) {
+		this.start = p.currentPosition;
+		this.baseValuesOffset = p.Offset16;
+		this.defaultMinMaxOffset = p.Offset16;
+		this.baseLangSysCount = p.uint16;
+		this.baseLangSysRecords = [ ...new Array( this.baseLangSysCount ) ].map(
+			( _ ) => new BaseLangSysRecord( this.start, p )
+		);
+		lazy$1( this, `baseValues`, () => {
+			p.currentPosition = this.start + this.baseValuesOffset;
+			return new BaseValuesTable( p );
+		} );
+		lazy$1( this, `defaultMinMax`, () => {
+			p.currentPosition = this.start + this.defaultMinMaxOffset;
+			return new MinMaxTable( p );
+		} );
+	}
+}
+class BaseLangSysRecord {
+	constructor( baseScriptTableStart, p ) {
+		this.baseLangSysTag = p.tag;
+		this.minMaxOffset = p.Offset16;
+		lazy$1( this, `minMax`, () => {
+			p.currentPosition = baseScriptTableStart + this.minMaxOffset;
+			return new MinMaxTable( p );
+		} );
+	}
+}
+class BaseValuesTable {
+	constructor( p ) {
+		this.parser = p;
+		this.start = p.currentPosition;
+		this.defaultBaselineIndex = p.uint16;
+		this.baseCoordCount = p.uint16;
+		this.baseCoords = [ ...new Array( this.baseCoordCount ) ].map(
+			( _ ) => p.Offset16
+		);
+	}
+	getTable( id ) {
+		this.parser.currentPosition = this.start + this.baseCoords[ id ];
+		return new BaseCoordTable( this.parser );
+	}
+}
+class MinMaxTable {
+	constructor( p ) {
+		this.minCoord = p.Offset16;
+		this.maxCoord = p.Offset16;
+		this.featMinMaxCount = p.uint16;
+		const recordStart = p.currentPosition;
+		lazy$1( this, `featMinMaxRecords`, () => {
+			p.currentPosition = recordStart;
+			return [ ...new Array( this.featMinMaxCount ) ].map(
+				( _ ) => new FeatMinMaxRecord( p )
+			);
+		} );
+	}
+}
+class FeatMinMaxRecord {
+	constructor( p ) {
+		this.featureTableTag = p.tag;
+		this.minCoord = p.Offset16;
+		this.maxCoord = p.Offset16;
+	}
+}
+class BaseCoordTable {
+	constructor( p ) {
+		this.baseCoordFormat = p.uint16;
+		this.coordinate = p.int16;
+		if ( this.baseCoordFormat === 2 ) {
+			this.referenceGlyph = p.uint16;
+			this.baseCoordPoint = p.uint16;
+		}
+		if ( this.baseCoordFormat === 3 ) {
+			this.deviceTable = p.Offset16;
+		}
+	}
+}
+var BASE$1 = Object.freeze( { __proto__: null, BASE: BASE } );
+class ClassDefinition {
+	constructor( p ) {
+		this.classFormat = p.uint16;
+		if ( this.classFormat === 1 ) {
+			this.startGlyphID = p.uint16;
+			this.glyphCount = p.uint16;
+			this.classValueArray = [ ...new Array( this.glyphCount ) ].map(
+				( _ ) => p.uint16
+			);
+		}
+		if ( this.classFormat === 2 ) {
+			this.classRangeCount = p.uint16;
+			this.classRangeRecords = [
+				...new Array( this.classRangeCount ),
+			].map( ( _ ) => new ClassRangeRecord( p ) );
+		}
+	}
+}
+class ClassRangeRecord {
+	constructor( p ) {
+		this.startGlyphID = p.uint16;
+		this.endGlyphID = p.uint16;
+		this.class = p.uint16;
+	}
+}
+class CoverageTable extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.coverageFormat = p.uint16;
+		if ( this.coverageFormat === 1 ) {
+			this.glyphCount = p.uint16;
+			this.glyphArray = [ ...new Array( this.glyphCount ) ].map(
+				( _ ) => p.uint16
+			);
+		}
+		if ( this.coverageFormat === 2 ) {
+			this.rangeCount = p.uint16;
+			this.rangeRecords = [ ...new Array( this.rangeCount ) ].map(
+				( _ ) => new CoverageRangeRecord( p )
+			);
+		}
+	}
+}
+class CoverageRangeRecord {
+	constructor( p ) {
+		this.startGlyphID = p.uint16;
+		this.endGlyphID = p.uint16;
+		this.startCoverageIndex = p.uint16;
+	}
+}
+class ItemVariationStoreTable {
+	constructor( table, p ) {
+		this.table = table;
+		this.parser = p;
+		this.start = p.currentPosition;
+		this.format = p.uint16;
+		this.variationRegionListOffset = p.Offset32;
+		this.itemVariationDataCount = p.uint16;
+		this.itemVariationDataOffsets = [
+			...new Array( this.itemVariationDataCount ),
+		].map( ( _ ) => p.Offset32 );
+	}
+}
+class GDEF extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+		this.glyphClassDefOffset = p.Offset16;
+		lazy$1( this, `glyphClassDefs`, () => {
+			if ( this.glyphClassDefOffset === 0 ) return undefined;
+			p.currentPosition = this.tableStart + this.glyphClassDefOffset;
+			return new ClassDefinition( p );
+		} );
+		this.attachListOffset = p.Offset16;
+		lazy$1( this, `attachList`, () => {
+			if ( this.attachListOffset === 0 ) return undefined;
+			p.currentPosition = this.tableStart + this.attachListOffset;
+			return new AttachList( p );
+		} );
+		this.ligCaretListOffset = p.Offset16;
+		lazy$1( this, `ligCaretList`, () => {
+			if ( this.ligCaretListOffset === 0 ) return undefined;
+			p.currentPosition = this.tableStart + this.ligCaretListOffset;
+			return new LigCaretList( p );
+		} );
+		this.markAttachClassDefOffset = p.Offset16;
+		lazy$1( this, `markAttachClassDef`, () => {
+			if ( this.markAttachClassDefOffset === 0 ) return undefined;
+			p.currentPosition = this.tableStart + this.markAttachClassDefOffset;
+			return new ClassDefinition( p );
+		} );
+		if ( this.minorVersion >= 2 ) {
+			this.markGlyphSetsDefOffset = p.Offset16;
+			lazy$1( this, `markGlyphSetsDef`, () => {
+				if ( this.markGlyphSetsDefOffset === 0 ) return undefined;
+				p.currentPosition =
+					this.tableStart + this.markGlyphSetsDefOffset;
+				return new MarkGlyphSetsTable( p );
+			} );
+		}
+		if ( this.minorVersion === 3 ) {
+			this.itemVarStoreOffset = p.Offset32;
+			lazy$1( this, `itemVarStore`, () => {
+				if ( this.itemVarStoreOffset === 0 ) return undefined;
+				p.currentPosition = this.tableStart + this.itemVarStoreOffset;
+				return new ItemVariationStoreTable( p );
+			} );
+		}
+	}
+}
+class AttachList extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.coverageOffset = p.Offset16;
+		this.glyphCount = p.uint16;
+		this.attachPointOffsets = [ ...new Array( this.glyphCount ) ].map(
+			( _ ) => p.Offset16
+		);
+	}
+	getPoint( pointID ) {
+		this.parser.currentPosition =
+			this.start + this.attachPointOffsets[ pointID ];
+		return new AttachPoint( this.parser );
+	}
+}
+class AttachPoint {
+	constructor( p ) {
+		this.pointCount = p.uint16;
+		this.pointIndices = [ ...new Array( this.pointCount ) ].map(
+			( _ ) => p.uint16
+		);
+	}
+}
+class LigCaretList extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.coverageOffset = p.Offset16;
+		lazy$1( this, `coverage`, () => {
+			p.currentPosition = this.start + this.coverageOffset;
+			return new CoverageTable( p );
+		} );
+		this.ligGlyphCount = p.uint16;
+		this.ligGlyphOffsets = [ ...new Array( this.ligGlyphCount ) ].map(
+			( _ ) => p.Offset16
+		);
+	}
+	getLigGlyph( ligGlyphID ) {
+		this.parser.currentPosition =
+			this.start + this.ligGlyphOffsets[ ligGlyphID ];
+		return new LigGlyph( this.parser );
+	}
+}
+class LigGlyph extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.caretCount = p.uint16;
+		this.caretValueOffsets = [ ...new Array( this.caretCount ) ].map(
+			( _ ) => p.Offset16
+		);
+	}
+	getCaretValue( caretID ) {
+		this.parser.currentPosition =
+			this.start + this.caretValueOffsets[ caretID ];
+		return new CaretValue( this.parser );
+	}
+}
+class CaretValue {
+	constructor( p ) {
+		this.caretValueFormat = p.uint16;
+		if ( this.caretValueFormat === 1 ) {
+			this.coordinate = p.int16;
+		}
+		if ( this.caretValueFormat === 2 ) {
+			this.caretValuePointIndex = p.uint16;
+		}
+		if ( this.caretValueFormat === 3 ) {
+			this.coordinate = p.int16;
+			this.deviceOffset = p.Offset16;
+		}
+	}
+}
+class MarkGlyphSetsTable extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.markGlyphSetTableFormat = p.uint16;
+		this.markGlyphSetCount = p.uint16;
+		this.coverageOffsets = [ ...new Array( this.markGlyphSetCount ) ].map(
+			( _ ) => p.Offset32
+		);
+	}
+	getMarkGlyphSet( markGlyphSetID ) {
+		this.parser.currentPosition =
+			this.start + this.coverageOffsets[ markGlyphSetID ];
+		return new CoverageTable( this.parser );
+	}
+}
+var GDEF$1 = Object.freeze( { __proto__: null, GDEF: GDEF } );
+class ScriptList extends ParsedData {
+	static EMPTY = { scriptCount: 0, scriptRecords: [] };
+	constructor( p ) {
+		super( p );
+		this.scriptCount = p.uint16;
+		this.scriptRecords = [ ...new Array( this.scriptCount ) ].map(
+			( _ ) => new ScriptRecord( p )
+		);
+	}
+}
+class ScriptRecord {
+	constructor( p ) {
+		this.scriptTag = p.tag;
+		this.scriptOffset = p.Offset16;
+	}
+}
+class ScriptTable extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.defaultLangSys = p.Offset16;
+		this.langSysCount = p.uint16;
+		this.langSysRecords = [ ...new Array( this.langSysCount ) ].map(
+			( _ ) => new LangSysRecord( p )
+		);
+	}
+}
+class LangSysRecord {
+	constructor( p ) {
+		this.langSysTag = p.tag;
+		this.langSysOffset = p.Offset16;
+	}
+}
+class LangSysTable {
+	constructor( p ) {
+		this.lookupOrder = p.Offset16;
+		this.requiredFeatureIndex = p.uint16;
+		this.featureIndexCount = p.uint16;
+		this.featureIndices = [ ...new Array( this.featureIndexCount ) ].map(
+			( _ ) => p.uint16
+		);
+	}
+}
+class FeatureList extends ParsedData {
+	static EMPTY = { featureCount: 0, featureRecords: [] };
+	constructor( p ) {
+		super( p );
+		this.featureCount = p.uint16;
+		this.featureRecords = [ ...new Array( this.featureCount ) ].map(
+			( _ ) => new FeatureRecord( p )
+		);
+	}
+}
+class FeatureRecord {
+	constructor( p ) {
+		this.featureTag = p.tag;
+		this.featureOffset = p.Offset16;
+	}
+}
+class FeatureTable extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.featureParams = p.Offset16;
+		this.lookupIndexCount = p.uint16;
+		this.lookupListIndices = [ ...new Array( this.lookupIndexCount ) ].map(
+			( _ ) => p.uint16
+		);
+	}
+	getFeatureParams() {
+		if ( this.featureParams > 0 ) {
+			const p = this.parser;
+			p.currentPosition = this.start + this.featureParams;
+			const tag = this.featureTag;
+			if ( tag === `size` ) return new Size( p );
+			if ( tag.startsWith( `cc` ) ) return new CharacterVariant( p );
+			if ( tag.startsWith( `ss` ) ) return new StylisticSet( p );
+		}
+	}
+}
+class CharacterVariant {
+	constructor( p ) {
+		this.format = p.uint16;
+		this.featUiLabelNameId = p.uint16;
+		this.featUiTooltipTextNameId = p.uint16;
+		this.sampleTextNameId = p.uint16;
+		this.numNamedParameters = p.uint16;
+		this.firstParamUiLabelNameId = p.uint16;
+		this.charCount = p.uint16;
+		this.character = [ ...new Array( this.charCount ) ].map(
+			( _ ) => p.uint24
+		);
+	}
+}
+class Size {
+	constructor( p ) {
+		this.designSize = p.uint16;
+		this.subfamilyIdentifier = p.uint16;
+		this.subfamilyNameID = p.uint16;
+		this.smallEnd = p.uint16;
+		this.largeEnd = p.uint16;
+	}
+}
+class StylisticSet {
+	constructor( p ) {
+		this.version = p.uint16;
+		this.UINameID = p.uint16;
+	}
+}
+function undoCoverageOffsetParsing( instance ) {
+	instance.parser.currentPosition -= 2;
+	delete instance.coverageOffset;
+	delete instance.getCoverageTable;
+}
+class LookupType$1 extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.substFormat = p.uint16;
+		this.coverageOffset = p.Offset16;
+	}
+	getCoverageTable() {
+		let p = this.parser;
+		p.currentPosition = this.start + this.coverageOffset;
+		return new CoverageTable( p );
+	}
+}
+class SubstLookupRecord {
+	constructor( p ) {
+		this.glyphSequenceIndex = p.uint16;
+		this.lookupListIndex = p.uint16;
+	}
+}
+class LookupType1$1 extends LookupType$1 {
+	constructor( p ) {
+		super( p );
+		this.deltaGlyphID = p.int16;
+	}
+}
+class LookupType2$1 extends LookupType$1 {
+	constructor( p ) {
+		super( p );
+		this.sequenceCount = p.uint16;
+		this.sequenceOffsets = [ ...new Array( this.sequenceCount ) ].map(
+			( _ ) => p.Offset16
+		);
+	}
+	getSequence( index ) {
+		let p = this.parser;
+		p.currentPosition = this.start + this.sequenceOffsets[ index ];
+		return new SequenceTable( p );
+	}
+}
+class SequenceTable {
+	constructor( p ) {
+		this.glyphCount = p.uint16;
+		this.substituteGlyphIDs = [ ...new Array( this.glyphCount ) ].map(
+			( _ ) => p.uint16
+		);
+	}
+}
+class LookupType3$1 extends LookupType$1 {
+	constructor( p ) {
+		super( p );
+		this.alternateSetCount = p.uint16;
+		this.alternateSetOffsets = [
+			...new Array( this.alternateSetCount ),
+		].map( ( _ ) => p.Offset16 );
+	}
+	getAlternateSet( index ) {
+		let p = this.parser;
+		p.currentPosition = this.start + this.alternateSetOffsets[ index ];
+		return new AlternateSetTable( p );
+	}
+}
+class AlternateSetTable {
+	constructor( p ) {
+		this.glyphCount = p.uint16;
+		this.alternateGlyphIDs = [ ...new Array( this.glyphCount ) ].map(
+			( _ ) => p.uint16
+		);
+	}
+}
+class LookupType4$1 extends LookupType$1 {
+	constructor( p ) {
+		super( p );
+		this.ligatureSetCount = p.uint16;
+		this.ligatureSetOffsets = [ ...new Array( this.ligatureSetCount ) ].map(
+			( _ ) => p.Offset16
+		);
+	}
+	getLigatureSet( index ) {
+		let p = this.parser;
+		p.currentPosition = this.start + this.ligatureSetOffsets[ index ];
+		return new LigatureSetTable( p );
+	}
+}
+class LigatureSetTable extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.ligatureCount = p.uint16;
+		this.ligatureOffsets = [ ...new Array( this.ligatureCount ) ].map(
+			( _ ) => p.Offset16
+		);
+	}
+	getLigature( index ) {
+		let p = this.parser;
+		p.currentPosition = this.start + this.ligatureOffsets[ index ];
+		return new LigatureTable( p );
+	}
+}
+class LigatureTable {
+	constructor( p ) {
+		this.ligatureGlyph = p.uint16;
+		this.componentCount = p.uint16;
+		this.componentGlyphIDs = [
+			...new Array( this.componentCount - 1 ),
+		].map( ( _ ) => p.uint16 );
+	}
+}
+class LookupType5$1 extends LookupType$1 {
+	constructor( p ) {
+		super( p );
+		if ( this.substFormat === 1 ) {
+			this.subRuleSetCount = p.uint16;
+			this.subRuleSetOffsets = [
+				...new Array( this.subRuleSetCount ),
+			].map( ( _ ) => p.Offset16 );
+		}
+		if ( this.substFormat === 2 ) {
+			this.classDefOffset = p.Offset16;
+			this.subClassSetCount = p.uint16;
+			this.subClassSetOffsets = [
+				...new Array( this.subClassSetCount ),
+			].map( ( _ ) => p.Offset16 );
+		}
+		if ( this.substFormat === 3 ) {
+			undoCoverageOffsetParsing( this );
+			this.glyphCount = p.uint16;
+			this.substitutionCount = p.uint16;
+			this.coverageOffsets = [ ...new Array( this.glyphCount ) ].map(
+				( _ ) => p.Offset16
+			);
+			this.substLookupRecords = [
+				...new Array( this.substitutionCount ),
+			].map( ( _ ) => new SubstLookupRecord( p ) );
+		}
+	}
+	getSubRuleSet( index ) {
+		if ( this.substFormat !== 1 )
+			throw new Error(
+				`lookup type 5.${ this.substFormat } has no subrule sets.`
+			);
+		let p = this.parser;
+		p.currentPosition = this.start + this.subRuleSetOffsets[ index ];
+		return new SubRuleSetTable( p );
+	}
+	getSubClassSet( index ) {
+		if ( this.substFormat !== 2 )
+			throw new Error(
+				`lookup type 5.${ this.substFormat } has no subclass sets.`
+			);
+		let p = this.parser;
+		p.currentPosition = this.start + this.subClassSetOffsets[ index ];
+		return new SubClassSetTable( p );
+	}
+	getCoverageTable( index ) {
+		if ( this.substFormat !== 3 && ! index )
+			return super.getCoverageTable();
+		if ( ! index )
+			throw new Error(
+				`lookup type 5.${ this.substFormat } requires an coverage table index.`
+			);
+		let p = this.parser;
+		p.currentPosition = this.start + this.coverageOffsets[ index ];
+		return new CoverageTable( p );
+	}
+}
+class SubRuleSetTable extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.subRuleCount = p.uint16;
+		this.subRuleOffsets = [ ...new Array( this.subRuleCount ) ].map(
+			( _ ) => p.Offset16
+		);
+	}
+	getSubRule( index ) {
+		let p = this.parser;
+		p.currentPosition = this.start + this.subRuleOffsets[ index ];
+		return new SubRuleTable( p );
+	}
+}
+class SubRuleTable {
+	constructor( p ) {
+		this.glyphCount = p.uint16;
+		this.substitutionCount = p.uint16;
+		this.inputSequence = [ ...new Array( this.glyphCount - 1 ) ].map(
+			( _ ) => p.uint16
+		);
+		this.substLookupRecords = [
+			...new Array( this.substitutionCount ),
+		].map( ( _ ) => new SubstLookupRecord( p ) );
+	}
+}
+class SubClassSetTable extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.subClassRuleCount = p.uint16;
+		this.subClassRuleOffsets = [
+			...new Array( this.subClassRuleCount ),
+		].map( ( _ ) => p.Offset16 );
+	}
+	getSubClass( index ) {
+		let p = this.parser;
+		p.currentPosition = this.start + this.subClassRuleOffsets[ index ];
+		return new SubClassRuleTable( p );
+	}
+}
+class SubClassRuleTable extends SubRuleTable {
+	constructor( p ) {
+		super( p );
+	}
+}
+class LookupType6$1 extends LookupType$1 {
+	constructor( p ) {
+		super( p );
+		if ( this.substFormat === 1 ) {
+			this.chainSubRuleSetCount = p.uint16;
+			this.chainSubRuleSetOffsets = [
+				...new Array( this.chainSubRuleSetCount ),
+			].map( ( _ ) => p.Offset16 );
+		}
+		if ( this.substFormat === 2 ) {
+			this.backtrackClassDefOffset = p.Offset16;
+			this.inputClassDefOffset = p.Offset16;
+			this.lookaheadClassDefOffset = p.Offset16;
+			this.chainSubClassSetCount = p.uint16;
+			this.chainSubClassSetOffsets = [
+				...new Array( this.chainSubClassSetCount ),
+			].map( ( _ ) => p.Offset16 );
+		}
+		if ( this.substFormat === 3 ) {
+			undoCoverageOffsetParsing( this );
+			this.backtrackGlyphCount = p.uint16;
+			this.backtrackCoverageOffsets = [
+				...new Array( this.backtrackGlyphCount ),
+			].map( ( _ ) => p.Offset16 );
+			this.inputGlyphCount = p.uint16;
+			this.inputCoverageOffsets = [
+				...new Array( this.inputGlyphCount ),
+			].map( ( _ ) => p.Offset16 );
+			this.lookaheadGlyphCount = p.uint16;
+			this.lookaheadCoverageOffsets = [
+				...new Array( this.lookaheadGlyphCount ),
+			].map( ( _ ) => p.Offset16 );
+			this.seqLookupCount = p.uint16;
+			this.seqLookupRecords = [
+				...new Array( this.substitutionCount ),
+			].map( ( _ ) => new SequenceLookupRecord( p ) );
+		}
+	}
+	getChainSubRuleSet( index ) {
+		if ( this.substFormat !== 1 )
+			throw new Error(
+				`lookup type 6.${ this.substFormat } has no chainsubrule sets.`
+			);
+		let p = this.parser;
+		p.currentPosition = this.start + this.chainSubRuleSetOffsets[ index ];
+		return new ChainSubRuleSetTable( p );
+	}
+	getChainSubClassSet( index ) {
+		if ( this.substFormat !== 2 )
+			throw new Error(
+				`lookup type 6.${ this.substFormat } has no chainsubclass sets.`
+			);
+		let p = this.parser;
+		p.currentPosition = this.start + this.chainSubClassSetOffsets[ index ];
+		return new ChainSubClassSetTable( p );
+	}
+	getCoverageFromOffset( offset ) {
+		if ( this.substFormat !== 3 )
+			throw new Error(
+				`lookup type 6.${ this.substFormat } does not use contextual coverage offsets.`
+			);
+		let p = this.parser;
+		p.currentPosition = this.start + offset;
+		return new CoverageTable( p );
+	}
+}
+class ChainSubRuleSetTable extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.chainSubRuleCount = p.uint16;
+		this.chainSubRuleOffsets = [
+			...new Array( this.chainSubRuleCount ),
+		].map( ( _ ) => p.Offset16 );
+	}
+	getSubRule( index ) {
+		let p = this.parser;
+		p.currentPosition = this.start + this.chainSubRuleOffsets[ index ];
+		return new ChainSubRuleTable( p );
+	}
+}
+class ChainSubRuleTable {
+	constructor( p ) {
+		this.backtrackGlyphCount = p.uint16;
+		this.backtrackSequence = [
+			...new Array( this.backtrackGlyphCount ),
+		].map( ( _ ) => p.uint16 );
+		this.inputGlyphCount = p.uint16;
+		this.inputSequence = [ ...new Array( this.inputGlyphCount - 1 ) ].map(
+			( _ ) => p.uint16
+		);
+		this.lookaheadGlyphCount = p.uint16;
+		this.lookAheadSequence = [
+			...new Array( this.lookAheadGlyphCount ),
+		].map( ( _ ) => p.uint16 );
+		this.substitutionCount = p.uint16;
+		this.substLookupRecords = [ ...new Array( this.SubstCount ) ].map(
+			( _ ) => new SubstLookupRecord( p )
+		);
+	}
+}
+class ChainSubClassSetTable extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.chainSubClassRuleCount = p.uint16;
+		this.chainSubClassRuleOffsets = [
+			...new Array( this.chainSubClassRuleCount ),
+		].map( ( _ ) => p.Offset16 );
+	}
+	getSubClass( index ) {
+		let p = this.parser;
+		p.currentPosition = this.start + this.chainSubRuleOffsets[ index ];
+		return new ChainSubClassRuleTable( p );
+	}
+}
+class ChainSubClassRuleTable {
+	constructor( p ) {
+		this.backtrackGlyphCount = p.uint16;
+		this.backtrackSequence = [
+			...new Array( this.backtrackGlyphCount ),
+		].map( ( _ ) => p.uint16 );
+		this.inputGlyphCount = p.uint16;
+		this.inputSequence = [ ...new Array( this.inputGlyphCount - 1 ) ].map(
+			( _ ) => p.uint16
+		);
+		this.lookaheadGlyphCount = p.uint16;
+		this.lookAheadSequence = [
+			...new Array( this.lookAheadGlyphCount ),
+		].map( ( _ ) => p.uint16 );
+		this.substitutionCount = p.uint16;
+		this.substLookupRecords = [
+			...new Array( this.substitutionCount ),
+		].map( ( _ ) => new SequenceLookupRecord( p ) );
+	}
+}
+class SequenceLookupRecord extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.sequenceIndex = p.uint16;
+		this.lookupListIndex = p.uint16;
+	}
+}
+class LookupType7$1 extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.substFormat = p.uint16;
+		this.extensionLookupType = p.uint16;
+		this.extensionOffset = p.Offset32;
+	}
+}
+class LookupType8$1 extends LookupType$1 {
+	constructor( p ) {
+		super( p );
+		this.backtrackGlyphCount = p.uint16;
+		this.backtrackCoverageOffsets = [
+			...new Array( this.backtrackGlyphCount ),
+		].map( ( _ ) => p.Offset16 );
+		this.lookaheadGlyphCount = p.uint16;
+		this.lookaheadCoverageOffsets = [
+			new Array( this.lookaheadGlyphCount ),
+		].map( ( _ ) => p.Offset16 );
+		this.glyphCount = p.uint16;
+		this.substituteGlyphIDs = [ ...new Array( this.glyphCount ) ].map(
+			( _ ) => p.uint16
+		);
+	}
+}
+var GSUBtables = {
+	buildSubtable: function ( type, p ) {
+		const subtable = new [
+			undefined,
+			LookupType1$1,
+			LookupType2$1,
+			LookupType3$1,
+			LookupType4$1,
+			LookupType5$1,
+			LookupType6$1,
+			LookupType7$1,
+			LookupType8$1,
+		][ type ]( p );
+		subtable.type = type;
+		return subtable;
+	},
+};
+class LookupType extends ParsedData {
+	constructor( p ) {
+		super( p );
+	}
+}
+class LookupType1 extends LookupType {
+	constructor( p ) {
+		super( p );
+		console.log( `lookup type 1` );
+	}
+}
+class LookupType2 extends LookupType {
+	constructor( p ) {
+		super( p );
+		console.log( `lookup type 2` );
+	}
+}
+class LookupType3 extends LookupType {
+	constructor( p ) {
+		super( p );
+		console.log( `lookup type 3` );
+	}
+}
+class LookupType4 extends LookupType {
+	constructor( p ) {
+		super( p );
+		console.log( `lookup type 4` );
+	}
+}
+class LookupType5 extends LookupType {
+	constructor( p ) {
+		super( p );
+		console.log( `lookup type 5` );
+	}
+}
+class LookupType6 extends LookupType {
+	constructor( p ) {
+		super( p );
+		console.log( `lookup type 6` );
+	}
+}
+class LookupType7 extends LookupType {
+	constructor( p ) {
+		super( p );
+		console.log( `lookup type 7` );
+	}
+}
+class LookupType8 extends LookupType {
+	constructor( p ) {
+		super( p );
+		console.log( `lookup type 8` );
+	}
+}
+class LookupType9 extends LookupType {
+	constructor( p ) {
+		super( p );
+		console.log( `lookup type 9` );
+	}
+}
+var GPOStables = {
+	buildSubtable: function ( type, p ) {
+		const subtable = new [
+			undefined,
+			LookupType1,
+			LookupType2,
+			LookupType3,
+			LookupType4,
+			LookupType5,
+			LookupType6,
+			LookupType7,
+			LookupType8,
+			LookupType9,
+		][ type ]( p );
+		subtable.type = type;
+		return subtable;
+	},
+};
+class LookupList extends ParsedData {
+	static EMPTY = { lookupCount: 0, lookups: [] };
+	constructor( p ) {
+		super( p );
+		this.lookupCount = p.uint16;
+		this.lookups = [ ...new Array( this.lookupCount ) ].map(
+			( _ ) => p.Offset16
+		);
+	}
+}
+class LookupTable extends ParsedData {
+	constructor( p, type ) {
+		super( p );
+		this.ctType = type;
+		this.lookupType = p.uint16;
+		this.lookupFlag = p.uint16;
+		this.subTableCount = p.uint16;
+		this.subtableOffsets = [ ...new Array( this.subTableCount ) ].map(
+			( _ ) => p.Offset16
+		);
+		this.markFilteringSet = p.uint16;
+	}
+	get rightToLeft() {
+		return this.lookupFlag & ( 1 === 1 );
+	}
+	get ignoreBaseGlyphs() {
+		return this.lookupFlag & ( 2 === 2 );
+	}
+	get ignoreLigatures() {
+		return this.lookupFlag & ( 4 === 4 );
+	}
+	get ignoreMarks() {
+		return this.lookupFlag & ( 8 === 8 );
+	}
+	get useMarkFilteringSet() {
+		return this.lookupFlag & ( 16 === 16 );
+	}
+	get markAttachmentType() {
+		return this.lookupFlag & ( 65280 === 65280 );
+	}
+	getSubTable( index ) {
+		const builder = this.ctType === `GSUB` ? GSUBtables : GPOStables;
+		this.parser.currentPosition =
+			this.start + this.subtableOffsets[ index ];
+		return builder.buildSubtable( this.lookupType, this.parser );
+	}
+}
+class CommonLayoutTable extends SimpleTable {
+	constructor( dict, dataview, name ) {
+		const { p: p, tableStart: tableStart } = super( dict, dataview, name );
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+		this.scriptListOffset = p.Offset16;
+		this.featureListOffset = p.Offset16;
+		this.lookupListOffset = p.Offset16;
+		if ( this.majorVersion === 1 && this.minorVersion === 1 ) {
+			this.featureVariationsOffset = p.Offset32;
+		}
+		const no_content = ! (
+			this.scriptListOffset ||
+			this.featureListOffset ||
+			this.lookupListOffset
+		);
+		lazy$1( this, `scriptList`, () => {
+			if ( no_content ) return ScriptList.EMPTY;
+			p.currentPosition = tableStart + this.scriptListOffset;
+			return new ScriptList( p );
+		} );
+		lazy$1( this, `featureList`, () => {
+			if ( no_content ) return FeatureList.EMPTY;
+			p.currentPosition = tableStart + this.featureListOffset;
+			return new FeatureList( p );
+		} );
+		lazy$1( this, `lookupList`, () => {
+			if ( no_content ) return LookupList.EMPTY;
+			p.currentPosition = tableStart + this.lookupListOffset;
+			return new LookupList( p );
+		} );
+		if ( this.featureVariationsOffset ) {
+			lazy$1( this, `featureVariations`, () => {
+				if ( no_content ) return FeatureVariations.EMPTY;
+				p.currentPosition = tableStart + this.featureVariationsOffset;
+				return new FeatureVariations( p );
+			} );
+		}
+	}
+	getSupportedScripts() {
+		return this.scriptList.scriptRecords.map( ( r ) => r.scriptTag );
+	}
+	getScriptTable( scriptTag ) {
+		let record = this.scriptList.scriptRecords.find(
+			( r ) => r.scriptTag === scriptTag
+		);
+		this.parser.currentPosition =
+			this.scriptList.start + record.scriptOffset;
+		let table = new ScriptTable( this.parser );
+		table.scriptTag = scriptTag;
+		return table;
+	}
+	ensureScriptTable( arg ) {
+		if ( typeof arg === 'string' ) {
+			return this.getScriptTable( arg );
+		}
+		return arg;
+	}
+	getSupportedLangSys( scriptTable ) {
+		scriptTable = this.ensureScriptTable( scriptTable );
+		const hasDefault = scriptTable.defaultLangSys !== 0;
+		const supported = scriptTable.langSysRecords.map(
+			( l ) => l.langSysTag
+		);
+		if ( hasDefault ) supported.unshift( `dflt` );
+		return supported;
+	}
+	getDefaultLangSysTable( scriptTable ) {
+		scriptTable = this.ensureScriptTable( scriptTable );
+		let offset = scriptTable.defaultLangSys;
+		if ( offset !== 0 ) {
+			this.parser.currentPosition = scriptTable.start + offset;
+			let table = new LangSysTable( this.parser );
+			table.langSysTag = ``;
+			table.defaultForScript = scriptTable.scriptTag;
+			return table;
+		}
+	}
+	getLangSysTable( scriptTable, langSysTag = `dflt` ) {
+		if ( langSysTag === `dflt` )
+			return this.getDefaultLangSysTable( scriptTable );
+		scriptTable = this.ensureScriptTable( scriptTable );
+		let record = scriptTable.langSysRecords.find(
+			( l ) => l.langSysTag === langSysTag
+		);
+		this.parser.currentPosition = scriptTable.start + record.langSysOffset;
+		let table = new LangSysTable( this.parser );
+		table.langSysTag = langSysTag;
+		return table;
+	}
+	getFeatures( langSysTable ) {
+		return langSysTable.featureIndices.map( ( index ) =>
+			this.getFeature( index )
+		);
+	}
+	getFeature( indexOrTag ) {
+		let record;
+		if ( parseInt( indexOrTag ) == indexOrTag ) {
+			record = this.featureList.featureRecords[ indexOrTag ];
+		} else {
+			record = this.featureList.featureRecords.find(
+				( f ) => f.featureTag === indexOrTag
+			);
+		}
+		if ( ! record ) return;
+		this.parser.currentPosition =
+			this.featureList.start + record.featureOffset;
+		let table = new FeatureTable( this.parser );
+		table.featureTag = record.featureTag;
+		return table;
+	}
+	getLookups( featureTable ) {
+		return featureTable.lookupListIndices.map( ( index ) =>
+			this.getLookup( index )
+		);
+	}
+	getLookup( lookupIndex, type ) {
+		let lookupOffset = this.lookupList.lookups[ lookupIndex ];
+		this.parser.currentPosition = this.lookupList.start + lookupOffset;
+		return new LookupTable( this.parser, type );
+	}
+}
+class GSUB extends CommonLayoutTable {
+	constructor( dict, dataview ) {
+		super( dict, dataview, `GSUB` );
+	}
+	getLookup( lookupIndex ) {
+		return super.getLookup( lookupIndex, `GSUB` );
+	}
+}
+var GSUB$1 = Object.freeze( { __proto__: null, GSUB: GSUB } );
+class GPOS extends CommonLayoutTable {
+	constructor( dict, dataview ) {
+		super( dict, dataview, `GPOS` );
+	}
+	getLookup( lookupIndex ) {
+		return super.getLookup( lookupIndex, `GPOS` );
+	}
+}
+var GPOS$1 = Object.freeze( { __proto__: null, GPOS: GPOS } );
+class SVG extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.offsetToSVGDocumentList = p.Offset32;
+		p.currentPosition = this.tableStart + this.offsetToSVGDocumentList;
+		this.documentList = new SVGDocumentList( p );
+	}
+}
+class SVGDocumentList extends ParsedData {
+	constructor( p ) {
+		super( p );
+		this.numEntries = p.uint16;
+		this.documentRecords = [ ...new Array( this.numEntries ) ].map(
+			( _ ) => new SVGDocumentRecord( p )
+		);
+	}
+	getDocument( documentID ) {
+		let record = this.documentRecords[ documentID ];
+		if ( ! record ) return '';
+		let offset = this.start + record.svgDocOffset;
+		this.parser.currentPosition = offset;
+		return this.parser.readBytes( record.svgDocLength );
+	}
+	getDocumentForGlyph( glyphID ) {
+		let id = this.documentRecords.findIndex(
+			( d ) => d.startGlyphID <= glyphID && glyphID <= d.endGlyphID
+		);
+		if ( id === -1 ) return '';
+		return this.getDocument( id );
+	}
+}
+class SVGDocumentRecord {
+	constructor( p ) {
+		this.startGlyphID = p.uint16;
+		this.endGlyphID = p.uint16;
+		this.svgDocOffset = p.Offset32;
+		this.svgDocLength = p.uint32;
+	}
+}
+var SVG$1 = Object.freeze( { __proto__: null, SVG: SVG } );
+class fvar extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+		this.axesArrayOffset = p.Offset16;
+		p.uint16;
+		this.axisCount = p.uint16;
+		this.axisSize = p.uint16;
+		this.instanceCount = p.uint16;
+		this.instanceSize = p.uint16;
+		const axisStart = this.tableStart + this.axesArrayOffset;
+		lazy$1( this, `axes`, () => {
+			p.currentPosition = axisStart;
+			return [ ...new Array( this.axisCount ) ].map(
+				( _ ) => new VariationAxisRecord( p )
+			);
+		} );
+		const instanceStart = axisStart + this.axisCount * this.axisSize;
+		lazy$1( this, `instances`, () => {
+			let instances = [];
+			for ( let i = 0; i < this.instanceCount; i++ ) {
+				p.currentPosition = instanceStart + i * this.instanceSize;
+				instances.push(
+					new InstanceRecord( p, this.axisCount, this.instanceSize )
+				);
+			}
+			return instances;
+		} );
+	}
+	getSupportedAxes() {
+		return this.axes.map( ( a ) => a.tag );
+	}
+	getAxis( name ) {
+		return this.axes.find( ( a ) => a.tag === name );
+	}
+}
+class VariationAxisRecord {
+	constructor( p ) {
+		this.tag = p.tag;
+		this.minValue = p.fixed;
+		this.defaultValue = p.fixed;
+		this.maxValue = p.fixed;
+		this.flags = p.flags( 16 );
+		this.axisNameID = p.uint16;
+	}
+}
+class InstanceRecord {
+	constructor( p, axisCount, size ) {
+		let start = p.currentPosition;
+		this.subfamilyNameID = p.uint16;
+		p.uint16;
+		this.coordinates = [ ...new Array( axisCount ) ].map(
+			( _ ) => p.fixed
+		);
+		if ( p.currentPosition - start < size ) {
+			this.postScriptNameID = p.uint16;
+		}
+	}
+}
+var fvar$1 = Object.freeze( { __proto__: null, fvar: fvar } );
+class cvt extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		const n = dict.length / 2;
+		lazy$1( this, `items`, () =>
+			[ ...new Array( n ) ].map( ( _ ) => p.fword )
+		);
+	}
+}
+var cvt$1 = Object.freeze( { __proto__: null, cvt: cvt } );
+class fpgm extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		lazy$1( this, `instructions`, () =>
+			[ ...new Array( dict.length ) ].map( ( _ ) => p.uint8 )
+		);
+	}
+}
+var fpgm$1 = Object.freeze( { __proto__: null, fpgm: fpgm } );
+class gasp extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.numRanges = p.uint16;
+		const getter = () =>
+			[ ...new Array( this.numRanges ) ].map(
+				( _ ) => new GASPRange( p )
+			);
+		lazy$1( this, `gaspRanges`, getter );
+	}
+}
+class GASPRange {
+	constructor( p ) {
+		this.rangeMaxPPEM = p.uint16;
+		this.rangeGaspBehavior = p.uint16;
+	}
+}
+var gasp$1 = Object.freeze( { __proto__: null, gasp: gasp } );
+class glyf extends SimpleTable {
+	constructor( dict, dataview ) {
+		super( dict, dataview );
+	}
+	getGlyphData( offset, length ) {
+		this.parser.currentPosition = this.tableStart + offset;
+		return this.parser.readBytes( length );
+	}
+}
+var glyf$1 = Object.freeze( { __proto__: null, glyf: glyf } );
+class loca extends SimpleTable {
+	constructor( dict, dataview, tables ) {
+		const { p: p } = super( dict, dataview );
+		const n = tables.maxp.numGlyphs + 1;
+		if ( tables.head.indexToLocFormat === 0 ) {
+			this.x2 = true;
+			lazy$1( this, `offsets`, () =>
+				[ ...new Array( n ) ].map( ( _ ) => p.Offset16 )
+			);
+		} else {
+			lazy$1( this, `offsets`, () =>
+				[ ...new Array( n ) ].map( ( _ ) => p.Offset32 )
+			);
+		}
+	}
+	getGlyphDataOffsetAndLength( glyphID ) {
+		let offset = this.offsets[ glyphID ] * this.x2 ? 2 : 1;
+		let nextOffset = this.offsets[ glyphID + 1 ] * this.x2 ? 2 : 1;
+		return { offset: offset, length: nextOffset - offset };
+	}
+}
+var loca$1 = Object.freeze( { __proto__: null, loca: loca } );
+class prep extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		lazy$1( this, `instructions`, () =>
+			[ ...new Array( dict.length ) ].map( ( _ ) => p.uint8 )
+		);
+	}
+}
+var prep$1 = Object.freeze( { __proto__: null, prep: prep } );
+class CFF extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		lazy$1( this, `data`, () => p.readBytes() );
+	}
+}
+var CFF$1 = Object.freeze( { __proto__: null, CFF: CFF } );
+class CFF2 extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		lazy$1( this, `data`, () => p.readBytes() );
+	}
+}
+var CFF2$1 = Object.freeze( { __proto__: null, CFF2: CFF2 } );
+class VORG extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+		this.defaultVertOriginY = p.int16;
+		this.numVertOriginYMetrics = p.uint16;
+		lazy$1( this, `vertORiginYMetrics`, () =>
+			[ ...new Array( this.numVertOriginYMetrics ) ].map(
+				( _ ) => new VertOriginYMetric( p )
+			)
+		);
+	}
+}
+class VertOriginYMetric {
+	constructor( p ) {
+		this.glyphIndex = p.uint16;
+		this.vertOriginY = p.int16;
+	}
+}
+var VORG$1 = Object.freeze( { __proto__: null, VORG: VORG } );
+class BitmapSize {
+	constructor( p ) {
+		this.indexSubTableArrayOffset = p.Offset32;
+		this.indexTablesSize = p.uint32;
+		this.numberofIndexSubTables = p.uint32;
+		this.colorRef = p.uint32;
+		this.hori = new SbitLineMetrics( p );
+		this.vert = new SbitLineMetrics( p );
+		this.startGlyphIndex = p.uint16;
+		this.endGlyphIndex = p.uint16;
+		this.ppemX = p.uint8;
+		this.ppemY = p.uint8;
+		this.bitDepth = p.uint8;
+		this.flags = p.int8;
+	}
+}
+class BitmapScale {
+	constructor( p ) {
+		this.hori = new SbitLineMetrics( p );
+		this.vert = new SbitLineMetrics( p );
+		this.ppemX = p.uint8;
+		this.ppemY = p.uint8;
+		this.substitutePpemX = p.uint8;
+		this.substitutePpemY = p.uint8;
+	}
+}
+class SbitLineMetrics {
+	constructor( p ) {
+		this.ascender = p.int8;
+		this.descender = p.int8;
+		this.widthMax = p.uint8;
+		this.caretSlopeNumerator = p.int8;
+		this.caretSlopeDenominator = p.int8;
+		this.caretOffset = p.int8;
+		this.minOriginSB = p.int8;
+		this.minAdvanceSB = p.int8;
+		this.maxBeforeBL = p.int8;
+		this.minAfterBL = p.int8;
+		this.pad1 = p.int8;
+		this.pad2 = p.int8;
+	}
+}
+class EBLC extends SimpleTable {
+	constructor( dict, dataview, name ) {
+		const { p: p } = super( dict, dataview, name );
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+		this.numSizes = p.uint32;
+		lazy$1( this, `bitMapSizes`, () =>
+			[ ...new Array( this.numSizes ) ].map(
+				( _ ) => new BitmapSize( p )
+			)
+		);
+	}
+}
+var EBLC$1 = Object.freeze( { __proto__: null, EBLC: EBLC } );
+class EBDT extends SimpleTable {
+	constructor( dict, dataview, name ) {
+		const { p: p } = super( dict, dataview, name );
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+	}
+}
+var EBDT$1 = Object.freeze( { __proto__: null, EBDT: EBDT } );
+class EBSC extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.majorVersion = p.uint16;
+		this.minorVersion = p.uint16;
+		this.numSizes = p.uint32;
+		lazy$1( this, `bitmapScales`, () =>
+			[ ...new Array( this.numSizes ) ].map(
+				( _ ) => new BitmapScale( p )
+			)
+		);
+	}
+}
+var EBSC$1 = Object.freeze( { __proto__: null, EBSC: EBSC } );
+class CBLC extends EBLC {
+	constructor( dict, dataview ) {
+		super( dict, dataview, `CBLC` );
+	}
+}
+var CBLC$1 = Object.freeze( { __proto__: null, CBLC: CBLC } );
+class CBDT extends EBDT {
+	constructor( dict, dataview ) {
+		super( dict, dataview, `CBDT` );
+	}
+}
+var CBDT$1 = Object.freeze( { __proto__: null, CBDT: CBDT } );
+class sbix extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.flags = p.flags( 16 );
+		this.numStrikes = p.uint32;
+		lazy$1( this, `strikeOffsets`, () =>
+			[ ...new Array( this.numStrikes ) ].map( ( _ ) => p.Offset32 )
+		);
+	}
+}
+var sbix$1 = Object.freeze( { __proto__: null, sbix: sbix } );
+class COLR extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.numBaseGlyphRecords = p.uint16;
+		this.baseGlyphRecordsOffset = p.Offset32;
+		this.layerRecordsOffset = p.Offset32;
+		this.numLayerRecords = p.uint16;
+	}
+	getBaseGlyphRecord( glyphID ) {
+		let start = this.tableStart + this.baseGlyphRecordsOffset;
+		this.parser.currentPosition = start;
+		let first = new BaseGlyphRecord( this.parser );
+		let firstID = first.gID;
+		let end = this.tableStart + this.layerRecordsOffset - 6;
+		this.parser.currentPosition = end;
+		let last = new BaseGlyphRecord( this.parser );
+		let lastID = last.gID;
+		if ( firstID === glyphID ) return first;
+		if ( lastID === glyphID ) return last;
+		while ( true ) {
+			if ( start === end ) break;
+			let mid = start + ( end - start ) / 12;
+			this.parser.currentPosition = mid;
+			let middle = new BaseGlyphRecord( this.parser );
+			let midID = middle.gID;
+			if ( midID === glyphID ) return middle;
+			else if ( midID > glyphID ) {
+				end = mid;
+			} else if ( midID < glyphID ) {
+				start = mid;
+			}
+		}
+		return false;
+	}
+	getLayers( glyphID ) {
+		let record = this.getBaseGlyphRecord( glyphID );
+		this.parser.currentPosition =
+			this.tableStart +
+			this.layerRecordsOffset +
+			4 * record.firstLayerIndex;
+		return [ ...new Array( record.numLayers ) ].map(
+			( _ ) => new LayerRecord( p )
+		);
+	}
+}
+class BaseGlyphRecord {
+	constructor( p ) {
+		this.gID = p.uint16;
+		this.firstLayerIndex = p.uint16;
+		this.numLayers = p.uint16;
+	}
+}
+class LayerRecord {
+	constructor( p ) {
+		this.gID = p.uint16;
+		this.paletteIndex = p.uint16;
+	}
+}
+var COLR$1 = Object.freeze( { __proto__: null, COLR: COLR } );
+class CPAL extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.numPaletteEntries = p.uint16;
+		const numPalettes = ( this.numPalettes = p.uint16 );
+		this.numColorRecords = p.uint16;
+		this.offsetFirstColorRecord = p.Offset32;
+		this.colorRecordIndices = [ ...new Array( this.numPalettes ) ].map(
+			( _ ) => p.uint16
+		);
+		lazy$1( this, `colorRecords`, () => {
+			p.currentPosition = this.tableStart + this.offsetFirstColorRecord;
+			return [ ...new Array( this.numColorRecords ) ].map(
+				( _ ) => new ColorRecord( p )
+			);
+		} );
+		if ( this.version === 1 ) {
+			this.offsetPaletteTypeArray = p.Offset32;
+			this.offsetPaletteLabelArray = p.Offset32;
+			this.offsetPaletteEntryLabelArray = p.Offset32;
+			lazy$1( this, `paletteTypeArray`, () => {
+				p.currentPosition =
+					this.tableStart + this.offsetPaletteTypeArray;
+				return new PaletteTypeArray( p, numPalettes );
+			} );
+			lazy$1( this, `paletteLabelArray`, () => {
+				p.currentPosition =
+					this.tableStart + this.offsetPaletteLabelArray;
+				return new PaletteLabelsArray( p, numPalettes );
+			} );
+			lazy$1( this, `paletteEntryLabelArray`, () => {
+				p.currentPosition =
+					this.tableStart + this.offsetPaletteEntryLabelArray;
+				return new PaletteEntryLabelArray( p, numPalettes );
+			} );
+		}
+	}
+}
+class ColorRecord {
+	constructor( p ) {
+		this.blue = p.uint8;
+		this.green = p.uint8;
+		this.red = p.uint8;
+		this.alpha = p.uint8;
+	}
+}
+class PaletteTypeArray {
+	constructor( p, numPalettes ) {
+		this.paletteTypes = [ ...new Array( numPalettes ) ].map(
+			( _ ) => p.uint32
+		);
+	}
+}
+class PaletteLabelsArray {
+	constructor( p, numPalettes ) {
+		this.paletteLabels = [ ...new Array( numPalettes ) ].map(
+			( _ ) => p.uint16
+		);
+	}
+}
+class PaletteEntryLabelArray {
+	constructor( p, numPalettes ) {
+		this.paletteEntryLabels = [ ...new Array( numPalettes ) ].map(
+			( _ ) => p.uint16
+		);
+	}
+}
+var CPAL$1 = Object.freeze( { __proto__: null, CPAL: CPAL } );
+class DSIG extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint32;
+		this.numSignatures = p.uint16;
+		this.flags = p.uint16;
+		this.signatureRecords = [ ...new Array( this.numSignatures ) ].map(
+			( _ ) => new SignatureRecord( p )
+		);
+	}
+	getData( signatureID ) {
+		const record = this.signatureRecords[ signatureID ];
+		this.parser.currentPosition = this.tableStart + record.offset;
+		return new SignatureBlockFormat1( this.parser );
+	}
+}
+class SignatureRecord {
+	constructor( p ) {
+		this.format = p.uint32;
+		this.length = p.uint32;
+		this.offset = p.Offset32;
+	}
+}
+class SignatureBlockFormat1 {
+	constructor( p ) {
+		p.uint16;
+		p.uint16;
+		this.signatureLength = p.uint32;
+		this.signature = p.readBytes( this.signatureLength );
+	}
+}
+var DSIG$1 = Object.freeze( { __proto__: null, DSIG: DSIG } );
+class hdmx extends SimpleTable {
+	constructor( dict, dataview, tables ) {
+		const { p: p } = super( dict, dataview );
+		const numGlyphs = tables.hmtx.numGlyphs;
+		this.version = p.uint16;
+		this.numRecords = p.int16;
+		this.sizeDeviceRecord = p.int32;
+		this.records = [ ...new Array( numRecords ) ].map(
+			( _ ) => new DeviceRecord( p, numGlyphs )
+		);
+	}
+}
+class DeviceRecord {
+	constructor( p, numGlyphs ) {
+		this.pixelSize = p.uint8;
+		this.maxWidth = p.uint8;
+		this.widths = p.readBytes( numGlyphs );
+	}
+}
+var hdmx$1 = Object.freeze( { __proto__: null, hdmx: hdmx } );
+class kern extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.nTables = p.uint16;
+		lazy$1( this, `tables`, () => {
+			let offset = this.tableStart + 4;
+			const tables = [];
+			for ( let i = 0; i < this.nTables; i++ ) {
+				p.currentPosition = offset;
+				let subtable = new KernSubTable( p );
+				tables.push( subtable );
+				offset += subtable;
+			}
+			return tables;
+		} );
+	}
+}
+class KernSubTable {
+	constructor( p ) {
+		this.version = p.uint16;
+		this.length = p.uint16;
+		this.coverage = p.flags( 8 );
+		this.format = p.uint8;
+		if ( this.format === 0 ) {
+			this.nPairs = p.uint16;
+			this.searchRange = p.uint16;
+			this.entrySelector = p.uint16;
+			this.rangeShift = p.uint16;
+			lazy$1( this, `pairs`, () =>
+				[ ...new Array( this.nPairs ) ].map( ( _ ) => new Pair( p ) )
+			);
+		}
+		if ( this.format === 2 ) {
+			console.warn(
+				`Kern subtable format 2 is not supported: this parser currently only parses universal table data.`
+			);
+		}
+	}
+	get horizontal() {
+		return this.coverage[ 0 ];
+	}
+	get minimum() {
+		return this.coverage[ 1 ];
+	}
+	get crossstream() {
+		return this.coverage[ 2 ];
+	}
+	get override() {
+		return this.coverage[ 3 ];
+	}
+}
+class Pair {
+	constructor( p ) {
+		this.left = p.uint16;
+		this.right = p.uint16;
+		this.value = p.fword;
+	}
+}
+var kern$1 = Object.freeze( { __proto__: null, kern: kern } );
+class LTSH extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.numGlyphs = p.uint16;
+		this.yPels = p.readBytes( this.numGlyphs );
+	}
+}
+var LTSH$1 = Object.freeze( { __proto__: null, LTSH: LTSH } );
+class MERG extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.mergeClassCount = p.uint16;
+		this.mergeDataOffset = p.Offset16;
+		this.classDefCount = p.uint16;
+		this.offsetToClassDefOffsets = p.Offset16;
+		lazy$1( this, `mergeEntryMatrix`, () =>
+			[ ...new Array( this.mergeClassCount ) ].map( ( _ ) =>
+				p.readBytes( this.mergeClassCount )
+			)
+		);
+		console.warn( `Full MERG parsing is currently not supported.` );
+		console.warn(
+			`If you need this table parsed, please file an issue, or better yet, a PR.`
+		);
+	}
+}
+var MERG$1 = Object.freeze( { __proto__: null, MERG: MERG } );
+class meta extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint32;
+		this.flags = p.uint32;
+		p.uint32;
+		this.dataMapsCount = p.uint32;
+		this.dataMaps = [ ...new Array( this.dataMapsCount ) ].map(
+			( _ ) => new DataMap( this.tableStart, p )
+		);
+	}
+}
+class DataMap {
+	constructor( tableStart, p ) {
+		this.tableStart = tableStart;
+		this.parser = p;
+		this.tag = p.tag;
+		this.dataOffset = p.Offset32;
+		this.dataLength = p.uint32;
+	}
+	getData() {
+		this.parser.currentField = this.tableStart + this.dataOffset;
+		return this.parser.readBytes( this.dataLength );
+	}
+}
+var meta$1 = Object.freeze( { __proto__: null, meta: meta } );
+class PCLT extends SimpleTable {
+	constructor( dict, dataview ) {
+		super( dict, dataview );
+		console.warn(
+			`This font uses a PCLT table, which is currently not supported by this parser.`
+		);
+		console.warn(
+			`If you need this table parsed, please file an issue, or better yet, a PR.`
+		);
+	}
+}
+var PCLT$1 = Object.freeze( { __proto__: null, PCLT: PCLT } );
+class VDMX extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.uint16;
+		this.numRecs = p.uint16;
+		this.numRatios = p.uint16;
+		this.ratRanges = [ ...new Array( this.numRatios ) ].map(
+			( _ ) => new RatioRange( p )
+		);
+		this.offsets = [ ...new Array( this.numRatios ) ].map(
+			( _ ) => p.Offset16
+		);
+		this.VDMXGroups = [ ...new Array( this.numRecs ) ].map(
+			( _ ) => new VDMXGroup( p )
+		);
+	}
+}
+class RatioRange {
+	constructor( p ) {
+		this.bCharSet = p.uint8;
+		this.xRatio = p.uint8;
+		this.yStartRatio = p.uint8;
+		this.yEndRatio = p.uint8;
+	}
+}
+class VDMXGroup {
+	constructor( p ) {
+		this.recs = p.uint16;
+		this.startsz = p.uint8;
+		this.endsz = p.uint8;
+		this.records = [ ...new Array( this.recs ) ].map(
+			( _ ) => new vTable( p )
+		);
+	}
+}
+class vTable {
+	constructor( p ) {
+		this.yPelHeight = p.uint16;
+		this.yMax = p.int16;
+		this.yMin = p.int16;
+	}
+}
+var VDMX$1 = Object.freeze( { __proto__: null, VDMX: VDMX } );
+class vhea extends SimpleTable {
+	constructor( dict, dataview ) {
+		const { p: p } = super( dict, dataview );
+		this.version = p.fixed;
+		this.ascent = this.vertTypoAscender = p.int16;
+		this.descent = this.vertTypoDescender = p.int16;
+		this.lineGap = this.vertTypoLineGap = p.int16;
+		this.advanceHeightMax = p.int16;
+		this.minTopSideBearing = p.int16;
+		this.minBottomSideBearing = p.int16;
+		this.yMaxExtent = p.int16;
+		this.caretSlopeRise = p.int16;
+		this.caretSlopeRun = p.int16;
+		this.caretOffset = p.int16;
+		this.reserved = p.int16;
+		this.reserved = p.int16;
+		this.reserved = p.int16;
+		this.reserved = p.int16;
+		this.metricDataFormat = p.int16;
+		this.numOfLongVerMetrics = p.uint16;
+		p.verifyLength();
+	}
+}
+var vhea$1 = Object.freeze( { __proto__: null, vhea: vhea } );
+class vmtx extends SimpleTable {
+	constructor( dict, dataview, tables ) {
+		super( dict, dataview );
+		const numOfLongVerMetrics = tables.vhea.numOfLongVerMetrics;
+		const numGlyphs = tables.maxp.numGlyphs;
+		const metricsStart = p.currentPosition;
+		lazy( this, `vMetrics`, () => {
+			p.currentPosition = metricsStart;
+			return [ ...new Array( numOfLongVerMetrics ) ].map(
+				( _ ) => new LongVertMetric( p.uint16, p.int16 )
+			);
+		} );
+		if ( numOfLongVerMetrics < numGlyphs ) {
+			const tsbStart = metricsStart + numOfLongVerMetrics * 4;
+			lazy( this, `topSideBearings`, () => {
+				p.currentPosition = tsbStart;
+				return [ ...new Array( numGlyphs - numOfLongVerMetrics ) ].map(
+					( _ ) => p.int16
+				);
+			} );
+		}
+	}
+}
+class LongVertMetric {
+	constructor( h, b ) {
+		this.advanceHeight = h;
+		this.topSideBearing = b;
+	}
+}
+var vmtx$1 = Object.freeze( { __proto__: null, vmtx: vmtx } );
+
+/* eslint-enable */
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+const {
+  kebabCase: make_families_from_faces_kebabCase
+} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function makeFamiliesFromFaces(fontFaces) {
+  const fontFamiliesObject = fontFaces.reduce((acc, item) => {
+    if (!acc[item.fontFamily]) {
+      acc[item.fontFamily] = {
+        name: item.fontFamily,
+        fontFamily: item.fontFamily,
+        slug: make_families_from_faces_kebabCase(item.fontFamily.toLowerCase()),
+        fontFace: []
+      };
+    }
+    acc[item.fontFamily].fontFace.push(item);
+    return acc;
+  }, {});
+  return Object.values(fontFamiliesObject);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/upload-fonts.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+function UploadFonts() {
+  const {
+    installFonts,
+    notice,
+    setNotice
+  } = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
+  const [isUploading, setIsUploading] = (0,external_wp_element_namespaceObject.useState)(false);
+  const handleDropZone = files => {
+    handleFilesUpload(files);
+  };
+  const onFilesUpload = event => {
+    handleFilesUpload(event.target.files);
+  };
+
+  /**
+   * Filters the selected files to only allow the ones with the allowed extensions
+   *
+   * @param {Array} files The files to be filtered
+   * @return {void}
+   */
+  const handleFilesUpload = async files => {
+    setNotice(null);
+    setIsUploading(true);
+    const uniqueFilenames = new Set();
+    const selectedFiles = [...files];
+    let hasInvalidFiles = false;
+
+    // Use map to create a promise for each file check, then filter with Promise.all.
+    const checkFilesPromises = selectedFiles.map(async file => {
+      const isFont = await isFontFile(file);
+      if (!isFont) {
+        hasInvalidFiles = true;
+        return null; // Return null for invalid files.
+      }
+      // Check for duplicates
+      if (uniqueFilenames.has(file.name)) {
+        return null; // Return null for duplicates.
+      }
+      // Check if the file extension is allowed.
+      const fileExtension = file.name.split('.').pop().toLowerCase();
+      if (ALLOWED_FILE_EXTENSIONS.includes(fileExtension)) {
+        uniqueFilenames.add(file.name);
+        return file; // Return the file if it passes all checks.
+      }
+      return null; // Return null for disallowed file extensions.
+    });
+
+    // Filter out the nulls after all promises have resolved.
+    const allowedFiles = (await Promise.all(checkFilesPromises)).filter(file => null !== file);
+    if (allowedFiles.length > 0) {
+      loadFiles(allowedFiles);
+    } else {
+      const message = hasInvalidFiles ? (0,external_wp_i18n_namespaceObject.__)('Sorry, you are not allowed to upload this file type.') : (0,external_wp_i18n_namespaceObject.__)('No fonts found to install.');
+      setNotice({
+        type: 'error',
+        message
+      });
+      setIsUploading(false);
+    }
+  };
+
+  /**
+   * Loads the selected files and reads the font metadata
+   *
+   * @param {Array} files The files to be loaded
+   * @return {void}
+   */
+  const loadFiles = async files => {
+    const fontFacesLoaded = await Promise.all(files.map(async fontFile => {
+      const fontFaceData = await getFontFaceMetadata(fontFile);
+      await loadFontFaceInBrowser(fontFaceData, fontFaceData.file, 'all');
+      return fontFaceData;
+    }));
+    handleInstall(fontFacesLoaded);
+  };
+
+  /**
+   * Checks if a file is a valid Font file.
+   *
+   * @param {File} file The file to be checked.
+   * @return {boolean} Whether the file is a valid font file.
+   */
+  async function isFontFile(file) {
+    const font = new Font('Uploaded Font');
+    try {
+      const buffer = await readFileAsArrayBuffer(file);
+      await font.fromDataBuffer(buffer, 'font');
+      return true;
+    } catch (error) {
+      return false;
+    }
+  }
+
+  // Create a function to read the file as array buffer
+  async function readFileAsArrayBuffer(file) {
+    return new Promise((resolve, reject) => {
+      const reader = new window.FileReader();
+      reader.readAsArrayBuffer(file);
+      reader.onload = () => resolve(reader.result);
+      reader.onerror = reject;
+    });
+  }
+  const getFontFaceMetadata = async fontFile => {
+    const buffer = await readFileAsArrayBuffer(fontFile);
+    const fontObj = new Font('Uploaded Font');
+    fontObj.fromDataBuffer(buffer, fontFile.name);
+    // Assuming that fromDataBuffer triggers onload event and returning a Promise
+    const onloadEvent = await new Promise(resolve => fontObj.onload = resolve);
+    const font = onloadEvent.detail.font;
+    const {
+      name
+    } = font.opentype.tables;
+    const fontName = name.get(16) || name.get(1);
+    const isItalic = name.get(2).toLowerCase().includes('italic');
+    const fontWeight = font.opentype.tables['OS/2'].usWeightClass || 'normal';
+    const isVariable = !!font.opentype.tables.fvar;
+    const weightAxis = isVariable && font.opentype.tables.fvar.axes.find(({
+      tag
+    }) => tag === 'wght');
+    const weightRange = weightAxis ? `${weightAxis.minValue} ${weightAxis.maxValue}` : null;
+    return {
+      file: fontFile,
+      fontFamily: fontName,
+      fontStyle: isItalic ? 'italic' : 'normal',
+      fontWeight: weightRange || fontWeight
+    };
+  };
+
+  /**
+   * Creates the font family definition and sends it to the server
+   *
+   * @param {Array} fontFaces The font faces to be installed
+   * @return {void}
+   */
+  const handleInstall = async fontFaces => {
+    const fontFamilies = makeFamiliesFromFaces(fontFaces);
+    try {
+      await installFonts(fontFamilies);
+      setNotice({
+        type: 'success',
+        message: (0,external_wp_i18n_namespaceObject.__)('Fonts were installed successfully.')
+      });
+    } catch (error) {
+      setNotice({
+        type: 'error',
+        message: error.message,
+        errors: error?.installationErrors
+      });
+    }
+    setIsUploading(false);
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+    className: "font-library-modal__tabpanel-layout",
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropZone, {
+      onFilesDrop: handleDropZone
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+      className: "font-library-modal__local-fonts",
+      children: [notice && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Notice, {
+        status: notice.type,
+        __unstableHTML: true,
+        onRemove: () => setNotice(null),
+        children: [notice.message, notice.errors && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
+          children: notice.errors.map((error, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
+            children: error
+          }, index))
+        })]
+      }), isUploading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          className: "font-library-modal__upload-area",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ProgressBar, {})
+        })
+      }), !isUploading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FormFileUpload, {
+        accept: ALLOWED_FILE_EXTENSIONS.map(ext => `.${ext}`).join(','),
+        multiple: true,
+        onChange: onFilesUpload,
+        render: ({
+          openFileDialog
+        }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          className: "font-library-modal__upload-area",
+          onClick: openFileDialog,
+          children: (0,external_wp_i18n_namespaceObject.__)('Upload font')
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+        margin: 2
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+        className: "font-library-modal__upload-area__text",
+        children: (0,external_wp_i18n_namespaceObject.__)('Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.')
+      })]
+    })]
+  });
+}
+/* harmony default export */ const upload_fonts = (UploadFonts);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  Tabs
+} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+const DEFAULT_TAB = {
+  id: 'installed-fonts',
+  title: (0,external_wp_i18n_namespaceObject._x)('Library', 'Font library')
+};
+const UPLOAD_TAB = {
+  id: 'upload-fonts',
+  title: (0,external_wp_i18n_namespaceObject.__)('Upload')
+};
+const tabsFromCollections = collections => collections.map(({
+  slug,
+  name
+}) => ({
+  id: slug,
+  title: collections.length === 1 && slug === 'google-fonts' ? (0,external_wp_i18n_namespaceObject.__)('Install Fonts') : name
+}));
+function FontLibraryModal({
+  onRequestClose,
+  defaultTabId = 'installed-fonts'
+}) {
+  const {
+    collections,
+    setNotice
+  } = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
+  const canUserCreate = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      canUser
+    } = select(external_wp_coreData_namespaceObject.store);
+    return canUser('create', 'font-families');
+  }, []);
+  const tabs = [DEFAULT_TAB];
+  if (canUserCreate) {
+    tabs.push(UPLOAD_TAB);
+    tabs.push(...tabsFromCollections(collections || []));
+  }
+
+  // Reset notice when new tab is selected.
+  const onSelect = () => {
+    setNotice(null);
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Fonts'),
+    onRequestClose: onRequestClose,
+    isFullScreen: true,
+    className: "font-library-modal",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "font-library-modal__tabs",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Tabs, {
+        defaultTabId: defaultTabId,
+        onSelect: onSelect,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tabs.TabList, {
+          children: tabs.map(({
+            id,
+            title
+          }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tabs.Tab, {
+            tabId: id,
+            children: title
+          }, id))
+        }), tabs.map(({
+          id
+        }) => {
+          let contents;
+          switch (id) {
+            case 'upload-fonts':
+              contents = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(upload_fonts, {});
+              break;
+            case 'installed-fonts':
+              contents = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(installed_fonts, {});
+              break;
+            default:
+              contents = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_collection, {
+                slug: id
+              });
+          }
+          return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tabs.TabPanel, {
+            tabId: id,
+            focusable: false,
+            children: contents
+          }, id);
+        })]
+      })
+    })
+  });
+}
+/* harmony default export */ const font_library_modal = (FontLibraryModal);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-family-item.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+function FontFamilyItem({
+  font
+}) {
+  const {
+    handleSetLibraryFontSelected,
+    setModalTabOpen
+  } = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
+  const variantsCount = font?.fontFace?.length || 1;
+  const handleClick = () => {
+    handleSetLibraryFontSelected(font);
+    setModalTabOpen('installed-fonts');
+  };
+  const previewStyle = getFamilyPreviewStyle(font);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItem, {
+    onClick: handleClick,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "space-between",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        style: previewStyle,
+        children: font.name
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        className: "edit-site-global-styles-screen-typography__font-variants-count",
+        children: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %d: Number of font variants. */
+        (0,external_wp_i18n_namespaceObject._n)('%d variant', '%d variants', variantsCount), variantsCount)
+      })]
+    })
+  });
+}
+/* harmony default export */ const font_family_item = (FontFamilyItem);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-families.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+const {
+  useGlobalSetting: font_families_useGlobalSetting
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function FontFamilies() {
+  const {
+    modalTabOpen,
+    setModalTabOpen
+  } = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
+  const [fontFamilies] = font_families_useGlobalSetting('typography.fontFamilies');
+  const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map(f => setUIValuesNeeded(f, {
+    source: 'theme'
+  })).sort((a, b) => a.name.localeCompare(b.name)) : [];
+  const customFonts = fontFamilies?.custom ? fontFamilies.custom.map(f => setUIValuesNeeded(f, {
+    source: 'custom'
+  })).sort((a, b) => a.name.localeCompare(b.name)) : [];
+  const hasFonts = 0 < customFonts.length || 0 < themeFonts.length;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [!!modalTabOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_library_modal, {
+      onRequestClose: () => setModalTabOpen(null),
+      defaultTabId: modalTabOpen
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+      spacing: 2,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        justify: "space-between",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
+          level: 3,
+          children: (0,external_wp_i18n_namespaceObject.__)('Fonts')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          onClick: () => setModalTabOpen('installed-fonts'),
+          label: (0,external_wp_i18n_namespaceObject.__)('Manage fonts'),
+          icon: library_settings,
+          size: "small"
+        })]
+      }), hasFonts ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+        isBordered: true,
+        isSeparated: true,
+        children: [customFonts.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_family_item, {
+          font: font
+        }, font.slug)), themeFonts.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_family_item, {
+          font: font
+        }, font.slug))]
+      }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [(0,external_wp_i18n_namespaceObject.__)('No fonts installed.'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          className: "edit-site-global-styles-font-families__add-fonts",
+          variant: "secondary",
+          onClick: () => setModalTabOpen('upload-fonts'),
+          children: (0,external_wp_i18n_namespaceObject.__)('Add fonts')
+        })]
+      })]
+    })]
+  });
+}
+/* harmony default export */ const font_families = (({
+  ...props
+}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(context, {
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FontFamilies, {
+    ...props
+  })
+}));
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+function ScreenTypography() {
+  const fontLibraryEnabled = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).getEditorSettings().fontLibraryEnabled, []);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Typography'),
+      description: (0,external_wp_i18n_namespaceObject.__)('Typography styles and the application of those styles on site elements.')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-global-styles-screen",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+        spacing: 7,
+        children: [!window.__experimentalDisableFontLibrary && fontLibraryEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_families, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(typography_elements, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyVariations, {
+          title: (0,external_wp_i18n_namespaceObject.__)('Presets')
+        })]
+      })
+    })]
+  });
+}
+/* harmony default export */ const screen_typography = (ScreenTypography);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-panel.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  useGlobalStyle: typography_panel_useGlobalStyle,
+  useGlobalSetting: typography_panel_useGlobalSetting,
+  useSettingsForBlockElement: typography_panel_useSettingsForBlockElement,
+  TypographyPanel: typography_panel_StylesTypographyPanel
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function TypographyPanel({
+  element,
+  headingLevel
+}) {
+  let prefixParts = [];
+  if (element === 'heading') {
+    prefixParts = prefixParts.concat(['elements', headingLevel]);
+  } else if (element && element !== 'text') {
+    prefixParts = prefixParts.concat(['elements', element]);
+  }
+  const prefix = prefixParts.join('.');
+  const [style] = typography_panel_useGlobalStyle(prefix, undefined, 'user', {
+    shouldDecodeEncode: false
+  });
+  const [inheritedStyle, setStyle] = typography_panel_useGlobalStyle(prefix, undefined, 'all', {
+    shouldDecodeEncode: false
+  });
+  const [rawSettings] = typography_panel_useGlobalSetting('');
+  const usedElement = element === 'heading' ? headingLevel : element;
+  const settings = typography_panel_useSettingsForBlockElement(rawSettings, undefined, usedElement);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(typography_panel_StylesTypographyPanel, {
+    inheritedValue: inheritedStyle,
+    value: style,
+    onChange: setStyle,
+    settings: settings
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-preview.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  useGlobalStyle: typography_preview_useGlobalStyle
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function TypographyPreview({
+  name,
+  element,
+  headingLevel
+}) {
+  var _ref;
+  let prefix = '';
+  if (element === 'heading') {
+    prefix = `elements.${headingLevel}.`;
+  } else if (element && element !== 'text') {
+    prefix = `elements.${element}.`;
+  }
+  const [fontFamily] = typography_preview_useGlobalStyle(prefix + 'typography.fontFamily', name);
+  const [gradientValue] = typography_preview_useGlobalStyle(prefix + 'color.gradient', name);
+  const [backgroundColor] = typography_preview_useGlobalStyle(prefix + 'color.background', name);
+  const [fallbackBackgroundColor] = typography_preview_useGlobalStyle('color.background');
+  const [color] = typography_preview_useGlobalStyle(prefix + 'color.text', name);
+  const [fontSize] = typography_preview_useGlobalStyle(prefix + 'typography.fontSize', name);
+  const [fontStyle] = typography_preview_useGlobalStyle(prefix + 'typography.fontStyle', name);
+  const [fontWeight] = typography_preview_useGlobalStyle(prefix + 'typography.fontWeight', name);
+  const [letterSpacing] = typography_preview_useGlobalStyle(prefix + 'typography.letterSpacing', name);
+  const extraStyles = element === 'link' ? {
+    textDecoration: 'underline'
+  } : {};
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    className: "edit-site-typography-preview",
+    style: {
+      fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif',
+      background: (_ref = gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor) !== null && _ref !== void 0 ? _ref : fallbackBackgroundColor,
+      color,
+      fontSize,
+      fontStyle,
+      fontWeight,
+      letterSpacing,
+      ...extraStyles
+    },
+    children: "Aa"
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography-element.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+const screen_typography_element_elements = {
+  text: {
+    description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts used on the site.'),
+    title: (0,external_wp_i18n_namespaceObject.__)('Text')
+  },
+  link: {
+    description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on the links.'),
+    title: (0,external_wp_i18n_namespaceObject.__)('Links')
+  },
+  heading: {
+    description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on headings.'),
+    title: (0,external_wp_i18n_namespaceObject.__)('Headings')
+  },
+  caption: {
+    description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on captions.'),
+    title: (0,external_wp_i18n_namespaceObject.__)('Captions')
+  },
+  button: {
+    description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on buttons.'),
+    title: (0,external_wp_i18n_namespaceObject.__)('Buttons')
+  }
+};
+function ScreenTypographyElement({
+  element
+}) {
+  const [headingLevel, setHeadingLevel] = (0,external_wp_element_namespaceObject.useState)('heading');
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: screen_typography_element_elements[element].title,
+      description: screen_typography_element_elements[element].description
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+      marginX: 4,
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyPreview, {
+        element: element,
+        headingLevel: headingLevel
+      })
+    }), element === 'heading' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+      marginX: 4,
+      marginBottom: "1em",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, {
+        label: (0,external_wp_i18n_namespaceObject.__)('Select heading level'),
+        hideLabelFromVision: true,
+        value: headingLevel,
+        onChange: setHeadingLevel,
+        isBlock: true,
+        size: "__unstable-large",
+        __nextHasNoMarginBottom: true,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
+          value: "heading",
+          label: (0,external_wp_i18n_namespaceObject._x)('All', 'heading levels')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
+          value: "h1",
+          label: (0,external_wp_i18n_namespaceObject.__)('H1')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
+          value: "h2",
+          label: (0,external_wp_i18n_namespaceObject.__)('H2')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
+          value: "h3",
+          label: (0,external_wp_i18n_namespaceObject.__)('H3')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
+          value: "h4",
+          label: (0,external_wp_i18n_namespaceObject.__)('H4')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
+          value: "h5",
+          label: (0,external_wp_i18n_namespaceObject.__)('H5')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
+          value: "h6",
+          label: (0,external_wp_i18n_namespaceObject.__)('H6')
+        })]
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyPanel, {
+      element: element,
+      headingLevel: headingLevel
+    })]
+  });
+}
+/* harmony default export */ const screen_typography_element = (ScreenTypographyElement);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/icon/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+/** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */
+
+/**
+ * Return an SVG icon.
+ *
+ * @param {IconProps}                                 props icon is the SVG component to render
+ *                                                          size is a number specifiying the icon size in pixels
+ *                                                          Other props will be passed to wrapped SVG component
+ * @param {import('react').ForwardedRef<HTMLElement>} ref   The forwarded ref to the SVG element.
+ *
+ * @return {JSX.Element}  Icon component
+ */
+function Icon({
+  icon,
+  size = 24,
+  ...props
+}, ref) {
+  return (0,external_wp_element_namespaceObject.cloneElement)(icon, {
+    width: size,
+    height: size,
+    ...props,
+    ref
+  });
+}
+/* harmony default export */ const build_module_icon = ((0,external_wp_element_namespaceObject.forwardRef)(Icon));
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/shuffle.js
+/**
+ * WordPress dependencies
+ */
+
+
+const shuffle = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/SVG",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M17.192 6.75L15.47 5.03l1.06-1.06 3.537 3.53-3.537 3.53-1.06-1.06 1.723-1.72h-3.19c-.602 0-.993.202-1.28.498-.309.319-.538.792-.695 1.383-.13.488-.222 1.023-.296 1.508-.034.664-.116 1.413-.303 2.117-.193.721-.513 1.467-1.068 2.04-.575.594-1.359.954-2.357.954H4v-1.5h4.003c.601 0 .993-.202 1.28-.498.308-.319.538-.792.695-1.383.149-.557.216-1.093.288-1.662l.039-.31a9.653 9.653 0 0 1 .272-1.653c.193-.722.513-1.467 1.067-2.04.576-.594 1.36-.954 2.358-.954h3.19zM8.004 6.75c.8 0 1.46.23 1.988.628a6.24 6.24 0 0 0-.684 1.396 1.725 1.725 0 0 0-.024-.026c-.287-.296-.679-.498-1.28-.498H4v-1.5h4.003zM12.699 14.726c-.161.459-.38.94-.684 1.396.527.397 1.188.628 1.988.628h3.19l-1.722 1.72 1.06 1.06L20.067 16l-3.537-3.53-1.06 1.06 1.723 1.72h-3.19c-.602 0-.993-.202-1.28-.498a1.96 1.96 0 0 1-.024-.026z"
+  })
+});
+/* harmony default export */ const library_shuffle = (shuffle);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-indicator-wrapper.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+function ColorIndicatorWrapper({
+  className,
+  ...props
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
+    className: dist_clsx('edit-site-global-styles__color-indicator-wrapper', className),
+    ...props
+  });
+}
+/* harmony default export */ const color_indicator_wrapper = (ColorIndicatorWrapper);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/palette.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  useGlobalSetting: palette_useGlobalSetting
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const EMPTY_COLORS = [];
+function Palette({
+  name
+}) {
+  const [customColors] = palette_useGlobalSetting('color.palette.custom');
+  const [themeColors] = palette_useGlobalSetting('color.palette.theme');
+  const [defaultColors] = palette_useGlobalSetting('color.palette.default');
+  const [defaultPaletteEnabled] = palette_useGlobalSetting('color.defaultPalette', name);
+  const [randomizeThemeColors] = useColorRandomizer();
+  const colors = (0,external_wp_element_namespaceObject.useMemo)(() => [...(customColors || EMPTY_COLORS), ...(themeColors || EMPTY_COLORS), ...(defaultColors && defaultPaletteEnabled ? defaultColors : EMPTY_COLORS)], [customColors, themeColors, defaultColors, defaultPaletteEnabled]);
+  const screenPath = !name ? '/colors/palette' : '/blocks/' + encodeURIComponent(name) + '/colors/palette';
+  const paletteButtonText = colors.length > 0 ? (0,external_wp_i18n_namespaceObject.__)('Edit palette') : (0,external_wp_i18n_namespaceObject.__)('Add colors');
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    spacing: 3,
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
+      level: 3,
+      children: (0,external_wp_i18n_namespaceObject.__)('Palette')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+      isBordered: true,
+      isSeparated: true,
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+        path: screenPath,
+        "aria-label": paletteButtonText,
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+          direction: "row",
+          children: [colors.length <= 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+            children: (0,external_wp_i18n_namespaceObject.__)('Add colors')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalZStack, {
+            isLayered: false,
+            offset: -8,
+            children: colors.slice(0, 5).map(({
+              color
+            }, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(color_indicator_wrapper, {
+              children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ColorIndicator, {
+                colorValue: color
+              })
+            }, `${color}-${index}`))
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
+            icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
+          })]
+        })
+      })
+    }), window.__experimentalEnableColorRandomizer && themeColors?.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+      variant: "secondary",
+      icon: library_shuffle,
+      onClick: randomizeThemeColors,
+      children: (0,external_wp_i18n_namespaceObject.__)('Randomize colors')
+    })]
+  });
+}
+/* harmony default export */ const palette = (Palette);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-colors.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+const {
+  useGlobalStyle: screen_colors_useGlobalStyle,
+  useGlobalSetting: screen_colors_useGlobalSetting,
+  useSettingsForBlockElement: screen_colors_useSettingsForBlockElement,
+  ColorPanel: screen_colors_StylesColorPanel
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function ScreenColors() {
+  const [style] = screen_colors_useGlobalStyle('', undefined, 'user', {
+    shouldDecodeEncode: false
+  });
+  const [inheritedStyle, setStyle] = screen_colors_useGlobalStyle('', undefined, 'all', {
+    shouldDecodeEncode: false
+  });
+  const [rawSettings] = screen_colors_useGlobalSetting('');
+  const settings = screen_colors_useSettingsForBlockElement(rawSettings);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Colors'),
+      description: (0,external_wp_i18n_namespaceObject.__)('Palette colors and the application of those colors on site elements.')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-global-styles-screen",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+        spacing: 7,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(palette, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_colors_StylesColorPanel, {
+          inheritedValue: inheritedStyle,
+          value: style,
+          onChange: setStyle,
+          settings: settings
+        })]
+      })
+    })]
+  });
+}
+/* harmony default export */ const screen_colors = (ScreenColors);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preset-colors.js
+/**
+ * Internal dependencies
+ */
+
+
+function PresetColors() {
+  const {
+    paletteColors
+  } = useStylesPreviewColors();
+  return paletteColors.slice(0, 5).map(({
+    slug,
+    color
+  }, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    style: {
+      flexGrow: 1,
+      height: '100%',
+      background: color
+    }
+  }, `${slug}-${index}`));
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview-colors.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const preview_colors_firstFrameVariants = {
+  start: {
+    scale: 1,
+    opacity: 1
+  },
+  hover: {
+    scale: 0,
+    opacity: 0
+  }
+};
+const StylesPreviewColors = ({
+  label,
+  isFocused,
+  withHoverView
+}) => {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewIframe, {
+    label: label,
+    isFocused: isFocused,
+    withHoverView: withHoverView,
+    children: ({
+      key
+    }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
+      variants: preview_colors_firstFrameVariants,
+      style: {
+        height: '100%',
+        overflow: 'hidden'
+      },
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+        spacing: 0,
+        justify: "center",
+        style: {
+          height: '100%',
+          overflow: 'hidden'
+        },
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PresetColors, {})
+      })
+    }, key)
+  });
+};
+/* harmony default export */ const preview_colors = (StylesPreviewColors);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/variations/variations-color.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+function ColorVariations({
+  title,
+  gap = 2
+}) {
+  const colorVariations = useColorVariations();
+
+  // Return null if there is only one variation (the default).
+  if (colorVariations?.length <= 1) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    spacing: 3,
+    children: [title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
+      level: 3,
+      children: title
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
+      spacing: gap,
+      children: colorVariations.map((variation, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Variation, {
+        variation: variation,
+        isPill: true,
+        property: "color",
+        children: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(preview_colors, {})
+      }, index))
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-palette-panel.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  useGlobalSetting: color_palette_panel_useGlobalSetting
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const mobilePopoverProps = {
+  placement: 'bottom-start',
+  offset: 8
+};
+function ColorPalettePanel({
+  name
+}) {
+  const [themeColors, setThemeColors] = color_palette_panel_useGlobalSetting('color.palette.theme', name);
+  const [baseThemeColors] = color_palette_panel_useGlobalSetting('color.palette.theme', name, 'base');
+  const [defaultColors, setDefaultColors] = color_palette_panel_useGlobalSetting('color.palette.default', name);
+  const [baseDefaultColors] = color_palette_panel_useGlobalSetting('color.palette.default', name, 'base');
+  const [customColors, setCustomColors] = color_palette_panel_useGlobalSetting('color.palette.custom', name);
+  const [defaultPaletteEnabled] = color_palette_panel_useGlobalSetting('color.defaultPalette', name);
+  const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<');
+  const popoverProps = isMobileViewport ? mobilePopoverProps : undefined;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    className: "edit-site-global-styles-color-palette-panel",
+    spacing: 8,
+    children: [!!themeColors && !!themeColors.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
+      canReset: themeColors !== baseThemeColors,
+      canOnlyChangeValues: true,
+      colors: themeColors,
+      onChange: setThemeColors,
+      paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme'),
+      paletteLabelHeadingLevel: 3,
+      popoverProps: popoverProps
+    }), !!defaultColors && !!defaultColors.length && !!defaultPaletteEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
+      canReset: defaultColors !== baseDefaultColors,
+      canOnlyChangeValues: true,
+      colors: defaultColors,
+      onChange: setDefaultColors,
+      paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default'),
+      paletteLabelHeadingLevel: 3,
+      popoverProps: popoverProps
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
+      colors: customColors,
+      onChange: setCustomColors,
+      paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'),
+      paletteLabelHeadingLevel: 3,
+      slugPrefix: "custom-",
+      popoverProps: popoverProps
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColorVariations, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Palettes')
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/gradients-palette-panel.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  useGlobalSetting: gradients_palette_panel_useGlobalSetting
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const gradients_palette_panel_mobilePopoverProps = {
+  placement: 'bottom-start',
+  offset: 8
+};
+const noop = () => {};
+function GradientPalettePanel({
+  name
+}) {
+  const [themeGradients, setThemeGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.theme', name);
+  const [baseThemeGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.theme', name, 'base');
+  const [defaultGradients, setDefaultGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.default', name);
+  const [baseDefaultGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.default', name, 'base');
+  const [customGradients, setCustomGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.custom', name);
+  const [defaultPaletteEnabled] = gradients_palette_panel_useGlobalSetting('color.defaultGradients', name);
+  const [customDuotone] = gradients_palette_panel_useGlobalSetting('color.duotone.custom') || [];
+  const [defaultDuotone] = gradients_palette_panel_useGlobalSetting('color.duotone.default') || [];
+  const [themeDuotone] = gradients_palette_panel_useGlobalSetting('color.duotone.theme') || [];
+  const [defaultDuotoneEnabled] = gradients_palette_panel_useGlobalSetting('color.defaultDuotone');
+  const duotonePalette = [...(customDuotone || []), ...(themeDuotone || []), ...(defaultDuotone && defaultDuotoneEnabled ? defaultDuotone : [])];
+  const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<');
+  const popoverProps = isMobileViewport ? gradients_palette_panel_mobilePopoverProps : undefined;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    className: "edit-site-global-styles-gradient-palette-panel",
+    spacing: 8,
+    children: [!!themeGradients && !!themeGradients.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
+      canReset: themeGradients !== baseThemeGradients,
+      canOnlyChangeValues: true,
+      gradients: themeGradients,
+      onChange: setThemeGradients,
+      paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme'),
+      paletteLabelHeadingLevel: 3,
+      popoverProps: popoverProps
+    }), !!defaultGradients && !!defaultGradients.length && !!defaultPaletteEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
+      canReset: defaultGradients !== baseDefaultGradients,
+      canOnlyChangeValues: true,
+      gradients: defaultGradients,
+      onChange: setDefaultGradients,
+      paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default'),
+      paletteLabelLevel: 3,
+      popoverProps: popoverProps
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
+      gradients: customGradients,
+      onChange: setCustomGradients,
+      paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'),
+      paletteLabelLevel: 3,
+      slugPrefix: "custom-",
+      popoverProps: popoverProps
+    }), !!duotonePalette && !!duotonePalette.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
+        level: 3,
+        children: (0,external_wp_i18n_namespaceObject.__)('Duotone')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+        margin: 3
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DuotonePicker, {
+        duotonePalette: duotonePalette,
+        disableCustomDuotone: true,
+        disableCustomColors: true,
+        clearable: false,
+        onChange: noop
+      })]
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-color-palette.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  Tabs: screen_color_palette_Tabs
+} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function ScreenColorPalette({
+  name
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Edit palette'),
+      description: (0,external_wp_i18n_namespaceObject.__)('The combination of colors used across the site and in color pickers.')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(screen_color_palette_Tabs, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(screen_color_palette_Tabs.TabList, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.Tab, {
+          tabId: "color",
+          children: (0,external_wp_i18n_namespaceObject.__)('Color')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.Tab, {
+          tabId: "gradient",
+          children: (0,external_wp_i18n_namespaceObject.__)('Gradient')
+        })]
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.TabPanel, {
+        tabId: "color",
+        focusable: false,
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColorPalettePanel, {
+          name: name
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.TabPanel, {
+        tabId: "gradient",
+        focusable: false,
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GradientPalettePanel, {
+          name: name
+        })
+      })]
+    })]
+  });
+}
+/* harmony default export */ const screen_color_palette = (ScreenColorPalette);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plus.js
+/**
+ * WordPress dependencies
+ */
+
+
+const plus = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z"
+  })
+});
+/* harmony default export */ const library_plus = (plus);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/shadows-panel.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+const {
+  useGlobalSetting: shadows_panel_useGlobalSetting
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const defaultShadow = '6px 6px 9px rgba(0, 0, 0, 0.2)';
+function ShadowsPanel() {
+  const [defaultShadows] = shadows_panel_useGlobalSetting('shadow.presets.default');
+  const [defaultShadowsEnabled] = shadows_panel_useGlobalSetting('shadow.defaultPresets');
+  const [themeShadows] = shadows_panel_useGlobalSetting('shadow.presets.theme');
+  const [customShadows, setCustomShadows] = shadows_panel_useGlobalSetting('shadow.presets.custom');
+  const onCreateShadow = shadow => {
+    setCustomShadows([...(customShadows || []), shadow]);
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Shadows'),
+      description: (0,external_wp_i18n_namespaceObject.__)('Manage and create shadow styles for use across the site.')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-global-styles-screen",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+        className: "edit-site-global-styles__shadows-panel",
+        spacing: 7,
+        children: [defaultShadowsEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowList, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Default'),
+          shadows: defaultShadows || [],
+          category: "default"
+        }), themeShadows && themeShadows.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowList, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Theme'),
+          shadows: themeShadows || [],
+          category: "theme"
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowList, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Custom'),
+          shadows: customShadows || [],
+          category: "custom",
+          canCreate: true,
+          onCreate: onCreateShadow
+        })]
+      })
+    })]
+  });
+}
+function ShadowList({
+  label,
+  shadows,
+  category,
+  canCreate,
+  onCreate
+}) {
+  const handleAddShadow = () => {
+    const newIndex = getNewIndexFromPresets(shadows, 'shadow-');
+    onCreate({
+      name: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: is an index for a preset */
+      (0,external_wp_i18n_namespaceObject.__)('Shadow %s'), newIndex),
+      shadow: defaultShadow,
+      slug: `shadow-${newIndex}`
+    });
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    spacing: 2,
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "space-between",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
+        align: "center",
+        className: "edit-site-global-styles__shadows-panel__title",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
+          level: 3,
+          children: label
+        })
+      }), canCreate && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        className: "edit-site-global-styles__shadows-panel__options-container",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          size: "small",
+          icon: library_plus,
+          label: (0,external_wp_i18n_namespaceObject.__)('Add shadow'),
+          onClick: () => {
+            handleAddShadow();
+          }
+        })
+      })]
+    }), shadows.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+      isBordered: true,
+      isSeparated: true,
+      children: shadows.map(shadow => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowItem, {
+        shadow: shadow,
+        category: category
+      }, shadow.slug))
+    })]
+  });
+}
+function ShadowItem({
+  shadow,
+  category
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
+    path: `/shadows/edit/${category}/${shadow.slug}`,
+    "aria-label":
+    // translators: %s: name of the shadow
+    (0,external_wp_i18n_namespaceObject.sprintf)('Edit shadow %s', shadow.name),
+    icon: library_shadow,
+    children: shadow.name
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/reset.js
+/**
+ * WordPress dependencies
+ */
+
+
+const reset_reset = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M7 11.5h10V13H7z"
+  })
+});
+/* harmony default export */ const library_reset = (reset_reset);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/shadow-utils.js
+const CUSTOM_VALUE_SETTINGS = {
+  px: {
+    max: 20,
+    step: 1
+  },
+  '%': {
+    max: 100,
+    step: 1
+  },
+  vw: {
+    max: 100,
+    step: 1
+  },
+  vh: {
+    max: 100,
+    step: 1
+  },
+  em: {
+    max: 10,
+    step: 0.1
+  },
+  rm: {
+    max: 10,
+    step: 0.1
+  },
+  svw: {
+    max: 100,
+    step: 1
+  },
+  lvw: {
+    max: 100,
+    step: 1
+  },
+  dvw: {
+    max: 100,
+    step: 1
+  },
+  svh: {
+    max: 100,
+    step: 1
+  },
+  lvh: {
+    max: 100,
+    step: 1
+  },
+  dvh: {
+    max: 100,
+    step: 1
+  },
+  vi: {
+    max: 100,
+    step: 1
+  },
+  svi: {
+    max: 100,
+    step: 1
+  },
+  lvi: {
+    max: 100,
+    step: 1
+  },
+  dvi: {
+    max: 100,
+    step: 1
+  },
+  vb: {
+    max: 100,
+    step: 1
+  },
+  svb: {
+    max: 100,
+    step: 1
+  },
+  lvb: {
+    max: 100,
+    step: 1
+  },
+  dvb: {
+    max: 100,
+    step: 1
+  },
+  vmin: {
+    max: 100,
+    step: 1
+  },
+  svmin: {
+    max: 100,
+    step: 1
+  },
+  lvmin: {
+    max: 100,
+    step: 1
+  },
+  dvmin: {
+    max: 100,
+    step: 1
+  },
+  vmax: {
+    max: 100,
+    step: 1
+  },
+  svmax: {
+    max: 100,
+    step: 1
+  },
+  lvmax: {
+    max: 100,
+    step: 1
+  },
+  dvmax: {
+    max: 100,
+    step: 1
+  }
+};
+function getShadowParts(shadow) {
+  const shadowValues = shadow.match(/(?:[^,(]|\([^)]*\))+/g) || [];
+  return shadowValues.map(value => value.trim());
+}
+function shadowStringToObject(shadowValue) {
+  /*
+   * Shadow spec: https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow
+   * Shadow string format: <offset-x> <offset-y> <blur-radius> <spread-radius> <color> [inset]
+   *
+   * A shadow to be valid it must satisfy the following.
+   *
+   * 1. Should not contain "none" keyword.
+   * 2. Values x, y, blur, spread should be in the order. Color and inset can be anywhere in the string except in between x, y, blur, spread values.
+   * 3. Should not contain more than one set of x, y, blur, spread values.
+   * 4. Should contain at least x and y values. Others are optional.
+   * 5. Should not contain more than one "inset" (case insensitive) keyword.
+   * 6. Should not contain more than one color value.
+   */
+
+  const defaultShadow = {
+    x: '0',
+    y: '0',
+    blur: '0',
+    spread: '0',
+    color: '#000',
+    inset: false
+  };
+  if (!shadowValue) {
+    return defaultShadow;
+  }
+
+  // Rule 1: Should not contain "none" keyword.
+  // if the shadow has "none" keyword, it is not a valid shadow string
+  if (shadowValue.includes('none')) {
+    return defaultShadow;
+  }
+
+  // Rule 2: Values x, y, blur, spread should be in the order.
+  //		   Color and inset can be anywhere in the string except in between x, y, blur, spread values.
+  // Extract length values (x, y, blur, spread) from shadow string
+  // Regex match groups of 1 to 4 length values.
+  const lengthsRegex = /((?:^|\s+)(-?\d*\.?\d+(?:px|%|in|cm|mm|em|rem|ex|pt|pc|vh|vw|vmin|vmax|ch|lh)?)(?=\s|$)(?![^(]*\))){1,4}/g;
+  const matches = shadowValue.match(lengthsRegex) || [];
+
+  // Rule 3: Should not contain more than one set of x, y, blur, spread values.
+  // if the string doesn't contain exactly 1 set of x, y, blur, spread values,
+  // it is not a valid shadow string
+  if (matches.length !== 1) {
+    return defaultShadow;
+  }
+
+  // Extract length values (x, y, blur, spread) from shadow string
+  const lengths = matches[0].split(' ').map(value => value.trim()).filter(value => value);
+
+  // Rule 4: Should contain at least x and y values. Others are optional.
+  if (lengths.length < 2) {
+    return defaultShadow;
+  }
+
+  // Rule 5: Should not contain more than one "inset" (case insensitive) keyword.
+  // check if the shadow string contains "inset" keyword
+  const insets = shadowValue.match(/inset/gi) || [];
+  if (insets.length > 1) {
+    return defaultShadow;
+  }
+
+  // Strip lengths and inset from shadow string, leaving just color.
+  const hasInset = insets.length === 1;
+  let colorString = shadowValue.replace(lengthsRegex, '').trim();
+  if (hasInset) {
+    colorString = colorString.replace('inset', '').replace('INSET', '').trim();
+  }
+
+  // Rule 6: Should not contain more than one color value.
+  // validate color string with regular expression
+  // check if color has matching hex, rgb or hsl values
+  const colorRegex = /^#([0-9a-f]{3}){1,2}$|^#([0-9a-f]{4}){1,2}$|^(?:rgb|hsl)a?\(?[\d*\.?\d+%?,?\/?\s]*\)$/gi;
+  let colorMatches = (colorString.match(colorRegex) || []).map(value => value?.trim()).filter(value => value);
+
+  // If color string has more than one color values, it is not a valid
+  if (colorMatches.length > 1) {
+    return defaultShadow;
+  } else if (colorMatches.length === 0) {
+    // check if color string has multiple named color values separated by space
+    colorMatches = colorString.trim().split(' ').filter(value => value);
+    // If color string has more than one color values, it is not a valid
+    if (colorMatches.length > 1) {
+      return defaultShadow;
+    }
+  }
+
+  // Return parsed shadow object.
+  const [x, y, blur, spread] = lengths;
+  return {
+    x,
+    y,
+    blur: blur || defaultShadow.blur,
+    spread: spread || defaultShadow.spread,
+    inset: hasInset,
+    color: colorString || defaultShadow.color
+  };
+}
+function shadowObjectToString(shadowObj) {
+  const shadowString = `${shadowObj.x || '0px'} ${shadowObj.y || '0px'} ${shadowObj.blur || '0px'} ${shadowObj.spread || '0px'}`;
+  return `${shadowObj.inset ? 'inset' : ''} ${shadowString} ${shadowObj.color || ''}`.trim();
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/shadows-edit-panel.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+const {
+  useGlobalSetting: shadows_edit_panel_useGlobalSetting
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const {
+  DropdownMenuV2: DropdownMenu,
+  DropdownMenuItemV2: DropdownMenuItem,
+  DropdownMenuItemLabelV2: DropdownMenuItemLabel
+} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+const customShadowMenuItems = [{
+  label: (0,external_wp_i18n_namespaceObject.__)('Rename'),
+  action: 'rename'
+}, {
+  label: (0,external_wp_i18n_namespaceObject.__)('Delete'),
+  action: 'delete'
+}];
+const presetShadowMenuItems = [{
+  label: (0,external_wp_i18n_namespaceObject.__)('Reset'),
+  action: 'reset'
+}];
+function ShadowsEditPanel() {
+  const {
+    params: {
+      category,
+      slug
+    },
+    goTo
+  } = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)();
+  const [shadows, setShadows] = shadows_edit_panel_useGlobalSetting(`shadow.presets.${category}`);
+  const [baseShadows] = shadows_edit_panel_useGlobalSetting(`shadow.presets.${category}`, undefined, 'base');
+  const [selectedShadow, setSelectedShadow] = (0,external_wp_element_namespaceObject.useState)(() => (shadows || []).find(shadow => shadow.slug === slug));
+  const baseSelectedShadow = (0,external_wp_element_namespaceObject.useMemo)(() => (baseShadows || []).find(b => b.slug === slug), [baseShadows, slug]);
+  const [isConfirmDialogVisible, setIsConfirmDialogVisible] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [isRenameModalVisible, setIsRenameModalVisible] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [shadowName, setShadowName] = (0,external_wp_element_namespaceObject.useState)(selectedShadow.name);
+  const onShadowChange = shadow => {
+    setSelectedShadow({
+      ...selectedShadow,
+      shadow
+    });
+    const updatedShadows = shadows.map(s => s.slug === slug ? {
+      ...selectedShadow,
+      shadow
+    } : s);
+    setShadows(updatedShadows);
+  };
+  const onMenuClick = action => {
+    if (action === 'reset') {
+      const updatedShadows = shadows.map(s => s.slug === slug ? baseSelectedShadow : s);
+      setSelectedShadow(baseSelectedShadow);
+      setShadows(updatedShadows);
+    } else if (action === 'delete') {
+      setIsConfirmDialogVisible(true);
+    } else if (action === 'rename') {
+      setIsRenameModalVisible(true);
+    }
+  };
+  const handleShadowDelete = () => {
+    const updatedShadows = shadows.filter(s => s.slug !== slug);
+    setShadows(updatedShadows);
+    goTo(`/shadows`);
+  };
+  const handleShadowRename = newName => {
+    if (!newName) {
+      return;
+    }
+    const updatedShadows = shadows.map(s => s.slug === slug ? {
+      ...selectedShadow,
+      name: newName
+    } : s);
+    setSelectedShadow({
+      ...selectedShadow,
+      name: newName
+    });
+    setShadows(updatedShadows);
+  };
+  return !selectedShadow ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+    title: ""
+  }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "space-between",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+        title: selectedShadow.name
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+          marginTop: 2,
+          marginBottom: 0,
+          paddingX: 4,
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenu, {
+            trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+              size: "small",
+              icon: more_vertical,
+              label: (0,external_wp_i18n_namespaceObject.__)('Menu')
+            }),
+            children: (category === 'custom' ? customShadowMenuItems : presetShadowMenuItems).map(item => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuItem, {
+              onClick: () => onMenuClick(item.action),
+              disabled: item.action === 'reset' && selectedShadow.shadow === baseSelectedShadow.shadow,
+              children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuItemLabel, {
+                children: item.label
+              })
+            }, item.action))
+          })
+        })
+      })]
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+      className: "edit-site-global-styles-screen",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowsPreview, {
+        shadow: selectedShadow.shadow
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowEditor, {
+        shadow: selectedShadow.shadow,
+        onChange: onShadowChange
+      })]
+    }), isConfirmDialogVisible && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
+      isOpen: true,
+      onConfirm: () => {
+        handleShadowDelete();
+        setIsConfirmDialogVisible(false);
+      },
+      onCancel: () => {
+        setIsConfirmDialogVisible(false);
+      },
+      confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'),
+      size: "medium",
+      children: (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: name of the shadow
+      'Are you sure you want to delete "%s"?', selectedShadow.name)
+    }), isRenameModalVisible && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Rename'),
+      onRequestClose: () => setIsRenameModalVisible(false),
+      size: "small",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("form", {
+        onSubmit: event => {
+          event.preventDefault();
+          handleShadowRename(shadowName);
+          setIsRenameModalVisible(false);
+        },
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalInputControl, {
+          autoComplete: "off",
+          label: (0,external_wp_i18n_namespaceObject.__)('Name'),
+          placeholder: (0,external_wp_i18n_namespaceObject.__)('Shadow name'),
+          value: shadowName,
+          onChange: value => setShadowName(value)
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+          marginBottom: 6
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+          className: "block-editor-shadow-edit-modal__actions",
+          justify: "flex-end",
+          expanded: false,
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+              variant: "tertiary",
+              onClick: () => setIsRenameModalVisible(false),
+              children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
+            })
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+              variant: "primary",
+              type: "submit",
+              children: (0,external_wp_i18n_namespaceObject.__)('Save')
+            })
+          })]
+        })]
+      })
+    })]
+  });
+}
+function ShadowsPreview({
+  shadow
+}) {
+  const shadowStyle = {
+    boxShadow: shadow
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
+    marginBottom: 4,
+    marginTop: -2,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+      align: "center",
+      justify: "center",
+      className: "edit-site-global-styles__shadow-preview-panel",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: "edit-site-global-styles__shadow-preview-block",
+        style: shadowStyle
+      })
+    })
+  });
+}
+function ShadowEditor({
+  shadow,
+  onChange
+}) {
+  const shadowParts = (0,external_wp_element_namespaceObject.useMemo)(() => getShadowParts(shadow), [shadow]);
+  const onChangeShadowPart = (index, part) => {
+    shadowParts[index] = part;
+    onChange(shadowParts.join(', '));
+  };
+  const onAddShadowPart = () => {
+    shadowParts.push(defaultShadow);
+    onChange(shadowParts.join(', '));
+  };
+  const onRemoveShadowPart = index => {
+    shadowParts.splice(index, 1);
+    onChange(shadowParts.join(', '));
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
+      spacing: 2,
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        justify: "space-between",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
+          align: "center",
+          className: "edit-site-global-styles__shadows-panel__title",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
+            level: 3,
+            children: (0,external_wp_i18n_namespaceObject.__)('Shadows')
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+          className: "edit-site-global-styles__shadows-panel__options-container",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            size: "small",
+            icon: library_plus,
+            label: (0,external_wp_i18n_namespaceObject.__)('Add shadow'),
+            onClick: () => {
+              onAddShadowPart();
+            }
+          })
+        })]
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+      isBordered: true,
+      isSeparated: true,
+      children: shadowParts.map((part, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_edit_panel_ShadowItem, {
+        shadow: part,
+        onChange: value => onChangeShadowPart(index, value),
+        canRemove: shadowParts.length > 1,
+        onRemove: () => onRemoveShadowPart(index)
+      }, index))
+    })]
+  });
+}
+function shadows_edit_panel_ShadowItem({
+  shadow,
+  onChange,
+  canRemove,
+  onRemove
+}) {
+  const popoverProps = {
+    placement: 'left-start',
+    offset: 36,
+    shift: true
+  };
+  const shadowObj = (0,external_wp_element_namespaceObject.useMemo)(() => shadowStringToObject(shadow), [shadow]);
+  const onShadowChange = newShadow => {
+    onChange(shadowObjectToString(newShadow));
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, {
+    popoverProps: popoverProps,
+    className: "edit-site-global-styles__shadow-editor__dropdown",
+    renderToggle: ({
+      onToggle,
+      isOpen
+    }) => {
+      const toggleProps = {
+        onClick: onToggle,
+        className: dist_clsx('edit-site-global-styles__shadow-editor__dropdown-toggle', {
+          'is-open': isOpen
+        }),
+        'aria-expanded': isOpen
+      };
+      const removeButtonProps = {
+        onClick: onRemove,
+        className: dist_clsx('edit-site-global-styles__shadow-editor__remove-button', {
+          'is-open': isOpen
+        }),
+        label: (0,external_wp_i18n_namespaceObject.__)('Remove shadow')
+      };
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        align: "center",
+        justify: "flex-start",
+        spacing: 0,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+          style: {
+            flexGrow: 1
+          },
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            icon: library_shadow,
+            ...toggleProps,
+            children: shadowObj.inset ? (0,external_wp_i18n_namespaceObject.__)('Inner shadow') : (0,external_wp_i18n_namespaceObject.__)('Drop shadow')
+          })
+        }), canRemove && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            icon: library_reset,
+            ...removeButtonProps
+          })
+        })]
+      });
+    },
+    renderContent: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalDropdownContentWrapper, {
+      paddingSize: "none",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: "edit-site-global-styles__shadow-editor__dropdown-content",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowPopover, {
+          shadowObj: shadowObj,
+          onChange: onShadowChange
+        })
+      })
+    })
+  });
+}
+function ShadowPopover({
+  shadowObj,
+  onChange
+}) {
+  const __experimentalIsRenderedInSidebar = true;
+  const enableAlpha = true;
+  const onShadowChange = (key, value) => {
+    const newShadow = {
+      ...shadowObj,
+      [key]: value
+    };
+    onChange(newShadow);
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    className: "edit-site-global-styles__shadow-editor-panel",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+      spacing: 2,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+        level: 5,
+        children: (0,external_wp_i18n_namespaceObject.__)('Shadow')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: "edit-site-global-styles__shadow-editor-color-palette",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ColorPalette, {
+          clearable: false,
+          enableAlpha: enableAlpha,
+          __experimentalIsRenderedInSidebar: __experimentalIsRenderedInSidebar,
+          value: shadowObj.color,
+          onChange: value => onShadowChange('color', value)
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, {
+        value: shadowObj.inset ? 'inset' : 'outset',
+        isBlock: true,
+        onChange: value => onShadowChange('inset', value === 'inset'),
+        hideLabelFromVision: true,
+        __next40pxDefaultSize: true,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
+          value: "outset",
+          label: (0,external_wp_i18n_namespaceObject.__)('Outset')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
+          value: "inset",
+          label: (0,external_wp_i18n_namespaceObject.__)('Inset')
+        })]
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalGrid, {
+        columns: 2,
+        gap: 4,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, {
+          label: (0,external_wp_i18n_namespaceObject.__)('X Position'),
+          value: shadowObj.x,
+          hasNegativeRange: true,
+          onChange: value => onShadowChange('x', value)
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Y Position'),
+          value: shadowObj.y,
+          hasNegativeRange: true,
+          onChange: value => onShadowChange('y', value)
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Blur'),
+          value: shadowObj.blur,
+          onChange: value => onShadowChange('blur', value)
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Spread'),
+          value: shadowObj.spread,
+          hasNegativeRange: true,
+          onChange: value => onShadowChange('spread', value)
+        })]
+      })]
+    })
+  });
+}
+function ShadowInputControl({
+  label,
+  value,
+  onChange,
+  hasNegativeRange
+}) {
+  var _CUSTOM_VALUE_SETTING, _CUSTOM_VALUE_SETTING2, _CUSTOM_VALUE_SETTING3;
+  const [isCustomInput, setIsCustomInput] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [parsedQuantity, parsedUnit] = (0,external_wp_components_namespaceObject.__experimentalParseQuantityAndUnitFromRawValue)(value);
+  const sliderOnChange = next => {
+    onChange(next !== undefined ? [next, parsedUnit || 'px'].join('') : '0px');
+  };
+  const onValueChange = next => {
+    const isNumeric = next !== undefined && !isNaN(parseFloat(next));
+    const nextValue = isNumeric ? next : '0px';
+    onChange(nextValue);
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    justify: "flex-start",
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "space-between",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
+        children: label
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        label: (0,external_wp_i18n_namespaceObject.__)('Use custom size'),
+        icon: library_settings,
+        onClick: () => {
+          setIsCustomInput(!isCustomInput);
+        },
+        isPressed: isCustomInput,
+        size: "small"
+      })]
+    }), isCustomInput ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, {
+      label: label,
+      hideLabelFromVision: true,
+      __next40pxDefaultSize: true,
+      value: value,
+      onChange: onValueChange
+    }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, {
+      value: parsedQuantity !== null && parsedQuantity !== void 0 ? parsedQuantity : 0,
+      onChange: sliderOnChange,
+      withInputField: false,
+      __next40pxDefaultSize: true,
+      __nextHasNoMarginBottom: true,
+      min: hasNegativeRange ? -((_CUSTOM_VALUE_SETTING = CUSTOM_VALUE_SETTINGS[parsedUnit !== null && parsedUnit !== void 0 ? parsedUnit : 'px']?.max) !== null && _CUSTOM_VALUE_SETTING !== void 0 ? _CUSTOM_VALUE_SETTING : 10) : 0,
+      max: (_CUSTOM_VALUE_SETTING2 = CUSTOM_VALUE_SETTINGS[parsedUnit !== null && parsedUnit !== void 0 ? parsedUnit : 'px']?.max) !== null && _CUSTOM_VALUE_SETTING2 !== void 0 ? _CUSTOM_VALUE_SETTING2 : 10,
+      step: (_CUSTOM_VALUE_SETTING3 = CUSTOM_VALUE_SETTINGS[parsedUnit !== null && parsedUnit !== void 0 ? parsedUnit : 'px']?.step) !== null && _CUSTOM_VALUE_SETTING3 !== void 0 ? _CUSTOM_VALUE_SETTING3 : 0.1
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-shadows.js
+/**
+ * Internal dependencies
+ */
+
+
+
+function ScreenShadows() {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowsPanel, {});
+}
+function ScreenShadowsEdit() {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowsEditPanel, {});
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/dimensions-panel.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  useGlobalStyle: dimensions_panel_useGlobalStyle,
+  useGlobalSetting: dimensions_panel_useGlobalSetting,
+  useSettingsForBlockElement: dimensions_panel_useSettingsForBlockElement,
+  DimensionsPanel: dimensions_panel_StylesDimensionsPanel
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const DEFAULT_CONTROLS = {
+  contentSize: true,
+  wideSize: true,
+  padding: true,
+  margin: true,
+  blockGap: true,
+  minHeight: true,
+  childLayout: false
+};
+function DimensionsPanel() {
+  const [style] = dimensions_panel_useGlobalStyle('', undefined, 'user', {
+    shouldDecodeEncode: false
+  });
+  const [inheritedStyle, setStyle] = dimensions_panel_useGlobalStyle('', undefined, 'all', {
+    shouldDecodeEncode: false
+  });
+  const [userSettings] = dimensions_panel_useGlobalSetting('', undefined, 'user');
+  const [rawSettings, setSettings] = dimensions_panel_useGlobalSetting('');
+  const settings = dimensions_panel_useSettingsForBlockElement(rawSettings);
+
+  // These intermediary objects are needed because the "layout" property is stored
+  // in settings rather than styles.
+  const inheritedStyleWithLayout = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return {
+      ...inheritedStyle,
+      layout: settings.layout
+    };
+  }, [inheritedStyle, settings.layout]);
+  const styleWithLayout = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return {
+      ...style,
+      layout: userSettings.layout
+    };
+  }, [style, userSettings.layout]);
+  const onChange = newStyle => {
+    const updatedStyle = {
+      ...newStyle
+    };
+    delete updatedStyle.layout;
+    setStyle(updatedStyle);
+    if (newStyle.layout !== userSettings.layout) {
+      const updatedSettings = {
+        ...userSettings,
+        layout: newStyle.layout
+      };
+
+      // Ensure any changes to layout definitions are not persisted.
+      if (updatedSettings.layout?.definitions) {
+        delete updatedSettings.layout.definitions;
+      }
+      setSettings(updatedSettings);
+    }
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dimensions_panel_StylesDimensionsPanel, {
+    inheritedValue: inheritedStyleWithLayout,
+    value: styleWithLayout,
+    onChange: onChange,
+    settings: settings,
+    includeLayoutControls: true,
+    defaultControls: DEFAULT_CONTROLS
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/background-panel.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+// Initial control values where no block style is set.
+
+const BACKGROUND_DEFAULT_VALUES = {
+  backgroundSize: 'auto'
+};
+const {
+  useGlobalStyle: background_panel_useGlobalStyle,
+  useGlobalSetting: background_panel_useGlobalSetting,
+  useGlobalStyleLinks,
+  BackgroundPanel: StylesBackgroundPanel
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+
+/**
+ * Checks if there is a current value in the background image block support
+ * attributes.
+ *
+ * @param {Object} style Style attribute.
+ * @return {boolean}     Whether the block has a background image value set.
+ */
+function hasBackgroundImageValue(style) {
+  return !!style?.background?.backgroundImage?.id || !!style?.background?.backgroundImage?.url || typeof style?.background?.backgroundImage === 'string';
+}
+function BackgroundPanel() {
+  const [style] = background_panel_useGlobalStyle('', undefined, 'user', {
+    shouldDecodeEncode: false
+  });
+  const [inheritedStyle, setStyle] = background_panel_useGlobalStyle('', undefined, 'all', {
+    shouldDecodeEncode: false
+  });
+  const _links = useGlobalStyleLinks();
+  const [settings] = background_panel_useGlobalSetting('');
+  const defaultControls = {
+    backgroundImage: true,
+    backgroundSize: hasBackgroundImageValue(style) || hasBackgroundImageValue(inheritedStyle)
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesBackgroundPanel, {
+    inheritedValue: inheritedStyle,
+    value: style,
+    onChange: setStyle,
+    settings: settings,
+    defaultValues: BACKGROUND_DEFAULT_VALUES,
+    defaultControls: defaultControls,
+    themeFileURIs: _links?.['wp:theme-file']
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-layout.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  useHasBackgroundPanel,
+  useHasDimensionsPanel: screen_layout_useHasDimensionsPanel,
+  useGlobalSetting: screen_layout_useGlobalSetting,
+  useSettingsForBlockElement: screen_layout_useSettingsForBlockElement
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function ScreenLayout() {
+  const [rawSettings] = screen_layout_useGlobalSetting('');
+  const settings = screen_layout_useSettingsForBlockElement(rawSettings);
+  const hasDimensionsPanel = screen_layout_useHasDimensionsPanel(settings);
+  const hasBackgroundPanel = useHasBackgroundPanel(settings);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Layout')
+    }), hasDimensionsPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DimensionsPanel, {}), hasBackgroundPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BackgroundPanel, {})]
+  });
+}
+/* harmony default export */ const screen_layout = (ScreenLayout);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/style-variations-container.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  GlobalStylesContext: style_variations_container_GlobalStylesContext
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function StyleVariationsContainer({
+  gap = 2
+}) {
+  const {
+    user
+  } = (0,external_wp_element_namespaceObject.useContext)(style_variations_container_GlobalStylesContext);
+  const [currentUserStyles, setCurrentUserStyles] = (0,external_wp_element_namespaceObject.useState)(user);
+  const userStyles = currentUserStyles?.styles;
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    setCurrentUserStyles(user);
+  }, [user]);
+  const variations = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    return select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations();
+  }, []);
+
+  // Filter out variations that are of single property type, i.e. color or typography variations.
+  const multiplePropertyVariations = variations?.filter(variation => {
+    return !isVariationWithSingleProperty(variation, 'color') && !isVariationWithSingleProperty(variation, 'typography');
+  });
+  const themeVariations = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const withEmptyVariation = [{
+      title: (0,external_wp_i18n_namespaceObject.__)('Default'),
+      settings: {},
+      styles: {}
+    }, ...(multiplePropertyVariations !== null && multiplePropertyVariations !== void 0 ? multiplePropertyVariations : [])];
+    return [...withEmptyVariation.map(variation => {
+      var _variation$settings;
+      const blockStyles = {
+        ...variation?.styles?.blocks
+      } || {};
+
+      // We need to copy any user custom CSS to the variation to prevent it being lost
+      // when switching variations.
+      if (userStyles?.blocks) {
+        Object.keys(userStyles.blocks).forEach(blockName => {
+          // First get any block specific custom CSS from the current user styles and merge with any custom CSS for
+          // that block in the variation.
+          if (userStyles.blocks[blockName].css) {
+            const variationBlockStyles = blockStyles[blockName] || {};
+            const customCSS = {
+              css: `${blockStyles[blockName]?.css || ''} ${userStyles.blocks[blockName].css.trim() || ''}`
+            };
+            blockStyles[blockName] = {
+              ...variationBlockStyles,
+              ...customCSS
+            };
+          }
+        });
+      }
+      // Now merge any global custom CSS from current user styles with global custom CSS in the variation.
+      const css = userStyles?.css || variation.styles?.css ? {
+        css: `${variation.styles?.css || ''} ${userStyles?.css || ''}`
+      } : {};
+      const blocks = Object.keys(blockStyles).length > 0 ? {
+        blocks: blockStyles
+      } : {};
+      const styles = {
+        ...variation.styles,
+        ...css,
+        ...blocks
+      };
+      return {
+        ...variation,
+        settings: (_variation$settings = variation.settings) !== null && _variation$settings !== void 0 ? _variation$settings : {},
+        styles
+      };
+    })];
+  }, [multiplePropertyVariations, userStyles?.blocks, userStyles?.css]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
+    columns: 2,
+    className: "edit-site-global-styles-style-variations-container",
+    gap: gap,
+    children: themeVariations.map((variation, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Variation, {
+      variation: variation,
+      children: isFocused => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(preview_styles, {
+        label: variation?.title,
+        withHoverView: true,
+        isFocused: isFocused,
+        variation: variation
+      })
+    }, index))
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-style-variations.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+function ScreenStyleVariations() {
+  // Move to zoom out mode when this component is mounted
+  // and back to the previous mode when unmounted.
+  (0,external_wp_blockEditor_namespaceObject.useZoomOut)();
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Browse styles'),
+      description: (0,external_wp_i18n_namespaceObject.__)('Choose a variation to change the look of the site.')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Card, {
+      size: "small",
+      isBorderless: true,
+      className: "edit-site-global-styles-screen-style-variations",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardBody, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleVariationsContainer, {})
+      })
+    })]
+  });
+}
+/* harmony default export */ const screen_style_variations = (ScreenStyleVariations);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close-small.js
+/**
+ * WordPress dependencies
+ */
+
+
+const closeSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"
+  })
+});
+/* harmony default export */ const close_small = (closeSmall);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor-canvas-container/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  EditorContentSlotFill,
+  ResizableEditor
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+
+/**
+ * Returns a translated string for the title of the editor canvas container.
+ *
+ * @param {string} view Editor canvas container view.
+ *
+ * @return {string} Translated string corresponding to value of view. Default is ''.
+ */
+function getEditorCanvasContainerTitle(view) {
+  switch (view) {
+    case 'style-book':
+      return (0,external_wp_i18n_namespaceObject.__)('Style Book');
+    case 'global-styles-revisions':
+    case 'global-styles-revisions:style-book':
+      return (0,external_wp_i18n_namespaceObject.__)('Style Revisions');
+    default:
+      return '';
+  }
+}
+function EditorCanvasContainer({
+  children,
+  closeButtonLabel,
+  onClose,
+  enableResizing = false
+}) {
+  const {
+    editorCanvasContainerView,
+    showListViewByDefault
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const _editorCanvasContainerView = lock_unlock_unlock(select(store)).getEditorCanvasContainerView();
+    const _showListViewByDefault = select(external_wp_preferences_namespaceObject.store).get('core', 'showListViewByDefault');
+    return {
+      editorCanvasContainerView: _editorCanvasContainerView,
+      showListViewByDefault: _showListViewByDefault
+    };
+  }, []);
+  const [isClosed, setIsClosed] = (0,external_wp_element_namespaceObject.useState)(false);
+  const {
+    setEditorCanvasContainerView
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const {
+    setIsListViewOpened
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store);
+  const focusOnMountRef = (0,external_wp_compose_namespaceObject.useFocusOnMount)('firstElement');
+  const sectionFocusReturnRef = (0,external_wp_compose_namespaceObject.useFocusReturn)();
+  function onCloseContainer() {
+    setIsListViewOpened(showListViewByDefault);
+    setEditorCanvasContainerView(undefined);
+    setIsClosed(true);
+    if (typeof onClose === 'function') {
+      onClose();
+    }
+  }
+  function closeOnEscape(event) {
+    if (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE && !event.defaultPrevented) {
+      event.preventDefault();
+      onCloseContainer();
+    }
+  }
+  const childrenWithProps = Array.isArray(children) ? external_wp_element_namespaceObject.Children.map(children, (child, index) => index === 0 ? (0,external_wp_element_namespaceObject.cloneElement)(child, {
+    ref: sectionFocusReturnRef
+  }) : child) : (0,external_wp_element_namespaceObject.cloneElement)(children, {
+    ref: sectionFocusReturnRef
+  });
+  if (isClosed) {
+    return null;
+  }
+  const title = getEditorCanvasContainerTitle(editorCanvasContainerView);
+  const shouldShowCloseButton = onClose || closeButtonLabel;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditorContentSlotFill.Fill, {
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-editor-canvas-container",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableEditor, {
+        enableResizing: enableResizing,
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("section", {
+          className: "edit-site-editor-canvas-container__section",
+          ref: shouldShowCloseButton ? focusOnMountRef : null,
+          onKeyDown: closeOnEscape,
+          "aria-label": title,
+          children: [shouldShowCloseButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            className: "edit-site-editor-canvas-container__close-button",
+            icon: close_small,
+            label: closeButtonLabel || (0,external_wp_i18n_namespaceObject.__)('Close'),
+            onClick: onCloseContainer
+          }), childrenWithProps]
+        })
+      })
+    })
+  });
+}
+function useHasEditorCanvasContainer() {
+  const fills = (0,external_wp_components_namespaceObject.__experimentalUseSlotFills)(EditorContentSlotFill.privateKey);
+  return !!fills?.length;
+}
+/* harmony default export */ const editor_canvas_container = (EditorCanvasContainer);
+
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/style-book/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  ExperimentalBlockEditorProvider,
+  useGlobalStyle: style_book_useGlobalStyle,
+  GlobalStylesContext: style_book_GlobalStylesContext,
+  useGlobalStylesOutputWithConfig
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const {
+  mergeBaseAndUserConfigs: style_book_mergeBaseAndUserConfigs
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+const {
+  CompositeV2: Composite,
+  CompositeItemV2: CompositeItem,
+  useCompositeStoreV2: useCompositeStore,
+  Tabs: style_book_Tabs
+} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+
+// The content area of the Style Book is rendered within an iframe so that global styles
+// are applied to elements within the entire content area. To support elements that are
+// not part of the block previews, such as headings and layout for the block previews,
+// additional CSS rules need to be passed into the iframe. These are hard-coded below.
+// Note that button styles are unset, and then focus rules from the `Button` component are
+// applied to the `button` element, targeted via `.edit-site-style-book__example`.
+// This is to ensure that browser default styles for buttons are not applied to the previews.
+const STYLE_BOOK_IFRAME_STYLES = `
+	.edit-site-style-book__examples {
+		max-width: 900px;
+		margin: 0 auto;
+	}
+
+	.edit-site-style-book__example {
+		border-radius: 2px;
+		cursor: pointer;
+		display: flex;
+		flex-direction: column;
+		gap: 40px;
+		margin-bottom: 40px;
+		padding: 16px;
+		width: 100%;
+		box-sizing: border-box;
+		scroll-margin-top: 32px;
+		scroll-margin-bottom: 32px;
+	}
+
+	.edit-site-style-book__example.is-selected {
+		box-shadow: 0 0 0 1px var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));
+	}
+
+	.edit-site-style-book__example:focus:not(:disabled) {
+		box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));
+		outline: 3px solid transparent;
+	}
+
+	.edit-site-style-book__examples.is-wide .edit-site-style-book__example {
+		flex-direction: row;
+	}
+
+	.edit-site-style-book__example-title {
+		font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+		font-size: 11px;
+		font-weight: 500;
+		line-height: normal;
+		margin: 0;
+		text-align: left;
+		text-transform: uppercase;
+	}
+
+	.edit-site-style-book__examples.is-wide .edit-site-style-book__example-title {
+		text-align: right;
+		width: 120px;
+	}
+
+	.edit-site-style-book__example-preview {
+		width: 100%;
+	}
+
+	.edit-site-style-book__example-preview .block-editor-block-list__insertion-point,
+	.edit-site-style-book__example-preview .block-list-appender {
+		display: none;
+	}
+
+	.edit-site-style-book__example-preview .is-root-container > .wp-block:first-child {
+		margin-top: 0;
+	}
+	.edit-site-style-book__example-preview .is-root-container > .wp-block:last-child {
+		margin-bottom: 0;
+	}
+`;
+function isObjectEmpty(object) {
+  return !object || Object.keys(object).length === 0;
+}
+function getExamples() {
+  // Use our own example for the Heading block so that we can show multiple
+  // heading levels.
+  const headingsExample = {
+    name: 'core/heading',
+    title: (0,external_wp_i18n_namespaceObject.__)('Headings'),
+    category: 'text',
+    blocks: [(0,external_wp_blocks_namespaceObject.createBlock)('core/heading', {
+      content: (0,external_wp_i18n_namespaceObject.__)('Code Is Poetry'),
+      level: 1
+    }), (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', {
+      content: (0,external_wp_i18n_namespaceObject.__)('Code Is Poetry'),
+      level: 2
+    }), (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', {
+      content: (0,external_wp_i18n_namespaceObject.__)('Code Is Poetry'),
+      level: 3
+    }), (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', {
+      content: (0,external_wp_i18n_namespaceObject.__)('Code Is Poetry'),
+      level: 4
+    }), (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', {
+      content: (0,external_wp_i18n_namespaceObject.__)('Code Is Poetry'),
+      level: 5
+    })]
+  };
+  const otherExamples = (0,external_wp_blocks_namespaceObject.getBlockTypes)().filter(blockType => {
+    const {
+      name,
+      example,
+      supports
+    } = blockType;
+    return name !== 'core/heading' && !!example && supports.inserter !== false;
+  }).map(blockType => ({
+    name: blockType.name,
+    title: blockType.title,
+    category: blockType.category,
+    blocks: (0,external_wp_blocks_namespaceObject.getBlockFromExample)(blockType.name, blockType.example)
+  }));
+  return [headingsExample, ...otherExamples];
+}
+function StyleBook({
+  enableResizing = true,
+  isSelected,
+  onClick,
+  onSelect,
+  showCloseButton = true,
+  onClose,
+  showTabs = true,
+  userConfig = {}
+}) {
+  const [resizeObserver, sizes] = (0,external_wp_compose_namespaceObject.useResizeObserver)();
+  const [textColor] = style_book_useGlobalStyle('color.text');
+  const [backgroundColor] = style_book_useGlobalStyle('color.background');
+  const [examples] = (0,external_wp_element_namespaceObject.useState)(getExamples);
+  const tabs = (0,external_wp_element_namespaceObject.useMemo)(() => (0,external_wp_blocks_namespaceObject.getCategories)().filter(category => examples.some(example => example.category === category.slug)).map(category => ({
+    name: category.slug,
+    title: category.title,
+    icon: category.icon
+  })), [examples]);
+  const {
+    base: baseConfig
+  } = (0,external_wp_element_namespaceObject.useContext)(style_book_GlobalStylesContext);
+  const mergedConfig = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!isObjectEmpty(userConfig) && !isObjectEmpty(baseConfig)) {
+      return style_book_mergeBaseAndUserConfigs(baseConfig, userConfig);
+    }
+    return {};
+  }, [baseConfig, userConfig]);
+
+  // Copied from packages/edit-site/src/components/revisions/index.js
+  // could we create a shared hook?
+  const originalSettings = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings(), []);
+  const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({
+    ...originalSettings,
+    __unstableIsPreviewMode: true
+  }), [originalSettings]);
+  const [globalStyles] = useGlobalStylesOutputWithConfig(mergedConfig);
+  settings.styles = !isObjectEmpty(globalStyles) && !isObjectEmpty(userConfig) ? globalStyles : settings.styles;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(editor_canvas_container, {
+    onClose: onClose,
+    enableResizing: enableResizing,
+    closeButtonLabel: showCloseButton ? (0,external_wp_i18n_namespaceObject.__)('Close') : null,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+      className: dist_clsx('edit-site-style-book', {
+        'is-wide': sizes.width > 600,
+        'is-button': !!onClick
+      }),
+      style: {
+        color: textColor,
+        background: backgroundColor
+      },
+      children: [resizeObserver, showTabs ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: "edit-site-style-book__tabs",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(style_book_Tabs, {
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book_Tabs.TabList, {
+            children: tabs.map(tab => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book_Tabs.Tab, {
+              tabId: tab.name,
+              children: tab.title
+            }, tab.name))
+          }), tabs.map(tab => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book_Tabs.TabPanel, {
+            tabId: tab.name,
+            focusable: false,
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleBookBody, {
+              category: tab.name,
+              examples: examples,
+              isSelected: isSelected,
+              onSelect: onSelect,
+              settings: settings,
+              sizes: sizes,
+              title: tab.title
+            })
+          }, tab.name))]
+        })
+      }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleBookBody, {
+        examples: examples,
+        isSelected: isSelected,
+        onClick: onClick,
+        onSelect: onSelect,
+        settings: settings,
+        sizes: sizes
+      })]
+    })
+  });
+}
+const StyleBookBody = ({
+  category,
+  examples,
+  isSelected,
+  onClick,
+  onSelect,
+  settings,
+  sizes,
+  title
+}) => {
+  const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false);
+
+  // The presence of an `onClick` prop indicates that the Style Book is being used as a button.
+  // In this case, add additional props to the iframe to make it behave like a button.
+  const buttonModeProps = {
+    role: 'button',
+    onFocus: () => setIsFocused(true),
+    onBlur: () => setIsFocused(false),
+    onKeyDown: event => {
+      if (event.defaultPrevented) {
+        return;
+      }
+      const {
+        keyCode
+      } = event;
+      if (onClick && (keyCode === external_wp_keycodes_namespaceObject.ENTER || keyCode === external_wp_keycodes_namespaceObject.SPACE)) {
+        event.preventDefault();
+        onClick(event);
+      }
+    },
+    onClick: event => {
+      if (event.defaultPrevented) {
+        return;
+      }
+      if (onClick) {
+        event.preventDefault();
+        onClick(event);
+      }
+    },
+    readonly: true
+  };
+  const buttonModeStyles = onClick ? 'body { cursor: pointer; } body * { pointer-events: none; }' : '';
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.__unstableIframe, {
+    className: dist_clsx('edit-site-style-book__iframe', {
+      'is-focused': isFocused && !!onClick,
+      'is-button': !!onClick
+    }),
+    name: "style-book-canvas",
+    tabIndex: 0,
+    ...(onClick ? buttonModeProps : {}),
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, {
+      styles: settings.styles
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("style", {
+      children:
+      // Forming a "block formatting context" to prevent margin collapsing.
+      // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
+      `.is-root-container { display: flow-root; }
+						body { position: relative; padding: 32px !important; }` + STYLE_BOOK_IFRAME_STYLES + buttonModeStyles
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Examples, {
+      className: dist_clsx('edit-site-style-book__examples', {
+        'is-wide': sizes.width > 600
+      }),
+      examples: examples,
+      category: category,
+      label: title ? (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: Category of blocks, e.g. Text.
+      (0,external_wp_i18n_namespaceObject.__)('Examples of blocks in the %s category'), title) : (0,external_wp_i18n_namespaceObject.__)('Examples of blocks'),
+      isSelected: isSelected,
+      onSelect: onSelect
+    }, category)]
+  });
+};
+const Examples = (0,external_wp_element_namespaceObject.memo)(({
+  className,
+  examples,
+  category,
+  label,
+  isSelected,
+  onSelect
+}) => {
+  const compositeStore = useCompositeStore({
+    orientation: 'vertical'
+  });
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Composite, {
+    store: compositeStore,
+    className: className,
+    "aria-label": label,
+    role: "grid",
+    children: examples.filter(example => category ? example.category === category : true).map(example => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Example, {
+      id: `example-${example.name}`,
+      title: example.title,
+      blocks: example.blocks,
+      isSelected: isSelected(example.name),
+      onClick: () => {
+        onSelect?.(example.name);
+      }
+    }, example.name))
+  });
+});
+const Example = ({
+  id,
+  title,
+  blocks,
+  isSelected,
+  onClick
+}) => {
+  const originalSettings = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings(), []);
+  const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({
+    ...originalSettings,
+    focusMode: false,
+    // Disable "Spotlight mode".
+    __unstableIsPreviewMode: true
+  }), [originalSettings]);
+
+  // Cache the list of blocks to avoid additional processing when the component is re-rendered.
+  const renderedBlocks = (0,external_wp_element_namespaceObject.useMemo)(() => Array.isArray(blocks) ? blocks : [blocks], [blocks]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    role: "row",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      role: "gridcell",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(CompositeItem, {
+        className: dist_clsx('edit-site-style-book__example', {
+          'is-selected': isSelected
+        }),
+        id: id,
+        "aria-label": (0,external_wp_i18n_namespaceObject.sprintf)(
+        // translators: %s: Title of a block, e.g. Heading.
+        (0,external_wp_i18n_namespaceObject.__)('Open %s styles in Styles panel'), title),
+        render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {}),
+        role: "button",
+        onClick: onClick,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+          className: "edit-site-style-book__example-title",
+          children: title
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          className: "edit-site-style-book__example-preview",
+          "aria-hidden": true,
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, {
+            className: "edit-site-style-book__example-preview__content",
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ExperimentalBlockEditorProvider, {
+              value: renderedBlocks,
+              settings: settings,
+              children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockList, {
+                renderAppender: false
+              })
+            })
+          })
+        })]
+      })
+    })
+  });
+};
+/* harmony default export */ const style_book = (StyleBook);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-css.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  useGlobalStyle: screen_css_useGlobalStyle,
+  AdvancedPanel: screen_css_StylesAdvancedPanel
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function ScreenCSS() {
+  const description = (0,external_wp_i18n_namespaceObject.__)('Add your own CSS to customize the appearance and layout of your site.');
+  const [style] = screen_css_useGlobalStyle('', undefined, 'user', {
+    shouldDecodeEncode: false
+  });
+  const [inheritedStyle, setStyle] = screen_css_useGlobalStyle('', undefined, 'all', {
+    shouldDecodeEncode: false
+  });
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: (0,external_wp_i18n_namespaceObject.__)('CSS'),
+      description: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [description, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, {
+          href: "https://developer.wordpress.org/advanced-administration/wordpress/css/",
+          className: "edit-site-global-styles-screen-css-help-link",
+          children: (0,external_wp_i18n_namespaceObject.__)('Learn more about CSS')
+        })]
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-global-styles-screen-css",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_css_StylesAdvancedPanel, {
+        value: style,
+        onChange: setStyle,
+        inheritedValue: inheritedStyle
+      })
+    })]
+  });
+}
+/* harmony default export */ const screen_css = (ScreenCSS);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/revisions/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  ExperimentalBlockEditorProvider: revisions_ExperimentalBlockEditorProvider,
+  GlobalStylesContext: revisions_GlobalStylesContext,
+  useGlobalStylesOutputWithConfig: revisions_useGlobalStylesOutputWithConfig,
+  __unstableBlockStyleVariationOverridesWithConfig
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const {
+  mergeBaseAndUserConfigs: revisions_mergeBaseAndUserConfigs
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+function revisions_isObjectEmpty(object) {
+  return !object || Object.keys(object).length === 0;
+}
+function Revisions({
+  userConfig,
+  blocks
+}) {
+  const {
+    base: baseConfig
+  } = (0,external_wp_element_namespaceObject.useContext)(revisions_GlobalStylesContext);
+  const mergedConfig = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!revisions_isObjectEmpty(userConfig) && !revisions_isObjectEmpty(baseConfig)) {
+      return revisions_mergeBaseAndUserConfigs(baseConfig, userConfig);
+    }
+    return {};
+  }, [baseConfig, userConfig]);
+  const renderedBlocksArray = (0,external_wp_element_namespaceObject.useMemo)(() => Array.isArray(blocks) ? blocks : [blocks], [blocks]);
+  const originalSettings = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings(), []);
+  const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({
+    ...originalSettings,
+    __unstableIsPreviewMode: true
+  }), [originalSettings]);
+  const [globalStyles] = revisions_useGlobalStylesOutputWithConfig(mergedConfig);
+  const editorStyles = !revisions_isObjectEmpty(globalStyles) && !revisions_isObjectEmpty(userConfig) ? globalStyles : settings.styles;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(editor_canvas_container, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Revisions'),
+    closeButtonLabel: (0,external_wp_i18n_namespaceObject.__)('Close revisions'),
+    enableResizing: true,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.__unstableIframe, {
+      className: "edit-site-revisions__iframe",
+      name: "revisions",
+      tabIndex: 0,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("style", {
+        children:
+        // Forming a "block formatting context" to prevent margin collapsing.
+        // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
+        `.is-root-container { display: flow-root; }`
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, {
+        className: "edit-site-revisions__example-preview__content",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(revisions_ExperimentalBlockEditorProvider, {
+          value: renderedBlocksArray,
+          settings: settings,
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockList, {
+            renderAppender: false
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, {
+            styles: editorStyles
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(__unstableBlockStyleVariationOverridesWithConfig, {
+            config: mergedConfig
+          })]
+        })
+      })]
+    })
+  });
+}
+/* harmony default export */ const components_revisions = (Revisions);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+const SITE_EDITOR_AUTHORS_QUERY = {
+  per_page: -1,
+  _fields: 'id,name,avatar_urls',
+  context: 'view',
+  capabilities: ['edit_theme_options']
+};
+const DEFAULT_QUERY = {
+  per_page: 100,
+  page: 1
+};
+const EMPTY_ARRAY = [];
+const {
+  GlobalStylesContext: use_global_styles_revisions_GlobalStylesContext
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function useGlobalStylesRevisions({
+  query
+} = {}) {
+  const {
+    user: userConfig
+  } = (0,external_wp_element_namespaceObject.useContext)(use_global_styles_revisions_GlobalStylesContext);
+  const _query = {
+    ...DEFAULT_QUERY,
+    ...query
+  };
+  const {
+    authors,
+    currentUser,
+    isDirty,
+    revisions,
+    isLoadingGlobalStylesRevisions,
+    revisionsCount
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    var _globalStyles$_links$;
+    const {
+      __experimentalGetDirtyEntityRecords,
+      getCurrentUser,
+      getUsers,
+      getRevisions,
+      __experimentalGetCurrentGlobalStylesId,
+      getEntityRecord,
+      isResolving
+    } = select(external_wp_coreData_namespaceObject.store);
+    const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
+    const _currentUser = getCurrentUser();
+    const _isDirty = dirtyEntityRecords.length > 0;
+    const globalStylesId = __experimentalGetCurrentGlobalStylesId();
+    const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
+    const _revisionsCount = (_globalStyles$_links$ = globalStyles?._links?.['version-history']?.[0]?.count) !== null && _globalStyles$_links$ !== void 0 ? _globalStyles$_links$ : 0;
+    const globalStylesRevisions = getRevisions('root', 'globalStyles', globalStylesId, _query) || EMPTY_ARRAY;
+    const _authors = getUsers(SITE_EDITOR_AUTHORS_QUERY) || EMPTY_ARRAY;
+    const _isResolving = isResolving('getRevisions', ['root', 'globalStyles', globalStylesId, _query]);
+    return {
+      authors: _authors,
+      currentUser: _currentUser,
+      isDirty: _isDirty,
+      revisions: globalStylesRevisions,
+      isLoadingGlobalStylesRevisions: _isResolving,
+      revisionsCount: _revisionsCount
+    };
+  }, [query]);
+  return (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!authors.length || isLoadingGlobalStylesRevisions) {
+      return {
+        revisions: EMPTY_ARRAY,
+        hasUnsavedChanges: isDirty,
+        isLoading: true,
+        revisionsCount
+      };
+    }
+
+    // Adds author details to each revision.
+    const _modifiedRevisions = revisions.map(revision => {
+      return {
+        ...revision,
+        author: authors.find(author => author.id === revision.author)
+      };
+    });
+    const fetchedRevisionsCount = revisions.length;
+    if (fetchedRevisionsCount) {
+      // Flags the most current saved revision.
+      if (_modifiedRevisions[0].id !== 'unsaved' && _query.page === 1) {
+        _modifiedRevisions[0].isLatest = true;
+      }
+
+      // Adds an item for unsaved changes.
+      if (isDirty && userConfig && Object.keys(userConfig).length > 0 && currentUser && _query.page === 1) {
+        const unsavedRevision = {
+          id: 'unsaved',
+          styles: userConfig?.styles,
+          settings: userConfig?.settings,
+          _links: userConfig?._links,
+          author: {
+            name: currentUser?.name,
+            avatar_urls: currentUser?.avatar_urls
+          },
+          modified: new Date()
+        };
+        _modifiedRevisions.unshift(unsavedRevision);
+      }
+      if (_query.page === Math.ceil(revisionsCount / _query.per_page)) {
+        // Adds an item for the default theme styles.
+        _modifiedRevisions.push({
+          id: 'parent',
+          styles: {},
+          settings: {}
+        });
+      }
+    }
+    return {
+      revisions: _modifiedRevisions,
+      hasUnsavedChanges: isDirty,
+      isLoading: false,
+      revisionsCount
+    };
+  }, [isDirty, revisions, currentUser, authors, userConfig, isLoadingGlobalStylesRevisions]);
+}
+
+;// CONCATENATED MODULE: external ["wp","date"]
+const external_wp_date_namespaceObject = window["wp"]["date"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-revisions/revisions-buttons.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const DAY_IN_MILLISECONDS = 60 * 60 * 1000 * 24;
+const {
+  getGlobalStylesChanges
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+function ChangesSummary({
+  revision,
+  previousRevision
+}) {
+  const changes = getGlobalStylesChanges(revision, previousRevision, {
+    maxResults: 7
+  });
+  if (!changes.length) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
+    "data-testid": "global-styles-revision-changes",
+    className: "edit-site-global-styles-screen-revisions__changes",
+    children: changes.map(change => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
+      children: change
+    }, change))
+  });
+}
+
+/**
+ * Returns a button label for the revision.
+ *
+ * @param {string|number} id                    A revision object.
+ * @param {string}        authorDisplayName     Author name.
+ * @param {string}        formattedModifiedDate Revision modified date formatted.
+ * @param {boolean}       areStylesEqual        Whether the revision matches the current editor styles.
+ * @return {string} Translated label.
+ */
+function getRevisionLabel(id, authorDisplayName, formattedModifiedDate, areStylesEqual) {
+  if ('parent' === id) {
+    return (0,external_wp_i18n_namespaceObject.__)('Reset the styles to the theme defaults');
+  }
+  if ('unsaved' === id) {
+    return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: author display name */
+    (0,external_wp_i18n_namespaceObject.__)('Unsaved changes by %s'), authorDisplayName);
+  }
+  return areStylesEqual ? (0,external_wp_i18n_namespaceObject.sprintf)(
+  // translators: %1$s: author display name, %2$s: revision creation date.
+  (0,external_wp_i18n_namespaceObject.__)('Changes saved by %1$s on %2$s. This revision matches current editor styles.'), authorDisplayName, formattedModifiedDate) : (0,external_wp_i18n_namespaceObject.sprintf)(
+  // translators: %1$s: author display name, %2$s: revision creation date.
+  (0,external_wp_i18n_namespaceObject.__)('Changes saved by %1$s on %2$s'), authorDisplayName, formattedModifiedDate);
+}
+
+/**
+ * Returns a rendered list of revisions buttons.
+ *
+ * @typedef {Object} props
+ * @property {Array<Object>} userRevisions      A collection of user revisions.
+ * @property {number}        selectedRevisionId The id of the currently-selected revision.
+ * @property {Function}      onChange           Callback fired when a revision is selected.
+ *
+ * @param    {props}         Component          props.
+ * @return {JSX.Element} The modal component.
+ */
+function RevisionsButtons({
+  userRevisions,
+  selectedRevisionId,
+  onChange,
+  canApplyRevision,
+  onApplyRevision
+}) {
+  const {
+    currentThemeName,
+    currentUser
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getCurrentTheme,
+      getCurrentUser
+    } = select(external_wp_coreData_namespaceObject.store);
+    const currentTheme = getCurrentTheme();
+    return {
+      currentThemeName: currentTheme?.name?.rendered || currentTheme?.stylesheet,
+      currentUser: getCurrentUser()
+    };
+  }, []);
+  const dateNowInMs = (0,external_wp_date_namespaceObject.getDate)().getTime();
+  const {
+    datetimeAbbreviated
+  } = (0,external_wp_date_namespaceObject.getSettings)().formats;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ol", {
+    className: "edit-site-global-styles-screen-revisions__revisions-list",
+    "aria-label": (0,external_wp_i18n_namespaceObject.__)('Global styles revisions list'),
+    role: "group",
+    children: userRevisions.map((revision, index) => {
+      const {
+        id,
+        author,
+        modified
+      } = revision;
+      const isUnsaved = 'unsaved' === id;
+      // Unsaved changes are created by the current user.
+      const revisionAuthor = isUnsaved ? currentUser : author;
+      const authorDisplayName = revisionAuthor?.name || (0,external_wp_i18n_namespaceObject.__)('User');
+      const authorAvatar = revisionAuthor?.avatar_urls?.['48'];
+      const isFirstItem = index === 0;
+      const isSelected = selectedRevisionId ? selectedRevisionId === id : isFirstItem;
+      const areStylesEqual = !canApplyRevision && isSelected;
+      const isReset = 'parent' === id;
+      const modifiedDate = (0,external_wp_date_namespaceObject.getDate)(modified);
+      const displayDate = modified && dateNowInMs - modifiedDate.getTime() > DAY_IN_MILLISECONDS ? (0,external_wp_date_namespaceObject.dateI18n)(datetimeAbbreviated, modifiedDate) : (0,external_wp_date_namespaceObject.humanTimeDiff)(modified);
+      const revisionLabel = getRevisionLabel(id, authorDisplayName, (0,external_wp_date_namespaceObject.dateI18n)(datetimeAbbreviated, modifiedDate), areStylesEqual);
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", {
+        className: dist_clsx('edit-site-global-styles-screen-revisions__revision-item', {
+          'is-selected': isSelected,
+          'is-active': areStylesEqual,
+          'is-reset': isReset
+        }),
+        "aria-current": isSelected,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          className: "edit-site-global-styles-screen-revisions__revision-button",
+          __experimentalIsFocusable: true,
+          disabled: isSelected,
+          onClick: () => {
+            onChange(revision);
+          },
+          "aria-label": revisionLabel,
+          children: isReset ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
+            className: "edit-site-global-styles-screen-revisions__description",
+            children: [(0,external_wp_i18n_namespaceObject.__)('Default styles'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+              className: "edit-site-global-styles-screen-revisions__meta",
+              children: currentThemeName
+            })]
+          }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
+            className: "edit-site-global-styles-screen-revisions__description",
+            children: [isUnsaved ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+              className: "edit-site-global-styles-screen-revisions__date",
+              children: (0,external_wp_i18n_namespaceObject.__)('(Unsaved)')
+            }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {
+              className: "edit-site-global-styles-screen-revisions__date",
+              dateTime: modified,
+              children: displayDate
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
+              className: "edit-site-global-styles-screen-revisions__meta",
+              children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
+                alt: authorDisplayName,
+                src: authorAvatar
+              }), authorDisplayName]
+            }), isSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ChangesSummary, {
+              revision: revision,
+              previousRevision: index < userRevisions.length ? userRevisions[index + 1] : {}
+            })]
+          })
+        }), isSelected && (areStylesEqual ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+          className: "edit-site-global-styles-screen-revisions__applied-text",
+          children: (0,external_wp_i18n_namespaceObject.__)('These styles are already applied to your site.')
+        }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          size: "compact",
+          variant: "primary",
+          className: "edit-site-global-styles-screen-revisions__apply-button",
+          onClick: onApplyRevision,
+          children: isReset ? (0,external_wp_i18n_namespaceObject.__)('Reset to defaults') : (0,external_wp_i18n_namespaceObject.__)('Apply')
+        }))]
+      }, id);
+    })
+  });
+}
+/* harmony default export */ const revisions_buttons = (RevisionsButtons);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/previous.js
+/**
+ * WordPress dependencies
+ */
+
+
+const previous = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"
+  })
+});
+/* harmony default export */ const library_previous = (previous);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/next.js
+/**
+ * WordPress dependencies
+ */
+
+
+const next = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"
+  })
+});
+/* harmony default export */ const library_next = (next);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/pagination/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+function Pagination({
+  currentPage,
+  numPages,
+  changePage,
+  totalItems,
+  className,
+  disabled = false,
+  buttonVariant = 'tertiary',
+  label = (0,external_wp_i18n_namespaceObject.__)('Pagination Navigation')
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+    expanded: false,
+    as: "nav",
+    "aria-label": label,
+    spacing: 3,
+    justify: "flex-start",
+    className: dist_clsx('edit-site-pagination', className),
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+      variant: "muted",
+      className: "edit-site-pagination__total",
+      children:
+      // translators: %s: Total number of patterns.
+      (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: Total number of patterns.
+      (0,external_wp_i18n_namespaceObject._n)('%s item', '%s items', totalItems), totalItems)
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      expanded: false,
+      spacing: 1,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        variant: buttonVariant,
+        onClick: () => changePage(1),
+        __experimentalIsFocusable: true,
+        disabled: disabled || currentPage === 1,
+        label: (0,external_wp_i18n_namespaceObject.__)('First page'),
+        icon: library_previous,
+        size: "compact"
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        variant: buttonVariant,
+        onClick: () => changePage(currentPage - 1),
+        __experimentalIsFocusable: true,
+        disabled: disabled || currentPage === 1,
+        label: (0,external_wp_i18n_namespaceObject.__)('Previous page'),
+        icon: chevron_left,
+        size: "compact"
+      })]
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+      variant: "muted",
+      children: (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %1$s: Current page number, %2$s: Total number of pages.
+      (0,external_wp_i18n_namespaceObject._x)('%1$s of %2$s', 'paging'), currentPage, numPages)
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      expanded: false,
+      spacing: 1,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        variant: buttonVariant,
+        onClick: () => changePage(currentPage + 1),
+        __experimentalIsFocusable: true,
+        disabled: disabled || currentPage === numPages,
+        label: (0,external_wp_i18n_namespaceObject.__)('Next page'),
+        icon: chevron_right,
+        size: "compact"
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        variant: buttonVariant,
+        onClick: () => changePage(numPages),
+        __experimentalIsFocusable: true,
+        disabled: disabled || currentPage === numPages,
+        label: (0,external_wp_i18n_namespaceObject.__)('Last page'),
+        icon: library_next,
+        size: "compact"
+      })]
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-revisions/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+const {
+  GlobalStylesContext: screen_revisions_GlobalStylesContext,
+  areGlobalStyleConfigsEqual: screen_revisions_areGlobalStyleConfigsEqual
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const PAGE_SIZE = 10;
+function ScreenRevisions() {
+  const {
+    goTo
+  } = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)();
+  const {
+    user: currentEditorGlobalStyles,
+    setUserConfig
+  } = (0,external_wp_element_namespaceObject.useContext)(screen_revisions_GlobalStylesContext);
+  const {
+    blocks,
+    editorCanvasContainerView
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
+    editorCanvasContainerView: lock_unlock_unlock(select(store)).getEditorCanvasContainerView(),
+    blocks: select(external_wp_blockEditor_namespaceObject.store).getBlocks()
+  }), []);
+  const [currentPage, setCurrentPage] = (0,external_wp_element_namespaceObject.useState)(1);
+  const [currentRevisions, setCurrentRevisions] = (0,external_wp_element_namespaceObject.useState)([]);
+  const {
+    revisions,
+    isLoading,
+    hasUnsavedChanges,
+    revisionsCount
+  } = useGlobalStylesRevisions({
+    query: {
+      per_page: PAGE_SIZE,
+      page: currentPage
+    }
+  });
+  const numPages = Math.ceil(revisionsCount / PAGE_SIZE);
+  const [currentlySelectedRevision, setCurrentlySelectedRevision] = (0,external_wp_element_namespaceObject.useState)(currentEditorGlobalStyles);
+  const [isLoadingRevisionWithUnsavedChanges, setIsLoadingRevisionWithUnsavedChanges] = (0,external_wp_element_namespaceObject.useState)(false);
+  const {
+    setEditorCanvasContainerView
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const selectedRevisionMatchesEditorStyles = screen_revisions_areGlobalStyleConfigsEqual(currentlySelectedRevision, currentEditorGlobalStyles);
+  const onCloseRevisions = () => {
+    goTo('/'); // Return to global styles main panel.
+    const canvasContainerView = editorCanvasContainerView === 'global-styles-revisions:style-book' ? 'style-book' : undefined;
+    setEditorCanvasContainerView(canvasContainerView);
+  };
+  const restoreRevision = revision => {
+    setUserConfig(() => revision);
+    setIsLoadingRevisionWithUnsavedChanges(false);
+    onCloseRevisions();
+  };
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (!editorCanvasContainerView || !editorCanvasContainerView.startsWith('global-styles-revisions')) {
+      goTo('/'); // Return to global styles main panel.
+    }
+  }, [editorCanvasContainerView]);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (!isLoading && revisions.length) {
+      setCurrentRevisions(revisions);
+    }
+  }, [revisions, isLoading]);
+  const firstRevision = revisions[0];
+  const currentlySelectedRevisionId = currentlySelectedRevision?.id;
+  const shouldSelectFirstItem = !!firstRevision?.id && !selectedRevisionMatchesEditorStyles && !currentlySelectedRevisionId;
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    /*
+     * Ensure that the first item is selected and loaded into the preview pane
+     * when no revision is selected and the selected styles don't match the current editor styles.
+     * This is required in case editor styles are changed outside the revisions panel,
+     * e.g., via the reset styles function of useGlobalStylesReset().
+     * See: https://github.com/WordPress/gutenberg/issues/55866
+     */
+    if (shouldSelectFirstItem) {
+      setCurrentlySelectedRevision(firstRevision);
+    }
+  }, [shouldSelectFirstItem, firstRevision]);
+
+  // Only display load button if there is a revision to load,
+  // and it is different from the current editor styles.
+  const isLoadButtonEnabled = !!currentlySelectedRevisionId && currentlySelectedRevisionId !== 'unsaved' && !selectedRevisionMatchesEditorStyles;
+  const hasRevisions = !!currentRevisions.length;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
+      title: revisionsCount &&
+      // translators: %s: number of revisions.
+      (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Revisions (%s)'), revisionsCount),
+      description: (0,external_wp_i18n_namespaceObject.__)('Click on previously saved styles to preview them. To restore a selected version to the editor, hit "Apply." When you\'re ready, use the Save button to save your changes.'),
+      onBack: onCloseRevisions
+    }), !hasRevisions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {
+      className: "edit-site-global-styles-screen-revisions__loading"
+    }), hasRevisions && (editorCanvasContainerView === 'global-styles-revisions:style-book' ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book, {
+      userConfig: currentlySelectedRevision,
+      isSelected: () => {},
+      onClose: () => {
+        setEditorCanvasContainerView('global-styles-revisions');
+      }
+    }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(components_revisions, {
+      blocks: blocks,
+      userConfig: currentlySelectedRevision,
+      closeButtonLabel: (0,external_wp_i18n_namespaceObject.__)('Close revisions')
+    })), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(revisions_buttons, {
+      onChange: setCurrentlySelectedRevision,
+      selectedRevisionId: currentlySelectedRevisionId,
+      userRevisions: currentRevisions,
+      canApplyRevision: isLoadButtonEnabled,
+      onApplyRevision: () => hasUnsavedChanges ? setIsLoadingRevisionWithUnsavedChanges(true) : restoreRevision(currentlySelectedRevision)
+    }), numPages > 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-global-styles-screen-revisions__footer",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Pagination, {
+        className: "edit-site-global-styles-screen-revisions__pagination",
+        currentPage: currentPage,
+        numPages: numPages,
+        changePage: setCurrentPage,
+        totalItems: revisionsCount,
+        disabled: isLoading,
+        label: (0,external_wp_i18n_namespaceObject.__)('Global Styles pagination navigation')
+      })
+    }), isLoadingRevisionWithUnsavedChanges && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
+      isOpen: isLoadingRevisionWithUnsavedChanges,
+      confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Apply'),
+      onConfirm: () => restoreRevision(currentlySelectedRevision),
+      onCancel: () => setIsLoadingRevisionWithUnsavedChanges(false),
+      size: "medium",
+      children: (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to apply this revision? Any unsaved changes will be lost.')
+    })]
+  });
+}
+/* harmony default export */ const screen_revisions = (ScreenRevisions);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/ui.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+const SLOT_FILL_NAME = 'GlobalStylesMenu';
+const {
+  useGlobalStylesReset: ui_useGlobalStylesReset
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const {
+  Slot: GlobalStylesMenuSlot,
+  Fill: GlobalStylesMenuFill
+} = (0,external_wp_components_namespaceObject.createSlotFill)(SLOT_FILL_NAME);
+function GlobalStylesActionMenu() {
+  const [canReset, onReset] = ui_useGlobalStylesReset();
+  const {
+    toggle
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
+  const {
+    canEditCSS
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEntityRecord,
+      __experimentalGetCurrentGlobalStylesId
+    } = select(external_wp_coreData_namespaceObject.store);
+    const globalStylesId = __experimentalGetCurrentGlobalStylesId();
+    const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
+    return {
+      canEditCSS: !!globalStyles?._links?.['wp:action-edit-css']
+    };
+  }, []);
+  const {
+    setEditorCanvasContainerView
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const {
+    goTo
+  } = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)();
+  const loadCustomCSS = () => {
+    setEditorCanvasContainerView('global-styles-css');
+    goTo('/css');
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesMenuFill, {
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
+      icon: more_vertical,
+      label: (0,external_wp_i18n_namespaceObject.__)('More'),
+      toggleProps: {
+        size: 'compact'
+      },
+      children: ({
+        onClose
+      }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, {
+          children: [canEditCSS && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+            onClick: loadCustomCSS,
+            children: (0,external_wp_i18n_namespaceObject.__)('Additional CSS')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+            onClick: () => {
+              toggle('core/edit-site', 'welcomeGuideStyles');
+              onClose();
+            },
+            children: (0,external_wp_i18n_namespaceObject.__)('Welcome Guide')
+          })]
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, {
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+            onClick: () => {
+              onReset();
+              onClose();
+            },
+            disabled: !canReset,
+            children: (0,external_wp_i18n_namespaceObject.__)('Reset styles')
+          })
+        })]
+      })
+    })
+  });
+}
+function GlobalStylesNavigationScreen({
+  className,
+  ...props
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, {
+    className: ['edit-site-global-styles-sidebar__navigator-screen', className].filter(Boolean).join(' '),
+    ...props
+  });
+}
+function BlockStylesNavigationScreens({
+  parentMenu,
+  blockStyles,
+  blockName
+}) {
+  return blockStyles.map((style, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+    path: parentMenu + '/variations/' + style.name,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_block, {
+      name: blockName,
+      variation: style.name
+    })
+  }, index));
+}
+function ContextScreens({
+  name,
+  parentMenu = ''
+}) {
+  const blockStyleVariations = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getBlockStyles
+    } = select(external_wp_blocks_namespaceObject.store);
+    return getBlockStyles(name);
+  }, [name]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: parentMenu + '/colors/palette',
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette, {
+        name: name
+      })
+    }), !!blockStyleVariations?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockStylesNavigationScreens, {
+      parentMenu: parentMenu,
+      blockStyles: blockStyleVariations,
+      blockName: name
+    })]
+  });
+}
+function GlobalStylesStyleBook() {
+  const navigator = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)();
+  const {
+    path
+  } = navigator.location;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book, {
+    isSelected: blockName =>
+    // Match '/blocks/core%2Fbutton' and
+    // '/blocks/core%2Fbutton/typography', but not
+    // '/blocks/core%2Fbuttons'.
+    path === `/blocks/${encodeURIComponent(blockName)}` || path.startsWith(`/blocks/${encodeURIComponent(blockName)}/`),
+    onSelect: blockName => {
+      // Now go to the selected block.
+      navigator.goTo('/blocks/' + encodeURIComponent(blockName));
+    }
+  });
+}
+function GlobalStylesBlockLink() {
+  const navigator = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)();
+  const {
+    selectedBlockName,
+    selectedBlockClientId
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getSelectedBlockClientId,
+      getBlockName
+    } = select(external_wp_blockEditor_namespaceObject.store);
+    const clientId = getSelectedBlockClientId();
+    return {
+      selectedBlockName: getBlockName(clientId),
+      selectedBlockClientId: clientId
+    };
+  }, []);
+  const blockHasGlobalStyles = useBlockHasGlobalStyles(selectedBlockName);
+  // When we're in the `Blocks` screen enable deep linking to the selected block.
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (!selectedBlockClientId || !blockHasGlobalStyles) {
+      return;
+    }
+    const currentPath = navigator.location.path;
+    if (currentPath !== '/blocks' && !currentPath.startsWith('/blocks/')) {
+      return;
+    }
+    const newPath = '/blocks/' + encodeURIComponent(selectedBlockName);
+    // Avoid navigating to the same path. This can happen when selecting
+    // a new block of the same type.
+    if (newPath !== currentPath) {
+      navigator.goTo(newPath, {
+        skipFocus: true
+      });
+    }
+  }, [selectedBlockClientId, selectedBlockName, blockHasGlobalStyles]);
+}
+function GlobalStylesEditorCanvasContainerLink() {
+  const {
+    goTo,
+    location
+  } = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)();
+  const editorCanvasContainerView = (0,external_wp_data_namespaceObject.useSelect)(select => lock_unlock_unlock(select(store)).getEditorCanvasContainerView(), []);
+  const path = location?.path;
+  const isRevisionsOpen = path === '/revisions';
+
+  // If the user switches the editor canvas container view, redirect
+  // to the appropriate screen. This effectively allows deep linking to the
+  // desired screens from outside the global styles navigation provider.
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    switch (editorCanvasContainerView) {
+      case 'global-styles-revisions':
+      case 'global-styles-revisions:style-book':
+        goTo('/revisions');
+        break;
+      case 'global-styles-css':
+        goTo('/css');
+        break;
+      case 'style-book':
+        /*
+         * The stand-alone style book is open
+         * and the revisions panel is open,
+         * close the revisions panel.
+         * Otherwise keep the style book open while
+         * browsing global styles panel.
+         */
+        if (isRevisionsOpen) {
+          goTo('/');
+        }
+        break;
+      default:
+        /*
+         * Example: the user has navigated to "Browse styles" or elsewhere
+         * and changes the editorCanvasContainerView, e.g., closes the style book.
+         * The panel should not be affected.
+         * Exclude revisions panel from this behavior,
+         * as it should close when the editorCanvasContainerView doesn't correspond.
+         */
+        if (path !== '/' && !isRevisionsOpen) {
+          return;
+        }
+        goTo('/');
+        break;
+    }
+  }, [editorCanvasContainerView, isRevisionsOpen, goTo]);
+}
+function GlobalStylesUI() {
+  const blocks = (0,external_wp_blocks_namespaceObject.getBlockTypes)();
+  const editorCanvasContainerView = (0,external_wp_data_namespaceObject.useSelect)(select => lock_unlock_unlock(select(store)).getEditorCanvasContainerView(), []);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalNavigatorProvider, {
+    className: "edit-site-global-styles-sidebar__navigator-provider",
+    initialPath: "/",
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_root, {})
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/variations",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_style_variations, {})
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/blocks",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_block_list, {})
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/typography",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography, {})
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/typography/text",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, {
+        element: "text"
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/typography/link",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, {
+        element: "link"
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/typography/heading",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, {
+        element: "heading"
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/typography/caption",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, {
+        element: "caption"
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/typography/button",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, {
+        element: "button"
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/colors",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_colors, {})
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/shadows",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenShadows, {})
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/shadows/edit/:category/:slug",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenShadowsEdit, {})
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/layout",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_layout, {})
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/css",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_css, {})
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: "/revisions",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_revisions, {})
+    }), blocks.map(block => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
+      path: '/blocks/' + encodeURIComponent(block.name),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_block, {
+        name: block.name
+      })
+    }, 'menu-block-' + block.name)), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ContextScreens, {}), blocks.map(block => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ContextScreens, {
+      name: block.name,
+      parentMenu: '/blocks/' + encodeURIComponent(block.name)
+    }, 'screens-block-' + block.name)), 'style-book' === editorCanvasContainerView && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesStyleBook, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesActionMenu, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesBlockLink, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesEditorCanvasContainerLink, {})]
+  });
+}
+
+/* harmony default export */ const ui = (GlobalStylesUI);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/index.js
+
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles-sidebar/default-sidebar.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  ComplementaryArea,
+  ComplementaryAreaMoreMenuItem
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+function DefaultSidebar({
+  className,
+  identifier,
+  title,
+  icon,
+  children,
+  closeLabel,
+  header,
+  headerClassName,
+  panelClassName,
+  isActiveByDefault
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComplementaryArea, {
+      className: className,
+      scope: "core",
+      identifier: identifier,
+      title: title,
+      smallScreenTitle: title,
+      icon: icon,
+      closeLabel: closeLabel,
+      header: header,
+      headerClassName: headerClassName,
+      panelClassName: panelClassName,
+      isActiveByDefault: isActiveByDefault,
+      children: children
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComplementaryAreaMoreMenuItem, {
+      scope: "core",
+      identifier: identifier,
+      icon: icon,
+      children: title
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles-sidebar/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+const {
+  interfaceStore: global_styles_sidebar_interfaceStore
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+function GlobalStylesSidebar() {
+  const {
+    shouldClearCanvasContainerView,
+    isStyleBookOpened,
+    showListViewByDefault,
+    hasRevisions,
+    isRevisionsOpened,
+    isRevisionsStyleBookOpened
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getActiveComplementaryArea
+    } = select(global_styles_sidebar_interfaceStore);
+    const {
+      getEditorCanvasContainerView,
+      getCanvasMode
+    } = lock_unlock_unlock(select(store));
+    const canvasContainerView = getEditorCanvasContainerView();
+    const _isVisualEditorMode = 'visual' === select(external_wp_editor_namespaceObject.store).getEditorMode();
+    const _isEditCanvasMode = 'edit' === getCanvasMode();
+    const _showListViewByDefault = select(external_wp_preferences_namespaceObject.store).get('core', 'showListViewByDefault');
+    const {
+      getEntityRecord,
+      __experimentalGetCurrentGlobalStylesId
+    } = select(external_wp_coreData_namespaceObject.store);
+    const globalStylesId = __experimentalGetCurrentGlobalStylesId();
+    const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
+    return {
+      isStyleBookOpened: 'style-book' === canvasContainerView,
+      shouldClearCanvasContainerView: 'edit-site/global-styles' !== getActiveComplementaryArea('core') || !_isVisualEditorMode || !_isEditCanvasMode,
+      showListViewByDefault: _showListViewByDefault,
+      hasRevisions: !!globalStyles?._links?.['version-history']?.[0]?.count,
+      isRevisionsStyleBookOpened: 'global-styles-revisions:style-book' === canvasContainerView,
+      isRevisionsOpened: 'global-styles-revisions' === canvasContainerView
+    };
+  }, []);
+  const {
+    setEditorCanvasContainerView
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (shouldClearCanvasContainerView) {
+      setEditorCanvasContainerView(undefined);
+    }
+  }, [shouldClearCanvasContainerView]);
+  const {
+    setIsListViewOpened
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store);
+  const {
+    goTo
+  } = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)();
+  const toggleRevisions = () => {
+    setIsListViewOpened(false);
+    if (isRevisionsStyleBookOpened) {
+      goTo('/');
+      setEditorCanvasContainerView('style-book');
+      return;
+    }
+    if (isRevisionsOpened) {
+      goTo('/');
+      setEditorCanvasContainerView(undefined);
+      return;
+    }
+    goTo('/revisions');
+    if (isStyleBookOpened) {
+      setEditorCanvasContainerView('global-styles-revisions:style-book');
+    } else {
+      setEditorCanvasContainerView('global-styles-revisions');
+    }
+  };
+  const toggleStyleBook = () => {
+    if (isRevisionsOpened) {
+      setEditorCanvasContainerView('global-styles-revisions:style-book');
+      return;
+    }
+    if (isRevisionsStyleBookOpened) {
+      setEditorCanvasContainerView('global-styles-revisions');
+      return;
+    }
+    setIsListViewOpened(isStyleBookOpened && showListViewByDefault);
+    setEditorCanvasContainerView(isStyleBookOpened ? undefined : 'style-book');
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DefaultSidebar, {
+    className: "edit-site-global-styles-sidebar",
+    identifier: "edit-site/global-styles",
+    title: (0,external_wp_i18n_namespaceObject.__)('Styles'),
+    icon: library_styles,
+    closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close Styles'),
+    panelClassName: "edit-site-global-styles-sidebar__panel",
+    header: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+      className: "edit-site-global-styles-sidebar__header",
+      gap: 1,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexBlock, {
+        style: {
+          minWidth: 'min-content'
+        },
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", {
+          className: "edit-site-global-styles-sidebar__header-title",
+          children: (0,external_wp_i18n_namespaceObject.__)('Styles')
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          icon: library_seen,
+          label: (0,external_wp_i18n_namespaceObject.__)('Style Book'),
+          isPressed: isStyleBookOpened || isRevisionsStyleBookOpened,
+          __experimentalIsFocusable: true,
+          disabled: shouldClearCanvasContainerView,
+          onClick: toggleStyleBook,
+          size: "compact"
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Revisions'),
+          icon: library_backup,
+          onClick: toggleRevisions,
+          __experimentalIsFocusable: true,
+          disabled: !hasRevisions,
+          isPressed: isRevisionsOpened || isRevisionsStyleBookOpened,
+          size: "compact"
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesMenuSlot, {})]
+    }),
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ui, {})
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/save-button/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  useLocation: save_button_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function SaveButton({
+  className = 'edit-site-save-button__button',
+  variant = 'primary',
+  showTooltip = true,
+  showReviewMessage,
+  icon,
+  size,
+  __next40pxDefaultSize = false
+}) {
+  const {
+    params
+  } = save_button_useLocation();
+  const {
+    setIsSaveViewOpened
+  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
+  const {
+    saveDirtyEntities
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store));
+  const {
+    dirtyEntityRecords
+  } = (0,external_wp_editor_namespaceObject.useEntitiesSavedStatesIsDirty)();
+  const {
+    isSaving,
+    isSaveViewOpen,
+    previewingThemeName
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      isSavingEntityRecord,
+      isResolving
+    } = select(external_wp_coreData_namespaceObject.store);
+    const {
+      isSaveViewOpened
+    } = select(store);
+    const isActivatingTheme = isResolving('activateTheme');
+    const currentlyPreviewingThemeId = currentlyPreviewingTheme();
+    return {
+      isSaving: dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key)) || isActivatingTheme,
+      isSaveViewOpen: isSaveViewOpened(),
+      // Do not call `getTheme` with null, it will cause a request to
+      // the server.
+      previewingThemeName: currentlyPreviewingThemeId ? select(external_wp_coreData_namespaceObject.store).getTheme(currentlyPreviewingThemeId)?.name?.rendered : undefined
+    };
+  }, [dirtyEntityRecords]);
+  const hasDirtyEntities = !!dirtyEntityRecords.length;
+  let isOnlyCurrentEntityDirty;
+  // Check if the current entity is the only entity with changes.
+  // We have some extra logic for `wp_global_styles` for now, that
+  // is used in navigation sidebar.
+  if (dirtyEntityRecords.length === 1) {
+    if (params.postId) {
+      isOnlyCurrentEntityDirty = `${dirtyEntityRecords[0].key}` === params.postId && dirtyEntityRecords[0].name === params.postType;
+    } else if (params.path?.includes('wp_global_styles')) {
+      isOnlyCurrentEntityDirty = dirtyEntityRecords[0].name === 'globalStyles';
+    }
+  }
+  const disabled = isSaving || !hasDirtyEntities && !isPreviewingTheme();
+  const getLabel = () => {
+    if (isPreviewingTheme()) {
+      if (isSaving) {
+        return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: The name of theme to be activated. */
+        (0,external_wp_i18n_namespaceObject.__)('Activating %s'), previewingThemeName);
+      } else if (disabled) {
+        return (0,external_wp_i18n_namespaceObject.__)('Saved');
+      } else if (hasDirtyEntities) {
+        return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: The name of theme to be activated. */
+        (0,external_wp_i18n_namespaceObject.__)('Activate %s & Save'), previewingThemeName);
+      }
+      return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: The name of theme to be activated. */
+      (0,external_wp_i18n_namespaceObject.__)('Activate %s'), previewingThemeName);
+    }
+    if (isSaving) {
+      return (0,external_wp_i18n_namespaceObject.__)('Saving');
+    }
+    if (disabled) {
+      return (0,external_wp_i18n_namespaceObject.__)('Saved');
+    }
+    if (!isOnlyCurrentEntityDirty && showReviewMessage) {
+      return (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %d: number of unsaved changes (number).
+      (0,external_wp_i18n_namespaceObject._n)('Review %d change…', 'Review %d changes…', dirtyEntityRecords.length), dirtyEntityRecords.length);
+    }
+    return (0,external_wp_i18n_namespaceObject.__)('Save');
+  };
+  const label = getLabel();
+  const onClick = isOnlyCurrentEntityDirty ? () => saveDirtyEntities({
+    dirtyEntityRecords
+  }) : () => setIsSaveViewOpened(true);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+    variant: variant,
+    className: className,
+    "aria-disabled": disabled,
+    "aria-expanded": isSaveViewOpen,
+    isBusy: isSaving,
+    onClick: disabled ? undefined : onClick,
+    label: label
+    /*
+     * We want the tooltip to show the keyboard shortcut only when the
+     * button does something, i.e. when it's not disabled.
+     */,
+    shortcut: disabled ? undefined : external_wp_keycodes_namespaceObject.displayShortcut.primary('s')
+    /*
+     * Displaying the keyboard shortcut conditionally makes the tooltip
+     * itself show conditionally. This would trigger a full-rerendering
+     * of the button that we want to avoid. By setting `showTooltip`,
+     * the tooltip is always rendered even when there's no keyboard shortcut.
+     */,
+    showTooltip: showTooltip,
+    icon: icon,
+    __next40pxDefaultSize: __next40pxDefaultSize,
+    size: size,
+    children: label
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/use-activate-theme.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  useHistory: use_activate_theme_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+
+/**
+ * This should be refactored to use the REST API, once the REST API can activate themes.
+ *
+ * @return {Function} A function that activates the theme.
+ */
+function useActivateTheme() {
+  const history = use_activate_theme_useHistory();
+  const {
+    startResolution,
+    finishResolution
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
+  return async () => {
+    if (isPreviewingTheme()) {
+      const activationURL = 'themes.php?action=activate&stylesheet=' + currentlyPreviewingTheme() + '&_wpnonce=' + window.WP_BLOCK_THEME_ACTIVATE_NONCE;
+      startResolution('activateTheme');
+      await window.fetch(activationURL);
+      finishResolution('activateTheme');
+      // Remove the wp_theme_preview query param: we've finished activating
+      // the queue and are switching to normal Site Editor.
+      const {
+        params
+      } = history.getLocationWithParams();
+      history.replace({
+        ...params,
+        wp_theme_preview: undefined
+      });
+    }
+  };
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/use-actual-current-theme.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+const ACTIVE_THEMES_URL = '/wp/v2/themes?status=active';
+function useActualCurrentTheme() {
+  const [currentTheme, setCurrentTheme] = (0,external_wp_element_namespaceObject.useState)();
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    // Set the `wp_theme_preview` to empty string to bypass the createThemePreviewMiddleware.
+    const path = (0,external_wp_url_namespaceObject.addQueryArgs)(ACTIVE_THEMES_URL, {
+      context: 'edit',
+      wp_theme_preview: ''
+    });
+    external_wp_apiFetch_default()({
+      path
+    }).then(activeThemes => setCurrentTheme(activeThemes[0]))
+    // Do nothing
+    .catch(() => {});
+  }, []);
+  return currentTheme;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/save-panel/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  EntitiesSavedStatesExtensible,
+  NavigableRegion
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+const EntitiesSavedStatesForPreview = ({
+  onClose
+}) => {
+  var _currentTheme$name$re, _previewingTheme$name;
+  const isDirtyProps = (0,external_wp_editor_namespaceObject.useEntitiesSavedStatesIsDirty)();
+  let activateSaveLabel;
+  if (isDirtyProps.isDirty) {
+    activateSaveLabel = (0,external_wp_i18n_namespaceObject.__)('Activate & Save');
+  } else {
+    activateSaveLabel = (0,external_wp_i18n_namespaceObject.__)('Activate');
+  }
+  const currentTheme = useActualCurrentTheme();
+  const previewingTheme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme(), []);
+  const additionalPrompt = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+    children: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %1$s: The name of active theme, %2$s: The name of theme to be activated. */
+    (0,external_wp_i18n_namespaceObject.__)('Saving your changes will change your active theme from %1$s to %2$s.'), (_currentTheme$name$re = currentTheme?.name?.rendered) !== null && _currentTheme$name$re !== void 0 ? _currentTheme$name$re : '...', (_previewingTheme$name = previewingTheme?.name?.rendered) !== null && _previewingTheme$name !== void 0 ? _previewingTheme$name : '...')
+  });
+  const activateTheme = useActivateTheme();
+  const onSave = async values => {
+    await activateTheme();
+    return values;
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EntitiesSavedStatesExtensible, {
+    ...isDirtyProps,
+    additionalPrompt,
+    close: onClose,
+    onSave,
+    saveEnabled: true,
+    saveLabel: activateSaveLabel
+  });
+};
+const _EntitiesSavedStates = ({
+  onClose,
+  renderDialog = undefined
+}) => {
+  if (isPreviewingTheme()) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EntitiesSavedStatesForPreview, {
+      onClose: onClose
+    });
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.EntitiesSavedStates, {
+    close: onClose,
+    renderDialog: renderDialog
+  });
+};
+function SavePanel() {
+  const {
+    isSaveViewOpen,
+    canvasMode,
+    isDirty,
+    isSaving
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      __experimentalGetDirtyEntityRecords,
+      isSavingEntityRecord,
+      isResolving
+    } = select(external_wp_coreData_namespaceObject.store);
+    const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
+    const isActivatingTheme = isResolving('activateTheme');
+    const {
+      isSaveViewOpened,
+      getCanvasMode
+    } = lock_unlock_unlock(select(store));
+
+    // The currently selected entity to display.
+    // Typically template or template part in the site editor.
+    return {
+      isSaveViewOpen: isSaveViewOpened(),
+      canvasMode: getCanvasMode(),
+      isDirty: dirtyEntityRecords.length > 0,
+      isSaving: dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key)) || isActivatingTheme
+    };
+  }, []);
+  const {
+    setIsSaveViewOpened
+  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
+  const onClose = () => setIsSaveViewOpened(false);
+  if (canvasMode === 'view') {
+    return isSaveViewOpen ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
+      className: "edit-site-save-panel__modal",
+      onRequestClose: onClose,
+      __experimentalHideHeader: true,
+      contentLabel: (0,external_wp_i18n_namespaceObject.__)('Save site, content, and template changes'),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(_EntitiesSavedStates, {
+        onClose: onClose
+      })
+    }) : null;
+  }
+  const activateSaveEnabled = isPreviewingTheme() || isDirty;
+  const disabled = isSaving || !activateSaveEnabled;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(NavigableRegion, {
+    className: dist_clsx('edit-site-layout__actions', {
+      'is-entity-save-view-open': isSaveViewOpen
+    }),
+    ariaLabel: (0,external_wp_i18n_namespaceObject.__)('Save panel'),
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: dist_clsx('edit-site-editor__toggle-save-panel', {
+        'screen-reader-text': isSaveViewOpen
+      }),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        variant: "secondary",
+        className: "edit-site-editor__toggle-save-panel-button",
+        onClick: () => setIsSaveViewOpened(true),
+        "aria-haspopup": "dialog",
+        disabled: disabled,
+        __experimentalIsFocusable: true,
+        children: (0,external_wp_i18n_namespaceObject.__)('Open save panel')
+      })
+    }), isSaveViewOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(_EntitiesSavedStates, {
+      onClose: onClose,
+      renderDialog: true
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/download.js
+/**
+ * WordPress dependencies
+ */
+
+
+const download = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M18 11.3l-1-1.1-4 4V3h-1.5v11.3L7 10.2l-1 1.1 6.2 5.8 5.8-5.8zm.5 3.7v3.5h-13V15H4v5h16v-5h-1.5z"
+  })
+});
+/* harmony default export */ const library_download = (download);
+
+;// CONCATENATED MODULE: external ["wp","blob"]
+const external_wp_blob_namespaceObject = window["wp"]["blob"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/more-menu/site-export.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+function SiteExport() {
+  const {
+    createErrorNotice
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
+  async function handleExport() {
+    try {
+      const response = await external_wp_apiFetch_default()({
+        path: '/wp-block-editor/v1/export',
+        parse: false,
+        headers: {
+          Accept: 'application/zip'
+        }
+      });
+      const blob = await response.blob();
+      const contentDisposition = response.headers.get('content-disposition');
+      const contentDispositionMatches = contentDisposition.match(/=(.+)\.zip/);
+      const fileName = contentDispositionMatches[1] ? contentDispositionMatches[1] : 'edit-site-export';
+      (0,external_wp_blob_namespaceObject.downloadBlob)(fileName + '.zip', blob, 'application/zip');
+    } catch (errorResponse) {
+      let error = {};
+      try {
+        error = await errorResponse.json();
+      } catch (e) {}
+      const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the site export.');
+      createErrorNotice(errorMessage, {
+        type: 'snackbar'
+      });
+    }
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+    role: "menuitem",
+    icon: library_download,
+    onClick: handleExport,
+    info: (0,external_wp_i18n_namespaceObject.__)('Download your theme with updated templates and styles.'),
+    children: (0,external_wp_i18n_namespaceObject._x)('Export', 'site exporter menu item')
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/more-menu/welcome-guide-menu-item.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+function WelcomeGuideMenuItem() {
+  const {
+    toggle
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+    onClick: () => toggle('core/edit-site', 'welcomeGuide'),
+    children: (0,external_wp_i18n_namespaceObject.__)('Welcome Guide')
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/more-menu/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+const {
+  ToolsMoreMenuGroup,
+  PreferencesModal
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+function MoreMenu() {
+  const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    return select(external_wp_coreData_namespaceObject.store).getCurrentTheme().is_block_theme;
+  }, []);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ToolsMoreMenuGroup, {
+      children: [isBlockBasedTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SiteExport, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideMenuItem, {})]
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreferencesModal, {})]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/use-editor-iframe-props.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+function useEditorIframeProps() {
+  const {
+    canvasMode,
+    currentPostIsTrashed
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getCanvasMode
+    } = lock_unlock_unlock(select(store));
+    return {
+      canvasMode: getCanvasMode(),
+      currentPostIsTrashed: select(external_wp_editor_namespaceObject.store).getCurrentPostAttribute('status') === 'trash'
+    };
+  }, []);
+  const {
+    setCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (canvasMode === 'edit') {
+      setIsFocused(false);
+    }
+  }, [canvasMode]);
+
+  // In view mode, make the canvas iframe be perceived and behave as a button
+  // to switch to edit mode, with a meaningful label and no title attribute.
+  const viewModeIframeProps = {
+    'aria-label': (0,external_wp_i18n_namespaceObject.__)('Edit'),
+    'aria-disabled': currentPostIsTrashed,
+    title: null,
+    role: 'button',
+    tabIndex: 0,
+    onFocus: () => setIsFocused(true),
+    onBlur: () => setIsFocused(false),
+    onKeyDown: event => {
+      const {
+        keyCode
+      } = event;
+      if ((keyCode === external_wp_keycodes_namespaceObject.ENTER || keyCode === external_wp_keycodes_namespaceObject.SPACE) && !currentPostIsTrashed) {
+        event.preventDefault();
+        setCanvasMode('edit');
+      }
+    },
+    onClick: () => {
+      setCanvasMode('edit');
+    },
+    onClickCapture: event => {
+      if (currentPostIsTrashed) {
+        event.preventDefault();
+        event.stopPropagation();
+      }
+    },
+    readonly: true
+  };
+  return {
+    className: dist_clsx('edit-site-visual-editor__editor-canvas', {
+      'is-focused': isFocused && canvasMode === 'view'
+    }),
+    ...(canvasMode === 'view' ? viewModeIframeProps : {})
+  };
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/use-title.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+const {
+  useLocation: use_title_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function useTitle(title) {
+  const location = use_title_useLocation();
+  const siteTitle = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', 'site')?.title, []);
+  const isInitialLocationRef = (0,external_wp_element_namespaceObject.useRef)(true);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    isInitialLocationRef.current = false;
+  }, [location]);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    // Don't update or announce the title for initial page load.
+    if (isInitialLocationRef.current) {
+      return;
+    }
+    if (title && siteTitle) {
+      // @see https://github.com/WordPress/wordpress-develop/blob/94849898192d271d533e09756007e176feb80697/src/wp-admin/admin-header.php#L67-L68
+      const formattedTitle = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: Admin document title. 1: Admin screen name, 2: Network or site name. */
+      (0,external_wp_i18n_namespaceObject.__)('%1$s ‹ %2$s ‹ Editor — WordPress'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle));
+      document.title = formattedTitle;
+
+      // Announce title on route change for screen readers.
+      (0,external_wp_a11y_namespaceObject.speak)(title, 'assertive');
+    }
+  }, [title, siteTitle, location]);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor/use-editor-title.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+function useEditorTitle() {
+  const {
+    record: editedPost,
+    getTitle,
+    isLoaded: hasLoadedPost
+  } = useEditedEntityRecord();
+  let title;
+  if (hasLoadedPost) {
+    var _POST_TYPE_LABELS$edi;
+    title = (0,external_wp_i18n_namespaceObject.sprintf)(
+    // translators: A breadcrumb trail for the Admin document title. %1$s: title of template being edited, %2$s: type of template (Template or Template Part).
+    (0,external_wp_i18n_namespaceObject.__)('%1$s ‹ %2$s'), getTitle(), (_POST_TYPE_LABELS$edi = POST_TYPE_LABELS[editedPost.type]) !== null && _POST_TYPE_LABELS$edi !== void 0 ? _POST_TYPE_LABELS$edi : POST_TYPE_LABELS[TEMPLATE_POST_TYPE]);
+  }
+
+  // Only announce the title once the editor is ready to prevent "Replace"
+  // action in <URLQueryController> from double-announcing.
+  useTitle(hasLoadedPost && title);
+}
+/* harmony default export */ const use_editor_title = (useEditorTitle);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+const {
+  Editor,
+  BackButton
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+const {
+  useHistory: editor_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const {
+  BlockKeyboardShortcuts
+} = lock_unlock_unlock(external_wp_blockLibrary_namespaceObject.privateApis);
+function EditSiteEditor({
+  isLoading
+}) {
+  const {
+    editedPostType,
+    editedPostId,
+    contextPostType,
+    contextPostId,
+    editorMode,
+    canvasMode,
+    isEditingPage,
+    supportsGlobalStyles,
+    showIconLabels,
+    editorCanvasView,
+    currentPostIsTrashed
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEditedPostContext,
+      getCanvasMode,
+      isPage,
+      getEditedPostType,
+      getEditedPostId
+    } = lock_unlock_unlock(select(store));
+    const {
+      get
+    } = select(external_wp_preferences_namespaceObject.store);
+    const {
+      getCurrentTheme
+    } = select(external_wp_coreData_namespaceObject.store);
+    const {
+      getEditorMode
+    } = select(external_wp_editor_namespaceObject.store);
+    const _context = getEditedPostContext();
+
+    // The currently selected entity to display.
+    // Typically template or template part in the site editor.
+    return {
+      editedPostType: getEditedPostType(),
+      editedPostId: getEditedPostId(),
+      contextPostType: _context?.postId ? _context.postType : undefined,
+      contextPostId: _context?.postId ? _context.postId : undefined,
+      editorMode: getEditorMode(),
+      canvasMode: getCanvasMode(),
+      isEditingPage: isPage(),
+      supportsGlobalStyles: getCurrentTheme()?.is_block_theme,
+      showIconLabels: get('core', 'showIconLabels'),
+      editorCanvasView: lock_unlock_unlock(select(store)).getEditorCanvasContainerView(),
+      currentPostIsTrashed: select(external_wp_editor_namespaceObject.store).getCurrentPostAttribute('status') === 'trash'
+    };
+  }, []);
+  use_editor_title();
+  const _isPreviewingTheme = isPreviewingTheme();
+  const hasDefaultEditorCanvasView = !useHasEditorCanvasContainer();
+  const iframeProps = useEditorIframeProps();
+  const isViewMode = canvasMode === 'view';
+  const isEditMode = canvasMode === 'edit';
+  const showVisualEditor = isViewMode || editorMode === 'visual';
+  const postWithTemplate = !!contextPostId;
+  const loadingProgressId = (0,external_wp_compose_namespaceObject.useInstanceId)(CanvasLoader, 'edit-site-editor__loading-progress');
+  const settings = useSpecificEditorSettings();
+  const styles = (0,external_wp_element_namespaceObject.useMemo)(() => [...settings.styles, {
+    // Forming a "block formatting context" to prevent margin collapsing.
+    // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
+
+    css: `body{${canvasMode === 'view' ? `min-height: 100vh; ${currentPostIsTrashed ? '' : 'cursor: pointer;'}` : ''}}}`
+  }], [settings.styles, canvasMode, currentPostIsTrashed]);
+  const {
+    setCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const {
+    createSuccessNotice
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
+  const history = editor_useHistory();
+  const onActionPerformed = (0,external_wp_element_namespaceObject.useCallback)((actionId, items) => {
+    switch (actionId) {
+      case 'move-to-trash':
+      case 'delete-post':
+        {
+          history.push({
+            postType: items[0].type
+          });
+        }
+        break;
+      case 'duplicate-post':
+        {
+          const newItem = items[0];
+          const _title = typeof newItem.title === 'string' ? newItem.title : newItem.title?.rendered;
+          createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
+          // translators: %s: Title of the created post e.g: "Post 1".
+          (0,external_wp_i18n_namespaceObject.__)('"%s" successfully created.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(_title)), {
+            type: 'snackbar',
+            id: 'duplicate-post-action',
+            actions: [{
+              label: (0,external_wp_i18n_namespaceObject.__)('Edit'),
+              onClick: () => {
+                history.push({
+                  postId: newItem.id,
+                  postType: newItem.type,
+                  canvas: 'edit'
+                });
+              }
+            }]
+          });
+        }
+        break;
+    }
+  }, [history, createSuccessNotice]);
+  const isReady = !isLoading;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesRenderer, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.EditorKeyboardShortcutsRegister, {}), isEditMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockKeyboardShortcuts, {}), showVisualEditor && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplatePartConverter, {}), !isReady ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CanvasLoader, {
+      id: loadingProgressId
+    }) : null, isEditMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuide, {}), isReady && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Editor, {
+      postType: postWithTemplate ? contextPostType : editedPostType,
+      postId: postWithTemplate ? contextPostId : editedPostId,
+      templateId: postWithTemplate ? editedPostId : undefined,
+      settings: settings,
+      className: dist_clsx('edit-site-editor__editor-interface', {
+        'show-icon-labels': showIconLabels
+      }),
+      styles: styles,
+      enableRegionNavigation: false,
+      customSaveButton: _isPreviewingTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SaveButton, {
+        size: "compact"
+      }),
+      customSavePanel: _isPreviewingTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SavePanel, {}),
+      forceDisableBlockTools: !hasDefaultEditorCanvasView,
+      title: !hasDefaultEditorCanvasView ? getEditorCanvasContainerTitle(editorCanvasView) : undefined,
+      iframeProps: iframeProps,
+      onActionPerformed: onActionPerformed,
+      extraSidebarPanels: !isEditingPage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(plugin_template_setting_panel.Slot, {}),
+      children: [isEditMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BackButton, {
+        children: ({
+          length
+        }) => length <= 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          label: (0,external_wp_i18n_namespaceObject.__)('Open Navigation'),
+          className: "edit-site-layout__view-mode-toggle",
+          onClick: () => setCanvasMode('view'),
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(site_icon, {
+            className: "edit-site-layout__view-mode-toggle-icon"
+          })
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MoreMenu, {}), supportsGlobalStyles && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesSidebar, {})]
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/pagination.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const pagination_Pagination = (0,external_wp_element_namespaceObject.memo)(function Pagination({
+  view,
+  onChangeView,
+  paginationInfo: {
+    totalItems = 0,
+    totalPages
+  }
+}) {
+  var _view$page;
+  if (!totalItems || !totalPages) {
+    return null;
+  }
+  const currentPage = (_view$page = view.page) !== null && _view$page !== void 0 ? _view$page : 1;
+  return !!totalItems && totalPages !== 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+    expanded: false,
+    spacing: 6,
+    justify: "end",
+    className: "dataviews-pagination",
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "flex-start",
+      expanded: false,
+      spacing: 2,
+      className: "dataviews-pagination__page-selection",
+      children: (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: Total number of pages.
+      (0,external_wp_i18n_namespaceObject._x)('Page <CurrentPageControl /> of %s', 'paging'), totalPages), {
+        CurrentPageControl: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, {
+          "aria-label": (0,external_wp_i18n_namespaceObject.__)('Current page'),
+          value: view.page?.toString(),
+          options: Array.from(Array(totalPages)).map((_, i) => {
+            const page = i + 1;
+            return {
+              value: page.toString(),
+              label: page.toString()
+            };
+          }),
+          onChange: newValue => {
+            onChangeView({
+              ...view,
+              page: +newValue
+            });
+          },
+          size: "compact",
+          __nextHasNoMarginBottom: true
+        })
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      expanded: false,
+      spacing: 1,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        onClick: () => onChangeView({
+          ...view,
+          page: currentPage - 1
+        }),
+        disabled: currentPage === 1,
+        __experimentalIsFocusable: true,
+        label: (0,external_wp_i18n_namespaceObject.__)('Previous page'),
+        icon: chevron_left,
+        showTooltip: true,
+        size: "compact",
+        tooltipPosition: "top"
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        onClick: () => onChangeView({
+          ...view,
+          page: currentPage + 1
+        }),
+        disabled: currentPage >= totalPages,
+        __experimentalIsFocusable: true,
+        label: (0,external_wp_i18n_namespaceObject.__)('Next page'),
+        icon: chevron_right,
+        showTooltip: true,
+        size: "compact",
+        tooltipPosition: "top"
+      })]
+    })]
+  });
+});
+/* harmony default export */ const pagination = (pagination_Pagination);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/lock-unlock.js
+/**
+ * WordPress dependencies
+ */
+
+const {
+  lock: lock_unlock_lock,
+  unlock: build_module_lock_unlock_unlock
+} = (0,external_wp_privateApis_namespaceObject.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.', '@wordpress/dataviews');
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/constants.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+// Filter operators.
+const constants_OPERATOR_IS = 'is';
+const constants_OPERATOR_IS_NOT = 'isNot';
+const constants_OPERATOR_IS_ANY = 'isAny';
+const constants_OPERATOR_IS_NONE = 'isNone';
+const OPERATOR_IS_ALL = 'isAll';
+const OPERATOR_IS_NOT_ALL = 'isNotAll';
+const ALL_OPERATORS = [constants_OPERATOR_IS, constants_OPERATOR_IS_NOT, constants_OPERATOR_IS_ANY, constants_OPERATOR_IS_NONE, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL];
+const OPERATORS = {
+  [constants_OPERATOR_IS]: {
+    key: 'is-filter',
+    label: (0,external_wp_i18n_namespaceObject.__)('Is')
+  },
+  [constants_OPERATOR_IS_NOT]: {
+    key: 'is-not-filter',
+    label: (0,external_wp_i18n_namespaceObject.__)('Is not')
+  },
+  [constants_OPERATOR_IS_ANY]: {
+    key: 'is-any-filter',
+    label: (0,external_wp_i18n_namespaceObject.__)('Is any')
+  },
+  [constants_OPERATOR_IS_NONE]: {
+    key: 'is-none-filter',
+    label: (0,external_wp_i18n_namespaceObject.__)('Is none')
+  },
+  [OPERATOR_IS_ALL]: {
+    key: 'is-all-filter',
+    label: (0,external_wp_i18n_namespaceObject.__)('Is all')
+  },
+  [OPERATOR_IS_NOT_ALL]: {
+    key: 'is-not-all-filter',
+    label: (0,external_wp_i18n_namespaceObject.__)('Is not all')
+  }
+};
+const SORTING_DIRECTIONS = ['asc', 'desc'];
+const sortArrows = {
+  asc: '↑',
+  desc: '↓'
+};
+const sortValues = {
+  asc: 'ascending',
+  desc: 'descending'
+};
+const sortLabels = {
+  asc: (0,external_wp_i18n_namespaceObject.__)('Sort ascending'),
+  desc: (0,external_wp_i18n_namespaceObject.__)('Sort descending')
+};
+
+// View layouts.
+const constants_LAYOUT_TABLE = 'table';
+const constants_LAYOUT_GRID = 'grid';
+const constants_LAYOUT_LIST = 'list';
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/block-table.js
+/**
+ * WordPress dependencies
+ */
+
+
+const blockTable = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z"
+  })
+});
+/* harmony default export */ const block_table = (blockTable);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/category.js
+/**
+ * WordPress dependencies
+ */
+
+
+const category = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z",
+    fillRule: "evenodd",
+    clipRule: "evenodd"
+  })
+});
+/* harmony default export */ const library_category = (category);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-list-bullets-rtl.js
+/**
+ * WordPress dependencies
+ */
+
+
+const formatListBulletsRTL = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"
+  })
+});
+/* harmony default export */ const format_list_bullets_rtl = (formatListBulletsRTL);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-list-bullets.js
+/**
+ * WordPress dependencies
+ */
+
+
+const formatListBullets = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
+  })
+});
+/* harmony default export */ const format_list_bullets = (formatListBullets);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/funnel.js
+/**
+ * WordPress dependencies
+ */
+
+
+const funnel = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z"
+  })
+});
+/* harmony default export */ const library_funnel = (funnel);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/unseen.js
+/**
+ * WordPress dependencies
+ */
+
+
+const unseen = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M4.67 10.664s-2.09 1.11-2.917 1.582l.494.87 1.608-.914.002.002c.343.502.86 1.17 1.563 1.84.348.33.742.663 1.185.976L5.57 16.744l.858.515 1.02-1.701a9.1 9.1 0 0 0 4.051 1.18V19h1v-2.263a9.1 9.1 0 0 0 4.05-1.18l1.021 1.7.858-.514-1.034-1.723c.442-.313.837-.646 1.184-.977.703-.669 1.22-1.337 1.563-1.839l.002-.003 1.61.914.493-.87c-1.75-.994-2.918-1.58-2.918-1.58l-.003.005a8.29 8.29 0 0 1-.422.689 10.097 10.097 0 0 1-1.36 1.598c-1.218 1.16-3.042 2.293-5.544 2.293-2.503 0-4.327-1.132-5.546-2.293a10.099 10.099 0 0 1-1.359-1.599 8.267 8.267 0 0 1-.422-.689l-.003-.005Z"
+  })
+});
+/* harmony default export */ const library_unseen = (unseen);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/single-selection-checkbox.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+function SingleSelectionCheckbox({
+  selection,
+  onSelectionChange,
+  item,
+  data,
+  getItemId,
+  primaryField,
+  disabled
+}) {
+  const id = getItemId(item);
+  const isSelected = !disabled && selection.includes(id);
+  let selectionLabel;
+  if (primaryField?.getValue && item) {
+    // eslint-disable-next-line @wordpress/valid-sprintf
+    selectionLabel = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: item title. */
+    isSelected ? (0,external_wp_i18n_namespaceObject.__)('Deselect item: %s') : (0,external_wp_i18n_namespaceObject.__)('Select item: %s'), primaryField.getValue({
+      item
+    }));
+  } else {
+    selectionLabel = isSelected ? (0,external_wp_i18n_namespaceObject.__)('Select a new item') : (0,external_wp_i18n_namespaceObject.__)('Deselect item');
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
+    className: "dataviews-view-table-selection-checkbox",
+    __nextHasNoMarginBottom: true,
+    "aria-label": selectionLabel,
+    "aria-disabled": disabled,
+    checked: isSelected,
+    onChange: () => {
+      if (disabled) {
+        return;
+      }
+      if (!isSelected) {
+        onSelectionChange(data.filter(_item => {
+          const itemId = getItemId?.(_item);
+          return itemId === id || selection.includes(itemId);
+        }));
+      } else {
+        onSelectionChange(data.filter(_item => {
+          const itemId = getItemId?.(_item);
+          return itemId !== id && selection.includes(itemId);
+        }));
+      }
+    }
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/item-actions.js
+/**
+ * External dependencies
+ */
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  DropdownMenuV2: item_actions_DropdownMenu,
+  DropdownMenuGroupV2: DropdownMenuGroup,
+  DropdownMenuItemV2: item_actions_DropdownMenuItem,
+  DropdownMenuItemLabelV2: item_actions_DropdownMenuItemLabel,
+  kebabCase: item_actions_kebabCase
+} = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function ButtonTrigger({
+  action,
+  onClick,
+  items
+}) {
+  const label = typeof action.label === 'string' ? action.label : action.label(items);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+    label: label,
+    icon: action.icon,
+    isDestructive: action.isDestructive,
+    size: "compact",
+    onClick: onClick
+  });
+}
+function DropdownMenuItemTrigger({
+  action,
+  onClick,
+  items
+}) {
+  const label = typeof action.label === 'string' ? action.label : action.label(items);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(item_actions_DropdownMenuItem, {
+    onClick: onClick,
+    hideOnClick: !('RenderModal' in action),
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(item_actions_DropdownMenuItemLabel, {
+      children: label
+    })
+  });
+}
+function ActionModal({
+  action,
+  items,
+  closeModal
+}) {
+  const label = typeof action.label === 'string' ? action.label : action.label(items);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
+    title: action.modalHeader || label,
+    __experimentalHideHeader: !!action.hideModalHeader,
+    onRequestClose: closeModal !== null && closeModal !== void 0 ? closeModal : () => {},
+    overlayClassName: `dataviews-action-modal dataviews-action-modal__${item_actions_kebabCase(action.id)}`,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(action.RenderModal, {
+      items: items,
+      closeModal: closeModal,
+      onActionStart: action.onActionStart,
+      onActionPerformed: action.onActionPerformed
+    })
+  });
+}
+function ActionWithModal({
+  action,
+  items,
+  ActionTrigger,
+  isBusy
+}) {
+  const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
+  const actionTriggerProps = {
+    action,
+    onClick: () => {
+      setIsModalOpen(true);
+    },
+    items,
+    isBusy
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionTrigger, {
+      ...actionTriggerProps
+    }), isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionModal, {
+      action: action,
+      items: items,
+      closeModal: () => setIsModalOpen(false)
+    })]
+  });
+}
+function ActionsDropdownMenuGroup({
+  actions,
+  item
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuGroup, {
+    children: actions.map(action => {
+      if ('RenderModal' in action) {
+        return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionWithModal, {
+          action: action,
+          items: [item],
+          ActionTrigger: DropdownMenuItemTrigger
+        }, action.id);
+      }
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuItemTrigger, {
+        action: action,
+        onClick: () => action.callback([item]),
+        items: [item]
+      }, action.id);
+    })
+  });
+}
+function ItemActions({
+  item,
+  actions,
+  isCompact
+}) {
+  const {
+    primaryActions,
+    eligibleActions
+  } = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    // If an action is eligible for all items, doesn't need
+    // to provide the `isEligible` function.
+    const _eligibleActions = actions.filter(action => !action.isEligible || action.isEligible(item));
+    const _primaryActions = _eligibleActions.filter(action => action.isPrimary && !!action.icon);
+    return {
+      primaryActions: _primaryActions,
+      eligibleActions: _eligibleActions
+    };
+  }, [actions, item]);
+  if (isCompact) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CompactItemActions, {
+      item: item,
+      actions: eligibleActions
+    });
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+    spacing: 1,
+    justify: "flex-end",
+    className: "dataviews-item-actions",
+    style: {
+      flexShrink: '0',
+      width: 'auto'
+    },
+    children: [!!primaryActions.length && primaryActions.map(action => {
+      if ('RenderModal' in action) {
+        return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionWithModal, {
+          action: action,
+          items: [item],
+          ActionTrigger: ButtonTrigger
+        }, action.id);
+      }
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ButtonTrigger, {
+        action: action,
+        onClick: () => action.callback([item]),
+        items: [item]
+      }, action.id);
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CompactItemActions, {
+      item: item,
+      actions: eligibleActions
+    })]
+  });
+}
+function CompactItemActions({
+  item,
+  actions
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(item_actions_DropdownMenu, {
+    trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+      size: "compact",
+      icon: more_vertical,
+      label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
+      __experimentalIsFocusable: true,
+      disabled: !actions.length,
+      className: "dataviews-all-actions-button"
+    }),
+    placement: "bottom-end",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionsDropdownMenuGroup, {
+      actions: actions,
+      item: item
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/utils.js
+/**
+ * Internal dependencies
+ */
+
+function sanitizeOperators(field) {
+  let operators = field.filterBy?.operators;
+
+  // Assign default values.
+  if (!operators || !Array.isArray(operators)) {
+    operators = [constants_OPERATOR_IS_ANY, constants_OPERATOR_IS_NONE];
+  }
+
+  // Make sure only valid operators are used.
+  operators = operators.filter(operator => ALL_OPERATORS.includes(operator));
+
+  // Do not allow mixing single & multiselection operators.
+  // Remove multiselection operators if any of the single selection ones is present.
+  if (operators.includes(constants_OPERATOR_IS) || operators.includes(constants_OPERATOR_IS_NOT)) {
+    operators = operators.filter(operator => [constants_OPERATOR_IS, constants_OPERATOR_IS_NOT].includes(operator));
+  }
+  return operators;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/bulk-actions.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  DropdownMenuV2: bulk_actions_DropdownMenu,
+  DropdownMenuGroupV2: bulk_actions_DropdownMenuGroup,
+  DropdownMenuItemV2: bulk_actions_DropdownMenuItem,
+  DropdownMenuSeparatorV2: DropdownMenuSeparator
+} = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function useHasAPossibleBulkAction(actions, item) {
+  return (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return actions.some(action => {
+      return action.supportsBulk && (!action.isEligible || action.isEligible(item));
+    });
+  }, [actions, item]);
+}
+function useSomeItemHasAPossibleBulkAction(actions, data) {
+  return (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return data.some(item => {
+      return actions.some(action => {
+        return action.supportsBulk && (!action.isEligible || action.isEligible(item));
+      });
+    });
+  }, [actions, data]);
+}
+function bulk_actions_ActionWithModal({
+  action,
+  selectedItems,
+  setActionWithModal,
+  onMenuOpenChange
+}) {
+  const eligibleItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return selectedItems.filter(item => !action.isEligible || action.isEligible(item));
+  }, [action, selectedItems]);
+  const {
+    RenderModal,
+    hideModalHeader
+  } = action;
+  const onCloseModal = (0,external_wp_element_namespaceObject.useCallback)(() => {
+    setActionWithModal(undefined);
+  }, [setActionWithModal]);
+  if (!eligibleItems.length) {
+    return null;
+  }
+  const label = typeof action.label === 'string' ? action.label : action.label(selectedItems);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
+    title: !hideModalHeader ? label : undefined,
+    __experimentalHideHeader: !!hideModalHeader,
+    onRequestClose: onCloseModal,
+    overlayClassName: "dataviews-action-modal",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenderModal, {
+      items: eligibleItems,
+      closeModal: onCloseModal,
+      onActionPerformed: () => onMenuOpenChange(false)
+    })
+  });
+}
+function BulkActionItem({
+  action,
+  selectedItems,
+  setActionWithModal
+}) {
+  const eligibleItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return selectedItems.filter(item => !action.isEligible || action.isEligible(item));
+  }, [action, selectedItems]);
+  const shouldShowModal = ('RenderModal' in action);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(bulk_actions_DropdownMenuItem, {
+    disabled: eligibleItems.length === 0,
+    hideOnClick: !shouldShowModal,
+    onClick: async () => {
+      if (shouldShowModal) {
+        setActionWithModal(action);
+      } else {
+        await action.callback(eligibleItems);
+      }
+    },
+    suffix: eligibleItems.length > 0 ? eligibleItems.length : undefined,
+    children: action.label
+  }, action.id);
+}
+function ActionsMenuGroup({
+  actions,
+  selectedItems,
+  setActionWithModal
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(bulk_actions_DropdownMenuGroup, {
+      children: actions.map(action => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkActionItem, {
+        action: action,
+        selectedItems: selectedItems,
+        setActionWithModal: setActionWithModal
+      }, action.id))
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuSeparator, {})]
+  });
+}
+function BulkActions({
+  data,
+  actions,
+  selection,
+  onSelectionChange,
+  getItemId
+}) {
+  const bulkActions = (0,external_wp_element_namespaceObject.useMemo)(() => actions.filter(action => action.supportsBulk), [actions]);
+  const [isMenuOpen, onMenuOpenChange] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [actionWithModal, setActionWithModal] = (0,external_wp_element_namespaceObject.useState)();
+  const selectableItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return data.filter(item => {
+      return bulkActions.some(action => !action.isEligible || action.isEligible(item));
+    });
+  }, [data, bulkActions]);
+  const numberSelectableItems = selectableItems.length;
+  const selectedItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item));
+  }, [selection, data, getItemId, selectableItems]);
+  const areAllSelected = selectedItems.length === numberSelectableItems;
+  if (bulkActions.length === 0) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(bulk_actions_DropdownMenu, {
+      open: isMenuOpen,
+      onOpenChange: onMenuOpenChange,
+      label: (0,external_wp_i18n_namespaceObject.__)('Bulk actions'),
+      style: {
+        minWidth: '240px'
+      },
+      trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        className: "dataviews-bulk-edit-button",
+        __next40pxDefaultSize: true,
+        variant: "tertiary",
+        size: "compact",
+        children: selectedItems.length ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %d: Number of items. */
+        (0,external_wp_i18n_namespaceObject._n)('Edit %d item', 'Edit %d items', selectedItems.length), selectedItems.length) : (0,external_wp_i18n_namespaceObject.__)('Bulk edit')
+      }),
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionsMenuGroup, {
+        actions: bulkActions,
+        setActionWithModal: setActionWithModal,
+        selectedItems: selectedItems
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(bulk_actions_DropdownMenuGroup, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(bulk_actions_DropdownMenuItem, {
+          disabled: areAllSelected,
+          hideOnClick: false,
+          onClick: () => {
+            onSelectionChange(selectableItems);
+          },
+          suffix: numberSelectableItems,
+          children: (0,external_wp_i18n_namespaceObject.__)('Select all')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(bulk_actions_DropdownMenuItem, {
+          disabled: selection.length === 0,
+          hideOnClick: false,
+          onClick: () => {
+            onSelectionChange([]);
+          },
+          children: (0,external_wp_i18n_namespaceObject.__)('Deselect')
+        })]
+      })]
+    }), actionWithModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(bulk_actions_ActionWithModal, {
+      action: actionWithModal,
+      selectedItems: selectedItems,
+      setActionWithModal: setActionWithModal,
+      onMenuOpenChange: onMenuOpenChange
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/view-table.js
+/**
+ * External dependencies
+ */
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+const {
+  DropdownMenuV2: view_table_DropdownMenu,
+  DropdownMenuGroupV2: view_table_DropdownMenuGroup,
+  DropdownMenuItemV2: view_table_DropdownMenuItem,
+  DropdownMenuRadioItemV2: DropdownMenuRadioItem,
+  DropdownMenuItemLabelV2: view_table_DropdownMenuItemLabel,
+  DropdownMenuSeparatorV2: view_table_DropdownMenuSeparator
+} = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function WithDropDownMenuSeparators({
+  children
+}) {
+  return external_wp_element_namespaceObject.Children.toArray(children).filter(Boolean).map((child, i) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_element_namespaceObject.Fragment, {
+    children: [i > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuSeparator, {}), child]
+  }, i));
+}
+const _HeaderMenu = (0,external_wp_element_namespaceObject.forwardRef)(function HeaderMenu({
+  field,
+  view,
+  onChangeView,
+  onHide,
+  setOpenedFilter
+}, ref) {
+  const isHidable = field.enableHiding !== false;
+  const isSortable = field.enableSorting !== false;
+  const isSorted = view.sort?.field === field.id;
+  const operators = sanitizeOperators(field);
+  // Filter can be added:
+  // 1. If the field is not already part of a view's filters.
+  // 2. If the field meets the type and operator requirements.
+  // 3. If it's not primary. If it is, it should be already visible.
+  const canAddFilter = !view.filters?.some(_filter => field.id === _filter.field) && !!field.elements?.length && !!operators.length && !field.filterBy?.isPrimary;
+  if (!isSortable && !isHidable && !canAddFilter) {
+    return field.header;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenu, {
+    align: "start",
+    trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Button, {
+      size: "compact",
+      className: "dataviews-view-table-header-button",
+      ref: ref,
+      variant: "tertiary",
+      children: [field.header, view.sort && isSorted && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+        "aria-hidden": "true",
+        children: sortArrows[view.sort.direction]
+      })]
+    }),
+    style: {
+      minWidth: '240px'
+    },
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(WithDropDownMenuSeparators, {
+      children: [isSortable && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuGroup, {
+        children: SORTING_DIRECTIONS.map(direction => {
+          const isChecked = view.sort && isSorted && view.sort.direction === direction;
+          const value = `${field.id}-${direction}`;
+          return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuRadioItem, {
+            // All sorting radio items share the same name, so that
+            // selecting a sorting option automatically deselects the
+            // previously selected one, even if it is displayed in
+            // another submenu. The field and direction are passed via
+            // the `value` prop.
+            name: "view-table-sorting",
+            value: value,
+            checked: isChecked,
+            onChange: () => {
+              onChangeView({
+                ...view,
+                sort: {
+                  field: field.id,
+                  direction
+                }
+              });
+            },
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuItemLabel, {
+              children: sortLabels[direction]
+            })
+          }, value);
+        })
+      }), canAddFilter && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuGroup, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuItem, {
+          prefix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+            icon: library_funnel
+          }),
+          onClick: () => {
+            setOpenedFilter(field.id);
+            onChangeView({
+              ...view,
+              page: 1,
+              filters: [...(view.filters || []), {
+                field: field.id,
+                value: undefined,
+                operator: operators[0]
+              }]
+            });
+          },
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuItemLabel, {
+            children: (0,external_wp_i18n_namespaceObject.__)('Add filter')
+          })
+        })
+      }), isHidable && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuItem, {
+        prefix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+          icon: library_unseen
+        }),
+        onClick: () => {
+          onHide(field);
+          onChangeView({
+            ...view,
+            hiddenFields: view.hiddenFields.concat(field.id)
+          });
+        },
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuItemLabel, {
+          children: (0,external_wp_i18n_namespaceObject.__)('Hide')
+        })
+      })]
+    })
+  });
+});
+
+// @ts-expect-error Lift the `Item` type argument through the forwardRef.
+const HeaderMenu = _HeaderMenu;
+function BulkSelectionCheckbox({
+  selection,
+  onSelectionChange,
+  data,
+  actions,
+  getItemId
+}) {
+  const selectableItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return data.filter(item => {
+      return actions.some(action => action.supportsBulk && (!action.isEligible || action.isEligible(item)));
+    });
+  }, [data, actions]);
+  const selectedItems = data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item));
+  const areAllSelected = selectedItems.length === selectableItems.length;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
+    className: "dataviews-view-table-selection-checkbox",
+    __nextHasNoMarginBottom: true,
+    checked: areAllSelected,
+    indeterminate: !areAllSelected && !!selectedItems.length,
+    onChange: () => {
+      if (areAllSelected) {
+        onSelectionChange([]);
+      } else {
+        onSelectionChange(selectableItems);
+      }
+    },
+    "aria-label": areAllSelected ? (0,external_wp_i18n_namespaceObject.__)('Deselect all') : (0,external_wp_i18n_namespaceObject.__)('Select all')
+  });
+}
+function TableRow({
+  hasBulkActions,
+  item,
+  actions,
+  id,
+  visibleFields,
+  primaryField,
+  selection,
+  getItemId,
+  onSelectionChange,
+  data
+}) {
+  const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item);
+  const isSelected = hasPossibleBulkAction && selection.includes(id);
+  const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false);
+  const handleMouseEnter = () => {
+    setIsHovered(true);
+  };
+  const handleMouseLeave = () => {
+    setIsHovered(false);
+  };
+
+  // Will be set to true if `onTouchStart` fires. This happens before
+  // `onClick` and can be used to exclude touchscreen devices from certain
+  // behaviours.
+  const isTouchDevice = (0,external_wp_element_namespaceObject.useRef)(false);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("tr", {
+    className: dist_clsx('dataviews-view-table__row', {
+      'is-selected': hasPossibleBulkAction && isSelected,
+      'is-hovered': isHovered,
+      'has-bulk-actions': hasPossibleBulkAction
+    }),
+    onMouseEnter: handleMouseEnter,
+    onMouseLeave: handleMouseLeave,
+    onTouchStart: () => {
+      isTouchDevice.current = true;
+    },
+    onClick: () => {
+      if (!hasPossibleBulkAction) {
+        return;
+      }
+      if (!isTouchDevice.current && document.getSelection()?.type !== 'Range') {
+        if (!isSelected) {
+          onSelectionChange(data.filter(_item => {
+            const itemId = getItemId?.(_item);
+            return itemId === id || selection.includes(itemId);
+          }));
+        } else {
+          onSelectionChange(data.filter(_item => {
+            const itemId = getItemId?.(_item);
+            return itemId !== id && selection.includes(itemId);
+          }));
+        }
+      }
+    },
+    children: [hasBulkActions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("td", {
+      className: "dataviews-view-table__checkbox-column",
+      style: {
+        width: '1%'
+      },
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: "dataviews-view-table__cell-content-wrapper",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleSelectionCheckbox, {
+          item: item,
+          selection: selection,
+          onSelectionChange: onSelectionChange,
+          getItemId: getItemId,
+          data: data,
+          primaryField: primaryField,
+          disabled: !hasPossibleBulkAction
+        })
+      })
+    }), visibleFields.map(field => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("td", {
+      style: {
+        width: field.width || undefined,
+        minWidth: field.minWidth || undefined,
+        maxWidth: field.maxWidth || undefined
+      },
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: dist_clsx('dataviews-view-table__cell-content-wrapper', {
+          'dataviews-view-table__primary-field': primaryField?.id === field.id
+        }),
+        children: field.render({
+          item
+        })
+      })
+    }, field.id)), !!actions?.length &&
+    /*#__PURE__*/
+    // Disable reason: we are not making the element interactive,
+    // but preventing any click events from bubbling up to the
+    // table row. This allows us to add a click handler to the row
+    // itself (to toggle row selection) without erroneously
+    // intercepting click events from ItemActions.
+    /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
+    (0,external_ReactJSXRuntime_namespaceObject.jsx)("td", {
+      className: "dataviews-view-table__actions-column",
+      onClick: e => e.stopPropagation(),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ItemActions, {
+        item: item,
+        actions: actions
+      })
+    })
+    /* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */]
+  });
+}
+function ViewTable({
+  actions,
+  data,
+  fields,
+  getItemId,
+  isLoading = false,
+  onChangeView,
+  onSelectionChange,
+  selection,
+  setOpenedFilter,
+  view
+}) {
+  const headerMenuRefs = (0,external_wp_element_namespaceObject.useRef)(new Map());
+  const headerMenuToFocusRef = (0,external_wp_element_namespaceObject.useRef)();
+  const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0,external_wp_element_namespaceObject.useState)();
+  const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (headerMenuToFocusRef.current) {
+      headerMenuToFocusRef.current.focus();
+      headerMenuToFocusRef.current = undefined;
+    }
+  });
+  const tableNoticeId = (0,external_wp_element_namespaceObject.useId)();
+  if (nextHeaderMenuToFocus) {
+    // If we need to force focus, we short-circuit rendering here
+    // to prevent any additional work while we handle that.
+    // Clearing out the focus directive is necessary to make sure
+    // future renders don't cause unexpected focus jumps.
+    headerMenuToFocusRef.current = nextHeaderMenuToFocus;
+    setNextHeaderMenuToFocus(undefined);
+    return;
+  }
+  const onHide = field => {
+    const hidden = headerMenuRefs.current.get(field.id);
+    const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : undefined;
+    setNextHeaderMenuToFocus(fallback?.node);
+  };
+  const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.mediaField].includes(field.id));
+  const hasData = !!data?.length;
+  const primaryField = fields.find(field => field.id === view.layout.primaryField);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("table", {
+      className: "dataviews-view-table",
+      "aria-busy": isLoading,
+      "aria-describedby": tableNoticeId,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("thead", {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("tr", {
+          className: "dataviews-view-table__row",
+          children: [hasBulkActions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("th", {
+            className: "dataviews-view-table__checkbox-column",
+            style: {
+              width: '1%'
+            },
+            "data-field-id": "selection",
+            scope: "col",
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkSelectionCheckbox, {
+              selection: selection,
+              onSelectionChange: onSelectionChange,
+              data: data,
+              actions: actions,
+              getItemId: getItemId
+            })
+          }), visibleFields.map((field, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("th", {
+            style: {
+              width: field.width || undefined,
+              minWidth: field.minWidth || undefined,
+              maxWidth: field.maxWidth || undefined
+            },
+            "data-field-id": field.id,
+            "aria-sort": view.sort?.field === field.id ? sortValues[view.sort.direction] : undefined,
+            scope: "col",
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(HeaderMenu, {
+              ref: node => {
+                if (node) {
+                  headerMenuRefs.current.set(field.id, {
+                    node,
+                    fallback: visibleFields[index > 0 ? index - 1 : 1]?.id
+                  });
+                } else {
+                  headerMenuRefs.current.delete(field.id);
+                }
+              },
+              field: field,
+              view: view,
+              onChangeView: onChangeView,
+              onHide: onHide,
+              setOpenedFilter: setOpenedFilter
+            })
+          }, field.id)), !!actions?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("th", {
+            "data-field-id": "actions",
+            className: "dataviews-view-table__actions-column",
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+              className: "dataviews-view-table-header",
+              children: (0,external_wp_i18n_namespaceObject.__)('Actions')
+            })
+          })]
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("tbody", {
+        children: hasData && data.map((item, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TableRow, {
+          item: item,
+          hasBulkActions: hasBulkActions,
+          actions: actions,
+          id: getItemId(item) || index.toString(),
+          visibleFields: visibleFields,
+          primaryField: primaryField,
+          selection: selection,
+          getItemId: getItemId,
+          onSelectionChange: onSelectionChange,
+          data: data
+        }, getItemId(item)))
+      })]
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: dist_clsx({
+        'dataviews-loading': isLoading,
+        'dataviews-no-results': !hasData && !isLoading
+      }),
+      id: tableNoticeId,
+      children: !hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+        children: isLoading ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No results')
+      })
+    })]
+  });
+}
+/* harmony default export */ const view_table = (ViewTable);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/view-grid.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+function GridItem({
+  selection,
+  data,
+  onSelectionChange,
+  getItemId,
+  item,
+  actions,
+  mediaField,
+  primaryField,
+  visibleFields,
+  badgeFields,
+  columnFields
+}) {
+  const hasBulkAction = useHasAPossibleBulkAction(actions, item);
+  const id = getItemId(item);
+  const isSelected = selection.includes(id);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    spacing: 0,
+    className: dist_clsx('dataviews-view-grid__card', {
+      'is-selected': hasBulkAction && isSelected
+    }),
+    onClickCapture: event => {
+      if (event.ctrlKey || event.metaKey) {
+        event.stopPropagation();
+        event.preventDefault();
+        if (!hasBulkAction) {
+          return;
+        }
+        if (!isSelected) {
+          onSelectionChange(data.filter(_item => {
+            const itemId = getItemId?.(_item);
+            return itemId === id || selection.includes(itemId);
+          }));
+        } else {
+          onSelectionChange(data.filter(_item => {
+            const itemId = getItemId?.(_item);
+            return itemId !== id && selection.includes(itemId);
+          }));
+        }
+      }
+    },
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "dataviews-view-grid__media",
+      children: mediaField?.render({
+        item
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "space-between",
+      className: "dataviews-view-grid__title-actions",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleSelectionCheckbox, {
+        item: item,
+        selection: selection,
+        onSelectionChange: onSelectionChange,
+        getItemId: getItemId,
+        data: data,
+        primaryField: primaryField,
+        disabled: !hasBulkAction
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+        className: "dataviews-view-grid__primary-field",
+        children: primaryField?.render({
+          item
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ItemActions, {
+        item: item,
+        actions: actions,
+        isCompact: true
+      })]
+    }), !!badgeFields?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+      className: "dataviews-view-grid__badge-fields",
+      spacing: 2,
+      wrap: true,
+      alignment: "top",
+      justify: "flex-start",
+      children: badgeFields.map(field => {
+        const renderedValue = field.render({
+          item
+        });
+        if (!renderedValue) {
+          return null;
+        }
+        return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+          className: "dataviews-view-grid__field-value",
+          children: renderedValue
+        }, field.id);
+      })
+    }), !!visibleFields?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
+      className: "dataviews-view-grid__fields",
+      spacing: 3,
+      children: visibleFields.map(field => {
+        const renderedValue = field.render({
+          item
+        });
+        if (!renderedValue) {
+          return null;
+        }
+        return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
+          className: dist_clsx('dataviews-view-grid__field', columnFields?.includes(field.id) ? 'is-column' : 'is-row'),
+          gap: 1,
+          justify: "flex-start",
+          expanded: true,
+          style: {
+            height: 'auto'
+          },
+          direction: columnFields?.includes(field.id) ? 'column' : 'row',
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+              className: "dataviews-view-grid__field-name",
+              children: field.header
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+              className: "dataviews-view-grid__field-value",
+              style: {
+                maxHeight: 'none'
+              },
+              children: renderedValue
+            })]
+          })
+        }, field.id);
+      })
+    })]
+  }, id);
+}
+function ViewGrid({
+  actions,
+  data,
+  fields,
+  getItemId,
+  isLoading,
+  onSelectionChange,
+  selection,
+  view
+}) {
+  const mediaField = fields.find(field => field.id === view.layout.mediaField);
+  const primaryField = fields.find(field => field.id === view.layout.primaryField);
+  const {
+    visibleFields,
+    badgeFields
+  } = fields.reduce((accumulator, field) => {
+    if (view.hiddenFields.includes(field.id) || [view.layout.mediaField, view.layout.primaryField].includes(field.id)) {
+      return accumulator;
+    }
+    // If the field is a badge field, add it to the badgeFields array
+    // otherwise add it to the rest visibleFields array.
+    const key = view.layout.badgeFields?.includes(field.id) ? 'badgeFields' : 'visibleFields';
+    accumulator[key].push(field);
+    return accumulator;
+  }, {
+    visibleFields: [],
+    badgeFields: []
+  });
+  const hasData = !!data?.length;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
+      gap: 8,
+      columns: 2,
+      alignment: "top",
+      className: "dataviews-view-grid",
+      "aria-busy": isLoading,
+      children: data.map(item => {
+        return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GridItem, {
+          selection: selection,
+          data: data,
+          onSelectionChange: onSelectionChange,
+          getItemId: getItemId,
+          item: item,
+          actions: actions,
+          mediaField: mediaField,
+          primaryField: primaryField,
+          visibleFields: visibleFields,
+          badgeFields: badgeFields,
+          columnFields: view.layout.columnFields
+        }, getItemId(item));
+      })
+    }), !hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: dist_clsx({
+        'dataviews-loading': isLoading,
+        'dataviews-no-results': !isLoading
+      }),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+        children: isLoading ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No results')
+      })
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/view-list.js
+/**
+ * External dependencies
+ */
+
+// Import CompositeStore type, which is not exported from @wordpress/components.
+// eslint-disable-next-line no-restricted-imports
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  useCompositeStoreV2: view_list_useCompositeStore,
+  CompositeV2: view_list_Composite,
+  CompositeItemV2: view_list_CompositeItem,
+  CompositeRowV2: CompositeRow,
+  DropdownMenuV2: view_list_DropdownMenu
+} = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function ListItem({
+  actions,
+  id,
+  isSelected,
+  item,
+  mediaField,
+  onSelect,
+  primaryField,
+  store,
+  visibleFields
+}) {
+  const itemRef = (0,external_wp_element_namespaceObject.useRef)(null);
+  const labelId = `${id}-label`;
+  const descriptionId = `${id}-description`;
+  const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false);
+  const handleMouseEnter = () => {
+    setIsHovered(true);
+  };
+  const handleMouseLeave = () => {
+    setIsHovered(false);
+  };
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (isSelected) {
+      itemRef.current?.scrollIntoView({
+        behavior: 'auto',
+        block: 'nearest',
+        inline: 'nearest'
+      });
+    }
+  }, [isSelected]);
+  const {
+    primaryAction,
+    eligibleActions
+  } = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    // If an action is eligible for all items, doesn't need
+    // to provide the `isEligible` function.
+    const _eligibleActions = actions.filter(action => !action.isEligible || action.isEligible(item));
+    const _primaryActions = _eligibleActions.filter(action => action.isPrimary && !!action.icon);
+    return {
+      primaryAction: _primaryActions?.[0],
+      eligibleActions: _eligibleActions
+    };
+  }, [actions, item]);
+  const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
+  const primaryActionLabel = primaryAction && (typeof primaryAction.label === 'string' ? primaryAction.label : primaryAction.label([item]));
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CompositeRow, {
+    ref: itemRef,
+    render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {}),
+    role: "row",
+    className: dist_clsx({
+      'is-selected': isSelected,
+      'is-hovered': isHovered
+    }),
+    onMouseEnter: handleMouseEnter,
+    onMouseLeave: handleMouseLeave,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      className: "dataviews-view-list__item-wrapper",
+      alignment: "center",
+      spacing: 0,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        role: "gridcell",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_CompositeItem, {
+          store: store,
+          render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {}),
+          role: "button",
+          id: id,
+          "aria-pressed": isSelected,
+          "aria-labelledby": labelId,
+          "aria-describedby": descriptionId,
+          className: "dataviews-view-list__item",
+          onClick: () => onSelect(item),
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+            spacing: 3,
+            justify: "start",
+            alignment: "flex-start",
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+              className: "dataviews-view-list__media-wrapper",
+              children: mediaField?.render({
+                item
+              }) || /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+                className: "dataviews-view-list__media-placeholder"
+              })
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+              spacing: 0,
+              children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+                className: "dataviews-view-list__primary-field",
+                id: labelId,
+                children: primaryField?.render({
+                  item
+                })
+              }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+                className: "dataviews-view-list__fields",
+                id: descriptionId,
+                children: visibleFields.map(field => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+                  className: "dataviews-view-list__field",
+                  children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, {
+                    as: "span",
+                    className: "dataviews-view-list__field-label",
+                    children: field.header
+                  }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+                    className: "dataviews-view-list__field-value",
+                    children: field.render({
+                      item
+                    })
+                  })]
+                }, field.id))
+              })]
+            })]
+          })
+        })
+      }), eligibleActions?.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        spacing: 1,
+        justify: "flex-end",
+        className: "dataviews-view-list__item-actions",
+        style: {
+          flexShrink: '0',
+          width: 'auto'
+        },
+        children: [primaryAction && 'RenderModal' in primaryAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          role: "gridcell",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_CompositeItem, {
+            store: store,
+            render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+              label: primaryActionLabel,
+              icon: primaryAction.icon,
+              isDestructive: primaryAction.isDestructive,
+              size: "compact",
+              onClick: () => setIsModalOpen(true)
+            }),
+            children: isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionModal, {
+              action: primaryAction,
+              items: [item],
+              closeModal: () => setIsModalOpen(false)
+            })
+          })
+        }), primaryAction && !('RenderModal' in primaryAction) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          role: "gridcell",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_CompositeItem, {
+            store: store,
+            render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+              label: primaryActionLabel,
+              icon: primaryAction.icon,
+              isDestructive: primaryAction.isDestructive,
+              size: "compact",
+              onClick: () => primaryAction.callback([item])
+            })
+          })
+        }, primaryAction.id), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          role: "gridcell",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_DropdownMenu, {
+            trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_CompositeItem, {
+              store: store,
+              render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+                size: "compact",
+                icon: more_vertical,
+                label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
+                __experimentalIsFocusable: true,
+                disabled: !actions.length,
+                onKeyDown: event => {
+                  if (event.key === 'ArrowDown') {
+                    // Prevent the default behaviour (open dropdown menu) and go down.
+                    event.preventDefault();
+                    store.move(store.down());
+                  }
+                  if (event.key === 'ArrowUp') {
+                    // Prevent the default behavior (open dropdown menu) and go up.
+                    event.preventDefault();
+                    store.move(store.up());
+                  }
+                }
+              })
+            }),
+            placement: "bottom-end",
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionsDropdownMenuGroup, {
+              actions: eligibleActions,
+              item: item
+            })
+          })
+        })]
+      })]
+    })
+  });
+}
+function ViewList(props) {
+  const {
+    actions,
+    data,
+    fields,
+    getItemId,
+    isLoading,
+    onSelectionChange,
+    selection,
+    view
+  } = props;
+  const baseId = (0,external_wp_compose_namespaceObject.useInstanceId)(ViewList, 'view-list');
+  const selectedItem = data?.findLast(item => selection.includes(getItemId(item)));
+  const mediaField = fields.find(field => field.id === view.layout.mediaField);
+  const primaryField = fields.find(field => field.id === view.layout.primaryField);
+  const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.primaryField, view.layout.mediaField].includes(field.id));
+  const onSelect = (0,external_wp_element_namespaceObject.useCallback)(item => onSelectionChange([item]), [onSelectionChange]);
+  const getItemDomId = (0,external_wp_element_namespaceObject.useCallback)(item => item ? `${baseId}-${getItemId(item)}` : undefined, [baseId, getItemId]);
+  const store = view_list_useCompositeStore({
+    defaultActiveId: getItemDomId(selectedItem)
+  });
+
+  // Manage focused item, when the active one is removed from the list.
+  const isActiveIdInList = store.useState(state => state.items.some(item => item.id === state.activeId));
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (!isActiveIdInList) {
+      // Prefer going down, except if there is no item below (last item), then go up (last item in list).
+      if (store.down()) {
+        store.move(store.down());
+      } else if (store.up()) {
+        store.move(store.up());
+      }
+    }
+  }, [isActiveIdInList]);
+  const hasData = data?.length;
+  if (!hasData) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: dist_clsx({
+        'dataviews-loading': isLoading,
+        'dataviews-no-results': !hasData && !isLoading
+      }),
+      children: !hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+        children: isLoading ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No results')
+      })
+    });
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_Composite, {
+    id: baseId,
+    render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {}),
+    className: "dataviews-view-list",
+    role: "grid",
+    store: store,
+    children: data.map(item => {
+      const id = getItemDomId(item);
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ListItem, {
+        id: id,
+        actions: actions,
+        item: item,
+        isSelected: item === selectedItem,
+        onSelect: onSelect,
+        mediaField: mediaField,
+        primaryField: primaryField,
+        store: store,
+        visibleFields: visibleFields
+      }, id);
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/layouts.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const VIEW_LAYOUTS = [{
+  type: constants_LAYOUT_TABLE,
+  label: (0,external_wp_i18n_namespaceObject.__)('Table'),
+  component: view_table,
+  icon: block_table
+}, {
+  type: constants_LAYOUT_GRID,
+  label: (0,external_wp_i18n_namespaceObject.__)('Grid'),
+  component: ViewGrid,
+  icon: library_category
+}, {
+  type: constants_LAYOUT_LIST,
+  label: (0,external_wp_i18n_namespaceObject.__)('List'),
+  component: ViewList,
+  icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? format_list_bullets_rtl : format_list_bullets
+}];
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/view-actions.js
+/**
+ * External dependencies
+ */
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  DropdownMenuV2: view_actions_DropdownMenu,
+  DropdownMenuGroupV2: view_actions_DropdownMenuGroup,
+  DropdownMenuItemV2: view_actions_DropdownMenuItem,
+  DropdownMenuRadioItemV2: view_actions_DropdownMenuRadioItem,
+  DropdownMenuCheckboxItemV2: DropdownMenuCheckboxItem,
+  DropdownMenuItemLabelV2: view_actions_DropdownMenuItemLabel
+} = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function ViewTypeMenu({
+  view,
+  onChangeView,
+  supportedLayouts
+}) {
+  let _availableViews = VIEW_LAYOUTS;
+  if (supportedLayouts) {
+    _availableViews = _availableViews.filter(_view => supportedLayouts.includes(_view.type));
+  }
+  if (_availableViews.length === 1) {
+    return null;
+  }
+  const activeView = _availableViews.find(v => view.type === v.type);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, {
+    trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItem, {
+      suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+        "aria-hidden": "true",
+        children: activeView?.label
+      }),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, {
+        children: (0,external_wp_i18n_namespaceObject.__)('Layout')
+      })
+    }),
+    children: _availableViews.map(availableView => {
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuRadioItem, {
+        value: availableView.type,
+        name: "view-actions-available-view",
+        checked: availableView.type === view.type,
+        hideOnClick: true,
+        onChange: e => {
+          switch (e.target.value) {
+            case 'list':
+            case 'grid':
+            case 'table':
+              return onChangeView({
+                ...view,
+                type: e.target.value,
+                layout: {}
+              });
+          }
+          throw new Error('Invalid dataview');
+        },
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, {
+          children: availableView.label
+        })
+      }, availableView.type);
+    })
+  });
+}
+const PAGE_SIZE_VALUES = [10, 20, 50, 100];
+function PageSizeMenu({
+  view,
+  onChangeView
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, {
+    trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItem, {
+      suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+        "aria-hidden": "true",
+        children: view.perPage
+      }),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, {
+        children: (0,external_wp_i18n_namespaceObject.__)('Items per page')
+      })
+    }),
+    children: PAGE_SIZE_VALUES.map(size => {
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuRadioItem, {
+        value: size,
+        name: "view-actions-page-size",
+        checked: view.perPage === size,
+        onChange: () => {
+          onChangeView({
+            ...view,
+            // `e.target.value` holds the same value as `size` but as a string,
+            // so we use `size` directly to avoid parsing to int.
+            perPage: size,
+            page: 1
+          });
+        },
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, {
+          children: size
+        })
+      }, size);
+    })
+  });
+}
+function FieldsVisibilityMenu({
+  view,
+  onChangeView,
+  fields
+}) {
+  const hidableFields = fields.filter(field => field.enableHiding !== false && field.id !== view.layout.mediaField);
+  if (!hidableFields?.length) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, {
+    trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItem, {
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, {
+        children: (0,external_wp_i18n_namespaceObject.__)('Fields')
+      })
+    }),
+    children: hidableFields?.map(field => {
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuCheckboxItem, {
+        value: field.id,
+        checked: !view.hiddenFields?.includes(field.id),
+        onChange: () => {
+          onChangeView({
+            ...view,
+            hiddenFields: view.hiddenFields?.includes(field.id) ? view.hiddenFields.filter(id => id !== field.id) : [...(view.hiddenFields || []), field.id]
+          });
+        },
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, {
+          children: field.header
+        })
+      }, field.id);
+    })
+  });
+}
+function SortMenu({
+  fields,
+  view,
+  onChangeView
+}) {
+  const sortableFields = fields.filter(field => field.enableSorting !== false);
+  if (!sortableFields?.length) {
+    return null;
+  }
+  const currentSortedField = fields.find(field => field.id === view.sort?.field);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, {
+    trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItem, {
+      suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+        "aria-hidden": "true",
+        children: currentSortedField?.header
+      }),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, {
+        children: (0,external_wp_i18n_namespaceObject.__)('Sort by')
+      })
+    }),
+    children: sortableFields?.map(field => {
+      const sortedDirection = view.sort?.direction;
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, {
+        trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItem, {
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, {
+            children: field.header
+          })
+        }),
+        style: {
+          minWidth: '220px'
+        },
+        children: SORTING_DIRECTIONS.map(direction => {
+          const isChecked = currentSortedField !== undefined && sortedDirection === direction && field.id === currentSortedField.id;
+          const value = `${field.id}-${direction}`;
+          return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuRadioItem, {
+            // All sorting radio items share the same name, so that
+            // selecting a sorting option automatically deselects the
+            // previously selected one, even if it is displayed in
+            // another submenu. The field and direction are passed via
+            // the `value` prop.
+            name: "view-actions-sorting",
+            value: value,
+            checked: isChecked,
+            onChange: () => {
+              onChangeView({
+                ...view,
+                sort: {
+                  field: field.id,
+                  direction
+                }
+              });
+            },
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, {
+              children: sortLabels[direction]
+            })
+          }, value);
+        })
+      }, field.id);
+    })
+  });
+}
+function _ViewActions({
+  fields,
+  view,
+  onChangeView,
+  supportedLayouts
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, {
+    trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+      size: "compact",
+      icon: library_settings,
+      label: (0,external_wp_i18n_namespaceObject.__)('View options')
+    }),
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(view_actions_DropdownMenuGroup, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ViewTypeMenu, {
+        view: view,
+        onChangeView: onChangeView,
+        supportedLayouts: supportedLayouts
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SortMenu, {
+        fields: fields,
+        view: view,
+        onChangeView: onChangeView
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FieldsVisibilityMenu, {
+        fields: fields,
+        view: view,
+        onChangeView: onChangeView
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PageSizeMenu, {
+        view: view,
+        onChangeView: onChangeView
+      })]
+    })
+  });
+}
+
+// A type assertion is used here to keep the type argument.
+const ViewActions = (0,external_wp_element_namespaceObject.memo)(_ViewActions);
+/* harmony default export */ const view_actions = (ViewActions);
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/3IEDWLST.js
+"use client";
+
+// src/composite/utils.ts
+
+var NULL_ITEM = { id: null };
+function flipItems(items, activeId, shouldInsertNullItem = false) {
+  const index = items.findIndex((item) => item.id === activeId);
+  return [
+    ...items.slice(index + 1),
+    ...shouldInsertNullItem ? [NULL_ITEM] : [],
+    ...items.slice(0, index)
+  ];
+}
+function findFirstEnabledItem(items, excludeId) {
+  return items.find((item) => {
+    if (excludeId) {
+      return !item.disabled && item.id !== excludeId;
+    }
+    return !item.disabled;
+  });
+}
+function getEnabledItem(store, id) {
+  if (!id)
+    return null;
+  return store.item(id) || null;
+}
+function groupItemsByRows(items) {
+  const rows = [];
+  for (const item of items) {
+    const row = rows.find((currentRow) => {
+      var _a;
+      return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId;
+    });
+    if (row) {
+      row.push(item);
+    } else {
+      rows.push([item]);
+    }
+  }
+  return rows;
+}
+function selectTextField(element, collapseToEnd = false) {
+  if (isTextField(element)) {
+    element.setSelectionRange(
+      collapseToEnd ? element.value.length : 0,
+      element.value.length
+    );
+  } else if (element.isContentEditable) {
+    const selection = getDocument(element).getSelection();
+    selection == null ? void 0 : selection.selectAllChildren(element);
+    if (collapseToEnd) {
+      selection == null ? void 0 : selection.collapseToEnd();
+    }
+  }
+}
+var FOCUS_SILENTLY = Symbol("FOCUS_SILENTLY");
+function focusSilently(element) {
+  element[FOCUS_SILENTLY] = true;
+  element.focus({ preventScroll: true });
+}
+function silentlyFocused(element) {
+  const isSilentlyFocused = element[FOCUS_SILENTLY];
+  delete element[FOCUS_SILENTLY];
+  return isSilentlyFocused;
+}
+function isItem(store, element, exclude) {
+  if (!element)
+    return false;
+  if (element === exclude)
+    return false;
+  const item = store.item(element.id);
+  if (!item)
+    return false;
+  if (exclude && item.element === exclude)
+    return false;
+  return true;
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/4R3V3JGP.js
+"use client";
+var __defProp = Object.defineProperty;
+var __defProps = Object.defineProperties;
+var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
+var __getOwnPropSymbols = Object.getOwnPropertySymbols;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __propIsEnum = Object.prototype.propertyIsEnumerable;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var _4R3V3JGP_spreadValues = (a, b) => {
+  for (var prop in b || (b = {}))
+    if (__hasOwnProp.call(b, prop))
+      __defNormalProp(a, prop, b[prop]);
+  if (__getOwnPropSymbols)
+    for (var prop of __getOwnPropSymbols(b)) {
+      if (__propIsEnum.call(b, prop))
+        __defNormalProp(a, prop, b[prop]);
+    }
+  return a;
+};
+var _4R3V3JGP_spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
+var __objRest = (source, exclude) => {
+  var target = {};
+  for (var prop in source)
+    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
+      target[prop] = source[prop];
+  if (source != null && __getOwnPropSymbols)
+    for (var prop of __getOwnPropSymbols(source)) {
+      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
+        target[prop] = source[prop];
+    }
+  return target;
+};
+
+
+
+// EXTERNAL MODULE: external "React"
+var external_React_ = __webpack_require__(1609);
+var external_React_namespaceObject = /*#__PURE__*/__webpack_require__.t(external_React_, 2);
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/4R3V3JGP.js
+"use client";
+var _4R3V3JGP_defProp = Object.defineProperty;
+var _4R3V3JGP_defProps = Object.defineProperties;
+var _4R3V3JGP_getOwnPropDescs = Object.getOwnPropertyDescriptors;
+var _4R3V3JGP_getOwnPropSymbols = Object.getOwnPropertySymbols;
+var _4R3V3JGP_hasOwnProp = Object.prototype.hasOwnProperty;
+var _4R3V3JGP_propIsEnum = Object.prototype.propertyIsEnumerable;
+var _4R3V3JGP_defNormalProp = (obj, key, value) => key in obj ? _4R3V3JGP_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var _chunks_4R3V3JGP_spreadValues = (a, b) => {
+  for (var prop in b || (b = {}))
+    if (_4R3V3JGP_hasOwnProp.call(b, prop))
+      _4R3V3JGP_defNormalProp(a, prop, b[prop]);
+  if (_4R3V3JGP_getOwnPropSymbols)
+    for (var prop of _4R3V3JGP_getOwnPropSymbols(b)) {
+      if (_4R3V3JGP_propIsEnum.call(b, prop))
+        _4R3V3JGP_defNormalProp(a, prop, b[prop]);
+    }
+  return a;
+};
+var _chunks_4R3V3JGP_spreadProps = (a, b) => _4R3V3JGP_defProps(a, _4R3V3JGP_getOwnPropDescs(b));
+var _4R3V3JGP_objRest = (source, exclude) => {
+  var target = {};
+  for (var prop in source)
+    if (_4R3V3JGP_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
+      target[prop] = source[prop];
+  if (source != null && _4R3V3JGP_getOwnPropSymbols)
+    for (var prop of _4R3V3JGP_getOwnPropSymbols(source)) {
+      if (exclude.indexOf(prop) < 0 && _4R3V3JGP_propIsEnum.call(source, prop))
+        target[prop] = source[prop];
+    }
+  return target;
+};
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/Y3OOHFCN.js
+"use client";
+
+
+// src/utils/misc.ts
+function Y3OOHFCN_noop(..._) {
+}
+function shallowEqual(a, b) {
+  if (a === b)
+    return true;
+  if (!a)
+    return false;
+  if (!b)
+    return false;
+  if (typeof a !== "object")
+    return false;
+  if (typeof b !== "object")
+    return false;
+  const aKeys = Object.keys(a);
+  const bKeys = Object.keys(b);
+  const { length } = aKeys;
+  if (bKeys.length !== length)
+    return false;
+  for (const key of aKeys) {
+    if (a[key] !== b[key]) {
+      return false;
+    }
+  }
+  return true;
+}
+function Y3OOHFCN_applyState(argument, currentValue) {
+  if (isUpdater(argument)) {
+    const value = isLazyValue(currentValue) ? currentValue() : currentValue;
+    return argument(value);
+  }
+  return argument;
+}
+function isUpdater(argument) {
+  return typeof argument === "function";
+}
+function isLazyValue(value) {
+  return typeof value === "function";
+}
+function isObject(arg) {
+  return typeof arg === "object" && arg != null;
+}
+function isEmpty(arg) {
+  if (Array.isArray(arg))
+    return !arg.length;
+  if (isObject(arg))
+    return !Object.keys(arg).length;
+  if (arg == null)
+    return true;
+  if (arg === "")
+    return true;
+  return false;
+}
+function isInteger(arg) {
+  if (typeof arg === "number") {
+    return Math.floor(arg) === arg;
+  }
+  return String(Math.floor(Number(arg))) === arg;
+}
+function Y3OOHFCN_hasOwnProperty(object, prop) {
+  if (typeof Object.hasOwn === "function") {
+    return Object.hasOwn(object, prop);
+  }
+  return Object.prototype.hasOwnProperty.call(object, prop);
+}
+function chain(...fns) {
+  return (...args) => {
+    for (const fn of fns) {
+      if (typeof fn === "function") {
+        fn(...args);
+      }
+    }
+  };
+}
+function cx(...args) {
+  return args.filter(Boolean).join(" ") || void 0;
+}
+function normalizeString(str) {
+  return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
+}
+function omit(object, keys) {
+  const result = _chunks_4R3V3JGP_spreadValues({}, object);
+  for (const key of keys) {
+    if (Y3OOHFCN_hasOwnProperty(result, key)) {
+      delete result[key];
+    }
+  }
+  return result;
+}
+function pick(object, paths) {
+  const result = {};
+  for (const key of paths) {
+    if (Y3OOHFCN_hasOwnProperty(object, key)) {
+      result[key] = object[key];
+    }
+  }
+  return result;
+}
+function identity(value) {
+  return value;
+}
+function beforePaint(cb = Y3OOHFCN_noop) {
+  const raf = requestAnimationFrame(cb);
+  return () => cancelAnimationFrame(raf);
+}
+function afterPaint(cb = Y3OOHFCN_noop) {
+  let raf = requestAnimationFrame(() => {
+    raf = requestAnimationFrame(cb);
+  });
+  return () => cancelAnimationFrame(raf);
+}
+function invariant(condition, message) {
+  if (condition)
+    return;
+  if (typeof message !== "string")
+    throw new Error("Invariant failed");
+  throw new Error(message);
+}
+function getKeys(obj) {
+  return Object.keys(obj);
+}
+function isFalsyBooleanCallback(booleanOrCallback, ...args) {
+  const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback;
+  if (result == null)
+    return false;
+  return !result;
+}
+function disabledFromProps(props) {
+  return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true";
+}
+function defaultValue(...values) {
+  for (const value of values) {
+    if (value !== void 0)
+      return value;
+  }
+  return void 0;
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/XM66DUTO.js
+"use client";
+
+
+// src/utils/misc.ts
+
+
+function setRef(ref, value) {
+  if (typeof ref === "function") {
+    ref(value);
+  } else if (ref) {
+    ref.current = value;
+  }
+}
+function isValidElementWithRef(element) {
+  if (!element)
+    return false;
+  if (!(0,external_React_.isValidElement)(element))
+    return false;
+  if (!("ref" in element))
+    return false;
+  return true;
+}
+function getRefProperty(element) {
+  if (!isValidElementWithRef(element))
+    return null;
+  return element.ref;
+}
+function mergeProps(base, overrides) {
+  const props = _4R3V3JGP_spreadValues({}, base);
+  for (const key in overrides) {
+    if (!Y3OOHFCN_hasOwnProperty(overrides, key))
+      continue;
+    if (key === "className") {
+      const prop = "className";
+      props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop];
+      continue;
+    }
+    if (key === "style") {
+      const prop = "style";
+      props[prop] = base[prop] ? _4R3V3JGP_spreadValues(_4R3V3JGP_spreadValues({}, base[prop]), overrides[prop]) : overrides[prop];
+      continue;
+    }
+    const overrideValue = overrides[key];
+    if (typeof overrideValue === "function" && key.startsWith("on")) {
+      const baseValue = base[key];
+      if (typeof baseValue === "function") {
+        props[key] = (...args) => {
+          overrideValue(...args);
+          baseValue(...args);
+        };
+        continue;
+      }
+    }
+    props[key] = overrideValue;
+  }
+  return props;
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/DLOEKDPY.js
+"use client";
+
+// src/utils/dom.ts
+var DLOEKDPY_canUseDOM = checkIsBrowser();
+function checkIsBrowser() {
+  var _a;
+  return typeof window !== "undefined" && !!((_a = window.document) == null ? void 0 : _a.createElement);
+}
+function DLOEKDPY_getDocument(node) {
+  return node ? node.ownerDocument || node : document;
+}
+function getWindow(node) {
+  return DLOEKDPY_getDocument(node).defaultView || window;
+}
+function DLOEKDPY_getActiveElement(node, activeDescendant = false) {
+  const { activeElement } = DLOEKDPY_getDocument(node);
+  if (!(activeElement == null ? void 0 : activeElement.nodeName)) {
+    return null;
+  }
+  if (DLOEKDPY_isFrame(activeElement) && activeElement.contentDocument) {
+    return DLOEKDPY_getActiveElement(
+      activeElement.contentDocument.body,
+      activeDescendant
+    );
+  }
+  if (activeDescendant) {
+    const id = activeElement.getAttribute("aria-activedescendant");
+    if (id) {
+      const element = DLOEKDPY_getDocument(activeElement).getElementById(id);
+      if (element) {
+        return element;
+      }
+    }
+  }
+  return activeElement;
+}
+function contains(parent, child) {
+  return parent === child || parent.contains(child);
+}
+function DLOEKDPY_isFrame(element) {
+  return element.tagName === "IFRAME";
+}
+function isButton(element) {
+  const tagName = element.tagName.toLowerCase();
+  if (tagName === "button")
+    return true;
+  if (tagName === "input" && element.type) {
+    return buttonInputTypes.indexOf(element.type) !== -1;
+  }
+  return false;
+}
+var buttonInputTypes = [
+  "button",
+  "color",
+  "file",
+  "image",
+  "reset",
+  "submit"
+];
+function matches(element, selectors) {
+  if ("matches" in element) {
+    return element.matches(selectors);
+  }
+  if ("msMatchesSelector" in element) {
+    return element.msMatchesSelector(selectors);
+  }
+  return element.webkitMatchesSelector(selectors);
+}
+function isVisible(element) {
+  const htmlElement = element;
+  return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0;
+}
+function DLOEKDPY_closest(element, selectors) {
+  if ("closest" in element)
+    return element.closest(selectors);
+  do {
+    if (matches(element, selectors))
+      return element;
+    element = element.parentElement || element.parentNode;
+  } while (element !== null && element.nodeType === 1);
+  return null;
+}
+function DLOEKDPY_isTextField(element) {
+  try {
+    const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null;
+    const isTextArea = element.tagName === "TEXTAREA";
+    return isTextInput || isTextArea || false;
+  } catch (error) {
+    return false;
+  }
+}
+function getPopupRole(element, fallback) {
+  const allowedPopupRoles = ["dialog", "menu", "listbox", "tree", "grid"];
+  const role = element == null ? void 0 : element.getAttribute("role");
+  if (role && allowedPopupRoles.indexOf(role) !== -1) {
+    return role;
+  }
+  return fallback;
+}
+function getPopupItemRole(element, fallback) {
+  var _a;
+  const itemRoleByPopupRole = {
+    menu: "menuitem",
+    listbox: "option",
+    tree: "treeitem",
+    grid: "gridcell"
+  };
+  const popupRole = getPopupRole(element);
+  if (!popupRole)
+    return fallback;
+  const key = popupRole;
+  return (_a = itemRoleByPopupRole[key]) != null ? _a : fallback;
+}
+function getTextboxSelection(element) {
+  let start = 0;
+  let end = 0;
+  if (DLOEKDPY_isTextField(element)) {
+    start = element.selectionStart || 0;
+    end = element.selectionEnd || 0;
+  } else if (element.isContentEditable) {
+    const selection = DLOEKDPY_getDocument(element).getSelection();
+    if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) {
+      const range = selection.getRangeAt(0);
+      const nextRange = range.cloneRange();
+      nextRange.selectNodeContents(element);
+      nextRange.setEnd(range.startContainer, range.startOffset);
+      start = nextRange.toString().length;
+      nextRange.setEnd(range.endContainer, range.endOffset);
+      end = nextRange.toString().length;
+    }
+  }
+  return { start, end };
+}
+function scrollIntoViewIfNeeded(element, arg) {
+  if (isPartiallyHidden(element) && "scrollIntoView" in element) {
+    element.scrollIntoView(arg);
+  }
+}
+function getScrollingElement(element) {
+  if (!element)
+    return null;
+  if (element.clientHeight && element.scrollHeight > element.clientHeight) {
+    const { overflowY } = getComputedStyle(element);
+    const isScrollable = overflowY !== "visible" && overflowY !== "hidden";
+    if (isScrollable)
+      return element;
+  } else if (element.clientWidth && element.scrollWidth > element.clientWidth) {
+    const { overflowX } = getComputedStyle(element);
+    const isScrollable = overflowX !== "visible" && overflowX !== "hidden";
+    if (isScrollable)
+      return element;
+  }
+  return getScrollingElement(element.parentElement) || document.scrollingElement || document.body;
+}
+function isPartiallyHidden(element) {
+  const elementRect = element.getBoundingClientRect();
+  const scroller = getScrollingElement(element);
+  if (!scroller)
+    return false;
+  const scrollerRect = scroller.getBoundingClientRect();
+  const isHTML = scroller.tagName === "HTML";
+  const scrollerTop = isHTML ? scrollerRect.top + scroller.scrollTop : scrollerRect.top;
+  const scrollerBottom = isHTML ? scroller.clientHeight : scrollerRect.bottom;
+  const scrollerLeft = isHTML ? scrollerRect.left + scroller.scrollLeft : scrollerRect.left;
+  const scrollerRight = isHTML ? scroller.clientWidth : scrollerRect.right;
+  const top = elementRect.top < scrollerTop;
+  const left = elementRect.left < scrollerLeft;
+  const bottom = elementRect.bottom > scrollerBottom;
+  const right = elementRect.right > scrollerRight;
+  return top || left || bottom || right;
+}
+function setSelectionRange(element, ...args) {
+  if (/text|search|password|tel|url/i.test(element.type)) {
+    element.setSelectionRange(...args);
+  }
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/MHPO2BXA.js
+"use client";
+
+
+// src/utils/platform.ts
+function isTouchDevice() {
+  return DLOEKDPY_canUseDOM && !!navigator.maxTouchPoints;
+}
+function isApple() {
+  if (!DLOEKDPY_canUseDOM)
+    return false;
+  return /mac|iphone|ipad|ipod/i.test(navigator.platform);
+}
+function isSafari() {
+  return DLOEKDPY_canUseDOM && isApple() && /apple/i.test(navigator.vendor);
+}
+function isFirefox() {
+  return DLOEKDPY_canUseDOM && /firefox\//i.test(navigator.userAgent);
+}
+function isMac() {
+  return canUseDOM && navigator.platform.startsWith("Mac") && !isTouchDevice();
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/utils/events.js
+"use client";
+
+
+
+
+// src/utils/events.ts
+function isPortalEvent(event) {
+  return Boolean(
+    event.currentTarget && !contains(event.currentTarget, event.target)
+  );
+}
+function isSelfTarget(event) {
+  return event.target === event.currentTarget;
+}
+function isOpeningInNewTab(event) {
+  const element = event.currentTarget;
+  if (!element)
+    return false;
+  const isAppleDevice = isApple();
+  if (isAppleDevice && !event.metaKey)
+    return false;
+  if (!isAppleDevice && !event.ctrlKey)
+    return false;
+  const tagName = element.tagName.toLowerCase();
+  if (tagName === "a")
+    return true;
+  if (tagName === "button" && element.type === "submit")
+    return true;
+  if (tagName === "input" && element.type === "submit")
+    return true;
+  return false;
+}
+function isDownloading(event) {
+  const element = event.currentTarget;
+  if (!element)
+    return false;
+  const tagName = element.tagName.toLowerCase();
+  if (!event.altKey)
+    return false;
+  if (tagName === "a")
+    return true;
+  if (tagName === "button" && element.type === "submit")
+    return true;
+  if (tagName === "input" && element.type === "submit")
+    return true;
+  return false;
+}
+function fireEvent(element, type, eventInit) {
+  const event = new Event(type, eventInit);
+  return element.dispatchEvent(event);
+}
+function fireBlurEvent(element, eventInit) {
+  const event = new FocusEvent("blur", eventInit);
+  const defaultAllowed = element.dispatchEvent(event);
+  const bubbleInit = _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, eventInit), { bubbles: true });
+  element.dispatchEvent(new FocusEvent("focusout", bubbleInit));
+  return defaultAllowed;
+}
+function fireFocusEvent(element, eventInit) {
+  const event = new FocusEvent("focus", eventInit);
+  const defaultAllowed = element.dispatchEvent(event);
+  const bubbleInit = __spreadProps(__spreadValues({}, eventInit), { bubbles: true });
+  element.dispatchEvent(new FocusEvent("focusin", bubbleInit));
+  return defaultAllowed;
+}
+function fireKeyboardEvent(element, type, eventInit) {
+  const event = new KeyboardEvent(type, eventInit);
+  return element.dispatchEvent(event);
+}
+function fireClickEvent(element, eventInit) {
+  const event = new MouseEvent("click", eventInit);
+  return element.dispatchEvent(event);
+}
+function isFocusEventOutside(event, container) {
+  const containerElement = container || event.currentTarget;
+  const relatedTarget = event.relatedTarget;
+  return !relatedTarget || !contains(containerElement, relatedTarget);
+}
+function queueBeforeEvent(element, type, callback) {
+  const raf = requestAnimationFrame(() => {
+    element.removeEventListener(type, callImmediately, true);
+    callback();
+  });
+  const callImmediately = () => {
+    cancelAnimationFrame(raf);
+    callback();
+  };
+  element.addEventListener(type, callImmediately, {
+    once: true,
+    capture: true
+  });
+  return raf;
+}
+function addGlobalEventListener(type, listener, options, scope = window) {
+  const children = [];
+  try {
+    scope.document.addEventListener(type, listener, options);
+    for (const frame of Array.from(scope.frames)) {
+      children.push(addGlobalEventListener(type, listener, options, frame));
+    }
+  } catch (e) {
+  }
+  const removeEventListener = () => {
+    try {
+      scope.document.removeEventListener(type, listener, options);
+    } catch (e) {
+    }
+    children.forEach((remove) => remove());
+  };
+  return removeEventListener;
+}
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/6O5OEQGF.js
+"use client";
+
+
+
+// src/utils/hooks.ts
+
+
+
+
+
+var _React = _4R3V3JGP_spreadValues({}, external_React_namespaceObject);
+var useReactId = _React.useId;
+var useReactDeferredValue = _React.useDeferredValue;
+var useReactInsertionEffect = _React.useInsertionEffect;
+var useSafeLayoutEffect = DLOEKDPY_canUseDOM ? external_React_.useLayoutEffect : external_React_.useEffect;
+function useInitialValue(value) {
+  const [initialValue] = useState(value);
+  return initialValue;
+}
+function useLazyValue(init) {
+  const ref = useRef();
+  if (ref.current === void 0) {
+    ref.current = init();
+  }
+  return ref.current;
+}
+function useLiveRef(value) {
+  const ref = (0,external_React_.useRef)(value);
+  useSafeLayoutEffect(() => {
+    ref.current = value;
+  });
+  return ref;
+}
+function usePreviousValue(value) {
+  const [previousValue, setPreviousValue] = useState(value);
+  if (value !== previousValue) {
+    setPreviousValue(value);
+  }
+  return previousValue;
+}
+function useEvent(callback) {
+  const ref = (0,external_React_.useRef)(() => {
+    throw new Error("Cannot call an event handler while rendering.");
+  });
+  if (useReactInsertionEffect) {
+    useReactInsertionEffect(() => {
+      ref.current = callback;
+    });
+  } else {
+    ref.current = callback;
+  }
+  return (0,external_React_.useCallback)((...args) => {
+    var _a;
+    return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);
+  }, []);
+}
+function useMergeRefs(...refs) {
+  return (0,external_React_.useMemo)(() => {
+    if (!refs.some(Boolean))
+      return;
+    return (value) => {
+      refs.forEach((ref) => setRef(ref, value));
+    };
+  }, refs);
+}
+function useRefId(ref, deps) {
+  const [id, setId] = useState(void 0);
+  useSafeLayoutEffect(() => {
+    var _a;
+    setId((_a = ref == null ? void 0 : ref.current) == null ? void 0 : _a.id);
+  }, deps);
+  return id;
+}
+function useId(defaultId) {
+  if (useReactId) {
+    const reactId = useReactId();
+    if (defaultId)
+      return defaultId;
+    return reactId;
+  }
+  const [id, setId] = (0,external_React_.useState)(defaultId);
+  useSafeLayoutEffect(() => {
+    if (defaultId || id)
+      return;
+    const random = Math.random().toString(36).substr(2, 6);
+    setId(`id-${random}`);
+  }, [defaultId, id]);
+  return defaultId || id;
+}
+function useDeferredValue(value) {
+  if (useReactDeferredValue) {
+    return useReactDeferredValue(value);
+  }
+  const [deferredValue, setDeferredValue] = useState(value);
+  useEffect(() => {
+    const raf = requestAnimationFrame(() => setDeferredValue(value));
+    return () => cancelAnimationFrame(raf);
+  }, [value]);
+  return deferredValue;
+}
+function useTagName(refOrElement, type) {
+  const stringOrUndefined = (type2) => {
+    if (typeof type2 !== "string")
+      return;
+    return type2;
+  };
+  const [tagName, setTagName] = (0,external_React_.useState)(() => stringOrUndefined(type));
+  useSafeLayoutEffect(() => {
+    const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement;
+    setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type));
+  }, [refOrElement, type]);
+  return tagName;
+}
+function useAttribute(refOrElement, attributeName, defaultValue) {
+  const [attribute, setAttribute] = (0,external_React_.useState)(defaultValue);
+  useSafeLayoutEffect(() => {
+    const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement;
+    const value = element == null ? void 0 : element.getAttribute(attributeName);
+    if (value == null)
+      return;
+    setAttribute(value);
+  }, [refOrElement, attributeName]);
+  return attribute;
+}
+function useUpdateEffect(effect, deps) {
+  const mounted = (0,external_React_.useRef)(false);
+  (0,external_React_.useEffect)(() => {
+    if (mounted.current) {
+      return effect();
+    }
+    mounted.current = true;
+  }, deps);
+  (0,external_React_.useEffect)(
+    () => () => {
+      mounted.current = false;
+    },
+    []
+  );
+}
+function useUpdateLayoutEffect(effect, deps) {
+  const mounted = (0,external_React_.useRef)(false);
+  useSafeLayoutEffect(() => {
+    if (mounted.current) {
+      return effect();
+    }
+    mounted.current = true;
+  }, deps);
+  useSafeLayoutEffect(
+    () => () => {
+      mounted.current = false;
+    },
+    []
+  );
+}
+function useControlledState(defaultState, state, setState) {
+  const [localState, setLocalState] = useState(defaultState);
+  const nextState = state !== void 0 ? state : localState;
+  const stateRef = useLiveRef(state);
+  const setStateRef = useLiveRef(setState);
+  const nextStateRef = useLiveRef(nextState);
+  const setNextState = useCallback((prevValue) => {
+    const setStateProp = setStateRef.current;
+    if (setStateProp) {
+      if (isSetNextState(setStateProp)) {
+        setStateProp(prevValue);
+      } else {
+        const nextValue = applyState(prevValue, nextStateRef.current);
+        nextStateRef.current = nextValue;
+        setStateProp(nextValue);
+      }
+    }
+    if (stateRef.current === void 0) {
+      setLocalState(prevValue);
+    }
+  }, []);
+  defineSetNextState(setNextState);
+  return [nextState, setNextState];
+}
+var SET_NEXT_STATE = Symbol("setNextState");
+function isSetNextState(arg) {
+  return arg[SET_NEXT_STATE] === true;
+}
+function defineSetNextState(arg) {
+  if (!isSetNextState(arg)) {
+    Object.defineProperty(arg, SET_NEXT_STATE, { value: true });
+  }
+}
+function useForceUpdate() {
+  return (0,external_React_.useReducer)(() => [], []);
+}
+function useBooleanEvent(booleanOrCallback) {
+  return useEvent(
+    typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback
+  );
+}
+function useWrapElement(props, callback, deps = []) {
+  const wrapElement = (0,external_React_.useCallback)(
+    (element) => {
+      if (props.wrapElement) {
+        element = props.wrapElement(element);
+      }
+      return callback(element);
+    },
+    [...deps, props.wrapElement]
+  );
+  return _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { wrapElement });
+}
+function usePortalRef(portalProp = false, portalRefProp) {
+  const [portalNode, setPortalNode] = useState(null);
+  const portalRef = useMergeRefs(setPortalNode, portalRefProp);
+  const domReady = !portalProp || portalNode;
+  return { portalRef, portalNode, domReady };
+}
+function useMetadataProps(props, key, value) {
+  const parent = props.onLoadedMetadataCapture;
+  const onLoadedMetadataCapture = (0,external_React_.useMemo)(() => {
+    return Object.assign(() => {
+    }, _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, parent), { [key]: value }));
+  }, [parent, key, value]);
+  return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }];
+}
+function useIsMouseMoving() {
+  (0,external_React_.useEffect)(() => {
+    addGlobalEventListener("mousemove", setMouseMoving, true);
+    addGlobalEventListener("mousedown", resetMouseMoving, true);
+    addGlobalEventListener("mouseup", resetMouseMoving, true);
+    addGlobalEventListener("keydown", resetMouseMoving, true);
+    addGlobalEventListener("scroll", resetMouseMoving, true);
+  }, []);
+  const isMouseMoving = useEvent(() => mouseMoving);
+  return isMouseMoving;
+}
+var mouseMoving = false;
+var previousScreenX = 0;
+var previousScreenY = 0;
+function hasMouseMovement(event) {
+  const movementX = event.movementX || event.screenX - previousScreenX;
+  const movementY = event.movementY || event.screenY - previousScreenY;
+  previousScreenX = event.screenX;
+  previousScreenY = event.screenY;
+  return movementX || movementY || "production" === "test";
+}
+function setMouseMoving(event) {
+  if (!hasMouseMovement(event))
+    return;
+  mouseMoving = true;
+}
+function resetMouseMoving() {
+  mouseMoving = false;
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/3ORBWXWF.js
+"use client";
+
+
+
+
+// src/utils/system.tsx
+
+
+
+function isRenderProp(children) {
+  return typeof children === "function";
+}
+function forwardRef2(render) {
+  const Role = React.forwardRef((props, ref) => render(__spreadProps(__spreadValues({}, props), { ref })));
+  Role.displayName = render.displayName || render.name;
+  return Role;
+}
+function memo2(Component, propsAreEqual) {
+  const Role = React.memo(Component, propsAreEqual);
+  Role.displayName = Component.displayName || Component.name;
+  return Role;
+}
+function createComponent(render) {
+  const Role = (props, ref) => render(_4R3V3JGP_spreadValues({ ref }, props));
+  return external_React_.forwardRef(Role);
+}
+function createMemoComponent(render) {
+  const Role = createComponent(render);
+  return external_React_.memo(Role);
+}
+function createElement(Type, props) {
+  const _a = props, { as: As, wrapElement, render } = _a, rest = __objRest(_a, ["as", "wrapElement", "render"]);
+  let element;
+  const mergedRef = useMergeRefs(props.ref, getRefProperty(render));
+  if (false) {}
+  if (As && typeof As !== "string") {
+    element = /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(As, _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, rest), { render }));
+  } else if (external_React_.isValidElement(render)) {
+    const renderProps = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, render.props), { ref: mergedRef });
+    element = external_React_.cloneElement(render, mergeProps(rest, renderProps));
+  } else if (render) {
+    element = render(rest);
+  } else if (isRenderProp(props.children)) {
+    if (false) {}
+    const _b = rest, { children } = _b, otherProps = __objRest(_b, ["children"]);
+    element = props.children(otherProps);
+  } else if (As) {
+    element = /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(As, _4R3V3JGP_spreadValues({}, rest));
+  } else {
+    element = /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(Type, _4R3V3JGP_spreadValues({}, rest));
+  }
+  if (wrapElement) {
+    return wrapElement(element);
+  }
+  return element;
+}
+function createHook(useProps) {
+  const useRole = (props = {}) => {
+    const htmlProps = useProps(props);
+    const copy = {};
+    for (const prop in htmlProps) {
+      if (Y3OOHFCN_hasOwnProperty(htmlProps, prop) && htmlProps[prop] !== void 0) {
+        copy[prop] = htmlProps[prop];
+      }
+    }
+    return copy;
+  };
+  return useRole;
+}
+function createStoreContext(providers = [], scopedProviders = []) {
+  const context = external_React_.createContext(void 0);
+  const scopedContext = external_React_.createContext(void 0);
+  const useContext2 = () => external_React_.useContext(context);
+  const useScopedContext = (onlyScoped = false) => {
+    const scoped = external_React_.useContext(scopedContext);
+    const store = useContext2();
+    if (onlyScoped)
+      return scoped;
+    return scoped || store;
+  };
+  const useProviderContext = () => {
+    const scoped = external_React_.useContext(scopedContext);
+    const store = useContext2();
+    if (scoped && scoped === store)
+      return;
+    return store;
+  };
+  const ContextProvider = (props) => {
+    return providers.reduceRight(
+      (children, Provider) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(Provider, _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { children })),
+      /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(context.Provider, _4R3V3JGP_spreadValues({}, props))
+    );
+  };
+  const ScopedContextProvider = (props) => {
+    return /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ContextProvider, _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { children: scopedProviders.reduceRight(
+      (children, Provider) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(Provider, _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { children })),
+      /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(scopedContext.Provider, _4R3V3JGP_spreadValues({}, props))
+    ) }));
+  };
+  return {
+    context,
+    scopedContext,
+    useContext: useContext2,
+    useScopedContext,
+    useProviderContext,
+    ContextProvider,
+    ScopedContextProvider
+  };
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/4UUKJZ4V.js
+"use client";
+
+
+// src/collection/collection-context.tsx
+var ctx = createStoreContext();
+var useCollectionContext = ctx.useContext;
+var useCollectionScopedContext = ctx.useScopedContext;
+var useCollectionProviderContext = ctx.useProviderContext;
+var CollectionContextProvider = ctx.ContextProvider;
+var CollectionScopedContextProvider = ctx.ScopedContextProvider;
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/IB7YUKH5.js
+"use client";
+
+
+
+// src/composite/composite-context.tsx
+
+var IB7YUKH5_ctx = createStoreContext(
+  [CollectionContextProvider],
+  [CollectionScopedContextProvider]
+);
+var useCompositeContext = IB7YUKH5_ctx.useContext;
+var useCompositeScopedContext = IB7YUKH5_ctx.useScopedContext;
+var useCompositeProviderContext = IB7YUKH5_ctx.useProviderContext;
+var CompositeContextProvider = IB7YUKH5_ctx.ContextProvider;
+var CompositeScopedContextProvider = IB7YUKH5_ctx.ScopedContextProvider;
+var CompositeItemContext = (0,external_React_.createContext)(
+  void 0
+);
+var CompositeRowContext = (0,external_React_.createContext)(
+  void 0
+);
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/346FK57L.js
+"use client";
+
+
+
+
+
+
+// src/composite/composite-typeahead.ts
+
+
+
+
+var chars = "";
+function clearChars() {
+  chars = "";
+}
+function isValidTypeaheadEvent(event) {
+  const target = event.target;
+  if (target && DLOEKDPY_isTextField(target))
+    return false;
+  if (event.key === " " && chars.length)
+    return true;
+  return event.key.length === 1 && !event.ctrlKey && !event.altKey && !event.metaKey && /^[\p{Letter}\p{Number}]$/u.test(event.key);
+}
+function isSelfTargetOrItem(event, items) {
+  if (isSelfTarget(event))
+    return true;
+  const target = event.target;
+  if (!target)
+    return false;
+  const isItem = items.some((item) => item.element === target);
+  return isItem;
+}
+function getEnabledItems(items) {
+  return items.filter((item) => !item.disabled);
+}
+function itemTextStartsWith(item, text) {
+  var _a;
+  const itemText = ((_a = item.element) == null ? void 0 : _a.textContent) || item.children;
+  if (!itemText)
+    return false;
+  return normalizeString(itemText).trim().toLowerCase().startsWith(text.toLowerCase());
+}
+function getSameInitialItems(items, char, activeId) {
+  if (!activeId)
+    return items;
+  const activeItem = items.find((item) => item.id === activeId);
+  if (!activeItem)
+    return items;
+  if (!itemTextStartsWith(activeItem, char))
+    return items;
+  if (chars !== char && itemTextStartsWith(activeItem, chars))
+    return items;
+  chars = char;
+  return flipItems(
+    items.filter((item) => itemTextStartsWith(item, chars)),
+    activeId
+  ).filter((item) => item.id !== activeId);
+}
+var useCompositeTypeahead = createHook(
+  (_a) => {
+    var _b = _a, { store, typeahead = true } = _b, props = __objRest(_b, ["store", "typeahead"]);
+    const context = useCompositeContext();
+    store = store || context;
+    invariant(
+      store,
+       false && 0
+    );
+    const onKeyDownCaptureProp = props.onKeyDownCapture;
+    const cleanupTimeoutRef = (0,external_React_.useRef)(0);
+    const onKeyDownCapture = useEvent(
+      (event) => {
+        onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event);
+        if (event.defaultPrevented)
+          return;
+        if (!typeahead)
+          return;
+        if (!store)
+          return;
+        const { items, activeId } = store.getState();
+        if (!isValidTypeaheadEvent(event))
+          return clearChars();
+        let enabledItems = getEnabledItems(items);
+        if (!isSelfTargetOrItem(event, enabledItems))
+          return clearChars();
+        event.preventDefault();
+        window.clearTimeout(cleanupTimeoutRef.current);
+        cleanupTimeoutRef.current = window.setTimeout(() => {
+          chars = "";
+        }, 500);
+        const char = event.key.toLowerCase();
+        chars += char;
+        enabledItems = getSameInitialItems(enabledItems, char, activeId);
+        const item = enabledItems.find(
+          (item2) => itemTextStartsWith(item2, chars)
+        );
+        if (item) {
+          store.move(item.id);
+        } else {
+          clearChars();
+        }
+      }
+    );
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), {
+      onKeyDownCapture
+    });
+    return props;
+  }
+);
+var CompositeTypeahead = createComponent(
+  (props) => {
+    const htmlProps = useCompositeTypeahead(props);
+    return createElement("div", htmlProps);
+  }
+);
+if (false) {}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/utils/focus.js
+"use client";
+
+
+
+// src/utils/focus.ts
+var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";
+function hasNegativeTabIndex(element) {
+  const tabIndex = parseInt(element.getAttribute("tabindex") || "0", 10);
+  return tabIndex < 0;
+}
+function isFocusable(element) {
+  if (!matches(element, selector))
+    return false;
+  if (!isVisible(element))
+    return false;
+  if (DLOEKDPY_closest(element, "[inert]"))
+    return false;
+  return true;
+}
+function isTabbable(element) {
+  if (!isFocusable(element))
+    return false;
+  if (hasNegativeTabIndex(element))
+    return false;
+  if (!("form" in element))
+    return true;
+  if (!element.form)
+    return true;
+  if (element.checked)
+    return true;
+  if (element.type !== "radio")
+    return true;
+  const radioGroup = element.form.elements.namedItem(element.name);
+  if (!radioGroup)
+    return true;
+  if (!("length" in radioGroup))
+    return true;
+  const activeElement = getActiveElement(element);
+  if (!activeElement)
+    return true;
+  if (activeElement === element)
+    return true;
+  if (!("form" in activeElement))
+    return true;
+  if (activeElement.form !== element.form)
+    return true;
+  if (activeElement.name !== element.name)
+    return true;
+  return false;
+}
+function getAllFocusableIn(container, includeContainer) {
+  const elements = Array.from(
+    container.querySelectorAll(selector)
+  );
+  if (includeContainer) {
+    elements.unshift(container);
+  }
+  const focusableElements = elements.filter(isFocusable);
+  focusableElements.forEach((element, i) => {
+    if (isFrame(element) && element.contentDocument) {
+      const frameBody = element.contentDocument.body;
+      focusableElements.splice(i, 1, ...getAllFocusableIn(frameBody));
+    }
+  });
+  return focusableElements;
+}
+function getAllFocusable(includeBody) {
+  return getAllFocusableIn(document.body, includeBody);
+}
+function getFirstFocusableIn(container, includeContainer) {
+  const [first] = getAllFocusableIn(container, includeContainer);
+  return first || null;
+}
+function getFirstFocusable(includeBody) {
+  return getFirstFocusableIn(document.body, includeBody);
+}
+function getAllTabbableIn(container, includeContainer, fallbackToFocusable) {
+  const elements = Array.from(
+    container.querySelectorAll(selector)
+  );
+  const tabbableElements = elements.filter(isTabbable);
+  if (includeContainer && isTabbable(container)) {
+    tabbableElements.unshift(container);
+  }
+  tabbableElements.forEach((element, i) => {
+    if (isFrame(element) && element.contentDocument) {
+      const frameBody = element.contentDocument.body;
+      const allFrameTabbable = getAllTabbableIn(
+        frameBody,
+        false,
+        fallbackToFocusable
+      );
+      tabbableElements.splice(i, 1, ...allFrameTabbable);
+    }
+  });
+  if (!tabbableElements.length && fallbackToFocusable) {
+    return elements;
+  }
+  return tabbableElements;
+}
+function getAllTabbable(fallbackToFocusable) {
+  return getAllTabbableIn(document.body, false, fallbackToFocusable);
+}
+function getFirstTabbableIn(container, includeContainer, fallbackToFocusable) {
+  const [first] = getAllTabbableIn(
+    container,
+    includeContainer,
+    fallbackToFocusable
+  );
+  return first || null;
+}
+function getFirstTabbable(fallbackToFocusable) {
+  return getFirstTabbableIn(document.body, false, fallbackToFocusable);
+}
+function getLastTabbableIn(container, includeContainer, fallbackToFocusable) {
+  const allTabbable = getAllTabbableIn(
+    container,
+    includeContainer,
+    fallbackToFocusable
+  );
+  return allTabbable[allTabbable.length - 1] || null;
+}
+function getLastTabbable(fallbackToFocusable) {
+  return getLastTabbableIn(document.body, false, fallbackToFocusable);
+}
+function getNextTabbableIn(container, includeContainer, fallbackToFirst, fallbackToFocusable) {
+  const activeElement = getActiveElement(container);
+  const allFocusable = getAllFocusableIn(container, includeContainer);
+  const activeIndex = allFocusable.indexOf(activeElement);
+  const nextFocusableElements = allFocusable.slice(activeIndex + 1);
+  return nextFocusableElements.find(isTabbable) || (fallbackToFirst ? allFocusable.find(isTabbable) : null) || (fallbackToFocusable ? nextFocusableElements[0] : null) || null;
+}
+function getNextTabbable(fallbackToFirst, fallbackToFocusable) {
+  return getNextTabbableIn(
+    document.body,
+    false,
+    fallbackToFirst,
+    fallbackToFocusable
+  );
+}
+function getPreviousTabbableIn(container, includeContainer, fallbackToLast, fallbackToFocusable) {
+  const activeElement = getActiveElement(container);
+  const allFocusable = getAllFocusableIn(container, includeContainer).reverse();
+  const activeIndex = allFocusable.indexOf(activeElement);
+  const previousFocusableElements = allFocusable.slice(activeIndex + 1);
+  return previousFocusableElements.find(isTabbable) || (fallbackToLast ? allFocusable.find(isTabbable) : null) || (fallbackToFocusable ? previousFocusableElements[0] : null) || null;
+}
+function getPreviousTabbable(fallbackToFirst, fallbackToFocusable) {
+  return getPreviousTabbableIn(
+    document.body,
+    false,
+    fallbackToFirst,
+    fallbackToFocusable
+  );
+}
+function getClosestFocusable(element) {
+  while (element && !isFocusable(element)) {
+    element = closest(element, selector);
+  }
+  return element || null;
+}
+function hasFocus(element) {
+  const activeElement = DLOEKDPY_getActiveElement(element);
+  if (!activeElement)
+    return false;
+  if (activeElement === element)
+    return true;
+  const activeDescendant = activeElement.getAttribute("aria-activedescendant");
+  if (!activeDescendant)
+    return false;
+  return activeDescendant === element.id;
+}
+function hasFocusWithin(element) {
+  const activeElement = DLOEKDPY_getActiveElement(element);
+  if (!activeElement)
+    return false;
+  if (contains(element, activeElement))
+    return true;
+  const activeDescendant = activeElement.getAttribute("aria-activedescendant");
+  if (!activeDescendant)
+    return false;
+  if (!("id" in element))
+    return false;
+  if (activeDescendant === element.id)
+    return true;
+  return !!element.querySelector(`#${CSS.escape(activeDescendant)}`);
+}
+function focusIfNeeded(element) {
+  if (!hasFocusWithin(element) && isFocusable(element)) {
+    element.focus();
+  }
+}
+function disableFocus(element) {
+  var _a;
+  const currentTabindex = (_a = element.getAttribute("tabindex")) != null ? _a : "";
+  element.setAttribute("data-tabindex", currentTabindex);
+  element.setAttribute("tabindex", "-1");
+}
+function disableFocusIn(container, includeContainer) {
+  const tabbableElements = getAllTabbableIn(container, includeContainer);
+  tabbableElements.forEach(disableFocus);
+}
+function restoreFocusIn(container) {
+  const elements = container.querySelectorAll("[data-tabindex]");
+  const restoreTabIndex = (element) => {
+    const tabindex = element.getAttribute("data-tabindex");
+    element.removeAttribute("data-tabindex");
+    if (tabindex) {
+      element.setAttribute("tabindex", tabindex);
+    } else {
+      element.removeAttribute("tabindex");
+    }
+  };
+  if (container.hasAttribute("data-tabindex")) {
+    restoreTabIndex(container);
+  }
+  elements.forEach(restoreTabIndex);
+}
+function focusIntoView(element, options) {
+  if (!("scrollIntoView" in element)) {
+    element.focus();
+  } else {
+    element.focus({ preventScroll: true });
+    element.scrollIntoView(_chunks_4R3V3JGP_spreadValues({ block: "nearest", inline: "nearest" }, options));
+  }
+}
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/G6ONQ5EH.js
+"use client";
+
+
+
+
+
+// src/composite/composite-hover.ts
+
+
+
+
+function getMouseDestination(event) {
+  const relatedTarget = event.relatedTarget;
+  if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) {
+    return relatedTarget;
+  }
+  return null;
+}
+function hoveringInside(event) {
+  const nextElement = getMouseDestination(event);
+  if (!nextElement)
+    return false;
+  return contains(event.currentTarget, nextElement);
+}
+var symbol = Symbol("composite-hover");
+function movingToAnotherItem(event) {
+  let dest = getMouseDestination(event);
+  if (!dest)
+    return false;
+  do {
+    if (Y3OOHFCN_hasOwnProperty(dest, symbol) && dest[symbol])
+      return true;
+    dest = dest.parentElement;
+  } while (dest);
+  return false;
+}
+var useCompositeHover = createHook(
+  (_a) => {
+    var _b = _a, {
+      store,
+      focusOnHover = true,
+      blurOnHoverEnd = !!focusOnHover
+    } = _b, props = __objRest(_b, [
+      "store",
+      "focusOnHover",
+      "blurOnHoverEnd"
+    ]);
+    const context = useCompositeContext();
+    store = store || context;
+    invariant(
+      store,
+       false && 0
+    );
+    const isMouseMoving = useIsMouseMoving();
+    const onMouseMoveProp = props.onMouseMove;
+    const focusOnHoverProp = useBooleanEvent(focusOnHover);
+    const onMouseMove = useEvent((event) => {
+      onMouseMoveProp == null ? void 0 : onMouseMoveProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!isMouseMoving())
+        return;
+      if (!focusOnHoverProp(event))
+        return;
+      if (!hasFocusWithin(event.currentTarget)) {
+        const baseElement = store == null ? void 0 : store.getState().baseElement;
+        if (baseElement && !hasFocus(baseElement)) {
+          baseElement.focus();
+        }
+      }
+      store == null ? void 0 : store.setActiveId(event.currentTarget.id);
+    });
+    const onMouseLeaveProp = props.onMouseLeave;
+    const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd);
+    const onMouseLeave = useEvent((event) => {
+      var _a2;
+      onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!isMouseMoving())
+        return;
+      if (hoveringInside(event))
+        return;
+      if (movingToAnotherItem(event))
+        return;
+      if (!focusOnHoverProp(event))
+        return;
+      if (!blurOnHoverEndProp(event))
+        return;
+      store == null ? void 0 : store.setActiveId(null);
+      (_a2 = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a2.focus();
+    });
+    const ref = (0,external_React_.useCallback)((element) => {
+      if (!element)
+        return;
+      element[symbol] = true;
+    }, []);
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), {
+      ref: useMergeRefs(ref, props.ref),
+      onMouseMove,
+      onMouseLeave
+    });
+    return props;
+  }
+);
+var CompositeHover = createMemoComponent(
+  (props) => {
+    const htmlProps = useCompositeHover(props);
+    return createElement("div", htmlProps);
+  }
+);
+if (false) {}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/EAHJFCU4.js
+"use client";
+
+
+
+// src/utils/store.ts
+function getInternal(store, key) {
+  const internals = store.__unstableInternals;
+  invariant(internals, "Invalid store");
+  return internals[key];
+}
+function createStore(initialState, ...stores) {
+  let state = initialState;
+  let prevStateBatch = state;
+  let lastUpdate = Symbol();
+  let destroy = Y3OOHFCN_noop;
+  const instances = /* @__PURE__ */ new Set();
+  const updatedKeys = /* @__PURE__ */ new Set();
+  const setups = /* @__PURE__ */ new Set();
+  const listeners = /* @__PURE__ */ new Set();
+  const batchListeners = /* @__PURE__ */ new Set();
+  const disposables = /* @__PURE__ */ new WeakMap();
+  const listenerKeys = /* @__PURE__ */ new WeakMap();
+  const storeSetup = (callback) => {
+    setups.add(callback);
+    return () => setups.delete(callback);
+  };
+  const storeInit = () => {
+    const initialized = instances.size;
+    const instance = Symbol();
+    instances.add(instance);
+    const maybeDestroy = () => {
+      instances.delete(instance);
+      if (instances.size)
+        return;
+      destroy();
+    };
+    if (initialized)
+      return maybeDestroy;
+    const desyncs = getKeys(state).map(
+      (key) => chain(
+        ...stores.map((store) => {
+          var _a;
+          const storeState = (_a = store == null ? void 0 : store.getState) == null ? void 0 : _a.call(store);
+          if (!storeState)
+            return;
+          if (!Y3OOHFCN_hasOwnProperty(storeState, key))
+            return;
+          return sync(store, [key], (state2) => {
+            setState(
+              key,
+              state2[key],
+              // @ts-expect-error - Not public API. This is just to prevent
+              // infinite loops.
+              true
+            );
+          });
+        })
+      )
+    );
+    const teardowns = [];
+    setups.forEach((setup2) => teardowns.push(setup2()));
+    const cleanups = stores.map(init);
+    destroy = chain(...desyncs, ...teardowns, ...cleanups);
+    return maybeDestroy;
+  };
+  const sub = (keys, listener, set = listeners) => {
+    set.add(listener);
+    listenerKeys.set(listener, keys);
+    return () => {
+      var _a;
+      (_a = disposables.get(listener)) == null ? void 0 : _a();
+      disposables.delete(listener);
+      listenerKeys.delete(listener);
+      set.delete(listener);
+    };
+  };
+  const storeSubscribe = (keys, listener) => sub(keys, listener);
+  const storeSync = (keys, listener) => {
+    disposables.set(listener, listener(state, state));
+    return sub(keys, listener);
+  };
+  const storeBatch = (keys, listener) => {
+    disposables.set(listener, listener(state, prevStateBatch));
+    return sub(keys, listener, batchListeners);
+  };
+  const storePick = (keys) => createStore(pick(state, keys), finalStore);
+  const storeOmit = (keys) => createStore(omit(state, keys), finalStore);
+  const getState = () => state;
+  const setState = (key, value, fromStores = false) => {
+    if (!Y3OOHFCN_hasOwnProperty(state, key))
+      return;
+    const nextValue = Y3OOHFCN_applyState(value, state[key]);
+    if (nextValue === state[key])
+      return;
+    if (!fromStores) {
+      stores.forEach((store) => {
+        var _a;
+        (_a = store == null ? void 0 : store.setState) == null ? void 0 : _a.call(store, key, nextValue);
+      });
+    }
+    const prevState = state;
+    state = _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, state), { [key]: nextValue });
+    const thisUpdate = Symbol();
+    lastUpdate = thisUpdate;
+    updatedKeys.add(key);
+    const run = (listener, prev, uKeys) => {
+      var _a;
+      const keys = listenerKeys.get(listener);
+      const updated = (k) => uKeys ? uKeys.has(k) : k === key;
+      if (!keys || keys.some(updated)) {
+        (_a = disposables.get(listener)) == null ? void 0 : _a();
+        disposables.set(listener, listener(state, prev));
+      }
+    };
+    listeners.forEach((listener) => {
+      run(listener, prevState);
+    });
+    queueMicrotask(() => {
+      if (lastUpdate !== thisUpdate)
+        return;
+      const snapshot = state;
+      batchListeners.forEach((listener) => {
+        run(listener, prevStateBatch, updatedKeys);
+      });
+      prevStateBatch = snapshot;
+      updatedKeys.clear();
+    });
+  };
+  const finalStore = {
+    getState,
+    setState,
+    __unstableInternals: {
+      setup: storeSetup,
+      init: storeInit,
+      subscribe: storeSubscribe,
+      sync: storeSync,
+      batch: storeBatch,
+      pick: storePick,
+      omit: storeOmit
+    }
+  };
+  return finalStore;
+}
+function setup(store, ...args) {
+  if (!store)
+    return;
+  return getInternal(store, "setup")(...args);
+}
+function init(store, ...args) {
+  if (!store)
+    return;
+  return getInternal(store, "init")(...args);
+}
+function subscribe(store, ...args) {
+  if (!store)
+    return;
+  return getInternal(store, "subscribe")(...args);
+}
+function sync(store, ...args) {
+  if (!store)
+    return;
+  return getInternal(store, "sync")(...args);
+}
+function batch(store, ...args) {
+  if (!store)
+    return;
+  return getInternal(store, "batch")(...args);
+}
+function omit2(store, ...args) {
+  if (!store)
+    return;
+  return getInternal(store, "omit")(...args);
+}
+function pick2(store, ...args) {
+  if (!store)
+    return;
+  return getInternal(store, "pick")(...args);
+}
+function mergeStore(...stores) {
+  const initialState = stores.reduce((state, store2) => {
+    var _a;
+    const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2);
+    if (!nextState)
+      return state;
+    return _chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, state), nextState);
+  }, {});
+  const store = createStore(initialState, ...stores);
+  return store;
+}
+function throwOnConflictingProps(props, store) {
+  if (true)
+    return;
+  if (!store)
+    return;
+  const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => {
+    var _a;
+    const stateKey = key.replace("default", "");
+    return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || ""}${stateKey.slice(1)}`;
+  });
+  if (!defaultKeys.length)
+    return;
+  const storeState = store.getState();
+  const conflictingProps = defaultKeys.filter(
+    (key) => Y3OOHFCN_hasOwnProperty(storeState, key)
+  );
+  if (!conflictingProps.length)
+    return;
+  throw new Error(
+    `Passing a store prop in conjunction with a default state is not supported.
+
+const store = useSelectStore();
+<SelectProvider store={store} defaultValue="Apple" />
+                ^             ^
+
+Instead, pass the default state to the topmost store:
+
+const store = useSelectStore({ defaultValue: "Apple" });
+<SelectProvider store={store} />
+
+See https://github.com/ariakit/ariakit/pull/2745 for more details.
+
+If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit
+`
+  );
+}
+
+
+
+// EXTERNAL MODULE: ./node_modules/use-sync-external-store/shim/index.js
+var shim = __webpack_require__(422);
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/EKQEJRUF.js
+"use client";
+
+
+
+// src/utils/store.tsx
+
+
+
+
+var { useSyncExternalStore } = shim;
+var noopSubscribe = () => () => {
+};
+function useStoreState(store, keyOrSelector = identity) {
+  const storeSubscribe = external_React_.useCallback(
+    (callback) => {
+      if (!store)
+        return noopSubscribe();
+      return subscribe(store, null, callback);
+    },
+    [store]
+  );
+  const getSnapshot = () => {
+    const key = typeof keyOrSelector === "string" ? keyOrSelector : null;
+    const selector = typeof keyOrSelector === "function" ? keyOrSelector : null;
+    const state = store == null ? void 0 : store.getState();
+    if (selector)
+      return selector(state);
+    if (!state)
+      return;
+    if (!key)
+      return;
+    if (!Y3OOHFCN_hasOwnProperty(state, key))
+      return;
+    return state[key];
+  };
+  return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot);
+}
+function useStoreProps(store, props, key, setKey) {
+  const value = Y3OOHFCN_hasOwnProperty(props, key) ? props[key] : void 0;
+  const setValue = setKey ? props[setKey] : void 0;
+  const propsRef = useLiveRef({ value, setValue });
+  useSafeLayoutEffect(() => {
+    return sync(store, [key], (state, prev) => {
+      const { value: value2, setValue: setValue2 } = propsRef.current;
+      if (!setValue2)
+        return;
+      if (state[key] === prev[key])
+        return;
+      if (state[key] === value2)
+        return;
+      setValue2(state[key]);
+    });
+  }, [store, key]);
+  useSafeLayoutEffect(() => {
+    if (value === void 0)
+      return;
+    store.setState(key, value);
+    return batch(store, [key], () => {
+      if (value === void 0)
+        return;
+      store.setState(key, value);
+    });
+  });
+}
+function EKQEJRUF_useStore(createStore, props) {
+  const [store, setStore] = external_React_.useState(() => createStore(props));
+  useSafeLayoutEffect(() => init(store), [store]);
+  const useState2 = external_React_.useCallback(
+    (keyOrSelector) => useStoreState(store, keyOrSelector),
+    [store]
+  );
+  const memoizedStore = external_React_.useMemo(
+    () => _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, store), { useState: useState2 }),
+    [store, useState2]
+  );
+  const updateStore = useEvent(() => {
+    setStore((store2) => createStore(_4R3V3JGP_spreadValues(_4R3V3JGP_spreadValues({}, props), store2.getState())));
+  });
+  return [memoizedStore, updateStore];
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/Y6GYTNQ2.js
+"use client";
+
+
+
+// src/collection/collection-store.ts
+
+function useCollectionStoreProps(store, update, props) {
+  useUpdateEffect(update, [props.store]);
+  useStoreProps(store, props, "items", "setItems");
+  return store;
+}
+function useCollectionStore(props = {}) {
+  const [store, update] = useStore(Core.createCollectionStore, props);
+  return useCollectionStoreProps(store, update, props);
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/7GBW5FLS.js
+"use client";
+
+
+
+// src/composite/composite-store.ts
+
+function useCompositeStoreProps(store, update, props) {
+  store = useCollectionStoreProps(store, update, props);
+  useStoreProps(store, props, "activeId", "setActiveId");
+  useStoreProps(store, props, "includesBaseElement");
+  useStoreProps(store, props, "virtualFocus");
+  useStoreProps(store, props, "orientation");
+  useStoreProps(store, props, "rtl");
+  useStoreProps(store, props, "focusLoop");
+  useStoreProps(store, props, "focusWrap");
+  useStoreProps(store, props, "focusShift");
+  return store;
+}
+function _7GBW5FLS_useCompositeStore(props = {}) {
+  const [store, update] = useStore(Core.createCompositeStore, props);
+  return useCompositeStoreProps(store, update, props);
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/SFCBA2JZ.js
+"use client";
+
+
+
+// src/disclosure/disclosure-store.ts
+
+function useDisclosureStoreProps(store, update, props) {
+  useUpdateEffect(update, [props.store, props.disclosure]);
+  useStoreProps(store, props, "open", "setOpen");
+  useStoreProps(store, props, "mounted", "setMounted");
+  useStoreProps(store, props, "animated");
+  return store;
+}
+function useDisclosureStore(props = {}) {
+  const [store, update] = useStore(Core.createDisclosureStore, props);
+  return useDisclosureStoreProps(store, update, props);
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/ZSELSBRM.js
+"use client";
+
+
+
+// src/dialog/dialog-store.ts
+
+function useDialogStoreProps(store, update, props) {
+  return useDisclosureStoreProps(store, update, props);
+}
+function useDialogStore(props = {}) {
+  const [store, update] = useStore(Core.createDialogStore, props);
+  return useDialogStoreProps(store, update, props);
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/MG4P3223.js
+"use client";
+
+
+
+
+// src/popover/popover-store.ts
+
+function usePopoverStoreProps(store, update, props) {
+  useUpdateEffect(update, [props.popover]);
+  store = useDialogStoreProps(store, update, props);
+  useStoreProps(store, props, "placement");
+  return store;
+}
+function usePopoverStore(props = {}) {
+  const [store, update] = useStore(Core.createPopoverStore, props);
+  return usePopoverStoreProps(store, update, props);
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/Z5IGYIPT.js
+"use client";
+
+
+
+
+// src/disclosure/disclosure-store.ts
+function createDisclosureStore(props = {}) {
+  const store = mergeStore(
+    props.store,
+    omit2(props.disclosure, ["contentElement", "disclosureElement"])
+  );
+  throwOnConflictingProps(props, store);
+  const syncState = store == null ? void 0 : store.getState();
+  const open = defaultValue(
+    props.open,
+    syncState == null ? void 0 : syncState.open,
+    props.defaultOpen,
+    false
+  );
+  const animated = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false);
+  const initialState = {
+    open,
+    animated,
+    animating: !!animated && open,
+    mounted: open,
+    contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null),
+    disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null)
+  };
+  const disclosure = createStore(initialState, store);
+  setup(
+    disclosure,
+    () => sync(disclosure, ["animated", "animating"], (state) => {
+      if (state.animated)
+        return;
+      disclosure.setState("animating", false);
+    })
+  );
+  setup(
+    disclosure,
+    () => subscribe(disclosure, ["open"], () => {
+      if (!disclosure.getState().animated)
+        return;
+      disclosure.setState("animating", true);
+    })
+  );
+  setup(
+    disclosure,
+    () => sync(disclosure, ["open", "animating"], (state) => {
+      disclosure.setState("mounted", state.open || state.animating);
+    })
+  );
+  return _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, disclosure), {
+    setOpen: (value) => disclosure.setState("open", value),
+    show: () => disclosure.setState("open", true),
+    hide: () => disclosure.setState("open", false),
+    toggle: () => disclosure.setState("open", (open2) => !open2),
+    stopAnimation: () => disclosure.setState("animating", false),
+    setContentElement: (value) => disclosure.setState("contentElement", value),
+    setDisclosureElement: (value) => disclosure.setState("disclosureElement", value)
+  });
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/SX2XFD6A.js
+"use client";
+
+
+// src/dialog/dialog-store.ts
+function createDialogStore(props = {}) {
+  return createDisclosureStore(props);
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/AF6IUUFN.js
+"use client";
+
+
+
+
+
+// src/popover/popover-store.ts
+function createPopoverStore(_a = {}) {
+  var _b = _a, {
+    popover: otherPopover
+  } = _b, props = _4R3V3JGP_objRest(_b, [
+    "popover"
+  ]);
+  const store = mergeStore(
+    props.store,
+    omit2(otherPopover, [
+      "arrowElement",
+      "anchorElement",
+      "contentElement",
+      "popoverElement",
+      "disclosureElement"
+    ])
+  );
+  throwOnConflictingProps(props, store);
+  const syncState = store == null ? void 0 : store.getState();
+  const dialog = createDialogStore(_chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, props), { store }));
+  const placement = defaultValue(
+    props.placement,
+    syncState == null ? void 0 : syncState.placement,
+    "bottom"
+  );
+  const initialState = _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, dialog.getState()), {
+    placement,
+    currentPlacement: placement,
+    anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null),
+    popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null),
+    arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null),
+    rendered: Symbol("rendered")
+  });
+  const popover = createStore(initialState, dialog, store);
+  return _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, dialog), popover), {
+    setAnchorElement: (element) => popover.setState("anchorElement", element),
+    setPopoverElement: (element) => popover.setState("popoverElement", element),
+    setArrowElement: (element) => popover.setState("arrowElement", element),
+    render: () => popover.setState("rendered", Symbol("rendered"))
+  });
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/22K762VQ.js
+"use client";
+
+
+
+
+
+// src/collection/collection-store.ts
+function isElementPreceding(a, b) {
+  return Boolean(
+    b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING
+  );
+}
+function sortBasedOnDOMPosition(items) {
+  const pairs = items.map((item, index) => [index, item]);
+  let isOrderDifferent = false;
+  pairs.sort(([indexA, a], [indexB, b]) => {
+    const elementA = a.element;
+    const elementB = b.element;
+    if (elementA === elementB)
+      return 0;
+    if (!elementA || !elementB)
+      return 0;
+    if (isElementPreceding(elementA, elementB)) {
+      if (indexA > indexB) {
+        isOrderDifferent = true;
+      }
+      return -1;
+    }
+    if (indexA < indexB) {
+      isOrderDifferent = true;
+    }
+    return 1;
+  });
+  if (isOrderDifferent) {
+    return pairs.map(([_, item]) => item);
+  }
+  return items;
+}
+function getCommonParent(items) {
+  var _a;
+  const firstItem = items.find((item) => !!item.element);
+  const lastItem = [...items].reverse().find((item) => !!item.element);
+  let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement;
+  while (parentElement && (lastItem == null ? void 0 : lastItem.element)) {
+    const parent = parentElement;
+    if (lastItem && parent.contains(lastItem.element)) {
+      return parentElement;
+    }
+    parentElement = parentElement.parentElement;
+  }
+  return DLOEKDPY_getDocument(parentElement).body;
+}
+function getPrivateStore(store) {
+  return store == null ? void 0 : store.__unstablePrivateStore;
+}
+function createCollectionStore(props = {}) {
+  var _a;
+  throwOnConflictingProps(props, props.store);
+  const syncState = (_a = props.store) == null ? void 0 : _a.getState();
+  const items = defaultValue(
+    props.items,
+    syncState == null ? void 0 : syncState.items,
+    props.defaultItems,
+    []
+  );
+  const itemsMap = new Map(items.map((item) => [item.id, item]));
+  const initialState = {
+    items,
+    renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, [])
+  };
+  const syncPrivateStore = getPrivateStore(props.store);
+  const privateStore = createStore(
+    { items, renderedItems: initialState.renderedItems },
+    syncPrivateStore
+  );
+  const collection = createStore(initialState, props.store);
+  const sortItems = (renderedItems) => {
+    const sortedItems = sortBasedOnDOMPosition(renderedItems);
+    privateStore.setState("renderedItems", sortedItems);
+    collection.setState("renderedItems", sortedItems);
+  };
+  setup(collection, () => init(privateStore));
+  setup(privateStore, () => {
+    return batch(privateStore, ["items"], (state) => {
+      collection.setState("items", state.items);
+    });
+  });
+  setup(privateStore, () => {
+    return batch(privateStore, ["renderedItems"], (state) => {
+      let firstRun = true;
+      let raf = requestAnimationFrame(() => {
+        const { renderedItems } = collection.getState();
+        if (state.renderedItems === renderedItems)
+          return;
+        sortItems(state.renderedItems);
+      });
+      if (typeof IntersectionObserver !== "function") {
+        return () => cancelAnimationFrame(raf);
+      }
+      const ioCallback = () => {
+        if (firstRun) {
+          firstRun = false;
+          return;
+        }
+        cancelAnimationFrame(raf);
+        raf = requestAnimationFrame(() => sortItems(state.renderedItems));
+      };
+      const root = getCommonParent(state.renderedItems);
+      const observer = new IntersectionObserver(ioCallback, { root });
+      for (const item of state.renderedItems) {
+        if (!item.element)
+          continue;
+        observer.observe(item.element);
+      }
+      return () => {
+        cancelAnimationFrame(raf);
+        observer.disconnect();
+      };
+    });
+  });
+  const mergeItem = (item, setItems, canDeleteFromMap = false) => {
+    let prevItem;
+    setItems((items2) => {
+      const index = items2.findIndex(({ id }) => id === item.id);
+      const nextItems = items2.slice();
+      if (index !== -1) {
+        prevItem = items2[index];
+        const nextItem = _chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, prevItem), item);
+        nextItems[index] = nextItem;
+        itemsMap.set(item.id, nextItem);
+      } else {
+        nextItems.push(item);
+        itemsMap.set(item.id, item);
+      }
+      return nextItems;
+    });
+    const unmergeItem = () => {
+      setItems((items2) => {
+        if (!prevItem) {
+          if (canDeleteFromMap) {
+            itemsMap.delete(item.id);
+          }
+          return items2.filter(({ id }) => id !== item.id);
+        }
+        const index = items2.findIndex(({ id }) => id === item.id);
+        if (index === -1)
+          return items2;
+        const nextItems = items2.slice();
+        nextItems[index] = prevItem;
+        itemsMap.set(item.id, prevItem);
+        return nextItems;
+      });
+    };
+    return unmergeItem;
+  };
+  const registerItem = (item) => mergeItem(
+    item,
+    (getItems) => privateStore.setState("items", getItems),
+    true
+  );
+  return _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, collection), {
+    registerItem,
+    renderItem: (item) => chain(
+      registerItem(item),
+      mergeItem(
+        item,
+        (getItems) => privateStore.setState("renderedItems", getItems)
+      )
+    ),
+    item: (id) => {
+      if (!id)
+        return null;
+      let item = itemsMap.get(id);
+      if (!item) {
+        const { items: items2 } = collection.getState();
+        item = items2.find((item2) => item2.id === id);
+        if (item) {
+          itemsMap.set(id, item);
+        }
+      }
+      return item || null;
+    },
+    // @ts-expect-error Internal
+    __unstablePrivateStore: privateStore
+  });
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js
+"use client";
+
+// src/utils/array.ts
+function toArray(arg) {
+  if (Array.isArray(arg)) {
+    return arg;
+  }
+  return typeof arg !== "undefined" ? [arg] : [];
+}
+function addItemToArray(array, item, index = -1) {
+  if (!(index in array)) {
+    return [...array, item];
+  }
+  return [...array.slice(0, index), item, ...array.slice(index)];
+}
+function flatten2DArray(array) {
+  const flattened = [];
+  for (const row of array) {
+    flattened.push(...row);
+  }
+  return flattened;
+}
+function reverseArray(array) {
+  return array.slice().reverse();
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/IERTEJ3A.js
+"use client";
+
+
+
+
+
+
+// src/composite/composite-store.ts
+var IERTEJ3A_NULL_ITEM = { id: null };
+function IERTEJ3A_findFirstEnabledItem(items, excludeId) {
+  return items.find((item) => {
+    if (excludeId) {
+      return !item.disabled && item.id !== excludeId;
+    }
+    return !item.disabled;
+  });
+}
+function IERTEJ3A_getEnabledItems(items, excludeId) {
+  return items.filter((item) => {
+    if (excludeId) {
+      return !item.disabled && item.id !== excludeId;
+    }
+    return !item.disabled;
+  });
+}
+function getOppositeOrientation(orientation) {
+  if (orientation === "vertical")
+    return "horizontal";
+  if (orientation === "horizontal")
+    return "vertical";
+  return;
+}
+function getItemsInRow(items, rowId) {
+  return items.filter((item) => item.rowId === rowId);
+}
+function IERTEJ3A_flipItems(items, activeId, shouldInsertNullItem = false) {
+  const index = items.findIndex((item) => item.id === activeId);
+  return [
+    ...items.slice(index + 1),
+    ...shouldInsertNullItem ? [IERTEJ3A_NULL_ITEM] : [],
+    ...items.slice(0, index)
+  ];
+}
+function IERTEJ3A_groupItemsByRows(items) {
+  const rows = [];
+  for (const item of items) {
+    const row = rows.find((currentRow) => {
+      var _a;
+      return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId;
+    });
+    if (row) {
+      row.push(item);
+    } else {
+      rows.push([item]);
+    }
+  }
+  return rows;
+}
+function getMaxRowLength(array) {
+  let maxLength = 0;
+  for (const { length } of array) {
+    if (length > maxLength) {
+      maxLength = length;
+    }
+  }
+  return maxLength;
+}
+function createEmptyItem(rowId) {
+  return {
+    id: "__EMPTY_ITEM__",
+    disabled: true,
+    rowId
+  };
+}
+function normalizeRows(rows, activeId, focusShift) {
+  const maxLength = getMaxRowLength(rows);
+  for (const row of rows) {
+    for (let i = 0; i < maxLength; i += 1) {
+      const item = row[i];
+      if (!item || focusShift && item.disabled) {
+        const isFirst = i === 0;
+        const previousItem = isFirst && focusShift ? IERTEJ3A_findFirstEnabledItem(row) : row[i - 1];
+        row[i] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId);
+      }
+    }
+  }
+  return rows;
+}
+function verticalizeItems(items) {
+  const rows = IERTEJ3A_groupItemsByRows(items);
+  const maxLength = getMaxRowLength(rows);
+  const verticalized = [];
+  for (let i = 0; i < maxLength; i += 1) {
+    for (const row of rows) {
+      const item = row[i];
+      if (item) {
+        verticalized.push(_chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, item), {
+          // If there's no rowId, it means that it's not a grid composite, but
+          // a single row instead. So, instead of verticalizing it, that is,
+          // assigning a different rowId based on the column index, we keep it
+          // undefined so they will be part of the same row. This is useful
+          // when using up/down on one-dimensional composites.
+          rowId: item.rowId ? `${i}` : void 0
+        }));
+      }
+    }
+  }
+  return verticalized;
+}
+function createCompositeStore(props = {}) {
+  var _a;
+  const syncState = (_a = props.store) == null ? void 0 : _a.getState();
+  const collection = createCollectionStore(props);
+  const activeId = defaultValue(
+    props.activeId,
+    syncState == null ? void 0 : syncState.activeId,
+    props.defaultActiveId
+  );
+  const initialState = _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, collection.getState()), {
+    activeId,
+    baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null),
+    includesBaseElement: defaultValue(
+      props.includesBaseElement,
+      syncState == null ? void 0 : syncState.includesBaseElement,
+      activeId === null
+    ),
+    moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0),
+    orientation: defaultValue(
+      props.orientation,
+      syncState == null ? void 0 : syncState.orientation,
+      "both"
+    ),
+    rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false),
+    virtualFocus: defaultValue(
+      props.virtualFocus,
+      syncState == null ? void 0 : syncState.virtualFocus,
+      false
+    ),
+    focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false),
+    focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false),
+    focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false)
+  });
+  const composite = createStore(initialState, collection, props.store);
+  setup(
+    composite,
+    () => sync(composite, ["renderedItems", "activeId"], (state) => {
+      composite.setState("activeId", (activeId2) => {
+        var _a2;
+        if (activeId2 !== void 0)
+          return activeId2;
+        return (_a2 = IERTEJ3A_findFirstEnabledItem(state.renderedItems)) == null ? void 0 : _a2.id;
+      });
+    })
+  );
+  const getNextId = (items, orientation, hasNullItem, skip) => {
+    var _a2, _b;
+    const { activeId: activeId2, rtl, focusLoop, focusWrap, includesBaseElement } = composite.getState();
+    const isHorizontal = orientation !== "vertical";
+    const isRTL = rtl && isHorizontal;
+    const allItems = isRTL ? reverseArray(items) : items;
+    if (activeId2 == null) {
+      return (_a2 = IERTEJ3A_findFirstEnabledItem(allItems)) == null ? void 0 : _a2.id;
+    }
+    const activeItem = allItems.find((item) => item.id === activeId2);
+    if (!activeItem) {
+      return (_b = IERTEJ3A_findFirstEnabledItem(allItems)) == null ? void 0 : _b.id;
+    }
+    const isGrid = !!activeItem.rowId;
+    const activeIndex = allItems.indexOf(activeItem);
+    const nextItems = allItems.slice(activeIndex + 1);
+    const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId);
+    if (skip !== void 0) {
+      const nextEnabledItemsInRow = IERTEJ3A_getEnabledItems(nextItemsInRow, activeId2);
+      const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one.
+      nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1];
+      return nextItem2 == null ? void 0 : nextItem2.id;
+    }
+    const oppositeOrientation = getOppositeOrientation(
+      // If it's a grid and orientation is not set, it's a next/previous call,
+      // which is inherently horizontal. up/down will call next with orientation
+      // set to vertical by default (see below on up/down methods).
+      isGrid ? orientation || "horizontal" : orientation
+    );
+    const canLoop = focusLoop && focusLoop !== oppositeOrientation;
+    const canWrap = isGrid && focusWrap && focusWrap !== oppositeOrientation;
+    hasNullItem = hasNullItem || !isGrid && canLoop && includesBaseElement;
+    if (canLoop) {
+      const loopItems = canWrap && !hasNullItem ? allItems : getItemsInRow(allItems, activeItem.rowId);
+      const sortedItems = IERTEJ3A_flipItems(loopItems, activeId2, hasNullItem);
+      const nextItem2 = IERTEJ3A_findFirstEnabledItem(sortedItems, activeId2);
+      return nextItem2 == null ? void 0 : nextItem2.id;
+    }
+    if (canWrap) {
+      const nextItem2 = IERTEJ3A_findFirstEnabledItem(
+        // We can use nextItems, which contains all the next items, including
+        // items from other rows, to wrap between rows. However, if there is a
+        // null item (the composite container), we'll only use the next items in
+        // the row. So moving next from the last item will focus on the
+        // composite container. On grid composites, horizontal navigation never
+        // focuses on the composite container, only vertical.
+        hasNullItem ? nextItemsInRow : nextItems,
+        activeId2
+      );
+      const nextId = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id;
+      return nextId;
+    }
+    const nextItem = IERTEJ3A_findFirstEnabledItem(nextItemsInRow, activeId2);
+    if (!nextItem && hasNullItem) {
+      return null;
+    }
+    return nextItem == null ? void 0 : nextItem.id;
+  };
+  return _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, collection), composite), {
+    setBaseElement: (element) => composite.setState("baseElement", element),
+    setActiveId: (id) => composite.setState("activeId", id),
+    move: (id) => {
+      if (id === void 0)
+        return;
+      composite.setState("activeId", id);
+      composite.setState("moves", (moves) => moves + 1);
+    },
+    first: () => {
+      var _a2;
+      return (_a2 = IERTEJ3A_findFirstEnabledItem(composite.getState().renderedItems)) == null ? void 0 : _a2.id;
+    },
+    last: () => {
+      var _a2;
+      return (_a2 = IERTEJ3A_findFirstEnabledItem(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id;
+    },
+    next: (skip) => {
+      const { renderedItems, orientation } = composite.getState();
+      return getNextId(renderedItems, orientation, false, skip);
+    },
+    previous: (skip) => {
+      var _a2;
+      const { renderedItems, orientation, includesBaseElement } = composite.getState();
+      const isGrid = !!((_a2 = IERTEJ3A_findFirstEnabledItem(renderedItems)) == null ? void 0 : _a2.rowId);
+      const hasNullItem = !isGrid && includesBaseElement;
+      return getNextId(
+        reverseArray(renderedItems),
+        orientation,
+        hasNullItem,
+        skip
+      );
+    },
+    down: (skip) => {
+      const {
+        activeId: activeId2,
+        renderedItems,
+        focusShift,
+        focusLoop,
+        includesBaseElement
+      } = composite.getState();
+      const shouldShift = focusShift && !skip;
+      const verticalItems = verticalizeItems(
+        flatten2DArray(
+          normalizeRows(IERTEJ3A_groupItemsByRows(renderedItems), activeId2, shouldShift)
+        )
+      );
+      const canLoop = focusLoop && focusLoop !== "horizontal";
+      const hasNullItem = canLoop && includesBaseElement;
+      return getNextId(verticalItems, "vertical", hasNullItem, skip);
+    },
+    up: (skip) => {
+      const { activeId: activeId2, renderedItems, focusShift, includesBaseElement } = composite.getState();
+      const shouldShift = focusShift && !skip;
+      const verticalItems = verticalizeItems(
+        reverseArray(
+          flatten2DArray(
+            normalizeRows(
+              IERTEJ3A_groupItemsByRows(renderedItems),
+              activeId2,
+              shouldShift
+            )
+          )
+        )
+      );
+      const hasNullItem = includesBaseElement;
+      return getNextId(verticalItems, "vertical", hasNullItem, skip);
+    }
+  });
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/combobox/combobox-store.js
+"use client";
+
+
+
+
+
+
+
+
+
+
+
+
+// src/combobox/combobox-store.ts
+var isSafariOnMobile = isSafari() && isTouchDevice();
+function createComboboxStore(props = {}) {
+  var _a;
+  throwOnConflictingProps(props, props.store);
+  const syncState = (_a = props.store) == null ? void 0 : _a.getState();
+  const activeId = defaultValue(
+    props.activeId,
+    syncState == null ? void 0 : syncState.activeId,
+    props.defaultActiveId,
+    null
+  );
+  const composite = createCompositeStore(_chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, props), {
+    activeId,
+    includesBaseElement: defaultValue(
+      props.includesBaseElement,
+      syncState == null ? void 0 : syncState.includesBaseElement,
+      true
+    ),
+    orientation: defaultValue(
+      props.orientation,
+      syncState == null ? void 0 : syncState.orientation,
+      "vertical"
+    ),
+    focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true),
+    focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true),
+    virtualFocus: defaultValue(
+      props.virtualFocus,
+      syncState == null ? void 0 : syncState.virtualFocus,
+      !isSafariOnMobile
+    )
+  }));
+  const popover = createPopoverStore(_chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, props), {
+    placement: defaultValue(
+      props.placement,
+      syncState == null ? void 0 : syncState.placement,
+      "bottom-start"
+    )
+  }));
+  const value = defaultValue(
+    props.value,
+    syncState == null ? void 0 : syncState.value,
+    props.defaultValue,
+    ""
+  );
+  const selectedValue = defaultValue(
+    props.selectedValue,
+    syncState == null ? void 0 : syncState.selectedValue,
+    props.defaultSelectedValue,
+    ""
+  );
+  const multiSelectable = Array.isArray(selectedValue);
+  const initialState = _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, composite.getState()), popover.getState()), {
+    value,
+    selectedValue,
+    resetValueOnSelect: defaultValue(
+      props.resetValueOnSelect,
+      syncState == null ? void 0 : syncState.resetValueOnSelect,
+      multiSelectable
+    ),
+    resetValueOnHide: defaultValue(
+      props.resetValueOnHide,
+      syncState == null ? void 0 : syncState.resetValueOnHide,
+      multiSelectable
+    ),
+    activeValue: syncState == null ? void 0 : syncState.activeValue
+  });
+  const combobox = createStore(initialState, composite, popover, props.store);
+  setup(
+    combobox,
+    () => sync(combobox, ["resetValueOnHide", "mounted"], (state) => {
+      if (!state.resetValueOnHide)
+        return;
+      if (state.mounted)
+        return;
+      combobox.setState("value", value);
+    })
+  );
+  setup(
+    combobox,
+    () => sync(combobox, ["resetValueOnSelect", "selectedValue"], (state) => {
+      if (!state.resetValueOnSelect)
+        return;
+      combobox.setState("value", value);
+    })
+  );
+  setup(
+    combobox,
+    () => batch(combobox, ["mounted"], (state) => {
+      if (state.mounted)
+        return;
+      combobox.setState("activeId", activeId);
+      combobox.setState("moves", 0);
+    })
+  );
+  setup(
+    combobox,
+    () => sync(combobox, ["moves", "activeId"], (state, prevState) => {
+      if (state.moves === prevState.moves) {
+        combobox.setState("activeValue", void 0);
+      }
+    })
+  );
+  setup(
+    combobox,
+    () => batch(combobox, ["moves", "renderedItems"], (state, prev) => {
+      if (state.moves === prev.moves)
+        return;
+      const { activeId: activeId2 } = combobox.getState();
+      const activeItem = composite.item(activeId2);
+      combobox.setState("activeValue", activeItem == null ? void 0 : activeItem.value);
+    })
+  );
+  return _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, popover), composite), combobox), {
+    setValue: (value2) => combobox.setState("value", value2),
+    setSelectedValue: (selectedValue2) => combobox.setState("selectedValue", selectedValue2)
+  });
+}
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/ZKJ2WLF7.js
+"use client";
+
+
+
+
+// src/combobox/combobox-store.ts
+
+function useComboboxStoreProps(store, update, props) {
+  store = usePopoverStoreProps(store, update, props);
+  store = useCompositeStoreProps(store, update, props);
+  useStoreProps(store, props, "value", "setValue");
+  useStoreProps(store, props, "selectedValue", "setSelectedValue");
+  useStoreProps(store, props, "resetValueOnHide");
+  useStoreProps(store, props, "resetValueOnSelect");
+  return store;
+}
+function useComboboxStore(props = {}) {
+  const [store, update] = EKQEJRUF_useStore(createComboboxStore, props);
+  return useComboboxStoreProps(store, update, props);
+}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/OAYFXAQ2.js
+"use client";
+
+
+// src/disclosure/disclosure-context.tsx
+var OAYFXAQ2_ctx = createStoreContext();
+var useDisclosureContext = OAYFXAQ2_ctx.useContext;
+var useDisclosureScopedContext = OAYFXAQ2_ctx.useScopedContext;
+var useDisclosureProviderContext = OAYFXAQ2_ctx.useProviderContext;
+var DisclosureContextProvider = OAYFXAQ2_ctx.ContextProvider;
+var DisclosureScopedContextProvider = OAYFXAQ2_ctx.ScopedContextProvider;
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/G6BJYYBK.js
+"use client";
+
+
+
+// src/dialog/dialog-context.tsx
+
+var G6BJYYBK_ctx = createStoreContext(
+  [DisclosureContextProvider],
+  [DisclosureScopedContextProvider]
+);
+var useDialogContext = G6BJYYBK_ctx.useContext;
+var useDialogScopedContext = G6BJYYBK_ctx.useScopedContext;
+var useDialogProviderContext = G6BJYYBK_ctx.useProviderContext;
+var DialogContextProvider = G6BJYYBK_ctx.ContextProvider;
+var DialogScopedContextProvider = G6BJYYBK_ctx.ScopedContextProvider;
+var DialogHeadingContext = (0,external_React_.createContext)(void 0);
+var DialogDescriptionContext = (0,external_React_.createContext)(void 0);
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/7H5KSHHF.js
+"use client";
+
+
+
+// src/popover/popover-context.tsx
+var _7H5KSHHF_ctx = createStoreContext(
+  [DialogContextProvider],
+  [DialogScopedContextProvider]
+);
+var usePopoverContext = _7H5KSHHF_ctx.useContext;
+var usePopoverScopedContext = _7H5KSHHF_ctx.useScopedContext;
+var usePopoverProviderContext = _7H5KSHHF_ctx.useProviderContext;
+var PopoverContextProvider = _7H5KSHHF_ctx.ContextProvider;
+var PopoverScopedContextProvider = _7H5KSHHF_ctx.ScopedContextProvider;
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/W76OTZCC.js
+"use client";
+
+
+
+
+// src/combobox/combobox-context.tsx
+
+var W76OTZCC_ctx = createStoreContext(
+  [PopoverContextProvider, CompositeContextProvider],
+  [PopoverScopedContextProvider, CompositeScopedContextProvider]
+);
+var useComboboxContext = W76OTZCC_ctx.useContext;
+var useComboboxScopedContext = W76OTZCC_ctx.useScopedContext;
+var useComboboxProviderContext = W76OTZCC_ctx.useProviderContext;
+var ComboboxContextProvider = W76OTZCC_ctx.ContextProvider;
+var ComboboxScopedContextProvider = W76OTZCC_ctx.ScopedContextProvider;
+var ComboboxItemValueContext = (0,external_React_.createContext)(
+  void 0
+);
+var ComboboxItemCheckedContext = (0,external_React_.createContext)(false);
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js
+"use client";
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// src/combobox/combobox-provider.tsx
+
+function ComboboxProvider(props = {}) {
+  const store = useComboboxStore(props);
+  return /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxContextProvider, { value: store, children: props.children });
+}
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/combobox/combobox-label.js
+"use client";
+
+
+
+
+
+
+
+
+
+
+
+// src/combobox/combobox-label.ts
+
+var useComboboxLabel = createHook(
+  (_a) => {
+    var _b = _a, { store } = _b, props = __objRest(_b, ["store"]);
+    const context = useComboboxProviderContext();
+    store = store || context;
+    invariant(
+      store,
+       false && 0
+    );
+    const comboboxId = store.useState((state) => {
+      var _a2;
+      return (_a2 = state.baseElement) == null ? void 0 : _a2.id;
+    });
+    props = _4R3V3JGP_spreadValues({
+      htmlFor: comboboxId
+    }, props);
+    return props;
+  }
+);
+var ComboboxLabel = createMemoComponent(
+  (props) => {
+    const htmlProps = useComboboxLabel(props);
+    return createElement("label", htmlProps);
+  }
+);
+if (false) {}
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/JCH6MLL2.js
+"use client";
+
+
+
+
+
+// src/popover/popover-anchor.ts
+var usePopoverAnchor = createHook(
+  (_a) => {
+    var _b = _a, { store } = _b, props = __objRest(_b, ["store"]);
+    const context = usePopoverProviderContext();
+    store = store || context;
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), {
+      ref: useMergeRefs(store == null ? void 0 : store.setAnchorElement, props.ref)
+    });
+    return props;
+  }
+);
+var PopoverAnchor = createComponent((props) => {
+  const htmlProps = usePopoverAnchor(props);
+  return createElement("div", htmlProps);
+});
+if (false) {}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/SHA3WOPI.js
+"use client";
+
+// src/focusable/focusable-context.ts
+
+var FocusableContext = (0,external_React_.createContext)(true);
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/KK7H3W2B.js
+"use client";
+
+
+
+
+
+// src/focusable/focusable.ts
+
+
+
+
+
+
+var isSafariBrowser = isSafari();
+var alwaysFocusVisibleInputTypes = [
+  "text",
+  "search",
+  "url",
+  "tel",
+  "email",
+  "password",
+  "number",
+  "date",
+  "month",
+  "week",
+  "time",
+  "datetime",
+  "datetime-local"
+];
+function isAlwaysFocusVisible(element) {
+  const { tagName, readOnly, type } = element;
+  if (tagName === "TEXTAREA" && !readOnly)
+    return true;
+  if (tagName === "SELECT" && !readOnly)
+    return true;
+  if (tagName === "INPUT" && !readOnly) {
+    return alwaysFocusVisibleInputTypes.includes(type);
+  }
+  if (element.isContentEditable)
+    return true;
+  return false;
+}
+function isAlwaysFocusVisibleDelayed(element) {
+  const role = element.getAttribute("role");
+  if (role !== "combobox")
+    return false;
+  return !!element.dataset.name;
+}
+function getLabels(element) {
+  if ("labels" in element) {
+    return element.labels;
+  }
+  return null;
+}
+function isNativeCheckboxOrRadio(element) {
+  const tagName = element.tagName.toLowerCase();
+  if (tagName === "input" && element.type) {
+    return element.type === "radio" || element.type === "checkbox";
+  }
+  return false;
+}
+function isNativeTabbable(tagName) {
+  if (!tagName)
+    return true;
+  return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a";
+}
+function supportsDisabledAttribute(tagName) {
+  if (!tagName)
+    return true;
+  return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea";
+}
+function getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) {
+  if (!focusable) {
+    return tabIndexProp;
+  }
+  if (trulyDisabled) {
+    if (nativeTabbable && !supportsDisabled) {
+      return -1;
+    }
+    return;
+  }
+  if (nativeTabbable) {
+    return tabIndexProp;
+  }
+  return tabIndexProp || 0;
+}
+function useDisableEvent(onEvent, disabled) {
+  return useEvent((event) => {
+    onEvent == null ? void 0 : onEvent(event);
+    if (event.defaultPrevented)
+      return;
+    if (disabled) {
+      event.stopPropagation();
+      event.preventDefault();
+    }
+  });
+}
+var isKeyboardModality = true;
+function onGlobalMouseDown(event) {
+  const target = event.target;
+  if (target && "hasAttribute" in target) {
+    if (!target.hasAttribute("data-focus-visible")) {
+      isKeyboardModality = false;
+    }
+  }
+}
+function onGlobalKeyDown(event) {
+  if (event.metaKey)
+    return;
+  if (event.ctrlKey)
+    return;
+  if (event.altKey)
+    return;
+  isKeyboardModality = true;
+}
+var useFocusable = createHook(
+  (_a) => {
+    var _b = _a, {
+      focusable = true,
+      accessibleWhenDisabled,
+      autoFocus,
+      onFocusVisible
+    } = _b, props = __objRest(_b, [
+      "focusable",
+      "accessibleWhenDisabled",
+      "autoFocus",
+      "onFocusVisible"
+    ]);
+    const ref = (0,external_React_.useRef)(null);
+    (0,external_React_.useEffect)(() => {
+      if (!focusable)
+        return;
+      addGlobalEventListener("mousedown", onGlobalMouseDown, true);
+      addGlobalEventListener("keydown", onGlobalKeyDown, true);
+    }, [focusable]);
+    if (isSafariBrowser) {
+      (0,external_React_.useEffect)(() => {
+        if (!focusable)
+          return;
+        const element = ref.current;
+        if (!element)
+          return;
+        if (!isNativeCheckboxOrRadio(element))
+          return;
+        const labels = getLabels(element);
+        if (!labels)
+          return;
+        const onMouseUp = () => queueMicrotask(() => element.focus());
+        labels.forEach((label) => label.addEventListener("mouseup", onMouseUp));
+        return () => {
+          labels.forEach(
+            (label) => label.removeEventListener("mouseup", onMouseUp)
+          );
+        };
+      }, [focusable]);
+    }
+    const disabled = focusable && disabledFromProps(props);
+    const trulyDisabled = !!disabled && !accessibleWhenDisabled;
+    const [focusVisible, setFocusVisible] = (0,external_React_.useState)(false);
+    (0,external_React_.useEffect)(() => {
+      if (!focusable)
+        return;
+      if (trulyDisabled && focusVisible) {
+        setFocusVisible(false);
+      }
+    }, [focusable, trulyDisabled, focusVisible]);
+    (0,external_React_.useEffect)(() => {
+      if (!focusable)
+        return;
+      if (!focusVisible)
+        return;
+      const element = ref.current;
+      if (!element)
+        return;
+      if (typeof IntersectionObserver === "undefined")
+        return;
+      const observer = new IntersectionObserver(() => {
+        if (!isFocusable(element)) {
+          setFocusVisible(false);
+        }
+      });
+      observer.observe(element);
+      return () => observer.disconnect();
+    }, [focusable, focusVisible]);
+    const onKeyPressCapture = useDisableEvent(
+      props.onKeyPressCapture,
+      disabled
+    );
+    const onMouseDownCapture = useDisableEvent(
+      props.onMouseDownCapture,
+      disabled
+    );
+    const onClickCapture = useDisableEvent(props.onClickCapture, disabled);
+    const onMouseDownProp = props.onMouseDown;
+    const onMouseDown = useEvent((event) => {
+      onMouseDownProp == null ? void 0 : onMouseDownProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!focusable)
+        return;
+      const element = event.currentTarget;
+      if (!isSafariBrowser)
+        return;
+      if (isPortalEvent(event))
+        return;
+      if (!isButton(element) && !isNativeCheckboxOrRadio(element))
+        return;
+      let receivedFocus = false;
+      const onFocus = () => {
+        receivedFocus = true;
+      };
+      const options = { capture: true, once: true };
+      element.addEventListener("focusin", onFocus, options);
+      queueBeforeEvent(element, "mouseup", () => {
+        element.removeEventListener("focusin", onFocus, true);
+        if (receivedFocus)
+          return;
+        focusIfNeeded(element);
+      });
+    });
+    const handleFocusVisible = (event, currentTarget) => {
+      if (currentTarget) {
+        event.currentTarget = currentTarget;
+      }
+      if (!focusable)
+        return;
+      const element = event.currentTarget;
+      if (!element)
+        return;
+      if (!hasFocus(element))
+        return;
+      onFocusVisible == null ? void 0 : onFocusVisible(event);
+      if (event.defaultPrevented)
+        return;
+      setFocusVisible(true);
+    };
+    const onKeyDownCaptureProp = props.onKeyDownCapture;
+    const onKeyDownCapture = useEvent(
+      (event) => {
+        onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event);
+        if (event.defaultPrevented)
+          return;
+        if (!focusable)
+          return;
+        if (focusVisible)
+          return;
+        if (event.metaKey)
+          return;
+        if (event.altKey)
+          return;
+        if (event.ctrlKey)
+          return;
+        if (!isSelfTarget(event))
+          return;
+        const element = event.currentTarget;
+        queueMicrotask(() => handleFocusVisible(event, element));
+      }
+    );
+    const onFocusCaptureProp = props.onFocusCapture;
+    const onFocusCapture = useEvent((event) => {
+      onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!focusable)
+        return;
+      if (!isSelfTarget(event)) {
+        setFocusVisible(false);
+        return;
+      }
+      const element = event.currentTarget;
+      const applyFocusVisible = () => handleFocusVisible(event, element);
+      if (isKeyboardModality || isAlwaysFocusVisible(event.target)) {
+        queueMicrotask(applyFocusVisible);
+      } else if (isAlwaysFocusVisibleDelayed(event.target)) {
+        queueBeforeEvent(event.target, "focusout", applyFocusVisible);
+      } else {
+        setFocusVisible(false);
+      }
+    });
+    const onBlurProp = props.onBlur;
+    const onBlur = useEvent((event) => {
+      onBlurProp == null ? void 0 : onBlurProp(event);
+      if (!focusable)
+        return;
+      if (!isFocusEventOutside(event))
+        return;
+      setFocusVisible(false);
+    });
+    const autoFocusOnShow = (0,external_React_.useContext)(FocusableContext);
+    const autoFocusRef = useEvent((element) => {
+      if (!focusable)
+        return;
+      if (!autoFocus)
+        return;
+      if (!element)
+        return;
+      if (!autoFocusOnShow)
+        return;
+      queueMicrotask(() => {
+        if (hasFocus(element))
+          return;
+        if (!isFocusable(element))
+          return;
+        element.focus();
+      });
+    });
+    const tagName = useTagName(ref, props.as);
+    const nativeTabbable = focusable && isNativeTabbable(tagName);
+    const supportsDisabled = focusable && supportsDisabledAttribute(tagName);
+    const style = trulyDisabled ? _4R3V3JGP_spreadValues({ pointerEvents: "none" }, props.style) : props.style;
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({
+      "data-focus-visible": focusable && focusVisible ? "" : void 0,
+      "data-autofocus": autoFocus ? true : void 0,
+      "aria-disabled": disabled ? true : void 0
+    }, props), {
+      ref: useMergeRefs(ref, autoFocusRef, props.ref),
+      style,
+      tabIndex: getTabIndex(
+        focusable,
+        trulyDisabled,
+        nativeTabbable,
+        supportsDisabled,
+        props.tabIndex
+      ),
+      disabled: supportsDisabled && trulyDisabled ? true : void 0,
+      // TODO: Test Focusable contentEditable.
+      contentEditable: disabled ? void 0 : props.contentEditable,
+      onKeyPressCapture,
+      onClickCapture,
+      onMouseDownCapture,
+      onMouseDown,
+      onKeyDownCapture,
+      onFocusCapture,
+      onBlur
+    });
+    return props;
+  }
+);
+var Focusable = createComponent((props) => {
+  props = useFocusable(props);
+  return createElement("div", props);
+});
+if (false) {}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/7QTPYGNZ.js
+"use client";
+
+
+
+
+
+
+
+// src/composite/composite.tsx
+
+
+
+
+
+
+
+function isGrid(items) {
+  return items.some((item) => !!item.rowId);
+}
+function isPrintableKey(event) {
+  const target = event.target;
+  if (target && !DLOEKDPY_isTextField(target))
+    return false;
+  return event.key.length === 1 && !event.ctrlKey && !event.metaKey;
+}
+function isModifierKey(event) {
+  return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta";
+}
+function useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) {
+  return useEvent((event) => {
+    var _a;
+    onKeyboardEvent == null ? void 0 : onKeyboardEvent(event);
+    if (event.defaultPrevented)
+      return;
+    if (event.isPropagationStopped())
+      return;
+    if (!isSelfTarget(event))
+      return;
+    if (isModifierKey(event))
+      return;
+    if (isPrintableKey(event))
+      return;
+    const state = store.getState();
+    const activeElement = (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.element;
+    if (!activeElement)
+      return;
+    const _b = event, { view } = _b, eventInit = __objRest(_b, ["view"]);
+    const previousElement = previousElementRef == null ? void 0 : previousElementRef.current;
+    if (activeElement !== previousElement) {
+      activeElement.focus();
+    }
+    if (!fireKeyboardEvent(activeElement, event.type, eventInit)) {
+      event.preventDefault();
+    }
+    if (event.currentTarget.contains(activeElement)) {
+      event.stopPropagation();
+    }
+  });
+}
+function findFirstEnabledItemInTheLastRow(items) {
+  return findFirstEnabledItem(
+    flatten2DArray(reverseArray(groupItemsByRows(items)))
+  );
+}
+function useScheduleFocus(store) {
+  const [scheduled, setScheduled] = (0,external_React_.useState)(false);
+  const schedule = (0,external_React_.useCallback)(() => setScheduled(true), []);
+  const activeItem = store.useState(
+    (state) => getEnabledItem(store, state.activeId)
+  );
+  (0,external_React_.useEffect)(() => {
+    const activeElement = activeItem == null ? void 0 : activeItem.element;
+    if (!scheduled)
+      return;
+    if (!activeElement)
+      return;
+    setScheduled(false);
+    activeElement.focus({ preventScroll: true });
+  }, [activeItem, scheduled]);
+  return schedule;
+}
+var useComposite = createHook(
+  (_a) => {
+    var _b = _a, {
+      store,
+      composite = true,
+      focusOnMove = composite,
+      moveOnKeyPress = true
+    } = _b, props = __objRest(_b, [
+      "store",
+      "composite",
+      "focusOnMove",
+      "moveOnKeyPress"
+    ]);
+    const context = useCompositeProviderContext();
+    store = store || context;
+    invariant(
+      store,
+       false && 0
+    );
+    const previousElementRef = (0,external_React_.useRef)(null);
+    const scheduleFocus = useScheduleFocus(store);
+    const moves = store.useState("moves");
+    (0,external_React_.useEffect)(() => {
+      var _a2;
+      if (!store)
+        return;
+      if (!moves)
+        return;
+      if (!composite)
+        return;
+      if (!focusOnMove)
+        return;
+      const { activeId: activeId2 } = store.getState();
+      const itemElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element;
+      if (!itemElement)
+        return;
+      focusIntoView(itemElement);
+    }, [store, moves, composite, focusOnMove]);
+    useSafeLayoutEffect(() => {
+      if (!store)
+        return;
+      if (!moves)
+        return;
+      if (!composite)
+        return;
+      const { baseElement, activeId: activeId2 } = store.getState();
+      const isSelfAcive = activeId2 === null;
+      if (!isSelfAcive)
+        return;
+      if (!baseElement)
+        return;
+      const previousElement = previousElementRef.current;
+      previousElementRef.current = null;
+      if (previousElement) {
+        fireBlurEvent(previousElement, { relatedTarget: baseElement });
+      }
+      if (!hasFocus(baseElement)) {
+        baseElement.focus();
+      }
+    }, [store, moves, composite]);
+    const activeId = store.useState("activeId");
+    const virtualFocus = store.useState("virtualFocus");
+    useSafeLayoutEffect(() => {
+      var _a2;
+      if (!store)
+        return;
+      if (!composite)
+        return;
+      if (!virtualFocus)
+        return;
+      const previousElement = previousElementRef.current;
+      previousElementRef.current = null;
+      if (!previousElement)
+        return;
+      const activeElement = (_a2 = getEnabledItem(store, activeId)) == null ? void 0 : _a2.element;
+      const relatedTarget = activeElement || DLOEKDPY_getActiveElement(previousElement);
+      if (relatedTarget === previousElement)
+        return;
+      fireBlurEvent(previousElement, { relatedTarget });
+    }, [store, activeId, virtualFocus, composite]);
+    const onKeyDownCapture = useKeyboardEventProxy(
+      store,
+      props.onKeyDownCapture,
+      previousElementRef
+    );
+    const onKeyUpCapture = useKeyboardEventProxy(
+      store,
+      props.onKeyUpCapture,
+      previousElementRef
+    );
+    const onFocusCaptureProp = props.onFocusCapture;
+    const onFocusCapture = useEvent((event) => {
+      onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!store)
+        return;
+      const { virtualFocus: virtualFocus2 } = store.getState();
+      if (!virtualFocus2)
+        return;
+      const previousActiveElement = event.relatedTarget;
+      const isSilentlyFocused = silentlyFocused(event.currentTarget);
+      if (isSelfTarget(event) && isSilentlyFocused) {
+        event.stopPropagation();
+        previousElementRef.current = previousActiveElement;
+      }
+    });
+    const onFocusProp = props.onFocus;
+    const onFocus = useEvent((event) => {
+      onFocusProp == null ? void 0 : onFocusProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!composite)
+        return;
+      if (!store)
+        return;
+      const { relatedTarget } = event;
+      const { virtualFocus: virtualFocus2 } = store.getState();
+      if (virtualFocus2) {
+        if (isSelfTarget(event) && !isItem(store, relatedTarget)) {
+          queueMicrotask(scheduleFocus);
+        }
+      } else if (isSelfTarget(event)) {
+        store.setActiveId(null);
+      }
+    });
+    const onBlurCaptureProp = props.onBlurCapture;
+    const onBlurCapture = useEvent((event) => {
+      var _a2;
+      onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!store)
+        return;
+      const { virtualFocus: virtualFocus2, activeId: activeId2 } = store.getState();
+      if (!virtualFocus2)
+        return;
+      const activeElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element;
+      const nextActiveElement = event.relatedTarget;
+      const nextActiveElementIsItem = isItem(store, nextActiveElement);
+      const previousElement = previousElementRef.current;
+      previousElementRef.current = null;
+      if (isSelfTarget(event) && nextActiveElementIsItem) {
+        if (nextActiveElement === activeElement) {
+          if (previousElement && previousElement !== nextActiveElement) {
+            fireBlurEvent(previousElement, event);
+          }
+        } else if (activeElement) {
+          fireBlurEvent(activeElement, event);
+        } else if (previousElement) {
+          fireBlurEvent(previousElement, event);
+        }
+        event.stopPropagation();
+      } else {
+        const targetIsItem = isItem(store, event.target);
+        if (!targetIsItem && activeElement) {
+          fireBlurEvent(activeElement, event);
+        }
+      }
+    });
+    const onKeyDownProp = props.onKeyDown;
+    const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
+    const onKeyDown = useEvent((event) => {
+      var _a2;
+      onKeyDownProp == null ? void 0 : onKeyDownProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!store)
+        return;
+      if (!isSelfTarget(event))
+        return;
+      const { orientation, items, renderedItems, activeId: activeId2 } = store.getState();
+      const activeItem = getEnabledItem(store, activeId2);
+      if ((_a2 = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a2.isConnected)
+        return;
+      const isVertical = orientation !== "horizontal";
+      const isHorizontal = orientation !== "vertical";
+      const grid = isGrid(renderedItems);
+      const isHorizontalKey = event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End";
+      if (isHorizontalKey && DLOEKDPY_isTextField(event.currentTarget))
+        return;
+      const up = () => {
+        if (grid) {
+          const item = items && findFirstEnabledItemInTheLastRow(items);
+          return item == null ? void 0 : item.id;
+        }
+        return store == null ? void 0 : store.last();
+      };
+      const keyMap = {
+        ArrowUp: (grid || isVertical) && up,
+        ArrowRight: (grid || isHorizontal) && store.first,
+        ArrowDown: (grid || isVertical) && store.first,
+        ArrowLeft: (grid || isHorizontal) && store.last,
+        Home: store.first,
+        End: store.last,
+        PageUp: store.first,
+        PageDown: store.last
+      };
+      const action = keyMap[event.key];
+      if (action) {
+        const id = action();
+        if (id !== void 0) {
+          if (!moveOnKeyPressProp(event))
+            return;
+          event.preventDefault();
+          store.move(id);
+        }
+      }
+    });
+    props = useWrapElement(
+      props,
+      (element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(CompositeContextProvider, { value: store, children: element }),
+      [store]
+    );
+    const activeDescendant = store.useState((state) => {
+      var _a2;
+      if (!store)
+        return;
+      if (!composite)
+        return;
+      if (!state.virtualFocus)
+        return;
+      return (_a2 = getEnabledItem(store, state.activeId)) == null ? void 0 : _a2.id;
+    });
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({
+      "aria-activedescendant": activeDescendant
+    }, props), {
+      ref: useMergeRefs(composite ? store.setBaseElement : null, props.ref),
+      onKeyDownCapture,
+      onKeyUpCapture,
+      onFocusCapture,
+      onFocus,
+      onBlurCapture,
+      onKeyDown
+    });
+    const focusable = store.useState(
+      (state) => composite && (state.virtualFocus || state.activeId === null)
+    );
+    props = useFocusable(_4R3V3JGP_spreadValues({ focusable }, props));
+    return props;
+  }
+);
+var _7QTPYGNZ_Composite = createComponent((props) => {
+  const htmlProps = useComposite(props);
+  return createElement("div", htmlProps);
+});
+if (false) {}
+
+
+
+;// CONCATENATED MODULE: external "ReactDOM"
+const external_ReactDOM_namespaceObject = window["ReactDOM"];
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/combobox/combobox.js
+"use client";
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// src/combobox/combobox.ts
+
+
+
+
+
+
+function isFirstItemAutoSelected(items, activeValue, autoSelect) {
+  if (!autoSelect)
+    return false;
+  const firstItem = items.find((item) => !item.disabled && item.value);
+  return (firstItem == null ? void 0 : firstItem.value) === activeValue;
+}
+function hasCompletionString(value, activeValue) {
+  if (!activeValue)
+    return false;
+  if (value == null)
+    return false;
+  value = normalizeString(value);
+  return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0;
+}
+function isInputEvent(event) {
+  return event.type === "input";
+}
+function isAriaAutoCompleteValue(value) {
+  return value === "inline" || value === "list" || value === "both" || value === "none";
+}
+var useCombobox = createHook(
+  (_a) => {
+    var _b = _a, {
+      store,
+      focusable = true,
+      autoSelect: autoSelectProp = false,
+      getAutoSelectId,
+      showOnChange = true,
+      setValueOnChange = true,
+      showOnMouseDown = true,
+      setValueOnClick = true,
+      showOnKeyDown = true,
+      moveOnKeyPress = true,
+      autoComplete = "list"
+    } = _b, props = __objRest(_b, [
+      "store",
+      "focusable",
+      "autoSelect",
+      "getAutoSelectId",
+      "showOnChange",
+      "setValueOnChange",
+      "showOnMouseDown",
+      "setValueOnClick",
+      "showOnKeyDown",
+      "moveOnKeyPress",
+      "autoComplete"
+    ]);
+    const context = useComboboxProviderContext();
+    store = store || context;
+    invariant(
+      store,
+       false && 0
+    );
+    const ref = (0,external_React_.useRef)(null);
+    const [valueUpdated, forceValueUpdate] = useForceUpdate();
+    const canAutoSelectRef = (0,external_React_.useRef)(false);
+    const composingRef = (0,external_React_.useRef)(false);
+    const autoSelect = store.useState(
+      (state) => !!autoSelectProp && state.virtualFocus
+    );
+    const inline = autoComplete === "inline" || autoComplete === "both";
+    const [canInline, setCanInline] = (0,external_React_.useState)(inline);
+    useUpdateLayoutEffect(() => {
+      if (!inline)
+        return;
+      setCanInline(true);
+    }, [inline]);
+    const storeValue = store.useState("value");
+    const activeValue = store.useState(
+      (state) => inline && canInline ? state.activeValue : void 0
+    );
+    const items = store.useState("renderedItems");
+    const open = store.useState("open");
+    const contentElement = store.useState("contentElement");
+    const value = (0,external_React_.useMemo)(() => {
+      if (!inline)
+        return storeValue;
+      if (!canInline)
+        return storeValue;
+      const firstItemAutoSelected = isFirstItemAutoSelected(
+        items,
+        activeValue,
+        autoSelect
+      );
+      if (firstItemAutoSelected) {
+        if (hasCompletionString(storeValue, activeValue)) {
+          const slice = (activeValue == null ? void 0 : activeValue.slice(storeValue.length)) || "";
+          return storeValue + slice;
+        }
+        return storeValue;
+      }
+      return activeValue || storeValue;
+    }, [inline, canInline, items, activeValue, autoSelect, storeValue]);
+    (0,external_React_.useEffect)(() => {
+      const element = ref.current;
+      if (!element)
+        return;
+      const onCompositeItemMove = () => setCanInline(true);
+      element.addEventListener("combobox-item-move", onCompositeItemMove);
+      return () => {
+        element.removeEventListener("combobox-item-move", onCompositeItemMove);
+      };
+    }, []);
+    (0,external_React_.useEffect)(() => {
+      if (!inline)
+        return;
+      if (!canInline)
+        return;
+      if (!activeValue)
+        return;
+      const firstItemAutoSelected = isFirstItemAutoSelected(
+        items,
+        activeValue,
+        autoSelect
+      );
+      if (!firstItemAutoSelected)
+        return;
+      if (!hasCompletionString(storeValue, activeValue))
+        return;
+      queueMicrotask(() => {
+        const element = ref.current;
+        if (!element)
+          return;
+        setSelectionRange(element, storeValue.length, activeValue.length);
+      });
+    }, [
+      valueUpdated,
+      inline,
+      canInline,
+      activeValue,
+      items,
+      autoSelect,
+      storeValue
+    ]);
+    const scrollingElementRef = (0,external_React_.useRef)(null);
+    const getAutoSelectIdProp = useEvent(getAutoSelectId);
+    const autoSelectIdRef = (0,external_React_.useRef)(null);
+    (0,external_React_.useEffect)(() => {
+      if (!open)
+        return;
+      if (!contentElement)
+        return;
+      const scrollingElement = getScrollingElement(contentElement);
+      if (!scrollingElement)
+        return;
+      scrollingElementRef.current = scrollingElement;
+      const onWheel = () => {
+        canAutoSelectRef.current = false;
+      };
+      const onScroll = () => {
+        if (!store)
+          return;
+        if (!canAutoSelectRef.current)
+          return;
+        const { activeId } = store.getState();
+        if (activeId === null)
+          return;
+        if (activeId === autoSelectIdRef.current)
+          return;
+        canAutoSelectRef.current = false;
+      };
+      const options = { passive: true, capture: true };
+      scrollingElement.addEventListener("wheel", onWheel, options);
+      scrollingElement.addEventListener("scroll", onScroll, options);
+      return () => {
+        scrollingElement.removeEventListener("wheel", onWheel, true);
+        scrollingElement.removeEventListener("scroll", onScroll, true);
+      };
+    }, [open, contentElement, store]);
+    useSafeLayoutEffect(() => {
+      if (!storeValue)
+        return;
+      if (composingRef.current)
+        return;
+      canAutoSelectRef.current = true;
+    }, [storeValue]);
+    useSafeLayoutEffect(() => {
+      if (open)
+        return;
+      canAutoSelectRef.current = false;
+    }, [open]);
+    const resetValueOnSelect = store.useState("resetValueOnSelect");
+    useUpdateEffect(() => {
+      var _a2;
+      const canAutoSelect = canAutoSelectRef.current;
+      if (!store)
+        return;
+      if ((!autoSelect || !canAutoSelect) && !resetValueOnSelect)
+        return;
+      const { baseElement, contentElement: contentElement2, activeId } = store.getState();
+      if (baseElement && !hasFocus(baseElement))
+        return;
+      if (contentElement2 == null ? void 0 : contentElement2.hasAttribute("data-placing")) {
+        const observer = new MutationObserver(forceValueUpdate);
+        observer.observe(contentElement2, { attributeFilter: ["data-placing"] });
+        return () => observer.disconnect();
+      }
+      if (autoSelect && canAutoSelect) {
+        const userAutoSelectId = getAutoSelectIdProp(items);
+        const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : store.first();
+        autoSelectIdRef.current = autoSelectId;
+        store.move(autoSelectId != null ? autoSelectId : null);
+      } else {
+        const element = (_a2 = store.item(activeId)) == null ? void 0 : _a2.element;
+        if (element && "scrollIntoView" in element) {
+          element.scrollIntoView({ block: "nearest", inline: "nearest" });
+        }
+      }
+      return;
+    }, [
+      store,
+      valueUpdated,
+      storeValue,
+      autoSelect,
+      resetValueOnSelect,
+      getAutoSelectIdProp,
+      items
+    ]);
+    (0,external_React_.useEffect)(() => {
+      if (!inline)
+        return;
+      const combobox = ref.current;
+      if (!combobox)
+        return;
+      const elements = [combobox, contentElement].filter(
+        (value2) => !!value2
+      );
+      const onBlur2 = (event) => {
+        if (elements.every((el) => isFocusEventOutside(event, el))) {
+          store == null ? void 0 : store.setValue(value);
+        }
+      };
+      elements.forEach((el) => el.addEventListener("focusout", onBlur2));
+      return () => {
+        elements.forEach((el) => el.removeEventListener("focusout", onBlur2));
+      };
+    }, [inline, contentElement, store, value]);
+    const onChangeProp = props.onChange;
+    const showOnChangeProp = useBooleanEvent(showOnChange);
+    const setValueOnChangeProp = useBooleanEvent(setValueOnChange);
+    const onChange = useEvent((event) => {
+      onChangeProp == null ? void 0 : onChangeProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!store)
+        return;
+      const { value: value2, selectionStart, selectionEnd } = event.target;
+      const nativeEvent = event.nativeEvent;
+      canAutoSelectRef.current = true;
+      if (isInputEvent(nativeEvent)) {
+        if (nativeEvent.isComposing) {
+          canAutoSelectRef.current = false;
+          composingRef.current = true;
+        }
+        if (inline) {
+          const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText";
+          const caretAtEnd = selectionStart === value2.length;
+          setCanInline(textInserted && caretAtEnd);
+        }
+      }
+      if (setValueOnChangeProp(event)) {
+        const isSameValue = value2 === store.getState().value;
+        (0,external_ReactDOM_namespaceObject.flushSync)(() => store == null ? void 0 : store.setValue(value2));
+        setSelectionRange(event.currentTarget, selectionStart, selectionEnd);
+        if (inline && autoSelect && isSameValue) {
+          forceValueUpdate();
+        }
+      }
+      if (showOnChangeProp(event)) {
+        store.show();
+      }
+      if (!autoSelect || !canAutoSelectRef.current) {
+        store.setActiveId(null);
+      }
+    });
+    const onCompositionEndProp = props.onCompositionEnd;
+    const onCompositionEnd = useEvent(
+      (event) => {
+        canAutoSelectRef.current = true;
+        composingRef.current = false;
+        onCompositionEndProp == null ? void 0 : onCompositionEndProp(event);
+        if (event.defaultPrevented)
+          return;
+        if (!autoSelect)
+          return;
+        forceValueUpdate();
+      }
+    );
+    const onMouseDownProp = props.onMouseDown;
+    const setValueOnClickProp = useBooleanEvent(setValueOnClick);
+    const showOnMouseDownProp = useBooleanEvent(showOnMouseDown);
+    const onMouseDown = useEvent((event) => {
+      onMouseDownProp == null ? void 0 : onMouseDownProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (event.button)
+        return;
+      if (event.ctrlKey)
+        return;
+      if (!store)
+        return;
+      store.setActiveId(null);
+      if (setValueOnClickProp(event)) {
+        store.setValue(value);
+      }
+      if (showOnMouseDownProp(event)) {
+        queueBeforeEvent(event.currentTarget, "mouseup", store.show);
+      }
+    });
+    const onKeyDownProp = props.onKeyDown;
+    const showOnKeyDownProp = useBooleanEvent(showOnKeyDown);
+    const onKeyDown = useEvent(
+      (event) => {
+        onKeyDownProp == null ? void 0 : onKeyDownProp(event);
+        if (!event.repeat) {
+          canAutoSelectRef.current = false;
+        }
+        if (event.defaultPrevented)
+          return;
+        if (event.ctrlKey)
+          return;
+        if (event.altKey)
+          return;
+        if (event.shiftKey)
+          return;
+        if (event.metaKey)
+          return;
+        if (!store)
+          return;
+        const { open: open2, activeId } = store.getState();
+        if (open2)
+          return;
+        if (activeId !== null)
+          return;
+        if (event.key === "ArrowUp" || event.key === "ArrowDown") {
+          if (showOnKeyDownProp(event)) {
+            event.preventDefault();
+            store.show();
+          }
+        }
+      }
+    );
+    const onBlurProp = props.onBlur;
+    const onBlur = useEvent((event) => {
+      canAutoSelectRef.current = false;
+      onBlurProp == null ? void 0 : onBlurProp(event);
+      if (event.defaultPrevented)
+        return;
+    });
+    const id = useId(props.id);
+    const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0;
+    const isActiveItem = store.useState((state) => state.activeId === null);
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({
+      id,
+      role: "combobox",
+      "aria-autocomplete": ariaAutoComplete,
+      "aria-haspopup": getPopupRole(contentElement, "listbox"),
+      "aria-expanded": open,
+      "aria-controls": contentElement == null ? void 0 : contentElement.id,
+      "data-active-item": isActiveItem || void 0,
+      value
+    }, props), {
+      ref: useMergeRefs(ref, props.ref),
+      onChange,
+      onCompositionEnd,
+      onMouseDown,
+      onKeyDown,
+      onBlur
+    });
+    props = useComposite(_4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({
+      store,
+      focusable
+    }, props), {
+      // Enable inline autocomplete when the user moves from the combobox input
+      // to an item.
+      moveOnKeyPress: (event) => {
+        if (isFalsyBooleanCallback(moveOnKeyPress, event))
+          return false;
+        if (inline)
+          setCanInline(true);
+        return true;
+      }
+    }));
+    props = usePopoverAnchor(_4R3V3JGP_spreadValues({ store }, props));
+    return _4R3V3JGP_spreadValues({ autoComplete: "off" }, props);
+  }
+);
+var Combobox = createComponent((props) => {
+  const htmlProps = useCombobox(props);
+  return createElement("input", htmlProps);
+});
+if (false) {}
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/CLE7NTOY.js
+"use client";
+
+
+
+
+
+
+
+// src/disclosure/disclosure-content.tsx
+
+
+
+function afterTimeout(timeoutMs, cb) {
+  const timeoutId = setTimeout(cb, timeoutMs);
+  return () => clearTimeout(timeoutId);
+}
+function CLE7NTOY_afterPaint(cb) {
+  let raf = requestAnimationFrame(() => {
+    raf = requestAnimationFrame(cb);
+  });
+  return () => cancelAnimationFrame(raf);
+}
+function parseCSSTime(...times) {
+  return times.join(", ").split(", ").reduce((longestTime, currentTimeString) => {
+    const currentTime = parseFloat(currentTimeString || "0s") * 1e3;
+    if (currentTime > longestTime)
+      return currentTime;
+    return longestTime;
+  }, 0);
+}
+function isHidden(mounted, hidden, alwaysVisible) {
+  return !alwaysVisible && hidden !== false && (!mounted || !!hidden);
+}
+var useDisclosureContent = createHook(
+  (_a) => {
+    var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]);
+    const context = useDisclosureProviderContext();
+    store = store || context;
+    invariant(
+      store,
+       false && 0
+    );
+    const id = useId(props.id);
+    const [transition, setTransition] = (0,external_React_.useState)(null);
+    const open = store.useState("open");
+    const mounted = store.useState("mounted");
+    const animated = store.useState("animated");
+    const contentElement = store.useState("contentElement");
+    useSafeLayoutEffect(() => {
+      if (!animated)
+        return;
+      if (!(contentElement == null ? void 0 : contentElement.isConnected)) {
+        setTransition(null);
+        return;
+      }
+      return CLE7NTOY_afterPaint(() => {
+        setTransition(open ? "enter" : "leave");
+      });
+    }, [animated, contentElement, open]);
+    useSafeLayoutEffect(() => {
+      if (!store)
+        return;
+      if (!animated)
+        return;
+      if (!contentElement)
+        return;
+      if (!transition)
+        return;
+      if (transition === "enter" && !open)
+        return;
+      if (transition === "leave" && open)
+        return;
+      if (typeof animated === "number") {
+        const timeoutMs2 = animated;
+        return afterTimeout(timeoutMs2, store.stopAnimation);
+      }
+      const {
+        transitionDuration,
+        animationDuration,
+        transitionDelay,
+        animationDelay
+      } = getComputedStyle(contentElement);
+      const delay = parseCSSTime(transitionDelay, animationDelay);
+      const duration = parseCSSTime(transitionDuration, animationDuration);
+      const timeoutMs = delay + duration;
+      if (!timeoutMs)
+        return;
+      return afterTimeout(timeoutMs, store.stopAnimation);
+    }, [store, animated, contentElement, open, transition]);
+    props = useWrapElement(
+      props,
+      (element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(DialogScopedContextProvider, { value: store, children: element }),
+      [store]
+    );
+    const hidden = isHidden(mounted, props.hidden, alwaysVisible);
+    const style = hidden ? _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props.style), { display: "none" }) : props.style;
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({
+      id,
+      "data-enter": transition === "enter" ? "" : void 0,
+      "data-leave": transition === "leave" ? "" : void 0,
+      hidden
+    }, props), {
+      ref: useMergeRefs(id ? store.setContentElement : null, props.ref),
+      style
+    });
+    return props;
+  }
+);
+var DisclosureContentImpl = createComponent(
+  (props) => {
+    const htmlProps = useDisclosureContent(props);
+    return createElement("div", htmlProps);
+  }
+);
+var DisclosureContent = createComponent(
+  (_a) => {
+    var _b = _a, { unmountOnHide } = _b, props = __objRest(_b, ["unmountOnHide"]);
+    const context = useDisclosureProviderContext();
+    const store = props.store || context;
+    const mounted = useStoreState(
+      store,
+      (state) => !unmountOnHide || (state == null ? void 0 : state.mounted)
+    );
+    if (mounted === false)
+      return null;
+    return /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(DisclosureContentImpl, _4R3V3JGP_spreadValues({}, props));
+  }
+);
+if (false) {}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/ZEXNX5JH.js
+"use client";
+
+
+
+
+
+
+
+// src/combobox/combobox-list.tsx
+
+
+
+
+var useComboboxList = createHook(
+  (_a) => {
+    var _b = _a, { store, focusable = true, alwaysVisible } = _b, props = __objRest(_b, ["store", "focusable", "alwaysVisible"]);
+    const context = useComboboxProviderContext();
+    store = store || context;
+    invariant(
+      store,
+       false && 0
+    );
+    const ref = (0,external_React_.useRef)(null);
+    const id = useId(props.id);
+    const onKeyDownProp = props.onKeyDown;
+    const onKeyDown = useEvent((event) => {
+      onKeyDownProp == null ? void 0 : onKeyDownProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (event.key === "Escape") {
+        store == null ? void 0 : store.move(null);
+      }
+    });
+    const restoreVirtualFocus = (0,external_React_.useRef)(false);
+    const onFocusVisibleProp = props.onFocusVisible;
+    const onFocusVisible = useEvent((event) => {
+      onFocusVisibleProp == null ? void 0 : onFocusVisibleProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (event.type !== "focus")
+        return;
+      if (!store)
+        return;
+      const { virtualFocus } = store.getState();
+      if (!virtualFocus)
+        return;
+      const { relatedTarget, currentTarget } = event;
+      if (relatedTarget && currentTarget.contains(relatedTarget))
+        return;
+      restoreVirtualFocus.current = true;
+      store.setState("virtualFocus", false);
+    });
+    const onBlurProp = props.onBlur;
+    const onBlur = useEvent((event) => {
+      onBlurProp == null ? void 0 : onBlurProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!restoreVirtualFocus.current)
+        return;
+      if (!isFocusEventOutside(event))
+        return;
+      restoreVirtualFocus.current = false;
+      store == null ? void 0 : store.setState("virtualFocus", true);
+    });
+    props = useWrapElement(
+      props,
+      (element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxScopedContextProvider, { value: store, children: element }),
+      [store]
+    );
+    const mounted = store.useState("mounted");
+    const hidden = isHidden(mounted, props.hidden, alwaysVisible);
+    const style = hidden ? _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props.style), { display: "none" }) : props.style;
+    const multiSelectable = store.useState(
+      (state) => Array.isArray(state.selectedValue)
+    );
+    const role = useAttribute(ref, "role", props.role);
+    const isCompositeRole = role === "listbox" || role === "tree" || role === "grid";
+    const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0;
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({
+      id,
+      hidden,
+      role: "listbox",
+      tabIndex: focusable ? -1 : void 0,
+      "aria-multiselectable": ariaMultiSelectable
+    }, props), {
+      ref: useMergeRefs(id ? store.setContentElement : null, ref, props.ref),
+      style,
+      onKeyDown,
+      onFocusVisible,
+      onBlur
+    });
+    props = useFocusable(_4R3V3JGP_spreadValues({ focusable }, props));
+    return props;
+  }
+);
+var ComboboxList = createComponent((props) => {
+  const htmlProps = useComboboxList(props);
+  return createElement("div", htmlProps);
+});
+if (false) {}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/NWCBQ4CV.js
+"use client";
+
+
+
+
+
+// src/command/command.ts
+
+
+
+
+
+function isNativeClick(event) {
+  if (!event.isTrusted)
+    return false;
+  const element = event.currentTarget;
+  if (event.key === "Enter") {
+    return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A";
+  }
+  if (event.key === " ") {
+    return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT";
+  }
+  return false;
+}
+var NWCBQ4CV_symbol = Symbol("command");
+var useCommand = createHook(
+  (_a) => {
+    var _b = _a, { clickOnEnter = true, clickOnSpace = true } = _b, props = __objRest(_b, ["clickOnEnter", "clickOnSpace"]);
+    const ref = (0,external_React_.useRef)(null);
+    const tagName = useTagName(ref, props.as);
+    const type = props.type;
+    const [isNativeButton, setIsNativeButton] = (0,external_React_.useState)(
+      () => !!tagName && isButton({ tagName, type })
+    );
+    (0,external_React_.useEffect)(() => {
+      if (!ref.current)
+        return;
+      setIsNativeButton(isButton(ref.current));
+    }, []);
+    const [active, setActive] = (0,external_React_.useState)(false);
+    const activeRef = (0,external_React_.useRef)(false);
+    const disabled = disabledFromProps(props);
+    const [isDuplicate, metadataProps] = useMetadataProps(props, NWCBQ4CV_symbol, true);
+    const onKeyDownProp = props.onKeyDown;
+    const onKeyDown = useEvent((event) => {
+      onKeyDownProp == null ? void 0 : onKeyDownProp(event);
+      const element = event.currentTarget;
+      if (event.defaultPrevented)
+        return;
+      if (isDuplicate)
+        return;
+      if (disabled)
+        return;
+      if (!isSelfTarget(event))
+        return;
+      if (DLOEKDPY_isTextField(element))
+        return;
+      if (element.isContentEditable)
+        return;
+      const isEnter = clickOnEnter && event.key === "Enter";
+      const isSpace = clickOnSpace && event.key === " ";
+      const shouldPreventEnter = event.key === "Enter" && !clickOnEnter;
+      const shouldPreventSpace = event.key === " " && !clickOnSpace;
+      if (shouldPreventEnter || shouldPreventSpace) {
+        event.preventDefault();
+        return;
+      }
+      if (isEnter || isSpace) {
+        const nativeClick = isNativeClick(event);
+        if (isEnter) {
+          if (!nativeClick) {
+            event.preventDefault();
+            const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]);
+            const click = () => fireClickEvent(element, eventInit);
+            if (isFirefox()) {
+              queueBeforeEvent(element, "keyup", click);
+            } else {
+              queueMicrotask(click);
+            }
+          }
+        } else if (isSpace) {
+          activeRef.current = true;
+          if (!nativeClick) {
+            event.preventDefault();
+            setActive(true);
+          }
+        }
+      }
+    });
+    const onKeyUpProp = props.onKeyUp;
+    const onKeyUp = useEvent((event) => {
+      onKeyUpProp == null ? void 0 : onKeyUpProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (isDuplicate)
+        return;
+      if (disabled)
+        return;
+      if (event.metaKey)
+        return;
+      const isSpace = clickOnSpace && event.key === " ";
+      if (activeRef.current && isSpace) {
+        activeRef.current = false;
+        if (!isNativeClick(event)) {
+          event.preventDefault();
+          setActive(false);
+          const element = event.currentTarget;
+          const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]);
+          queueMicrotask(() => fireClickEvent(element, eventInit));
+        }
+      }
+    });
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues(_4R3V3JGP_spreadValues({
+      "data-active": active ? "" : void 0,
+      type: isNativeButton ? "button" : void 0
+    }, metadataProps), props), {
+      ref: useMergeRefs(ref, props.ref),
+      onKeyDown,
+      onKeyUp
+    });
+    props = useFocusable(props);
+    return props;
+  }
+);
+var Command = createComponent((props) => {
+  props = useCommand(props);
+  return createElement("button", props);
+});
+if (false) {}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/UH3I23HL.js
+"use client";
+
+
+
+
+
+// src/collection/collection-item.ts
+
+
+var useCollectionItem = createHook(
+  (_a) => {
+    var _b = _a, {
+      store,
+      shouldRegisterItem = true,
+      getItem = identity,
+      element: element
+    } = _b, props = __objRest(_b, [
+      "store",
+      "shouldRegisterItem",
+      "getItem",
+      // @ts-expect-error This prop may come from a collection renderer.
+      "element"
+    ]);
+    const context = useCollectionContext();
+    store = store || context;
+    const id = useId(props.id);
+    const ref = (0,external_React_.useRef)(element);
+    (0,external_React_.useEffect)(() => {
+      const element2 = ref.current;
+      if (!id)
+        return;
+      if (!element2)
+        return;
+      if (!shouldRegisterItem)
+        return;
+      const item = getItem({ id, element: element2 });
+      return store == null ? void 0 : store.renderItem(item);
+    }, [id, shouldRegisterItem, getItem, store]);
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), {
+      ref: useMergeRefs(ref, props.ref)
+    });
+    return props;
+  }
+);
+var CollectionItem = createComponent(
+  (props) => {
+    const htmlProps = useCollectionItem(props);
+    return createElement("div", htmlProps);
+  }
+);
+if (false) {}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/QZLXIDNP.js
+"use client";
+
+
+
+
+
+
+
+
+
+// src/composite/composite-item.tsx
+
+
+
+
+
+function isEditableElement(element) {
+  if (element.isContentEditable)
+    return true;
+  if (DLOEKDPY_isTextField(element))
+    return true;
+  return element.tagName === "INPUT" && !isButton(element);
+}
+function getNextPageOffset(scrollingElement, pageUp = false) {
+  const height = scrollingElement.clientHeight;
+  const { top } = scrollingElement.getBoundingClientRect();
+  const pageSize = Math.max(height * 0.875, height - 40) * 1.5;
+  const pageOffset = pageUp ? height - pageSize + top : pageSize + top;
+  if (scrollingElement.tagName === "HTML") {
+    return pageOffset + scrollingElement.scrollTop;
+  }
+  return pageOffset;
+}
+function getItemOffset(itemElement, pageUp = false) {
+  const { top } = itemElement.getBoundingClientRect();
+  if (pageUp) {
+    return top + itemElement.clientHeight;
+  }
+  return top;
+}
+function findNextPageItemId(element, store, next, pageUp = false) {
+  var _a;
+  if (!store)
+    return;
+  if (!next)
+    return;
+  const { renderedItems } = store.getState();
+  const scrollingElement = getScrollingElement(element);
+  if (!scrollingElement)
+    return;
+  const nextPageOffset = getNextPageOffset(scrollingElement, pageUp);
+  let id;
+  let prevDifference;
+  for (let i = 0; i < renderedItems.length; i += 1) {
+    const previousId = id;
+    id = next(i);
+    if (!id)
+      break;
+    if (id === previousId)
+      continue;
+    const itemElement = (_a = getEnabledItem(store, id)) == null ? void 0 : _a.element;
+    if (!itemElement)
+      continue;
+    const itemOffset = getItemOffset(itemElement, pageUp);
+    const difference = itemOffset - nextPageOffset;
+    const absDifference = Math.abs(difference);
+    if (pageUp && difference <= 0 || !pageUp && difference >= 0) {
+      if (prevDifference !== void 0 && prevDifference < absDifference) {
+        id = previousId;
+      }
+      break;
+    }
+    prevDifference = absDifference;
+  }
+  return id;
+}
+function targetIsAnotherItem(event, store) {
+  if (isSelfTarget(event))
+    return false;
+  return isItem(store, event.target);
+}
+function useRole(ref, props) {
+  const roleProp = props.role;
+  const [role, setRole] = (0,external_React_.useState)(roleProp);
+  useSafeLayoutEffect(() => {
+    const element = ref.current;
+    if (!element)
+      return;
+    setRole(element.getAttribute("role") || roleProp);
+  }, [roleProp]);
+  return role;
+}
+function requiresAriaSelected(role) {
+  return role === "option" || role === "treeitem";
+}
+function supportsAriaSelected(role) {
+  if (role === "option")
+    return true;
+  if (role === "tab")
+    return true;
+  if (role === "treeitem")
+    return true;
+  if (role === "gridcell")
+    return true;
+  if (role === "row")
+    return true;
+  if (role === "columnheader")
+    return true;
+  if (role === "rowheader")
+    return true;
+  return false;
+}
+var useCompositeItem = createHook(
+  (_a) => {
+    var _b = _a, {
+      store,
+      rowId: rowIdProp,
+      preventScrollOnKeyDown = false,
+      moveOnKeyPress = true,
+      tabbable = false,
+      getItem: getItemProp,
+      "aria-setsize": ariaSetSizeProp,
+      "aria-posinset": ariaPosInSetProp
+    } = _b, props = __objRest(_b, [
+      "store",
+      "rowId",
+      "preventScrollOnKeyDown",
+      "moveOnKeyPress",
+      "tabbable",
+      "getItem",
+      "aria-setsize",
+      "aria-posinset"
+    ]);
+    const context = useCompositeContext();
+    store = store || context;
+    const id = useId(props.id);
+    const ref = (0,external_React_.useRef)(null);
+    const row = (0,external_React_.useContext)(CompositeRowContext);
+    const rowId = useStoreState(store, (state) => {
+      if (rowIdProp)
+        return rowIdProp;
+      if (!state)
+        return;
+      if (!(row == null ? void 0 : row.baseElement))
+        return;
+      if (row.baseElement !== state.baseElement)
+        return;
+      return row.id;
+    });
+    const disabled = disabledFromProps(props);
+    const trulyDisabled = disabled && !props.accessibleWhenDisabled;
+    const getItem = (0,external_React_.useCallback)(
+      (item) => {
+        const nextItem = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, item), {
+          id: id || item.id,
+          rowId,
+          disabled: !!trulyDisabled
+        });
+        if (getItemProp) {
+          return getItemProp(nextItem);
+        }
+        return nextItem;
+      },
+      [id, rowId, trulyDisabled, getItemProp]
+    );
+    const onFocusProp = props.onFocus;
+    const hasFocusedComposite = (0,external_React_.useRef)(false);
+    const onFocus = useEvent((event) => {
+      onFocusProp == null ? void 0 : onFocusProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (isPortalEvent(event))
+        return;
+      if (!id)
+        return;
+      if (!store)
+        return;
+      const { activeId, virtualFocus: virtualFocus2, baseElement: baseElement2 } = store.getState();
+      if (targetIsAnotherItem(event, store))
+        return;
+      if (activeId !== id) {
+        store.setActiveId(id);
+      }
+      if (!virtualFocus2)
+        return;
+      if (!isSelfTarget(event))
+        return;
+      if (isEditableElement(event.currentTarget))
+        return;
+      if (!(baseElement2 == null ? void 0 : baseElement2.isConnected))
+        return;
+      hasFocusedComposite.current = true;
+      const fromComposite = event.relatedTarget === baseElement2 || isItem(store, event.relatedTarget);
+      if (fromComposite) {
+        focusSilently(baseElement2);
+      } else {
+        baseElement2.focus();
+      }
+    });
+    const onBlurCaptureProp = props.onBlurCapture;
+    const onBlurCapture = useEvent((event) => {
+      onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event);
+      if (event.defaultPrevented)
+        return;
+      const state = store == null ? void 0 : store.getState();
+      if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) {
+        hasFocusedComposite.current = false;
+        event.preventDefault();
+        event.stopPropagation();
+      }
+    });
+    const onKeyDownProp = props.onKeyDown;
+    const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown);
+    const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
+    const onKeyDown = useEvent((event) => {
+      onKeyDownProp == null ? void 0 : onKeyDownProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (!isSelfTarget(event))
+        return;
+      if (!store)
+        return;
+      const { currentTarget } = event;
+      const state = store.getState();
+      const item = store.item(id);
+      const isGrid = !!(item == null ? void 0 : item.rowId);
+      const isVertical = state.orientation !== "horizontal";
+      const isHorizontal = state.orientation !== "vertical";
+      const canHomeEnd = () => {
+        if (isGrid)
+          return true;
+        if (isHorizontal)
+          return true;
+        if (!state.baseElement)
+          return true;
+        if (!DLOEKDPY_isTextField(state.baseElement))
+          return true;
+        return false;
+      };
+      const keyMap = {
+        ArrowUp: (isGrid || isVertical) && store.up,
+        ArrowRight: (isGrid || isHorizontal) && store.next,
+        ArrowDown: (isGrid || isVertical) && store.down,
+        ArrowLeft: (isGrid || isHorizontal) && store.previous,
+        Home: () => {
+          if (!canHomeEnd())
+            return;
+          if (!isGrid || event.ctrlKey) {
+            return store == null ? void 0 : store.first();
+          }
+          return store == null ? void 0 : store.previous(-1);
+        },
+        End: () => {
+          if (!canHomeEnd())
+            return;
+          if (!isGrid || event.ctrlKey) {
+            return store == null ? void 0 : store.last();
+          }
+          return store == null ? void 0 : store.next(-1);
+        },
+        PageUp: () => {
+          return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.up, true);
+        },
+        PageDown: () => {
+          return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.down);
+        }
+      };
+      const action = keyMap[event.key];
+      if (action) {
+        const nextId = action();
+        if (preventScrollOnKeyDownProp(event) || nextId !== void 0) {
+          if (!moveOnKeyPressProp(event))
+            return;
+          event.preventDefault();
+          store.move(nextId);
+        }
+      }
+    });
+    const baseElement = useStoreState(
+      store,
+      (state) => (state == null ? void 0 : state.baseElement) || void 0
+    );
+    const providerValue = (0,external_React_.useMemo)(
+      () => ({ id, baseElement }),
+      [id, baseElement]
+    );
+    props = useWrapElement(
+      props,
+      (element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }),
+      [providerValue]
+    );
+    const isActiveItem = useStoreState(
+      store,
+      (state) => !!state && state.activeId === id
+    );
+    const virtualFocus = useStoreState(store, "virtualFocus");
+    const role = useRole(ref, props);
+    let ariaSelected;
+    if (isActiveItem) {
+      if (requiresAriaSelected(role)) {
+        ariaSelected = true;
+      } else if (virtualFocus && supportsAriaSelected(role)) {
+        ariaSelected = true;
+      }
+    }
+    const ariaSetSize = useStoreState(store, (state) => {
+      if (ariaSetSizeProp != null)
+        return ariaSetSizeProp;
+      if (!state)
+        return;
+      if (!(row == null ? void 0 : row.ariaSetSize))
+        return;
+      if (row.baseElement !== state.baseElement)
+        return;
+      return row.ariaSetSize;
+    });
+    const ariaPosInSet = useStoreState(store, (state) => {
+      if (ariaPosInSetProp != null)
+        return ariaPosInSetProp;
+      if (!state)
+        return;
+      if (!(row == null ? void 0 : row.ariaPosInSet))
+        return;
+      if (row.baseElement !== state.baseElement)
+        return;
+      const itemsInRow = state.renderedItems.filter(
+        (item) => item.rowId === rowId
+      );
+      return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id);
+    });
+    const isTabbable = useStoreState(store, (state) => {
+      if (!(state == null ? void 0 : state.renderedItems.length))
+        return true;
+      if (state.virtualFocus)
+        return false;
+      if (tabbable)
+        return true;
+      return state.activeId === id;
+    });
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({
+      id,
+      "aria-selected": ariaSelected,
+      "data-active-item": isActiveItem ? "" : void 0
+    }, props), {
+      ref: useMergeRefs(ref, props.ref),
+      tabIndex: isTabbable ? props.tabIndex : -1,
+      onFocus,
+      onBlurCapture,
+      onKeyDown
+    });
+    props = useCommand(props);
+    props = useCollectionItem(_4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({
+      store
+    }, props), {
+      getItem,
+      shouldRegisterItem: !!id ? props.shouldRegisterItem : false
+    }));
+    return _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), {
+      "aria-setsize": ariaSetSize,
+      "aria-posinset": ariaPosInSet
+    });
+  }
+);
+var QZLXIDNP_CompositeItem = createMemoComponent(
+  (props) => {
+    const htmlProps = useCompositeItem(props);
+    return createElement("button", htmlProps);
+  }
+);
+if (false) {}
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/combobox/combobox-item.js
+"use client";
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// src/combobox/combobox-item.tsx
+
+
+
+
+
+
+function isSelected(storeValue, itemValue) {
+  if (itemValue == null)
+    return;
+  if (storeValue == null)
+    return false;
+  if (Array.isArray(storeValue)) {
+    return storeValue.includes(itemValue);
+  }
+  return storeValue === itemValue;
+}
+var useComboboxItem = createHook(
+  (_a) => {
+    var _b = _a, {
+      store,
+      value,
+      hideOnClick,
+      selectValueOnClick = true,
+      setValueOnClick,
+      focusOnHover = false,
+      moveOnKeyPress = true,
+      getItem: getItemProp
+    } = _b, props = __objRest(_b, [
+      "store",
+      "value",
+      "hideOnClick",
+      "selectValueOnClick",
+      "setValueOnClick",
+      "focusOnHover",
+      "moveOnKeyPress",
+      "getItem"
+    ]);
+    const context = useComboboxScopedContext();
+    store = store || context;
+    invariant(
+      store,
+       false && 0
+    );
+    const getItem = (0,external_React_.useCallback)(
+      (item) => {
+        const nextItem = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, item), { value });
+        if (getItemProp) {
+          return getItemProp(nextItem);
+        }
+        return nextItem;
+      },
+      [value, getItemProp]
+    );
+    const multiSelectable = store.useState(
+      (state) => Array.isArray(state.selectedValue)
+    );
+    setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable;
+    hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable;
+    const onClickProp = props.onClick;
+    const setValueOnClickProp = useBooleanEvent(setValueOnClick);
+    const selectValueOnClickProp = useBooleanEvent(selectValueOnClick);
+    const hideOnClickProp = useBooleanEvent(hideOnClick);
+    const onClick = useEvent((event) => {
+      onClickProp == null ? void 0 : onClickProp(event);
+      if (event.defaultPrevented)
+        return;
+      if (isDownloading(event))
+        return;
+      if (isOpeningInNewTab(event))
+        return;
+      if (value != null) {
+        if (selectValueOnClickProp(event)) {
+          store == null ? void 0 : store.setSelectedValue((prevValue) => {
+            if (!Array.isArray(prevValue))
+              return value;
+            if (prevValue.includes(value)) {
+              return prevValue.filter((v) => v !== value);
+            }
+            return [...prevValue, value];
+          });
+        }
+        if (setValueOnClickProp(event)) {
+          store == null ? void 0 : store.setValue(value);
+        }
+      }
+      if (hideOnClickProp(event)) {
+        store == null ? void 0 : store.move(null);
+        store == null ? void 0 : store.hide();
+      }
+    });
+    const onKeyDownProp = props.onKeyDown;
+    const onKeyDown = useEvent((event) => {
+      onKeyDownProp == null ? void 0 : onKeyDownProp(event);
+      if (event.defaultPrevented)
+        return;
+      const baseElement = store == null ? void 0 : store.getState().baseElement;
+      if (!baseElement)
+        return;
+      if (hasFocus(baseElement))
+        return;
+      const printable = event.key.length === 1;
+      if (printable || event.key === "Backspace" || event.key === "Delete") {
+        queueMicrotask(() => baseElement.focus());
+        if (DLOEKDPY_isTextField(baseElement)) {
+          store == null ? void 0 : store.setValue(baseElement.value);
+        }
+      }
+    });
+    const selected = store.useState(
+      (state) => isSelected(state.selectedValue, value)
+    );
+    if (multiSelectable && selected != null) {
+      props = _4R3V3JGP_spreadValues({
+        "aria-selected": selected
+      }, props);
+    }
+    props = useWrapElement(
+      props,
+      (element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }),
+      [value, selected]
+    );
+    const contentElement = store.useState("contentElement");
+    props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({
+      role: getPopupItemRole(contentElement),
+      children: value
+    }, props), {
+      onClick,
+      onKeyDown
+    });
+    const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
+    props = useCompositeItem(_4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({
+      store
+    }, props), {
+      getItem,
+      // Dispatch a custom event on the combobox input when moving to an item
+      // with the keyboard so the Combobox component can enable inline
+      // autocompletion.
+      moveOnKeyPress: (event) => {
+        if (!moveOnKeyPressProp(event))
+          return false;
+        const moveEvent = new Event("combobox-item-move");
+        const baseElement = store == null ? void 0 : store.getState().baseElement;
+        baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent);
+        return true;
+      }
+    }));
+    props = useCompositeHover(_4R3V3JGP_spreadValues({ store, focusOnHover }, props));
+    return props;
+  }
+);
+var ComboboxItem = createMemoComponent(
+  (props) => {
+    const htmlProps = useComboboxItem(props);
+    return createElement("div", htmlProps);
+  }
+);
+if (false) {}
+
+
+;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js
+"use client";
+
+
+
+
+
+
+
+
+
+
+
+// src/combobox/combobox-item-value.tsx
+
+
+
+function normalizeValue(value) {
+  return normalizeString(value).toLowerCase();
+}
+function splitValue(itemValue, userValue) {
+  userValue = normalizeValue(userValue);
+  let index = normalizeValue(itemValue).indexOf(userValue);
+  const parts = [];
+  while (index !== -1) {
+    if (index !== 0) {
+      parts.push(
+        /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { "data-autocomplete-value": "", children: itemValue.substr(0, index) }, parts.length)
+      );
+    }
+    parts.push(
+      /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { "data-user-value": "", children: itemValue.substr(index, userValue.length) }, parts.length)
+    );
+    itemValue = itemValue.substr(index + userValue.length);
+    index = normalizeValue(itemValue).indexOf(userValue);
+  }
+  if (itemValue) {
+    parts.push(
+      /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { "data-autocomplete-value": "", children: itemValue }, parts.length)
+    );
+  }
+  return parts;
+}
+var useComboboxItemValue = createHook(
+  (_a) => {
+    var _b = _a, { store, value } = _b, props = __objRest(_b, ["store", "value"]);
+    const context = useComboboxScopedContext();
+    store = store || context;
+    const itemContext = (0,external_React_.useContext)(ComboboxItemValueContext);
+    const itemValue = value != null ? value : itemContext;
+    invariant(
+      store,
+       false && 0
+    );
+    const stateValue = store.useState(
+      (state) => itemValue && state.value ? state.value : void 0
+    );
+    const children = (0,external_React_.useMemo)(
+      () => itemValue && stateValue ? splitValue(itemValue, stateValue) : itemValue,
+      [itemValue, stateValue]
+    );
+    props = _4R3V3JGP_spreadValues({
+      children
+    }, props);
+    return props;
+  }
+);
+var ComboboxItemValue = createComponent(
+  (props) => {
+    const htmlProps = useComboboxItemValue(props);
+    return createElement("span", htmlProps);
+  }
+);
+if (false) {}
+
+
+// EXTERNAL MODULE: ./node_modules/remove-accents/index.js
+var remove_accents = __webpack_require__(9681);
+var remove_accents_default = /*#__PURE__*/__webpack_require__.n(remove_accents);
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/check.js
+/**
+ * WordPress dependencies
+ */
+
+
+const check = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"
+  })
+});
+/* harmony default export */ const library_check = (check);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/search-widget.js
+/**
+ * External dependencies
+ */
+// eslint-disable-next-line no-restricted-imports
+
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  CompositeV2: search_widget_Composite,
+  CompositeItemV2: search_widget_CompositeItem,
+  useCompositeStoreV2: search_widget_useCompositeStore
+} = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+const radioCheck = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Circle, {
+    cx: 12,
+    cy: 12,
+    r: 3
+  })
+});
+function normalizeSearchInput(input = '') {
+  return remove_accents_default()(input.trim().toLowerCase());
+}
+const search_widget_EMPTY_ARRAY = [];
+const getCurrentValue = (filterDefinition, currentFilter) => {
+  if (filterDefinition.singleSelection) {
+    return currentFilter?.value;
+  }
+  if (Array.isArray(currentFilter?.value)) {
+    return currentFilter.value;
+  }
+  if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) {
+    return [currentFilter.value];
+  }
+  return search_widget_EMPTY_ARRAY;
+};
+const getNewValue = (filterDefinition, currentFilter, value) => {
+  if (filterDefinition.singleSelection) {
+    return value;
+  }
+  if (Array.isArray(currentFilter?.value)) {
+    return currentFilter.value.includes(value) ? currentFilter.value.filter(v => v !== value) : [...currentFilter.value, value];
+  }
+  return [value];
+};
+function ListBox({
+  view,
+  filter,
+  onChangeView
+}) {
+  const compositeStore = search_widget_useCompositeStore({
+    virtualFocus: true,
+    focusLoop: true,
+    // When we have no or just one operator, we can set the first item as active.
+    // We do that by passing `undefined` to `defaultActiveId`. Otherwise, we set it to `null`,
+    // so the first item is not selected, since the focus is on the operators control.
+    defaultActiveId: filter.operators?.length === 1 ? undefined : null
+  });
+  const currentFilter = view.filters.find(f => f.field === filter.field);
+  const currentValue = getCurrentValue(filter, currentFilter);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(search_widget_Composite, {
+    store: compositeStore,
+    role: "listbox",
+    className: "dataviews-search-widget-listbox",
+    "aria-label": (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */
+    (0,external_wp_i18n_namespaceObject.__)('List of: %1$s'), filter.name),
+    onFocusVisible: () => {
+      if (!compositeStore.getState().activeId) {
+        compositeStore.move(compositeStore.first());
+      }
+    },
+    render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CompositeTypeahead, {
+      store: compositeStore
+    }),
+    children: filter.elements.map(element => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(CompositeHover, {
+      store: compositeStore,
+      render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(search_widget_CompositeItem, {
+        render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          "aria-label": element.label,
+          role: "option",
+          className: "dataviews-search-widget-listitem"
+        }),
+        onClick: () => {
+          const newFilters = currentFilter ? [...view.filters.map(_filter => {
+            if (_filter.field === filter.field) {
+              return {
+                ..._filter,
+                operator: currentFilter.operator || filter.operators[0],
+                value: getNewValue(filter, currentFilter, element.value)
+              };
+            }
+            return _filter;
+          })] : [...view.filters, {
+            field: filter.field,
+            operator: filter.operators[0],
+            value: getNewValue(filter, currentFilter, element.value)
+          }];
+          onChangeView({
+            ...view,
+            page: 1,
+            filters: newFilters
+          });
+        }
+      }),
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
+        className: "dataviews-search-widget-listitem-check",
+        children: [filter.singleSelection && currentValue === element.value && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+          icon: radioCheck
+        }), !filter.singleSelection && currentValue.includes(element.value) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+          icon: library_check
+        })]
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
+        children: [element.label, !!element.description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+          className: "dataviews-search-widget-listitem-description",
+          children: element.description
+        })]
+      })]
+    }, element.value))
+  });
+}
+function search_widget_ComboboxList({
+  view,
+  filter,
+  onChangeView
+}) {
+  const [searchValue, setSearchValue] = (0,external_wp_element_namespaceObject.useState)('');
+  const deferredSearchValue = (0,external_wp_element_namespaceObject.useDeferredValue)(searchValue);
+  const currentFilter = view.filters.find(_filter => _filter.field === filter.field);
+  const currentValue = getCurrentValue(filter, currentFilter);
+  const matches = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const normalizedSearch = normalizeSearchInput(deferredSearchValue);
+    return filter.elements.filter(item => normalizeSearchInput(item.label).includes(normalizedSearch));
+  }, [filter.elements, deferredSearchValue]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ComboboxProvider, {
+    resetValueOnSelect: false,
+    selectedValue: currentValue,
+    setSelectedValue: value => {
+      const newFilters = currentFilter ? [...view.filters.map(_filter => {
+        if (_filter.field === filter.field) {
+          return {
+            ..._filter,
+            operator: currentFilter.operator || filter.operators[0],
+            value
+          };
+        }
+        return _filter;
+      })] : [...view.filters, {
+        field: filter.field,
+        operator: filter.operators[0],
+        value
+      }];
+      onChangeView({
+        ...view,
+        page: 1,
+        filters: newFilters
+      });
+    },
+    setValue: setSearchValue,
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+      className: "dataviews-search-widget-filter-combobox__wrapper",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxLabel, {
+        render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, {
+          children: (0,external_wp_i18n_namespaceObject.__)('Search items')
+        }),
+        children: (0,external_wp_i18n_namespaceObject.__)('Search items')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Combobox, {
+        autoSelect: "always",
+        placeholder: (0,external_wp_i18n_namespaceObject.__)('Search'),
+        className: "dataviews-search-widget-filter-combobox__input"
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: "dataviews-search-widget-filter-combobox__icon",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+          icon: library_search
+        })
+      })]
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ComboboxList, {
+      className: "dataviews-search-widget-filter-combobox-list",
+      alwaysVisible: true,
+      children: [matches.map(element => {
+        return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ComboboxItem, {
+          value: element.value,
+          className: "dataviews-search-widget-listitem",
+          hideOnClick: false,
+          setValueOnClick: false,
+          focusOnHover: true,
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
+            className: "dataviews-search-widget-listitem-check",
+            children: [filter.singleSelection && currentValue === element.value && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+              icon: radioCheck
+            }), !filter.singleSelection && currentValue.includes(element.value) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+              icon: library_check
+            })]
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxItemValue, {
+              className: "dataviews-search-widget-filter-combobox-item-value",
+              value: element.label
+            }), !!element.description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+              className: "dataviews-search-widget-listitem-description",
+              children: element.description
+            })]
+          })]
+        }, element.value);
+      }), !matches.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+        children: (0,external_wp_i18n_namespaceObject.__)('No results found')
+      })]
+    })]
+  });
+}
+function SearchWidget(props) {
+  const Widget = props.filter.elements.length > 10 ? search_widget_ComboboxList : ListBox;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Widget, {
+    ...props
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/filter-summary.js
+/**
+ * External dependencies
+ */
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+const ENTER = 'Enter';
+const SPACE = ' ';
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const FilterText = ({
+  activeElements,
+  filterInView,
+  filter
+}) => {
+  if (activeElements === undefined || activeElements.length === 0) {
+    return filter.name;
+  }
+  const filterTextWrappers = {
+    Name: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+      className: "dataviews-filter-summary__filter-text-name"
+    }),
+    Value: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+      className: "dataviews-filter-summary__filter-text-value"
+    })
+  };
+  if (filterInView?.operator === constants_OPERATOR_IS_ANY) {
+    return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is any: Admin, Editor". */
+    (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is any: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
+  }
+  if (filterInView?.operator === constants_OPERATOR_IS_NONE) {
+    return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is none: Admin, Editor". */
+    (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is none: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
+  }
+  if (filterInView?.operator === OPERATOR_IS_ALL) {
+    return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is all: Admin, Editor". */
+    (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is all: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
+  }
+  if (filterInView?.operator === OPERATOR_IS_NOT_ALL) {
+    return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not all: Admin, Editor". */
+    (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is not all: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
+  }
+  if (filterInView?.operator === constants_OPERATOR_IS) {
+    return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is: Admin". */
+    (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is: </Name><Value>%2$s</Value>'), filter.name, activeElements[0].label), filterTextWrappers);
+  }
+  if (filterInView?.operator === constants_OPERATOR_IS_NOT) {
+    return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not: Admin". */
+    (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is not: </Name><Value>%2$s</Value>'), filter.name, activeElements[0].label), filterTextWrappers);
+  }
+  return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name e.g.: "Unknown status for Author". */
+  (0,external_wp_i18n_namespaceObject.__)('Unknown status for %1$s'), filter.name);
+};
+function OperatorSelector({
+  filter,
+  view,
+  onChangeView
+}) {
+  const operatorOptions = filter.operators?.map(operator => ({
+    value: operator,
+    label: OPERATORS[operator]?.label
+  }));
+  const currentFilter = view.filters.find(_filter => _filter.field === filter.field);
+  const value = currentFilter?.operator || filter.operators[0];
+  return operatorOptions.length > 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+    spacing: 2,
+    justify: "flex-start",
+    className: "dataviews-filter-summary__operators-container",
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+      className: "dataviews-filter-summary__operators-filter-name",
+      children: filter.name
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, {
+      label: (0,external_wp_i18n_namespaceObject.__)('Conditions'),
+      value: value,
+      options: operatorOptions,
+      onChange: newValue => {
+        const operator = newValue;
+        const newFilters = currentFilter ? [...view.filters.map(_filter => {
+          if (_filter.field === filter.field) {
+            return {
+              ..._filter,
+              operator
+            };
+          }
+          return _filter;
+        })] : [...view.filters, {
+          field: filter.field,
+          operator,
+          value: undefined
+        }];
+        onChangeView({
+          ...view,
+          page: 1,
+          filters: newFilters
+        });
+      },
+      size: "small",
+      __nextHasNoMarginBottom: true,
+      hideLabelFromVision: true
+    })]
+  });
+}
+function FilterSummary({
+  addFilterRef,
+  openedFilter,
+  ...commonProps
+}) {
+  const toggleRef = (0,external_wp_element_namespaceObject.useRef)(null);
+  const {
+    filter,
+    view,
+    onChangeView
+  } = commonProps;
+  const filterInView = view.filters.find(f => f.field === filter.field);
+  const activeElements = filter.elements.filter(element => {
+    if (filter.singleSelection) {
+      return element.value === filterInView?.value;
+    }
+    return filterInView?.value?.includes(element.value);
+  });
+  const isPrimary = filter.isPrimary;
+  const hasValues = filterInView?.value !== undefined;
+  const canResetOrRemove = !isPrimary || hasValues;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, {
+    defaultOpen: openedFilter === filter.field,
+    contentClassName: "dataviews-filter-summary__popover",
+    popoverProps: {
+      placement: 'bottom-start',
+      role: 'dialog'
+    },
+    onClose: () => {
+      toggleRef.current?.focus();
+    },
+    renderToggle: ({
+      isOpen,
+      onToggle
+    }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+      className: "dataviews-filter-summary__chip-container",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, {
+        text: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. */
+        (0,external_wp_i18n_namespaceObject.__)('Filter by: %1$s'), filter.name.toLowerCase()),
+        placement: "top",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          className: dist_clsx('dataviews-filter-summary__chip', {
+            'has-reset': canResetOrRemove,
+            'has-values': hasValues
+          }),
+          role: "button",
+          tabIndex: 0,
+          onClick: onToggle,
+          onKeyDown: event => {
+            if ([ENTER, SPACE].includes(event.key)) {
+              onToggle();
+              event.preventDefault();
+            }
+          },
+          "aria-pressed": isOpen,
+          "aria-expanded": isOpen,
+          ref: toggleRef,
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FilterText, {
+            activeElements: activeElements,
+            filterInView: filterInView,
+            filter: filter
+          })
+        })
+      }), canResetOrRemove && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, {
+        text: isPrimary ? (0,external_wp_i18n_namespaceObject.__)('Reset') : (0,external_wp_i18n_namespaceObject.__)('Remove'),
+        placement: "top",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("button", {
+          className: dist_clsx('dataviews-filter-summary__chip-remove', {
+            'has-values': hasValues
+          }),
+          onClick: () => {
+            onChangeView({
+              ...view,
+              page: 1,
+              filters: view.filters.filter(_filter => _filter.field !== filter.field)
+            });
+            // If the filter is not primary and can be removed, it will be added
+            // back to the available filters from `Add filter` component.
+            if (!isPrimary) {
+              addFilterRef.current?.focus();
+            } else {
+              // If is primary, focus the toggle button.
+              toggleRef.current?.focus();
+            }
+          },
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+            icon: close_small
+          })
+        })
+      })]
+    }),
+    renderContent: () => {
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+        spacing: 0,
+        justify: "flex-start",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(OperatorSelector, {
+          ...commonProps
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SearchWidget, {
+          ...commonProps
+        })]
+      });
+    }
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/add-filter.js
+/**
+ * External dependencies
+ */
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  DropdownMenuV2: add_filter_DropdownMenu,
+  DropdownMenuItemV2: add_filter_DropdownMenuItem,
+  DropdownMenuItemLabelV2: add_filter_DropdownMenuItemLabel
+} = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+function AddFilter({
+  filters,
+  view,
+  onChangeView,
+  setOpenedFilter
+}, ref) {
+  if (!filters.length || filters.every(({
+    isPrimary
+  }) => isPrimary)) {
+    return null;
+  }
+  const inactiveFilters = filters.filter(filter => !filter.isVisible);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter_DropdownMenu, {
+    trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+      __experimentalIsFocusable: true,
+      size: "compact",
+      className: "dataviews-filters-button",
+      variant: "tertiary",
+      disabled: !inactiveFilters.length,
+      ref: ref,
+      children: (0,external_wp_i18n_namespaceObject.__)('Add filter')
+    }),
+    children: inactiveFilters.map(filter => {
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter_DropdownMenuItem, {
+        onClick: () => {
+          setOpenedFilter(filter.field);
+          onChangeView({
+            ...view,
+            page: 1,
+            filters: [...(view.filters || []), {
+              field: filter.field,
+              value: undefined,
+              operator: filter.operators[0]
+            }]
+          });
+        },
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter_DropdownMenuItemLabel, {
+          children: filter.name
+        })
+      }, filter.field);
+    })
+  });
+}
+/* harmony default export */ const add_filter = ((0,external_wp_element_namespaceObject.forwardRef)(AddFilter));
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/reset-filters.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+function ResetFilter({
+  filters,
+  view,
+  onChangeView
+}) {
+  const isPrimary = field => filters.some(_filter => _filter.field === field && _filter.isPrimary);
+  const isDisabled = !view.search && !view.filters?.some(_filter => _filter.value !== undefined || !isPrimary(_filter.field));
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+    disabled: isDisabled,
+    __experimentalIsFocusable: true,
+    size: "compact",
+    variant: "tertiary",
+    className: "dataviews-filters__reset-button",
+    onClick: () => {
+      onChangeView({
+        ...view,
+        page: 1,
+        search: '',
+        filters: []
+      });
+    },
+    children: (0,external_wp_i18n_namespaceObject.__)('Reset')
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/filters.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+function _Filters({
+  fields,
+  view,
+  onChangeView,
+  openedFilter,
+  setOpenedFilter
+}) {
+  const addFilterRef = (0,external_wp_element_namespaceObject.useRef)(null);
+  const filters = [];
+  fields.forEach(field => {
+    if (!field.elements?.length) {
+      return;
+    }
+    const operators = sanitizeOperators(field);
+    if (operators.length === 0) {
+      return;
+    }
+    const isPrimary = !!field.filterBy?.isPrimary;
+    filters.push({
+      field: field.id,
+      name: field.header,
+      elements: field.elements,
+      singleSelection: operators.some(op => [constants_OPERATOR_IS, constants_OPERATOR_IS_NOT].includes(op)),
+      operators,
+      isVisible: isPrimary || view.filters.some(f => f.field === field.id && ALL_OPERATORS.includes(f.operator)),
+      isPrimary
+    });
+  });
+  // Sort filters by primary property. We need the primary filters to be first.
+  // Then we sort by name.
+  filters.sort((a, b) => {
+    if (a.isPrimary && !b.isPrimary) {
+      return -1;
+    }
+    if (!a.isPrimary && b.isPrimary) {
+      return 1;
+    }
+    return a.name.localeCompare(b.name);
+  });
+  const addFilter = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter, {
+    filters: filters,
+    view: view,
+    onChangeView: onChangeView,
+    ref: addFilterRef,
+    setOpenedFilter: setOpenedFilter
+  }, "add-filter");
+  const filterComponents = [...filters.map(filter => {
+    if (!filter.isVisible) {
+      return null;
+    }
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FilterSummary, {
+      filter: filter,
+      view: view,
+      onChangeView: onChangeView,
+      addFilterRef: addFilterRef,
+      openedFilter: openedFilter
+    }, filter.field);
+  }), addFilter];
+  if (filterComponents.length > 1) {
+    filterComponents.push( /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResetFilter, {
+      filters: filters,
+      view: view,
+      onChangeView: onChangeView
+    }, "reset-filters"));
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+    justify: "flex-start",
+    style: {
+      width: 'fit-content'
+    },
+    wrap: true,
+    children: filterComponents
+  });
+}
+
+// A type assertion is used here to keep the type argument.
+const Filters = (0,external_wp_element_namespaceObject.memo)(_Filters);
+/* harmony default export */ const filters = (Filters);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/search.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+const Search = (0,external_wp_element_namespaceObject.memo)(function Search({
+  label,
+  view,
+  onChangeView
+}) {
+  const [search, setSearch, debouncedSearch] = (0,external_wp_compose_namespaceObject.useDebouncedInput)(view.search);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    var _view$search;
+    setSearch((_view$search = view.search) !== null && _view$search !== void 0 ? _view$search : '');
+  }, [view.search, setSearch]);
+  const onChangeViewRef = (0,external_wp_element_namespaceObject.useRef)(onChangeView);
+  const viewRef = (0,external_wp_element_namespaceObject.useRef)(view);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    onChangeViewRef.current = onChangeView;
+    viewRef.current = view;
+  }, [onChangeView, view]);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    onChangeViewRef.current({
+      ...viewRef.current,
+      page: 1,
+      search: debouncedSearch
+    });
+  }, [debouncedSearch]);
+  const searchLabel = label || (0,external_wp_i18n_namespaceObject.__)('Search');
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, {
+    __nextHasNoMarginBottom: true,
+    onChange: setSearch,
+    value: search,
+    label: searchLabel,
+    placeholder: searchLabel,
+    size: "compact"
+  });
+});
+/* harmony default export */ const build_module_search = (Search);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/normalize-fields.js
+/**
+ * Internal dependencies
+ */
+
+/**
+ * Apply default values and normalize the fields config.
+ *
+ * @param fields Fields config.
+ * @return Normalized fields config.
+ */
+function normalizeFields(fields) {
+  return fields.map(field => {
+    const getValue = field.getValue || (({
+      item
+    }) => item[field.id]);
+    return {
+      ...field,
+      header: field.header || field.id,
+      getValue,
+      render: field.render || getValue
+    };
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/bulk-actions-toolbar.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const SNACKBAR_VARIANTS = {
+  init: {
+    bottom: -48
+  },
+  open: {
+    bottom: 24,
+    transition: {
+      bottom: {
+        type: 'tween',
+        duration: 0.2,
+        ease: [0, 0, 0.2, 1]
+      }
+    }
+  },
+  exit: {
+    opacity: 0,
+    bottom: 24,
+    transition: {
+      opacity: {
+        type: 'tween',
+        duration: 0.2,
+        ease: [0, 0, 0.2, 1]
+      }
+    }
+  }
+};
+function ActionTrigger({
+  action,
+  onClick,
+  isBusy,
+  items
+}) {
+  const label = typeof action.label === 'string' ? action.label : action.label(items);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, {
+    disabled: isBusy,
+    label: label,
+    icon: action.icon,
+    isDestructive: action.isDestructive,
+    size: "compact",
+    onClick: onClick,
+    isBusy: isBusy,
+    __experimentalIsFocusable: true,
+    tooltipPosition: "top"
+  });
+}
+const bulk_actions_toolbar_EMPTY_ARRAY = [];
+function ActionButton({
+  action,
+  selectedItems,
+  actionInProgress,
+  setActionInProgress
+}) {
+  const selectedEligibleItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return selectedItems.filter(item => {
+      return !action.isEligible || action.isEligible(item);
+    });
+  }, [action, selectedItems]);
+  if ('RenderModal' in action) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionWithModal, {
+      action: action,
+      items: selectedEligibleItems,
+      ActionTrigger: ActionTrigger
+    }, action.id);
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionTrigger, {
+    action: action,
+    onClick: () => {
+      setActionInProgress(action.id);
+      action.callback(selectedItems);
+    },
+    items: selectedEligibleItems,
+    isBusy: actionInProgress === action.id
+  }, action.id);
+}
+function renderToolbarContent(selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onSelectionChange) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, {
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: "dataviews-bulk-actions__selection-count",
+        children: selection.length === 1 ? (0,external_wp_i18n_namespaceObject.__)('1 item selected') : (0,external_wp_i18n_namespaceObject.sprintf)(
+        // translators: %s: Total number of selected items.
+        (0,external_wp_i18n_namespaceObject._n)('%s item selected', '%s items selected', selection.length), selection.length)
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, {
+      children: actionsToShow.map(action => {
+        return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionButton, {
+          action: action,
+          selectedItems: selectedItems,
+          actionInProgress: actionInProgress,
+          setActionInProgress: setActionInProgress
+        }, action.id);
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, {
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, {
+        icon: close_small,
+        showTooltip: true,
+        tooltipPosition: "top",
+        label: (0,external_wp_i18n_namespaceObject.__)('Cancel'),
+        disabled: !!actionInProgress,
+        onClick: () => {
+          onSelectionChange(bulk_actions_toolbar_EMPTY_ARRAY);
+        }
+      })
+    })]
+  });
+}
+function ToolbarContent({
+  selection,
+  actionsToShow,
+  selectedItems,
+  onSelectionChange
+}) {
+  const [actionInProgress, setActionInProgress] = (0,external_wp_element_namespaceObject.useState)(null);
+  const buttons = (0,external_wp_element_namespaceObject.useRef)(null);
+  if (!actionInProgress) {
+    if (buttons.current) {
+      buttons.current = null;
+    }
+    return renderToolbarContent(selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onSelectionChange);
+  } else if (!buttons.current) {
+    buttons.current = renderToolbarContent(selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onSelectionChange);
+  }
+  return buttons.current;
+}
+function BulkActionsToolbar({
+  data,
+  selection,
+  actions = bulk_actions_toolbar_EMPTY_ARRAY,
+  onSelectionChange,
+  getItemId
+}) {
+  const isReducedMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
+  const selectedItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return data.filter(item => selection.includes(getItemId(item)));
+  }, [selection, data, getItemId]);
+  const actionsToShow = (0,external_wp_element_namespaceObject.useMemo)(() => actions.filter(action => {
+    return action.supportsBulk && action.icon && selectedItems.some(item => !action.isEligible || action.isEligible(item));
+  }), [actions, selectedItems]);
+  if (selection && selection.length === 0 || actionsToShow.length === 0) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableAnimatePresence, {
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
+      layout: !isReducedMotion // See https://www.framer.com/docs/animation/#layout-animations
+      ,
+      initial: "init",
+      animate: "open",
+      exit: "exit",
+      variants: isReducedMotion ? undefined : SNACKBAR_VARIANTS,
+      className: "dataviews-bulk-actions",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Toolbar, {
+        label: (0,external_wp_i18n_namespaceObject.__)('Bulk actions'),
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          className: "dataviews-bulk-actions-toolbar-wrapper",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ToolbarContent, {
+            selection: selection,
+            actionsToShow: actionsToShow,
+            selectedItems: selectedItems,
+            onSelectionChange: onSelectionChange
+          })
+        })
+      })
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/dataviews.js
+/**
+ * External dependencies
+ */
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+const defaultGetItemId = item => item.id;
+const defaultOnSelectionChange = () => {};
+function dataviews_useSomeItemHasAPossibleBulkAction(actions, data) {
+  return (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return data.some(item => {
+      return actions.some(action => {
+        return action.supportsBulk && (!action.isEligible || action.isEligible(item));
+      });
+    });
+  }, [actions, data]);
+}
+function DataViews({
+  view,
+  onChangeView,
+  fields,
+  search = true,
+  searchLabel = undefined,
+  actions = [],
+  data,
+  getItemId = defaultGetItemId,
+  isLoading = false,
+  paginationInfo,
+  supportedLayouts,
+  selection: selectionProperty,
+  setSelection: setSelectionProperty,
+  onSelectionChange = defaultOnSelectionChange
+}) {
+  const [selectionState, setSelectionState] = (0,external_wp_element_namespaceObject.useState)([]);
+  let selection, setSelection;
+  if (selectionProperty !== undefined && setSelectionProperty !== undefined) {
+    selection = selectionProperty;
+    setSelection = setSelectionProperty;
+  } else {
+    selection = selectionState;
+    setSelection = setSelectionState;
+  }
+  const [openedFilter, setOpenedFilter] = (0,external_wp_element_namespaceObject.useState)(null);
+  const onSetSelection = (0,external_wp_element_namespaceObject.useCallback)(items => {
+    setSelection(items.map(item => getItemId(item)));
+    onSelectionChange(items);
+  }, [setSelection, getItemId, onSelectionChange]);
+  const ViewComponent = VIEW_LAYOUTS.find(v => v.type === view.type)?.component;
+  const _fields = (0,external_wp_element_namespaceObject.useMemo)(() => normalizeFields(fields), [fields]);
+  const hasPossibleBulkAction = dataviews_useSomeItemHasAPossibleBulkAction(actions, data);
+  const _selection = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return selection.filter(id => data.some(item => getItemId(item) === id));
+  }, [selection, data, getItemId]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+    className: "dataviews-wrapper",
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      alignment: "top",
+      justify: "start",
+      className: "dataviews-filters__view-actions",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        justify: "start",
+        className: "dataviews-filters__container",
+        wrap: true,
+        children: [search && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_search, {
+          label: searchLabel,
+          view: view,
+          onChangeView: onChangeView
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(filters, {
+          fields: _fields,
+          view: view,
+          onChangeView: onChangeView,
+          openedFilter: openedFilter,
+          setOpenedFilter: setOpenedFilter
+        })]
+      }), [constants_LAYOUT_TABLE, constants_LAYOUT_GRID].includes(view.type) && hasPossibleBulkAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkActions, {
+        actions: actions,
+        data: data,
+        onSelectionChange: onSetSelection,
+        selection: _selection,
+        getItemId: getItemId
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions, {
+        fields: _fields,
+        view: view,
+        onChangeView: onChangeView,
+        supportedLayouts: supportedLayouts
+      })]
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ViewComponent, {
+      actions: actions,
+      data: data,
+      fields: _fields,
+      getItemId: getItemId,
+      isLoading: isLoading,
+      onChangeView: onChangeView,
+      onSelectionChange: onSetSelection,
+      selection: _selection,
+      setOpenedFilter: setOpenedFilter,
+      view: view
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(pagination, {
+      view: view,
+      onChangeView: onChangeView,
+      paginationInfo: paginationInfo
+    }), [constants_LAYOUT_TABLE, constants_LAYOUT_GRID].includes(view.type) && hasPossibleBulkAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkActionsToolbar, {
+      data: data,
+      actions: actions,
+      selection: _selection,
+      onSelectionChange: onSetSelection,
+      getItemId: getItemId
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page/header.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+function Header({
+  title,
+  subTitle,
+  actions
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    className: "edit-site-page-header",
+    as: "header",
+    spacing: 0,
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      className: "edit-site-page-header__page-title",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+        as: "h2",
+        level: 3,
+        weight: 500,
+        className: "edit-site-page-header__title",
+        children: title
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
+        className: "edit-site-page-header__actions",
+        children: actions
+      })]
+    }), subTitle && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+      variant: "muted",
+      as: "p",
+      className: "edit-site-page-header__sub-title",
+      children: subTitle
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  NavigableRegion: page_NavigableRegion
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+function Page({
+  title,
+  subTitle,
+  actions,
+  children,
+  className,
+  hideTitleFromUI = false
+}) {
+  const classes = dist_clsx('edit-site-page', className);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_NavigableRegion, {
+    className: classes,
+    ariaLabel: title,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+      className: "edit-site-page-content",
+      children: [!hideTitleFromUI && title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Header, {
+        title: title,
+        subTitle: subTitle,
+        actions: actions
+      }), children]
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pages.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+const pages = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M14.5 5.5h-7V7h7V5.5ZM7.5 9h7v1.5h-7V9Zm7 3.5h-7V14h7v-1.5Z"
+  }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M16 2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2ZM6 3.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V4a.5.5 0 0 1 .5-.5Z"
+  }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z"
+  })]
+});
+/* harmony default export */ const library_pages = (pages);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/published.js
+/**
+ * WordPress dependencies
+ */
+
+
+const published = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    clipRule: "evenodd",
+    d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z"
+  })
+});
+/* harmony default export */ const library_published = (published);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/scheduled.js
+/**
+ * WordPress dependencies
+ */
+
+
+const scheduled = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    clipRule: "evenodd",
+    d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm9 1V8h-1.5v3.5h-2V13H13Z"
+  })
+});
+/* harmony default export */ const library_scheduled = (scheduled);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/drafts.js
+/**
+ * WordPress dependencies
+ */
+
+
+const drafts = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    clipRule: "evenodd",
+    d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 0 4-4H8a4 4 0 0 0 4 4Z"
+  })
+});
+/* harmony default export */ const library_drafts = (drafts);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pending.js
+/**
+ * WordPress dependencies
+ */
+
+
+const pending = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    clipRule: "evenodd",
+    d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 1-4-4h4V8a4 4 0 0 1 0 8Z"
+  })
+});
+/* harmony default export */ const library_pending = (pending);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/not-allowed.js
+/**
+ * WordPress dependencies
+ */
+
+
+const notAllowed = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    clipRule: "evenodd",
+    d: "M12 18.5A6.5 6.5 0 0 1 6.93 7.931l9.139 9.138A6.473 6.473 0 0 1 12 18.5Zm5.123-2.498a6.5 6.5 0 0 0-9.124-9.124l9.124 9.124ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Z"
+  })
+});
+/* harmony default export */ const not_allowed = (notAllowed);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/default-views.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+const DEFAULT_CONFIG_PER_VIEW_TYPE = {
+  [LAYOUT_TABLE]: {
+    primaryField: 'title'
+  },
+  [LAYOUT_GRID]: {
+    mediaField: 'featured-image',
+    primaryField: 'title'
+  },
+  [LAYOUT_LIST]: {
+    primaryField: 'title',
+    mediaField: 'featured-image'
+  }
+};
+const DEFAULT_PAGE_BASE = {
+  type: LAYOUT_LIST,
+  search: '',
+  filters: [],
+  page: 1,
+  perPage: 20,
+  sort: {
+    field: 'date',
+    direction: 'desc'
+  },
+  // All fields are visible by default, so it's
+  // better to keep track of the hidden ones.
+  hiddenFields: ['date', 'featured-image'],
+  layout: {
+    ...DEFAULT_CONFIG_PER_VIEW_TYPE[LAYOUT_LIST]
+  }
+};
+const DEFAULT_VIEWS = {
+  page: [{
+    title: (0,external_wp_i18n_namespaceObject.__)('All pages'),
+    slug: 'all',
+    icon: library_pages,
+    view: DEFAULT_PAGE_BASE
+  }, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Published'),
+    slug: 'published',
+    icon: library_published,
+    view: {
+      ...DEFAULT_PAGE_BASE,
+      filters: [{
+        field: 'status',
+        operator: OPERATOR_IS_ANY,
+        value: 'publish'
+      }]
+    }
+  }, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Scheduled'),
+    slug: 'future',
+    icon: library_scheduled,
+    view: {
+      ...DEFAULT_PAGE_BASE,
+      filters: [{
+        field: 'status',
+        operator: OPERATOR_IS_ANY,
+        value: 'future'
+      }]
+    }
+  }, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Drafts'),
+    slug: 'drafts',
+    icon: library_drafts,
+    view: {
+      ...DEFAULT_PAGE_BASE,
+      filters: [{
+        field: 'status',
+        operator: OPERATOR_IS_ANY,
+        value: 'draft'
+      }]
+    }
+  }, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Pending'),
+    slug: 'pending',
+    icon: library_pending,
+    view: {
+      ...DEFAULT_PAGE_BASE,
+      filters: [{
+        field: 'status',
+        operator: OPERATOR_IS_ANY,
+        value: 'pending'
+      }]
+    }
+  }, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Private'),
+    slug: 'private',
+    icon: not_allowed,
+    view: {
+      ...DEFAULT_PAGE_BASE,
+      filters: [{
+        field: 'status',
+        operator: OPERATOR_IS_ANY,
+        value: 'private'
+      }]
+    }
+  }, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Trash'),
+    slug: 'trash',
+    icon: library_trash,
+    view: {
+      ...DEFAULT_PAGE_BASE,
+      filters: [{
+        field: 'status',
+        operator: OPERATOR_IS_ANY,
+        value: 'trash'
+      }]
+    }
+  }]
+};
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-page/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+function AddNewPageModal({
+  onSave,
+  onClose
+}) {
+  const [isCreatingPage, setIsCreatingPage] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)('');
+  const {
+    saveEntityRecord
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
+  const {
+    createErrorNotice,
+    createSuccessNotice
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
+  const {
+    resolveSelect
+  } = (0,external_wp_data_namespaceObject.useRegistry)();
+  async function createPage(event) {
+    event.preventDefault();
+    if (isCreatingPage) {
+      return;
+    }
+    setIsCreatingPage(true);
+    try {
+      const pagePostType = await resolveSelect(external_wp_coreData_namespaceObject.store).getPostType('page');
+      const newPage = await saveEntityRecord('postType', 'page', {
+        status: 'draft',
+        title,
+        slug: title || (0,external_wp_i18n_namespaceObject.__)('No title'),
+        content: !!pagePostType.template && pagePostType.template.length ? (0,external_wp_blocks_namespaceObject.serialize)((0,external_wp_blocks_namespaceObject.synchronizeBlocksWithTemplate)([], pagePostType.template)) : undefined
+      }, {
+        throwOnError: true
+      });
+      onSave(newPage);
+      createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: Title of the created template e.g: "Category".
+      (0,external_wp_i18n_namespaceObject.__)('"%s" successfully created.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(newPage.title?.rendered || title)), {
+        type: 'snackbar'
+      });
+    } catch (error) {
+      const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the page.');
+      createErrorNotice(errorMessage, {
+        type: 'snackbar'
+      });
+    } finally {
+      setIsCreatingPage(false);
+    }
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Draft a new page'),
+    onRequestClose: onClose,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
+      onSubmit: createPage,
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+        spacing: 3,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
+          __next40pxDefaultSize: true,
+          label: (0,external_wp_i18n_namespaceObject.__)('Page title'),
+          onChange: setTitle,
+          placeholder: (0,external_wp_i18n_namespaceObject.__)('No title'),
+          value: title
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+          spacing: 2,
+          justify: "end",
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            __next40pxDefaultSize: true,
+            variant: "tertiary",
+            onClick: onClose,
+            children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            __next40pxDefaultSize: true,
+            variant: "primary",
+            type: "submit",
+            isBusy: isCreatingPage,
+            "aria-disabled": isCreatingPage,
+            children: (0,external_wp_i18n_namespaceObject.__)('Create draft')
+          })]
+        })]
+      })
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/media/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+function Media({
+  id,
+  size = ['large', 'medium', 'thumbnail'],
+  ...props
+}) {
+  const {
+    record: media
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecord)('root', 'media', id);
+  const currentSize = size.find(s => !!media?.media_details?.sizes[s]);
+  const mediaUrl = media?.media_details?.sizes[currentSize]?.source_url || media?.source_url;
+  if (!mediaUrl) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
+    ...props,
+    src: mediaUrl,
+    alt: media.alt_text
+  });
+}
+/* harmony default export */ const components_media = (Media);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pencil.js
+/**
+ * WordPress dependencies
+ */
+
+
+const pencil = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z"
+  })
+});
+/* harmony default export */ const library_pencil = (pencil);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/edit.js
+/**
+ * Internal dependencies
+ */
+
+
+/* harmony default export */ const edit = (library_pencil);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/dataviews-actions/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+const {
+  useHistory: dataviews_actions_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const useEditPostAction = () => {
+  const history = dataviews_actions_useHistory();
+  return (0,external_wp_element_namespaceObject.useMemo)(() => ({
+    id: 'edit-post',
+    label: (0,external_wp_i18n_namespaceObject.__)('Edit'),
+    isPrimary: true,
+    icon: edit,
+    isEligible(post) {
+      if (post.status === 'trash') {
+        return false;
+      }
+      // It's eligible for all post types except theme patterns.
+      return post.type !== PATTERN_TYPES.theme;
+    },
+    callback(items) {
+      const post = items[0];
+      history.push({
+        postId: post.id,
+        postType: post.type,
+        canvas: 'edit'
+      });
+    }
+  }), [history]);
+};
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-pages/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+const {
+  usePostActions
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+const {
+  useLocation: page_pages_useLocation,
+  useHistory: page_pages_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const page_pages_EMPTY_ARRAY = [];
+const getFormattedDate = dateToDisplay => (0,external_wp_date_namespaceObject.dateI18n)((0,external_wp_date_namespaceObject.getSettings)().formats.datetimeAbbreviated, (0,external_wp_date_namespaceObject.getDate)(dateToDisplay));
+function useView(postType) {
+  const {
+    params: {
+      activeView = 'all',
+      isCustom = 'false',
+      layout
+    }
+  } = page_pages_useLocation();
+  const history = page_pages_useHistory();
+  const selectedDefaultView = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const defaultView = isCustom === 'false' && DEFAULT_VIEWS[postType].find(({
+      slug
+    }) => slug === activeView)?.view;
+    if (isCustom === 'false' && layout) {
+      return {
+        ...defaultView,
+        type: layout,
+        layout: {
+          ...(DEFAULT_CONFIG_PER_VIEW_TYPE[layout] || {})
+        }
+      };
+    }
+    return defaultView;
+  }, [isCustom, activeView, layout, postType]);
+  const [view, setView] = (0,external_wp_element_namespaceObject.useState)(selectedDefaultView);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (selectedDefaultView) {
+      setView(selectedDefaultView);
+    }
+  }, [selectedDefaultView]);
+  const editedViewRecord = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    if (isCustom !== 'true') {
+      return;
+    }
+    const {
+      getEditedEntityRecord
+    } = select(external_wp_coreData_namespaceObject.store);
+    const dataviewRecord = getEditedEntityRecord('postType', 'wp_dataviews', Number(activeView));
+    return dataviewRecord;
+  }, [activeView, isCustom]);
+  const {
+    editEntityRecord
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
+  const customView = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const storedView = editedViewRecord?.content && JSON.parse(editedViewRecord?.content);
+    if (!storedView) {
+      return storedView;
+    }
+    return {
+      ...storedView,
+      layout: {
+        ...(DEFAULT_CONFIG_PER_VIEW_TYPE[storedView?.type] || {})
+      }
+    };
+  }, [editedViewRecord?.content]);
+  const setCustomView = (0,external_wp_element_namespaceObject.useCallback)(viewToSet => {
+    editEntityRecord('postType', 'wp_dataviews', editedViewRecord?.id, {
+      content: JSON.stringify(viewToSet)
+    });
+  }, [editEntityRecord, editedViewRecord?.id]);
+  const setDefaultViewAndUpdateUrl = (0,external_wp_element_namespaceObject.useCallback)(viewToSet => {
+    if (viewToSet.type !== view?.type) {
+      const {
+        params
+      } = history.getLocationWithParams();
+      history.push({
+        ...params,
+        layout: viewToSet.type
+      });
+    }
+    setView(viewToSet);
+  }, [history, view?.type]);
+  if (isCustom === 'false') {
+    return [view, setDefaultViewAndUpdateUrl];
+  } else if (isCustom === 'true' && customView) {
+    return [customView, setCustomView];
+  }
+  // Loading state where no the view was not found on custom views or default views.
+  return [DEFAULT_VIEWS[postType][0].view, setDefaultViewAndUpdateUrl];
+}
+
+// See https://github.com/WordPress/gutenberg/issues/55886
+// We do not support custom statutes at the moment.
+const STATUSES = [{
+  value: 'draft',
+  label: (0,external_wp_i18n_namespaceObject.__)('Draft')
+}, {
+  value: 'future',
+  label: (0,external_wp_i18n_namespaceObject.__)('Scheduled')
+}, {
+  value: 'pending',
+  label: (0,external_wp_i18n_namespaceObject.__)('Pending Review')
+}, {
+  value: 'private',
+  label: (0,external_wp_i18n_namespaceObject.__)('Private')
+}, {
+  value: 'publish',
+  label: (0,external_wp_i18n_namespaceObject.__)('Published')
+}, {
+  value: 'trash',
+  label: (0,external_wp_i18n_namespaceObject.__)('Trash')
+}];
+const DEFAULT_STATUSES = 'draft,future,pending,private,publish'; // All but 'trash'.
+
+function FeaturedImage({
+  item,
+  viewType
+}) {
+  const isDisabled = item.status === 'trash';
+  const {
+    onClick
+  } = useLink({
+    postId: item.id,
+    postType: item.type,
+    canvas: 'edit'
+  });
+  const hasMedia = !!item.featured_media;
+  const size = viewType === LAYOUT_GRID ? ['large', 'full', 'medium', 'thumbnail'] : ['thumbnail', 'medium', 'large', 'full'];
+  const media = hasMedia ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(components_media, {
+    className: "edit-site-page-pages__featured-image",
+    id: item.featured_media,
+    size: size
+  }) : null;
+  const renderButton = viewType !== LAYOUT_LIST && !isDisabled;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+    className: `edit-site-page-pages__featured-image-wrapper is-layout-${viewType}`,
+    children: renderButton ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("button", {
+      className: "page-pages-preview-field__button",
+      type: "button",
+      onClick: onClick,
+      "aria-label": item.title?.rendered || (0,external_wp_i18n_namespaceObject.__)('(no title)'),
+      children: media
+    }) : media
+  });
+}
+function getItemId(item) {
+  return item.id.toString();
+}
+function PagePages() {
+  var _pages$map, _usePrevious;
+  const postType = 'page';
+  const [view, setView] = useView(postType);
+  const history = page_pages_useHistory();
+  const {
+    params: {
+      postId
+    }
+  } = page_pages_useLocation();
+  const [selection, setSelection] = (0,external_wp_element_namespaceObject.useState)([postId]);
+  const onSelectionChange = (0,external_wp_element_namespaceObject.useCallback)(items => {
+    var _params$isCustom;
+    const {
+      params
+    } = history.getLocationWithParams();
+    if (((_params$isCustom = params.isCustom) !== null && _params$isCustom !== void 0 ? _params$isCustom : 'false') === 'false' && view?.type === LAYOUT_LIST) {
+      history.push({
+        ...params,
+        postId: items.length === 1 ? items[0].id : undefined
+      });
+    }
+  }, [history, view?.type]);
+  const queryArgs = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const filters = {};
+    view.filters.forEach(filter => {
+      if (filter.field === 'status' && filter.operator === OPERATOR_IS_ANY) {
+        filters.status = filter.value;
+      }
+      if (filter.field === 'author' && filter.operator === OPERATOR_IS_ANY) {
+        filters.author = filter.value;
+      } else if (filter.field === 'author' && filter.operator === OPERATOR_IS_NONE) {
+        filters.author_exclude = filter.value;
+      }
+    });
+    // We want to provide a different default item for the status filter
+    // than the REST API provides.
+    if (!filters.status || filters.status === '') {
+      filters.status = DEFAULT_STATUSES;
+    }
+    return {
+      per_page: view.perPage,
+      page: view.page,
+      _embed: 'author',
+      order: view.sort?.direction,
+      orderby: view.sort?.field,
+      search: view.search,
+      ...filters
+    };
+  }, [view]);
+  const {
+    records: pages,
+    isResolving: isLoadingPages,
+    totalItems,
+    totalPages
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', postType, queryArgs);
+  const ids = (_pages$map = pages?.map(page => getItemId(page))) !== null && _pages$map !== void 0 ? _pages$map : [];
+  const prevIds = (_usePrevious = (0,external_wp_compose_namespaceObject.usePrevious)(ids)) !== null && _usePrevious !== void 0 ? _usePrevious : [];
+  const deletedIds = prevIds.filter(id => !ids.includes(id));
+  const postIdWasDeleted = deletedIds.includes(postId);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (postIdWasDeleted) {
+      history.push({
+        ...history.getLocationWithParams().params,
+        postId: undefined
+      });
+    }
+  }, [postIdWasDeleted, history]);
+  const {
+    records: authors,
+    isResolving: isLoadingAuthors
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('root', 'user', {
+    per_page: -1
+  });
+  const paginationInfo = (0,external_wp_element_namespaceObject.useMemo)(() => ({
+    totalItems,
+    totalPages
+  }), [totalItems, totalPages]);
+  const {
+    frontPageId,
+    postsPageId,
+    addNewLabel,
+    canCreatePage
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEntityRecord,
+      getPostType,
+      canUser
+    } = select(external_wp_coreData_namespaceObject.store);
+    const siteSettings = getEntityRecord('root', 'site');
+    return {
+      frontPageId: siteSettings?.page_on_front,
+      postsPageId: siteSettings?.page_for_posts,
+      addNewLabel: getPostType('page')?.labels?.add_new_item,
+      canCreatePage: canUser('create', 'pages')
+    };
+  });
+  const fields = (0,external_wp_element_namespaceObject.useMemo)(() => [{
+    id: 'featured-image',
+    header: (0,external_wp_i18n_namespaceObject.__)('Featured Image'),
+    getValue: ({
+      item
+    }) => item.featured_media,
+    render: ({
+      item
+    }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FeaturedImage, {
+      item: item,
+      viewType: view.type
+    }),
+    enableSorting: false,
+    width: '1%'
+  }, {
+    header: (0,external_wp_i18n_namespaceObject.__)('Title'),
+    id: 'title',
+    getValue: ({
+      item
+    }) => item.title?.rendered,
+    render: ({
+      item
+    }) => {
+      const addLink = [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type) && item.status !== 'trash';
+      const title = addLink ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Link, {
+        params: {
+          postId: item.id,
+          postType: item.type,
+          canvas: 'edit'
+        },
+        children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.title?.rendered) || (0,external_wp_i18n_namespaceObject.__)('(no title)')
+      }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+        children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.title?.rendered) || (0,external_wp_i18n_namespaceObject.__)('(no title)')
+      });
+      let suffix = '';
+      if (item.id === frontPageId) {
+        suffix = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+          className: "edit-site-page-pages__title-badge",
+          children: (0,external_wp_i18n_namespaceObject.__)('Front Page')
+        });
+      } else if (item.id === postsPageId) {
+        suffix = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+          className: "edit-site-page-pages__title-badge",
+          children: (0,external_wp_i18n_namespaceObject.__)('Posts Page')
+        });
+      }
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        className: "edit-site-page-pages-title",
+        alignment: "center",
+        justify: "flex-start",
+        children: [title, suffix]
+      });
+    },
+    maxWidth: 300,
+    enableHiding: false
+  }, {
+    header: (0,external_wp_i18n_namespaceObject.__)('Author'),
+    id: 'author',
+    getValue: ({
+      item
+    }) => item._embedded?.author[0]?.name,
+    elements: authors?.map(({
+      id,
+      name
+    }) => ({
+      value: id,
+      label: name
+    })) || []
+  }, {
+    header: (0,external_wp_i18n_namespaceObject.__)('Status'),
+    id: 'status',
+    getValue: ({
+      item
+    }) => {
+      var _STATUSES$find$label;
+      return (_STATUSES$find$label = STATUSES.find(({
+        value
+      }) => value === item.status)?.label) !== null && _STATUSES$find$label !== void 0 ? _STATUSES$find$label : item.status;
+    },
+    elements: STATUSES,
+    enableSorting: false,
+    filterBy: {
+      operators: [OPERATOR_IS_ANY]
+    }
+  }, {
+    header: (0,external_wp_i18n_namespaceObject.__)('Date'),
+    id: 'date',
+    render: ({
+      item
+    }) => {
+      const isDraftOrPrivate = ['draft', 'private'].includes(item.status);
+      if (isDraftOrPrivate) {
+        return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: page creation date */
+        (0,external_wp_i18n_namespaceObject.__)('<span>Modified: <time>%s</time></span>'), getFormattedDate(item.date)), {
+          span: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {}),
+          time: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {})
+        });
+      }
+      const isScheduled = item.status === 'future';
+      if (isScheduled) {
+        return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: page creation date */
+        (0,external_wp_i18n_namespaceObject.__)('<span>Scheduled: <time>%s</time></span>'), getFormattedDate(item.date)), {
+          span: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {}),
+          time: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {})
+        });
+      }
+
+      // Pending & Published posts show the modified date if it's newer.
+      const dateToDisplay = (0,external_wp_date_namespaceObject.getDate)(item.modified) > (0,external_wp_date_namespaceObject.getDate)(item.date) ? item.modified : item.date;
+      const isPending = item.status === 'pending';
+      if (isPending) {
+        return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: the newest of created or modified date for the page */
+        (0,external_wp_i18n_namespaceObject.__)('<span>Modified: <time>%s</time></span>'), getFormattedDate(dateToDisplay)), {
+          span: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {}),
+          time: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {})
+        });
+      }
+      const isPublished = item.status === 'publish';
+      if (isPublished) {
+        return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: the newest of created or modified date for the page */
+        (0,external_wp_i18n_namespaceObject.__)('<span>Published: <time>%s</time></span>'), getFormattedDate(dateToDisplay)), {
+          span: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {}),
+          time: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {})
+        });
+      }
+
+      // Unknow status.
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {
+        children: getFormattedDate(item.date)
+      });
+    }
+  }], [authors, view.type, frontPageId, postsPageId]);
+  const postTypeActions = usePostActions({
+    postType: 'page',
+    context: 'list'
+  });
+  const editAction = useEditPostAction();
+  const actions = (0,external_wp_element_namespaceObject.useMemo)(() => [editAction, ...postTypeActions], [postTypeActions, editAction]);
+  const onChangeView = (0,external_wp_element_namespaceObject.useCallback)(newView => {
+    if (newView.type !== view.type) {
+      newView = {
+        ...newView,
+        layout: {
+          ...DEFAULT_CONFIG_PER_VIEW_TYPE[newView.type]
+        }
+      };
+    }
+    setView(newView);
+  }, [view.type, setView]);
+  const [showAddPageModal, setShowAddPageModal] = (0,external_wp_element_namespaceObject.useState)(false);
+  const openModal = () => setShowAddPageModal(true);
+  const closeModal = () => setShowAddPageModal(false);
+  const handleNewPage = ({
+    type,
+    id
+  }) => {
+    history.push({
+      postId: id,
+      postType: type,
+      canvas: 'edit'
+    });
+    closeModal();
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Page, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Pages'),
+    actions: addNewLabel && canCreatePage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        variant: "primary",
+        onClick: openModal,
+        __next40pxDefaultSize: true,
+        children: addNewLabel
+      }), showAddPageModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewPageModal, {
+        onSave: handleNewPage,
+        onClose: closeModal
+      })]
+    }),
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViews, {
+      paginationInfo: paginationInfo,
+      fields: fields,
+      actions: actions,
+      data: pages || page_pages_EMPTY_ARRAY,
+      isLoading: isLoadingPages || isLoadingAuthors,
+      view: view,
+      onChangeView: onChangeView,
+      selection: selection,
+      setSelection: setSelection,
+      onSelectionChange: onSelectionChange,
+      getItemId: getItemId
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/filter-and-sort-data-view.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+function filter_and_sort_data_view_normalizeSearchInput(input = '') {
+  return remove_accents_default()(input.trim().toLowerCase());
+}
+const filter_and_sort_data_view_EMPTY_ARRAY = [];
+
+/**
+ * Applies the filtering, sorting and pagination to the raw data based on the view configuration.
+ *
+ * @param data   Raw data.
+ * @param view   View config.
+ * @param fields Fields config.
+ *
+ * @return Filtered, sorted and paginated data.
+ */
+function filterSortAndPaginate(data, view, fields) {
+  if (!data) {
+    return {
+      data: filter_and_sort_data_view_EMPTY_ARRAY,
+      paginationInfo: {
+        totalItems: 0,
+        totalPages: 0
+      }
+    };
+  }
+  const _fields = normalizeFields(fields);
+  let filteredData = [...data];
+  // Handle global search.
+  if (view.search) {
+    const normalizedSearch = filter_and_sort_data_view_normalizeSearchInput(view.search);
+    filteredData = filteredData.filter(item => {
+      return _fields.filter(field => field.enableGlobalSearch).map(field => {
+        return filter_and_sort_data_view_normalizeSearchInput(field.getValue({
+          item
+        }));
+      }).some(field => field.includes(normalizedSearch));
+    });
+  }
+  if (view.filters.length > 0) {
+    view.filters.forEach(filter => {
+      const field = _fields.find(_field => _field.id === filter.field);
+      if (field) {
+        if (filter.operator === constants_OPERATOR_IS_ANY && filter?.value?.length > 0) {
+          filteredData = filteredData.filter(item => {
+            const fieldValue = field.getValue({
+              item
+            });
+            if (Array.isArray(fieldValue)) {
+              return filter.value.some(filterValue => fieldValue.includes(filterValue));
+            } else if (typeof fieldValue === 'string') {
+              return filter.value.includes(fieldValue);
+            }
+            return false;
+          });
+        } else if (filter.operator === constants_OPERATOR_IS_NONE && filter?.value?.length > 0) {
+          filteredData = filteredData.filter(item => {
+            const fieldValue = field.getValue({
+              item
+            });
+            if (Array.isArray(fieldValue)) {
+              return !filter.value.some(filterValue => fieldValue.includes(filterValue));
+            } else if (typeof fieldValue === 'string') {
+              return !filter.value.includes(fieldValue);
+            }
+            return false;
+          });
+        } else if (filter.operator === OPERATOR_IS_ALL && filter?.value?.length > 0) {
+          filteredData = filteredData.filter(item => {
+            return filter.value.every(value => {
+              return field.getValue({
+                item
+              })?.includes(value);
+            });
+          });
+        } else if (filter.operator === OPERATOR_IS_NOT_ALL && filter?.value?.length > 0) {
+          filteredData = filteredData.filter(item => {
+            return filter.value.every(value => {
+              return !field.getValue({
+                item
+              })?.includes(value);
+            });
+          });
+        } else if (filter.operator === constants_OPERATOR_IS) {
+          filteredData = filteredData.filter(item => {
+            return filter.value === field.getValue({
+              item
+            });
+          });
+        } else if (filter.operator === constants_OPERATOR_IS_NOT) {
+          filteredData = filteredData.filter(item => {
+            return filter.value !== field.getValue({
+              item
+            });
+          });
+        }
+      }
+    });
+  }
+
+  // Handle sorting.
+  if (view.sort) {
+    const fieldId = view.sort.field;
+    const fieldToSort = _fields.find(field => {
+      return field.id === fieldId;
+    });
+    if (fieldToSort) {
+      filteredData.sort((a, b) => {
+        var _fieldToSort$getValue, _fieldToSort$getValue2;
+        const valueA = (_fieldToSort$getValue = fieldToSort.getValue({
+          item: a
+        })) !== null && _fieldToSort$getValue !== void 0 ? _fieldToSort$getValue : '';
+        const valueB = (_fieldToSort$getValue2 = fieldToSort.getValue({
+          item: b
+        })) !== null && _fieldToSort$getValue2 !== void 0 ? _fieldToSort$getValue2 : '';
+        return view.sort?.direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);
+      });
+    }
+  }
+
+  // Handle pagination.
+  let totalItems = filteredData.length;
+  let totalPages = 1;
+  if (view.page !== undefined && view.perPage !== undefined) {
+    const start = (view.page - 1) * view.perPage;
+    totalItems = filteredData?.length || 0;
+    totalPages = Math.ceil(totalItems / view.perPage);
+    filteredData = filteredData?.slice(start, start + view.perPage);
+  }
+  return {
+    data: filteredData,
+    paginationInfo: {
+      totalItems,
+      totalPages
+    }
+  };
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/lock-small.js
+/**
+ * WordPress dependencies
+ */
+
+
+const lockSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    clipRule: "evenodd",
+    d: "M15 11h-.2V9c0-1.5-1.2-2.8-2.8-2.8S9.2 7.5 9.2 9v2H9c-.6 0-1 .4-1 1v4c0 .6.4 1 1 1h6c.6 0 1-.4 1-1v-4c0-.6-.4-1-1-1zm-1.8 0h-2.5V9c0-.7.6-1.2 1.2-1.2s1.2.6 1.2 1.2v2z"
+  })
+});
+/* harmony default export */ const lock_small = (lockSmall);
+
+;// CONCATENATED MODULE: external ["wp","priorityQueue"]
+const external_wp_priorityQueue_namespaceObject = window["wp"]["priorityQueue"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/async/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+const blockPreviewQueue = (0,external_wp_priorityQueue_namespaceObject.createQueue)();
+
+/**
+ * Renders a component at the next idle time.
+ * @param {*} props
+ */
+function Async({
+  children,
+  placeholder
+}) {
+  const [shouldRender, setShouldRender] = (0,external_wp_element_namespaceObject.useState)(false);
+
+  // In the future, we could try to use startTransition here, but currently
+  // react will batch all transitions, which means all previews will be
+  // rendered at the same time.
+  // https://react.dev/reference/react/startTransition#caveats
+  // > If there are multiple ongoing Transitions, React currently batches them
+  // > together. This is a limitation that will likely be removed in a future
+  // > release.
+
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    const context = {};
+    blockPreviewQueue.add(context, () => {
+      // Synchronously run all renders so it consumes timeRemaining.
+      // See https://github.com/WordPress/gutenberg/pull/48238
+      (0,external_wp_element_namespaceObject.flushSync)(() => {
+        setShouldRender(true);
+      });
+    });
+    return () => {
+      blockPreviewQueue.cancel(context);
+    };
+  }, []);
+  if (!shouldRender) {
+    return placeholder;
+  }
+  return children;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/utils.js
+const filterOutDuplicatesByName = (currentItem, index, items) => index === items.findIndex(item => currentItem.name === item.name);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/use-pattern-settings.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+function usePatternSettings() {
+  var _storedSettings$__exp;
+  const storedSettings = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getSettings
+    } = lock_unlock_unlock(select(store));
+    return getSettings();
+  }, []);
+  const settingsBlockPatterns = (_storedSettings$__exp = storedSettings.__experimentalAdditionalBlockPatterns) !== null && _storedSettings$__exp !== void 0 ? _storedSettings$__exp :
+  // WP 6.0
+  storedSettings.__experimentalBlockPatterns; // WP 5.9
+
+  const restBlockPatterns = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getBlockPatterns(), []);
+  const blockPatterns = (0,external_wp_element_namespaceObject.useMemo)(() => [...(settingsBlockPatterns || []), ...(restBlockPatterns || [])].filter(filterOutDuplicatesByName), [settingsBlockPatterns, restBlockPatterns]);
+  const settings = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const {
+      __experimentalAdditionalBlockPatterns,
+      ...restStoredSettings
+    } = storedSettings;
+    return {
+      ...restStoredSettings,
+      __experimentalBlockPatterns: blockPatterns,
+      __unstableIsPreviewMode: true
+    };
+  }, [storedSettings, blockPatterns]);
+  return settings;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/search-items.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+const {
+  extractWords,
+  getNormalizedSearchTerms,
+  normalizeString: search_items_normalizeString
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+
+/**
+ * Internal dependencies
+ */
+
+
+// Default search helpers.
+const defaultGetName = item => item.name || '';
+const defaultGetTitle = item => item.title;
+const defaultGetDescription = item => item.description || '';
+const defaultGetKeywords = item => item.keywords || [];
+const defaultHasCategory = () => false;
+const removeMatchingTerms = (unmatchedTerms, unprocessedTerms) => {
+  return unmatchedTerms.filter(term => !getNormalizedSearchTerms(unprocessedTerms).some(unprocessedTerm => unprocessedTerm.includes(term)));
+};
+
+/**
+ * Filters an item list given a search term.
+ *
+ * @param {Array}  items       Item list
+ * @param {string} searchInput Search input.
+ * @param {Object} config      Search Config.
+ *
+ * @return {Array} Filtered item list.
+ */
+const searchItems = (items = [], searchInput = '', config = {}) => {
+  const normalizedSearchTerms = getNormalizedSearchTerms(searchInput);
+
+  // Filter patterns by category: the default category indicates that all patterns will be shown.
+  const onlyFilterByCategory = config.categoryId !== PATTERN_DEFAULT_CATEGORY && !normalizedSearchTerms.length;
+  const searchRankConfig = {
+    ...config,
+    onlyFilterByCategory
+  };
+
+  // If we aren't filtering on search terms, matching on category is satisfactory.
+  // If we are, then we need more than a category match.
+  const threshold = onlyFilterByCategory ? 0 : 1;
+  const rankedItems = items.map(item => {
+    return [item, getItemSearchRank(item, searchInput, searchRankConfig)];
+  }).filter(([, rank]) => rank > threshold);
+
+  // If we didn't have terms to search on, there's no point sorting.
+  if (normalizedSearchTerms.length === 0) {
+    return rankedItems.map(([item]) => item);
+  }
+  rankedItems.sort(([, rank1], [, rank2]) => rank2 - rank1);
+  return rankedItems.map(([item]) => item);
+};
+
+/**
+ * Get the search rank for a given item and a specific search term.
+ * The better the match, the higher the rank.
+ * If the rank equals 0, it should be excluded from the results.
+ *
+ * @param {Object} item       Item to filter.
+ * @param {string} searchTerm Search term.
+ * @param {Object} config     Search Config.
+ *
+ * @return {number} Search Rank.
+ */
+function getItemSearchRank(item, searchTerm, config) {
+  const {
+    categoryId,
+    getName = defaultGetName,
+    getTitle = defaultGetTitle,
+    getDescription = defaultGetDescription,
+    getKeywords = defaultGetKeywords,
+    hasCategory = defaultHasCategory,
+    onlyFilterByCategory
+  } = config;
+  let rank = categoryId === PATTERN_DEFAULT_CATEGORY || categoryId === TEMPLATE_PART_ALL_AREAS_CATEGORY || categoryId === PATTERN_USER_CATEGORY && item.type === PATTERN_TYPES.user || hasCategory(item, categoryId) ? 1 : 0;
+
+  // If an item doesn't belong to the current category or we don't have
+  // search terms to filter by, return the initial rank value.
+  if (!rank || onlyFilterByCategory) {
+    return rank;
+  }
+  const name = getName(item);
+  const title = getTitle(item);
+  const description = getDescription(item);
+  const keywords = getKeywords(item);
+  const normalizedSearchInput = search_items_normalizeString(searchTerm);
+  const normalizedTitle = search_items_normalizeString(title);
+
+  // Prefers exact matches
+  // Then prefers if the beginning of the title matches the search term
+  // name, keywords, description matches come later.
+  if (normalizedSearchInput === normalizedTitle) {
+    rank += 30;
+  } else if (normalizedTitle.startsWith(normalizedSearchInput)) {
+    rank += 20;
+  } else {
+    const terms = [name, title, description, ...keywords].join(' ');
+    const normalizedSearchTerms = extractWords(normalizedSearchInput);
+    const unmatchedTerms = removeMatchingTerms(normalizedSearchTerms, terms);
+    if (unmatchedTerms.length === 0) {
+      rank += 10;
+    }
+  }
+  return rank;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/use-patterns.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const EMPTY_PATTERN_LIST = [];
+const createTemplatePartId = (theme, slug) => theme && slug ? theme + '//' + slug : null;
+const templatePartToPattern = templatePart => ({
+  blocks: (0,external_wp_blocks_namespaceObject.parse)(templatePart.content.raw, {
+    __unstableSkipMigrationLogs: true
+  }),
+  categories: [templatePart.area],
+  description: templatePart.description || '',
+  isCustom: templatePart.source === TEMPLATE_ORIGINS.custom,
+  keywords: templatePart.keywords || [],
+  id: createTemplatePartId(templatePart.theme, templatePart.slug),
+  name: createTemplatePartId(templatePart.theme, templatePart.slug),
+  title: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(templatePart.title.rendered),
+  type: templatePart.type,
+  _links: templatePart._links,
+  templatePart
+});
+const selectTemplatePartsAsPatterns = (0,external_wp_data_namespaceObject.createSelector)((select, categoryId, search = '') => {
+  var _getEntityRecords;
+  const {
+    getEntityRecords,
+    isResolving: isResolvingSelector
+  } = select(external_wp_coreData_namespaceObject.store);
+  const {
+    __experimentalGetDefaultTemplatePartAreas
+  } = select(external_wp_editor_namespaceObject.store);
+  const query = {
+    per_page: -1
+  };
+  const rawTemplateParts = (_getEntityRecords = getEntityRecords('postType', TEMPLATE_PART_POST_TYPE, query)) !== null && _getEntityRecords !== void 0 ? _getEntityRecords : EMPTY_PATTERN_LIST;
+  const templateParts = rawTemplateParts.map(templatePart => templatePartToPattern(templatePart));
+
+  // In the case where a custom template part area has been removed we need
+  // the current list of areas to cross check against so orphaned template
+  // parts can be treated as uncategorized.
+  const knownAreas = __experimentalGetDefaultTemplatePartAreas() || [];
+  const templatePartAreas = knownAreas.map(area => area.area);
+  const templatePartHasCategory = (item, category) => {
+    if (category !== TEMPLATE_PART_AREA_DEFAULT_CATEGORY) {
+      return item.templatePart.area === category;
+    }
+    return item.templatePart.area === category || !templatePartAreas.includes(item.templatePart.area);
+  };
+  const isResolving = isResolvingSelector('getEntityRecords', ['postType', TEMPLATE_PART_POST_TYPE, query]);
+  const patterns = searchItems(templateParts, search, {
+    categoryId,
+    hasCategory: templatePartHasCategory
+  });
+  return {
+    patterns,
+    isResolving
+  };
+}, select => [select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', TEMPLATE_PART_POST_TYPE, {
+  per_page: -1
+}), select(external_wp_coreData_namespaceObject.store).isResolving('getEntityRecords', ['postType', TEMPLATE_PART_POST_TYPE, {
+  per_page: -1
+}]), select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas()]);
+const selectThemePatterns = (0,external_wp_data_namespaceObject.createSelector)(select => {
+  var _settings$__experimen;
+  const {
+    getSettings
+  } = lock_unlock_unlock(select(store));
+  const {
+    isResolving: isResolvingSelector
+  } = select(external_wp_coreData_namespaceObject.store);
+  const settings = getSettings();
+  const blockPatterns = (_settings$__experimen = settings.__experimentalAdditionalBlockPatterns) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : settings.__experimentalBlockPatterns;
+  const restBlockPatterns = select(external_wp_coreData_namespaceObject.store).getBlockPatterns();
+  const patterns = [...(blockPatterns || []), ...(restBlockPatterns || [])].filter(pattern => !EXCLUDED_PATTERN_SOURCES.includes(pattern.source)).filter(filterOutDuplicatesByName).filter(pattern => pattern.inserter !== false).map(pattern => ({
+    ...pattern,
+    keywords: pattern.keywords || [],
+    type: PATTERN_TYPES.theme,
+    blocks: (0,external_wp_blocks_namespaceObject.parse)(pattern.content, {
+      __unstableSkipMigrationLogs: true
+    })
+  }));
+  return {
+    patterns,
+    isResolving: isResolvingSelector('getBlockPatterns')
+  };
+}, select => [select(external_wp_coreData_namespaceObject.store).getBlockPatterns(), select(external_wp_coreData_namespaceObject.store).isResolving('getBlockPatterns'), lock_unlock_unlock(select(store)).getSettings()]);
+const selectPatterns = (0,external_wp_data_namespaceObject.createSelector)((select, categoryId, syncStatus, search = '') => {
+  const {
+    patterns: themePatterns,
+    isResolving: isResolvingThemePatterns
+  } = selectThemePatterns(select);
+  const {
+    patterns: userPatterns,
+    isResolving: isResolvingUserPatterns
+  } = selectUserPatterns(select);
+  let patterns = [...(themePatterns || []), ...(userPatterns || [])];
+  if (syncStatus) {
+    // User patterns can have their sync statuses checked directly
+    // Non-user patterns are all unsynced for the time being.
+    patterns = patterns.filter(pattern => {
+      return pattern.type === PATTERN_TYPES.user ? pattern.syncStatus === syncStatus : syncStatus === PATTERN_SYNC_TYPES.unsynced;
+    });
+  }
+  if (categoryId) {
+    patterns = searchItems(patterns, search, {
+      categoryId,
+      hasCategory: (item, currentCategory) => item.categories?.includes(currentCategory)
+    });
+  } else {
+    patterns = searchItems(patterns, search, {
+      hasCategory: item => !item.hasOwnProperty('categories')
+    });
+  }
+  return {
+    patterns,
+    isResolving: isResolvingThemePatterns || isResolvingUserPatterns
+  };
+}, select => [selectThemePatterns(select), selectUserPatterns(select)]);
+
+/**
+ * Converts a post of type `wp_block` to a 'pattern item' that more closely
+ * matches the structure of theme provided patterns.
+ *
+ * @param {Object} patternPost The `wp_block` record being normalized.
+ * @param {Map}    categories  A Map of user created categories.
+ *
+ * @return {Object} The normalized item.
+ */
+const convertPatternPostToItem = (patternPost, categories) => ({
+  blocks: (0,external_wp_blocks_namespaceObject.parse)(patternPost.content.raw, {
+    __unstableSkipMigrationLogs: true
+  }),
+  ...(patternPost.wp_pattern_category.length > 0 && {
+    categories: patternPost.wp_pattern_category.map(patternCategoryId => categories && categories.get(patternCategoryId) ? categories.get(patternCategoryId).slug : patternCategoryId)
+  }),
+  termLabels: patternPost.wp_pattern_category.map(patternCategoryId => categories?.get(patternCategoryId) ? categories.get(patternCategoryId).label : patternCategoryId),
+  id: patternPost.id,
+  name: patternPost.slug,
+  syncStatus: patternPost.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full,
+  title: patternPost.title.raw,
+  type: patternPost.type,
+  description: patternPost.excerpt.raw,
+  patternPost
+});
+const selectUserPatterns = (0,external_wp_data_namespaceObject.createSelector)((select, syncStatus, search = '') => {
+  const {
+    getEntityRecords,
+    isResolving: isResolvingSelector,
+    getUserPatternCategories
+  } = select(external_wp_coreData_namespaceObject.store);
+  const query = {
+    per_page: -1
+  };
+  const patternPosts = getEntityRecords('postType', PATTERN_TYPES.user, query);
+  const userPatternCategories = getUserPatternCategories();
+  const categories = new Map();
+  userPatternCategories.forEach(userCategory => categories.set(userCategory.id, userCategory));
+  let patterns = patternPosts ? patternPosts.map(record => convertPatternPostToItem(record, categories)) : EMPTY_PATTERN_LIST;
+  const isResolving = isResolvingSelector('getEntityRecords', ['postType', PATTERN_TYPES.user, query]);
+  if (syncStatus) {
+    patterns = patterns.filter(pattern => pattern.syncStatus === syncStatus);
+  }
+  patterns = searchItems(patterns, search, {
+    // We exit user pattern retrieval early if we aren't in the
+    // catch-all category for user created patterns, so it has
+    // to be in the category.
+    hasCategory: () => true
+  });
+  return {
+    patterns,
+    isResolving,
+    categories: userPatternCategories
+  };
+}, select => [select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', PATTERN_TYPES.user, {
+  per_page: -1
+}), select(external_wp_coreData_namespaceObject.store).isResolving('getEntityRecords', ['postType', PATTERN_TYPES.user, {
+  per_page: -1
+}]), select(external_wp_coreData_namespaceObject.store).getUserPatternCategories()]);
+const usePatterns = (postType, categoryId, {
+  search = '',
+  syncStatus
+} = {}) => {
+  return (0,external_wp_data_namespaceObject.useSelect)(select => {
+    if (postType === TEMPLATE_PART_POST_TYPE) {
+      return selectTemplatePartsAsPatterns(select, categoryId, search);
+    } else if (postType === PATTERN_TYPES.user && !!categoryId) {
+      const appliedCategory = categoryId === 'uncategorized' ? '' : categoryId;
+      return selectPatterns(select, appliedCategory, syncStatus, search);
+    } else if (postType === PATTERN_TYPES.user) {
+      return selectUserPatterns(select, syncStatus, search);
+    }
+    return {
+      patterns: EMPTY_PATTERN_LIST,
+      isResolving: false
+    };
+  }, [categoryId, postType, search, syncStatus]);
+};
+/* harmony default export */ const use_patterns = (usePatterns);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol.js
+/**
+ * WordPress dependencies
+ */
+
+
+const symbol_symbol = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"
+  })
+});
+/* harmony default export */ const library_symbol = (symbol_symbol);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/upload.js
+/**
+ * WordPress dependencies
+ */
+
+
+const upload = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z"
+  })
+});
+/* harmony default export */ const library_upload = (upload);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-pattern/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  useHistory: add_new_pattern_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const {
+  CreatePatternModal,
+  useAddPatternCategory
+} = lock_unlock_unlock(external_wp_patterns_namespaceObject.privateApis);
+const {
+  CreateTemplatePartModal: add_new_pattern_CreateTemplatePartModal
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+function AddNewPattern() {
+  const history = add_new_pattern_useHistory();
+  const [showPatternModal, setShowPatternModal] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [showTemplatePartModal, setShowTemplatePartModal] = (0,external_wp_element_namespaceObject.useState)(false);
+  // eslint-disable-next-line @wordpress/no-unused-vars-before-return
+  const {
+    createPatternFromFile
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(external_wp_patterns_namespaceObject.store));
+  const {
     createSuccessNotice,
     createErrorNotice
   } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
-
-  if (!template.is_custom) {
+  const patternUploadInputRef = (0,external_wp_element_namespaceObject.useRef)();
+  const {
+    isBlockBasedTheme,
+    addNewPatternLabel,
+    addNewTemplatePartLabel,
+    canCreatePattern,
+    canCreateTemplatePart
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getCurrentTheme,
+      getPostType,
+      canUser
+    } = select(external_wp_coreData_namespaceObject.store);
+    return {
+      isBlockBasedTheme: getCurrentTheme()?.is_block_theme,
+      addNewPatternLabel: getPostType(PATTERN_TYPES.user)?.labels?.add_new_item,
+      addNewTemplatePartLabel: getPostType(TEMPLATE_PART_POST_TYPE)?.labels?.add_new_item,
+      canCreatePattern: canUser('create', 'blocks'),
+      canCreateTemplatePart: canUser('create', 'template-parts')
+    };
+  }, []);
+  function handleCreatePattern({
+    pattern
+  }) {
+    setShowPatternModal(false);
+    history.push({
+      postId: pattern.id,
+      postType: PATTERN_TYPES.user,
+      canvas: 'edit'
+    });
+  }
+  function handleCreateTemplatePart(templatePart) {
+    setShowTemplatePartModal(false);
+
+    // Navigate to the created template part editor.
+    history.push({
+      postId: templatePart.id,
+      postType: TEMPLATE_PART_POST_TYPE,
+      canvas: 'edit'
+    });
+  }
+  function handleError() {
+    setShowPatternModal(false);
+    setShowTemplatePartModal(false);
+  }
+  const controls = [];
+  if (canCreatePattern) {
+    controls.push({
+      icon: library_symbol,
+      onClick: () => setShowPatternModal(true),
+      title: addNewPatternLabel
+    });
+  }
+  if (isBlockBasedTheme && canCreateTemplatePart) {
+    controls.push({
+      icon: symbol_filled,
+      onClick: () => setShowTemplatePartModal(true),
+      title: addNewTemplatePartLabel
+    });
+  }
+  if (canCreatePattern) {
+    controls.push({
+      icon: library_upload,
+      onClick: () => {
+        patternUploadInputRef.current.click();
+      },
+      title: (0,external_wp_i18n_namespaceObject.__)('Import pattern from JSON')
+    });
+  }
+  const {
+    categoryMap,
+    findOrCreateTerm
+  } = useAddPatternCategory();
+  if (controls.length === 0) {
     return null;
   }
-
-  async function onTemplateRename(event) {
-    event.preventDefault();
-
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [addNewPatternLabel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
+      controls: controls,
+      icon: null,
+      toggleProps: {
+        variant: 'primary',
+        showTooltip: false,
+        __next40pxDefaultSize: true
+      },
+      text: addNewPatternLabel,
+      label: addNewPatternLabel
+    }), showPatternModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CreatePatternModal, {
+      onClose: () => setShowPatternModal(false),
+      onSuccess: handleCreatePattern,
+      onError: handleError
+    }), showTemplatePartModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_new_pattern_CreateTemplatePartModal, {
+      closeModal: () => setShowTemplatePartModal(false),
+      blocks: [],
+      onCreate: handleCreateTemplatePart,
+      onError: handleError
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("input", {
+      type: "file",
+      accept: ".json",
+      hidden: true,
+      ref: patternUploadInputRef,
+      onChange: async event => {
+        const file = event.target.files?.[0];
+        if (!file) {
+          return;
+        }
+        try {
+          const {
+            params: {
+              postType,
+              categoryId
+            }
+          } = history.getLocationWithParams();
+          let currentCategoryId;
+          // When we're not handling template parts, we should
+          // add or create the proper pattern category.
+          if (postType !== TEMPLATE_PART_POST_TYPE) {
+            const currentCategory = categoryMap.values().find(term => term.name === categoryId);
+            if (currentCategory) {
+              currentCategoryId = currentCategory.id || (await findOrCreateTerm(currentCategory.label));
+            }
+          }
+          const pattern = await createPatternFromFile(file, currentCategoryId ? [currentCategoryId] : undefined);
+
+          // Navigate to the All patterns category for the newly created pattern
+          // if we're not on that page already and if we're not in the `my-patterns`
+          // category.
+          if (!currentCategoryId && categoryId !== 'my-patterns') {
+            history.push({
+              postType: PATTERN_TYPES.user,
+              categoryId: PATTERN_DEFAULT_CATEGORY
+            });
+          }
+          createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
+          // translators: %s: The imported pattern's title.
+          (0,external_wp_i18n_namespaceObject.__)('Imported "%s" from JSON.'), pattern.title.raw), {
+            type: 'snackbar',
+            id: 'import-pattern-success'
+          });
+        } catch (err) {
+          createErrorNotice(err.message, {
+            type: 'snackbar',
+            id: 'import-pattern-error'
+          });
+        } finally {
+          event.target.value = '';
+        }
+      }
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-default-pattern-categories.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+function useDefaultPatternCategories() {
+  const blockPatternCategories = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    var _settings$__experimen;
+    const {
+      getSettings
+    } = lock_unlock_unlock(select(store));
+    const settings = getSettings();
+    return (_settings$__experimen = settings.__experimentalAdditionalBlockPatternCategories) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : settings.__experimentalBlockPatternCategories;
+  });
+  const restBlockPatternCategories = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getBlockPatternCategories());
+  return [...(blockPatternCategories || []), ...(restBlockPatternCategories || [])];
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+function useThemePatterns() {
+  const blockPatterns = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    var _getSettings$__experi;
+    const {
+      getSettings
+    } = lock_unlock_unlock(select(store));
+    return (_getSettings$__experi = getSettings().__experimentalAdditionalBlockPatterns) !== null && _getSettings$__experi !== void 0 ? _getSettings$__experi : getSettings().__experimentalBlockPatterns;
+  });
+  const restBlockPatterns = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getBlockPatterns());
+  const patterns = (0,external_wp_element_namespaceObject.useMemo)(() => [...(blockPatterns || []), ...(restBlockPatterns || [])].filter(pattern => !EXCLUDED_PATTERN_SOURCES.includes(pattern.source)).filter(filterOutDuplicatesByName).filter(pattern => pattern.inserter !== false), [blockPatterns, restBlockPatterns]);
+  return patterns;
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+function usePatternCategories() {
+  const defaultCategories = useDefaultPatternCategories();
+  defaultCategories.push({
+    name: TEMPLATE_PART_AREA_DEFAULT_CATEGORY,
+    label: (0,external_wp_i18n_namespaceObject.__)('Uncategorized')
+  });
+  const themePatterns = useThemePatterns();
+  const {
+    patterns: userPatterns,
+    categories: userPatternCategories
+  } = use_patterns(PATTERN_TYPES.user);
+  const patternCategories = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const categoryMap = {};
+    const categoriesWithCounts = [];
+
+    // Create a map for easier counting of patterns in categories.
+    defaultCategories.forEach(category => {
+      if (!categoryMap[category.name]) {
+        categoryMap[category.name] = {
+          ...category,
+          count: 0
+        };
+      }
+    });
+    userPatternCategories.forEach(category => {
+      if (!categoryMap[category.name]) {
+        categoryMap[category.name] = {
+          ...category,
+          count: 0
+        };
+      }
+    });
+
+    // Update the category counts to reflect theme registered patterns.
+    themePatterns.forEach(pattern => {
+      pattern.categories?.forEach(category => {
+        if (categoryMap[category]) {
+          categoryMap[category].count += 1;
+        }
+      });
+      // If the pattern has no categories, add it to uncategorized.
+      if (!pattern.categories?.length) {
+        categoryMap.uncategorized.count += 1;
+      }
+    });
+
+    // Update the category counts to reflect user registered patterns.
+    userPatterns.forEach(pattern => {
+      pattern.categories?.forEach(category => {
+        if (categoryMap[category]) {
+          categoryMap[category].count += 1;
+        }
+      });
+      // If the pattern has no categories, add it to uncategorized.
+      if (!pattern.categories?.length) {
+        categoryMap.uncategorized.count += 1;
+      }
+    });
+
+    // Filter categories so we only have those containing patterns.
+    [...defaultCategories, ...userPatternCategories].forEach(category => {
+      if (categoryMap[category.name].count && !categoriesWithCounts.find(cat => cat.name === category.name)) {
+        categoriesWithCounts.push(categoryMap[category.name]);
+      }
+    });
+    const sortedCategories = categoriesWithCounts.sort((a, b) => a.label.localeCompare(b.label));
+    sortedCategories.unshift({
+      name: PATTERN_USER_CATEGORY,
+      label: (0,external_wp_i18n_namespaceObject.__)('My patterns'),
+      count: userPatterns.length
+    });
+    sortedCategories.unshift({
+      name: PATTERN_DEFAULT_CATEGORY,
+      label: (0,external_wp_i18n_namespaceObject.__)('All patterns'),
+      description: (0,external_wp_i18n_namespaceObject.__)('A list of all patterns from all sources.'),
+      count: themePatterns.length + userPatterns.length
+    });
+    return sortedCategories;
+  }, [defaultCategories, themePatterns, userPatternCategories, userPatterns]);
+  return {
+    patternCategories,
+    hasPatterns: !!patternCategories.length
+  };
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/rename-category-menu-item.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  RenamePatternCategoryModal
+} = lock_unlock_unlock(external_wp_patterns_namespaceObject.privateApis);
+function RenameCategoryMenuItem({
+  category,
+  onClose
+}) {
+  const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+      onClick: () => setIsModalOpen(true),
+      children: (0,external_wp_i18n_namespaceObject.__)('Rename')
+    }), isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenameModal, {
+      category: category,
+      onClose: () => {
+        setIsModalOpen(false);
+        onClose();
+      }
+    })]
+  });
+}
+function RenameModal({
+  category,
+  onClose
+}) {
+  // User created pattern categories have their properties updated when
+  // retrieved via `getUserPatternCategories`. The rename modal expects an
+  // object that will match the pattern category entity.
+  const normalizedCategory = {
+    id: category.id,
+    slug: category.slug,
+    name: category.label
+  };
+
+  // Optimization - only use pattern categories when the modal is open.
+  const existingCategories = usePatternCategories();
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenamePatternCategoryModal, {
+    category: normalizedCategory,
+    existingCategories: existingCategories,
+    onClose: onClose,
+    overlayClassName: "edit-site-list__rename-modal"
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/delete-category-menu-item.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  useHistory: delete_category_menu_item_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function DeleteCategoryMenuItem({
+  category,
+  onClose
+}) {
+  const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
+  const history = delete_category_menu_item_useHistory();
+  const {
+    createSuccessNotice,
+    createErrorNotice
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
+  const {
+    deleteEntityRecord,
+    invalidateResolution
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
+  const onDelete = async () => {
     try {
-      await editEntityRecord('postType', template.type, template.id, {
-        title
-      }); // Update state before saving rerenders the list.
-
-      setTitle('');
-      setIsModalOpen(false);
-      onClose(); // Persist edited entity.
-
-      await saveEditedEntityRecord('postType', template.type, template.id, {
+      await deleteEntityRecord('taxonomy', 'wp_pattern_category', category.id, {
+        force: true
+      }, {
         throwOnError: true
       });
-      createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Entity renamed.'), {
+
+      // Prevent the need to refresh the page to get up-to-date categories
+      // and pattern categorization.
+      invalidateResolution('getUserPatternCategories');
+      invalidateResolution('getEntityRecords', ['postType', PATTERN_TYPES.user, {
+        per_page: -1
+      }]);
+      createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: The pattern category's name */
+      (0,external_wp_i18n_namespaceObject.__)('"%s" deleted.'), category.label), {
+        type: 'snackbar',
+        id: 'pattern-category-delete'
+      });
+      onClose?.();
+      history.push({
+        postType: PATTERN_TYPES.user,
+        categoryId: PATTERN_DEFAULT_CATEGORY
+      });
+    } catch (error) {
+      const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while deleting the pattern category.');
+      createErrorNotice(errorMessage, {
+        type: 'snackbar',
+        id: 'pattern-category-delete'
+      });
+    }
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+      isDestructive: true,
+      onClick: () => setIsModalOpen(true),
+      children: (0,external_wp_i18n_namespaceObject.__)('Delete')
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
+      isOpen: isModalOpen,
+      onConfirm: onDelete,
+      onCancel: () => setIsModalOpen(false),
+      confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'),
+      className: "edit-site-patterns__delete-modal",
+      title: (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: The pattern category's name.
+      (0,external_wp_i18n_namespaceObject.__)('Delete "%s"?'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(category.label)),
+      size: "medium",
+      __experimentalHideHeader: false,
+      children: (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: The pattern category's name.
+      (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete the category "%s"? The patterns will not be deleted.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(category.label))
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/header.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+function PatternsHeader({
+  categoryId,
+  type,
+  titleId,
+  descriptionId
+}) {
+  const {
+    patternCategories
+  } = usePatternCategories();
+  const templatePartAreas = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas(), []);
+  let title, description, patternCategory;
+  if (type === TEMPLATE_PART_POST_TYPE) {
+    const templatePartArea = templatePartAreas.find(area => area.area === categoryId);
+    title = templatePartArea?.label || (0,external_wp_i18n_namespaceObject.__)('All Template Parts');
+    description = templatePartArea?.description || (0,external_wp_i18n_namespaceObject.__)('Includes every template part defined for any area.');
+  } else if (type === PATTERN_TYPES.user && !!categoryId) {
+    patternCategory = patternCategories.find(category => category.name === categoryId);
+    title = patternCategory?.label;
+    description = patternCategory?.description;
+  }
+  if (!title) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    className: "edit-site-patterns__section-header",
+    spacing: 0,
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "space-between",
+      className: "edit-site-patterns__title",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+        as: "h2",
+        level: 3,
+        id: titleId,
+        weight: 500,
+        children: title
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        expanded: false,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewPattern, {}), !!patternCategory?.id && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
+          icon: more_vertical,
+          label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
+          toggleProps: {
+            className: 'edit-site-patterns__button',
+            describedBy: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: pattern category name */
+            (0,external_wp_i18n_namespaceObject.__)('Action menu for %s pattern category'), title),
+            size: 'compact'
+          },
+          children: ({
+            onClose
+          }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, {
+            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenameCategoryMenuItem, {
+              category: patternCategory,
+              onClose: onClose
+            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DeleteCategoryMenuItem, {
+              category: patternCategory,
+              onClose: onClose
+            })]
+          })
+        })]
+      })]
+    }), description ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+      variant: "muted",
+      as: "p",
+      id: descriptionId,
+      className: "edit-site-patterns__sub-title",
+      children: description
+    }) : null]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plugins.js
+/**
+ * WordPress dependencies
+ */
+
+
+const plugins = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z"
+  })
+});
+/* harmony default export */ const library_plugins = (plugins);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/globe.js
+/**
+ * WordPress dependencies
+ */
+
+
+const globe = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M12 3.3c-4.8 0-8.8 3.9-8.8 8.8 0 4.8 3.9 8.8 8.8 8.8 4.8 0 8.8-3.9 8.8-8.8s-4-8.8-8.8-8.8zm6.5 5.5h-2.6C15.4 7.3 14.8 6 14 5c2 .6 3.6 2 4.5 3.8zm.7 3.2c0 .6-.1 1.2-.2 1.8h-2.9c.1-.6.1-1.2.1-1.8s-.1-1.2-.1-1.8H19c.2.6.2 1.2.2 1.8zM12 18.7c-1-.7-1.8-1.9-2.3-3.5h4.6c-.5 1.6-1.3 2.9-2.3 3.5zm-2.6-4.9c-.1-.6-.1-1.1-.1-1.8 0-.6.1-1.2.1-1.8h5.2c.1.6.1 1.1.1 1.8s-.1 1.2-.1 1.8H9.4zM4.8 12c0-.6.1-1.2.2-1.8h2.9c-.1.6-.1 1.2-.1 1.8 0 .6.1 1.2.1 1.8H5c-.2-.6-.2-1.2-.2-1.8zM12 5.3c1 .7 1.8 1.9 2.3 3.5H9.7c.5-1.6 1.3-2.9 2.3-3.5zM10 5c-.8 1-1.4 2.3-1.8 3.8H5.5C6.4 7 8 5.6 10 5zM5.5 15.3h2.6c.4 1.5 1 2.8 1.8 3.7-1.8-.6-3.5-2-4.4-3.7zM14 19c.8-1 1.4-2.2 1.8-3.7h2.6C17.6 17 16 18.4 14 19z"
+  })
+});
+/* harmony default export */ const library_globe = (globe);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment-author-avatar.js
+/**
+ * WordPress dependencies
+ */
+
+
+const commentAuthorAvatar = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    d: "M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z",
+    clipRule: "evenodd"
+  })
+});
+/* harmony default export */ const comment_author_avatar = (commentAuthorAvatar);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-templates/hooks.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+/** @typedef {'wp_template'|'wp_template_part'} TemplateType */
+
+/**
+ * @typedef {'theme'|'plugin'|'site'|'user'} AddedByType
+ *
+ * @typedef AddedByData
+ * @type {Object}
+ * @property {AddedByType}  type         The type of the data.
+ * @property {JSX.Element}  icon         The icon to display.
+ * @property {string}       [imageUrl]   The optional image URL to display.
+ * @property {string}       [text]       The text to display.
+ * @property {boolean}      isCustomized Whether the template has been customized.
+ *
+ * @param    {TemplateType} postType     The template post type.
+ * @param    {number}       postId       The template post id.
+ * @return {AddedByData} The added by object or null.
+ */
+function useAddedBy(postType, postId) {
+  return (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEntityRecord,
+      getMedia,
+      getUser,
+      getEditedEntityRecord
+    } = select(external_wp_coreData_namespaceObject.store);
+    const template = getEditedEntityRecord('postType', postType, postId);
+    const originalSource = template?.original_source;
+    const authorText = template?.author_text;
+    switch (originalSource) {
+      case 'theme':
+        {
+          return {
+            type: originalSource,
+            icon: library_layout,
+            text: authorText,
+            isCustomized: template.source === TEMPLATE_ORIGINS.custom
+          };
+        }
+      case 'plugin':
+        {
+          return {
+            type: originalSource,
+            icon: library_plugins,
+            text: authorText,
+            isCustomized: template.source === TEMPLATE_ORIGINS.custom
+          };
+        }
+      case 'site':
+        {
+          const siteData = getEntityRecord('root', '__unstableBase');
+          return {
+            type: originalSource,
+            icon: library_globe,
+            imageUrl: siteData?.site_logo ? getMedia(siteData.site_logo)?.source_url : undefined,
+            text: authorText,
+            isCustomized: false
+          };
+        }
+      default:
+        {
+          const user = getUser(template.author);
+          return {
+            type: 'user',
+            icon: comment_author_avatar,
+            imageUrl: user?.avatar_urls?.[48],
+            text: authorText,
+            isCustomized: false
+          };
+        }
+    }
+  }, [postType, postId]);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+const {
+  ExperimentalBlockEditorProvider: page_patterns_ExperimentalBlockEditorProvider,
+  useGlobalStyle: page_patterns_useGlobalStyle
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const {
+  usePostActions: page_patterns_usePostActions
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+const {
+  useLocation: page_patterns_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const page_patterns_EMPTY_ARRAY = [];
+const defaultConfigPerViewType = {
+  [LAYOUT_TABLE]: {
+    primaryField: 'title'
+  },
+  [LAYOUT_GRID]: {
+    mediaField: 'preview',
+    primaryField: 'title',
+    badgeFields: ['sync-status']
+  }
+};
+const DEFAULT_VIEW = {
+  type: LAYOUT_GRID,
+  search: '',
+  page: 1,
+  perPage: 20,
+  hiddenFields: [],
+  layout: {
+    ...defaultConfigPerViewType[LAYOUT_GRID]
+  },
+  filters: []
+};
+const SYNC_FILTERS = [{
+  value: PATTERN_SYNC_TYPES.full,
+  label: (0,external_wp_i18n_namespaceObject._x)('Synced', 'pattern (singular)'),
+  description: (0,external_wp_i18n_namespaceObject.__)('Patterns that are kept in sync across the site.')
+}, {
+  value: PATTERN_SYNC_TYPES.unsynced,
+  label: (0,external_wp_i18n_namespaceObject._x)('Not synced', 'pattern (singular)'),
+  description: (0,external_wp_i18n_namespaceObject.__)('Patterns that can be changed freely without affecting the site.')
+}];
+function PreviewWrapper({
+  item,
+  onClick,
+  ariaDescribedBy,
+  children
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("button", {
+    className: "page-patterns-preview-field__button",
+    type: "button",
+    onClick: item.type !== PATTERN_TYPES.theme ? onClick : undefined,
+    "aria-label": item.title,
+    "aria-describedby": ariaDescribedBy,
+    "aria-disabled": item.type === PATTERN_TYPES.theme,
+    children: children
+  });
+}
+function Preview({
+  item,
+  viewType
+}) {
+  const descriptionId = (0,external_wp_element_namespaceObject.useId)();
+  const isUserPattern = item.type === PATTERN_TYPES.user;
+  const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
+  const isEmpty = !item.blocks?.length;
+  const [backgroundColor] = page_patterns_useGlobalStyle('color.background');
+  const {
+    onClick
+  } = useLink({
+    postType: item.type,
+    postId: isUserPattern ? item.id : item.name,
+    canvas: 'edit'
+  });
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+    className: `page-patterns-preview-field is-viewtype-${viewType}`,
+    style: {
+      backgroundColor
+    },
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(PreviewWrapper, {
+      item: item,
+      onClick: onClick,
+      ariaDescribedBy: item.description ? descriptionId : undefined,
+      children: [isEmpty && isTemplatePart && (0,external_wp_i18n_namespaceObject.__)('Empty template part'), isEmpty && !isTemplatePart && (0,external_wp_i18n_namespaceObject.__)('Empty pattern'), !isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Async, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview, {
+          blocks: item.blocks,
+          viewportWidth: item.viewportWidth
+        })
+      })]
+    }), item.description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      hidden: true,
+      id: descriptionId,
+      children: item.description
+    })]
+  });
+}
+function Author({
+  item,
+  viewType
+}) {
+  const [isImageLoaded, setIsImageLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
+  const {
+    text,
+    icon,
+    imageUrl
+  } = useAddedBy(item.type, item.id);
+  const withIcon = viewType !== LAYOUT_LIST;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+    alignment: "left",
+    spacing: 1,
+    children: [withIcon && imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: dist_clsx('page-templates-author-field__avatar', {
+        'is-loaded': isImageLoaded
+      }),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
+        onLoad: () => setIsImageLoaded(true),
+        alt: "",
+        src: imageUrl
+      })
+    }), withIcon && !imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "page-templates-author-field__icon",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
+        icon: icon
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+      className: "page-templates-author-field__name",
+      children: text
+    })]
+  });
+}
+function Title({
+  item
+}) {
+  const isUserPattern = item.type === PATTERN_TYPES.user;
+  const {
+    onClick
+  } = useLink({
+    postType: item.type,
+    postId: isUserPattern ? item.id : item.name,
+    canvas: 'edit'
+  });
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+    alignment: "center",
+    justify: "flex-start",
+    spacing: 2,
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
+      as: "div",
+      gap: 0,
+      justify: "left",
+      className: "edit-site-patterns__pattern-title",
+      children: item.type === PATTERN_TYPES.theme ? item.title : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+        variant: "link",
+        onClick: onClick
+        // Required for the grid's roving tab index system.
+        // See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.
+        ,
+        tabIndex: "-1",
+        children: item.title || item.name
+      })
+    }), item.type === PATTERN_TYPES.theme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, {
+      placement: "top",
+      text: (0,external_wp_i18n_namespaceObject.__)('This pattern cannot be edited.'),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
+        className: "edit-site-patterns__pattern-lock-icon",
+        icon: lock_small,
+        size: 24
+      })
+    })]
+  });
+}
+function DataviewsPatterns() {
+  const {
+    params: {
+      postType,
+      categoryId: categoryIdFromURL
+    }
+  } = page_patterns_useLocation();
+  const type = postType || PATTERN_TYPES.user;
+  const categoryId = categoryIdFromURL || PATTERN_DEFAULT_CATEGORY;
+  const [view, setView] = (0,external_wp_element_namespaceObject.useState)(DEFAULT_VIEW);
+  const previousCategoryId = (0,external_wp_compose_namespaceObject.usePrevious)(categoryId);
+  const viewSyncStatus = view.filters?.find(({
+    field
+  }) => field === 'sync-status')?.value;
+  const {
+    patterns,
+    isResolving
+  } = use_patterns(type, categoryId, {
+    search: view.search,
+    syncStatus: viewSyncStatus
+  });
+  const {
+    records
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_PART_POST_TYPE, {
+    per_page: -1
+  });
+  const authors = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!records) {
+      return page_patterns_EMPTY_ARRAY;
+    }
+    const authorsSet = new Set();
+    records.forEach(template => {
+      authorsSet.add(template.author_text);
+    });
+    return Array.from(authorsSet).map(author => ({
+      value: author,
+      label: author
+    }));
+  }, [records]);
+  const fields = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const _fields = [{
+      header: (0,external_wp_i18n_namespaceObject.__)('Preview'),
+      id: 'preview',
+      render: ({
+        item
+      }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Preview, {
+        item: item,
+        viewType: view.type
+      }),
+      enableSorting: false,
+      enableHiding: false,
+      width: '1%'
+    }, {
+      header: (0,external_wp_i18n_namespaceObject.__)('Title'),
+      id: 'title',
+      render: ({
+        item
+      }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Title, {
+        item: item
+      }),
+      enableHiding: false
+    }];
+    if (type === PATTERN_TYPES.user) {
+      _fields.push({
+        header: (0,external_wp_i18n_namespaceObject.__)('Sync status'),
+        id: 'sync-status',
+        render: ({
+          item
+        }) => {
+          // User patterns can have their sync statuses checked directly.
+          // Non-user patterns are all unsynced for the time being.
+          return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+            className: `edit-site-patterns__field-sync-status-${item.syncStatus}`,
+            children: (SYNC_FILTERS.find(({
+              value
+            }) => value === item.syncStatus) || SYNC_FILTERS.find(({
+              value
+            }) => value === PATTERN_SYNC_TYPES.unsynced)).label
+          });
+        },
+        elements: SYNC_FILTERS,
+        filterBy: {
+          operators: [OPERATOR_IS],
+          isPrimary: true
+        },
+        enableSorting: false
+      });
+    } else if (type === TEMPLATE_PART_POST_TYPE) {
+      _fields.push({
+        header: (0,external_wp_i18n_namespaceObject.__)('Author'),
+        id: 'author',
+        getValue: ({
+          item
+        }) => item.templatePart.author_text,
+        render: ({
+          item
+        }) => {
+          return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Author, {
+            viewType: view.type,
+            item: item
+          });
+        },
+        elements: authors,
+        filterBy: {
+          isPrimary: true
+        },
+        width: '1%'
+      });
+    }
+    return _fields;
+  }, [view.type, type, authors]);
+
+  // Reset the page number when the category changes.
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (previousCategoryId !== categoryId) {
+      setView(DEFAULT_VIEW);
+    }
+  }, [categoryId, previousCategoryId]);
+  const {
+    data,
+    paginationInfo
+  } = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    // Search is managed server-side as well as filters for patterns.
+    // However, the author filter in template parts is done client-side.
+    const viewWithoutFilters = {
+      ...view
+    };
+    delete viewWithoutFilters.search;
+    if (type !== TEMPLATE_PART_POST_TYPE) {
+      viewWithoutFilters.filters = [];
+    }
+    return filterSortAndPaginate(patterns, viewWithoutFilters, fields);
+  }, [patterns, view, fields, type]);
+  const templatePartActions = page_patterns_usePostActions({
+    postType: TEMPLATE_PART_POST_TYPE,
+    context: 'list'
+  });
+  const patternActions = page_patterns_usePostActions({
+    postType: PATTERN_TYPES.user,
+    context: 'list'
+  });
+  const editAction = useEditPostAction();
+  const actions = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (type === TEMPLATE_PART_POST_TYPE) {
+      return [editAction, ...templatePartActions].filter(Boolean);
+    }
+    return [editAction, ...patternActions].filter(Boolean);
+  }, [editAction, type, templatePartActions, patternActions]);
+  const onChangeView = (0,external_wp_element_namespaceObject.useCallback)(newView => {
+    if (newView.type !== view.type) {
+      newView = {
+        ...newView,
+        layout: {
+          ...defaultConfigPerViewType[newView.type]
+        }
+      };
+    }
+    setView(newView);
+  }, [view.type, setView]);
+  const id = (0,external_wp_element_namespaceObject.useId)();
+  const settings = usePatternSettings();
+  // Wrap everything in a block editor provider.
+  // This ensures 'styles' that are needed for the previews are synced
+  // from the site editor store to the block editor store.
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_patterns_ExperimentalBlockEditorProvider, {
+    settings: settings,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Page, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Patterns content'),
+      className: "edit-site-page-patterns-dataviews",
+      hideTitleFromUI: true,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PatternsHeader, {
+        categoryId: categoryId,
+        type: type,
+        titleId: `${id}-title`,
+        descriptionId: `${id}-description`
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViews, {
+        paginationInfo: paginationInfo,
+        fields: fields,
+        actions: actions,
+        data: data || page_patterns_EMPTY_ARRAY,
+        getItemId: item => item.name,
+        isLoading: isResolving,
+        view: view,
+        onChangeView: onChangeView,
+        supportedLayouts: [LAYOUT_GRID, LAYOUT_TABLE]
+      })]
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/home.js
+/**
+ * WordPress dependencies
+ */
+
+
+const home = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z"
+  })
+});
+/* harmony default export */ const library_home = (home);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/verse.js
+/**
+ * WordPress dependencies
+ */
+
+
+const verse = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M17.8 2l-.9.3c-.1 0-3.6 1-5.2 2.1C10 5.5 9.3 6.5 8.9 7.1c-.6.9-1.7 4.7-1.7 6.3l-.9 2.3c-.2.4 0 .8.4 1 .1 0 .2.1.3.1.3 0 .6-.2.7-.5l.6-1.5c.3 0 .7-.1 1.2-.2.7-.1 1.4-.3 2.2-.5.8-.2 1.6-.5 2.4-.8.7-.3 1.4-.7 1.9-1.2s.8-1.2 1-1.9c.2-.7.3-1.6.4-2.4.1-.8.1-1.7.2-2.5 0-.8.1-1.5.2-2.1V2zm-1.9 5.6c-.1.8-.2 1.5-.3 2.1-.2.6-.4 1-.6 1.3-.3.3-.8.6-1.4.9-.7.3-1.4.5-2.2.8-.6.2-1.3.3-1.8.4L15 7.5c.3-.3.6-.7 1-1.1 0 .4 0 .8-.1 1.2zM6 20h8v-1.5H6V20z"
+  })
+});
+/* harmony default export */ const library_verse = (verse);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pin.js
+/**
+ * WordPress dependencies
+ */
+
+
+const pin = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "m21.5 9.1-6.6-6.6-4.2 5.6c-1.2-.1-2.4.1-3.6.7-.1 0-.1.1-.2.1-.5.3-.9.6-1.2.9l3.7 3.7-5.7 5.7v1.1h1.1l5.7-5.7 3.7 3.7c.4-.4.7-.8.9-1.2.1-.1.1-.2.2-.3.6-1.1.8-2.4.6-3.6l5.6-4.1zm-7.3 3.5.1.9c.1.9 0 1.8-.4 2.6l-6-6c.8-.4 1.7-.5 2.6-.4l.9.1L15 4.9 19.1 9l-4.9 3.6z"
+  })
+});
+/* harmony default export */ const library_pin = (pin);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/archive.js
+/**
+ * WordPress dependencies
+ */
+
+
+const archive = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    clipRule: "evenodd",
+    d: "M11.934 7.406a1 1 0 0 0 .914.594H19a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5.764a.5.5 0 0 1 .447.276l.723 1.63Zm1.064-1.216a.5.5 0 0 0 .462.31H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.764a2 2 0 0 1 1.789 1.106l.445 1.084ZM8.5 10.5h7V12h-7v-1.5Zm7 3.5h-7v1.5h7V14Z"
+  })
+});
+/* harmony default export */ const library_archive = (archive);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/not-found.js
+/**
+ * WordPress dependencies
+ */
+
+
+const notFound = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M19 5H5c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm.5 12c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v10zm-11-7.6h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-.9 3.5H6.3l1.2-1.7v1.7zm5.6-3.2c-.4-.2-.8-.4-1.2-.4-.5 0-.9.1-1.2.4-.4.2-.6.6-.8 1-.2.4-.3.9-.3 1.5s.1 1.1.3 1.6c.2.4.5.8.8 1 .4.2.8.4 1.2.4.5 0 .9-.1 1.2-.4.4-.2.6-.6.8-1 .2-.4.3-1 .3-1.6 0-.6-.1-1.1-.3-1.5-.1-.5-.4-.8-.8-1zm0 3.6c-.1.3-.3.5-.5.7-.2.1-.4.2-.7.2-.3 0-.5-.1-.7-.2-.2-.1-.4-.4-.5-.7-.1-.3-.2-.7-.2-1.2 0-.7.1-1.2.4-1.5.3-.3.6-.5 1-.5s.7.2 1 .5c.3.3.4.8.4 1.5-.1.5-.1.9-.2 1.2zm5-3.9h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-1 3.5H16l1.2-1.7v1.7z"
+  })
+});
+/* harmony default export */ const not_found = (notFound);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/list.js
+/**
+ * WordPress dependencies
+ */
+
+
+const list = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M4 4v1.5h16V4H4zm8 8.5h8V11h-8v1.5zM4 20h16v-1.5H4V20zm4-8c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2z"
+  })
+});
+/* harmony default export */ const library_list = (list);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/block-meta.js
+/**
+ * WordPress dependencies
+ */
+
+
+const blockMeta = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    d: "M8.95 11.25H4v1.5h4.95v4.5H13V18c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75h-2.55v-7.5H13V9c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75H8.95v4.5ZM14.5 15v3c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5Zm0-6V6c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5Z",
+    clipRule: "evenodd"
+  })
+});
+/* harmony default export */ const block_meta = (blockMeta);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/calendar.js
+/**
+ * WordPress dependencies
+ */
+
+
+const calendar = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7h15v12zM9 10H7v2h2v-2zm0 4H7v2h2v-2zm4-4h-2v2h2v-2zm4 0h-2v2h2v-2zm-4 4h-2v2h2v-2zm4 0h-2v2h2v-2z"
+  })
+});
+/* harmony default export */ const library_calendar = (calendar);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/tag.js
+/**
+ * WordPress dependencies
+ */
+
+
+const tag = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M4.75 4a.75.75 0 0 0-.75.75v7.826c0 .2.08.39.22.53l6.72 6.716a2.313 2.313 0 0 0 3.276-.001l5.61-5.611-.531-.53.532.528a2.315 2.315 0 0 0 0-3.264L13.104 4.22a.75.75 0 0 0-.53-.22H4.75ZM19 12.576a.815.815 0 0 1-.236.574l-5.61 5.611a.814.814 0 0 1-1.153 0L5.5 12.264V5.5h6.763l6.5 6.502a.816.816 0 0 1 .237.574ZM8.75 9.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"
+  })
+});
+/* harmony default export */ const library_tag = (tag);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/media.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+const media = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "m7 6.5 4 2.5-4 2.5z"
+  }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    clipRule: "evenodd",
+    d: "m5 3c-1.10457 0-2 .89543-2 2v14c0 1.1046.89543 2 2 2h14c1.1046 0 2-.8954 2-2v-14c0-1.10457-.8954-2-2-2zm14 1.5h-14c-.27614 0-.5.22386-.5.5v10.7072l3.62953-2.6465c.25108-.1831.58905-.1924.84981-.0234l2.92666 1.8969 3.5712-3.4719c.2911-.2831.7545-.2831 1.0456 0l2.9772 2.8945v-9.3568c0-.27614-.2239-.5-.5-.5zm-14.5 14.5v-1.4364l4.09643-2.987 2.99567 1.9417c.2936.1903.6798.1523.9307-.0917l3.4772-3.3806 3.4772 3.3806.0228-.0234v2.5968c0 .2761-.2239.5-.5.5h-14c-.27614 0-.5-.2239-.5-.5z"
+  })]
+});
+/* harmony default export */ const library_media = (media);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post.js
+/**
+ * WordPress dependencies
+ */
+
+
+const post_post = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "m7.3 9.7 1.4 1.4c.2-.2.3-.3.4-.5 0 0 0-.1.1-.1.3-.5.4-1.1.3-1.6L12 7 9 4 7.2 6.5c-.6-.1-1.1 0-1.6.3 0 0-.1 0-.1.1-.3.1-.4.2-.6.4l1.4 1.4L4 11v1h1l2.3-2.3zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z"
+  })
+});
+/* harmony default export */ const library_post = (post_post);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/utils.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+const EMPTY_OBJECT = {};
+
+/**
+ * @typedef IHasNameAndId
+ * @property {string|number} id   The entity's id.
+ * @property {string}        name The entity's name.
+ */
+
+const utils_getValueFromObjectPath = (object, path) => {
+  let value = object;
+  path.split('.').forEach(fieldName => {
+    value = value?.[fieldName];
+  });
+  return value;
+};
+
+/**
+ * Helper util to map records to add a `name` prop from a
+ * provided path, in order to handle all entities in the same
+ * fashion(implementing`IHasNameAndId` interface).
+ *
+ * @param {Object[]} entities The array of entities.
+ * @param {string}   path     The path to map a `name` property from the entity.
+ * @return {IHasNameAndId[]} An array of enitities that now implement the `IHasNameAndId` interface.
+ */
+const mapToIHasNameAndId = (entities, path) => {
+  return (entities || []).map(entity => ({
+    ...entity,
+    name: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(utils_getValueFromObjectPath(entity, path))
+  }));
+};
+
+/**
+ * @typedef {Object} EntitiesInfo
+ * @property {boolean}  hasEntities         If an entity has available records(posts, terms, etc..).
+ * @property {number[]} existingEntitiesIds An array of the existing entities ids.
+ */
+
+const useExistingTemplates = () => {
+  return (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', TEMPLATE_POST_TYPE, {
+    per_page: -1
+  }), []);
+};
+const useDefaultTemplateTypes = () => {
+  return (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplateTypes(), []);
+};
+const usePublicPostTypes = () => {
+  const postTypes = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostTypes({
+    per_page: -1
+  }), []);
+  return (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const excludedPostTypes = ['attachment'];
+    return postTypes?.filter(({
+      viewable,
+      slug
+    }) => viewable && !excludedPostTypes.includes(slug));
+  }, [postTypes]);
+};
+const usePublicTaxonomies = () => {
+  const taxonomies = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getTaxonomies({
+    per_page: -1
+  }), []);
+  return (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return taxonomies?.filter(({
+      visibility
+    }) => visibility?.publicly_queryable);
+  }, [taxonomies]);
+};
+function usePostTypeArchiveMenuItems() {
+  const publicPostTypes = usePublicPostTypes();
+  const postTypesWithArchives = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.filter(postType => postType.has_archive), [publicPostTypes]);
+  const existingTemplates = useExistingTemplates();
+  // We need to keep track of naming conflicts. If a conflict
+  // occurs, we need to add slug.
+  const postTypeLabels = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.reduce((accumulator, {
+    labels
+  }) => {
+    const singularName = labels.singular_name.toLowerCase();
+    accumulator[singularName] = (accumulator[singularName] || 0) + 1;
+    return accumulator;
+  }, {}), [publicPostTypes]);
+  const needsUniqueIdentifier = (0,external_wp_element_namespaceObject.useCallback)(({
+    labels,
+    slug
+  }) => {
+    const singularName = labels.singular_name.toLowerCase();
+    return postTypeLabels[singularName] > 1 && singularName !== slug;
+  }, [postTypeLabels]);
+  return (0,external_wp_element_namespaceObject.useMemo)(() => postTypesWithArchives?.filter(postType => !(existingTemplates || []).some(existingTemplate => existingTemplate.slug === 'archive-' + postType.slug)).map(postType => {
+    let title;
+    if (needsUniqueIdentifier(postType)) {
+      title = (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %1s: Name of the post type e.g: "Post"; %2s: Slug of the post type e.g: "book".
+      (0,external_wp_i18n_namespaceObject.__)('Archive: %1$s (%2$s)'), postType.labels.singular_name, postType.slug);
+    } else {
+      title = (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: Name of the post type e.g: "Post".
+      (0,external_wp_i18n_namespaceObject.__)('Archive: %s'), postType.labels.singular_name);
+    }
+    return {
+      slug: 'archive-' + postType.slug,
+      description: (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: Name of the post type e.g: "Post".
+      (0,external_wp_i18n_namespaceObject.__)('Displays an archive with the latest posts of type: %s.'), postType.labels.singular_name),
+      title,
+      // `icon` is the `menu_icon` property of a post type. We
+      // only handle `dashicons` for now, even if the `menu_icon`
+      // also supports urls and svg as values.
+      icon: typeof postType.icon === 'string' && postType.icon.startsWith('dashicons-') ? postType.icon.slice(10) : library_archive,
+      templatePrefix: 'archive'
+    };
+  }) || [], [postTypesWithArchives, existingTemplates, needsUniqueIdentifier]);
+}
+const usePostTypeMenuItems = onClickMenuItem => {
+  const publicPostTypes = usePublicPostTypes();
+  const existingTemplates = useExistingTemplates();
+  const defaultTemplateTypes = useDefaultTemplateTypes();
+  // We need to keep track of naming conflicts. If a conflict
+  // occurs, we need to add slug.
+  const templateLabels = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.reduce((accumulator, {
+    labels
+  }) => {
+    const templateName = (labels.template_name || labels.singular_name).toLowerCase();
+    accumulator[templateName] = (accumulator[templateName] || 0) + 1;
+    return accumulator;
+  }, {}), [publicPostTypes]);
+  const needsUniqueIdentifier = (0,external_wp_element_namespaceObject.useCallback)(({
+    labels,
+    slug
+  }) => {
+    const templateName = (labels.template_name || labels.singular_name).toLowerCase();
+    return templateLabels[templateName] > 1 && templateName !== slug;
+  }, [templateLabels]);
+
+  // `page`is a special case in template hierarchy.
+  const templatePrefixes = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.reduce((accumulator, {
+    slug
+  }) => {
+    let suffix = slug;
+    if (slug !== 'page') {
+      suffix = `single-${suffix}`;
+    }
+    accumulator[slug] = suffix;
+    return accumulator;
+  }, {}), [publicPostTypes]);
+  const postTypesInfo = useEntitiesInfo('postType', templatePrefixes);
+  const existingTemplateSlugs = (existingTemplates || []).map(({
+    slug
+  }) => slug);
+  const menuItems = (publicPostTypes || []).reduce((accumulator, postType) => {
+    const {
+      slug,
+      labels,
+      icon
+    } = postType;
+    // We need to check if the general template is part of the
+    // defaultTemplateTypes. If it is, just use that info and
+    // augment it with the specific template functionality.
+    const generalTemplateSlug = templatePrefixes[slug];
+    const defaultTemplateType = defaultTemplateTypes?.find(({
+      slug: _slug
+    }) => _slug === generalTemplateSlug);
+    const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug);
+    const _needsUniqueIdentifier = needsUniqueIdentifier(postType);
+    let menuItemTitle = labels.template_name || (0,external_wp_i18n_namespaceObject.sprintf)(
+    // translators: %s: Name of the post type e.g: "Post".
+    (0,external_wp_i18n_namespaceObject.__)('Single item: %s'), labels.singular_name);
+    if (_needsUniqueIdentifier) {
+      menuItemTitle = labels.template_name ? (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %1s: Name of the template e.g: "Single Item: Post"; %2s: Slug of the post type e.g: "book".
+      (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), labels.template_name, slug) : (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %1s: Name of the post type e.g: "Post"; %2s: Slug of the post type e.g: "book".
+      (0,external_wp_i18n_namespaceObject.__)('Single item: %1$s (%2$s)'), labels.singular_name, slug);
+    }
+    const menuItem = defaultTemplateType ? {
+      ...defaultTemplateType,
+      templatePrefix: templatePrefixes[slug]
+    } : {
+      slug: generalTemplateSlug,
+      title: menuItemTitle,
+      description: (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: Name of the post type e.g: "Post".
+      (0,external_wp_i18n_namespaceObject.__)('Displays a single item: %s.'), labels.singular_name),
+      // `icon` is the `menu_icon` property of a post type. We
+      // only handle `dashicons` for now, even if the `menu_icon`
+      // also supports urls and svg as values.
+      icon: typeof icon === 'string' && icon.startsWith('dashicons-') ? icon.slice(10) : library_post,
+      templatePrefix: templatePrefixes[slug]
+    };
+    const hasEntities = postTypesInfo?.[slug]?.hasEntities;
+    // We have a different template creation flow only if they have entities.
+    if (hasEntities) {
+      menuItem.onClick = template => {
+        onClickMenuItem({
+          type: 'postType',
+          slug,
+          config: {
+            recordNamePath: 'title.rendered',
+            queryArgs: ({
+              search
+            }) => {
+              return {
+                _fields: 'id,title,slug,link',
+                orderBy: search ? 'relevance' : 'modified',
+                exclude: postTypesInfo[slug].existingEntitiesIds
+              };
+            },
+            getSpecificTemplate: suggestion => {
+              const templateSlug = `${templatePrefixes[slug]}-${suggestion.slug}`;
+              return {
+                title: templateSlug,
+                slug: templateSlug,
+                templatePrefix: templatePrefixes[slug]
+              };
+            }
+          },
+          labels,
+          hasGeneralTemplate,
+          template
+        });
+      };
+    }
+    // We don't need to add the menu item if there are no
+    // entities and the general template exists.
+    if (!hasGeneralTemplate || hasEntities) {
+      accumulator.push(menuItem);
+    }
+    return accumulator;
+  }, []);
+  // Split menu items into two groups: one for the default post types
+  // and one for the rest.
+  const postTypesMenuItems = (0,external_wp_element_namespaceObject.useMemo)(() => menuItems.reduce((accumulator, postType) => {
+    const {
+      slug
+    } = postType;
+    let key = 'postTypesMenuItems';
+    if (slug === 'page') {
+      key = 'defaultPostTypesMenuItems';
+    }
+    accumulator[key].push(postType);
+    return accumulator;
+  }, {
+    defaultPostTypesMenuItems: [],
+    postTypesMenuItems: []
+  }), [menuItems]);
+  return postTypesMenuItems;
+};
+const useTaxonomiesMenuItems = onClickMenuItem => {
+  const publicTaxonomies = usePublicTaxonomies();
+  const existingTemplates = useExistingTemplates();
+  const defaultTemplateTypes = useDefaultTemplateTypes();
+  // `category` and `post_tag` are special cases in template hierarchy.
+  const templatePrefixes = (0,external_wp_element_namespaceObject.useMemo)(() => publicTaxonomies?.reduce((accumulator, {
+    slug
+  }) => {
+    let suffix = slug;
+    if (!['category', 'post_tag'].includes(slug)) {
+      suffix = `taxonomy-${suffix}`;
+    }
+    if (slug === 'post_tag') {
+      suffix = `tag`;
+    }
+    accumulator[slug] = suffix;
+    return accumulator;
+  }, {}), [publicTaxonomies]);
+  // We need to keep track of naming conflicts. If a conflict
+  // occurs, we need to add slug.
+  const taxonomyLabels = publicTaxonomies?.reduce((accumulator, {
+    labels
+  }) => {
+    const templateName = (labels.template_name || labels.singular_name).toLowerCase();
+    accumulator[templateName] = (accumulator[templateName] || 0) + 1;
+    return accumulator;
+  }, {});
+  const needsUniqueIdentifier = (labels, slug) => {
+    if (['category', 'post_tag'].includes(slug)) {
+      return false;
+    }
+    const templateName = (labels.template_name || labels.singular_name).toLowerCase();
+    return taxonomyLabels[templateName] > 1 && templateName !== slug;
+  };
+  const taxonomiesInfo = useEntitiesInfo('taxonomy', templatePrefixes);
+  const existingTemplateSlugs = (existingTemplates || []).map(({
+    slug
+  }) => slug);
+  const menuItems = (publicTaxonomies || []).reduce((accumulator, taxonomy) => {
+    const {
+      slug,
+      labels
+    } = taxonomy;
+    // We need to check if the general template is part of the
+    // defaultTemplateTypes. If it is, just use that info and
+    // augment it with the specific template functionality.
+    const generalTemplateSlug = templatePrefixes[slug];
+    const defaultTemplateType = defaultTemplateTypes?.find(({
+      slug: _slug
+    }) => _slug === generalTemplateSlug);
+    const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug);
+    const _needsUniqueIdentifier = needsUniqueIdentifier(labels, slug);
+    let menuItemTitle = labels.template_name || labels.singular_name;
+    if (_needsUniqueIdentifier) {
+      menuItemTitle = labels.template_name ? (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %1s: Name of the template e.g: "Products by Category"; %2s: Slug of the taxonomy e.g: "product_cat".
+      (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), labels.template_name, slug) : (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %1s: Name of the taxonomy e.g: "Category"; %2s: Slug of the taxonomy e.g: "product_cat".
+      (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), labels.singular_name, slug);
+    }
+    const menuItem = defaultTemplateType ? {
+      ...defaultTemplateType,
+      templatePrefix: templatePrefixes[slug]
+    } : {
+      slug: generalTemplateSlug,
+      title: menuItemTitle,
+      description: (0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: Name of the taxonomy e.g: "Product Categories".
+      (0,external_wp_i18n_namespaceObject.__)('Displays taxonomy: %s.'), labels.singular_name),
+      icon: block_meta,
+      templatePrefix: templatePrefixes[slug]
+    };
+    const hasEntities = taxonomiesInfo?.[slug]?.hasEntities;
+    // We have a different template creation flow only if they have entities.
+    if (hasEntities) {
+      menuItem.onClick = template => {
+        onClickMenuItem({
+          type: 'taxonomy',
+          slug,
+          config: {
+            queryArgs: ({
+              search
+            }) => {
+              return {
+                _fields: 'id,name,slug,link',
+                orderBy: search ? 'name' : 'count',
+                exclude: taxonomiesInfo[slug].existingEntitiesIds
+              };
+            },
+            getSpecificTemplate: suggestion => {
+              const templateSlug = `${templatePrefixes[slug]}-${suggestion.slug}`;
+              return {
+                title: templateSlug,
+                slug: templateSlug,
+                templatePrefix: templatePrefixes[slug]
+              };
+            }
+          },
+          labels,
+          hasGeneralTemplate,
+          template
+        });
+      };
+    }
+    // We don't need to add the menu item if there are no
+    // entities and the general template exists.
+    if (!hasGeneralTemplate || hasEntities) {
+      accumulator.push(menuItem);
+    }
+    return accumulator;
+  }, []);
+  // Split menu items into two groups: one for the default taxonomies
+  // and one for the rest.
+  const taxonomiesMenuItems = (0,external_wp_element_namespaceObject.useMemo)(() => menuItems.reduce((accumulator, taxonomy) => {
+    const {
+      slug
+    } = taxonomy;
+    let key = 'taxonomiesMenuItems';
+    if (['category', 'tag'].includes(slug)) {
+      key = 'defaultTaxonomiesMenuItems';
+    }
+    accumulator[key].push(taxonomy);
+    return accumulator;
+  }, {
+    defaultTaxonomiesMenuItems: [],
+    taxonomiesMenuItems: []
+  }), [menuItems]);
+  return taxonomiesMenuItems;
+};
+const USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = {
+  user: 'author'
+};
+const USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = {
+  user: {
+    who: 'authors'
+  }
+};
+function useAuthorMenuItem(onClickMenuItem) {
+  const existingTemplates = useExistingTemplates();
+  const defaultTemplateTypes = useDefaultTemplateTypes();
+  const authorInfo = useEntitiesInfo('root', USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX, USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS);
+  let authorMenuItem = defaultTemplateTypes?.find(({
+    slug
+  }) => slug === 'author');
+  if (!authorMenuItem) {
+    authorMenuItem = {
+      description: (0,external_wp_i18n_namespaceObject.__)('Displays latest posts written by a single author.'),
+      slug: 'author',
+      title: 'Author'
+    };
+  }
+  const hasGeneralTemplate = !!existingTemplates?.find(({
+    slug
+  }) => slug === 'author');
+  if (authorInfo.user?.hasEntities) {
+    authorMenuItem = {
+      ...authorMenuItem,
+      templatePrefix: 'author'
+    };
+    authorMenuItem.onClick = template => {
+      onClickMenuItem({
+        type: 'root',
+        slug: 'user',
+        config: {
+          queryArgs: ({
+            search
+          }) => {
+            return {
+              _fields: 'id,name,slug,link',
+              orderBy: search ? 'name' : 'registered_date',
+              exclude: authorInfo.user.existingEntitiesIds,
+              who: 'authors'
+            };
+          },
+          getSpecificTemplate: suggestion => {
+            const templateSlug = `author-${suggestion.slug}`;
+            return {
+              title: templateSlug,
+              slug: templateSlug,
+              templatePrefix: 'author'
+            };
+          }
+        },
+        labels: {
+          singular_name: (0,external_wp_i18n_namespaceObject.__)('Author'),
+          search_items: (0,external_wp_i18n_namespaceObject.__)('Search Authors'),
+          not_found: (0,external_wp_i18n_namespaceObject.__)('No authors found.'),
+          all_items: (0,external_wp_i18n_namespaceObject.__)('All Authors')
+        },
+        hasGeneralTemplate,
+        template
+      });
+    };
+  }
+  if (!hasGeneralTemplate || authorInfo.user?.hasEntities) {
+    return authorMenuItem;
+  }
+}
+
+/**
+ * Helper hook that filters all the existing templates by the given
+ * object with the entity's slug as key and the template prefix as value.
+ *
+ * Example:
+ * `existingTemplates` is: [ { slug: 'tag-apple' }, { slug: 'page-about' }, { slug: 'tag' } ]
+ * `templatePrefixes` is: { post_tag: 'tag' }
+ * It will return: { post_tag: ['apple'] }
+ *
+ * Note: We append the `-` to the given template prefix in this function for our checks.
+ *
+ * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.
+ * @return {Record<string,string[]>} An object with the entity's slug as key and an array with the existing template slugs as value.
+ */
+const useExistingTemplateSlugs = templatePrefixes => {
+  const existingTemplates = useExistingTemplates();
+  const existingSlugs = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return Object.entries(templatePrefixes || {}).reduce((accumulator, [slug, prefix]) => {
+      const slugsWithTemplates = (existingTemplates || []).reduce((_accumulator, existingTemplate) => {
+        const _prefix = `${prefix}-`;
+        if (existingTemplate.slug.startsWith(_prefix)) {
+          _accumulator.push(existingTemplate.slug.substring(_prefix.length));
+        }
+        return _accumulator;
+      }, []);
+      if (slugsWithTemplates.length) {
+        accumulator[slug] = slugsWithTemplates;
+      }
+      return accumulator;
+    }, {});
+  }, [templatePrefixes, existingTemplates]);
+  return existingSlugs;
+};
+
+/**
+ * Helper hook that finds the existing records with an associated template,
+ * as they need to be excluded from the template suggestions.
+ *
+ * @param {string}                entityName                The entity's name.
+ * @param {Record<string,string>} templatePrefixes          An object with the entity's slug as key and the template prefix as value.
+ * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.
+ * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value.
+ */
+const useTemplatesToExclude = (entityName, templatePrefixes, additionalQueryParameters = {}) => {
+  const slugsToExcludePerEntity = useExistingTemplateSlugs(templatePrefixes);
+  const recordsToExcludePerEntity = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    return Object.entries(slugsToExcludePerEntity || {}).reduce((accumulator, [slug, slugsWithTemplates]) => {
+      const entitiesWithTemplates = select(external_wp_coreData_namespaceObject.store).getEntityRecords(entityName, slug, {
+        _fields: 'id',
+        context: 'view',
+        slug: slugsWithTemplates,
+        ...additionalQueryParameters[slug]
+      });
+      if (entitiesWithTemplates?.length) {
+        accumulator[slug] = entitiesWithTemplates;
+      }
+      return accumulator;
+    }, {});
+  }, [slugsToExcludePerEntity]);
+  return recordsToExcludePerEntity;
+};
+
+/**
+ * Helper hook that returns information about an entity having
+ * records that we can create a specific template for.
+ *
+ * For example we can search for `terms` in `taxonomy` entity or
+ * `posts` in `postType` entity.
+ *
+ * First we need to find the existing records with an associated template,
+ * to query afterwards for any remaining record, by excluding them.
+ *
+ * @param {string}                entityName                The entity's name.
+ * @param {Record<string,string>} templatePrefixes          An object with the entity's slug as key and the template prefix as value.
+ * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.
+ * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.
+ */
+const useEntitiesInfo = (entityName, templatePrefixes, additionalQueryParameters = EMPTY_OBJECT) => {
+  const recordsToExcludePerEntity = useTemplatesToExclude(entityName, templatePrefixes, additionalQueryParameters);
+  const entitiesHasRecords = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => {
+      const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({
+        id
+      }) => id) || [];
+      accumulator[slug] = !!select(external_wp_coreData_namespaceObject.store).getEntityRecords(entityName, slug, {
+        per_page: 1,
+        _fields: 'id',
+        context: 'view',
+        exclude: existingEntitiesIds,
+        ...additionalQueryParameters[slug]
+      })?.length;
+      return accumulator;
+    }, {});
+  }, [templatePrefixes, recordsToExcludePerEntity, entityName, additionalQueryParameters]);
+  const entitiesInfo = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => {
+      const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({
+        id
+      }) => id) || [];
+      accumulator[slug] = {
+        hasEntities: entitiesHasRecords[slug],
+        existingEntitiesIds
+      };
+      return accumulator;
+    }, {});
+  }, [templatePrefixes, recordsToExcludePerEntity, entitiesHasRecords]);
+  return entitiesInfo;
+};
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/add-custom-template-modal-content.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  CompositeV2: add_custom_template_modal_content_Composite,
+  CompositeItemV2: add_custom_template_modal_content_CompositeItem,
+  useCompositeStoreV2: add_custom_template_modal_content_useCompositeStore
+} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
+const add_custom_template_modal_content_EMPTY_ARRAY = [];
+function SuggestionListItem({
+  suggestion,
+  search,
+  onSelect,
+  entityForSuggestions
+}) {
+  const baseCssClass = 'edit-site-custom-template-modal__suggestions_list__list-item';
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(add_custom_template_modal_content_CompositeItem, {
+    render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+      role: "option",
+      className: baseCssClass,
+      onClick: () => onSelect(entityForSuggestions.config.getSpecificTemplate(suggestion))
+    }),
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+      size: "body",
+      lineHeight: 1.53846153846 // 20px
+      ,
+      weight: 500,
+      className: `${baseCssClass}__title`,
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextHighlight, {
+        text: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(suggestion.name),
+        highlight: search
+      })
+    }), suggestion.link && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+      size: "body",
+      lineHeight: 1.53846153846 // 20px
+      ,
+      className: `${baseCssClass}__info`,
+      children: suggestion.link
+    })]
+  });
+}
+function useSearchSuggestions(entityForSuggestions, search) {
+  const {
+    config
+  } = entityForSuggestions;
+  const query = (0,external_wp_element_namespaceObject.useMemo)(() => ({
+    order: 'asc',
+    context: 'view',
+    search,
+    per_page: search ? 20 : 10,
+    ...config.queryArgs(search)
+  }), [search, config]);
+  const {
+    records: searchResults,
+    hasResolved: searchHasResolved
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecords)(entityForSuggestions.type, entityForSuggestions.slug, query);
+  const [suggestions, setSuggestions] = (0,external_wp_element_namespaceObject.useState)(add_custom_template_modal_content_EMPTY_ARRAY);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (!searchHasResolved) {
+      return;
+    }
+    let newSuggestions = add_custom_template_modal_content_EMPTY_ARRAY;
+    if (searchResults?.length) {
+      newSuggestions = searchResults;
+      if (config.recordNamePath) {
+        newSuggestions = mapToIHasNameAndId(newSuggestions, config.recordNamePath);
+      }
+    }
+    // Update suggestions only when the query has resolved, so as to keep
+    // the previous results in the UI.
+    setSuggestions(newSuggestions);
+  }, [searchResults, searchHasResolved]);
+  return suggestions;
+}
+function SuggestionList({
+  entityForSuggestions,
+  onSelect
+}) {
+  const composite = add_custom_template_modal_content_useCompositeStore({
+    orientation: 'vertical'
+  });
+  const [search, setSearch, debouncedSearch] = (0,external_wp_compose_namespaceObject.useDebouncedInput)();
+  const suggestions = useSearchSuggestions(entityForSuggestions, debouncedSearch);
+  const {
+    labels
+  } = entityForSuggestions;
+  const [showSearchControl, setShowSearchControl] = (0,external_wp_element_namespaceObject.useState)(false);
+  if (!showSearchControl && suggestions?.length > 9) {
+    setShowSearchControl(true);
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [showSearchControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, {
+      __nextHasNoMarginBottom: true,
+      onChange: setSearch,
+      value: search,
+      label: labels.search_items,
+      placeholder: labels.search_items
+    }), !!suggestions?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_custom_template_modal_content_Composite, {
+      store: composite,
+      role: "listbox",
+      className: "edit-site-custom-template-modal__suggestions_list",
+      "aria-label": (0,external_wp_i18n_namespaceObject.__)('Suggestions list'),
+      children: suggestions.map(suggestion => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SuggestionListItem, {
+        suggestion: suggestion,
+        search: debouncedSearch,
+        onSelect: onSelect,
+        entityForSuggestions: entityForSuggestions
+      }, suggestion.slug))
+    }), debouncedSearch && !suggestions?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+      as: "p",
+      className: "edit-site-custom-template-modal__no-results",
+      children: labels.not_found
+    })]
+  });
+}
+function AddCustomTemplateModalContent({
+  onSelect,
+  entityForSuggestions
+}) {
+  const [showSearchEntities, setShowSearchEntities] = (0,external_wp_element_namespaceObject.useState)(entityForSuggestions.hasGeneralTemplate);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+    spacing: 4,
+    className: "edit-site-custom-template-modal__contents-wrapper",
+    alignment: "left",
+    children: [!showSearchEntities && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+        as: "p",
+        children: (0,external_wp_i18n_namespaceObject.__)('Select whether to create a single template for all items or a specific one.')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+        className: "edit-site-custom-template-modal__contents",
+        gap: "4",
+        align: "initial",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.FlexItem, {
+          isBlock: true,
+          as: external_wp_components_namespaceObject.Button,
+          onClick: () => {
+            const {
+              slug,
+              title,
+              description,
+              templatePrefix
+            } = entityForSuggestions.template;
+            onSelect({
+              slug,
+              title,
+              description,
+              templatePrefix
+            });
+          },
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+            as: "span",
+            weight: 500,
+            lineHeight: 1.53846153846 // 20px
+            ,
+            children: entityForSuggestions.labels.all_items
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+            as: "span",
+            lineHeight: 1.53846153846 // 20px
+            ,
+            children:
+            // translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.
+            (0,external_wp_i18n_namespaceObject.__)('For all items')
+          })]
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.FlexItem, {
+          isBlock: true,
+          as: external_wp_components_namespaceObject.Button,
+          onClick: () => {
+            setShowSearchEntities(true);
+          },
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+            as: "span",
+            weight: 500,
+            lineHeight: 1.53846153846 // 20px
+            ,
+            children: entityForSuggestions.labels.singular_name
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+            as: "span",
+            lineHeight: 1.53846153846 // 20px
+            ,
+            children:
+            // translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.
+            (0,external_wp_i18n_namespaceObject.__)('For a specific item')
+          })]
+        })]
+      })]
+    }), showSearchEntities && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+        as: "p",
+        children: (0,external_wp_i18n_namespaceObject.__)('This template will be used only for the specific item chosen.')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SuggestionList, {
+        entityForSuggestions: entityForSuggestions,
+        onSelect: onSelect
+      })]
+    })]
+  });
+}
+/* harmony default export */ const add_custom_template_modal_content = (AddCustomTemplateModalContent);
+
+;// CONCATENATED MODULE: ./node_modules/tslib/tslib.es6.mjs
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global Reflect, Promise, SuppressedError, Symbol */
+
+var extendStatics = function(d, b) {
+  extendStatics = Object.setPrototypeOf ||
+      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+  return extendStatics(d, b);
+};
+
+function __extends(d, b) {
+  if (typeof b !== "function" && b !== null)
+      throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+  extendStatics(d, b);
+  function __() { this.constructor = d; }
+  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+}
+
+var __assign = function() {
+  __assign = Object.assign || function __assign(t) {
+      for (var s, i = 1, n = arguments.length; i < n; i++) {
+          s = arguments[i];
+          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+      }
+      return t;
+  }
+  return __assign.apply(this, arguments);
+}
+
+function __rest(s, e) {
+  var t = {};
+  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+      t[p] = s[p];
+  if (s != null && typeof Object.getOwnPropertySymbols === "function")
+      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+              t[p[i]] = s[p[i]];
+      }
+  return t;
+}
+
+function __decorate(decorators, target, key, desc) {
+  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+  return c > 3 && r && Object.defineProperty(target, key, r), r;
+}
+
+function __param(paramIndex, decorator) {
+  return function (target, key) { decorator(target, key, paramIndex); }
+}
+
+function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+  function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+  var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+  var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+  var _, done = false;
+  for (var i = decorators.length - 1; i >= 0; i--) {
+      var context = {};
+      for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+      for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+      context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+      var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+      if (kind === "accessor") {
+          if (result === void 0) continue;
+          if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+          if (_ = accept(result.get)) descriptor.get = _;
+          if (_ = accept(result.set)) descriptor.set = _;
+          if (_ = accept(result.init)) initializers.unshift(_);
+      }
+      else if (_ = accept(result)) {
+          if (kind === "field") initializers.unshift(_);
+          else descriptor[key] = _;
+      }
+  }
+  if (target) Object.defineProperty(target, contextIn.name, descriptor);
+  done = true;
+};
+
+function __runInitializers(thisArg, initializers, value) {
+  var useValue = arguments.length > 2;
+  for (var i = 0; i < initializers.length; i++) {
+      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+  }
+  return useValue ? value : void 0;
+};
+
+function __propKey(x) {
+  return typeof x === "symbol" ? x : "".concat(x);
+};
+
+function __setFunctionName(f, name, prefix) {
+  if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
+  return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
+};
+
+function __metadata(metadataKey, metadataValue) {
+  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+}
+
+function __awaiter(thisArg, _arguments, P, generator) {
+  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+  return new (P || (P = Promise))(function (resolve, reject) {
+      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+      function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+      step((generator = generator.apply(thisArg, _arguments || [])).next());
+  });
+}
+
+function __generator(thisArg, body) {
+  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+  function verb(n) { return function (v) { return step([n, v]); }; }
+  function step(op) {
+      if (f) throw new TypeError("Generator is already executing.");
+      while (g && (g = 0, op[0] && (_ = 0)), _) try {
+          if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+          if (y = 0, t) op = [op[0] & 2, t.value];
+          switch (op[0]) {
+              case 0: case 1: t = op; break;
+              case 4: _.label++; return { value: op[1], done: false };
+              case 5: _.label++; y = op[1]; op = [0]; continue;
+              case 7: op = _.ops.pop(); _.trys.pop(); continue;
+              default:
+                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                  if (t[2]) _.ops.pop();
+                  _.trys.pop(); continue;
+          }
+          op = body.call(thisArg, _);
+      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+  }
+}
+
+var __createBinding = Object.create ? (function(o, m, k, k2) {
+  if (k2 === undefined) k2 = k;
+  var desc = Object.getOwnPropertyDescriptor(m, k);
+  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+      desc = { enumerable: true, get: function() { return m[k]; } };
+  }
+  Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+  if (k2 === undefined) k2 = k;
+  o[k2] = m[k];
+});
+
+function __exportStar(m, o) {
+  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+}
+
+function __values(o) {
+  var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+  if (m) return m.call(o);
+  if (o && typeof o.length === "number") return {
+      next: function () {
+          if (o && i >= o.length) o = void 0;
+          return { value: o && o[i++], done: !o };
+      }
+  };
+  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+}
+
+function __read(o, n) {
+  var m = typeof Symbol === "function" && o[Symbol.iterator];
+  if (!m) return o;
+  var i = m.call(o), r, ar = [], e;
+  try {
+      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+  }
+  catch (error) { e = { error: error }; }
+  finally {
+      try {
+          if (r && !r.done && (m = i["return"])) m.call(i);
+      }
+      finally { if (e) throw e.error; }
+  }
+  return ar;
+}
+
+/** @deprecated */
+function __spread() {
+  for (var ar = [], i = 0; i < arguments.length; i++)
+      ar = ar.concat(__read(arguments[i]));
+  return ar;
+}
+
+/** @deprecated */
+function __spreadArrays() {
+  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+  for (var r = Array(s), k = 0, i = 0; i < il; i++)
+      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+          r[k] = a[j];
+  return r;
+}
+
+function __spreadArray(to, from, pack) {
+  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+      if (ar || !(i in from)) {
+          if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+          ar[i] = from[i];
+      }
+  }
+  return to.concat(ar || Array.prototype.slice.call(from));
+}
+
+function __await(v) {
+  return this instanceof __await ? (this.v = v, this) : new __await(v);
+}
+
+function __asyncGenerator(thisArg, _arguments, generator) {
+  if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+  var g = generator.apply(thisArg, _arguments || []), i, q = [];
+  return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+  function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
+  function fulfill(value) { resume("next", value); }
+  function reject(value) { resume("throw", value); }
+  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+}
+
+function __asyncDelegator(o) {
+  var i, p;
+  return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
+}
+
+function __asyncValues(o) {
+  if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+  var m = o[Symbol.asyncIterator], i;
+  return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+}
+
+function __makeTemplateObject(cooked, raw) {
+  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+  return cooked;
+};
+
+var __setModuleDefault = Object.create ? (function(o, v) {
+  Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+  o["default"] = v;
+};
+
+function __importStar(mod) {
+  if (mod && mod.__esModule) return mod;
+  var result = {};
+  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+  __setModuleDefault(result, mod);
+  return result;
+}
+
+function __importDefault(mod) {
+  return (mod && mod.__esModule) ? mod : { default: mod };
+}
+
+function __classPrivateFieldGet(receiver, state, kind, f) {
+  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+}
+
+function __classPrivateFieldSet(receiver, state, value, kind, f) {
+  if (kind === "m") throw new TypeError("Private method is not writable");
+  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+}
+
+function __classPrivateFieldIn(state, receiver) {
+  if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object");
+  return typeof state === "function" ? receiver === state : state.has(receiver);
+}
+
+function __addDisposableResource(env, value, async) {
+  if (value !== null && value !== void 0) {
+    if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
+    var dispose;
+    if (async) {
+        if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
+        dispose = value[Symbol.asyncDispose];
+    }
+    if (dispose === void 0) {
+        if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
+        dispose = value[Symbol.dispose];
+    }
+    if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
+    env.stack.push({ value: value, dispose: dispose, async: async });
+  }
+  else if (async) {
+    env.stack.push({ async: true });
+  }
+  return value;
+}
+
+var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
+  var e = new Error(message);
+  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
+};
+
+function __disposeResources(env) {
+  function fail(e) {
+    env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
+    env.hasError = true;
+  }
+  function next() {
+    while (env.stack.length) {
+      var rec = env.stack.pop();
+      try {
+        var result = rec.dispose && rec.dispose.call(rec.value);
+        if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
+      }
+      catch (e) {
+          fail(e);
+      }
+    }
+    if (env.hasError) throw env.error;
+  }
+  return next();
+}
+
+/* harmony default export */ const tslib_es6 = ({
+  __extends,
+  __assign,
+  __rest,
+  __decorate,
+  __param,
+  __metadata,
+  __awaiter,
+  __generator,
+  __createBinding,
+  __exportStar,
+  __values,
+  __read,
+  __spread,
+  __spreadArrays,
+  __spreadArray,
+  __await,
+  __asyncGenerator,
+  __asyncDelegator,
+  __asyncValues,
+  __makeTemplateObject,
+  __importStar,
+  __importDefault,
+  __classPrivateFieldGet,
+  __classPrivateFieldSet,
+  __classPrivateFieldIn,
+  __addDisposableResource,
+  __disposeResources,
+});
+
+;// CONCATENATED MODULE: ./node_modules/lower-case/dist.es2015/index.js
+/**
+ * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt
+ */
+var SUPPORTED_LOCALE = {
+    tr: {
+        regexp: /\u0130|\u0049|\u0049\u0307/g,
+        map: {
+            İ: "\u0069",
+            I: "\u0131",
+            İ: "\u0069",
+        },
+    },
+    az: {
+        regexp: /\u0130/g,
+        map: {
+            İ: "\u0069",
+            I: "\u0131",
+            İ: "\u0069",
+        },
+    },
+    lt: {
+        regexp: /\u0049|\u004A|\u012E|\u00CC|\u00CD|\u0128/g,
+        map: {
+            I: "\u0069\u0307",
+            J: "\u006A\u0307",
+            Į: "\u012F\u0307",
+            Ì: "\u0069\u0307\u0300",
+            Í: "\u0069\u0307\u0301",
+            Ĩ: "\u0069\u0307\u0303",
+        },
+    },
+};
+/**
+ * Localized lower case.
+ */
+function localeLowerCase(str, locale) {
+    var lang = SUPPORTED_LOCALE[locale.toLowerCase()];
+    if (lang)
+        return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));
+    return lowerCase(str);
+}
+/**
+ * Lower case as a function.
+ */
+function lowerCase(str) {
+    return str.toLowerCase();
+}
+
+;// CONCATENATED MODULE: ./node_modules/no-case/dist.es2015/index.js
+
+// Support camel case ("camelCase" -> "camel Case" and "CAMELCase" -> "CAMEL Case").
+var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
+// Remove all non-word characters.
+var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
+/**
+ * Normalize the string into something other libraries can manipulate easier.
+ */
+function noCase(input, options) {
+    if (options === void 0) { options = {}; }
+    var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d;
+    var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
+    var start = 0;
+    var end = result.length;
+    // Trim the delimiter from around the output string.
+    while (result.charAt(start) === "\0")
+        start++;
+    while (result.charAt(end - 1) === "\0")
+        end--;
+    // Transform each token independently.
+    return result.slice(start, end).split("\0").map(transform).join(delimiter);
+}
+/**
+ * Replace `re` in the input string with the replacement value.
+ */
+function replace(input, re, value) {
+    if (re instanceof RegExp)
+        return input.replace(re, value);
+    return re.reduce(function (input, re) { return input.replace(re, value); }, input);
+}
+
+;// CONCATENATED MODULE: ./node_modules/dot-case/dist.es2015/index.js
+
+
+function dotCase(input, options) {
+    if (options === void 0) { options = {}; }
+    return noCase(input, __assign({ delimiter: "." }, options));
+}
+
+;// CONCATENATED MODULE: ./node_modules/param-case/dist.es2015/index.js
+
+
+function paramCase(input, options) {
+    if (options === void 0) { options = {}; }
+    return dotCase(input, __assign({ delimiter: "-" }, options));
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/add-custom-generic-template-modal-content.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+function AddCustomGenericTemplateModalContent({
+  onClose,
+  createTemplate
+}) {
+  const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)('');
+  const defaultTitle = (0,external_wp_i18n_namespaceObject.__)('Custom Template');
+  const [isBusy, setIsBusy] = (0,external_wp_element_namespaceObject.useState)(false);
+  async function onCreateTemplate(event) {
+    event.preventDefault();
+    if (isBusy) {
+      return;
+    }
+    setIsBusy(true);
+    try {
+      await createTemplate({
+        slug: 'wp-custom-template-' + paramCase(title || defaultTitle),
+        title: title || defaultTitle
+      }, false);
+    } finally {
+      setIsBusy(false);
+    }
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
+    onSubmit: onCreateTemplate,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+      spacing: 6,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
+        __next40pxDefaultSize: true,
+        __nextHasNoMarginBottom: true,
+        label: (0,external_wp_i18n_namespaceObject.__)('Name'),
+        value: title,
+        onChange: setTitle,
+        placeholder: defaultTitle,
+        disabled: isBusy,
+        help: (0,external_wp_i18n_namespaceObject.__)('Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.')
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        className: "edit-site-custom-generic-template__modal-actions",
+        justify: "right",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          __next40pxDefaultSize: true,
+          variant: "tertiary",
+          onClick: () => {
+            onClose();
+          },
+          children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          __next40pxDefaultSize: true,
+          variant: "primary",
+          type: "submit",
+          isBusy: isBusy,
+          "aria-disabled": isBusy,
+          children: (0,external_wp_i18n_namespaceObject.__)('Create')
+        })]
+      })]
+    })
+  });
+}
+/* harmony default export */ const add_custom_generic_template_modal_content = (AddCustomGenericTemplateModalContent);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  useHistory: add_new_template_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const DEFAULT_TEMPLATE_SLUGS = ['front-page', 'home', 'single', 'page', 'index', 'archive', 'author', 'category', 'date', 'tag', 'search', '404'];
+const TEMPLATE_ICONS = {
+  'front-page': library_home,
+  home: library_verse,
+  single: library_pin,
+  page: library_page,
+  archive: library_archive,
+  search: library_search,
+  404: not_found,
+  index: library_list,
+  category: library_category,
+  author: comment_author_avatar,
+  taxonomy: block_meta,
+  date: library_calendar,
+  tag: library_tag,
+  attachment: library_media
+};
+function TemplateListItem({
+  title,
+  direction,
+  className,
+  description,
+  icon,
+  onClick,
+  children
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+    className: className,
+    onClick: onClick,
+    label: description,
+    showTooltip: !!description,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
+      as: "span",
+      spacing: 2,
+      align: "center",
+      justify: "center",
+      style: {
+        width: '100%'
+      },
+      direction: direction,
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        className: "edit-site-add-new-template__template-icon",
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+          icon: icon
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+        className: "edit-site-add-new-template__template-name",
+        alignment: "center",
+        spacing: 0,
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+          align: "center",
+          weight: 500,
+          lineHeight: 1.53846153846 // 20px
+          ,
+          children: title
+        }), children]
+      })]
+    })
+  });
+}
+const modalContentMap = {
+  templatesList: 1,
+  customTemplate: 2,
+  customGenericTemplate: 3
+};
+function NewTemplateModal({
+  onClose
+}) {
+  const [modalContent, setModalContent] = (0,external_wp_element_namespaceObject.useState)(modalContentMap.templatesList);
+  const [entityForSuggestions, setEntityForSuggestions] = (0,external_wp_element_namespaceObject.useState)({});
+  const [isSubmitting, setIsSubmitting] = (0,external_wp_element_namespaceObject.useState)(false);
+  const missingTemplates = useMissingTemplates(setEntityForSuggestions, () => setModalContent(modalContentMap.customTemplate));
+  const history = add_new_template_useHistory();
+  const {
+    saveEntityRecord
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
+  const {
+    createErrorNotice,
+    createSuccessNotice
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
+  const {
+    homeUrl
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getUnstableBase // Site index.
+    } = select(external_wp_coreData_namespaceObject.store);
+    return {
+      homeUrl: getUnstableBase()?.home
+    };
+  }, []);
+  const TEMPLATE_SHORT_DESCRIPTIONS = {
+    'front-page': homeUrl,
+    date: (0,external_wp_i18n_namespaceObject.sprintf)(
+    // translators: %s: The homepage url.
+    (0,external_wp_i18n_namespaceObject.__)('E.g. %s'), homeUrl + '/' + new Date().getFullYear())
+  };
+  async function createTemplate(template, isWPSuggestion = true) {
+    if (isSubmitting) {
+      return;
+    }
+    setIsSubmitting(true);
+    try {
+      const {
+        title,
+        description,
+        slug
+      } = template;
+      const newTemplate = await saveEntityRecord('postType', TEMPLATE_POST_TYPE, {
+        description,
+        // Slugs need to be strings, so this is for template `404`
+        slug: slug.toString(),
+        status: 'publish',
+        title,
+        // This adds a post meta field in template that is part of `is_custom` value calculation.
+        is_wp_suggestion: isWPSuggestion
+      }, {
+        throwOnError: true
+      });
+
+      // Navigate to the created template editor.
+      history.push({
+        postId: newTemplate.id,
+        postType: TEMPLATE_POST_TYPE,
+        canvas: 'edit'
+      });
+      createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
+      // translators: %s: Title of the created template e.g: "Category".
+      (0,external_wp_i18n_namespaceObject.__)('"%s" successfully created.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(newTemplate.title?.rendered || title)), {
         type: 'snackbar'
       });
     } catch (error) {
-      const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while renaming the entity.');
+      const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the template.');
       createErrorNotice(errorMessage, {
         type: 'snackbar'
       });
-    }
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-    onClick: () => {
-      setIsModalOpen(true);
-      setTitle(template.title.rendered);
-    }
-  }, (0,external_wp_i18n_namespaceObject.__)('Rename')), isModalOpen && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, {
-    title: (0,external_wp_i18n_namespaceObject.__)('Rename'),
-    closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'),
-    onRequestClose: () => {
-      setIsModalOpen(false);
-    },
-    overlayClassName: "edit-site-list__rename-modal"
-  }, (0,external_wp_element_namespaceObject.createElement)("form", {
-    onSubmit: onTemplateRename
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, {
-    align: "flex-start",
-    gap: 8
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
-    label: (0,external_wp_i18n_namespaceObject.__)('Name'),
-    value: title,
-    onChange: setTitle,
-    required: true
-  }))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, {
-    className: "edit-site-list__rename-modal-actions",
-    justify: "flex-end",
-    expanded: false
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    variant: "tertiary",
+    } finally {
+      setIsSubmitting(false);
+    }
+  }
+  const onModalClose = () => {
+    onClose();
+    setModalContent(modalContentMap.templatesList);
+  };
+  let modalTitle = (0,external_wp_i18n_namespaceObject.__)('Add template');
+  if (modalContent === modalContentMap.customTemplate) {
+    modalTitle = (0,external_wp_i18n_namespaceObject.sprintf)(
+    // translators: %s: Name of the post type e.g: "Post".
+    (0,external_wp_i18n_namespaceObject.__)('Add template: %s'), entityForSuggestions.labels.singular_name);
+  } else if (modalContent === modalContentMap.customGenericTemplate) {
+    modalTitle = (0,external_wp_i18n_namespaceObject.__)('Create custom template');
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Modal, {
+    title: modalTitle,
+    className: dist_clsx('edit-site-add-new-template__modal', {
+      'edit-site-add-new-template__modal_template_list': modalContent === modalContentMap.templatesList,
+      'edit-site-custom-template-modal': modalContent === modalContentMap.customTemplate
+    }),
+    onRequestClose: onModalClose,
+    overlayClassName: modalContent === modalContentMap.customGenericTemplate ? 'edit-site-custom-generic-template__modal' : undefined,
+    children: [modalContent === modalContentMap.templatesList && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalGrid, {
+      columns: 3,
+      gap: 4,
+      align: "flex-start",
+      justify: "center",
+      className: "edit-site-add-new-template__template-list__contents",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
+        className: "edit-site-add-new-template__template-list__prompt",
+        children: (0,external_wp_i18n_namespaceObject.__)('Select what the new template should apply to:')
+      }), missingTemplates.map(template => {
+        const {
+          title,
+          slug,
+          onClick
+        } = template;
+        return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplateListItem, {
+          title: title,
+          direction: "column",
+          className: "edit-site-add-new-template__template-button",
+          description: TEMPLATE_SHORT_DESCRIPTIONS[slug],
+          icon: TEMPLATE_ICONS[slug] || library_layout,
+          onClick: () => onClick ? onClick(template) : createTemplate(template)
+        }, slug);
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplateListItem, {
+        title: (0,external_wp_i18n_namespaceObject.__)('Custom template'),
+        direction: "row",
+        className: "edit-site-add-new-template__custom-template-button",
+        icon: edit,
+        onClick: () => setModalContent(modalContentMap.customGenericTemplate),
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+          lineHeight: 1.53846153846 // 20px
+          ,
+          children: (0,external_wp_i18n_namespaceObject.__)('A custom template can be manually applied to any post or page.')
+        })
+      })]
+    }), modalContent === modalContentMap.customTemplate && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_custom_template_modal_content, {
+      onSelect: createTemplate,
+      entityForSuggestions: entityForSuggestions
+    }), modalContent === modalContentMap.customGenericTemplate && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_custom_generic_template_modal_content, {
+      onClose: onModalClose,
+      createTemplate: createTemplate
+    })]
+  });
+}
+function NewTemplate() {
+  const [showModal, setShowModal] = (0,external_wp_element_namespaceObject.useState)(false);
+  const {
+    postType
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getPostType
+    } = select(external_wp_coreData_namespaceObject.store);
+    return {
+      postType: getPostType(TEMPLATE_POST_TYPE)
+    };
+  }, []);
+  if (!postType) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+      variant: "primary",
+      onClick: () => setShowModal(true),
+      label: postType.labels.add_new_item,
+      __next40pxDefaultSize: true,
+      children: postType.labels.add_new_item
+    }), showModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NewTemplateModal, {
+      onClose: () => setShowModal(false)
+    })]
+  });
+}
+function useMissingTemplates(setEntityForSuggestions, onClick) {
+  const existingTemplates = useExistingTemplates();
+  const defaultTemplateTypes = useDefaultTemplateTypes();
+  const existingTemplateSlugs = (existingTemplates || []).map(({
+    slug
+  }) => slug);
+  const missingDefaultTemplates = (defaultTemplateTypes || []).filter(template => DEFAULT_TEMPLATE_SLUGS.includes(template.slug) && !existingTemplateSlugs.includes(template.slug));
+  const onClickMenuItem = _entityForSuggestions => {
+    onClick?.();
+    setEntityForSuggestions(_entityForSuggestions);
+  };
+  // We need to replace existing default template types with
+  // the create specific template functionality. The original
+  // info (title, description, etc.) is preserved in the
+  // used hooks.
+  const enhancedMissingDefaultTemplateTypes = [...missingDefaultTemplates];
+  const {
+    defaultTaxonomiesMenuItems,
+    taxonomiesMenuItems
+  } = useTaxonomiesMenuItems(onClickMenuItem);
+  const {
+    defaultPostTypesMenuItems,
+    postTypesMenuItems
+  } = usePostTypeMenuItems(onClickMenuItem);
+  const authorMenuItem = useAuthorMenuItem(onClickMenuItem);
+  [...defaultTaxonomiesMenuItems, ...defaultPostTypesMenuItems, authorMenuItem].forEach(menuItem => {
+    if (!menuItem) {
+      return;
+    }
+    const matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(template => template.slug === menuItem.slug);
+    // Some default template types might have been filtered above from
+    // `missingDefaultTemplates` because they only check for the general
+    // template. So here we either replace or append the item, augmented
+    // with the check if it has available specific item to create a
+    // template for.
+    if (matchIndex > -1) {
+      enhancedMissingDefaultTemplateTypes[matchIndex] = menuItem;
+    } else {
+      enhancedMissingDefaultTemplateTypes.push(menuItem);
+    }
+  });
+  // Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.
+  enhancedMissingDefaultTemplateTypes?.sort((template1, template2) => {
+    return DEFAULT_TEMPLATE_SLUGS.indexOf(template1.slug) - DEFAULT_TEMPLATE_SLUGS.indexOf(template2.slug);
+  });
+  const missingTemplates = [...enhancedMissingDefaultTemplateTypes, ...usePostTypeArchiveMenuItems(), ...postTypesMenuItems, ...taxonomiesMenuItems];
+  return missingTemplates;
+}
+/* harmony default export */ const add_new_template = ((0,external_wp_element_namespaceObject.memo)(NewTemplate));
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-templates/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+const {
+  usePostActions: page_templates_usePostActions
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+const {
+  ExperimentalBlockEditorProvider: page_templates_ExperimentalBlockEditorProvider,
+  useGlobalStyle: page_templates_useGlobalStyle
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const {
+  useHistory: page_templates_useHistory,
+  useLocation: page_templates_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const page_templates_EMPTY_ARRAY = [];
+const page_templates_defaultConfigPerViewType = {
+  [LAYOUT_TABLE]: {
+    primaryField: 'title'
+  },
+  [LAYOUT_GRID]: {
+    mediaField: 'preview',
+    primaryField: 'title',
+    columnFields: ['description']
+  },
+  [LAYOUT_LIST]: {
+    primaryField: 'title',
+    mediaField: 'preview'
+  }
+};
+const page_templates_DEFAULT_VIEW = {
+  type: LAYOUT_GRID,
+  search: '',
+  page: 1,
+  perPage: 20,
+  sort: {
+    field: 'title',
+    direction: 'asc'
+  },
+  // All fields are visible by default, so it's
+  // better to keep track of the hidden ones.
+  hiddenFields: ['preview'],
+  layout: page_templates_defaultConfigPerViewType[LAYOUT_GRID],
+  filters: []
+};
+function page_templates_Title({
+  item,
+  viewType
+}) {
+  if (viewType === LAYOUT_LIST) {
+    return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.title?.rendered) || (0,external_wp_i18n_namespaceObject.__)('(no title)');
+  }
+  const linkProps = {
+    params: {
+      postId: item.id,
+      postType: item.type,
+      canvas: 'edit'
+    }
+  };
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Link, {
+    ...linkProps,
+    children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.title?.rendered) || (0,external_wp_i18n_namespaceObject.__)('(no title)')
+  });
+}
+function AuthorField({
+  item,
+  viewType
+}) {
+  const [isImageLoaded, setIsImageLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
+  const {
+    text,
+    icon,
+    imageUrl
+  } = useAddedBy(item.type, item.id);
+  const withIcon = viewType !== LAYOUT_LIST;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+    alignment: "left",
+    spacing: 1,
+    children: [withIcon && imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: dist_clsx('page-templates-author-field__avatar', {
+        'is-loaded': isImageLoaded
+      }),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
+        onLoad: () => setIsImageLoaded(true),
+        alt: "",
+        src: imageUrl
+      })
+    }), withIcon && !imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "page-templates-author-field__icon",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+        icon: icon
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+      className: "page-templates-author-field__name",
+      children: text
+    })]
+  });
+}
+function page_templates_Preview({
+  item,
+  viewType
+}) {
+  const settings = usePatternSettings();
+  const [backgroundColor = 'white'] = page_templates_useGlobalStyle('color.background');
+  const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return (0,external_wp_blocks_namespaceObject.parse)(item.content.raw);
+  }, [item.content.raw]);
+  const {
+    onClick
+  } = useLink({
+    postId: item.id,
+    postType: item.type,
+    canvas: 'edit'
+  });
+  const isEmpty = !blocks?.length;
+  // Wrap everything in a block editor provider to ensure 'styles' that are needed
+  // for the previews are synced between the site editor store and the block editor store.
+  // Additionally we need to have the `__experimentalBlockPatterns` setting in order to
+  // render patterns inside the previews.
+  // TODO: Same approach is used in the patterns list and it becomes obvious that some of
+  // the block editor settings are needed in context where we don't have the block editor.
+  // Explore how we can solve this in a better way.
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_templates_ExperimentalBlockEditorProvider, {
+    settings: settings,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+      className: `page-templates-preview-field is-viewtype-${viewType}`,
+      style: {
+        backgroundColor
+      },
+      children: [viewType === LAYOUT_LIST && !isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Async, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview, {
+          blocks: blocks
+        })
+      }), viewType !== LAYOUT_LIST && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("button", {
+        className: "page-templates-preview-field__button",
+        type: "button",
+        onClick: onClick,
+        "aria-label": item.title?.rendered || item.title,
+        children: [isEmpty && (0,external_wp_i18n_namespaceObject.__)('Empty template'), !isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Async, {
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview, {
+            blocks: blocks
+          })
+        })]
+      })]
+    })
+  });
+}
+function PageTemplates() {
+  const {
+    params
+  } = page_templates_useLocation();
+  const {
+    activeView = 'all',
+    layout,
+    postId
+  } = params;
+  const [selection, setSelection] = (0,external_wp_element_namespaceObject.useState)([postId]);
+  const defaultView = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const usedType = layout !== null && layout !== void 0 ? layout : page_templates_DEFAULT_VIEW.type;
+    return {
+      ...page_templates_DEFAULT_VIEW,
+      type: usedType,
+      layout: page_templates_defaultConfigPerViewType[usedType],
+      filters: activeView !== 'all' ? [{
+        field: 'author',
+        operator: 'isAny',
+        value: [activeView]
+      }] : []
+    };
+  }, [layout, activeView]);
+  const [view, setView] = (0,external_wp_element_namespaceObject.useState)(defaultView);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    setView(currentView => ({
+      ...currentView,
+      filters: activeView !== 'all' ? [{
+        field: 'author',
+        operator: OPERATOR_IS_ANY,
+        value: [activeView]
+      }] : []
+    }));
+  }, [activeView]);
+  const {
+    records,
+    isResolving: isLoadingData
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_POST_TYPE, {
+    per_page: -1
+  });
+  const history = page_templates_useHistory();
+  const onSelectionChange = (0,external_wp_element_namespaceObject.useCallback)(items => {
+    if (view?.type === LAYOUT_LIST) {
+      history.push({
+        ...params,
+        postId: items.length === 1 ? items[0].id : undefined
+      });
+    }
+  }, [history, params, view?.type]);
+  const authors = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!records) {
+      return page_templates_EMPTY_ARRAY;
+    }
+    const authorsSet = new Set();
+    records.forEach(template => {
+      authorsSet.add(template.author_text);
+    });
+    return Array.from(authorsSet).map(author => ({
+      value: author,
+      label: author
+    }));
+  }, [records]);
+  const fields = (0,external_wp_element_namespaceObject.useMemo)(() => [{
+    header: (0,external_wp_i18n_namespaceObject.__)('Preview'),
+    id: 'preview',
+    render: ({
+      item
+    }) => {
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_templates_Preview, {
+        item: item,
+        viewType: view.type
+      });
+    },
+    minWidth: 120,
+    maxWidth: 120,
+    enableSorting: false
+  }, {
+    header: (0,external_wp_i18n_namespaceObject.__)('Template'),
+    id: 'title',
+    getValue: ({
+      item
+    }) => item.title?.rendered,
+    render: ({
+      item
+    }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_templates_Title, {
+      item: item,
+      viewType: view.type
+    }),
+    maxWidth: 400,
+    enableHiding: false,
+    enableGlobalSearch: true
+  }, {
+    header: (0,external_wp_i18n_namespaceObject.__)('Description'),
+    id: 'description',
+    render: ({
+      item
+    }) => {
+      return item.description ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+        className: "page-templates-description",
+        children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.description)
+      }) : view.type === LAYOUT_TABLE && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+          variant: "muted",
+          "aria-hidden": "true",
+          children: "\u2014"
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, {
+          children: (0,external_wp_i18n_namespaceObject.__)('No description.')
+        })]
+      });
+    },
+    maxWidth: 400,
+    minWidth: 320,
+    enableSorting: false,
+    enableGlobalSearch: true
+  }, {
+    header: (0,external_wp_i18n_namespaceObject.__)('Author'),
+    id: 'author',
+    getValue: ({
+      item
+    }) => item.author_text,
+    render: ({
+      item
+    }) => {
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AuthorField, {
+        viewType: view.type,
+        item: item
+      });
+    },
+    elements: authors,
+    width: '1%'
+  }], [authors, view.type]);
+  const {
+    data,
+    paginationInfo
+  } = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    return filterSortAndPaginate(records, view, fields);
+  }, [records, view, fields]);
+  const postTypeActions = page_templates_usePostActions({
+    postType: TEMPLATE_POST_TYPE,
+    context: 'list'
+  });
+  const editAction = useEditPostAction();
+  const actions = (0,external_wp_element_namespaceObject.useMemo)(() => [editAction, ...postTypeActions], [postTypeActions, editAction]);
+  const onChangeView = (0,external_wp_element_namespaceObject.useCallback)(newView => {
+    if (newView.type !== view.type) {
+      newView = {
+        ...newView,
+        layout: {
+          ...page_templates_defaultConfigPerViewType[newView.type]
+        }
+      };
+      history.push({
+        ...params,
+        layout: newView.type
+      });
+    }
+    setView(newView);
+  }, [view.type, setView, history, params]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Page, {
+    className: "edit-site-page-templates",
+    title: (0,external_wp_i18n_namespaceObject.__)('Templates'),
+    actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_new_template, {}),
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViews, {
+      paginationInfo: paginationInfo,
+      fields: fields,
+      actions: actions,
+      data: data,
+      isLoading: isLoadingData,
+      view: view,
+      onChangeView: onChangeView,
+      onSelectionChange: onSelectionChange,
+      selection: selection,
+      setSelection: setSelection
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-button/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+function SidebarButton(props) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+    ...props,
+    className: dist_clsx('edit-site-sidebar-button', props.className)
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+const {
+  useHistory: sidebar_navigation_screen_useHistory,
+  useLocation: sidebar_navigation_screen_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function SidebarNavigationScreen({
+  isRoot,
+  title,
+  actions,
+  meta,
+  content,
+  footer,
+  description,
+  backPath: backPathProp
+}) {
+  const {
+    dashboardLink,
+    dashboardLinkText,
+    previewingThemeName
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getSettings
+    } = lock_unlock_unlock(select(store));
+    const currentlyPreviewingThemeId = currentlyPreviewingTheme();
+    return {
+      dashboardLink: getSettings().__experimentalDashboardLink,
+      dashboardLinkText: getSettings().__experimentalDashboardLinkText,
+      // Do not call `getTheme` with null, it will cause a request to
+      // the server.
+      previewingThemeName: currentlyPreviewingThemeId ? select(external_wp_coreData_namespaceObject.store).getTheme(currentlyPreviewingThemeId)?.name?.rendered : undefined
+    };
+  }, []);
+  const location = sidebar_navigation_screen_useLocation();
+  const history = sidebar_navigation_screen_useHistory();
+  const {
+    navigate
+  } = (0,external_wp_element_namespaceObject.useContext)(SidebarNavigationContext);
+  const backPath = backPathProp !== null && backPathProp !== void 0 ? backPathProp : location.state?.backPath;
+  const icon = (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+      className: dist_clsx('edit-site-sidebar-navigation-screen__main', {
+        'has-footer': !!footer
+      }),
+      spacing: 0,
+      justify: "flex-start",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        spacing: 3,
+        alignment: "flex-start",
+        className: "edit-site-sidebar-navigation-screen__title-icon",
+        children: [!isRoot && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarButton, {
+          onClick: () => {
+            history.push(backPath);
+            navigate('back');
+          },
+          icon: icon,
+          label: (0,external_wp_i18n_namespaceObject.__)('Back'),
+          showTooltip: false
+        }), isRoot && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarButton, {
+          icon: icon,
+          label: dashboardLinkText || (0,external_wp_i18n_namespaceObject.__)('Go to the Dashboard'),
+          href: dashboardLink || 'index.php'
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+          className: "edit-site-sidebar-navigation-screen__title",
+          color: '#e0e0e0' /* $gray-200 */,
+          level: 1,
+          size: 20,
+          children: !isPreviewingTheme() ? title : (0,external_wp_i18n_namespaceObject.sprintf)('Previewing %1$s: %2$s', previewingThemeName, title)
+        }), actions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          className: "edit-site-sidebar-navigation-screen__actions",
+          children: actions
+        })]
+      }), meta && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          className: "edit-site-sidebar-navigation-screen__meta",
+          children: meta
+        })
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+        className: "edit-site-sidebar-navigation-screen__content",
+        children: [description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
+          className: "edit-site-sidebar-navigation-screen__description",
+          children: description
+        }), content]
+      })]
+    }), footer && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("footer", {
+      className: "edit-site-sidebar-navigation-screen__footer",
+      children: footer
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-left-small.js
+/**
+ * WordPress dependencies
+ */
+
+
+const chevronLeftSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z"
+  })
+});
+/* harmony default export */ const chevron_left_small = (chevronLeftSmall);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-right-small.js
+/**
+ * WordPress dependencies
+ */
+
+
+const chevronRightSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z"
+  })
+});
+/* harmony default export */ const chevron_right_small = (chevronRightSmall);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-item/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  useHistory: sidebar_navigation_item_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function SidebarNavigationItem({
+  className,
+  icon,
+  withChevron = false,
+  suffix,
+  uid,
+  params,
+  onClick,
+  children,
+  ...props
+}) {
+  const history = sidebar_navigation_item_useHistory();
+  const {
+    navigate
+  } = (0,external_wp_element_namespaceObject.useContext)(SidebarNavigationContext);
+  // If there is no custom click handler, create one that navigates to `params`.
+  function handleClick(e) {
+    if (onClick) {
+      onClick(e);
+      navigate('forward');
+    } else if (params) {
+      e.preventDefault();
+      history.push(params);
+      navigate('forward', `[id="${uid}"]`);
+    }
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItem, {
+    className: dist_clsx('edit-site-sidebar-navigation-item', {
+      'with-suffix': !withChevron && suffix
+    }, className),
+    onClick: handleClick,
+    id: uid,
+    ...props,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+      justify: "flex-start",
+      children: [icon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
+        style: {
+          fill: 'currentcolor'
+        },
+        icon: icon,
+        size: 24
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexBlock, {
+        children: children
+      }), withChevron && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
+        icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left_small : chevron_right_small,
+        className: "edit-site-sidebar-navigation-item__drilldown-indicator",
+        size: 24
+      }), !withChevron && suffix]
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-label.js
+/**
+ * WordPress dependencies
+ */
+
+
+function SidebarNavigationScreenDetailsPanelLabel({
+  children
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+    className: "edit-site-sidebar-navigation-details-screen-panel__label",
+    children: children
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+function SidebarNavigationScreenDetailsPanelRow({
+  label,
+  children,
+  className,
+  ...extraProps
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+    spacing: 5,
+    alignment: "left",
+    className: dist_clsx('edit-site-sidebar-navigation-details-screen-panel__row', className),
+    ...extraProps,
+    children: children
+  }, label);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-value.js
+/**
+ * WordPress dependencies
+ */
+
+
+function SidebarNavigationScreenDetailsPanelValue({
+  children
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
+    className: "edit-site-sidebar-navigation-details-screen-panel__value",
+    children: children
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-panel/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+function SidebarNavigationScreenDetailsPanel({
+  title,
+  children,
+  spacing
+}) {
+  return /*#__PURE__*/_jsxs(VStack, {
+    className: "edit-site-sidebar-navigation-details-screen-panel",
+    spacing: spacing,
+    children: [title && /*#__PURE__*/_jsx(Heading, {
+      className: "edit-site-sidebar-navigation-details-screen-panel__heading",
+      level: 2,
+      children: title
+    }), children]
+  });
+}
+
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-footer/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+function SidebarNavigationScreenDetailsFooter({
+  record,
+  ...otherProps
+}) {
+  var _record$_links$predec, _record$_links$versio;
+  /*
+   * There might be other items in the future,
+   * but for now it's just modified date.
+   * Later we might render a list of items and isolate
+   * the following logic.
+   */
+  const hrefProps = {};
+  const lastRevisionId = (_record$_links$predec = record?._links?.['predecessor-version']?.[0]?.id) !== null && _record$_links$predec !== void 0 ? _record$_links$predec : null;
+  const revisionsCount = (_record$_links$versio = record?._links?.['version-history']?.[0]?.count) !== null && _record$_links$versio !== void 0 ? _record$_links$versio : 0;
+  // Enable the revisions link if there is a last revision and there are more than one revisions.
+  if (lastRevisionId && revisionsCount > 1) {
+    hrefProps.href = (0,external_wp_url_namespaceObject.addQueryArgs)('revision.php', {
+      revision: record?._links['predecessor-version'][0].id
+    });
+    hrefProps.as = 'a';
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+    className: "edit-site-sidebar-navigation-screen-details-footer",
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+      "aria-label": (0,external_wp_i18n_namespaceObject.__)('Revisions'),
+      ...hrefProps,
+      ...otherProps,
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(SidebarNavigationScreenDetailsPanelRow, {
+        justify: "space-between",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenDetailsPanelLabel, {
+          children: (0,external_wp_i18n_namespaceObject.__)('Last modified')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenDetailsPanelValue, {
+          children: (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: is the relative time when the post was last modified. */
+          (0,external_wp_i18n_namespaceObject.__)('<time>%s</time>'), (0,external_wp_date_namespaceObject.humanTimeDiff)(record.modified)), {
+            time: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {
+              dateTime: record.modified
+            })
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
+          className: "edit-site-sidebar-navigation-screen-details-footer__icon",
+          icon: library_backup
+        })]
+      })
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-global-styles/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+const sidebar_navigation_screen_global_styles_noop = () => {};
+function SidebarNavigationItemGlobalStyles(props) {
+  const {
+    openGeneralSidebar
+  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
+  const {
+    setCanvasMode
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const hasGlobalStyleVariations = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations()?.length, []);
+  if (hasGlobalStyleVariations) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+      ...props,
+      params: {
+        path: '/wp_global_styles'
+      },
+      uid: "global-styles-navigation-item"
+    });
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+    ...props,
     onClick: () => {
-      setIsModalOpen(false);
-    }
-  }, (0,external_wp_i18n_namespaceObject.__)('Cancel'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
-    variant: "primary",
-    type: "submit"
-  }, (0,external_wp_i18n_namespaceObject.__)('Save')))))));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/actions/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-function Actions(_ref) {
-  let {
-    template
-  } = _ref;
-  const {
-    removeTemplate,
-    revertTemplate
-  } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
-  const {
-    saveEditedEntityRecord
+      // Switch to edit mode.
+      setCanvasMode('edit');
+      // Open global styles sidebar.
+      openGeneralSidebar('edit-site/global-styles');
+    }
+  });
+}
+function SidebarNavigationScreenGlobalStylesContent() {
+  const {
+    storedSettings
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getSettings
+    } = lock_unlock_unlock(select(store));
+    return {
+      storedSettings: getSettings()
+    };
+  }, []);
+  const colorVariations = useColorVariations();
+  const typographyVariations = useTypographyVariations();
+  const gap = 3;
+
+  // Wrap in a BlockEditorProvider to ensure that the Iframe's dependencies are
+  // loaded. This is necessary because the Iframe component waits until
+  // the block editor store's `__internalIsInitialized` is true before
+  // rendering the iframe. Without this, the iframe previews will not render
+  // in mobile viewport sizes, where the editor canvas is hidden.
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, {
+    settings: storedSettings,
+    onChange: sidebar_navigation_screen_global_styles_noop,
+    onInput: sidebar_navigation_screen_global_styles_noop,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+      spacing: 10,
+      className: "edit-site-global-styles-variation-container",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleVariationsContainer, {
+        gap: gap
+      }), colorVariations?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColorVariations, {
+        title: (0,external_wp_i18n_namespaceObject.__)('Palettes'),
+        gap: gap
+      }), typographyVariations?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyVariations, {
+        title: (0,external_wp_i18n_namespaceObject.__)('Typography'),
+        gap: gap
+      })]
+    })
+  });
+}
+function SidebarNavigationScreenGlobalStyles({
+  backPath
+}) {
+  const {
+    revisions,
+    isLoading: isLoadingRevisions
+  } = useGlobalStylesRevisions();
+  const {
+    openGeneralSidebar
+  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
+  const {
+    setIsListViewOpened
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store);
+  const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<');
+  const {
+    setCanvasMode,
+    setEditorCanvasContainerView
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+  const {
+    isViewMode,
+    isStyleBookOpened,
+    revisionsCount
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    var _globalStyles$_links$;
+    const {
+      getCanvasMode,
+      getEditorCanvasContainerView
+    } = lock_unlock_unlock(select(store));
+    const {
+      getEntityRecord,
+      __experimentalGetCurrentGlobalStylesId
+    } = select(external_wp_coreData_namespaceObject.store);
+    const globalStylesId = __experimentalGetCurrentGlobalStylesId();
+    const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
+    return {
+      isViewMode: 'view' === getCanvasMode(),
+      isStyleBookOpened: 'style-book' === getEditorCanvasContainerView(),
+      revisionsCount: (_globalStyles$_links$ = globalStyles?._links?.['version-history']?.[0]?.count) !== null && _globalStyles$_links$ !== void 0 ? _globalStyles$_links$ : 0
+    };
+  }, []);
+  const {
+    set: setPreference
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
+  const openGlobalStyles = (0,external_wp_element_namespaceObject.useCallback)(async () => {
+    return Promise.all([setPreference('core', 'distractionFree', false), setCanvasMode('edit'), openGeneralSidebar('edit-site/global-styles')]);
+  }, [setCanvasMode, openGeneralSidebar, setPreference]);
+  const openStyleBook = (0,external_wp_element_namespaceObject.useCallback)(async () => {
+    await openGlobalStyles();
+    // Open the Style Book once the canvas mode is set to edit,
+    // and the global styles sidebar is open. This ensures that
+    // the Style Book is not prematurely closed.
+    setEditorCanvasContainerView('style-book');
+    setIsListViewOpened(false);
+  }, [openGlobalStyles, setEditorCanvasContainerView, setIsListViewOpened]);
+  const openRevisions = (0,external_wp_element_namespaceObject.useCallback)(async () => {
+    await openGlobalStyles();
+    // Open the global styles revisions once the canvas mode is set to edit,
+    // and the global styles sidebar is open. The global styles UI is responsible
+    // for redirecting to the revisions screen once the editor canvas container
+    // has been set to 'global-styles-revisions'.
+    setEditorCanvasContainerView('global-styles-revisions');
+  }, [openGlobalStyles, setEditorCanvasContainerView]);
+
+  // If there are no revisions, do not render a footer.
+  const hasRevisions = revisionsCount > 0;
+  const modifiedDateTime = revisions?.[0]?.modified;
+  const shouldShowGlobalStylesFooter = hasRevisions && !isLoadingRevisions && modifiedDateTime;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Styles'),
+      description: (0,external_wp_i18n_namespaceObject.__)('Choose a different style combination for the theme styles.'),
+      backPath: backPath,
+      content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenGlobalStylesContent, {}),
+      footer: shouldShowGlobalStylesFooter && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenDetailsFooter, {
+        record: revisions?.[0],
+        onClick: openRevisions
+      }),
+      actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [!isMobileViewport && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarButton, {
+          icon: library_seen,
+          label: (0,external_wp_i18n_namespaceObject.__)('Style Book'),
+          onClick: () => setEditorCanvasContainerView(!isStyleBookOpened ? 'style-book' : undefined),
+          isPressed: isStyleBookOpened
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarButton, {
+          icon: edit,
+          label: (0,external_wp_i18n_namespaceObject.__)('Edit styles'),
+          onClick: async () => await openGlobalStyles()
+        })]
+      })
+    }), isStyleBookOpened && !isMobileViewport && isViewMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book, {
+      enableResizing: false,
+      isSelected: () => false,
+      onClick: openStyleBook,
+      onSelect: openStyleBook,
+      showCloseButton: false,
+      showTabs: false
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/navigation.js
+/**
+ * WordPress dependencies
+ */
+
+
+const navigation = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.5c-3.6 0-6.5-2.9-6.5-6.5S8.4 5.5 12 5.5s6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5zM9 16l4.5-3L15 8.4l-4.5 3L9 16z"
+  })
+});
+/* harmony default export */ const library_navigation = (navigation);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-main/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+function SidebarNavigationScreenMain() {
+  const {
+    setEditorCanvasContainerView
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
+
+  // Clear the editor canvas container view when accessing the main navigation screen.
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    setEditorCanvasContainerView(undefined);
+  }, [setEditorCanvasContainerView]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
+    isRoot: true,
+    title: (0,external_wp_i18n_namespaceObject.__)('Design'),
+    description: (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of your website using the block editor.'),
+    content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+          uid: "navigation-navigation-item",
+          params: {
+            postType: NAVIGATION_POST_TYPE
+          },
+          withChevron: true,
+          icon: library_navigation,
+          children: (0,external_wp_i18n_namespaceObject.__)('Navigation')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItemGlobalStyles, {
+          uid: "styles-navigation-item",
+          withChevron: true,
+          icon: library_styles,
+          children: (0,external_wp_i18n_namespaceObject.__)('Styles')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+          uid: "page-navigation-item",
+          params: {
+            postType: 'page'
+          },
+          withChevron: true,
+          icon: library_page,
+          children: (0,external_wp_i18n_namespaceObject.__)('Pages')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+          uid: "template-navigation-item",
+          params: {
+            postType: TEMPLATE_POST_TYPE
+          },
+          withChevron: true,
+          icon: library_layout,
+          children: (0,external_wp_i18n_namespaceObject.__)('Templates')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+          uid: "patterns-navigation-item",
+          params: {
+            postType: PATTERN_TYPES.user
+          },
+          withChevron: true,
+          icon: library_symbol,
+          children: (0,external_wp_i18n_namespaceObject.__)('Patterns')
+        })]
+      })
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js
+// This requested is preloaded in `gutenberg_preload_navigation_posts`.
+// As unbounded queries are limited to 100 by `fetchAllMiddleware`
+// on apiFetch this query is limited to 100.
+// These parameters must be kept aligned with those in
+// lib/compat/wordpress-6.3/navigation-block-preloading.php
+// and
+// block-library/src/navigation/constants.js
+const PRELOADED_NAVIGATION_MENUS_QUERY = {
+  per_page: 100,
+  status: ['publish', 'draft'],
+  order: 'desc',
+  orderby: 'date'
+};
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+const notEmptyString = testString => testString?.trim()?.length > 0;
+function rename_modal_RenameModal({
+  menuTitle,
+  onClose,
+  onSave
+}) {
+  const [editedMenuTitle, setEditedMenuTitle] = (0,external_wp_element_namespaceObject.useState)(menuTitle);
+  const titleHasChanged = editedMenuTitle !== menuTitle;
+  const isEditedMenuTitleValid = titleHasChanged && notEmptyString(editedMenuTitle);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Rename'),
+    onRequestClose: onClose,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
+      className: "sidebar-navigation__rename-modal-form",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+        spacing: "3",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
+          __nextHasNoMarginBottom: true,
+          __next40pxDefaultSize: true,
+          value: editedMenuTitle,
+          placeholder: (0,external_wp_i18n_namespaceObject.__)('Navigation title'),
+          onChange: setEditedMenuTitle
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+          justify: "right",
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            __next40pxDefaultSize: true,
+            variant: "tertiary",
+            onClick: onClose,
+            children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+            __next40pxDefaultSize: true,
+            __experimentalIsFocusable: true,
+            disabled: !isEditedMenuTitleValid,
+            variant: "primary",
+            type: "submit",
+            onClick: e => {
+              e.preventDefault();
+              if (!isEditedMenuTitleValid) {
+                return;
+              }
+              onSave({
+                title: editedMenuTitle
+              });
+
+              // Immediate close avoids ability to hit save multiple times.
+              onClose();
+            },
+            children: (0,external_wp_i18n_namespaceObject.__)('Save')
+          })]
+        })]
+      })
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+function DeleteConfirmDialog({
+  onClose,
+  onConfirm
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
+    isOpen: true,
+    onConfirm: () => {
+      onConfirm();
+
+      // Immediate close avoids ability to hit delete multiple times.
+      onClose();
+    },
+    onCancel: onClose,
+    confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'),
+    size: "medium",
+    children: (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete this Navigation Menu?')
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+const {
+  useHistory: more_menu_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const POPOVER_PROPS = {
+  position: 'bottom right'
+};
+function ScreenNavigationMoreMenu(props) {
+  const {
+    onDelete,
+    onSave,
+    onDuplicate,
+    menuTitle,
+    menuId
+  } = props;
+  const [renameModalOpen, setRenameModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
+  const [deleteConfirmDialogOpen, setDeleteConfirmDialogOpen] = (0,external_wp_element_namespaceObject.useState)(false);
+  const history = more_menu_useHistory();
+  const closeModals = () => {
+    setRenameModalOpen(false);
+    setDeleteConfirmDialogOpen(false);
+  };
+  const openRenameModal = () => setRenameModalOpen(true);
+  const openDeleteConfirmDialog = () => setDeleteConfirmDialogOpen(true);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
+      className: "sidebar-navigation__more-menu",
+      label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
+      icon: more_vertical,
+      popoverProps: POPOVER_PROPS,
+      children: ({
+        onClose
+      }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, {
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+            onClick: () => {
+              openRenameModal();
+              // Close the dropdown after opening the modal.
+              onClose();
+            },
+            children: (0,external_wp_i18n_namespaceObject.__)('Rename')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+            onClick: () => {
+              history.push({
+                postId: menuId,
+                postType: 'wp_navigation',
+                canvas: 'edit'
+              });
+            },
+            children: (0,external_wp_i18n_namespaceObject.__)('Edit')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+            onClick: () => {
+              onDuplicate();
+              onClose();
+            },
+            children: (0,external_wp_i18n_namespaceObject.__)('Duplicate')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+            isDestructive: true,
+            onClick: () => {
+              openDeleteConfirmDialog();
+
+              // Close the dropdown after opening the modal.
+              onClose();
+            },
+            children: (0,external_wp_i18n_namespaceObject.__)('Delete')
+          })]
+        })
+      })
+    }), deleteConfirmDialogOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DeleteConfirmDialog, {
+      onClose: closeModals,
+      onConfirm: onDelete
+    }), renameModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(rename_modal_RenameModal, {
+      onClose: closeModals,
+      menuTitle: menuTitle,
+      onSave: onSave
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-up.js
+/**
+ * WordPress dependencies
+ */
+
+
+const chevronUp = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"
+  })
+});
+/* harmony default export */ const chevron_up = (chevronUp);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-down.js
+/**
+ * WordPress dependencies
+ */
+
+
+const chevronDown = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"
+  })
+});
+/* harmony default export */ const chevron_down = (chevronDown);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+const leaf_more_menu_POPOVER_PROPS = {
+  className: 'block-editor-block-settings-menu__popover',
+  placement: 'bottom-start'
+};
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  useHistory: leaf_more_menu_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function LeafMoreMenu(props) {
+  const history = leaf_more_menu_useHistory();
+  const {
+    block
+  } = props;
+  const {
+    clientId
+  } = block;
+  const {
+    moveBlocksDown,
+    moveBlocksUp,
+    removeBlocks
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
+  const removeLabel = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: block name */
+  (0,external_wp_i18n_namespaceObject.__)('Remove %s'), (0,external_wp_blockEditor_namespaceObject.BlockTitle)({
+    clientId,
+    maximumLength: 25
+  }));
+  const goToLabel = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: block name */
+  (0,external_wp_i18n_namespaceObject.__)('Go to %s'), (0,external_wp_blockEditor_namespaceObject.BlockTitle)({
+    clientId,
+    maximumLength: 25
+  }));
+  const rootClientId = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getBlockRootClientId
+    } = select(external_wp_blockEditor_namespaceObject.store);
+    return getBlockRootClientId(clientId);
+  }, [clientId]);
+  const onGoToPage = (0,external_wp_element_namespaceObject.useCallback)(selectedBlock => {
+    const {
+      attributes,
+      name
+    } = selectedBlock;
+    if (attributes.kind === 'post-type' && attributes.id && attributes.type && history) {
+      const {
+        params
+      } = history.getLocationWithParams();
+      history.push({
+        postType: attributes.type,
+        postId: attributes.id,
+        canvas: 'edit'
+      }, {
+        backPath: params
+      });
+    }
+    if (name === 'core/page-list-item' && attributes.id && history) {
+      const {
+        params
+      } = history.getLocationWithParams();
+      history.push({
+        postType: 'page',
+        postId: attributes.id,
+        canvas: 'edit'
+      }, {
+        backPath: params
+      });
+    }
+  }, [history]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
+    icon: more_vertical,
+    label: (0,external_wp_i18n_namespaceObject.__)('Options'),
+    className: "block-editor-block-settings-menu",
+    popoverProps: leaf_more_menu_POPOVER_PROPS,
+    noIcons: true,
+    ...props,
+    children: ({
+      onClose
+    }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+          icon: chevron_up,
+          onClick: () => {
+            moveBlocksUp([clientId], rootClientId);
+            onClose();
+          },
+          children: (0,external_wp_i18n_namespaceObject.__)('Move up')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+          icon: chevron_down,
+          onClick: () => {
+            moveBlocksDown([clientId], rootClientId);
+            onClose();
+          },
+          children: (0,external_wp_i18n_namespaceObject.__)('Move down')
+        }), block.attributes?.type === 'page' && block.attributes?.id && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+          onClick: () => {
+            onGoToPage(block);
+            onClose();
+          },
+          children: goToLabel
+        })]
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, {
+        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+          onClick: () => {
+            removeBlocks([clientId], false);
+            onClose();
+          },
+          children: removeLabel
+        })
+      })]
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  PrivateListView
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+
+// Needs to be kept in sync with the query used at packages/block-library/src/page-list/edit.js.
+const MAX_PAGE_COUNT = 100;
+const PAGES_QUERY = ['postType', 'page', {
+  per_page: MAX_PAGE_COUNT,
+  _fields: ['id', 'link', 'menu_order', 'parent', 'title', 'type'],
+  // TODO: When https://core.trac.wordpress.org/ticket/39037 REST API support for multiple orderby
+  // values is resolved, update 'orderby' to [ 'menu_order', 'post_title' ] to provide a consistent
+  // sort.
+  orderby: 'menu_order',
+  order: 'asc'
+}];
+function NavigationMenuContent({
+  rootClientId
+}) {
+  const {
+    listViewRootClientId,
+    isLoading
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      areInnerBlocksControlled,
+      getBlockName,
+      getBlockCount,
+      getBlockOrder
+    } = select(external_wp_blockEditor_namespaceObject.store);
+    const {
+      isResolving
+    } = select(external_wp_coreData_namespaceObject.store);
+    const blockClientIds = getBlockOrder(rootClientId);
+    const hasOnlyPageListBlock = blockClientIds.length === 1 && getBlockName(blockClientIds[0]) === 'core/page-list';
+    const pageListHasBlocks = hasOnlyPageListBlock && getBlockCount(blockClientIds[0]) > 0;
+    const isLoadingPages = isResolving('getEntityRecords', PAGES_QUERY);
+    return {
+      listViewRootClientId: pageListHasBlocks ? blockClientIds[0] : rootClientId,
+      // This is a small hack to wait for the navigation block
+      // to actually load its inner blocks.
+      isLoading: !areInnerBlocksControlled(rootClientId) || isLoadingPages
+    };
+  }, [rootClientId]);
+  const {
+    replaceBlock,
+    __unstableMarkNextChangeAsNotPersistent
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
+  const offCanvasOnselect = (0,external_wp_element_namespaceObject.useCallback)(block => {
+    if (block.name === 'core/navigation-link' && !block.attributes.url) {
+      __unstableMarkNextChangeAsNotPersistent();
+      replaceBlock(block.clientId, (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link', block.attributes));
+    }
+  }, [__unstableMarkNextChangeAsNotPersistent, replaceBlock]);
+
+  // The hidden block is needed because it makes block edit side effects trigger.
+  // For example a navigation page list load its items has an effect on edit to load its items.
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [!isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PrivateListView, {
+      rootClientId: listViewRootClientId,
+      onSelect: offCanvasOnselect,
+      blockSettingsMenu: LeafMoreMenu,
+      showAppender: false
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-sidebar-navigation-screen-navigation-menus__helper-block-editor",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockList, {})
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const navigation_menu_editor_noop = () => {};
+function NavigationMenuEditor({
+  navigationMenuId
+}) {
+  const {
+    storedSettings
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getSettings
+    } = lock_unlock_unlock(select(store));
+    return {
+      storedSettings: getSettings()
+    };
+  }, []);
+  const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    if (!navigationMenuId) {
+      return [];
+    }
+    return [(0,external_wp_blocks_namespaceObject.createBlock)('core/navigation', {
+      ref: navigationMenuId
+    })];
+  }, [navigationMenuId]);
+  if (!navigationMenuId || !blocks?.length) {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, {
+    settings: storedSettings,
+    value: blocks,
+    onChange: navigation_menu_editor_noop,
+    onInput: navigation_menu_editor_noop,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-sidebar-navigation-screen-navigation-menus__content",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuContent, {
+        rootClientId: blocks[0].clientId
+      })
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/build-navigation-label.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+// Copied from packages/block-library/src/navigation/edit/navigation-menu-selector.js.
+function buildNavigationLabel(title, id, status) {
+  if (!title?.rendered) {
+    /* translators: %s is the index of the menu in the list of menus. */
+    return (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('(no title %s)'), id);
+  }
+  if (status === 'publish') {
+    return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title?.rendered);
+  }
+  return (0,external_wp_i18n_namespaceObject.sprintf)(
+  // translators: %1s: title of the menu; %2s: status of the menu (draft, pending, etc.).
+  (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title?.rendered), status);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+function SingleNavigationMenu({
+  navigationMenu,
+  backPath,
+  handleDelete,
+  handleDuplicate,
+  handleSave
+}) {
+  const menuTitle = navigationMenu?.title?.rendered;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
+    actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenNavigationMoreMenu, {
+        menuId: navigationMenu?.id,
+        menuTitle: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(menuTitle),
+        onDelete: handleDelete,
+        onSave: handleSave,
+        onDuplicate: handleDuplicate
+      })
+    }),
+    backPath: backPath,
+    title: buildNavigationLabel(navigationMenu?.title, navigationMenu?.id, navigationMenu?.status),
+    description: (0,external_wp_i18n_namespaceObject.__)('Navigation Menus are a curated collection of blocks that allow visitors to get around your site.'),
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuEditor, {
+      navigationMenuId: navigationMenu?.id
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+const {
+  useLocation: sidebar_navigation_screen_navigation_menu_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const postType = `wp_navigation`;
+function SidebarNavigationScreenNavigationMenu({
+  backPath
+}) {
+  const {
+    params: {
+      postId
+    }
+  } = sidebar_navigation_screen_navigation_menu_useLocation();
+  const {
+    record: navigationMenu,
+    isResolving
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecord)('postType', postType, postId);
+  const {
+    isSaving,
+    isDeleting
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      isSavingEntityRecord,
+      isDeletingEntityRecord
+    } = select(external_wp_coreData_namespaceObject.store);
+    return {
+      isSaving: isSavingEntityRecord('postType', postType, postId),
+      isDeleting: isDeletingEntityRecord('postType', postType, postId)
+    };
+  }, [postId]);
+  const isLoading = isResolving || isSaving || isDeleting;
+  const menuTitle = navigationMenu?.title?.rendered || navigationMenu?.slug;
+  const {
+    handleSave,
+    handleDelete,
+    handleDuplicate
+  } = useNavigationMenuHandlers();
+  const _handleDelete = () => handleDelete(navigationMenu);
+  const _handleSave = edits => handleSave(navigationMenu, edits);
+  const _handleDuplicate = () => handleDuplicate(navigationMenu);
+  if (isLoading) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
+      description: (0,external_wp_i18n_namespaceObject.__)('Navigation Menus are a curated collection of blocks that allow visitors to get around your site.'),
+      backPath: backPath,
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {
+        className: "edit-site-sidebar-navigation-screen-navigation-menus__loading"
+      })
+    });
+  }
+  if (!isLoading && !navigationMenu) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
+      description: (0,external_wp_i18n_namespaceObject.__)('Navigation Menu missing.'),
+      backPath: backPath
+    });
+  }
+  if (!navigationMenu?.content?.raw) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
+      actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenNavigationMoreMenu, {
+        menuId: navigationMenu?.id,
+        menuTitle: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(menuTitle),
+        onDelete: _handleDelete,
+        onSave: _handleSave,
+        onDuplicate: _handleDuplicate
+      }),
+      backPath: backPath,
+      title: buildNavigationLabel(navigationMenu?.title, navigationMenu?.id, navigationMenu?.status),
+      description: (0,external_wp_i18n_namespaceObject.__)('This Navigation Menu is empty.')
+    });
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleNavigationMenu, {
+    navigationMenu: navigationMenu,
+    backPath: backPath,
+    handleDelete: _handleDelete,
+    handleSave: _handleSave,
+    handleDuplicate: _handleDuplicate
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  useHistory: use_navigation_menu_handlers_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function useDeleteNavigationMenu() {
+  const {
+    deleteEntityRecord
   } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
   const {
     createSuccessNotice,
     createErrorNotice
   } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
-  const isRemovable = isTemplateRemovable(template);
-  const isRevertable = isTemplateRevertable(template);
-
-  if (!isRemovable && !isRevertable) {
-    return null;
-  }
-
-  async function revertAndSaveTemplate() {
+  const history = use_navigation_menu_handlers_useHistory();
+  const handleDelete = async navigationMenu => {
+    const postId = navigationMenu?.id;
     try {
-      await revertTemplate(template, {
-        allowUndo: false
-      });
-      await saveEditedEntityRecord('postType', template.type, template.id);
-      createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Entity reverted.'), {
+      await deleteEntityRecord('postType', postType, postId, {
+        force: true
+      }, {
+        throwOnError: true
+      });
+      createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Navigation Menu successfully deleted.'), {
+        type: 'snackbar'
+      });
+      history.push({
+        postType: 'wp_navigation'
+      });
+    } catch (error) {
+      createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: error message describing why the navigation menu could not be deleted. */
+      (0,external_wp_i18n_namespaceObject.__)(`Unable to delete Navigation Menu (%s).`), error?.message), {
+        type: 'snackbar'
+      });
+    }
+  };
+  return handleDelete;
+}
+function useSaveNavigationMenu() {
+  const {
+    getEditedEntityRecord
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEditedEntityRecord: getEditedEntityRecordSelector
+    } = select(external_wp_coreData_namespaceObject.store);
+    return {
+      getEditedEntityRecord: getEditedEntityRecordSelector
+    };
+  }, []);
+  const {
+    editEntityRecord,
+    __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
+  const {
+    createSuccessNotice,
+    createErrorNotice
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
+  const handleSave = async (navigationMenu, edits) => {
+    if (!edits) {
+      return;
+    }
+    const postId = navigationMenu?.id;
+    // Prepare for revert in case of error.
+    const originalRecord = getEditedEntityRecord('postType', NAVIGATION_POST_TYPE, postId);
+
+    // Apply the edits.
+    editEntityRecord('postType', postType, postId, edits);
+    const recordPropertiesToSave = Object.keys(edits);
+
+    // Attempt to persist.
+    try {
+      await saveSpecifiedEntityEdits('postType', postType, postId, recordPropertiesToSave, {
+        throwOnError: true
+      });
+      createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Renamed Navigation Menu'), {
         type: 'snackbar'
       });
     } catch (error) {
-      const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while reverting the entity.');
-      createErrorNotice(errorMessage, {
+      // Revert to original in case of error.
+      editEntityRecord('postType', postType, postId, originalRecord);
+      createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: error message describing why the navigation menu could not be renamed. */
+      (0,external_wp_i18n_namespaceObject.__)(`Unable to rename Navigation Menu (%s).`), error?.message), {
+        type: 'snackbar'
+      });
+    }
+  };
+  return handleSave;
+}
+function useDuplicateNavigationMenu() {
+  const history = use_navigation_menu_handlers_useHistory();
+  const {
+    saveEntityRecord
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
+  const {
+    createSuccessNotice,
+    createErrorNotice
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
+  const handleDuplicate = async navigationMenu => {
+    const menuTitle = navigationMenu?.title?.rendered || navigationMenu?.slug;
+    try {
+      const savedRecord = await saveEntityRecord('postType', postType, {
+        title: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Navigation menu title */
+        (0,external_wp_i18n_namespaceObject.__)('%s (Copy)'), menuTitle),
+        content: navigationMenu?.content?.raw,
+        status: 'publish'
+      }, {
+        throwOnError: true
+      });
+      if (savedRecord) {
+        createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Duplicated Navigation Menu'), {
+          type: 'snackbar'
+        });
+        history.push({
+          postType: postType,
+          postId: savedRecord.id
+        });
+      }
+    } catch (error) {
+      createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: error message describing why the navigation menu could not be deleted. */
+      (0,external_wp_i18n_namespaceObject.__)(`Unable to duplicate Navigation Menu (%s).`), error?.message), {
         type: 'snackbar'
       });
     }
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, {
-    icon: more_vertical,
-    label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
-    className: "edit-site-list-table__actions"
-  }, _ref2 => {
-    let {
-      onClose
-    } = _ref2;
-    return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, null, isRemovable && (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(RenameMenuItem, {
-      template: template,
-      onClose: onClose
-    }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-      isDestructive: true,
-      isTertiary: true,
-      onClick: () => {
-        removeTemplate(template);
-        onClose();
-      }
-    }, (0,external_wp_i18n_namespaceObject.__)('Delete'))), isRevertable && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
-      info: (0,external_wp_i18n_namespaceObject.__)('Restore to default state'),
-      onClick: () => {
-        revertAndSaveTemplate();
-        onClose();
-      }
-    }, (0,external_wp_i18n_namespaceObject.__)('Clear customizations')));
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plugins.js
-
-
-/**
- * WordPress dependencies
- */
-
-const plugins = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z"
-}));
-/* harmony default export */ var library_plugins = (plugins);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment-author-avatar.js
-
-
-/**
- * WordPress dependencies
- */
-
-const commentAuthorAvatar = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  fillRule: "evenodd",
-  d: "M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z",
-  clipRule: "evenodd"
-}));
-/* harmony default export */ var comment_author_avatar = (commentAuthorAvatar);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/globe.js
-
-
-/**
- * WordPress dependencies
- */
-
-const globe = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
-  xmlns: "http://www.w3.org/2000/svg",
-  viewBox: "0 0 24 24"
-}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
-  d: "M12 3.3c-4.8 0-8.8 3.9-8.8 8.8 0 4.8 3.9 8.8 8.8 8.8 4.8 0 8.8-3.9 8.8-8.8s-4-8.8-8.8-8.8zm6.5 5.5h-2.6C15.4 7.3 14.8 6 14 5c2 .6 3.6 2 4.5 3.8zm.7 3.2c0 .6-.1 1.2-.2 1.8h-2.9c.1-.6.1-1.2.1-1.8s-.1-1.2-.1-1.8H19c.2.6.2 1.2.2 1.8zM12 18.7c-1-.7-1.8-1.9-2.3-3.5h4.6c-.5 1.6-1.3 2.9-2.3 3.5zm-2.6-4.9c-.1-.6-.1-1.1-.1-1.8 0-.6.1-1.2.1-1.8h5.2c.1.6.1 1.1.1 1.8s-.1 1.2-.1 1.8H9.4zM4.8 12c0-.6.1-1.2.2-1.8h2.9c-.1.6-.1 1.2-.1 1.8 0 .6.1 1.2.1 1.8H5c-.2-.6-.2-1.2-.2-1.8zM12 5.3c1 .7 1.8 1.9 2.3 3.5H9.7c.5-1.6 1.3-2.9 2.3-3.5zM10 5c-.8 1-1.4 2.3-1.8 3.8H5.5C6.4 7 8 5.6 10 5zM5.5 15.3h2.6c.4 1.5 1 2.8 1.8 3.7-1.8-.6-3.5-2-4.4-3.7zM14 19c.8-1 1.4-2.2 1.8-3.7h2.6C17.6 17 16 18.4 14 19z"
-}));
-/* harmony default export */ var library_globe = (globe);
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/added-by.js
-
-
+  };
+  return handleDuplicate;
+}
+function useNavigationMenuHandlers() {
+  return {
+    handleDelete: useDeleteNavigationMenu(),
+    handleSave: useSaveNavigationMenu(),
+    handleDuplicate: useDuplicateNavigationMenu()
+  };
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+// Copied from packages/block-library/src/navigation/edit/navigation-menu-selector.js.
+
+function buildMenuLabel(title, id, status) {
+  if (!title) {
+    /* translators: %s is the index of the menu in the list of menus. */
+    return (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('(no title %s)'), id);
+  }
+  if (status === 'publish') {
+    return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title);
+  }
+  return (0,external_wp_i18n_namespaceObject.sprintf)(
+  // translators: %1s: title of the menu; %2s: status of the menu (draft, pending, etc.).
+  (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title), status);
+}
+
+// Save a boolean to prevent us creating a fallback more than once per session.
+let hasCreatedFallback = false;
+function SidebarNavigationScreenNavigationMenus({
+  backPath
+}) {
+  const {
+    records: navigationMenus,
+    isResolving: isResolvingNavigationMenus,
+    hasResolved: hasResolvedNavigationMenus
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', NAVIGATION_POST_TYPE, PRELOADED_NAVIGATION_MENUS_QUERY);
+  const isLoading = isResolvingNavigationMenus && !hasResolvedNavigationMenus;
+  const {
+    getNavigationFallbackId
+  } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store));
+  const firstNavigationMenu = navigationMenus?.[0];
+
+  // Save a boolean to prevent us creating a fallback more than once per session.
+  if (firstNavigationMenu) {
+    hasCreatedFallback = true;
+  }
+
+  // If there is no navigation menu found
+  // then trigger fallback algorithm to create one.
+  if (!firstNavigationMenu && !isResolvingNavigationMenus && hasResolvedNavigationMenus && !hasCreatedFallback) {
+    getNavigationFallbackId();
+  }
+  const {
+    handleSave,
+    handleDelete,
+    handleDuplicate
+  } = useNavigationMenuHandlers();
+  const hasNavigationMenus = !!navigationMenus?.length;
+  if (isLoading) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
+      backPath: backPath,
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {
+        className: "edit-site-sidebar-navigation-screen-navigation-menus__loading"
+      })
+    });
+  }
+  if (!isLoading && !hasNavigationMenus) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
+      description: (0,external_wp_i18n_namespaceObject.__)('No Navigation Menus found.'),
+      backPath: backPath
+    });
+  }
+
+  // if single menu then render it
+  if (navigationMenus?.length === 1) {
+    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleNavigationMenu, {
+      navigationMenu: firstNavigationMenu,
+      backPath: backPath,
+      handleDelete: () => handleDelete(firstNavigationMenu),
+      handleDuplicate: () => handleDuplicate(firstNavigationMenu),
+      handleSave: edits => handleSave(firstNavigationMenu, edits)
+    });
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
+    backPath: backPath,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+      children: navigationMenus?.map(({
+        id,
+        title,
+        status
+      }, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavMenuItem, {
+        postId: id,
+        withChevron: true,
+        icon: library_navigation,
+        children: buildMenuLabel(title?.rendered, index + 1, status)
+      }, id))
+    })
+  });
+}
+function SidebarNavigationScreenWrapper({
+  children,
+  actions,
+  title,
+  description,
+  backPath
+}) {
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
+    title: title || (0,external_wp_i18n_namespaceObject.__)('Navigation'),
+    actions: actions,
+    description: description || (0,external_wp_i18n_namespaceObject.__)('Manage your Navigation Menus.'),
+    backPath: backPath,
+    content: children
+  });
+}
+const NavMenuItem = ({
+  postId,
+  ...props
+}) => {
+  const linkInfo = useLink({
+    postId,
+    postType: 'wp_navigation'
+  });
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+    ...linkInfo,
+    ...props
+  });
+};
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/dataview-item.js
 /**
  * External dependencies
  */
 
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-const TEMPLATE_POST_TYPE_NAMES = ['wp_template', 'wp_template_part'];
-
-function CustomizedTooltip(_ref) {
-  let {
-    isCustomized,
-    children
-  } = _ref;
-
-  if (!isCustomized) {
-    return children;
-  }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Tooltip, {
-    text: (0,external_wp_i18n_namespaceObject.__)('This template has been customized')
-  }, children);
-}
-
-function BaseAddedBy(_ref2) {
-  let {
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+const {
+  useLocation: dataview_item_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function DataViewItem({
+  title,
+  slug,
+  customViewId,
+  type,
+  icon,
+  isActive,
+  isCustom,
+  suffix
+}) {
+  const {
+    params: {
+      postType,
+      layout
+    }
+  } = dataview_item_useLocation();
+  const iconToUse = icon || VIEW_LAYOUTS.find(v => v.type === type).icon;
+  let activeView = isCustom ? customViewId : slug;
+  if (activeView === 'all') {
+    activeView = undefined;
+  }
+  const linkInfo = useLink({
+    postType,
+    layout,
+    activeView,
+    isCustom: isCustom ? 'true' : undefined
+  });
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+    justify: "flex-start",
+    className: dist_clsx('edit-site-sidebar-dataviews-dataview-item', {
+      'is-selected': isActive
+    }),
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+      icon: iconToUse,
+      ...linkInfo,
+      "aria-current": isActive ? 'true' : undefined,
+      children: title
+    }), suffix]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-templates-browse/content.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+const content_EMPTY_ARRAY = [];
+function TemplateDataviewItem({
+  template,
+  isActive
+}) {
+  const {
     text,
-    icon,
-    imageUrl,
-    isCustomized
-  } = _ref2;
-  const [isImageLoaded, setIsImageLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
-    alignment: "left"
-  }, (0,external_wp_element_namespaceObject.createElement)(CustomizedTooltip, {
-    isCustomized: isCustomized
-  }, imageUrl ? (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: classnames_default()('edit-site-list-added-by__avatar', {
-      'is-loaded': isImageLoaded
-    })
-  }, (0,external_wp_element_namespaceObject.createElement)("img", {
-    onLoad: () => setIsImageLoaded(true),
-    alt: "",
-    src: imageUrl
-  })) : (0,external_wp_element_namespaceObject.createElement)("div", {
-    className: classnames_default()('edit-site-list-added-by__icon', {
-      'is-customized': isCustomized
-    })
-  }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
-    icon: icon
-  }))), (0,external_wp_element_namespaceObject.createElement)("span", null, text));
-}
-
-function AddedByTheme(_ref3) {
-  var _theme$name;
-
-  let {
-    slug,
-    isCustomized
-  } = _ref3;
-  const theme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getTheme(slug), [slug]);
-  return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, {
-    icon: library_layout,
-    text: (theme === null || theme === void 0 ? void 0 : (_theme$name = theme.name) === null || _theme$name === void 0 ? void 0 : _theme$name.rendered) || slug,
-    isCustomized: isCustomized
-  });
-}
-
-function AddedByPlugin(_ref4) {
-  let {
-    slug,
-    isCustomized
-  } = _ref4;
-  const plugin = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPlugin(slug), [slug]);
-  return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, {
-    icon: library_plugins,
-    text: (plugin === null || plugin === void 0 ? void 0 : plugin.name) || slug,
-    isCustomized: isCustomized
-  });
-}
-
-function AddedByAuthor(_ref5) {
-  var _user$avatar_urls;
-
-  let {
-    id
-  } = _ref5;
-  const user = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getUser(id), [id]);
-  return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, {
-    icon: comment_author_avatar,
-    imageUrl: user === null || user === void 0 ? void 0 : (_user$avatar_urls = user.avatar_urls) === null || _user$avatar_urls === void 0 ? void 0 : _user$avatar_urls[48],
-    text: user === null || user === void 0 ? void 0 : user.nickname
-  });
-}
-
-function AddedBySite() {
-  const {
-    name,
-    logoURL
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    var _getMedia;
-
-    const {
-      getEntityRecord,
-      getMedia
-    } = select(external_wp_coreData_namespaceObject.store);
-    const siteData = getEntityRecord('root', '__unstableBase');
-    return {
-      name: siteData === null || siteData === void 0 ? void 0 : siteData.name,
-      logoURL: siteData !== null && siteData !== void 0 && siteData.site_logo ? (_getMedia = getMedia(siteData.site_logo)) === null || _getMedia === void 0 ? void 0 : _getMedia.source_url : undefined
-    };
-  }, []);
-  return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, {
-    icon: library_globe,
-    imageUrl: logoURL,
-    text: name
-  });
-}
-
-function AddedBy(_ref6) {
-  let {
-    templateType,
-    template
-  } = _ref6;
-
-  if (!template) {
+    icon
+  } = useAddedBy(template.type, template.id);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewItem, {
+    slug: text,
+    title: text,
+    icon: icon,
+    isActive: isActive,
+    isCustom: false
+  }, text);
+}
+function DataviewsTemplatesSidebarContent({
+  activeView,
+  title
+}) {
+  const {
+    records
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_POST_TYPE, {
+    per_page: -1
+  });
+  const firstItemPerAuthorText = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    var _ref;
+    const firstItemPerAuthor = records?.reduce((acc, template) => {
+      const author = template.author_text;
+      if (author && !acc[author]) {
+        acc[author] = template;
+      }
+      return acc;
+    }, {});
+    return (_ref = firstItemPerAuthor && Object.values(firstItemPerAuthor)) !== null && _ref !== void 0 ? _ref : content_EMPTY_ARRAY;
+  }, [records]);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewItem, {
+      slug: "all",
+      title: title,
+      icon: library_layout,
+      isActive: activeView === 'all',
+      isCustom: false
+    }), firstItemPerAuthorText.map(template => {
+      return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplateDataviewItem, {
+        template: template,
+        isActive: activeView === template.author_text
+      }, template.author_text);
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-templates-browse/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  useLocation: sidebar_navigation_screen_templates_browse_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function SidebarNavigationScreenTemplatesBrowse({
+  backPath
+}) {
+  const {
+    params: {
+      activeView = 'all'
+    }
+  } = sidebar_navigation_screen_templates_browse_useLocation();
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
+    title: (0,external_wp_i18n_namespaceObject.__)('Templates'),
+    description: (0,external_wp_i18n_namespaceObject.__)('Create new templates, or reset any customizations made to the templates supplied by your theme.'),
+    backPath: backPath,
+    content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataviewsTemplatesSidebarContent, {
+      activeView: activeView,
+      title: (0,external_wp_i18n_namespaceObject.__)('All templates')
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/file.js
+/**
+ * WordPress dependencies
+ */
+
+
+const file = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
+  viewBox: "0 0 24 24",
+  xmlns: "http://www.w3.org/2000/svg",
+  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
+    fillRule: "evenodd",
+    clipRule: "evenodd",
+    d: "M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z"
+  })
+});
+/* harmony default export */ const library_file = (file);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/category-item.js
+/**
+ * Internal dependencies
+ */
+
+
+
+
+function CategoryItem({
+  count,
+  icon,
+  id,
+  isActive,
+  label,
+  type
+}) {
+  const linkInfo = useLink({
+    categoryId: id !== TEMPLATE_PART_ALL_AREAS_CATEGORY && id !== PATTERN_DEFAULT_CATEGORY ? id : undefined,
+    postType: type === TEMPLATE_PART_POST_TYPE ? TEMPLATE_PART_POST_TYPE : PATTERN_TYPES.user
+  });
+  if (!count) {
     return;
   }
-
-  if (TEMPLATE_POST_TYPE_NAMES.includes(templateType)) {
-    // Template originally provided by a theme, but customized by a user.
-    // Templates originally didn't have the 'origin' field so identify
-    // older customized templates by checking for no origin and a 'theme'
-    // or 'custom' source.
-    if (template.has_theme_file && (template.origin === 'theme' || !template.origin && ['theme', 'custom'].includes(template.source))) {
-      return (0,external_wp_element_namespaceObject.createElement)(AddedByTheme, {
-        slug: template.theme,
-        isCustomized: template.source === 'custom'
-      });
-    } // Template originally provided by a plugin, but customized by a user.
-
-
-    if (template.has_theme_file && template.origin === 'plugin') {
-      return (0,external_wp_element_namespaceObject.createElement)(AddedByPlugin, {
-        slug: template.theme,
-        isCustomized: template.source === 'custom'
-      });
-    } // Template was created from scratch, but has no author. Author support
-    // was only added to templates in WordPress 5.9. Fallback to showing the
-    // site logo and title.
-
-
-    if (!template.has_theme_file && template.source === 'custom' && !template.author) {
-      return (0,external_wp_element_namespaceObject.createElement)(AddedBySite, null);
-    }
-  } // Simply show the author for templates created from scratch that have an
-  // author or for any other post type.
-
-
-  return (0,external_wp_element_namespaceObject.createElement)(AddedByAuthor, {
-    id: template.author
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/table.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function Table(_ref) {
-  let {
-    templateType
-  } = _ref;
-  const {
-    records: templates,
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+    ...linkInfo,
+    icon: icon,
+    suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
+      children: count
+    }),
+    "aria-current": isActive ? 'true' : undefined,
+    children: label
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+const useTemplatePartsGroupedByArea = items => {
+  const allItems = items || [];
+  const templatePartAreas = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas(), []);
+
+  // Create map of template areas ensuring that default areas are displayed before
+  // any custom registered template part areas.
+  const knownAreas = {
+    header: {},
+    footer: {},
+    sidebar: {},
+    uncategorized: {}
+  };
+  templatePartAreas.forEach(templatePartArea => knownAreas[templatePartArea.area] = {
+    ...templatePartArea,
+    templateParts: []
+  });
+  const groupedByArea = allItems.reduce((accumulator, item) => {
+    const key = accumulator[item.area] ? item.area : TEMPLATE_PART_AREA_DEFAULT_CATEGORY;
+    accumulator[key].templateParts.push(item);
+    return accumulator;
+  }, knownAreas);
+  return groupedByArea;
+};
+function useTemplatePartAreas() {
+  const {
+    records: templateParts,
     isResolving: isLoading
-  } = (0,external_wp_coreData_namespaceObject.__experimentalUseEntityRecords)('postType', templateType, {
+  } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_PART_POST_TYPE, {
     per_page: -1
   });
-  const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]);
-
-  if (!templates || isLoading) {
+  return {
+    hasTemplateParts: templateParts ? !!templateParts.length : false,
+    isLoading,
+    templatePartAreas: useTemplatePartsGroupedByArea(templateParts)
+  };
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+const {
+  useLocation: sidebar_navigation_screen_patterns_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function CategoriesGroup({
+  templatePartAreas,
+  patternCategories,
+  currentCategory,
+  currentType
+}) {
+  const [allPatterns, ...otherPatterns] = patternCategories;
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+    className: "edit-site-sidebar-navigation-screen-patterns__group",
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, {
+      count: Object.values(templatePartAreas).map(({
+        templateParts
+      }) => templateParts?.length || 0).reduce((acc, val) => acc + val, 0),
+      icon: (0,external_wp_editor_namespaceObject.getTemplatePartIcon)() /* no name, so it provides the fallback icon */,
+      label: (0,external_wp_i18n_namespaceObject.__)('All template parts'),
+      id: TEMPLATE_PART_ALL_AREAS_CATEGORY,
+      type: TEMPLATE_PART_POST_TYPE,
+      isActive: currentCategory === TEMPLATE_PART_ALL_AREAS_CATEGORY && currentType === TEMPLATE_PART_POST_TYPE
+    }, "all"), Object.entries(templatePartAreas).map(([area, {
+      label,
+      templateParts
+    }]) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, {
+      count: templateParts?.length,
+      icon: (0,external_wp_editor_namespaceObject.getTemplatePartIcon)(area),
+      label: label,
+      id: area,
+      type: TEMPLATE_PART_POST_TYPE,
+      isActive: currentCategory === area && currentType === TEMPLATE_PART_POST_TYPE
+    }, area)), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-sidebar-navigation-screen-patterns__divider"
+    }), allPatterns && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, {
+      count: allPatterns.count,
+      label: allPatterns.label,
+      icon: library_file,
+      id: allPatterns.name,
+      type: PATTERN_TYPES.user,
+      isActive: currentCategory === `${allPatterns.name}` && currentType === PATTERN_TYPES.user
+    }, allPatterns.name), otherPatterns.map(category => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, {
+      count: category.count,
+      label: category.label,
+      icon: library_file,
+      id: category.name,
+      type: PATTERN_TYPES.user,
+      isActive: currentCategory === `${category.name}` && currentType === PATTERN_TYPES.user
+    }, category.name))]
+  });
+}
+function SidebarNavigationScreenPatterns({
+  backPath
+}) {
+  const {
+    params: {
+      postType,
+      categoryId
+    }
+  } = sidebar_navigation_screen_patterns_useLocation();
+  const currentType = postType || PATTERN_TYPES.user;
+  const currentCategory = categoryId || (currentType === PATTERN_TYPES.user ? PATTERN_DEFAULT_CATEGORY : TEMPLATE_PART_ALL_AREAS_CATEGORY);
+  const {
+    templatePartAreas,
+    hasTemplateParts,
+    isLoading
+  } = useTemplatePartAreas();
+  const {
+    patternCategories,
+    hasPatterns
+  } = usePatternCategories();
+  const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.is_block_theme, []);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
+    isRoot: !isBlockBasedTheme,
+    title: (0,external_wp_i18n_namespaceObject.__)('Patterns'),
+    description: (0,external_wp_i18n_namespaceObject.__)('Manage what patterns are available when editing the site.'),
+    backPath: backPath,
+    content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+      children: [isLoading && (0,external_wp_i18n_namespaceObject.__)('Loading items…'), !isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+        children: [!hasTemplateParts && !hasPatterns && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+          className: "edit-site-sidebar-navigation-screen-patterns__group",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItem, {
+            children: (0,external_wp_i18n_namespaceObject.__)('No items found')
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoriesGroup, {
+          templatePartAreas: templatePartAreas,
+          patternCategories: patternCategories,
+          currentCategory: currentCategory,
+          currentType: currentType
+        })]
+      })]
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/add-new-view.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+const {
+  useHistory: add_new_view_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function AddNewItemModalContent({
+  type,
+  setIsAdding
+}) {
+  const history = add_new_view_useHistory();
+  const {
+    saveEntityRecord
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
+  const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)('');
+  const [isSaving, setIsSaving] = (0,external_wp_element_namespaceObject.useState)(false);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
+    onSubmit: async event => {
+      event.preventDefault();
+      setIsSaving(true);
+      const {
+        getEntityRecords
+      } = (0,external_wp_data_namespaceObject.resolveSelect)(external_wp_coreData_namespaceObject.store);
+      let dataViewTaxonomyId;
+      const dataViewTypeRecords = await getEntityRecords('taxonomy', 'wp_dataviews_type', {
+        slug: type
+      });
+      if (dataViewTypeRecords && dataViewTypeRecords.length > 0) {
+        dataViewTaxonomyId = dataViewTypeRecords[0].id;
+      } else {
+        const record = await saveEntityRecord('taxonomy', 'wp_dataviews_type', {
+          name: type
+        });
+        if (record && record.id) {
+          dataViewTaxonomyId = record.id;
+        }
+      }
+      const savedRecord = await saveEntityRecord('postType', 'wp_dataviews', {
+        title,
+        status: 'publish',
+        wp_dataviews_type: dataViewTaxonomyId,
+        content: JSON.stringify(DEFAULT_VIEWS[type][0].view)
+      });
+      const {
+        params: {
+          postType
+        }
+      } = history.getLocationWithParams();
+      history.push({
+        postType,
+        activeView: savedRecord.id,
+        isCustom: 'true'
+      });
+      setIsSaving(false);
+      setIsAdding(false);
+    },
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+      spacing: "5",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
+        __nextHasNoMarginBottom: true,
+        label: (0,external_wp_i18n_namespaceObject.__)('Name'),
+        value: title,
+        onChange: setTitle,
+        placeholder: (0,external_wp_i18n_namespaceObject.__)('My view'),
+        className: "patterns-create-modal__name-input"
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        justify: "right",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          variant: "tertiary",
+          onClick: () => {
+            setIsAdding(false);
+          },
+          children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          variant: "primary",
+          type: "submit",
+          "aria-disabled": !title || isSaving,
+          isBusy: isSaving,
+          children: (0,external_wp_i18n_namespaceObject.__)('Create')
+        })]
+      })]
+    })
+  });
+}
+function AddNewItem({
+  type
+}) {
+  const [isAdding, setIsAdding] = (0,external_wp_element_namespaceObject.useState)(false);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
+      icon: library_plus,
+      onClick: () => {
+        setIsAdding(true);
+      },
+      className: "dataviews__siderbar-content-add-new-item",
+      children: (0,external_wp_i18n_namespaceObject.__)('New view')
+    }), isAdding && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Add new view'),
+      onRequestClose: () => {
+        setIsAdding(false);
+      },
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewItemModalContent, {
+        type: type,
+        setIsAdding: setIsAdding
+      })
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/custom-dataviews-list.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+const {
+  useHistory: custom_dataviews_list_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const custom_dataviews_list_EMPTY_ARRAY = [];
+function RenameItemModalContent({
+  dataviewId,
+  currentTitle,
+  setIsRenaming
+}) {
+  const {
+    editEntityRecord
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
+  const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(currentTitle);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
+    onSubmit: async event => {
+      event.preventDefault();
+      await editEntityRecord('postType', 'wp_dataviews', dataviewId, {
+        title
+      });
+      setIsRenaming(false);
+    },
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
+      spacing: "5",
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
+        __nextHasNoMarginBottom: true,
+        label: (0,external_wp_i18n_namespaceObject.__)('Name'),
+        value: title,
+        onChange: setTitle,
+        placeholder: (0,external_wp_i18n_namespaceObject.__)('My view'),
+        className: "patterns-create-modal__name-input"
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
+        justify: "right",
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          variant: "tertiary",
+          onClick: () => {
+            setIsRenaming(false);
+          },
+          children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
+          variant: "primary",
+          type: "submit",
+          "aria-disabled": !title,
+          children: (0,external_wp_i18n_namespaceObject.__)('Rename')
+        })]
+      })]
+    })
+  });
+}
+function CustomDataViewItem({
+  dataviewId,
+  isActive
+}) {
+  const history = custom_dataviews_list_useHistory();
+  const {
+    dataview
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEditedEntityRecord
+    } = select(external_wp_coreData_namespaceObject.store);
+    return {
+      dataview: getEditedEntityRecord('postType', 'wp_dataviews', dataviewId)
+    };
+  }, [dataviewId]);
+  const {
+    deleteEntityRecord
+  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
+  const type = (0,external_wp_element_namespaceObject.useMemo)(() => {
+    const viewContent = JSON.parse(dataview.content);
+    return viewContent.type;
+  }, [dataview.content]);
+  const [isRenaming, setIsRenaming] = (0,external_wp_element_namespaceObject.useState)(false);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewItem, {
+      title: dataview.title,
+      type: type,
+      isActive: isActive,
+      isCustom: true,
+      customViewId: dataviewId,
+      suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
+        icon: more_vertical,
+        label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
+        className: "edit-site-sidebar-dataviews-dataview-item__dropdown-menu",
+        toggleProps: {
+          style: {
+            color: 'inherit'
+          },
+          size: 'small'
+        },
+        children: ({
+          onClose
+        }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, {
+          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+            onClick: () => {
+              setIsRenaming(true);
+              onClose();
+            },
+            children: (0,external_wp_i18n_namespaceObject.__)('Rename')
+          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
+            onClick: async () => {
+              await deleteEntityRecord('postType', 'wp_dataviews', dataview.id, {
+                force: true
+              });
+              if (isActive) {
+                const {
+                  params: {
+                    postType
+                  }
+                } = history.getLocationWithParams();
+                history.replace({
+                  postType
+                });
+              }
+              onClose();
+            },
+            isDestructive: true,
+            children: (0,external_wp_i18n_namespaceObject.__)('Delete')
+          })]
+        })
+      })
+    }), isRenaming && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
+      title: (0,external_wp_i18n_namespaceObject.__)('Rename view'),
+      onRequestClose: () => {
+        setIsRenaming(false);
+      },
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenameItemModalContent, {
+        dataviewId: dataviewId,
+        setIsRenaming: setIsRenaming,
+        currentTitle: dataview.title
+      })
+    })]
+  });
+}
+function useCustomDataViews(type) {
+  const customDataViews = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getEntityRecords
+    } = select(external_wp_coreData_namespaceObject.store);
+    const dataViewTypeRecords = getEntityRecords('taxonomy', 'wp_dataviews_type', {
+      slug: type
+    });
+    if (!dataViewTypeRecords || dataViewTypeRecords.length === 0) {
+      return custom_dataviews_list_EMPTY_ARRAY;
+    }
+    const dataViews = getEntityRecords('postType', 'wp_dataviews', {
+      wp_dataviews_type: dataViewTypeRecords[0].id,
+      orderby: 'date',
+      order: 'asc'
+    });
+    if (!dataViews) {
+      return custom_dataviews_list_EMPTY_ARRAY;
+    }
+    return dataViews;
+  });
+  return customDataViews;
+}
+function CustomDataViewsList({
+  type,
+  activeView,
+  isCustom
+}) {
+  const customDataViews = useCustomDataViews(type);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      className: "edit-site-sidebar-navigation-screen-dataviews__group-header",
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
+        level: 2,
+        children: (0,external_wp_i18n_namespaceObject.__)('Custom Views')
+      })
+    }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+      children: [customDataViews.map(customViewRecord => {
+        return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CustomDataViewItem, {
+          dataviewId: customViewRecord.id,
+          isActive: isCustom && Number(activeView) === customViewRecord.id
+        }, customViewRecord.id);
+      }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewItem, {
+        type: type
+      })]
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const {
+  useLocation: sidebar_dataviews_useLocation
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+
+
+
+
+
+function DataViewsSidebarContent() {
+  const {
+    params: {
+      postType,
+      activeView = 'all',
+      isCustom = 'false'
+    }
+  } = sidebar_dataviews_useLocation();
+  if (!postType) {
     return null;
   }
-
-  if (!templates.length) {
-    var _postType$labels, _postType$labels$name;
-
-    return (0,external_wp_element_namespaceObject.createElement)("div", null, (0,external_wp_i18n_namespaceObject.sprintf)( // translators: The template type name, should be either "templates" or "template parts".
-    (0,external_wp_i18n_namespaceObject.__)('No %s found.'), postType === null || postType === void 0 ? void 0 : (_postType$labels = postType.labels) === null || _postType$labels === void 0 ? void 0 : (_postType$labels$name = _postType$labels.name) === null || _postType$labels$name === void 0 ? void 0 : _postType$labels$name.toLowerCase()));
-  }
-
-  return (// These explicit aria roles are needed for Safari.
-    // See https://developer.mozilla.org/en-US/docs/Web/CSS/display#tables
-    (0,external_wp_element_namespaceObject.createElement)("table", {
-      className: "edit-site-list-table",
-      role: "table"
-    }, (0,external_wp_element_namespaceObject.createElement)("thead", null, (0,external_wp_element_namespaceObject.createElement)("tr", {
-      className: "edit-site-list-table-head",
-      role: "row"
-    }, (0,external_wp_element_namespaceObject.createElement)("th", {
-      className: "edit-site-list-table-column",
-      role: "columnheader"
-    }, (0,external_wp_i18n_namespaceObject.__)('Template')), (0,external_wp_element_namespaceObject.createElement)("th", {
-      className: "edit-site-list-table-column",
-      role: "columnheader"
-    }, (0,external_wp_i18n_namespaceObject.__)('Added by')), (0,external_wp_element_namespaceObject.createElement)("th", {
-      className: "edit-site-list-table-column",
-      role: "columnheader"
-    }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, null, (0,external_wp_i18n_namespaceObject.__)('Actions'))))), (0,external_wp_element_namespaceObject.createElement)("tbody", null, templates.map(template => {
-      var _template$title;
-
-      return (0,external_wp_element_namespaceObject.createElement)("tr", {
-        key: template.id,
-        className: "edit-site-list-table-row",
-        role: "row"
-      }, (0,external_wp_element_namespaceObject.createElement)("td", {
-        className: "edit-site-list-table-column",
-        role: "cell"
-      }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
-        level: 4
-      }, (0,external_wp_element_namespaceObject.createElement)(Link, {
-        params: {
-          postId: template.id,
-          postType: template.type
-        }
-      }, (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(((_template$title = template.title) === null || _template$title === void 0 ? void 0 : _template$title.rendered) || template.slug))), template.description), (0,external_wp_element_namespaceObject.createElement)("td", {
-        className: "edit-site-list-table-column",
-        role: "cell"
-      }, (0,external_wp_element_namespaceObject.createElement)(AddedBy, {
-        templateType: templateType,
-        template: template
-      })), (0,external_wp_element_namespaceObject.createElement)("td", {
-        className: "edit-site-list-table-column",
-        role: "cell"
-      }, (0,external_wp_element_namespaceObject.createElement)(Actions, {
-        template: template
-      })));
-    })))
-  );
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/index.js
-
-
+  const isCustomBoolean = isCustom === 'true';
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
+      children: DEFAULT_VIEWS[postType].map(dataview => {
+        return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewItem, {
+          slug: dataview.slug,
+          title: dataview.title,
+          icon: dataview.icon,
+          type: dataview.view.type,
+          isActive: !isCustomBoolean && dataview.slug === activeView,
+          isCustom: false
+        }, dataview.slug);
+      })
+    }), window?.__experimentalCustomViews && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CustomDataViewsList, {
+      activeView: activeView,
+      type: postType,
+      isCustom: true
+    })]
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/layout/router.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+const {
+  useLocation: router_useLocation,
+  useHistory: router_useHistory
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+function useRedirectOldPaths() {
+  const history = router_useHistory();
+  const {
+    params
+  } = router_useLocation();
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    const {
+      postType,
+      path,
+      categoryType,
+      ...rest
+    } = params;
+    if (path === '/wp_template_part/all') {
+      history.replace({
+        postType: TEMPLATE_PART_POST_TYPE
+      });
+    }
+    if (path === '/page') {
+      history.replace({
+        postType: 'page',
+        ...rest
+      });
+    }
+    if (path === '/wp_template') {
+      history.replace({
+        postType: TEMPLATE_POST_TYPE,
+        ...rest
+      });
+    }
+    if (path === '/patterns') {
+      history.replace({
+        postType: categoryType === TEMPLATE_PART_POST_TYPE ? TEMPLATE_PART_POST_TYPE : PATTERN_TYPES.user,
+        ...rest
+      });
+    }
+    if (path === '/navigation') {
+      history.replace({
+        postType: NAVIGATION_POST_TYPE,
+        ...rest
+      });
+    }
+  }, [history, params]);
+}
+function useLayoutAreas() {
+  const isSiteEditorLoading = useIsSiteEditorLoading();
+  const {
+    params
+  } = router_useLocation();
+  const {
+    postType,
+    postId,
+    path,
+    layout,
+    isCustom,
+    canvas
+  } = params;
+  const hasEditCanvasMode = canvas === 'edit';
+  useRedirectOldPaths();
+
+  // Page list
+  if (postType === 'page') {
+    const isListLayout = layout === 'list' || !layout;
+    return {
+      key: 'pages',
+      areas: {
+        sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
+          title: (0,external_wp_i18n_namespaceObject.__)('Pages'),
+          backPath: {},
+          content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewsSidebarContent, {})
+        }),
+        content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PagePages, {}),
+        preview: (isListLayout || hasEditCanvasMode) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+          isLoading: isSiteEditorLoading
+        }),
+        mobile: hasEditCanvasMode ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+          isLoading: isSiteEditorLoading
+        }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PagePages, {})
+      },
+      widths: {
+        content: isListLayout ? 380 : undefined
+      }
+    };
+  }
+
+  // Templates
+  if (postType === TEMPLATE_POST_TYPE) {
+    const isListLayout = isCustom !== 'true' && layout === 'list';
+    return {
+      key: 'templates',
+      areas: {
+        sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenTemplatesBrowse, {
+          backPath: {}
+        }),
+        content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PageTemplates, {}),
+        preview: (isListLayout || hasEditCanvasMode) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+          isLoading: isSiteEditorLoading
+        }),
+        mobile: hasEditCanvasMode ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+          isLoading: isSiteEditorLoading
+        }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PageTemplates, {})
+      },
+      widths: {
+        content: isListLayout ? 380 : undefined
+      }
+    };
+  }
+
+  // Patterns
+  if ([TEMPLATE_PART_POST_TYPE, PATTERN_TYPES.user].includes(postType)) {
+    return {
+      key: 'patterns',
+      areas: {
+        sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenPatterns, {
+          backPath: {}
+        }),
+        content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataviewsPatterns, {}),
+        mobile: hasEditCanvasMode ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+          isLoading: isSiteEditorLoading
+        }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataviewsPatterns, {}),
+        preview: hasEditCanvasMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+          isLoading: isSiteEditorLoading
+        })
+      }
+    };
+  }
+
+  // Styles
+  if (path === '/wp_global_styles') {
+    return {
+      key: 'styles',
+      areas: {
+        sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenGlobalStyles, {
+          backPath: {}
+        }),
+        preview: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+          isLoading: isSiteEditorLoading
+        }),
+        mobile: hasEditCanvasMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+          isLoading: isSiteEditorLoading
+        })
+      }
+    };
+  }
+
+  // Navigation
+  if (postType === NAVIGATION_POST_TYPE) {
+    if (postId) {
+      return {
+        key: 'navigation',
+        areas: {
+          sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenNavigationMenu, {
+            backPath: {
+              postType: NAVIGATION_POST_TYPE
+            }
+          }),
+          preview: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+            isLoading: isSiteEditorLoading
+          }),
+          mobile: hasEditCanvasMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+            isLoading: isSiteEditorLoading
+          })
+        }
+      };
+    }
+    return {
+      key: 'navigation',
+      areas: {
+        sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenNavigationMenus, {
+          backPath: {}
+        }),
+        preview: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+          isLoading: isSiteEditorLoading
+        }),
+        mobile: hasEditCanvasMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+          isLoading: isSiteEditorLoading
+        })
+      }
+    };
+  }
+
+  // Fallback shows the home page preview
+  return {
+    key: 'default',
+    areas: {
+      sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenMain, {}),
+      preview: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+        isLoading: isSiteEditorLoading
+      }),
+      mobile: hasEditCanvasMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
+        isLoading: isSiteEditorLoading
+      })
+    }
+  };
+}
+
+;// CONCATENATED MODULE: ./node_modules/@react-spring/rafz/dist/esm/index.js
+var esm_f=esm_l(),esm_n=e=>esm_c(e,esm_f),esm_m=esm_l();esm_n.write=e=>esm_c(e,esm_m);var esm_d=esm_l();esm_n.onStart=e=>esm_c(e,esm_d);var esm_h=esm_l();esm_n.onFrame=e=>esm_c(e,esm_h);var esm_p=esm_l();esm_n.onFinish=e=>esm_c(e,esm_p);var esm_i=[];esm_n.setTimeout=(e,t)=>{let a=esm_n.now()+t,o=()=>{let F=esm_i.findIndex(z=>z.cancel==o);~F&&esm_i.splice(F,1),esm_u-=~F?1:0},s={time:a,handler:e,cancel:o};return esm_i.splice(esm_w(a),0,s),esm_u+=1,esm_v(),s};var esm_w=e=>~(~esm_i.findIndex(t=>t.time>e)||~esm_i.length);esm_n.cancel=e=>{esm_d.delete(e),esm_h.delete(e),esm_p.delete(e),esm_f.delete(e),esm_m.delete(e)};esm_n.sync=e=>{T=!0,esm_n.batchedUpdates(e),T=!1};esm_n.throttle=e=>{let t;function a(){try{e(...t)}finally{t=null}}function o(...s){t=s,esm_n.onStart(a)}return o.handler=e,o.cancel=()=>{esm_d.delete(a),t=null},o};var esm_y=typeof window<"u"?window.requestAnimationFrame:()=>{};esm_n.use=e=>esm_y=e;esm_n.now=typeof performance<"u"?()=>performance.now():Date.now;esm_n.batchedUpdates=e=>e();esm_n.catch=console.error;esm_n.frameLoop="always";esm_n.advance=()=>{esm_n.frameLoop!=="demand"?console.warn("Cannot call the manual advancement of rafz whilst frameLoop is not set as demand"):esm_x()};var esm_r=-1,esm_u=0,T=!1;function esm_c(e,t){T?(t.delete(e),e(0)):(t.add(e),esm_v())}function esm_v(){esm_r<0&&(esm_r=0,esm_n.frameLoop!=="demand"&&esm_y(esm_b))}function esm_R(){esm_r=-1}function esm_b(){~esm_r&&(esm_y(esm_b),esm_n.batchedUpdates(esm_x))}function esm_x(){let e=esm_r;esm_r=esm_n.now();let t=esm_w(esm_r);if(t&&(Q(esm_i.splice(0,t),a=>a.handler()),esm_u-=t),!esm_u){esm_R();return}esm_d.flush(),esm_f.flush(e?Math.min(64,esm_r-e):16.667),esm_h.flush(),esm_m.flush(),esm_p.flush()}function esm_l(){let e=new Set,t=e;return{add(a){esm_u+=t==e&&!e.has(a)?1:0,e.add(a)},delete(a){return esm_u-=t==e&&e.has(a)?1:0,e.delete(a)},flush(a){t.size&&(e=new Set,esm_u-=t.size,Q(t,o=>o(a)&&e.add(o)),esm_u+=e.size,t=e)}}}function Q(e,t){e.forEach(a=>{try{t(a)}catch(o){esm_n.catch(o)}})}var esm_S={count(){return esm_u},isRunning(){return esm_r>=0},clear(){esm_r=-1,esm_i=[],esm_d=esm_l(),esm_f=esm_l(),esm_h=esm_l(),esm_m=esm_l(),esm_p=esm_l(),esm_u=0}};
+
+;// CONCATENATED MODULE: ./node_modules/@react-spring/shared/dist/esm/index.js
+var ze=Object.defineProperty;var Le=(e,t)=>{for(var r in t)ze(e,r,{get:t[r],enumerable:!0})};var dist_esm_p={};Le(dist_esm_p,{assign:()=>U,colors:()=>dist_esm_c,createStringInterpolator:()=>esm_k,skipAnimation:()=>ee,to:()=>J,willAdvance:()=>dist_esm_S});function Y(){}var mt=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,configurable:!0}),dist_esm_l={arr:Array.isArray,obj:e=>!!e&&e.constructor.name==="Object",fun:e=>typeof e=="function",str:e=>typeof e=="string",num:e=>typeof e=="number",und:e=>e===void 0};function bt(e,t){if(dist_esm_l.arr(e)){if(!dist_esm_l.arr(t)||e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}return e===t}var esm_Ve=(e,t)=>e.forEach(t);function xt(e,t,r){if(dist_esm_l.arr(e)){for(let n=0;n<e.length;n++)t.call(r,e[n],`${n}`);return}for(let n in e)e.hasOwnProperty(n)&&t.call(r,e[n],n)}var ht=e=>dist_esm_l.und(e)?[]:dist_esm_l.arr(e)?e:[e];function Pe(e,t){if(e.size){let r=Array.from(e);e.clear(),esm_Ve(r,t)}}var yt=(e,...t)=>Pe(e,r=>r(...t)),dist_esm_h=()=>typeof window>"u"||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent);var esm_k,J,dist_esm_c=null,ee=!1,dist_esm_S=Y,U=e=>{e.to&&(J=e.to),e.now&&(esm_n.now=e.now),e.colors!==void 0&&(dist_esm_c=e.colors),e.skipAnimation!=null&&(ee=e.skipAnimation),e.createStringInterpolator&&(esm_k=e.createStringInterpolator),e.requestAnimationFrame&&esm_n.use(e.requestAnimationFrame),e.batchedUpdates&&(esm_n.batchedUpdates=e.batchedUpdates),e.willAdvance&&(dist_esm_S=e.willAdvance),e.frameLoop&&(esm_n.frameLoop=e.frameLoop)};var esm_E=new Set,dist_esm_u=[],esm_H=[],A=0,qe={get idle(){return!esm_E.size&&!dist_esm_u.length},start(e){A>e.priority?(esm_E.add(e),esm_n.onStart($e)):(te(e),esm_n(B))},advance:B,sort(e){if(A)esm_n.onFrame(()=>qe.sort(e));else{let t=dist_esm_u.indexOf(e);~t&&(dist_esm_u.splice(t,1),re(e))}},clear(){dist_esm_u=[],esm_E.clear()}};function $e(){esm_E.forEach(te),esm_E.clear(),esm_n(B)}function te(e){dist_esm_u.includes(e)||re(e)}function re(e){dist_esm_u.splice(Ge(dist_esm_u,t=>t.priority>e.priority),0,e)}function B(e){let t=esm_H;for(let r=0;r<dist_esm_u.length;r++){let n=dist_esm_u[r];A=n.priority,n.idle||(dist_esm_S(n),n.advance(e),n.idle||t.push(n))}return A=0,esm_H=dist_esm_u,esm_H.length=0,dist_esm_u=t,dist_esm_u.length>0}function Ge(e,t){let r=e.findIndex(t);return r<0?e.length:r}var ne=(e,t,r)=>Math.min(Math.max(r,e),t);var It={transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199};var dist_esm_d="[-+]?\\d*\\.?\\d+",esm_M=dist_esm_d+"%";function C(...e){return"\\(\\s*("+e.join(")\\s*,\\s*(")+")\\s*\\)"}var oe=new RegExp("rgb"+C(dist_esm_d,dist_esm_d,dist_esm_d)),fe=new RegExp("rgba"+C(dist_esm_d,dist_esm_d,dist_esm_d,dist_esm_d)),ae=new RegExp("hsl"+C(dist_esm_d,esm_M,esm_M)),ie=new RegExp("hsla"+C(dist_esm_d,esm_M,esm_M,dist_esm_d)),se=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,ue=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,le=/^#([0-9a-fA-F]{6})$/,esm_ce=/^#([0-9a-fA-F]{8})$/;function be(e){let t;return typeof e=="number"?e>>>0===e&&e>=0&&e<=4294967295?e:null:(t=le.exec(e))?parseInt(t[1]+"ff",16)>>>0:dist_esm_c&&dist_esm_c[e]!==void 0?dist_esm_c[e]:(t=oe.exec(e))?(dist_esm_y(t[1])<<24|dist_esm_y(t[2])<<16|dist_esm_y(t[3])<<8|255)>>>0:(t=fe.exec(e))?(dist_esm_y(t[1])<<24|dist_esm_y(t[2])<<16|dist_esm_y(t[3])<<8|me(t[4]))>>>0:(t=se.exec(e))?parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3]+"ff",16)>>>0:(t=esm_ce.exec(e))?parseInt(t[1],16)>>>0:(t=ue.exec(e))?parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3]+t[4]+t[4],16)>>>0:(t=ae.exec(e))?(de(esm_pe(t[1]),esm_z(t[2]),esm_z(t[3]))|255)>>>0:(t=ie.exec(e))?(de(esm_pe(t[1]),esm_z(t[2]),esm_z(t[3]))|me(t[4]))>>>0:null}function esm_j(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function de(e,t,r){let n=r<.5?r*(1+t):r+t-r*t,f=2*r-n,o=esm_j(f,n,e+1/3),i=esm_j(f,n,e),s=esm_j(f,n,e-1/3);return Math.round(o*255)<<24|Math.round(i*255)<<16|Math.round(s*255)<<8}function dist_esm_y(e){let t=parseInt(e,10);return t<0?0:t>255?255:t}function esm_pe(e){return(parseFloat(e)%360+360)%360/360}function me(e){let t=parseFloat(e);return t<0?0:t>1?255:Math.round(t*255)}function esm_z(e){let t=parseFloat(e);return t<0?0:t>100?1:t/100}function D(e){let t=be(e);if(t===null)return e;t=t||0;let r=(t&4278190080)>>>24,n=(t&16711680)>>>16,f=(t&65280)>>>8,o=(t&255)/255;return`rgba(${r}, ${n}, ${f}, ${o})`}var W=(e,t,r)=>{if(dist_esm_l.fun(e))return e;if(dist_esm_l.arr(e))return W({range:e,output:t,extrapolate:r});if(dist_esm_l.str(e.output[0]))return esm_k(e);let n=e,f=n.output,o=n.range||[0,1],i=n.extrapolateLeft||n.extrapolate||"extend",s=n.extrapolateRight||n.extrapolate||"extend",x=n.easing||(a=>a);return a=>{let F=He(a,o);return Ue(a,o[F],o[F+1],f[F],f[F+1],x,i,s,n.map)}};function Ue(e,t,r,n,f,o,i,s,x){let a=x?x(e):e;if(a<t){if(i==="identity")return a;i==="clamp"&&(a=t)}if(a>r){if(s==="identity")return a;s==="clamp"&&(a=r)}return n===f?n:t===r?e<=t?n:f:(t===-1/0?a=-a:r===1/0?a=a-t:a=(a-t)/(r-t),a=o(a),n===-1/0?a=-a:f===1/0?a=a+n:a=a*(f-n)+n,a)}function He(e,t){for(var r=1;r<t.length-1&&!(t[r]>=e);++r);return r-1}var Be=(e,t="end")=>r=>{r=t==="end"?Math.min(r,.999):Math.max(r,.001);let n=r*e,f=t==="end"?Math.floor(n):Math.ceil(n);return ne(0,1,f/e)},P=1.70158,L=P*1.525,xe=P+1,he=2*Math.PI/3,ye=2*Math.PI/4.5,V=e=>e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375,Lt={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>1-(1-e)*(1-e),easeInOutQuad:e=>e<.5?2*e*e:1-Math.pow(-2*e+2,2)/2,easeInCubic:e=>e*e*e,easeOutCubic:e=>1-Math.pow(1-e,3),easeInOutCubic:e=>e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2,easeInQuart:e=>e*e*e*e,easeOutQuart:e=>1-Math.pow(1-e,4),easeInOutQuart:e=>e<.5?8*e*e*e*e:1-Math.pow(-2*e+2,4)/2,easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>1-Math.pow(1-e,5),easeInOutQuint:e=>e<.5?16*e*e*e*e*e:1-Math.pow(-2*e+2,5)/2,easeInSine:e=>1-Math.cos(e*Math.PI/2),easeOutSine:e=>Math.sin(e*Math.PI/2),easeInOutSine:e=>-(Math.cos(Math.PI*e)-1)/2,easeInExpo:e=>e===0?0:Math.pow(2,10*e-10),easeOutExpo:e=>e===1?1:1-Math.pow(2,-10*e),easeInOutExpo:e=>e===0?0:e===1?1:e<.5?Math.pow(2,20*e-10)/2:(2-Math.pow(2,-20*e+10))/2,easeInCirc:e=>1-Math.sqrt(1-Math.pow(e,2)),easeOutCirc:e=>Math.sqrt(1-Math.pow(e-1,2)),easeInOutCirc:e=>e<.5?(1-Math.sqrt(1-Math.pow(2*e,2)))/2:(Math.sqrt(1-Math.pow(-2*e+2,2))+1)/2,easeInBack:e=>xe*e*e*e-P*e*e,easeOutBack:e=>1+xe*Math.pow(e-1,3)+P*Math.pow(e-1,2),easeInOutBack:e=>e<.5?Math.pow(2*e,2)*((L+1)*2*e-L)/2:(Math.pow(2*e-2,2)*((L+1)*(e*2-2)+L)+2)/2,easeInElastic:e=>e===0?0:e===1?1:-Math.pow(2,10*e-10)*Math.sin((e*10-10.75)*he),easeOutElastic:e=>e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e*10-.75)*he)+1,easeInOutElastic:e=>e===0?0:e===1?1:e<.5?-(Math.pow(2,20*e-10)*Math.sin((20*e-11.125)*ye))/2:Math.pow(2,-20*e+10)*Math.sin((20*e-11.125)*ye)/2+1,easeInBounce:e=>1-V(1-e),easeOutBounce:V,easeInOutBounce:e=>e<.5?(1-V(1-2*e))/2:(1+V(2*e-1))/2,steps:Be};var esm_g=Symbol.for("FluidValue.get"),dist_esm_m=Symbol.for("FluidValue.observers");var Pt=e=>Boolean(e&&e[esm_g]),ve=e=>e&&e[esm_g]?e[esm_g]():e,esm_qt=e=>e[dist_esm_m]||null;function je(e,t){e.eventObserved?e.eventObserved(t):e(t)}function $t(e,t){let r=e[dist_esm_m];r&&r.forEach(n=>{je(n,t)})}var esm_ge=class{[esm_g];[dist_esm_m];constructor(t){if(!t&&!(t=this.get))throw Error("Unknown getter");De(this,t)}},De=(e,t)=>Ee(e,esm_g,t);function Gt(e,t){if(e[esm_g]){let r=e[dist_esm_m];r||Ee(e,dist_esm_m,r=new Set),r.has(t)||(r.add(t),e.observerAdded&&e.observerAdded(r.size,t))}return t}function Qt(e,t){let r=e[dist_esm_m];if(r&&r.has(t)){let n=r.size-1;n?r.delete(t):e[dist_esm_m]=null,e.observerRemoved&&e.observerRemoved(n,t)}}var Ee=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,configurable:!0});var O=/[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,esm_Oe=/(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi,K=new RegExp(`(${O.source})(%|[a-z]+)`,"i"),we=/rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi,dist_esm_b=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;var esm_N=e=>{let[t,r]=We(e);if(!t||dist_esm_h())return e;let n=window.getComputedStyle(document.documentElement).getPropertyValue(t);if(n)return n.trim();if(r&&r.startsWith("--")){let f=window.getComputedStyle(document.documentElement).getPropertyValue(r);return f||e}else{if(r&&dist_esm_b.test(r))return esm_N(r);if(r)return r}return e},We=e=>{let t=dist_esm_b.exec(e);if(!t)return[,];let[,r,n]=t;return[r,n]};var _,esm_Ke=(e,t,r,n,f)=>`rgba(${Math.round(t)}, ${Math.round(r)}, ${Math.round(n)}, ${f})`,Xt=e=>{_||(_=dist_esm_c?new RegExp(`(${Object.keys(dist_esm_c).join("|")})(?!\\w)`,"g"):/^\b$/);let t=e.output.map(o=>ve(o).replace(dist_esm_b,esm_N).replace(esm_Oe,D).replace(_,D)),r=t.map(o=>o.match(O).map(Number)),f=r[0].map((o,i)=>r.map(s=>{if(!(i in s))throw Error('The arity of each "output" value must be equal');return s[i]})).map(o=>W({...e,output:o}));return o=>{let i=!K.test(t[0])&&t.find(x=>K.test(x))?.replace(O,""),s=0;return t[0].replace(O,()=>`${f[s++](o)}${i||""}`).replace(we,esm_Ke)}};var Z="react-spring: ",Te=e=>{let t=e,r=!1;if(typeof t!="function")throw new TypeError(`${Z}once requires a function parameter`);return(...n)=>{r||(t(...n),r=!0)}},Ne=Te(console.warn);function Jt(){Ne(`${Z}The "interpolate" function is deprecated in v9 (use "to" instead)`)}var _e=Te(console.warn);function er(){_e(`${Z}Directly calling start instead of using the api object is deprecated in v9 (use ".start" instead), this will be removed in later 0.X.0 versions`)}function esm_or(e){return dist_esm_l.str(e)&&(e[0]=="#"||/\d/.test(e)||!dist_esm_h()&&dist_esm_b.test(e)||e in(dist_esm_c||{}))}var dist_esm_v,q=new WeakMap,Ze=e=>e.forEach(({target:t,contentRect:r})=>q.get(t)?.forEach(n=>n(r)));function Fe(e,t){dist_esm_v||typeof ResizeObserver<"u"&&(dist_esm_v=new ResizeObserver(Ze));let r=q.get(t);return r||(r=new Set,q.set(t,r)),r.add(e),dist_esm_v&&dist_esm_v.observe(t),()=>{let n=q.get(t);!n||(n.delete(e),!n.size&&dist_esm_v&&dist_esm_v.unobserve(t))}}var esm_$=new Set,dist_esm_w,esm_Xe=()=>{let e=()=>{esm_$.forEach(t=>t({width:window.innerWidth,height:window.innerHeight}))};return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}},Ie=e=>(esm_$.add(e),dist_esm_w||(dist_esm_w=esm_Xe()),()=>{esm_$.delete(e),!esm_$.size&&dist_esm_w&&(dist_esm_w(),dist_esm_w=void 0)});var ke=(e,{container:t=document.documentElement}={})=>t===document.documentElement?Ie(e):Fe(e,t);var Se=(e,t,r)=>t-e===0?1:(r-e)/(t-e);var esm_Ye={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}},esm_G=class{callback;container;info;constructor(t,r){this.callback=t,this.container=r,this.info={time:0,x:this.createAxis(),y:this.createAxis()}}createAxis=()=>({current:0,progress:0,scrollLength:0});updateAxis=t=>{let r=this.info[t],{length:n,position:f}=esm_Ye[t];r.current=this.container[`scroll${f}`],r.scrollLength=this.container["scroll"+n]-this.container["client"+n],r.progress=Se(0,r.scrollLength,r.current)};update=()=>{this.updateAxis("x"),this.updateAxis("y")};sendEvent=()=>{this.callback(this.info)};advance=()=>{this.update(),this.sendEvent()}};var esm_T=new WeakMap,Ae=new WeakMap,X=new WeakMap,Me=e=>e===document.documentElement?window:e,yr=(e,{container:t=document.documentElement}={})=>{let r=X.get(t);r||(r=new Set,X.set(t,r));let n=new esm_G(e,t);if(r.add(n),!esm_T.has(t)){let o=()=>(r?.forEach(s=>s.advance()),!0);esm_T.set(t,o);let i=Me(t);window.addEventListener("resize",o,{passive:!0}),t!==document.documentElement&&Ae.set(t,ke(o,{container:t})),i.addEventListener("scroll",o,{passive:!0})}let f=esm_T.get(t);return Re(f),()=>{Re.cancel(f);let o=X.get(t);if(!o||(o.delete(n),o.size))return;let i=esm_T.get(t);esm_T.delete(t),i&&(Me(t).removeEventListener("scroll",i),window.removeEventListener("resize",i),Ae.get(t)?.())}};function Er(e){let t=Je(null);return t.current===null&&(t.current=e()),t.current}var esm_Q=dist_esm_h()?external_React_.useEffect:external_React_.useLayoutEffect;var Ce=()=>{let e=(0,external_React_.useRef)(!1);return esm_Q(()=>(e.current=!0,()=>{e.current=!1}),[]),e};function Mr(){let e=(0,external_React_.useState)()[1],t=Ce();return()=>{t.current&&e(Math.random())}}function Lr(e,t){let[r]=(0,external_React_.useState)(()=>({inputs:t,result:e()})),n=(0,external_React_.useRef)(),f=n.current,o=f;return o?Boolean(t&&o.inputs&&it(t,o.inputs))||(o={inputs:t,result:e()}):o=r,(0,external_React_.useEffect)(()=>{n.current=o,f==r&&(r.inputs=r.result=void 0)},[o]),o.result}function it(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}var $r=e=>(0,external_React_.useEffect)(e,ut),ut=[];function Ur(e){let t=ct();return lt(()=>{t.current=e}),t.current}var Wr=()=>{let[e,t]=dt(null);return esm_Q(()=>{let r=window.matchMedia("(prefers-reduced-motion)"),n=f=>{t(f.matches),U({skipAnimation:f.matches})};return n(r),r.addEventListener("change",n),()=>{r.removeEventListener("change",n)}},[]),e};
+
+;// CONCATENATED MODULE: ./node_modules/@react-spring/animated/dist/esm/index.js
+var animated_dist_esm_h=Symbol.for("Animated:node"),animated_dist_esm_v=e=>!!e&&e[animated_dist_esm_h]===e,dist_esm_k=e=>e&&e[animated_dist_esm_h],esm_D=(e,t)=>mt(e,animated_dist_esm_h,t),F=e=>e&&e[animated_dist_esm_h]&&e[animated_dist_esm_h].getPayload(),animated_dist_esm_c=class{payload;constructor(){esm_D(this,this)}getPayload(){return this.payload||[]}};var animated_dist_esm_l=class extends animated_dist_esm_c{constructor(r){super();this._value=r;dist_esm_l.num(this._value)&&(this.lastPosition=this._value)}done=!0;elapsedTime;lastPosition;lastVelocity;v0;durationProgress=0;static create(r){return new animated_dist_esm_l(r)}getPayload(){return[this]}getValue(){return this._value}setValue(r,n){return dist_esm_l.num(r)&&(this.lastPosition=r,n&&(r=Math.round(r/n)*n,this.done&&(this.lastPosition=r))),this._value===r?!1:(this._value=r,!0)}reset(){let{done:r}=this;this.done=!1,dist_esm_l.num(this._value)&&(this.elapsedTime=0,this.durationProgress=0,this.lastPosition=this._value,r&&(this.lastVelocity=null),this.v0=null)}};var animated_dist_esm_d=class extends animated_dist_esm_l{_string=null;_toString;constructor(t){super(0),this._toString=W({output:[t,t]})}static create(t){return new animated_dist_esm_d(t)}getValue(){let t=this._string;return t??(this._string=this._toString(this._value))}setValue(t){if(dist_esm_l.str(t)){if(t==this._string)return!1;this._string=t,this._value=1}else if(super.setValue(t))this._string=null;else return!1;return!0}reset(t){t&&(this._toString=W({output:[this.getValue(),t]})),this._value=0,super.reset()}};var dist_esm_f={dependencies:null};var animated_dist_esm_u=class extends animated_dist_esm_c{constructor(r){super();this.source=r;this.setValue(r)}getValue(r){let n={};return xt(this.source,(a,i)=>{animated_dist_esm_v(a)?n[i]=a.getValue(r):Pt(a)?n[i]=ve(a):r||(n[i]=a)}),n}setValue(r){this.source=r,this.payload=this._makePayload(r)}reset(){this.payload&&esm_Ve(this.payload,r=>r.reset())}_makePayload(r){if(r){let n=new Set;return xt(r,this._addToPayload,n),Array.from(n)}}_addToPayload(r){dist_esm_f.dependencies&&Pt(r)&&dist_esm_f.dependencies.add(r);let n=F(r);n&&esm_Ve(n,a=>this.add(a))}};var animated_dist_esm_y=class extends animated_dist_esm_u{constructor(t){super(t)}static create(t){return new animated_dist_esm_y(t)}getValue(){return this.source.map(t=>t.getValue())}setValue(t){let r=this.getPayload();return t.length==r.length?r.map((n,a)=>n.setValue(t[a])).some(Boolean):(super.setValue(t.map(dist_esm_z)),!0)}};function dist_esm_z(e){return(esm_or(e)?animated_dist_esm_d:animated_dist_esm_l).create(e)}function esm_Le(e){let t=dist_esm_k(e);return t?t.constructor:dist_esm_l.arr(e)?animated_dist_esm_y:esm_or(e)?animated_dist_esm_d:animated_dist_esm_l}var dist_esm_x=(e,t)=>{let r=!dist_esm_l.fun(e)||e.prototype&&e.prototype.isReactComponent;return (0,external_React_.forwardRef)((n,a)=>{let i=(0,external_React_.useRef)(null),o=r&&(0,external_React_.useCallback)(s=>{i.current=esm_ae(a,s)},[a]),[m,T]=esm_ne(n,t),W=Mr(),P=()=>{let s=i.current;if(r&&!s)return;(s?t.applyAnimatedValues(s,m.getValue(!0)):!1)===!1&&W()},_=new animated_dist_esm_b(P,T),p=(0,external_React_.useRef)();esm_Q(()=>(p.current=_,esm_Ve(T,s=>Gt(s,_)),()=>{p.current&&(esm_Ve(p.current.deps,s=>Qt(s,p.current)),esm_n.cancel(p.current.update))})),(0,external_React_.useEffect)(P,[]),$r(()=>()=>{let s=p.current;esm_Ve(s.deps,S=>Qt(S,s))});let $=t.getComponentProps(m.getValue());return external_React_.createElement(e,{...$,ref:o})})},animated_dist_esm_b=class{constructor(t,r){this.update=t;this.deps=r}eventObserved(t){t.type=="change"&&esm_n.write(this.update)}};function esm_ne(e,t){let r=new Set;return dist_esm_f.dependencies=r,e.style&&(e={...e,style:t.createAnimatedStyle(e.style)}),e=new animated_dist_esm_u(e),dist_esm_f.dependencies=null,[e,r]}function esm_ae(e,t){return e&&(dist_esm_l.fun(e)?e(t):e.current=t),t}var dist_esm_j=Symbol.for("AnimatedComponent"),dist_esm_Ke=(e,{applyAnimatedValues:t=()=>!1,createAnimatedStyle:r=a=>new animated_dist_esm_u(a),getComponentProps:n=a=>a}={})=>{let a={applyAnimatedValues:t,createAnimatedStyle:r,getComponentProps:n},i=o=>{let m=esm_I(o)||"Anonymous";return dist_esm_l.str(o)?o=i[o]||(i[o]=dist_esm_x(o,a)):o=o[dist_esm_j]||(o[dist_esm_j]=dist_esm_x(o,a)),o.displayName=`Animated(${m})`,o};return xt(e,(o,m)=>{dist_esm_l.arr(e)&&(m=esm_I(o)),i[m]=i(o)}),{animated:i}},esm_I=e=>dist_esm_l.str(e)?e:e&&dist_esm_l.str(e.displayName)?e.displayName:dist_esm_l.fun(e)&&e.name||null;
+
+;// CONCATENATED MODULE: ./node_modules/@react-spring/core/dist/esm/index.js
+function dist_esm_I(t,...e){return dist_esm_l.fun(t)?t(...e):t}var esm_te=(t,e)=>t===!0||!!(e&&t&&(dist_esm_l.fun(t)?t(e):ht(t).includes(e))),et=(t,e)=>dist_esm_l.obj(t)?e&&t[e]:t;var esm_ke=(t,e)=>t.default===!0?t[e]:t.default?t.default[e]:void 0,nn=t=>t,dist_esm_ne=(t,e=nn)=>{let n=rn;t.default&&t.default!==!0&&(t=t.default,n=Object.keys(t));let r={};for(let o of n){let s=e(t[o],o);dist_esm_l.und(s)||(r[o]=s)}return r},rn=["config","onProps","onStart","onChange","onPause","onResume","onRest"],on={config:1,from:1,to:1,ref:1,loop:1,reset:1,pause:1,cancel:1,reverse:1,immediate:1,default:1,delay:1,onProps:1,onStart:1,onChange:1,onPause:1,onResume:1,onRest:1,onResolve:1,items:1,trail:1,sort:1,expires:1,initial:1,enter:1,update:1,leave:1,children:1,onDestroyed:1,keys:1,callId:1,parentId:1};function sn(t){let e={},n=0;if(xt(t,(r,o)=>{on[o]||(e[o]=r,n++)}),n)return e}function esm_de(t){let e=sn(t);if(e){let n={to:e};return xt(t,(r,o)=>o in e||(n[o]=r)),n}return{...t}}function esm_me(t){return t=ve(t),dist_esm_l.arr(t)?t.map(esm_me):esm_or(t)?dist_esm_p.createStringInterpolator({range:[0,1],output:[t,t]})(1):t}function esm_Ue(t){for(let e in t)return!0;return!1}function esm_Ee(t){return dist_esm_l.fun(t)||dist_esm_l.arr(t)&&dist_esm_l.obj(t[0])}function esm_xe(t,e){t.ref?.delete(t),e?.delete(t)}function esm_he(t,e){e&&t.ref!==e&&(t.ref?.delete(t),e.add(t),t.ref=e)}function wr(t,e,n=1e3){an(()=>{if(e){let r=0;ge(t,(o,s)=>{let a=o.current;if(a.length){let i=n*e[s];isNaN(i)?i=r:r=i,ge(a,u=>{ge(u.queue,p=>{let f=p.delay;p.delay=d=>i+dist_esm_I(f||0,d)})}),o.start()}})}else{let r=Promise.resolve();ge(t,o=>{let s=o.current;if(s.length){let a=s.map(i=>{let u=i.queue;return i.queue=[],u});r=r.then(()=>(ge(s,(i,u)=>ge(a[u]||[],p=>i.queue.push(p))),Promise.all(o.start())))}})}})}var esm_mt={default:{tension:170,friction:26},gentle:{tension:120,friction:14},wobbly:{tension:180,friction:12},stiff:{tension:210,friction:20},slow:{tension:280,friction:60},molasses:{tension:280,friction:120}};var tt={...esm_mt.default,mass:1,damping:1,easing:Lt.linear,clamp:!1},esm_we=class{tension;friction;frequency;damping;mass;velocity=0;restVelocity;precision;progress;duration;easing;clamp;bounce;decay;round;constructor(){Object.assign(this,tt)}};function gt(t,e,n){n&&(n={...n},esm_ht(n,e),e={...n,...e}),esm_ht(t,e),Object.assign(t,e);for(let a in tt)t[a]==null&&(t[a]=tt[a]);let{mass:r,frequency:o,damping:s}=t;return dist_esm_l.und(o)||(o<.01&&(o=.01),s<0&&(s=0),t.tension=Math.pow(2*Math.PI/o,2)*r,t.friction=4*Math.PI*s*r/o),t}function esm_ht(t,e){if(!dist_esm_l.und(e.decay))t.duration=void 0;else{let n=!dist_esm_l.und(e.tension)||!dist_esm_l.und(e.friction);(n||!dist_esm_l.und(e.frequency)||!dist_esm_l.und(e.damping)||!dist_esm_l.und(e.mass))&&(t.duration=void 0,t.decay=void 0),n&&(t.frequency=void 0)}}var esm_yt=[],dist_esm_Le=class{changed=!1;values=esm_yt;toValues=null;fromValues=esm_yt;to;from;config=new esm_we;immediate=!1};function esm_Me(t,{key:e,props:n,defaultProps:r,state:o,actions:s}){return new Promise((a,i)=>{let u,p,f=esm_te(n.cancel??r?.cancel,e);if(f)b();else{dist_esm_l.und(n.pause)||(o.paused=esm_te(n.pause,e));let c=r?.pause;c!==!0&&(c=o.paused||esm_te(c,e)),u=dist_esm_I(n.delay||0,e),c?(o.resumeQueue.add(m),s.pause()):(s.resume(),m())}function d(){o.resumeQueue.add(m),o.timeouts.delete(p),p.cancel(),u=p.time-esm_n.now()}function m(){u>0&&!dist_esm_p.skipAnimation?(o.delayed=!0,p=esm_n.setTimeout(b,u),o.pauseQueue.add(d),o.timeouts.add(p)):b()}function b(){o.delayed&&(o.delayed=!1),o.pauseQueue.delete(d),o.timeouts.delete(p),t<=(o.cancelId||0)&&(f=!0);try{s.start({...n,callId:t,cancel:f},a)}catch(c){i(c)}}})}var esm_be=(t,e)=>e.length==1?e[0]:e.some(n=>n.cancelled)?esm_q(t.get()):e.every(n=>n.noop)?nt(t.get()):dist_esm_E(t.get(),e.every(n=>n.finished)),nt=t=>({value:t,noop:!0,finished:!0,cancelled:!1}),dist_esm_E=(t,e,n=!1)=>({value:t,finished:e,cancelled:n}),esm_q=t=>({value:t,cancelled:!0,finished:!1});function esm_De(t,e,n,r){let{callId:o,parentId:s,onRest:a}=e,{asyncTo:i,promise:u}=n;return!s&&t===i&&!e.reset?u:n.promise=(async()=>{n.asyncId=o,n.asyncTo=t;let p=dist_esm_ne(e,(l,h)=>h==="onRest"?void 0:l),f,d,m=new Promise((l,h)=>(f=l,d=h)),b=l=>{let h=o<=(n.cancelId||0)&&esm_q(r)||o!==n.asyncId&&dist_esm_E(r,!1);if(h)throw l.result=h,d(l),l},c=(l,h)=>{let g=new esm_Ae,x=new esm_Ne;return(async()=>{if(dist_esm_p.skipAnimation)throw esm_oe(n),x.result=dist_esm_E(r,!1),d(x),x;b(g);let S=dist_esm_l.obj(l)?{...l}:{...h,to:l};S.parentId=o,xt(p,(V,_)=>{dist_esm_l.und(S[_])&&(S[_]=V)});let A=await r.start(S);return b(g),n.paused&&await new Promise(V=>{n.resumeQueue.add(V)}),A})()},P;if(dist_esm_p.skipAnimation)return esm_oe(n),dist_esm_E(r,!1);try{let l;dist_esm_l.arr(t)?l=(async h=>{for(let g of h)await c(g)})(t):l=Promise.resolve(t(c,r.stop.bind(r))),await Promise.all([l.then(f),m]),P=dist_esm_E(r.get(),!0,!1)}catch(l){if(l instanceof esm_Ae)P=l.result;else if(l instanceof esm_Ne)P=l.result;else throw l}finally{o==n.asyncId&&(n.asyncId=s,n.asyncTo=s?i:void 0,n.promise=s?u:void 0)}return dist_esm_l.fun(a)&&esm_n.batchedUpdates(()=>{a(P,r,r.item)}),P})()}function esm_oe(t,e){Pe(t.timeouts,n=>n.cancel()),t.pauseQueue.clear(),t.resumeQueue.clear(),t.asyncId=t.asyncTo=t.promise=void 0,e&&(t.cancelId=e)}var esm_Ae=class extends Error{result;constructor(){super("An async animation has been interrupted. You see this error because you forgot to use `await` or `.catch(...)` on its returned promise.")}},esm_Ne=class extends Error{result;constructor(){super("SkipAnimationSignal")}};var esm_Re=t=>t instanceof esm_X,Sn=1,esm_X=class extends esm_ge{id=Sn++;_priority=0;get priority(){return this._priority}set priority(e){this._priority!=e&&(this._priority=e,this._onPriorityChange(e))}get(){let e=dist_esm_k(this);return e&&e.getValue()}to(...e){return dist_esm_p.to(this,e)}interpolate(...e){return Jt(),dist_esm_p.to(this,e)}toJSON(){return this.get()}observerAdded(e){e==1&&this._attach()}observerRemoved(e){e==0&&this._detach()}_attach(){}_detach(){}_onChange(e,n=!1){$t(this,{type:"change",parent:this,value:e,idle:n})}_onPriorityChange(e){this.idle||qe.sort(this),$t(this,{type:"priority",parent:this,priority:e})}};var esm_se=Symbol.for("SpringPhase"),esm_bt=1,rt=2,ot=4,esm_qe=t=>(t[esm_se]&esm_bt)>0,dist_esm_Q=t=>(t[esm_se]&rt)>0,esm_ye=t=>(t[esm_se]&ot)>0,st=(t,e)=>e?t[esm_se]|=rt|esm_bt:t[esm_se]&=~rt,esm_it=(t,e)=>e?t[esm_se]|=ot:t[esm_se]&=~ot;var esm_ue=class extends esm_X{key;animation=new dist_esm_Le;queue;defaultProps={};_state={paused:!1,delayed:!1,pauseQueue:new Set,resumeQueue:new Set,timeouts:new Set};_pendingCalls=new Set;_lastCallId=0;_lastToId=0;_memoizedDuration=0;constructor(e,n){if(super(),!dist_esm_l.und(e)||!dist_esm_l.und(n)){let r=dist_esm_l.obj(e)?{...e}:{...n,from:e};dist_esm_l.und(r.default)&&(r.default=!0),this.start(r)}}get idle(){return!(dist_esm_Q(this)||this._state.asyncTo)||esm_ye(this)}get goal(){return ve(this.animation.to)}get velocity(){let e=dist_esm_k(this);return e instanceof animated_dist_esm_l?e.lastVelocity||0:e.getPayload().map(n=>n.lastVelocity||0)}get hasAnimated(){return esm_qe(this)}get isAnimating(){return dist_esm_Q(this)}get isPaused(){return esm_ye(this)}get isDelayed(){return this._state.delayed}advance(e){let n=!0,r=!1,o=this.animation,{config:s,toValues:a}=o,i=F(o.to);!i&&Pt(o.to)&&(a=ht(ve(o.to))),o.values.forEach((f,d)=>{if(f.done)return;let m=f.constructor==animated_dist_esm_d?1:i?i[d].lastPosition:a[d],b=o.immediate,c=m;if(!b){if(c=f.lastPosition,s.tension<=0){f.done=!0;return}let P=f.elapsedTime+=e,l=o.fromValues[d],h=f.v0!=null?f.v0:f.v0=dist_esm_l.arr(s.velocity)?s.velocity[d]:s.velocity,g,x=s.precision||(l==m?.005:Math.min(1,Math.abs(m-l)*.001));if(dist_esm_l.und(s.duration))if(s.decay){let S=s.decay===!0?.998:s.decay,A=Math.exp(-(1-S)*P);c=l+h/(1-S)*(1-A),b=Math.abs(f.lastPosition-c)<=x,g=h*A}else{g=f.lastVelocity==null?h:f.lastVelocity;let S=s.restVelocity||x/10,A=s.clamp?0:s.bounce,V=!dist_esm_l.und(A),_=l==m?f.v0>0:l<m,v,w=!1,C=1,$=Math.ceil(e/C);for(let L=0;L<$&&(v=Math.abs(g)>S,!(!v&&(b=Math.abs(m-c)<=x,b)));++L){V&&(w=c==m||c>m==_,w&&(g=-g*A,c=m));let N=-s.tension*1e-6*(c-m),y=-s.friction*.001*g,T=(N+y)/s.mass;g=g+T*C,c=c+g*C}}else{let S=1;s.duration>0&&(this._memoizedDuration!==s.duration&&(this._memoizedDuration=s.duration,f.durationProgress>0&&(f.elapsedTime=s.duration*f.durationProgress,P=f.elapsedTime+=e)),S=(s.progress||0)+P/this._memoizedDuration,S=S>1?1:S<0?0:S,f.durationProgress=S),c=l+s.easing(S)*(m-l),g=(c-f.lastPosition)/e,b=S==1}f.lastVelocity=g,Number.isNaN(c)&&(console.warn("Got NaN while animating:",this),b=!0)}i&&!i[d].done&&(b=!1),b?f.done=!0:n=!1,f.setValue(c,s.round)&&(r=!0)});let u=dist_esm_k(this),p=u.getValue();if(n){let f=ve(o.to);(p!==f||r)&&!s.decay?(u.setValue(f),this._onChange(f)):r&&s.decay&&this._onChange(p),this._stop()}else r&&this._onChange(p)}set(e){return esm_n.batchedUpdates(()=>{this._stop(),this._focus(e),this._set(e)}),this}pause(){this._update({pause:!0})}resume(){this._update({pause:!1})}finish(){if(dist_esm_Q(this)){let{to:e,config:n}=this.animation;esm_n.batchedUpdates(()=>{this._onStart(),n.decay||this._set(e,!1),this._stop()})}return this}update(e){return(this.queue||(this.queue=[])).push(e),this}start(e,n){let r;return dist_esm_l.und(e)?(r=this.queue||[],this.queue=[]):r=[dist_esm_l.obj(e)?e:{...n,to:e}],Promise.all(r.map(o=>this._update(o))).then(o=>esm_be(this,o))}stop(e){let{to:n}=this.animation;return this._focus(this.get()),esm_oe(this._state,e&&this._lastCallId),esm_n.batchedUpdates(()=>this._stop(n,e)),this}reset(){this._update({reset:!0})}eventObserved(e){e.type=="change"?this._start():e.type=="priority"&&(this.priority=e.priority+1)}_prepareNode(e){let n=this.key||"",{to:r,from:o}=e;r=dist_esm_l.obj(r)?r[n]:r,(r==null||esm_Ee(r))&&(r=void 0),o=dist_esm_l.obj(o)?o[n]:o,o==null&&(o=void 0);let s={to:r,from:o};return esm_qe(this)||(e.reverse&&([r,o]=[o,r]),o=ve(o),dist_esm_l.und(o)?dist_esm_k(this)||this._set(r):this._set(o)),s}_update({...e},n){let{key:r,defaultProps:o}=this;e.default&&Object.assign(o,dist_esm_ne(e,(i,u)=>/^on/.test(u)?et(i,r):i)),_t(this,e,"onProps"),esm_Ie(this,"onProps",e,this);let s=this._prepareNode(e);if(Object.isFrozen(this))throw Error("Cannot animate a `SpringValue` object that is frozen. Did you forget to pass your component to `animated(...)` before animating its props?");let a=this._state;return esm_Me(++this._lastCallId,{key:r,props:e,defaultProps:o,state:a,actions:{pause:()=>{esm_ye(this)||(esm_it(this,!0),yt(a.pauseQueue),esm_Ie(this,"onPause",dist_esm_E(this,esm_Ce(this,this.animation.to)),this))},resume:()=>{esm_ye(this)&&(esm_it(this,!1),dist_esm_Q(this)&&this._resume(),yt(a.resumeQueue),esm_Ie(this,"onResume",dist_esm_E(this,esm_Ce(this,this.animation.to)),this))},start:this._merge.bind(this,s)}}).then(i=>{if(e.loop&&i.finished&&!(n&&i.noop)){let u=at(e);if(u)return this._update(u,!0)}return i})}_merge(e,n,r){if(n.cancel)return this.stop(!0),r(esm_q(this));let o=!dist_esm_l.und(e.to),s=!dist_esm_l.und(e.from);if(o||s)if(n.callId>this._lastToId)this._lastToId=n.callId;else return r(esm_q(this));let{key:a,defaultProps:i,animation:u}=this,{to:p,from:f}=u,{to:d=p,from:m=f}=e;s&&!o&&(!n.default||dist_esm_l.und(d))&&(d=m),n.reverse&&([d,m]=[m,d]);let b=!bt(m,f);b&&(u.from=m),m=ve(m);let c=!bt(d,p);c&&this._focus(d);let P=esm_Ee(n.to),{config:l}=u,{decay:h,velocity:g}=l;(o||s)&&(l.velocity=0),n.config&&!P&&gt(l,dist_esm_I(n.config,a),n.config!==i.config?dist_esm_I(i.config,a):void 0);let x=dist_esm_k(this);if(!x||dist_esm_l.und(d))return r(dist_esm_E(this,!0));let S=dist_esm_l.und(n.reset)?s&&!n.default:!dist_esm_l.und(m)&&esm_te(n.reset,a),A=S?m:this.get(),V=esm_me(d),_=dist_esm_l.num(V)||dist_esm_l.arr(V)||esm_or(V),v=!P&&(!_||esm_te(i.immediate||n.immediate,a));if(c){let L=esm_Le(d);if(L!==x.constructor)if(v)x=this._set(V);else throw Error(`Cannot animate between ${x.constructor.name} and ${L.name}, as the "to" prop suggests`)}let w=x.constructor,C=Pt(d),$=!1;if(!C){let L=S||!esm_qe(this)&&b;(c||L)&&($=bt(esm_me(A),V),C=!$),(!bt(u.immediate,v)&&!v||!bt(l.decay,h)||!bt(l.velocity,g))&&(C=!0)}if($&&dist_esm_Q(this)&&(u.changed&&!S?C=!0:C||this._stop(p)),!P&&((C||Pt(p))&&(u.values=x.getPayload(),u.toValues=Pt(d)?null:w==animated_dist_esm_d?[1]:ht(V)),u.immediate!=v&&(u.immediate=v,!v&&!S&&this._set(p)),C)){let{onRest:L}=u;esm_Ve(_n,y=>_t(this,n,y));let N=dist_esm_E(this,esm_Ce(this,p));yt(this._pendingCalls,N),this._pendingCalls.add(r),u.changed&&esm_n.batchedUpdates(()=>{u.changed=!S,L?.(N,this),S?dist_esm_I(i.onRest,N):u.onStart?.(N,this)})}S&&this._set(A),P?r(esm_De(n.to,n,this._state,this)):C?this._start():dist_esm_Q(this)&&!c?this._pendingCalls.add(r):r(nt(A))}_focus(e){let n=this.animation;e!==n.to&&(esm_qt(this)&&this._detach(),n.to=e,esm_qt(this)&&this._attach())}_attach(){let e=0,{to:n}=this.animation;Pt(n)&&(Gt(n,this),esm_Re(n)&&(e=n.priority+1)),this.priority=e}_detach(){let{to:e}=this.animation;Pt(e)&&Qt(e,this)}_set(e,n=!0){let r=ve(e);if(!dist_esm_l.und(r)){let o=dist_esm_k(this);if(!o||!bt(r,o.getValue())){let s=esm_Le(r);!o||o.constructor!=s?esm_D(this,s.create(r)):o.setValue(r),o&&esm_n.batchedUpdates(()=>{this._onChange(r,n)})}}return dist_esm_k(this)}_onStart(){let e=this.animation;e.changed||(e.changed=!0,esm_Ie(this,"onStart",dist_esm_E(this,esm_Ce(this,e.to)),this))}_onChange(e,n){n||(this._onStart(),dist_esm_I(this.animation.onChange,e,this)),dist_esm_I(this.defaultProps.onChange,e,this),super._onChange(e,n)}_start(){let e=this.animation;dist_esm_k(this).reset(ve(e.to)),e.immediate||(e.fromValues=e.values.map(n=>n.lastPosition)),dist_esm_Q(this)||(st(this,!0),esm_ye(this)||this._resume())}_resume(){dist_esm_p.skipAnimation?this.finish():qe.start(this)}_stop(e,n){if(dist_esm_Q(this)){st(this,!1);let r=this.animation;esm_Ve(r.values,s=>{s.done=!0}),r.toValues&&(r.onChange=r.onPause=r.onResume=void 0),$t(this,{type:"idle",parent:this});let o=n?esm_q(this.get()):dist_esm_E(this.get(),esm_Ce(this,e??r.to));yt(this._pendingCalls,o),r.changed&&(r.changed=!1,esm_Ie(this,"onRest",o,this))}}};function esm_Ce(t,e){let n=esm_me(e),r=esm_me(t.get());return bt(r,n)}function at(t,e=t.loop,n=t.to){let r=dist_esm_I(e);if(r){let o=r!==!0&&esm_de(r),s=(o||t).reverse,a=!o||o.reset;return esm_Pe({...t,loop:e,default:!1,pause:void 0,to:!s||esm_Ee(n)?n:void 0,from:a?t.from:void 0,reset:a,...o})}}function esm_Pe(t){let{to:e,from:n}=t=esm_de(t),r=new Set;return dist_esm_l.obj(e)&&Vt(e,r),dist_esm_l.obj(n)&&Vt(n,r),t.keys=r.size?Array.from(r):null,t}function Ot(t){let e=esm_Pe(t);return R.und(e.default)&&(e.default=dist_esm_ne(e)),e}function Vt(t,e){xt(t,(n,r)=>n!=null&&e.add(r))}var _n=["onStart","onRest","onChange","onPause","onResume"];function _t(t,e,n){t.animation[n]=e[n]!==esm_ke(e,n)?et(e[n],t.key):void 0}function esm_Ie(t,e,...n){t.animation[e]?.(...n),t.defaultProps[e]?.(...n)}var Fn=["onStart","onChange","onRest"],kn=1,esm_le=class{id=kn++;springs={};queue=[];ref;_flush;_initialProps;_lastAsyncId=0;_active=new Set;_changed=new Set;_started=!1;_item;_state={paused:!1,pauseQueue:new Set,resumeQueue:new Set,timeouts:new Set};_events={onStart:new Map,onChange:new Map,onRest:new Map};constructor(e,n){this._onFrame=this._onFrame.bind(this),n&&(this._flush=n),e&&this.start({default:!0,...e})}get idle(){return!this._state.asyncTo&&Object.values(this.springs).every(e=>e.idle&&!e.isDelayed&&!e.isPaused)}get item(){return this._item}set item(e){this._item=e}get(){let e={};return this.each((n,r)=>e[r]=n.get()),e}set(e){for(let n in e){let r=e[n];dist_esm_l.und(r)||this.springs[n].set(r)}}update(e){return e&&this.queue.push(esm_Pe(e)),this}start(e){let{queue:n}=this;return e?n=ht(e).map(esm_Pe):this.queue=[],this._flush?this._flush(this,n):(jt(this,n),esm_ze(this,n))}stop(e,n){if(e!==!!e&&(n=e),n){let r=this.springs;esm_Ve(ht(n),o=>r[o].stop(!!e))}else esm_oe(this._state,this._lastAsyncId),this.each(r=>r.stop(!!e));return this}pause(e){if(dist_esm_l.und(e))this.start({pause:!0});else{let n=this.springs;esm_Ve(ht(e),r=>n[r].pause())}return this}resume(e){if(dist_esm_l.und(e))this.start({pause:!1});else{let n=this.springs;esm_Ve(ht(e),r=>n[r].resume())}return this}each(e){xt(this.springs,e)}_onFrame(){let{onStart:e,onChange:n,onRest:r}=this._events,o=this._active.size>0,s=this._changed.size>0;(o&&!this._started||s&&!this._started)&&(this._started=!0,Pe(e,([u,p])=>{p.value=this.get(),u(p,this,this._item)}));let a=!o&&this._started,i=s||a&&r.size?this.get():null;s&&n.size&&Pe(n,([u,p])=>{p.value=i,u(p,this,this._item)}),a&&(this._started=!1,Pe(r,([u,p])=>{p.value=i,u(p,this,this._item)}))}eventObserved(e){if(e.type=="change")this._changed.add(e.parent),e.idle||this._active.add(e.parent);else if(e.type=="idle")this._active.delete(e.parent);else return;esm_n.onFrame(this._onFrame)}};function esm_ze(t,e){return Promise.all(e.map(n=>wt(t,n))).then(n=>esm_be(t,n))}async function wt(t,e,n){let{keys:r,to:o,from:s,loop:a,onRest:i,onResolve:u}=e,p=dist_esm_l.obj(e.default)&&e.default;a&&(e.loop=!1),o===!1&&(e.to=null),s===!1&&(e.from=null);let f=dist_esm_l.arr(o)||dist_esm_l.fun(o)?o:void 0;f?(e.to=void 0,e.onRest=void 0,p&&(p.onRest=void 0)):esm_Ve(Fn,P=>{let l=e[P];if(dist_esm_l.fun(l)){let h=t._events[P];e[P]=({finished:g,cancelled:x})=>{let S=h.get(l);S?(g||(S.finished=!1),x&&(S.cancelled=!0)):h.set(l,{value:null,finished:g||!1,cancelled:x||!1})},p&&(p[P]=e[P])}});let d=t._state;e.pause===!d.paused?(d.paused=e.pause,yt(e.pause?d.pauseQueue:d.resumeQueue)):d.paused&&(e.pause=!0);let m=(r||Object.keys(t.springs)).map(P=>t.springs[P].start(e)),b=e.cancel===!0||esm_ke(e,"cancel")===!0;(f||b&&d.asyncId)&&m.push(esm_Me(++t._lastAsyncId,{props:e,state:d,actions:{pause:Y,resume:Y,start(P,l){b?(esm_oe(d,t._lastAsyncId),l(esm_q(t))):(P.onRest=i,l(esm_De(f,P,d,t)))}}})),d.paused&&await new Promise(P=>{d.resumeQueue.add(P)});let c=esm_be(t,await Promise.all(m));if(a&&c.finished&&!(n&&c.noop)){let P=at(e,a,o);if(P)return jt(t,[P]),wt(t,P,!0)}return u&&esm_n.batchedUpdates(()=>u(c,t,t.item)),c}function esm_e(t,e){let n={...t.springs};return e&&pe(Ve(e),r=>{z.und(r.keys)&&(r=esm_Pe(r)),z.obj(r.to)||(r={...r,to:void 0}),Mt(n,r,o=>esm_Lt(o))}),pt(t,n),n}function pt(t,e){Ut(e,(n,r)=>{t.springs[r]||(t.springs[r]=n,Et(n,t))})}function esm_Lt(t,e){let n=new esm_ue;return n.key=t,e&&Gt(n,e),n}function Mt(t,e,n){e.keys&&esm_Ve(e.keys,r=>{(t[r]||(t[r]=n(r)))._prepareNode(e)})}function jt(t,e){esm_Ve(e,n=>{Mt(t.springs,n,r=>esm_Lt(r,t))})}var dist_esm_H=({children:t,...e})=>{let n=(0,external_React_.useContext)(esm_Ge),r=e.pause||!!n.pause,o=e.immediate||!!n.immediate;e=Lr(()=>({pause:r,immediate:o}),[r,o]);let{Provider:s}=esm_Ge;return external_React_.createElement(s,{value:e},t)},esm_Ge=wn(dist_esm_H,{});dist_esm_H.Provider=esm_Ge.Provider;dist_esm_H.Consumer=esm_Ge.Consumer;function wn(t,e){return Object.assign(t,external_React_.createContext(e)),t.Provider._context=t,t.Consumer._context=t,t}var esm_fe=()=>{let t=[],e=function(r){Ln();let o=[];return ce(t,(s,a)=>{if(Ke.und(r))o.push(s.start());else{let i=n(r,s,a);i&&o.push(s.start(i))}}),o};e.current=t,e.add=function(r){t.includes(r)||t.push(r)},e.delete=function(r){let o=t.indexOf(r);~o&&t.splice(o,1)},e.pause=function(){return ce(t,r=>r.pause(...arguments)),this},e.resume=function(){return ce(t,r=>r.resume(...arguments)),this},e.set=function(r){ce(t,(o,s)=>{let a=Ke.fun(r)?r(s,o):r;a&&o.set(a)})},e.start=function(r){let o=[];return ce(t,(s,a)=>{if(Ke.und(r))o.push(s.start());else{let i=this._getProps(r,s,a);i&&o.push(s.start(i))}}),o},e.stop=function(){return ce(t,r=>r.stop(...arguments)),this},e.update=function(r){return ce(t,(o,s)=>o.update(this._getProps(r,o,s))),this};let n=function(r,o,s){return Ke.fun(r)?r(s,o):r};return e._getProps=n,e};function esm_He(t,e,n){let r=jn.fun(e)&&e;r&&!n&&(n=[]);let o=Xe(()=>r||arguments.length==3?esm_fe():void 0,[]),s=Nt(0),a=Dn(),i=Xe(()=>({ctrls:[],queue:[],flush(h,g){let x=esm_e(h,g);return s.current>0&&!i.queue.length&&!Object.keys(x).some(A=>!h.springs[A])?esm_ze(h,g):new Promise(A=>{pt(h,x),i.queue.push(()=>{A(esm_ze(h,g))}),a()})}}),[]),u=Nt([...i.ctrls]),p=[],f=Dt(t)||0;Xe(()=>{Ye(u.current.slice(t,f),h=>{esm_xe(h,o),h.stop(!0)}),u.current.length=t,d(f,t)},[t]),Xe(()=>{d(0,Math.min(f,t))},n);function d(h,g){for(let x=h;x<g;x++){let S=u.current[x]||(u.current[x]=new esm_le(null,i.flush)),A=r?r(x,S):e[x];A&&(p[x]=Ot(A))}}let m=u.current.map((h,g)=>esm_e(h,p[g])),b=Mn(dist_esm_H),c=Dt(b),P=b!==c&&esm_Ue(b);qn(()=>{s.current++,i.ctrls=u.current;let{queue:h}=i;h.length&&(i.queue=[],Ye(h,g=>g())),Ye(u.current,(g,x)=>{o?.add(g),P&&g.start({default:b});let S=p[x];S&&(esm_he(g,S.ref),g.ref?g.queue.push(S):g.start(S))})}),Nn(()=>()=>{Ye(i.ctrls,h=>h.stop(!0))});let l=m.map(h=>({...h}));return o?[l,o]:l}function esm_J(t,e){let n=Qn.fun(t),[[r],o]=esm_He(1,n?t:[t],n?e||[]:e);return n||arguments.length==2?[r,o]:r}var Gn=()=>esm_fe(),Xo=()=>zn(Gn)[0];var Wo=(t,e)=>{let n=Bn(()=>new esm_ue(t,e));return Kn(()=>()=>{n.stop()}),n};function esm_Qt(t,e,n){let r=qt.fun(e)&&e;r&&!n&&(n=[]);let o=!0,s,a=esm_He(t,(i,u)=>{let p=r?r(i,u):e;return s=p.ref,o=o&&p.reverse,p},n||[{}]);if(Yn(()=>{Xn(a[1].current,(i,u)=>{let p=a[1].current[u+(o?1:-1)];if(esm_he(i,s),i.ref){p&&i.update({to:p.springs});return}p?i.start({to:p.springs}):i.start()})},n),r||arguments.length==3){let i=s??a[1];return i._getProps=(u,p,f)=>{let d=qt.fun(u)?u(f,p):u;if(d){let m=i.current[f+(d.reverse?1:-1)];return m&&(d.to=m.springs),d}},a}return a[0]}function esm_Gt(t,e,n){let r=G.fun(e)&&e,{reset:o,sort:s,trail:a=0,expires:i=!0,exitBeforeEnter:u=!1,onDestroyed:p,ref:f,config:d}=r?r():e,m=Jn(()=>r||arguments.length==3?esm_fe():void 0,[]),b=zt(t),c=[],P=lt(null),l=o?null:P.current;Je(()=>{P.current=c}),$n(()=>(j(c,y=>{m?.add(y.ctrl),y.ctrl.ref=m}),()=>{j(P.current,y=>{y.expired&&clearTimeout(y.expirationId),esm_xe(y.ctrl,m),y.ctrl.stop(!0)})}));let h=tr(b,r?r():e,l),g=o&&P.current||[];Je(()=>j(g,({ctrl:y,item:T,key:F})=>{esm_xe(y,m),dist_esm_I(p,T,F)}));let x=[];if(l&&j(l,(y,T)=>{y.expired?(clearTimeout(y.expirationId),g.push(y)):(T=x[T]=h.indexOf(y.key),~T&&(c[T]=y))}),j(b,(y,T)=>{c[T]||(c[T]={key:h[T],item:y,phase:"mount",ctrl:new esm_le},c[T].ctrl.item=y)}),x.length){let y=-1,{leave:T}=r?r():e;j(x,(F,k)=>{let O=l[k];~F?(y=c.indexOf(O),c[y]={...O,item:b[F]}):T&&c.splice(++y,0,O)})}G.fun(s)&&c.sort((y,T)=>s(y.item,T.item));let S=-a,A=Wn(),V=dist_esm_ne(e),_=new Map,v=lt(new Map),w=lt(!1);j(c,(y,T)=>{let F=y.key,k=y.phase,O=r?r():e,U,D,Jt=dist_esm_I(O.delay||0,F);if(k=="mount")U=O.enter,D="enter";else{let M=h.indexOf(F)<0;if(k!="leave")if(M)U=O.leave,D="leave";else if(U=O.update)D="update";else return;else if(!M)U=O.enter,D="enter";else return}if(U=dist_esm_I(U,y.item,T),U=G.obj(U)?esm_de(U):{to:U},!U.config){let M=d||V.config;U.config=dist_esm_I(M,y.item,T,D)}S+=a;let Z={...V,delay:Jt+S,ref:f,immediate:O.immediate,reset:!1,...U};if(D=="enter"&&G.und(Z.from)){let M=r?r():e,Te=G.und(M.initial)||l?M.from:M.initial;Z.from=dist_esm_I(Te,y.item,T)}let{onResolve:Wt}=Z;Z.onResolve=M=>{dist_esm_I(Wt,M);let Te=P.current,B=Te.find(Fe=>Fe.key===F);if(!!B&&!(M.cancelled&&B.phase!="update")&&B.ctrl.idle){let Fe=Te.every(ee=>ee.ctrl.idle);if(B.phase=="leave"){let ee=dist_esm_I(i,B.item);if(ee!==!1){let Ze=ee===!0?0:ee;if(B.expired=!0,!Fe&&Ze>0){Ze<=2147483647&&(B.expirationId=setTimeout(A,Ze));return}}}Fe&&Te.some(ee=>ee.expired)&&(v.current.delete(B),u&&(w.current=!0),A())}};let ft=esm_e(y.ctrl,Z);D==="leave"&&u?v.current.set(y,{phase:D,springs:ft,payload:Z}):_.set(y,{phase:D,springs:ft,payload:Z})});let C=Hn(dist_esm_H),$=Zn(C),L=C!==$&&esm_Ue(C);Je(()=>{L&&j(c,y=>{y.ctrl.start({default:C})})},[C]),j(_,(y,T)=>{if(v.current.size){let F=c.findIndex(k=>k.key===T.key);c.splice(F,1)}}),Je(()=>{j(v.current.size?v.current:_,({phase:y,payload:T},F)=>{let{ctrl:k}=F;F.phase=y,m?.add(k),L&&y=="enter"&&k.start({default:C}),T&&(esm_he(k,T.ref),(k.ref||m)&&!w.current?k.update(T):(k.start(T),w.current&&(w.current=!1)))})},o?void 0:n);let N=y=>Oe.createElement(Oe.Fragment,null,c.map((T,F)=>{let{springs:k}=_.get(T)||T.ctrl,O=y({...k},T.item,T,F);return O&&O.type?Oe.createElement(O.type,{...O.props,key:G.str(T.key)||G.num(T.key)?T.key:T.ctrl.id,ref:O.ref}):O}));return m?[N,m]:N}var esm_er=1;function tr(t,{key:e,keys:n=e},r){if(n===null){let o=new Set;return t.map(s=>{let a=r&&r.find(i=>i.item===s&&i.phase!=="leave"&&!o.has(i));return a?(o.add(a),a.key):esm_er++})}return G.und(n)?t:G.fun(n)?t.map(n):zt(n)}var hs=({container:t,...e}={})=>{let[n,r]=esm_J(()=>({scrollX:0,scrollY:0,scrollXProgress:0,scrollYProgress:0,...e}),[]);return or(()=>{let o=rr(({x:s,y:a})=>{r.start({scrollX:s.current,scrollXProgress:s.progress,scrollY:a.current,scrollYProgress:a.progress})},{container:t?.current||void 0});return()=>{nr(Object.values(n),s=>s.stop()),o()}},[]),n};var Ps=({container:t,...e})=>{let[n,r]=esm_J(()=>({width:0,height:0,...e}),[]);return ar(()=>{let o=sr(({width:s,height:a})=>{r.start({width:s,height:a,immediate:n.width.get()===0||n.height.get()===0})},{container:t?.current||void 0});return()=>{ir(Object.values(n),s=>s.stop()),o()}},[]),n};var cr={any:0,all:1};function Cs(t,e){let[n,r]=pr(!1),o=ur(),s=Bt.fun(t)&&t,a=s?s():{},{to:i={},from:u={},...p}=a,f=s?e:t,[d,m]=esm_J(()=>({from:u,...p}),[]);return lr(()=>{let b=o.current,{root:c,once:P,amount:l="any",...h}=f??{};if(!b||P&&n||typeof IntersectionObserver>"u")return;let g=new WeakMap,x=()=>(i&&m.start(i),r(!0),P?void 0:()=>{u&&m.start(u),r(!1)}),S=V=>{V.forEach(_=>{let v=g.get(_.target);if(_.isIntersecting!==Boolean(v))if(_.isIntersecting){let w=x();Bt.fun(w)?g.set(_.target,w):A.unobserve(_.target)}else v&&(v(),g.delete(_.target))})},A=new IntersectionObserver(S,{root:c&&c.current||void 0,threshold:typeof l=="number"||Array.isArray(l)?l:cr[l],...h});return A.observe(b),()=>A.unobserve(b)},[f]),s?[o,d]:[o,n]}function qs({children:t,...e}){return t(esm_J(e))}function Bs({items:t,children:e,...n}){let r=esm_Qt(t.length,n);return t.map((o,s)=>{let a=e(o,s);return fr.fun(a)?a(r[s]):a})}function Ys({items:t,children:e,...n}){return esm_Gt(t,n)(e)}var esm_W=class extends esm_X{constructor(n,r){super();this.source=n;this.calc=W(...r);let o=this._get(),s=esm_Le(o);esm_D(this,s.create(o))}key;idle=!0;calc;_active=new Set;advance(n){let r=this._get(),o=this.get();bt(r,o)||(dist_esm_k(this).setValue(r),this._onChange(r,this.idle)),!this.idle&&Yt(this._active)&&esm_ct(this)}_get(){let n=dist_esm_l.arr(this.source)?this.source.map(ve):ht(ve(this.source));return this.calc(...n)}_start(){this.idle&&!Yt(this._active)&&(this.idle=!1,esm_Ve(F(this),n=>{n.done=!1}),dist_esm_p.skipAnimation?(esm_n.batchedUpdates(()=>this.advance()),esm_ct(this)):qe.start(this))}_attach(){let n=1;esm_Ve(ht(this.source),r=>{Pt(r)&&Gt(r,this),esm_Re(r)&&(r.idle||this._active.add(r),n=Math.max(n,r.priority+1))}),this.priority=n,this._start()}_detach(){esm_Ve(ht(this.source),n=>{Pt(n)&&Qt(n,this)}),this._active.clear(),esm_ct(this)}eventObserved(n){n.type=="change"?n.idle?this.advance():(this._active.add(n.parent),this._start()):n.type=="idle"?this._active.delete(n.parent):n.type=="priority"&&(this.priority=ht(this.source).reduce((r,o)=>Math.max(r,(esm_Re(o)?o.priority:0)+1),0))}};function vr(t){return t.idle!==!1}function Yt(t){return!t.size||Array.from(t).every(vr)}function esm_ct(t){t.idle||(t.idle=!0,esm_Ve(F(t),e=>{e.done=!0}),$t(t,{type:"idle",parent:t}))}var esm_ui=(t,...e)=>new esm_W(t,e),pi=(t,...e)=>(Cr(),new esm_W(t,e));dist_esm_p.assign({createStringInterpolator:Xt,to:(t,e)=>new esm_W(t,e)});var di=qe.advance;
+
+;// CONCATENATED MODULE: ./node_modules/@react-spring/web/dist/esm/index.js
+var web_dist_esm_k=/^--/;function web_dist_esm_I(t,e){return e==null||typeof e=="boolean"||e===""?"":typeof e=="number"&&e!==0&&!web_dist_esm_k.test(t)&&!(web_dist_esm_c.hasOwnProperty(t)&&web_dist_esm_c[t])?e+"px":(""+e).trim()}var web_dist_esm_v={};function esm_V(t,e){if(!t.nodeType||!t.setAttribute)return!1;let r=t.nodeName==="filter"||t.parentNode&&t.parentNode.nodeName==="filter",{style:i,children:s,scrollTop:u,scrollLeft:l,viewBox:a,...n}=e,d=Object.values(n),m=Object.keys(n).map(o=>r||t.hasAttribute(o)?o:web_dist_esm_v[o]||(web_dist_esm_v[o]=o.replace(/([A-Z])/g,p=>"-"+p.toLowerCase())));s!==void 0&&(t.textContent=s);for(let o in i)if(i.hasOwnProperty(o)){let p=web_dist_esm_I(o,i[o]);web_dist_esm_k.test(o)?t.style.setProperty(o,p):t.style[o]=p}m.forEach((o,p)=>{t.setAttribute(o,d[p])}),u!==void 0&&(t.scrollTop=u),l!==void 0&&(t.scrollLeft=l),a!==void 0&&t.setAttribute("viewBox",a)}var web_dist_esm_c={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},esm_F=(t,e)=>t+e.charAt(0).toUpperCase()+e.substring(1),esm_L=["Webkit","Ms","Moz","O"];web_dist_esm_c=Object.keys(web_dist_esm_c).reduce((t,e)=>(esm_L.forEach(r=>t[esm_F(r,e)]=t[e]),t),web_dist_esm_c);var esm_=/^(matrix|translate|scale|rotate|skew)/,dist_esm_$=/^(translate)/,dist_esm_G=/^(rotate|skew)/,web_dist_esm_y=(t,e)=>dist_esm_l.num(t)&&t!==0?t+e:t,web_dist_esm_h=(t,e)=>dist_esm_l.arr(t)?t.every(r=>web_dist_esm_h(r,e)):dist_esm_l.num(t)?t===e:parseFloat(t)===e,dist_esm_g=class extends animated_dist_esm_u{constructor({x:e,y:r,z:i,...s}){let u=[],l=[];(e||r||i)&&(u.push([e||0,r||0,i||0]),l.push(a=>[`translate3d(${a.map(n=>web_dist_esm_y(n,"px")).join(",")})`,web_dist_esm_h(a,0)])),xt(s,(a,n)=>{if(n==="transform")u.push([a||""]),l.push(d=>[d,d===""]);else if(esm_.test(n)){if(delete s[n],dist_esm_l.und(a))return;let d=dist_esm_$.test(n)?"px":dist_esm_G.test(n)?"deg":"";u.push(ht(a)),l.push(n==="rotate3d"?([m,o,p,O])=>[`rotate3d(${m},${o},${p},${web_dist_esm_y(O,d)})`,web_dist_esm_h(O,0)]:m=>[`${n}(${m.map(o=>web_dist_esm_y(o,d)).join(",")})`,web_dist_esm_h(m,n.startsWith("scale")?1:0)])}}),u.length&&(s.transform=new web_dist_esm_x(u,l)),super(s)}},web_dist_esm_x=class extends esm_ge{constructor(r,i){super();this.inputs=r;this.transforms=i}_value=null;get(){return this._value||(this._value=this._get())}_get(){let r="",i=!0;return esm_Ve(this.inputs,(s,u)=>{let l=ve(s[0]),[a,n]=this.transforms[u](dist_esm_l.arr(l)?l:s.map(ve));r+=" "+a,i=i&&n}),i?"none":r}observerAdded(r){r==1&&esm_Ve(this.inputs,i=>esm_Ve(i,s=>Pt(s)&&Gt(s,this)))}observerRemoved(r){r==0&&esm_Ve(this.inputs,i=>esm_Ve(i,s=>Pt(s)&&Qt(s,this)))}eventObserved(r){r.type=="change"&&(this._value=null),$t(this,r)}};var esm_C=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"];dist_esm_p.assign({batchedUpdates:external_ReactDOM_namespaceObject.unstable_batchedUpdates,createStringInterpolator:Xt,colors:It});var dist_esm_q=dist_esm_Ke(esm_C,{applyAnimatedValues:esm_V,createAnimatedStyle:t=>new dist_esm_g(t),getComponentProps:({scrollTop:t,scrollLeft:e,...r})=>r}),dist_esm_it=dist_esm_q.animated;
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/layout/animation.js
 /**
  * External dependencies
  */
 
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-function List() {
-  var _postType$labels, _postType$labels2;
-
-  const {
-    params: {
-      postType: templateType
-    }
-  } = useLocation();
-  useRegisterShortcuts();
-  const {
+
+/**
+ * WordPress dependencies
+ */
+
+function getAbsolutePosition(element) {
+  return {
+    top: element.offsetTop,
+    left: element.offsetLeft
+  };
+}
+const ANIMATION_DURATION = 400;
+
+/**
+ * Hook used to compute the styles required to move a div into a new position.
+ *
+ * The way this animation works is the following:
+ *  - It first renders the element as if there was no animation.
+ *  - It takes a snapshot of the position of the block to use it
+ *    as a destination point for the animation.
+ *  - It restores the element to the previous position using a CSS transform
+ *  - It uses the "resetAnimation" flag to reset the animation
+ *    from the beginning in order to animate to the new destination point.
+ *
+ * @param {Object} $1                          Options
+ * @param {*}      $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.
+ */
+function useMovingAnimation({
+  triggerAnimationOnChange
+}) {
+  const ref = (0,external_wp_element_namespaceObject.useRef)();
+
+  // Whenever the trigger changes, we need to take a snapshot of the current
+  // position of the block to use it as a destination point for the animation.
+  const {
+    previous,
+    prevRect
+  } = (0,external_wp_element_namespaceObject.useMemo)(() => ({
+    previous: ref.current && getAbsolutePosition(ref.current),
+    prevRect: ref.current && ref.current.getBoundingClientRect()
+  }),
+  // eslint-disable-next-line react-hooks/exhaustive-deps
+  [triggerAnimationOnChange]);
+  (0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
+    if (!previous || !ref.current) {
+      return;
+    }
+
+    // We disable the animation if the user has a preference for reduced
+    // motion.
+    const disableAnimation = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
+    if (disableAnimation) {
+      return;
+    }
+    const controller = new esm_le({
+      x: 0,
+      y: 0,
+      width: prevRect.width,
+      height: prevRect.height,
+      config: {
+        duration: ANIMATION_DURATION,
+        easing: Lt.easeInOutQuint
+      },
+      onChange({
+        value
+      }) {
+        if (!ref.current) {
+          return;
+        }
+        let {
+          x,
+          y,
+          width,
+          height
+        } = value;
+        x = Math.round(x);
+        y = Math.round(y);
+        width = Math.round(width);
+        height = Math.round(height);
+        const finishedMoving = x === 0 && y === 0;
+        ref.current.style.transformOrigin = 'center center';
+        ref.current.style.transform = finishedMoving ? null // Set to `null` to explicitly remove the transform.
+        : `translate3d(${x}px,${y}px,0)`;
+        ref.current.style.width = finishedMoving ? null : `${width}px`;
+        ref.current.style.height = finishedMoving ? null : `${height}px`;
+      }
+    });
+    ref.current.style.transform = undefined;
+    const destination = ref.current.getBoundingClientRect();
+    const x = Math.round(prevRect.left - destination.left);
+    const y = Math.round(prevRect.top - destination.top);
+    const width = destination.width;
+    const height = destination.height;
+    controller.start({
+      x: 0,
+      y: 0,
+      width,
+      height,
+      from: {
+        x,
+        y,
+        width: prevRect.width,
+        height: prevRect.height
+      }
+    });
+    return () => {
+      controller.stop();
+      controller.set({
+        x: 0,
+        y: 0,
+        width: prevRect.width,
+        height: prevRect.height
+      });
+    };
+  }, [previous, prevRect]);
+  return ref;
+}
+/* harmony default export */ const animation = (useMovingAnimation);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/save-hub/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+function SaveHub() {
+  const {
+    isDisabled,
+    isSaving
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      __experimentalGetDirtyEntityRecords,
+      isSavingEntityRecord
+    } = select(external_wp_coreData_namespaceObject.store);
+    const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
+    const _isSaving = dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key));
+    return {
+      isSaving: _isSaving,
+      isDisabled: _isSaving || !dirtyEntityRecords.length && !isPreviewingTheme()
+    };
+  }, []);
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
+    className: "edit-site-save-hub",
+    alignment: "right",
+    spacing: 4,
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SaveButton, {
+      className: "edit-site-save-hub__button",
+      variant: isDisabled ? null : 'primary',
+      showTooltip: false,
+      icon: isDisabled && !isSaving ? library_check : null,
+      showReviewMessage: true,
+      __next40pxDefaultSize: true
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/layout/index.js
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+const {
+  useCommands
+} = lock_unlock_unlock(external_wp_coreCommands_namespaceObject.privateApis);
+const {
+  useCommandContext
+} = lock_unlock_unlock(external_wp_commands_namespaceObject.privateApis);
+const {
+  useGlobalStyle: layout_useGlobalStyle
+} = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis);
+const {
+  NavigableRegion: layout_NavigableRegion
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+const layout_ANIMATION_DURATION = 0.3;
+function Layout() {
+  // This ensures the edited entity id and type are initialized properly.
+  useInitEditedEntityFromURL();
+  useSyncCanvasModeWithURL();
+  useCommands();
+  useEditModeCommands();
+  useCommonCommands();
+  const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<');
+  const toggleRef = (0,external_wp_element_namespaceObject.useRef)();
+  const {
+    isDistractionFree,
+    hasFixedToolbar,
+    hasBlockSelected,
+    canvasMode,
     previousShortcut,
-    nextShortcut,
-    isNavigationOpen
-  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
-    return {
-      previousShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/previous-region'),
-      nextShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/next-region'),
-      isNavigationOpen: select(store_store).isNavigationOpened()
-    };
-  }, []);
-  const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]);
-  useTitle(postType === null || postType === void 0 ? void 0 : (_postType$labels = postType.labels) === null || _postType$labels === void 0 ? void 0 : _postType$labels.name); // `postType` could load in asynchronously. Only provide the detailed region labels if
-  // the postType has loaded, otherwise `InterfaceSkeleton` will fallback to the defaults.
-
-  const itemsListLabel = postType === null || postType === void 0 ? void 0 : (_postType$labels2 = postType.labels) === null || _postType$labels2 === void 0 ? void 0 : _postType$labels2.items_list;
-  const detailedRegionLabels = postType ? {
-    header: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s - the name of the page, 'Header' as in the header area of that page.
-    (0,external_wp_i18n_namespaceObject.__)('%s - Header'), itemsListLabel),
-    body: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s - the name of the page, 'Content' as in the content area of that page.
-    (0,external_wp_i18n_namespaceObject.__)('%s - Content'), itemsListLabel)
-  } : undefined;
-  return (0,external_wp_element_namespaceObject.createElement)(interface_skeleton, {
-    className: classnames_default()('edit-site-list', {
-      'is-navigation-open': isNavigationOpen
-    }),
-    labels: {
-      drawer: (0,external_wp_i18n_namespaceObject.__)('Navigation Sidebar'),
-      ...detailedRegionLabels
-    },
-    header: (0,external_wp_element_namespaceObject.createElement)(header_Header, {
-      templateType: templateType
-    }),
-    drawer: (0,external_wp_element_namespaceObject.createElement)(navigation_sidebar.Slot, null),
-    notices: (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.EditorSnackbars, null),
-    content: (0,external_wp_element_namespaceObject.createElement)(Table, {
-      templateType: templateType
-    }),
-    shortcuts: {
-      previous: previousShortcut,
-      next: nextShortcut
-    }
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/get-is-list-page.js
-/**
- * Returns if the params match the list page route.
- *
- * @param {Object} params          The search params.
- * @param {string} params.postId   The post ID.
- * @param {string} params.postType The post type.
- * @return {boolean} Is list page or not.
- */
-function getIsListPage(_ref) {
-  let {
-    postId,
-    postType
-  } = _ref;
-  return !!(!postId && postType);
+    nextShortcut
+  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
+    const {
+      getAllShortcutKeyCombinations
+    } = select(external_wp_keyboardShortcuts_namespaceObject.store);
+    const {
+      getCanvasMode
+    } = lock_unlock_unlock(select(store));
+    return {
+      canvasMode: getCanvasMode(),
+      previousShortcut: getAllShortcutKeyCombinations('core/editor/previous-region'),
+      nextShortcut: getAllShortcutKeyCombinations('core/editor/next-region'),
+      hasFixedToolbar: select(external_wp_preferences_namespaceObject.store).get('core', 'fixedToolbar'),
+      isDistractionFree: select(external_wp_preferences_namespaceObject.store).get('core', 'distractionFree'),
+      hasBlockSelected: select(external_wp_blockEditor_namespaceObject.store).getBlockSelectionStart()
+    };
+  }, []);
+  const navigateRegionsProps = (0,external_wp_components_namespaceObject.__unstableUseNavigateRegions)({
+    previous: previousShortcut,
+    next: nextShortcut
+  });
+  const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
+  const [canvasResizer, canvasSize] = (0,external_wp_compose_namespaceObject.useResizeObserver)();
+  const [fullResizer] = (0,external_wp_compose_namespaceObject.useResizeObserver)();
+  const isEditorLoading = useIsSiteEditorLoading();
+  const [isResizableFrameOversized, setIsResizableFrameOversized] = (0,external_wp_element_namespaceObject.useState)(false);
+  const {
+    key: routeKey,
+    areas,
+    widths
+  } = useLayoutAreas();
+  const animationRef = animation({
+    triggerAnimationOnChange: canvasMode + '__' + routeKey
+  });
+
+  // Sets the right context for the command palette
+  let commandContext = 'site-editor';
+  if (canvasMode === 'edit') {
+    commandContext = 'entity-edit';
+  }
+  if (hasBlockSelected) {
+    commandContext = 'block-selection-edit';
+  }
+  useCommandContext(commandContext);
+  const [backgroundColor] = layout_useGlobalStyle('color.background');
+  const [gradientValue] = layout_useGlobalStyle('color.gradient');
+  const previousCanvaMode = (0,external_wp_compose_namespaceObject.usePrevious)(canvasMode);
+  (0,external_wp_element_namespaceObject.useEffect)(() => {
+    if (previousCanvaMode === 'edit') {
+      toggleRef.current?.focus();
+    }
+    // Should not depend on the previous canvas mode value but the next.
+    // eslint-disable-next-line react-hooks/exhaustive-deps
+  }, [canvasMode]);
+
+  // Synchronizing the URL with the store value of canvasMode happens in an effect
+  // This condition ensures the component is only rendered after the synchronization happens
+  // which prevents any animations due to potential canvasMode value change.
+  if (canvasMode === 'init') {
+    return null;
+  }
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
+    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_commands_namespaceObject.CommandMenu, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(register, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(global, {}), fullResizer, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+      ...navigateRegionsProps,
+      ref: navigateRegionsProps.ref,
+      className: dist_clsx('edit-site-layout', navigateRegionsProps.className, {
+        'is-distraction-free': isDistractionFree && canvasMode === 'edit',
+        'is-full-canvas': canvasMode === 'edit',
+        'has-fixed-toolbar': hasFixedToolbar,
+        'is-block-toolbar-visible': hasBlockSelected
+      }),
+      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+        className: "edit-site-layout__content",
+        children: [(!isMobileViewport || !areas.mobile) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(layout_NavigableRegion, {
+          ariaLabel: (0,external_wp_i18n_namespaceObject.__)('Navigation'),
+          className: "edit-site-layout__sidebar-region",
+          children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableAnimatePresence, {
+            children: canvasMode === 'view' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__unstableMotion.div, {
+              initial: {
+                opacity: 0
+              },
+              animate: {
+                opacity: 1
+              },
+              exit: {
+                opacity: 0
+              },
+              transition: {
+                type: 'tween',
+                duration:
+                // Disable transition in mobile to emulate a full page transition.
+                disableMotion || isMobileViewport ? 0 : layout_ANIMATION_DURATION,
+                ease: 'easeOut'
+              },
+              className: "edit-site-layout__sidebar",
+              children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(site_hub, {
+                ref: toggleRef,
+                isTransparent: isResizableFrameOversized
+              }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarContent, {
+                routeKey: routeKey,
+                children: areas.sidebar
+              }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SaveHub, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SavePanel, {})]
+            })
+          })
+        }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.EditorSnackbars, {}), isMobileViewport && areas.mobile && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+          className: "edit-site-layout__mobile",
+          children: [canvasMode !== 'edit' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarContent, {
+            routeKey: routeKey,
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SiteHubMobile, {
+              ref: toggleRef,
+              isTransparent: isResizableFrameOversized
+            })
+          }), areas.mobile]
+        }), !isMobileViewport && areas.content && canvasMode !== 'edit' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+          className: "edit-site-layout__area",
+          style: {
+            maxWidth: widths?.content
+          },
+          children: areas.content
+        }), !isMobileViewport && areas.preview && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
+          className: "edit-site-layout__canvas-container",
+          children: [canvasResizer, !!canvasSize.width && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
+            className: dist_clsx('edit-site-layout__canvas', {
+              'is-right-aligned': isResizableFrameOversized
+            }),
+            ref: animationRef,
+            children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ErrorBoundary, {
+              children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(resizable_frame, {
+                isReady: !isEditorLoading,
+                isFullWidth: canvasMode === 'edit',
+                defaultSize: {
+                  width: canvasSize.width - 24 /* $canvas-padding */,
+                  height: canvasSize.height
+                },
+                isOversized: isResizableFrameOversized,
+                setIsOversized: setIsResizableFrameOversized,
+                innerContentStyle: {
+                  background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor
+                },
+                children: areas.preview
+              })
+            })
+          })]
+        })]
+      })
+    })]
+  });
 }
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/app/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-function EditSiteApp(_ref) {
-  let {
-    reboot
-  } = _ref;
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+const {
+  RouterProvider
+} = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis);
+const {
+  GlobalStylesProvider
+} = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis);
+function App() {
   const {
     createErrorNotice
   } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
-
   function onPluginAreaError(name) {
-    createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)(
-    /* translators: %s: plugin name */
+    createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: plugin name */
     (0,external_wp_i18n_namespaceObject.__)('The "%s" plugin has encountered an error and cannot be rendered.'), name));
   }
-
-  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SlotFillProvider, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.UnsavedChangesWarning, null), (0,external_wp_element_namespaceObject.createElement)(Routes, null, _ref2 => {
-    let {
-      params
-    } = _ref2;
-    const isListPage = getIsListPage(params);
-    return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, isListPage ? (0,external_wp_element_namespaceObject.createElement)(List, null) : (0,external_wp_element_namespaceObject.createElement)(editor, {
-      onError: reboot
-    }), (0,external_wp_element_namespaceObject.createElement)(external_wp_plugins_namespaceObject.PluginArea, {
-      onError: onPluginAreaError
-    }), (0,external_wp_element_namespaceObject.createElement)(navigation_sidebar // Open the navigation sidebar by default when in the list page.
-    , {
-      isDefaultOpen: !!isListPage,
-      activeTemplateType: isListPage ? params.postType : undefined
-    }));
-  }));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/plugin-sidebar/index.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Renders a sidebar when activated. The contents within the `PluginSidebar` will appear as content within the sidebar.
- * It also automatically renders a corresponding `PluginSidebarMenuItem` component when `isPinnable` flag is set to `true`.
- * If you wish to display the sidebar, you can with use the `PluginSidebarMoreMenuItem` component or the `wp.data.dispatch` API:
- *
- * ```js
- * wp.data.dispatch( 'core/edit-site' ).openGeneralSidebar( 'plugin-name/sidebar-name' );
- * ```
- *
- * @see PluginSidebarMoreMenuItem
- *
- * @param {Object}                props                                 Element props.
- * @param {string}                props.name                            A string identifying the sidebar. Must be unique for every sidebar registered within the scope of your plugin.
- * @param {string}                [props.className]                     An optional class name added to the sidebar body.
- * @param {string}                props.title                           Title displayed at the top of the sidebar.
- * @param {boolean}               [props.isPinnable=true]               Whether to allow to pin sidebar to the toolbar. When set to `true` it also automatically renders a corresponding menu item.
- * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered when the sidebar is pinned to toolbar.
- *
- * @example
- * ```js
- * // Using ES5 syntax
- * var __ = wp.i18n.__;
- * var el = wp.element.createElement;
- * var PanelBody = wp.components.PanelBody;
- * var PluginSidebar = wp.editSite.PluginSidebar;
- * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.
- *
- * function MyPluginSidebar() {
- * 	return el(
- * 			PluginSidebar,
- * 			{
- * 				name: 'my-sidebar',
- * 				title: 'My sidebar title',
- * 				icon: moreIcon,
- * 			},
- * 			el(
- * 				PanelBody,
- * 				{},
- * 				__( 'My sidebar content' )
- * 			)
- * 	);
- * }
- * ```
- *
- * @example
- * ```jsx
- * // Using ESNext syntax
- * import { __ } from '@wordpress/i18n';
- * import { PanelBody } from '@wordpress/components';
- * import { PluginSidebar } from '@wordpress/edit-site';
- * import { more } from '@wordpress/icons';
- *
- * const MyPluginSidebar = () => (
- * 	<PluginSidebar
- * 		name="my-sidebar"
- * 		title="My sidebar title"
- * 		icon={ more }
- * 	>
- * 		<PanelBody>
- * 			{ __( 'My sidebar content' ) }
- * 		</PanelBody>
- * 	</PluginSidebar>
- * );
- * ```
- */
-
-function PluginSidebarEditSite(_ref) {
-  let {
-    className,
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SlotFillProvider, {
+    children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(GlobalStylesProvider, {
+      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.UnsavedChangesWarning, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(RouterProvider, {
+        children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Layout, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_plugins_namespaceObject.PluginArea, {
+          onError: onPluginAreaError
+        })]
+      })]
+    })
+  });
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/deprecated.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+const isSiteEditor = (0,external_wp_url_namespaceObject.getPath)(window.location.href)?.includes('site-editor.php');
+const deprecateSlot = name => {
+  external_wp_deprecated_default()(`wp.editPost.${name}`, {
+    since: '6.6',
+    alternative: `wp.editor.${name}`
+  });
+};
+
+/* eslint-disable jsdoc/require-param */
+/**
+ * @see PluginMoreMenuItem in @wordpress/editor package.
+ */
+function PluginMoreMenuItem(props) {
+  if (!isSiteEditor) {
+    return null;
+  }
+  deprecateSlot('PluginMoreMenuItem');
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.PluginMoreMenuItem, {
     ...props
-  } = _ref;
-  return (0,external_wp_element_namespaceObject.createElement)(complementary_area, extends_extends({
-    panelClassName: className,
-    className: "edit-site-sidebar",
-    scope: "core/edit-site"
-  }, props));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/plugin-sidebar-more-menu-item/index.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Renders a menu item in `Plugins` group in `More Menu` drop down,
- * and can be used to activate the corresponding `PluginSidebar` component.
- * The text within the component appears as the menu item label.
- *
- * @param {Object}                props                                 Component props.
- * @param {string}                props.target                          A string identifying the target sidebar you wish to be activated by this menu item. Must be the same as the `name` prop you have given to that sidebar.
- * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered to the left of the menu item label.
- *
- * @example
- * ```js
- * // Using ES5 syntax
- * var __ = wp.i18n.__;
- * var PluginSidebarMoreMenuItem = wp.editSite.PluginSidebarMoreMenuItem;
- * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.
- *
- * function MySidebarMoreMenuItem() {
- * 	return wp.element.createElement(
- * 		PluginSidebarMoreMenuItem,
- * 		{
- * 			target: 'my-sidebar',
- * 			icon: moreIcon,
- * 		},
- * 		__( 'My sidebar title' )
- * 	)
- * }
- * ```
- *
- * @example
- * ```jsx
- * // Using ESNext syntax
- * import { __ } from '@wordpress/i18n';
- * import { PluginSidebarMoreMenuItem } from '@wordpress/edit-site';
- * import { more } from '@wordpress/icons';
- *
- * const MySidebarMoreMenuItem = () => (
- * 	<PluginSidebarMoreMenuItem
- * 		target="my-sidebar"
- * 		icon={ more }
- * 	>
- * 		{ __( 'My sidebar title' ) }
- * 	</PluginSidebarMoreMenuItem>
- * );
- * ```
- *
- * @return {WPComponent} The component to be rendered.
- */
-
+  });
+}
+
+/**
+ * @see PluginSidebar in @wordpress/editor package.
+ */
+function PluginSidebar(props) {
+  if (!isSiteEditor) {
+    return null;
+  }
+  deprecateSlot('PluginSidebar');
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.PluginSidebar, {
+    ...props
+  });
+}
+
+/**
+ * @see PluginSidebarMoreMenuItem in @wordpress/editor package.
+ */
 function PluginSidebarMoreMenuItem(props) {
-  return (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaMoreMenuItem // Menu item is marked with unstable prop for backward compatibility.
-  // @see https://github.com/WordPress/gutenberg/issues/14457
-  , extends_extends({
-    __unstableExplicitMenuItem: true,
-    scope: "core/edit-site"
-  }, props));
-}
-
-;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/plugin-more-menu-item/index.js
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Renders a menu item in `Plugins` group in `More Menu` drop down, and can be used to as a button or link depending on the props provided.
- * The text within the component appears as the menu item label.
- *
- * @param {Object}                props                                 Component properties.
- * @param {string}                [props.href]                          When `href` is provided then the menu item is represented as an anchor rather than button. It corresponds to the `href` attribute of the anchor.
- * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered to the left of the menu item label.
- * @param {Function}              [props.onClick=noop]                  The callback function to be executed when the user clicks the menu item.
- * @param {...*}                  [props.other]                         Any additional props are passed through to the underlying [Button](/packages/components/src/button/README.md) component.
- *
- * @example
- * ```js
- * // Using ES5 syntax
- * var __ = wp.i18n.__;
- * var PluginMoreMenuItem = wp.editSite.PluginMoreMenuItem;
- * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.
- *
- * function onButtonClick() {
- * 	alert( 'Button clicked.' );
- * }
- *
- * function MyButtonMoreMenuItem() {
- * 	return wp.element.createElement(
- * 		PluginMoreMenuItem,
- * 		{
- * 			icon: moreIcon,
- * 			onClick: onButtonClick,
- * 		},
- * 		__( 'My button title' )
- * 	);
- * }
- * ```
- *
- * @example
- * ```jsx
- * // Using ESNext syntax
- * import { __ } from '@wordpress/i18n';
- * import { PluginMoreMenuItem } from '@wordpress/edit-site';
- * import { more } from '@wordpress/icons';
- *
- * function onButtonClick() {
- * 	alert( 'Button clicked.' );
- * }
- *
- * const MyButtonMoreMenuItem = () => (
- * 	<PluginMoreMenuItem
- * 		icon={ more }
- * 		onClick={ onButtonClick }
- * 	>
- * 		{ __( 'My button title' ) }
- * 	</PluginMoreMenuItem>
- * );
- * ```
- *
- * @return {WPComponent} The component to be rendered.
- */
-
-/* harmony default export */ var plugin_more_menu_item = ((0,external_wp_compose_namespaceObject.compose)((0,external_wp_plugins_namespaceObject.withPluginContext)((context, ownProps) => {
-  var _ownProps$as;
-
-  return {
-    as: (_ownProps$as = ownProps.as) !== null && _ownProps$as !== void 0 ? _ownProps$as : external_wp_components_namespaceObject.MenuItem,
-    icon: ownProps.icon || context.icon,
-    name: 'core/edit-site/plugin-more-menu'
-  };
-}))(action_item));
+  if (!isSiteEditor) {
+    return null;
+  }
+  deprecateSlot('PluginSidebarMoreMenuItem');
+  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.PluginSidebarMoreMenuItem, {
+    ...props
+  });
+}
+/* eslint-enable jsdoc/require-param */
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-/**
- * Reinitializes the editor after the user chooses to reboot the editor after
- * an unhandled error occurs, replacing previously mounted editor element using
- * an initial state from prior to the crash.
- *
- * @param {Element} target   DOM node in which editor is rendered.
- * @param {?Object} settings Editor settings object.
- */
-
-function reinitializeEditor(target, settings) {
-  // Display warning if editor wasn't able to resolve homepage template.
-  if (!settings.__unstableHomeTemplate) {
-    (0,external_wp_element_namespaceObject.render)((0,external_wp_element_namespaceObject.createElement)(ErrorBoundaryWarning, {
-      message: (0,external_wp_i18n_namespaceObject.__)('The editor is unable to find a block template for the homepage.'),
-      dashboardLink: "index.php"
-    }), target);
-    return;
-  } // This will be a no-op if the target doesn't have any React nodes.
-
-
-  (0,external_wp_element_namespaceObject.unmountComponentAtNode)(target);
-  const reboot = reinitializeEditor.bind(null, target, settings); // We dispatch actions and update the store synchronously before rendering
-  // so that we won't trigger unnecessary re-renders with useEffect.
-
-  {
-    (0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core/edit-site', {
-      editorMode: 'visual',
-      fixedToolbar: false,
-      focusMode: false,
-      keepCaretInsideBlock: false,
-      welcomeGuide: true,
-      welcomeGuideStyles: true
-    });
-    (0,external_wp_data_namespaceObject.dispatch)(store_store).updateSettings(settings); // Keep the defaultTemplateTypes in the core/editor settings too,
-    // so that they can be selected with core/editor selectors in any editor.
-    // This is needed because edit-site doesn't initialize with EditorProvider,
-    // which internally uses updateEditorSettings as well.
-
-    (0,external_wp_data_namespaceObject.dispatch)(external_wp_editor_namespaceObject.store).updateEditorSettings({
-      defaultTemplateTypes: settings.defaultTemplateTypes,
-      defaultTemplatePartAreas: settings.defaultTemplatePartAreas
-    });
-    const isLandingOnListPage = getIsListPage((0,external_wp_url_namespaceObject.getQueryArgs)(window.location.href));
-
-    if (isLandingOnListPage) {
-      // Default the navigation panel to be opened when we're in a bigger
-      // screen and land in the list screen.
-      (0,external_wp_data_namespaceObject.dispatch)(store_store).setIsNavigationPanelOpened((0,external_wp_data_namespaceObject.select)(external_wp_viewport_namespaceObject.store).isViewportMatch('medium'));
-    }
-  }
-  (0,external_wp_element_namespaceObject.render)((0,external_wp_element_namespaceObject.createElement)(EditSiteApp, {
-    reboot: reboot
-  }), target);
-}
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
 /**
  * Initializes the site editor screen.
  *
@@ -13794,27 +40625,71 @@
  */
 
 function initializeEditor(id, settings) {
-  settings.__experimentalFetchLinkSuggestions = (search, searchOptions) => (0,external_wp_coreData_namespaceObject.__experimentalFetchLinkSuggestions)(search, searchOptions, settings);
-
-  settings.__experimentalFetchRichUrlData = external_wp_coreData_namespaceObject.__experimentalFetchUrlData;
-  settings.__experimentalSpotlightEntityBlocks = ['core/template-part'];
   const target = document.getElementById(id);
-
-  (0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).__experimentalReapplyBlockTypeFilters();
-
-  (0,external_wp_blockLibrary_namespaceObject.registerCoreBlocks)();
-
+  const root = (0,external_wp_element_namespaceObject.createRoot)(target);
+  (0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).reapplyBlockTypeFilters();
+  const coreBlocks = (0,external_wp_blockLibrary_namespaceObject.__experimentalGetCoreBlocks)().filter(({
+    name
+  }) => name !== 'core/freeform');
+  (0,external_wp_blockLibrary_namespaceObject.registerCoreBlocks)(coreBlocks);
+  (0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).setFreeformFallbackBlockName('core/html');
+  (0,external_wp_widgets_namespaceObject.registerLegacyWidgetBlock)({
+    inserter: false
+  });
+  (0,external_wp_widgets_namespaceObject.registerWidgetGroupBlock)({
+    inserter: false
+  });
   if (false) {}
 
-  reinitializeEditor(target, settings);
-}
-
-
-
-
-
-
-}();
+  // We dispatch actions and update the store synchronously before rendering
+  // so that we won't trigger unnecessary re-renders with useEffect.
+  (0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core/edit-site', {
+    welcomeGuide: true,
+    welcomeGuideStyles: true,
+    welcomeGuidePage: true,
+    welcomeGuideTemplate: true
+  });
+  (0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core', {
+    allowRightClickOverrides: true,
+    distractionFree: false,
+    editorMode: 'visual',
+    fixedToolbar: false,
+    focusMode: false,
+    inactivePanels: [],
+    keepCaretInsideBlock: false,
+    openPanels: ['post-status'],
+    showBlockBreadcrumbs: true,
+    showListViewByDefault: false
+  });
+  (0,external_wp_data_namespaceObject.dispatch)(store).updateSettings(settings);
+
+  // Keep the defaultTemplateTypes in the core/editor settings too,
+  // so that they can be selected with core/editor selectors in any editor.
+  // This is needed because edit-site doesn't initialize with EditorProvider,
+  // which internally uses updateEditorSettings as well.
+  (0,external_wp_data_namespaceObject.dispatch)(external_wp_editor_namespaceObject.store).updateEditorSettings({
+    defaultTemplateTypes: settings.defaultTemplateTypes,
+    defaultTemplatePartAreas: settings.defaultTemplatePartAreas
+  });
+
+  // Prevent the default browser action for files dropped outside of dropzones.
+  window.addEventListener('dragover', e => e.preventDefault(), false);
+  window.addEventListener('drop', e => e.preventDefault(), false);
+  root.render( /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(App, {}));
+  return root;
+}
+function reinitializeEditor() {
+  external_wp_deprecated_default()('wp.editSite.reinitializeEditor', {
+    since: '6.2',
+    version: '6.3'
+  });
+}
+
+
+
+
+})();
+
 (window.wp = window.wp || {}).editSite = __webpack_exports__;
 /******/ })()
 ;
\ No newline at end of file