[ Index ] |
PHP Cross Reference of WordPress |
[Summary view] [Print] [Text view]
1 /******/ (function() { // webpackBootstrap 2 /******/ var __webpack_modules__ = ({ 3 4 /***/ 6411: 5 /***/ (function(module, exports) { 6 7 var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! 8 autosize 4.0.4 9 license: MIT 10 http://www.jacklmoore.com/autosize 11 */ 12 (function (global, factory) { 13 if (true) { 14 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), 15 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 16 (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), 17 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 18 } else { var mod; } 19 })(this, function (module, exports) { 20 'use strict'; 21 22 var map = typeof Map === "function" ? new Map() : function () { 23 var keys = []; 24 var values = []; 25 26 return { 27 has: function has(key) { 28 return keys.indexOf(key) > -1; 29 }, 30 get: function get(key) { 31 return values[keys.indexOf(key)]; 32 }, 33 set: function set(key, value) { 34 if (keys.indexOf(key) === -1) { 35 keys.push(key); 36 values.push(value); 37 } 38 }, 39 delete: function _delete(key) { 40 var index = keys.indexOf(key); 41 if (index > -1) { 42 keys.splice(index, 1); 43 values.splice(index, 1); 44 } 45 } 46 }; 47 }(); 48 49 var createEvent = function createEvent(name) { 50 return new Event(name, { bubbles: true }); 51 }; 52 try { 53 new Event('test'); 54 } catch (e) { 55 // IE does not support `new Event()` 56 createEvent = function createEvent(name) { 57 var evt = document.createEvent('Event'); 58 evt.initEvent(name, true, false); 59 return evt; 60 }; 61 } 62 63 function assign(ta) { 64 if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return; 65 66 var heightOffset = null; 67 var clientWidth = null; 68 var cachedHeight = null; 69 70 function init() { 71 var style = window.getComputedStyle(ta, null); 72 73 if (style.resize === 'vertical') { 74 ta.style.resize = 'none'; 75 } else if (style.resize === 'both') { 76 ta.style.resize = 'horizontal'; 77 } 78 79 if (style.boxSizing === 'content-box') { 80 heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); 81 } else { 82 heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); 83 } 84 // Fix when a textarea is not on document body and heightOffset is Not a Number 85 if (isNaN(heightOffset)) { 86 heightOffset = 0; 87 } 88 89 update(); 90 } 91 92 function changeOverflow(value) { 93 { 94 // Chrome/Safari-specific fix: 95 // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space 96 // made available by removing the scrollbar. The following forces the necessary text reflow. 97 var width = ta.style.width; 98 ta.style.width = '0px'; 99 // Force reflow: 100 /* jshint ignore:start */ 101 ta.offsetWidth; 102 /* jshint ignore:end */ 103 ta.style.width = width; 104 } 105 106 ta.style.overflowY = value; 107 } 108 109 function getParentOverflows(el) { 110 var arr = []; 111 112 while (el && el.parentNode && el.parentNode instanceof Element) { 113 if (el.parentNode.scrollTop) { 114 arr.push({ 115 node: el.parentNode, 116 scrollTop: el.parentNode.scrollTop 117 }); 118 } 119 el = el.parentNode; 120 } 121 122 return arr; 123 } 124 125 function resize() { 126 if (ta.scrollHeight === 0) { 127 // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. 128 return; 129 } 130 131 var overflows = getParentOverflows(ta); 132 var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240) 133 134 ta.style.height = ''; 135 ta.style.height = ta.scrollHeight + heightOffset + 'px'; 136 137 // used to check if an update is actually necessary on window.resize 138 clientWidth = ta.clientWidth; 139 140 // prevents scroll-position jumping 141 overflows.forEach(function (el) { 142 el.node.scrollTop = el.scrollTop; 143 }); 144 145 if (docTop) { 146 document.documentElement.scrollTop = docTop; 147 } 148 } 149 150 function update() { 151 resize(); 152 153 var styleHeight = Math.round(parseFloat(ta.style.height)); 154 var computed = window.getComputedStyle(ta, null); 155 156 // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box 157 var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight; 158 159 // The actual height not matching the style height (set via the resize method) indicates that 160 // the max-height has been exceeded, in which case the overflow should be allowed. 161 if (actualHeight < styleHeight) { 162 if (computed.overflowY === 'hidden') { 163 changeOverflow('scroll'); 164 resize(); 165 actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight; 166 } 167 } else { 168 // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands. 169 if (computed.overflowY !== 'hidden') { 170 changeOverflow('hidden'); 171 resize(); 172 actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight; 173 } 174 } 175 176 if (cachedHeight !== actualHeight) { 177 cachedHeight = actualHeight; 178 var evt = createEvent('autosize:resized'); 179 try { 180 ta.dispatchEvent(evt); 181 } catch (err) { 182 // Firefox will throw an error on dispatchEvent for a detached element 183 // https://bugzilla.mozilla.org/show_bug.cgi?id=889376 184 } 185 } 186 } 187 188 var pageResize = function pageResize() { 189 if (ta.clientWidth !== clientWidth) { 190 update(); 191 } 192 }; 193 194 var destroy = function (style) { 195 window.removeEventListener('resize', pageResize, false); 196 ta.removeEventListener('input', update, false); 197 ta.removeEventListener('keyup', update, false); 198 ta.removeEventListener('autosize:destroy', destroy, false); 199 ta.removeEventListener('autosize:update', update, false); 200 201 Object.keys(style).forEach(function (key) { 202 ta.style[key] = style[key]; 203 }); 204 205 map.delete(ta); 206 }.bind(ta, { 207 height: ta.style.height, 208 resize: ta.style.resize, 209 overflowY: ta.style.overflowY, 210 overflowX: ta.style.overflowX, 211 wordWrap: ta.style.wordWrap 212 }); 213 214 ta.addEventListener('autosize:destroy', destroy, false); 215 216 // IE9 does not fire onpropertychange or oninput for deletions, 217 // so binding to onkeyup to catch most of those events. 218 // There is no way that I know of to detect something like 'cut' in IE9. 219 if ('onpropertychange' in ta && 'oninput' in ta) { 220 ta.addEventListener('keyup', update, false); 221 } 222 223 window.addEventListener('resize', pageResize, false); 224 ta.addEventListener('input', update, false); 225 ta.addEventListener('autosize:update', update, false); 226 ta.style.overflowX = 'hidden'; 227 ta.style.wordWrap = 'break-word'; 228 229 map.set(ta, { 230 destroy: destroy, 231 update: update 232 }); 233 234 init(); 235 } 236 237 function destroy(ta) { 238 var methods = map.get(ta); 239 if (methods) { 240 methods.destroy(); 241 } 242 } 243 244 function update(ta) { 245 var methods = map.get(ta); 246 if (methods) { 247 methods.update(); 248 } 249 } 250 251 var autosize = null; 252 253 // Do nothing in Node.js environment and IE8 (or lower) 254 if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { 255 autosize = function autosize(el) { 256 return el; 257 }; 258 autosize.destroy = function (el) { 259 return el; 260 }; 261 autosize.update = function (el) { 262 return el; 263 }; 264 } else { 265 autosize = function autosize(el, options) { 266 if (el) { 267 Array.prototype.forEach.call(el.length ? el : [el], function (x) { 268 return assign(x, options); 269 }); 270 } 271 return el; 272 }; 273 autosize.destroy = function (el) { 274 if (el) { 275 Array.prototype.forEach.call(el.length ? el : [el], destroy); 276 } 277 return el; 278 }; 279 autosize.update = function (el) { 280 if (el) { 281 Array.prototype.forEach.call(el.length ? el : [el], update); 282 } 283 return el; 284 }; 285 } 286 287 exports.default = autosize; 288 module.exports = exports['default']; 289 }); 290 291 /***/ }), 292 293 /***/ 4403: 294 /***/ (function(module, exports) { 295 296 var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! 297 Copyright (c) 2018 Jed Watson. 298 Licensed under the MIT License (MIT), see 299 http://jedwatson.github.io/classnames 300 */ 301 /* global define */ 302 303 (function () { 304 'use strict'; 305 306 var hasOwn = {}.hasOwnProperty; 307 308 function classNames() { 309 var classes = []; 310 311 for (var i = 0; i < arguments.length; i++) { 312 var arg = arguments[i]; 313 if (!arg) continue; 314 315 var argType = typeof arg; 316 317 if (argType === 'string' || argType === 'number') { 318 classes.push(arg); 319 } else if (Array.isArray(arg)) { 320 if (arg.length) { 321 var inner = classNames.apply(null, arg); 322 if (inner) { 323 classes.push(inner); 324 } 325 } 326 } else if (argType === 'object') { 327 if (arg.toString === Object.prototype.toString) { 328 for (var key in arg) { 329 if (hasOwn.call(arg, key) && arg[key]) { 330 classes.push(key); 331 } 332 } 333 } else { 334 classes.push(arg.toString()); 335 } 336 } 337 } 338 339 return classes.join(' '); 340 } 341 342 if ( true && module.exports) { 343 classNames.default = classNames; 344 module.exports = classNames; 345 } else if (true) { 346 // register as 'classnames', consistent with npm package name 347 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { 348 return classNames; 349 }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), 350 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 351 } else {} 352 }()); 353 354 355 /***/ }), 356 357 /***/ 4827: 358 /***/ (function(module) { 359 360 // This code has been refactored for 140 bytes 361 // You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js 362 var computedStyle = function (el, prop, getComputedStyle) { 363 getComputedStyle = window.getComputedStyle; 364 365 // In one fell swoop 366 return ( 367 // If we have getComputedStyle 368 getComputedStyle ? 369 // Query it 370 // TODO: From CSS-Query notes, we might need (node, null) for FF 371 getComputedStyle(el) : 372 373 // Otherwise, we are in IE and use currentStyle 374 el.currentStyle 375 )[ 376 // Switch to camelCase for CSSOM 377 // DEV: Grabbed from jQuery 378 // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194 379 // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597 380 prop.replace(/-(\w)/gi, function (word, letter) { 381 return letter.toUpperCase(); 382 }) 383 ]; 384 }; 385 386 module.exports = computedStyle; 387 388 389 /***/ }), 390 391 /***/ 8981: 392 /***/ (function(module, exports) { 393 394 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 395 // v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime 396 // v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs 397 // 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. 398 // v4 adds AMD/UMD, commonJS, and plain browser support 399 // v4.1 adds url download capability via solo URL argument (same domain/CORS only) 400 // v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors 401 // https://github.com/rndme/download 402 403 (function (root, factory) { 404 if (true) { 405 // AMD. Register as an anonymous module. 406 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), 407 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 408 (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), 409 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 410 } else {} 411 }(this, function () { 412 413 return function download(data, strFileName, strMimeType) { 414 415 var self = window, // this script is only for browsers anyway... 416 defaultMime = "application/octet-stream", // this default mime also triggers iframe downloads 417 mimeType = strMimeType || defaultMime, 418 payload = data, 419 url = !strFileName && !strMimeType && payload, 420 anchor = document.createElement("a"), 421 toString = function(a){return String(a);}, 422 myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString), 423 fileName = strFileName || "download", 424 blob, 425 reader; 426 myBlob= myBlob.call ? myBlob.bind(self) : Blob ; 427 428 if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback 429 payload=[payload, mimeType]; 430 mimeType=payload[0]; 431 payload=payload[1]; 432 } 433 434 435 if(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument 436 fileName = url.split("/").pop().split("?")[0]; 437 anchor.href = url; // assign href prop to temp anchor 438 if(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path: 439 var ajax=new XMLHttpRequest(); 440 ajax.open( "GET", url, true); 441 ajax.responseType = 'blob'; 442 ajax.onload= function(e){ 443 download(e.target.response, fileName, defaultMime); 444 }; 445 setTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return: 446 return ajax; 447 } // end if valid url? 448 } // end if url? 449 450 451 //go ahead and download dataURLs right away 452 if(/^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(payload)){ 453 454 if(payload.length > (1024*1024*1.999) && myBlob !== toString ){ 455 payload=dataUrlToBlob(payload); 456 mimeType=payload.type || defaultMime; 457 }else{ 458 return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs: 459 navigator.msSaveBlob(dataUrlToBlob(payload), fileName) : 460 saver(payload) ; // everyone else can save dataURLs un-processed 461 } 462 463 }else{//not data url, is it a string with special needs? 464 if(/([\x80-\xff])/.test(payload)){ 465 var i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length; 466 for(i;i<mx;++i) tempUiArr[i]= payload.charCodeAt(i); 467 payload=new myBlob([tempUiArr], {type: mimeType}); 468 } 469 } 470 blob = payload instanceof myBlob ? 471 payload : 472 new myBlob([payload], {type: mimeType}) ; 473 474 475 function dataUrlToBlob(strUrl) { 476 var parts= strUrl.split(/[:;,]/), 477 type= parts[1], 478 decoder= parts[2] == "base64" ? atob : decodeURIComponent, 479 binData= decoder( parts.pop() ), 480 mx= binData.length, 481 i= 0, 482 uiArr= new Uint8Array(mx); 483 484 for(i;i<mx;++i) uiArr[i]= binData.charCodeAt(i); 485 486 return new myBlob([uiArr], {type: type}); 487 } 488 489 function saver(url, winMode){ 490 491 if ('download' in anchor) { //html5 A[download] 492 anchor.href = url; 493 anchor.setAttribute("download", fileName); 494 anchor.className = "download-js-link"; 495 anchor.innerHTML = "downloading..."; 496 anchor.style.display = "none"; 497 document.body.appendChild(anchor); 498 setTimeout(function() { 499 anchor.click(); 500 document.body.removeChild(anchor); 501 if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(anchor.href);}, 250 );} 502 }, 66); 503 return true; 504 } 505 506 // handle non-a[download] safari as best we can: 507 if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent)) { 508 if(/^data:/.test(url)) url="data:"+url.replace(/^data:([\w\/\-\+]+)/, defaultMime); 509 if(!window.open(url)){ // popup blocked, offer direct download: 510 if(confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")){ location.href=url; } 511 } 512 return true; 513 } 514 515 //do iframe dataURL download (old ch+FF): 516 var f = document.createElement("iframe"); 517 document.body.appendChild(f); 518 519 if(!winMode && /^data:/.test(url)){ // force a mime that will download: 520 url="data:"+url.replace(/^data:([\w\/\-\+]+)/, defaultMime); 521 } 522 f.src=url; 523 setTimeout(function(){ document.body.removeChild(f); }, 333); 524 525 }//end saver 526 527 528 529 530 if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL) 531 return navigator.msSaveBlob(blob, fileName); 532 } 533 534 if(self.URL){ // simple fast and modern way using Blob and URL: 535 saver(self.URL.createObjectURL(blob), true); 536 }else{ 537 // handle non-Blob()+non-URL browsers: 538 if(typeof blob === "string" || blob.constructor===toString ){ 539 try{ 540 return saver( "data:" + mimeType + ";base64," + self.btoa(blob) ); 541 }catch(y){ 542 return saver( "data:" + mimeType + "," + encodeURIComponent(blob) ); 543 } 544 } 545 546 // Blob but not URL support: 547 reader=new FileReader(); 548 reader.onload=function(e){ 549 saver(this.result); 550 }; 551 reader.readAsDataURL(blob); 552 } 553 return true; 554 }; /* end download() */ 555 })); 556 557 558 /***/ }), 559 560 /***/ 9894: 561 /***/ (function(module, __unused_webpack_exports, __webpack_require__) { 562 563 // Load in dependencies 564 var computedStyle = __webpack_require__(4827); 565 566 /** 567 * Calculate the `line-height` of a given node 568 * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM. 569 * @returns {Number} `line-height` of the element in pixels 570 */ 571 function lineHeight(node) { 572 // Grab the line-height via style 573 var lnHeightStr = computedStyle(node, 'line-height'); 574 var lnHeight = parseFloat(lnHeightStr, 10); 575 576 // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em') 577 if (lnHeightStr === lnHeight + '') { 578 // Save the old lineHeight style and update the em unit to the element 579 var _lnHeightStyle = node.style.lineHeight; 580 node.style.lineHeight = lnHeightStr + 'em'; 581 582 // Calculate the em based height 583 lnHeightStr = computedStyle(node, 'line-height'); 584 lnHeight = parseFloat(lnHeightStr, 10); 585 586 // Revert the lineHeight style 587 if (_lnHeightStyle) { 588 node.style.lineHeight = _lnHeightStyle; 589 } else { 590 delete node.style.lineHeight; 591 } 592 } 593 594 // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt) 595 // DEV: `em` units are converted to `pt` in IE6 596 // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length 597 if (lnHeightStr.indexOf('pt') !== -1) { 598 lnHeight *= 4; 599 lnHeight /= 3; 600 // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm) 601 } else if (lnHeightStr.indexOf('mm') !== -1) { 602 lnHeight *= 96; 603 lnHeight /= 25.4; 604 // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm) 605 } else if (lnHeightStr.indexOf('cm') !== -1) { 606 lnHeight *= 96; 607 lnHeight /= 2.54; 608 // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in) 609 } else if (lnHeightStr.indexOf('in') !== -1) { 610 lnHeight *= 96; 611 // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc) 612 } else if (lnHeightStr.indexOf('pc') !== -1) { 613 lnHeight *= 16; 614 } 615 616 // Continue our computation 617 lnHeight = Math.round(lnHeight); 618 619 // If the line-height is "normal", calculate by font-size 620 if (lnHeightStr === 'normal') { 621 // Create a temporary node 622 var nodeName = node.nodeName; 623 var _node = document.createElement(nodeName); 624 _node.innerHTML = ' '; 625 626 // If we have a text area, reset it to only 1 row 627 // https://github.com/twolfson/line-height/issues/4 628 if (nodeName.toUpperCase() === 'TEXTAREA') { 629 _node.setAttribute('rows', '1'); 630 } 631 632 // Set the font-size of the element 633 var fontSizeStr = computedStyle(node, 'font-size'); 634 _node.style.fontSize = fontSizeStr; 635 636 // Remove default padding/border which can affect offset height 637 // https://github.com/twolfson/line-height/issues/4 638 // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight 639 _node.style.padding = '0px'; 640 _node.style.border = '0px'; 641 642 // Append it to the body 643 var body = document.body; 644 body.appendChild(_node); 645 646 // Assume the line height of the element is the height 647 var height = _node.offsetHeight; 648 lnHeight = height; 649 650 // Remove our child from the DOM 651 body.removeChild(_node); 652 } 653 654 // Return the calculated height 655 return lnHeight; 656 } 657 658 // Export lineHeight 659 module.exports = lineHeight; 660 661 662 /***/ }), 663 664 /***/ 5372: 665 /***/ (function(module, __unused_webpack_exports, __webpack_require__) { 666 667 "use strict"; 668 /** 669 * Copyright (c) 2013-present, Facebook, Inc. 670 * 671 * This source code is licensed under the MIT license found in the 672 * LICENSE file in the root directory of this source tree. 673 */ 674 675 676 677 var ReactPropTypesSecret = __webpack_require__(9567); 678 679 function emptyFunction() {} 680 function emptyFunctionWithReset() {} 681 emptyFunctionWithReset.resetWarningCache = emptyFunction; 682 683 module.exports = function() { 684 function shim(props, propName, componentName, location, propFullName, secret) { 685 if (secret === ReactPropTypesSecret) { 686 // It is still safe when called from React. 687 return; 688 } 689 var err = new Error( 690 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 691 'Use PropTypes.checkPropTypes() to call them. ' + 692 'Read more at http://fb.me/use-check-prop-types' 693 ); 694 err.name = 'Invariant Violation'; 695 throw err; 696 }; 697 shim.isRequired = shim; 698 function getShim() { 699 return shim; 700 }; 701 // Important! 702 // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. 703 var ReactPropTypes = { 704 array: shim, 705 bigint: shim, 706 bool: shim, 707 func: shim, 708 number: shim, 709 object: shim, 710 string: shim, 711 symbol: shim, 712 713 any: shim, 714 arrayOf: getShim, 715 element: shim, 716 elementType: shim, 717 instanceOf: getShim, 718 node: shim, 719 objectOf: getShim, 720 oneOf: getShim, 721 oneOfType: getShim, 722 shape: getShim, 723 exact: getShim, 724 725 checkPropTypes: emptyFunctionWithReset, 726 resetWarningCache: emptyFunction 727 }; 728 729 ReactPropTypes.PropTypes = ReactPropTypes; 730 731 return ReactPropTypes; 732 }; 733 734 735 /***/ }), 736 737 /***/ 2652: 738 /***/ (function(module, __unused_webpack_exports, __webpack_require__) { 739 740 /** 741 * Copyright (c) 2013-present, Facebook, Inc. 742 * 743 * This source code is licensed under the MIT license found in the 744 * LICENSE file in the root directory of this source tree. 745 */ 746 747 if (false) { var throwOnDirectAccess, ReactIs; } else { 748 // By explicitly using `prop-types` you are opting into new production behavior. 749 // http://fb.me/prop-types-in-prod 750 module.exports = __webpack_require__(5372)(); 751 } 752 753 754 /***/ }), 755 756 /***/ 9567: 757 /***/ (function(module) { 758 759 "use strict"; 760 /** 761 * Copyright (c) 2013-present, Facebook, Inc. 762 * 763 * This source code is licensed under the MIT license found in the 764 * LICENSE file in the root directory of this source tree. 765 */ 766 767 768 769 var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; 770 771 module.exports = ReactPropTypesSecret; 772 773 774 /***/ }), 775 776 /***/ 5438: 777 /***/ (function(__unused_webpack_module, exports, __webpack_require__) { 778 779 "use strict"; 780 781 var __extends = (this && this.__extends) || (function () { 782 var extendStatics = Object.setPrototypeOf || 783 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 784 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 785 return function (d, b) { 786 extendStatics(d, b); 787 function __() { this.constructor = d; } 788 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 789 }; 790 })(); 791 var __assign = (this && this.__assign) || Object.assign || function(t) { 792 for (var s, i = 1, n = arguments.length; i < n; i++) { 793 s = arguments[i]; 794 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) 795 t[p] = s[p]; 796 } 797 return t; 798 }; 799 var __rest = (this && this.__rest) || function (s, e) { 800 var t = {}; 801 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) 802 t[p] = s[p]; 803 if (s != null && typeof Object.getOwnPropertySymbols === "function") 804 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) 805 t[p[i]] = s[p[i]]; 806 return t; 807 }; 808 exports.__esModule = true; 809 var React = __webpack_require__(9196); 810 var PropTypes = __webpack_require__(2652); 811 var autosize = __webpack_require__(6411); 812 var _getLineHeight = __webpack_require__(9894); 813 var getLineHeight = _getLineHeight; 814 var RESIZED = "autosize:resized"; 815 /** 816 * A light replacement for built-in textarea component 817 * which automaticaly adjusts its height to match the content 818 */ 819 var TextareaAutosizeClass = /** @class */ (function (_super) { 820 __extends(TextareaAutosizeClass, _super); 821 function TextareaAutosizeClass() { 822 var _this = _super !== null && _super.apply(this, arguments) || this; 823 _this.state = { 824 lineHeight: null 825 }; 826 _this.textarea = null; 827 _this.onResize = function (e) { 828 if (_this.props.onResize) { 829 _this.props.onResize(e); 830 } 831 }; 832 _this.updateLineHeight = function () { 833 if (_this.textarea) { 834 _this.setState({ 835 lineHeight: getLineHeight(_this.textarea) 836 }); 837 } 838 }; 839 _this.onChange = function (e) { 840 var onChange = _this.props.onChange; 841 _this.currentValue = e.currentTarget.value; 842 onChange && onChange(e); 843 }; 844 return _this; 845 } 846 TextareaAutosizeClass.prototype.componentDidMount = function () { 847 var _this = this; 848 var _a = this.props, maxRows = _a.maxRows, async = _a.async; 849 if (typeof maxRows === "number") { 850 this.updateLineHeight(); 851 } 852 if (typeof maxRows === "number" || async) { 853 /* 854 the defer is needed to: 855 - force "autosize" to activate the scrollbar when this.props.maxRows is passed 856 - support StyledComponents (see #71) 857 */ 858 setTimeout(function () { return _this.textarea && autosize(_this.textarea); }); 859 } 860 else { 861 this.textarea && autosize(this.textarea); 862 } 863 if (this.textarea) { 864 this.textarea.addEventListener(RESIZED, this.onResize); 865 } 866 }; 867 TextareaAutosizeClass.prototype.componentWillUnmount = function () { 868 if (this.textarea) { 869 this.textarea.removeEventListener(RESIZED, this.onResize); 870 autosize.destroy(this.textarea); 871 } 872 }; 873 TextareaAutosizeClass.prototype.render = function () { 874 var _this = this; 875 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; 876 var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null; 877 return (React.createElement("textarea", __assign({}, props, { onChange: this.onChange, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, ref: function (element) { 878 _this.textarea = element; 879 if (typeof _this.props.innerRef === 'function') { 880 _this.props.innerRef(element); 881 } 882 else if (_this.props.innerRef) { 883 _this.props.innerRef.current = element; 884 } 885 } }), children)); 886 }; 887 TextareaAutosizeClass.prototype.componentDidUpdate = function () { 888 this.textarea && autosize.update(this.textarea); 889 }; 890 TextareaAutosizeClass.defaultProps = { 891 rows: 1, 892 async: false 893 }; 894 TextareaAutosizeClass.propTypes = { 895 rows: PropTypes.number, 896 maxRows: PropTypes.number, 897 onResize: PropTypes.func, 898 innerRef: PropTypes.any, 899 async: PropTypes.bool 900 }; 901 return TextareaAutosizeClass; 902 }(React.Component)); 903 exports.TextareaAutosize = React.forwardRef(function (props, ref) { 904 return React.createElement(TextareaAutosizeClass, __assign({}, props, { innerRef: ref })); 905 }); 906 907 908 /***/ }), 909 910 /***/ 773: 911 /***/ (function(__unused_webpack_module, exports, __webpack_require__) { 912 913 "use strict"; 914 var __webpack_unused_export__; 915 916 __webpack_unused_export__ = true; 917 var TextareaAutosize_1 = __webpack_require__(5438); 918 exports.Z = TextareaAutosize_1.TextareaAutosize; 919 920 921 /***/ }), 922 923 /***/ 9196: 924 /***/ (function(module) { 925 926 "use strict"; 927 module.exports = window["React"]; 928 929 /***/ }) 930 931 /******/ }); 932 /************************************************************************/ 933 /******/ // The module cache 934 /******/ var __webpack_module_cache__ = {}; 935 /******/ 936 /******/ // The require function 937 /******/ function __webpack_require__(moduleId) { 938 /******/ // Check if module is in cache 939 /******/ var cachedModule = __webpack_module_cache__[moduleId]; 940 /******/ if (cachedModule !== undefined) { 941 /******/ return cachedModule.exports; 942 /******/ } 943 /******/ // Create a new module (and put it into the cache) 944 /******/ var module = __webpack_module_cache__[moduleId] = { 945 /******/ // no module.id needed 946 /******/ // no module.loaded needed 947 /******/ exports: {} 948 /******/ }; 949 /******/ 950 /******/ // Execute the module function 951 /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); 952 /******/ 953 /******/ // Return the exports of the module 954 /******/ return module.exports; 955 /******/ } 956 /******/ 957 /************************************************************************/ 958 /******/ /* webpack/runtime/compat get default export */ 959 /******/ !function() { 960 /******/ // getDefaultExport function for compatibility with non-harmony modules 961 /******/ __webpack_require__.n = function(module) { 962 /******/ var getter = module && module.__esModule ? 963 /******/ function() { return module['default']; } : 964 /******/ function() { return module; }; 965 /******/ __webpack_require__.d(getter, { a: getter }); 966 /******/ return getter; 967 /******/ }; 968 /******/ }(); 969 /******/ 970 /******/ /* webpack/runtime/define property getters */ 971 /******/ !function() { 972 /******/ // define getter functions for harmony exports 973 /******/ __webpack_require__.d = function(exports, definition) { 974 /******/ for(var key in definition) { 975 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 976 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 977 /******/ } 978 /******/ } 979 /******/ }; 980 /******/ }(); 981 /******/ 982 /******/ /* webpack/runtime/hasOwnProperty shorthand */ 983 /******/ !function() { 984 /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } 985 /******/ }(); 986 /******/ 987 /******/ /* webpack/runtime/make namespace object */ 988 /******/ !function() { 989 /******/ // define __esModule on exports 990 /******/ __webpack_require__.r = function(exports) { 991 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 992 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 993 /******/ } 994 /******/ Object.defineProperty(exports, '__esModule', { value: true }); 995 /******/ }; 996 /******/ }(); 997 /******/ 998 /************************************************************************/ 999 var __webpack_exports__ = {}; 1000 // This entry need to be wrapped in an IIFE because it need to be in strict mode. 1001 !function() { 1002 "use strict"; 1003 // ESM COMPAT FLAG 1004 __webpack_require__.r(__webpack_exports__); 1005 1006 // EXPORTS 1007 __webpack_require__.d(__webpack_exports__, { 1008 "PluginMoreMenuItem": function() { return /* reexport */ plugin_more_menu_item; }, 1009 "PluginSidebar": function() { return /* reexport */ PluginSidebarEditSite; }, 1010 "PluginSidebarMoreMenuItem": function() { return /* reexport */ PluginSidebarMoreMenuItem; }, 1011 "__experimentalMainDashboardButton": function() { return /* reexport */ main_dashboard_button; }, 1012 "__experimentalNavigationToggle": function() { return /* reexport */ navigation_toggle; }, 1013 "initializeEditor": function() { return /* binding */ initializeEditor; }, 1014 "reinitializeEditor": function() { return /* binding */ reinitializeEditor; } 1015 }); 1016 1017 // NAMESPACE OBJECT: ./node_modules/@wordpress/interface/build-module/store/actions.js 1018 var actions_namespaceObject = {}; 1019 __webpack_require__.r(actions_namespaceObject); 1020 __webpack_require__.d(actions_namespaceObject, { 1021 "disableComplementaryArea": function() { return disableComplementaryArea; }, 1022 "enableComplementaryArea": function() { return enableComplementaryArea; }, 1023 "pinItem": function() { return pinItem; }, 1024 "setFeatureDefaults": function() { return setFeatureDefaults; }, 1025 "setFeatureValue": function() { return setFeatureValue; }, 1026 "toggleFeature": function() { return toggleFeature; }, 1027 "unpinItem": function() { return unpinItem; } 1028 }); 1029 1030 // NAMESPACE OBJECT: ./node_modules/@wordpress/interface/build-module/store/selectors.js 1031 var selectors_namespaceObject = {}; 1032 __webpack_require__.r(selectors_namespaceObject); 1033 __webpack_require__.d(selectors_namespaceObject, { 1034 "getActiveComplementaryArea": function() { return getActiveComplementaryArea; }, 1035 "isFeatureActive": function() { return isFeatureActive; }, 1036 "isItemPinned": function() { return isItemPinned; } 1037 }); 1038 1039 // NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/actions.js 1040 var store_actions_namespaceObject = {}; 1041 __webpack_require__.r(store_actions_namespaceObject); 1042 __webpack_require__.d(store_actions_namespaceObject, { 1043 "__experimentalSetPreviewDeviceType": function() { return __experimentalSetPreviewDeviceType; }, 1044 "addTemplate": function() { return addTemplate; }, 1045 "closeGeneralSidebar": function() { return closeGeneralSidebar; }, 1046 "openGeneralSidebar": function() { return openGeneralSidebar; }, 1047 "openNavigationPanelToMenu": function() { return openNavigationPanelToMenu; }, 1048 "removeTemplate": function() { return removeTemplate; }, 1049 "revertTemplate": function() { return revertTemplate; }, 1050 "setHomeTemplateId": function() { return setHomeTemplateId; }, 1051 "setIsInserterOpened": function() { return setIsInserterOpened; }, 1052 "setIsListViewOpened": function() { return setIsListViewOpened; }, 1053 "setIsNavigationPanelOpened": function() { return setIsNavigationPanelOpened; }, 1054 "setNavigationPanelActiveMenu": function() { return setNavigationPanelActiveMenu; }, 1055 "setPage": function() { return setPage; }, 1056 "setTemplate": function() { return setTemplate; }, 1057 "setTemplatePart": function() { return setTemplatePart; }, 1058 "switchEditorMode": function() { return switchEditorMode; }, 1059 "toggleFeature": function() { return actions_toggleFeature; }, 1060 "updateSettings": function() { return updateSettings; } 1061 }); 1062 1063 // NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/selectors.js 1064 var store_selectors_namespaceObject = {}; 1065 __webpack_require__.r(store_selectors_namespaceObject); 1066 __webpack_require__.d(store_selectors_namespaceObject, { 1067 "__experimentalGetInsertionPoint": function() { return __experimentalGetInsertionPoint; }, 1068 "__experimentalGetPreviewDeviceType": function() { return __experimentalGetPreviewDeviceType; }, 1069 "__unstableGetPreference": function() { return __unstableGetPreference; }, 1070 "getCanUserCreateMedia": function() { return getCanUserCreateMedia; }, 1071 "getCurrentTemplateNavigationPanelSubMenu": function() { return getCurrentTemplateNavigationPanelSubMenu; }, 1072 "getCurrentTemplateTemplateParts": function() { return getCurrentTemplateTemplateParts; }, 1073 "getEditedPostId": function() { return getEditedPostId; }, 1074 "getEditedPostType": function() { return getEditedPostType; }, 1075 "getEditorMode": function() { return getEditorMode; }, 1076 "getHomeTemplateId": function() { return getHomeTemplateId; }, 1077 "getNavigationPanelActiveMenu": function() { return getNavigationPanelActiveMenu; }, 1078 "getPage": function() { return getPage; }, 1079 "getReusableBlocks": function() { return getReusableBlocks; }, 1080 "getSettings": function() { return getSettings; }, 1081 "isFeatureActive": function() { return selectors_isFeatureActive; }, 1082 "isInserterOpened": function() { return isInserterOpened; }, 1083 "isListViewOpened": function() { return isListViewOpened; }, 1084 "isNavigationOpened": function() { return isNavigationOpened; } 1085 }); 1086 1087 ;// CONCATENATED MODULE: external ["wp","element"] 1088 var external_wp_element_namespaceObject = window["wp"]["element"]; 1089 ;// CONCATENATED MODULE: external ["wp","blocks"] 1090 var external_wp_blocks_namespaceObject = window["wp"]["blocks"]; 1091 ;// CONCATENATED MODULE: external ["wp","blockLibrary"] 1092 var external_wp_blockLibrary_namespaceObject = window["wp"]["blockLibrary"]; 1093 ;// CONCATENATED MODULE: external ["wp","data"] 1094 var external_wp_data_namespaceObject = window["wp"]["data"]; 1095 ;// CONCATENATED MODULE: external ["wp","coreData"] 1096 var external_wp_coreData_namespaceObject = window["wp"]["coreData"]; 1097 ;// CONCATENATED MODULE: external ["wp","editor"] 1098 var external_wp_editor_namespaceObject = window["wp"]["editor"]; 1099 ;// CONCATENATED MODULE: external ["wp","preferences"] 1100 var external_wp_preferences_namespaceObject = window["wp"]["preferences"]; 1101 ;// CONCATENATED MODULE: external ["wp","i18n"] 1102 var external_wp_i18n_namespaceObject = window["wp"]["i18n"]; 1103 ;// CONCATENATED MODULE: external ["wp","viewport"] 1104 var external_wp_viewport_namespaceObject = window["wp"]["viewport"]; 1105 ;// CONCATENATED MODULE: external ["wp","url"] 1106 var external_wp_url_namespaceObject = window["wp"]["url"]; 1107 ;// CONCATENATED MODULE: external ["wp","hooks"] 1108 var external_wp_hooks_namespaceObject = window["wp"]["hooks"]; 1109 ;// CONCATENATED MODULE: external ["wp","mediaUtils"] 1110 var external_wp_mediaUtils_namespaceObject = window["wp"]["mediaUtils"]; 1111 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/hooks/components.js 1112 /** 1113 * WordPress dependencies 1114 */ 1115 1116 1117 (0,external_wp_hooks_namespaceObject.addFilter)('editor.MediaUpload', 'core/edit-site/components/media-upload', () => external_wp_mediaUtils_namespaceObject.MediaUpload); 1118 1119 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/hooks/index.js 1120 /** 1121 * Internal dependencies 1122 */ 1123 1124 1125 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/constants.js 1126 /** 1127 * The identifier for the data store. 1128 * 1129 * @type {string} 1130 */ 1131 const STORE_NAME = 'core/edit-site'; 1132 const TEMPLATE_PART_AREA_HEADER = 'header'; 1133 const TEMPLATE_PART_AREA_FOOTER = 'footer'; 1134 const TEMPLATE_PART_AREA_SIDEBAR = 'sidebar'; 1135 const TEMPLATE_PART_AREA_GENERAL = 'uncategorized'; 1136 1137 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-panel/constants.js 1138 /** 1139 * WordPress dependencies 1140 */ 1141 1142 /** 1143 * Internal dependencies 1144 */ 1145 1146 1147 const TEMPLATES_PRIMARY = ['index', 'singular', 'archive', 'single', 'page', 'home', '404', 'search']; 1148 const TEMPLATES_SECONDARY = ['author', 'category', 'taxonomy', 'date', 'tag', 'attachment', 'single-post', 'front-page']; 1149 const TEMPLATES_TOP_LEVEL = [...TEMPLATES_PRIMARY, ...TEMPLATES_SECONDARY]; 1150 const TEMPLATES_GENERAL = ['page-home']; 1151 const TEMPLATES_POSTS_PREFIXES = ['post-', 'author-', 'single-post-', 'tag-']; 1152 const TEMPLATES_PAGES_PREFIXES = ['page-']; 1153 const TEMPLATE_OVERRIDES = { 1154 singular: ['single', 'page'], 1155 index: ['archive', '404', 'search', 'singular', 'home'], 1156 home: ['front-page'] 1157 }; 1158 const MENU_ROOT = 'root'; 1159 const MENU_TEMPLATE_PARTS = 'template-parts'; 1160 const MENU_TEMPLATES = 'templates'; 1161 const MENU_TEMPLATES_GENERAL = 'templates-general'; 1162 const MENU_TEMPLATES_PAGES = 'templates-pages'; 1163 const MENU_TEMPLATES_POSTS = 'templates-posts'; 1164 const MENU_TEMPLATES_UNUSED = 'templates-unused'; 1165 const MENU_TEMPLATE_PARTS_HEADERS = 'template-parts-headers'; 1166 const MENU_TEMPLATE_PARTS_FOOTERS = 'template-parts-footers'; 1167 const MENU_TEMPLATE_PARTS_SIDEBARS = 'template-parts-sidebars'; 1168 const MENU_TEMPLATE_PARTS_GENERAL = 'template-parts-general'; 1169 const TEMPLATE_PARTS_SUB_MENUS = [{ 1170 area: TEMPLATE_PART_AREA_HEADER, 1171 menu: MENU_TEMPLATE_PARTS_HEADERS, 1172 title: (0,external_wp_i18n_namespaceObject.__)('headers') 1173 }, { 1174 area: TEMPLATE_PART_AREA_FOOTER, 1175 menu: MENU_TEMPLATE_PARTS_FOOTERS, 1176 title: (0,external_wp_i18n_namespaceObject.__)('footers') 1177 }, { 1178 area: TEMPLATE_PART_AREA_SIDEBAR, 1179 menu: MENU_TEMPLATE_PARTS_SIDEBARS, 1180 title: (0,external_wp_i18n_namespaceObject.__)('sidebars') 1181 }, { 1182 area: TEMPLATE_PART_AREA_GENERAL, 1183 menu: MENU_TEMPLATE_PARTS_GENERAL, 1184 title: (0,external_wp_i18n_namespaceObject.__)('general') 1185 }]; 1186 1187 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/reducer.js 1188 /** 1189 * WordPress dependencies 1190 */ 1191 1192 /** 1193 * Internal dependencies 1194 */ 1195 1196 1197 /** 1198 * Reducer returning the editing canvas device type. 1199 * 1200 * @param {Object} state Current state. 1201 * @param {Object} action Dispatched action. 1202 * 1203 * @return {Object} Updated state. 1204 */ 1205 1206 function deviceType() { 1207 let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Desktop'; 1208 let action = arguments.length > 1 ? arguments[1] : undefined; 1209 1210 switch (action.type) { 1211 case 'SET_PREVIEW_DEVICE_TYPE': 1212 return action.deviceType; 1213 } 1214 1215 return state; 1216 } 1217 /** 1218 * Reducer returning the settings. 1219 * 1220 * @param {Object} state Current state. 1221 * @param {Object} action Dispatched action. 1222 * 1223 * @return {Object} Updated state. 1224 */ 1225 1226 function settings() { 1227 let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 1228 let action = arguments.length > 1 ? arguments[1] : undefined; 1229 1230 switch (action.type) { 1231 case 'UPDATE_SETTINGS': 1232 return { ...state, 1233 ...action.settings 1234 }; 1235 } 1236 1237 return state; 1238 } 1239 /** 1240 * Reducer keeping track of the currently edited Post Type, 1241 * Post Id and the context provided to fill the content of the block editor. 1242 * 1243 * @param {Object} state Current edited post. 1244 * @param {Object} action Dispatched action. 1245 * 1246 * @return {Object} Updated state. 1247 */ 1248 1249 function editedPost() { 1250 let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 1251 let action = arguments.length > 1 ? arguments[1] : undefined; 1252 1253 switch (action.type) { 1254 case 'SET_TEMPLATE': 1255 case 'SET_PAGE': 1256 return { 1257 type: 'wp_template', 1258 id: action.templateId, 1259 page: action.page 1260 }; 1261 1262 case 'SET_TEMPLATE_PART': 1263 return { 1264 type: 'wp_template_part', 1265 id: action.templatePartId 1266 }; 1267 } 1268 1269 return state; 1270 } 1271 /** 1272 * Reducer for information about the site's homepage. 1273 * 1274 * @param {Object} state Current state. 1275 * @param {Object} action Dispatched action. 1276 * 1277 * @return {Object} Updated state. 1278 */ 1279 1280 function homeTemplateId(state, action) { 1281 switch (action.type) { 1282 case 'SET_HOME_TEMPLATE': 1283 return action.homeTemplateId; 1284 } 1285 1286 return state; 1287 } 1288 /** 1289 * Reducer for information about the navigation panel, such as its active menu 1290 * and whether it should be opened or closed. 1291 * 1292 * Note: this reducer interacts with the inserter and list view panels reducers 1293 * to make sure that only one of the three panels is open at the same time. 1294 * 1295 * @param {Object} state Current state. 1296 * @param {Object} action Dispatched action. 1297 */ 1298 1299 function navigationPanel() { 1300 let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { 1301 menu: MENU_ROOT, 1302 isOpen: false 1303 }; 1304 let action = arguments.length > 1 ? arguments[1] : undefined; 1305 1306 switch (action.type) { 1307 case 'SET_NAVIGATION_PANEL_ACTIVE_MENU': 1308 return { ...state, 1309 menu: action.menu 1310 }; 1311 1312 case 'OPEN_NAVIGATION_PANEL_TO_MENU': 1313 return { ...state, 1314 isOpen: true, 1315 menu: action.menu 1316 }; 1317 1318 case 'SET_IS_NAVIGATION_PANEL_OPENED': 1319 return { ...state, 1320 menu: !action.isOpen ? MENU_ROOT : state.menu, 1321 // Set menu to root when closing panel. 1322 isOpen: action.isOpen 1323 }; 1324 1325 case 'SET_IS_LIST_VIEW_OPENED': 1326 return { ...state, 1327 menu: state.isOpen && action.isOpen ? MENU_ROOT : state.menu, 1328 // Set menu to root when closing panel. 1329 isOpen: action.isOpen ? false : state.isOpen 1330 }; 1331 1332 case 'SET_IS_INSERTER_OPENED': 1333 return { ...state, 1334 menu: state.isOpen && action.value ? MENU_ROOT : state.menu, 1335 // Set menu to root when closing panel. 1336 isOpen: action.value ? false : state.isOpen 1337 }; 1338 } 1339 1340 return state; 1341 } 1342 /** 1343 * Reducer to set the block inserter panel open or closed. 1344 * 1345 * Note: this reducer interacts with the navigation and list view panels reducers 1346 * to make sure that only one of the three panels is open at the same time. 1347 * 1348 * @param {boolean|Object} state Current state. 1349 * @param {Object} action Dispatched action. 1350 */ 1351 1352 function blockInserterPanel() { 1353 let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; 1354 let action = arguments.length > 1 ? arguments[1] : undefined; 1355 1356 switch (action.type) { 1357 case 'OPEN_NAVIGATION_PANEL_TO_MENU': 1358 return false; 1359 1360 case 'SET_IS_NAVIGATION_PANEL_OPENED': 1361 case 'SET_IS_LIST_VIEW_OPENED': 1362 return action.isOpen ? false : state; 1363 1364 case 'SET_IS_INSERTER_OPENED': 1365 return action.value; 1366 } 1367 1368 return state; 1369 } 1370 /** 1371 * Reducer to set the list view panel open or closed. 1372 * 1373 * Note: this reducer interacts with the navigation and inserter panels reducers 1374 * to make sure that only one of the three panels is open at the same time. 1375 * 1376 * @param {Object} state Current state. 1377 * @param {Object} action Dispatched action. 1378 */ 1379 1380 function listViewPanel() { 1381 let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; 1382 let action = arguments.length > 1 ? arguments[1] : undefined; 1383 1384 switch (action.type) { 1385 case 'OPEN_NAVIGATION_PANEL_TO_MENU': 1386 return false; 1387 1388 case 'SET_IS_NAVIGATION_PANEL_OPENED': 1389 return action.isOpen ? false : state; 1390 1391 case 'SET_IS_INSERTER_OPENED': 1392 return action.value ? false : state; 1393 1394 case 'SET_IS_LIST_VIEW_OPENED': 1395 return action.isOpen; 1396 } 1397 1398 return state; 1399 } 1400 /* harmony default export */ var reducer = ((0,external_wp_data_namespaceObject.combineReducers)({ 1401 deviceType, 1402 settings, 1403 editedPost, 1404 homeTemplateId, 1405 navigationPanel, 1406 blockInserterPanel, 1407 listViewPanel 1408 })); 1409 1410 ;// CONCATENATED MODULE: external ["wp","apiFetch"] 1411 var external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"]; 1412 var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject); 1413 ;// CONCATENATED MODULE: external ["wp","deprecated"] 1414 var external_wp_deprecated_namespaceObject = window["wp"]["deprecated"]; 1415 var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject); 1416 ;// CONCATENATED MODULE: external ["wp","notices"] 1417 var external_wp_notices_namespaceObject = window["wp"]["notices"]; 1418 ;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js 1419 function extends_extends() { 1420 extends_extends = Object.assign || function (target) { 1421 for (var i = 1; i < arguments.length; i++) { 1422 var source = arguments[i]; 1423 1424 for (var key in source) { 1425 if (Object.prototype.hasOwnProperty.call(source, key)) { 1426 target[key] = source[key]; 1427 } 1428 } 1429 } 1430 1431 return target; 1432 }; 1433 1434 return extends_extends.apply(this, arguments); 1435 } 1436 // EXTERNAL MODULE: ./node_modules/classnames/index.js 1437 var classnames = __webpack_require__(4403); 1438 var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); 1439 ;// CONCATENATED MODULE: external ["wp","components"] 1440 var external_wp_components_namespaceObject = window["wp"]["components"]; 1441 ;// CONCATENATED MODULE: external ["wp","primitives"] 1442 var external_wp_primitives_namespaceObject = window["wp"]["primitives"]; 1443 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/check.js 1444 1445 1446 /** 1447 * WordPress dependencies 1448 */ 1449 1450 const check = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 1451 xmlns: "http://www.w3.org/2000/svg", 1452 viewBox: "0 0 24 24" 1453 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 1454 d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z" 1455 })); 1456 /* harmony default export */ var library_check = (check); 1457 1458 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/star-filled.js 1459 1460 1461 /** 1462 * WordPress dependencies 1463 */ 1464 1465 const starFilled = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 1466 xmlns: "http://www.w3.org/2000/svg", 1467 viewBox: "0 0 24 24" 1468 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 1469 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" 1470 })); 1471 /* harmony default export */ var star_filled = (starFilled); 1472 1473 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/star-empty.js 1474 1475 1476 /** 1477 * WordPress dependencies 1478 */ 1479 1480 const starEmpty = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 1481 xmlns: "http://www.w3.org/2000/svg", 1482 viewBox: "0 0 24 24" 1483 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 1484 fillRule: "evenodd", 1485 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", 1486 clipRule: "evenodd" 1487 })); 1488 /* harmony default export */ var star_empty = (starEmpty); 1489 1490 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close-small.js 1491 1492 1493 /** 1494 * WordPress dependencies 1495 */ 1496 1497 const closeSmall = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 1498 xmlns: "http://www.w3.org/2000/svg", 1499 viewBox: "0 0 24 24" 1500 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 1501 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" 1502 })); 1503 /* harmony default export */ var close_small = (closeSmall); 1504 1505 ;// CONCATENATED MODULE: external "lodash" 1506 var external_lodash_namespaceObject = window["lodash"]; 1507 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/actions.js 1508 /** 1509 * WordPress dependencies 1510 */ 1511 1512 1513 /** 1514 * Enable the complementary area. 1515 * 1516 * @param {string} scope Complementary area scope. 1517 * @param {string} area Area identifier. 1518 */ 1519 1520 const enableComplementaryArea = (scope, area) => _ref => { 1521 let { 1522 registry 1523 } = _ref; 1524 1525 // Return early if there's no area. 1526 if (!area) { 1527 return; 1528 } 1529 1530 registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'complementaryArea', area); 1531 }; 1532 /** 1533 * Disable the complementary area. 1534 * 1535 * @param {string} scope Complementary area scope. 1536 */ 1537 1538 const disableComplementaryArea = scope => _ref2 => { 1539 let { 1540 registry 1541 } = _ref2; 1542 registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'complementaryArea', null); 1543 }; 1544 /** 1545 * Pins an item. 1546 * 1547 * @param {string} scope Item scope. 1548 * @param {string} item Item identifier. 1549 * 1550 * @return {Object} Action object. 1551 */ 1552 1553 const pinItem = (scope, item) => _ref3 => { 1554 let { 1555 registry 1556 } = _ref3; 1557 1558 // Return early if there's no item. 1559 if (!item) { 1560 return; 1561 } 1562 1563 const pinnedItems = registry.select(external_wp_preferences_namespaceObject.store).get(scope, 'pinnedItems'); // The item is already pinned, there's nothing to do. 1564 1565 if ((pinnedItems === null || pinnedItems === void 0 ? void 0 : pinnedItems[item]) === true) { 1566 return; 1567 } 1568 1569 registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'pinnedItems', { ...pinnedItems, 1570 [item]: true 1571 }); 1572 }; 1573 /** 1574 * Unpins an item. 1575 * 1576 * @param {string} scope Item scope. 1577 * @param {string} item Item identifier. 1578 */ 1579 1580 const unpinItem = (scope, item) => _ref4 => { 1581 let { 1582 registry 1583 } = _ref4; 1584 1585 // Return early if there's no item. 1586 if (!item) { 1587 return; 1588 } 1589 1590 const pinnedItems = registry.select(external_wp_preferences_namespaceObject.store).get(scope, 'pinnedItems'); 1591 registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'pinnedItems', { ...pinnedItems, 1592 [item]: false 1593 }); 1594 }; 1595 /** 1596 * Returns an action object used in signalling that a feature should be toggled. 1597 * 1598 * @param {string} scope The feature scope (e.g. core/edit-post). 1599 * @param {string} featureName The feature name. 1600 */ 1601 1602 function toggleFeature(scope, featureName) { 1603 return function (_ref5) { 1604 let { 1605 registry 1606 } = _ref5; 1607 external_wp_deprecated_default()(`wp.dispatch( 'core/interface' ).toggleFeature`, { 1608 since: '6.0', 1609 alternative: `wp.dispatch( 'core/preferences' ).toggle` 1610 }); 1611 registry.dispatch(external_wp_preferences_namespaceObject.store).toggle(scope, featureName); 1612 }; 1613 } 1614 /** 1615 * Returns an action object used in signalling that a feature should be set to 1616 * a true or false value 1617 * 1618 * @param {string} scope The feature scope (e.g. core/edit-post). 1619 * @param {string} featureName The feature name. 1620 * @param {boolean} value The value to set. 1621 * 1622 * @return {Object} Action object. 1623 */ 1624 1625 function setFeatureValue(scope, featureName, value) { 1626 return function (_ref6) { 1627 let { 1628 registry 1629 } = _ref6; 1630 external_wp_deprecated_default()(`wp.dispatch( 'core/interface' ).setFeatureValue`, { 1631 since: '6.0', 1632 alternative: `wp.dispatch( 'core/preferences' ).set` 1633 }); 1634 registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, featureName, !!value); 1635 }; 1636 } 1637 /** 1638 * Returns an action object used in signalling that defaults should be set for features. 1639 * 1640 * @param {string} scope The feature scope (e.g. core/edit-post). 1641 * @param {Object<string, boolean>} defaults A key/value map of feature names to values. 1642 * 1643 * @return {Object} Action object. 1644 */ 1645 1646 function setFeatureDefaults(scope, defaults) { 1647 return function (_ref7) { 1648 let { 1649 registry 1650 } = _ref7; 1651 external_wp_deprecated_default()(`wp.dispatch( 'core/interface' ).setFeatureDefaults`, { 1652 since: '6.0', 1653 alternative: `wp.dispatch( 'core/preferences' ).setDefaults` 1654 }); 1655 registry.dispatch(external_wp_preferences_namespaceObject.store).setDefaults(scope, defaults); 1656 }; 1657 } 1658 1659 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/selectors.js 1660 /** 1661 * WordPress dependencies 1662 */ 1663 1664 1665 1666 /** 1667 * Returns the complementary area that is active in a given scope. 1668 * 1669 * @param {Object} state Global application state. 1670 * @param {string} scope Item scope. 1671 * 1672 * @return {string} The complementary area that is active in the given scope. 1673 */ 1674 1675 const getActiveComplementaryArea = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, scope) => { 1676 return select(external_wp_preferences_namespaceObject.store).get(scope, 'complementaryArea'); 1677 }); 1678 /** 1679 * Returns a boolean indicating if an item is pinned or not. 1680 * 1681 * @param {Object} state Global application state. 1682 * @param {string} scope Scope. 1683 * @param {string} item Item to check. 1684 * 1685 * @return {boolean} True if the item is pinned and false otherwise. 1686 */ 1687 1688 const isItemPinned = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, scope, item) => { 1689 var _pinnedItems$item; 1690 1691 const pinnedItems = select(external_wp_preferences_namespaceObject.store).get(scope, 'pinnedItems'); 1692 return (_pinnedItems$item = pinnedItems === null || pinnedItems === void 0 ? void 0 : pinnedItems[item]) !== null && _pinnedItems$item !== void 0 ? _pinnedItems$item : true; 1693 }); 1694 /** 1695 * Returns a boolean indicating whether a feature is active for a particular 1696 * scope. 1697 * 1698 * @param {Object} state The store state. 1699 * @param {string} scope The scope of the feature (e.g. core/edit-post). 1700 * @param {string} featureName The name of the feature. 1701 * 1702 * @return {boolean} Is the feature enabled? 1703 */ 1704 1705 const isFeatureActive = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, scope, featureName) => { 1706 external_wp_deprecated_default()(`wp.select( 'core/interface' ).isFeatureActive( scope, featureName )`, { 1707 since: '6.0', 1708 alternative: `!! wp.select( 'core/preferences' ).isFeatureActive( scope, featureName )` 1709 }); 1710 return !!select(external_wp_preferences_namespaceObject.store).get(scope, featureName); 1711 }); 1712 1713 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/constants.js 1714 /** 1715 * The identifier for the data store. 1716 * 1717 * @type {string} 1718 */ 1719 const constants_STORE_NAME = 'core/interface'; 1720 1721 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/index.js 1722 /** 1723 * WordPress dependencies 1724 */ 1725 1726 /** 1727 * Internal dependencies 1728 */ 1729 1730 1731 1732 1733 /** 1734 * Store definition for the interface namespace. 1735 * 1736 * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore 1737 * 1738 * @type {Object} 1739 */ 1740 1741 const store = (0,external_wp_data_namespaceObject.createReduxStore)(constants_STORE_NAME, { 1742 reducer: () => {}, 1743 actions: actions_namespaceObject, 1744 selectors: selectors_namespaceObject 1745 }); // Once we build a more generic persistence plugin that works across types of stores 1746 // we'd be able to replace this with a register call. 1747 1748 (0,external_wp_data_namespaceObject.register)(store); 1749 1750 ;// CONCATENATED MODULE: external ["wp","plugins"] 1751 var external_wp_plugins_namespaceObject = window["wp"]["plugins"]; 1752 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-context/index.js 1753 /** 1754 * WordPress dependencies 1755 */ 1756 1757 /* harmony default export */ var complementary_area_context = ((0,external_wp_plugins_namespaceObject.withPluginContext)((context, ownProps) => { 1758 return { 1759 icon: ownProps.icon || context.icon, 1760 identifier: ownProps.identifier || `$context.name}/$ownProps.name}` 1761 }; 1762 })); 1763 1764 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-toggle/index.js 1765 1766 1767 1768 /** 1769 * External dependencies 1770 */ 1771 1772 /** 1773 * WordPress dependencies 1774 */ 1775 1776 1777 1778 /** 1779 * Internal dependencies 1780 */ 1781 1782 1783 1784 1785 function ComplementaryAreaToggle(_ref) { 1786 let { 1787 as = external_wp_components_namespaceObject.Button, 1788 scope, 1789 identifier, 1790 icon, 1791 selectedIcon, 1792 ...props 1793 } = _ref; 1794 const ComponentToUse = as; 1795 const isSelected = (0,external_wp_data_namespaceObject.useSelect)(select => select(store).getActiveComplementaryArea(scope) === identifier, [identifier]); 1796 const { 1797 enableComplementaryArea, 1798 disableComplementaryArea 1799 } = (0,external_wp_data_namespaceObject.useDispatch)(store); 1800 return (0,external_wp_element_namespaceObject.createElement)(ComponentToUse, extends_extends({ 1801 icon: selectedIcon && isSelected ? selectedIcon : icon, 1802 onClick: () => { 1803 if (isSelected) { 1804 disableComplementaryArea(scope); 1805 } else { 1806 enableComplementaryArea(scope, identifier); 1807 } 1808 } 1809 }, (0,external_lodash_namespaceObject.omit)(props, ['name']))); 1810 } 1811 1812 /* harmony default export */ var complementary_area_toggle = (complementary_area_context(ComplementaryAreaToggle)); 1813 1814 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-header/index.js 1815 1816 1817 1818 /** 1819 * External dependencies 1820 */ 1821 1822 /** 1823 * WordPress dependencies 1824 */ 1825 1826 1827 /** 1828 * Internal dependencies 1829 */ 1830 1831 1832 1833 const ComplementaryAreaHeader = _ref => { 1834 let { 1835 smallScreenTitle, 1836 children, 1837 className, 1838 toggleButtonProps 1839 } = _ref; 1840 const toggleButton = (0,external_wp_element_namespaceObject.createElement)(complementary_area_toggle, extends_extends({ 1841 icon: close_small 1842 }, toggleButtonProps)); 1843 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("div", { 1844 className: "components-panel__header interface-complementary-area-header__small" 1845 }, smallScreenTitle && (0,external_wp_element_namespaceObject.createElement)("span", { 1846 className: "interface-complementary-area-header__small-title" 1847 }, smallScreenTitle), toggleButton), (0,external_wp_element_namespaceObject.createElement)("div", { 1848 className: classnames_default()('components-panel__header', 'interface-complementary-area-header', className), 1849 tabIndex: -1 1850 }, children, toggleButton)); 1851 }; 1852 1853 /* harmony default export */ var complementary_area_header = (ComplementaryAreaHeader); 1854 1855 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/action-item/index.js 1856 1857 1858 1859 /** 1860 * External dependencies 1861 */ 1862 1863 /** 1864 * WordPress dependencies 1865 */ 1866 1867 1868 1869 1870 function ActionItemSlot(_ref) { 1871 let { 1872 name, 1873 as: Component = external_wp_components_namespaceObject.ButtonGroup, 1874 fillProps = {}, 1875 bubblesVirtually, 1876 ...props 1877 } = _ref; 1878 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Slot, { 1879 name: name, 1880 bubblesVirtually: bubblesVirtually, 1881 fillProps: fillProps 1882 }, fills => { 1883 if ((0,external_lodash_namespaceObject.isEmpty)(external_wp_element_namespaceObject.Children.toArray(fills))) { 1884 return null; 1885 } // Special handling exists for backward compatibility. 1886 // It ensures that menu items created by plugin authors aren't 1887 // duplicated with automatically injected menu items coming 1888 // from pinnable plugin sidebars. 1889 // @see https://github.com/WordPress/gutenberg/issues/14457 1890 1891 1892 const initializedByPlugins = []; 1893 external_wp_element_namespaceObject.Children.forEach(fills, _ref2 => { 1894 let { 1895 props: { 1896 __unstableExplicitMenuItem, 1897 __unstableTarget 1898 } 1899 } = _ref2; 1900 1901 if (__unstableTarget && __unstableExplicitMenuItem) { 1902 initializedByPlugins.push(__unstableTarget); 1903 } 1904 }); 1905 const children = external_wp_element_namespaceObject.Children.map(fills, child => { 1906 if (!child.props.__unstableExplicitMenuItem && initializedByPlugins.includes(child.props.__unstableTarget)) { 1907 return null; 1908 } 1909 1910 return child; 1911 }); 1912 return (0,external_wp_element_namespaceObject.createElement)(Component, props, children); 1913 }); 1914 } 1915 1916 function ActionItem(_ref3) { 1917 let { 1918 name, 1919 as: Component = external_wp_components_namespaceObject.Button, 1920 onClick, 1921 ...props 1922 } = _ref3; 1923 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Fill, { 1924 name: name 1925 }, _ref4 => { 1926 let { 1927 onClick: fpOnClick 1928 } = _ref4; 1929 return (0,external_wp_element_namespaceObject.createElement)(Component, extends_extends({ 1930 onClick: onClick || fpOnClick ? function () { 1931 (onClick || external_lodash_namespaceObject.noop)(...arguments); 1932 (fpOnClick || external_lodash_namespaceObject.noop)(...arguments); 1933 } : undefined 1934 }, props)); 1935 }); 1936 } 1937 1938 ActionItem.Slot = ActionItemSlot; 1939 /* harmony default export */ var action_item = (ActionItem); 1940 1941 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-more-menu-item/index.js 1942 1943 1944 1945 /** 1946 * External dependencies 1947 */ 1948 1949 /** 1950 * WordPress dependencies 1951 */ 1952 1953 1954 1955 /** 1956 * Internal dependencies 1957 */ 1958 1959 1960 1961 1962 const PluginsMenuItem = props => // Menu item is marked with unstable prop for backward compatibility. 1963 // They are removed so they don't leak to DOM elements. 1964 // @see https://github.com/WordPress/gutenberg/issues/14457 1965 (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, (0,external_lodash_namespaceObject.omit)(props, ['__unstableExplicitMenuItem', '__unstableTarget'])); 1966 1967 function ComplementaryAreaMoreMenuItem(_ref) { 1968 let { 1969 scope, 1970 target, 1971 __unstableExplicitMenuItem, 1972 ...props 1973 } = _ref; 1974 return (0,external_wp_element_namespaceObject.createElement)(complementary_area_toggle, extends_extends({ 1975 as: toggleProps => { 1976 return (0,external_wp_element_namespaceObject.createElement)(action_item, extends_extends({ 1977 __unstableExplicitMenuItem: __unstableExplicitMenuItem, 1978 __unstableTarget: `$scope}/$target}`, 1979 as: PluginsMenuItem, 1980 name: `$scope}/plugin-more-menu` 1981 }, toggleProps)); 1982 }, 1983 role: "menuitemcheckbox", 1984 selectedIcon: library_check, 1985 name: target, 1986 scope: scope 1987 }, props)); 1988 } 1989 1990 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/pinned-items/index.js 1991 1992 1993 1994 /** 1995 * External dependencies 1996 */ 1997 1998 1999 /** 2000 * WordPress dependencies 2001 */ 2002 2003 2004 2005 function PinnedItems(_ref) { 2006 let { 2007 scope, 2008 ...props 2009 } = _ref; 2010 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Fill, extends_extends({ 2011 name: `PinnedItems/$scope}` 2012 }, props)); 2013 } 2014 2015 function PinnedItemsSlot(_ref2) { 2016 let { 2017 scope, 2018 className, 2019 ...props 2020 } = _ref2; 2021 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Slot, extends_extends({ 2022 name: `PinnedItems/$scope}` 2023 }, props), fills => !(0,external_lodash_namespaceObject.isEmpty)(fills) && (0,external_wp_element_namespaceObject.createElement)("div", { 2024 className: classnames_default()(className, 'interface-pinned-items') 2025 }, fills)); 2026 } 2027 2028 PinnedItems.Slot = PinnedItemsSlot; 2029 /* harmony default export */ var pinned_items = (PinnedItems); 2030 2031 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area/index.js 2032 2033 2034 2035 /** 2036 * External dependencies 2037 */ 2038 2039 /** 2040 * WordPress dependencies 2041 */ 2042 2043 2044 2045 2046 2047 2048 2049 /** 2050 * Internal dependencies 2051 */ 2052 2053 2054 2055 2056 2057 2058 2059 2060 function ComplementaryAreaSlot(_ref) { 2061 let { 2062 scope, 2063 ...props 2064 } = _ref; 2065 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Slot, extends_extends({ 2066 name: `ComplementaryArea/$scope}` 2067 }, props)); 2068 } 2069 2070 function ComplementaryAreaFill(_ref2) { 2071 let { 2072 scope, 2073 children, 2074 className 2075 } = _ref2; 2076 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Fill, { 2077 name: `ComplementaryArea/$scope}` 2078 }, (0,external_wp_element_namespaceObject.createElement)("div", { 2079 className: className 2080 }, children)); 2081 } 2082 2083 function useAdjustComplementaryListener(scope, identifier, activeArea, isActive, isSmall) { 2084 const previousIsSmall = (0,external_wp_element_namespaceObject.useRef)(false); 2085 const shouldOpenWhenNotSmall = (0,external_wp_element_namespaceObject.useRef)(false); 2086 const { 2087 enableComplementaryArea, 2088 disableComplementaryArea 2089 } = (0,external_wp_data_namespaceObject.useDispatch)(store); 2090 (0,external_wp_element_namespaceObject.useEffect)(() => { 2091 // If the complementary area is active and the editor is switching from a big to a small window size. 2092 if (isActive && isSmall && !previousIsSmall.current) { 2093 // Disable the complementary area. 2094 disableComplementaryArea(scope); // Flag the complementary area to be reopened when the window size goes from small to big. 2095 2096 shouldOpenWhenNotSmall.current = true; 2097 } else if ( // If there is a flag indicating the complementary area should be enabled when we go from small to big window size 2098 // and we are going from a small to big window size. 2099 shouldOpenWhenNotSmall.current && !isSmall && previousIsSmall.current) { 2100 // Remove the flag indicating the complementary area should be enabled. 2101 shouldOpenWhenNotSmall.current = false; // Enable the complementary area. 2102 2103 enableComplementaryArea(scope, identifier); 2104 } else if ( // If the flag is indicating the current complementary should be reopened but another complementary area becomes active, 2105 // remove the flag. 2106 shouldOpenWhenNotSmall.current && activeArea && activeArea !== identifier) { 2107 shouldOpenWhenNotSmall.current = false; 2108 } 2109 2110 if (isSmall !== previousIsSmall.current) { 2111 previousIsSmall.current = isSmall; 2112 } 2113 }, [isActive, isSmall, scope, identifier, activeArea]); 2114 } 2115 2116 function ComplementaryArea(_ref3) { 2117 let { 2118 children, 2119 className, 2120 closeLabel = (0,external_wp_i18n_namespaceObject.__)('Close plugin'), 2121 identifier, 2122 header, 2123 headerClassName, 2124 icon, 2125 isPinnable = true, 2126 panelClassName, 2127 scope, 2128 name, 2129 smallScreenTitle, 2130 title, 2131 toggleShortcut, 2132 isActiveByDefault, 2133 showIconLabels = false 2134 } = _ref3; 2135 const { 2136 isActive, 2137 isPinned, 2138 activeArea, 2139 isSmall, 2140 isLarge 2141 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 2142 const { 2143 getActiveComplementaryArea, 2144 isItemPinned 2145 } = select(store); 2146 2147 const _activeArea = getActiveComplementaryArea(scope); 2148 2149 return { 2150 isActive: _activeArea === identifier, 2151 isPinned: isItemPinned(scope, identifier), 2152 activeArea: _activeArea, 2153 isSmall: select(external_wp_viewport_namespaceObject.store).isViewportMatch('< medium'), 2154 isLarge: select(external_wp_viewport_namespaceObject.store).isViewportMatch('large') 2155 }; 2156 }, [identifier, scope]); 2157 useAdjustComplementaryListener(scope, identifier, activeArea, isActive, isSmall); 2158 const { 2159 enableComplementaryArea, 2160 disableComplementaryArea, 2161 pinItem, 2162 unpinItem 2163 } = (0,external_wp_data_namespaceObject.useDispatch)(store); 2164 (0,external_wp_element_namespaceObject.useEffect)(() => { 2165 if (isActiveByDefault && activeArea === undefined && !isSmall) { 2166 enableComplementaryArea(scope, identifier); 2167 } 2168 }, [activeArea, isActiveByDefault, scope, identifier, isSmall]); 2169 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, isPinnable && (0,external_wp_element_namespaceObject.createElement)(pinned_items, { 2170 scope: scope 2171 }, isPinned && (0,external_wp_element_namespaceObject.createElement)(complementary_area_toggle, { 2172 scope: scope, 2173 identifier: identifier, 2174 isPressed: isActive && (!showIconLabels || isLarge), 2175 "aria-expanded": isActive, 2176 label: title, 2177 icon: showIconLabels ? library_check : icon, 2178 showTooltip: !showIconLabels, 2179 variant: showIconLabels ? 'tertiary' : undefined 2180 })), name && isPinnable && (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaMoreMenuItem, { 2181 target: name, 2182 scope: scope, 2183 icon: icon 2184 }, title), isActive && (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaFill, { 2185 className: classnames_default()('interface-complementary-area', className), 2186 scope: scope 2187 }, (0,external_wp_element_namespaceObject.createElement)(complementary_area_header, { 2188 className: headerClassName, 2189 closeLabel: closeLabel, 2190 onClose: () => disableComplementaryArea(scope), 2191 smallScreenTitle: smallScreenTitle, 2192 toggleButtonProps: { 2193 label: closeLabel, 2194 shortcut: toggleShortcut, 2195 scope, 2196 identifier 2197 } 2198 }, 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, { 2199 className: "interface-complementary-area__pin-unpin-item", 2200 icon: isPinned ? star_filled : star_empty, 2201 label: isPinned ? (0,external_wp_i18n_namespaceObject.__)('Unpin from toolbar') : (0,external_wp_i18n_namespaceObject.__)('Pin to toolbar'), 2202 onClick: () => (isPinned ? unpinItem : pinItem)(scope, identifier), 2203 isPressed: isPinned, 2204 "aria-expanded": isPinned 2205 }))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Panel, { 2206 className: panelClassName 2207 }, children))); 2208 } 2209 2210 const ComplementaryAreaWrapped = complementary_area_context(ComplementaryArea); 2211 ComplementaryAreaWrapped.Slot = ComplementaryAreaSlot; 2212 /* harmony default export */ var complementary_area = (ComplementaryAreaWrapped); 2213 2214 ;// CONCATENATED MODULE: external ["wp","compose"] 2215 var external_wp_compose_namespaceObject = window["wp"]["compose"]; 2216 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/interface-skeleton/index.js 2217 2218 2219 2220 /** 2221 * External dependencies 2222 */ 2223 2224 /** 2225 * WordPress dependencies 2226 */ 2227 2228 /** 2229 * WordPress dependencies 2230 */ 2231 2232 2233 2234 2235 2236 2237 function useHTMLClass(className) { 2238 (0,external_wp_element_namespaceObject.useEffect)(() => { 2239 const element = document && document.querySelector(`html:not(.$className})`); 2240 2241 if (!element) { 2242 return; 2243 } 2244 2245 element.classList.toggle(className); 2246 return () => { 2247 element.classList.toggle(className); 2248 }; 2249 }, [className]); 2250 } 2251 2252 function InterfaceSkeleton(_ref, ref) { 2253 let { 2254 footer, 2255 header, 2256 sidebar, 2257 secondarySidebar, 2258 notices, 2259 content, 2260 drawer, 2261 actions, 2262 labels, 2263 className, 2264 shortcuts 2265 } = _ref; 2266 const navigateRegionsProps = (0,external_wp_components_namespaceObject.__unstableUseNavigateRegions)(shortcuts); 2267 useHTMLClass('interface-interface-skeleton__html-container'); 2268 const defaultLabels = { 2269 /* translators: accessibility text for the nav bar landmark region. */ 2270 drawer: (0,external_wp_i18n_namespaceObject.__)('Drawer'), 2271 2272 /* translators: accessibility text for the top bar landmark region. */ 2273 header: (0,external_wp_i18n_namespaceObject.__)('Header'), 2274 2275 /* translators: accessibility text for the content landmark region. */ 2276 body: (0,external_wp_i18n_namespaceObject.__)('Content'), 2277 2278 /* translators: accessibility text for the secondary sidebar landmark region. */ 2279 secondarySidebar: (0,external_wp_i18n_namespaceObject.__)('Block Library'), 2280 2281 /* translators: accessibility text for the settings landmark region. */ 2282 sidebar: (0,external_wp_i18n_namespaceObject.__)('Settings'), 2283 2284 /* translators: accessibility text for the publish landmark region. */ 2285 actions: (0,external_wp_i18n_namespaceObject.__)('Publish'), 2286 2287 /* translators: accessibility text for the footer landmark region. */ 2288 footer: (0,external_wp_i18n_namespaceObject.__)('Footer') 2289 }; 2290 const mergedLabels = { ...defaultLabels, 2291 ...labels 2292 }; 2293 return (0,external_wp_element_namespaceObject.createElement)("div", extends_extends({}, navigateRegionsProps, { 2294 ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([ref, navigateRegionsProps.ref]), 2295 className: classnames_default()(className, 'interface-interface-skeleton', navigateRegionsProps.className, !!footer && 'has-footer') 2296 }), !!drawer && (0,external_wp_element_namespaceObject.createElement)("div", { 2297 className: "interface-interface-skeleton__drawer", 2298 role: "region", 2299 "aria-label": mergedLabels.drawer, 2300 tabIndex: "-1" 2301 }, drawer), (0,external_wp_element_namespaceObject.createElement)("div", { 2302 className: "interface-interface-skeleton__editor" 2303 }, !!header && (0,external_wp_element_namespaceObject.createElement)("div", { 2304 className: "interface-interface-skeleton__header", 2305 role: "region", 2306 "aria-label": mergedLabels.header, 2307 tabIndex: "-1" 2308 }, header), (0,external_wp_element_namespaceObject.createElement)("div", { 2309 className: "interface-interface-skeleton__body" 2310 }, !!secondarySidebar && (0,external_wp_element_namespaceObject.createElement)("div", { 2311 className: "interface-interface-skeleton__secondary-sidebar", 2312 role: "region", 2313 "aria-label": mergedLabels.secondarySidebar, 2314 tabIndex: "-1" 2315 }, secondarySidebar), !!notices && (0,external_wp_element_namespaceObject.createElement)("div", { 2316 className: "interface-interface-skeleton__notices" 2317 }, notices), (0,external_wp_element_namespaceObject.createElement)("div", { 2318 className: "interface-interface-skeleton__content", 2319 role: "region", 2320 "aria-label": mergedLabels.body, 2321 tabIndex: "-1" 2322 }, content), !!sidebar && (0,external_wp_element_namespaceObject.createElement)("div", { 2323 className: "interface-interface-skeleton__sidebar", 2324 role: "region", 2325 "aria-label": mergedLabels.sidebar, 2326 tabIndex: "-1" 2327 }, sidebar), !!actions && (0,external_wp_element_namespaceObject.createElement)("div", { 2328 className: "interface-interface-skeleton__actions", 2329 role: "region", 2330 "aria-label": mergedLabels.actions, 2331 tabIndex: "-1" 2332 }, actions))), !!footer && (0,external_wp_element_namespaceObject.createElement)("div", { 2333 className: "interface-interface-skeleton__footer", 2334 role: "region", 2335 "aria-label": mergedLabels.footer, 2336 tabIndex: "-1" 2337 }, footer)); 2338 } 2339 2340 /* harmony default export */ var interface_skeleton = ((0,external_wp_element_namespaceObject.forwardRef)(InterfaceSkeleton)); 2341 2342 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/more-vertical.js 2343 2344 2345 /** 2346 * WordPress dependencies 2347 */ 2348 2349 const moreVertical = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 2350 xmlns: "http://www.w3.org/2000/svg", 2351 viewBox: "0 0 24 24" 2352 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 2353 d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" 2354 })); 2355 /* harmony default export */ var more_vertical = (moreVertical); 2356 2357 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/more-menu-dropdown/index.js 2358 2359 2360 /** 2361 * External dependencies 2362 */ 2363 2364 /** 2365 * WordPress dependencies 2366 */ 2367 2368 2369 2370 2371 function MoreMenuDropdown(_ref) { 2372 let { 2373 as: DropdownComponent = external_wp_components_namespaceObject.DropdownMenu, 2374 className, 2375 2376 /* translators: button label text should, if possible, be under 16 characters. */ 2377 label = (0,external_wp_i18n_namespaceObject.__)('Options'), 2378 popoverProps, 2379 toggleProps, 2380 children 2381 } = _ref; 2382 return (0,external_wp_element_namespaceObject.createElement)(DropdownComponent, { 2383 className: classnames_default()('interface-more-menu-dropdown', className), 2384 icon: more_vertical, 2385 label: label, 2386 popoverProps: { 2387 position: 'bottom left', 2388 ...popoverProps, 2389 className: classnames_default()('interface-more-menu-dropdown__content', popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.className) 2390 }, 2391 toggleProps: { 2392 tooltipPosition: 'bottom', 2393 ...toggleProps 2394 } 2395 }, onClose => children(onClose)); 2396 } 2397 2398 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal/index.js 2399 2400 2401 /** 2402 * WordPress dependencies 2403 */ 2404 2405 2406 function PreferencesModal(_ref) { 2407 let { 2408 closeModal, 2409 children 2410 } = _ref; 2411 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, { 2412 className: "interface-preferences-modal", 2413 title: (0,external_wp_i18n_namespaceObject.__)('Preferences'), 2414 closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'), 2415 onRequestClose: closeModal 2416 }, children); 2417 } 2418 2419 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/icon/index.js 2420 /** 2421 * WordPress dependencies 2422 */ 2423 2424 /** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */ 2425 2426 /** 2427 * Return an SVG icon. 2428 * 2429 * @param {IconProps} props icon is the SVG component to render 2430 * size is a number specifiying the icon size in pixels 2431 * Other props will be passed to wrapped SVG component 2432 * 2433 * @return {JSX.Element} Icon component 2434 */ 2435 2436 function Icon(_ref) { 2437 let { 2438 icon, 2439 size = 24, 2440 ...props 2441 } = _ref; 2442 return (0,external_wp_element_namespaceObject.cloneElement)(icon, { 2443 width: size, 2444 height: size, 2445 ...props 2446 }); 2447 } 2448 2449 /* harmony default export */ var icon = (Icon); 2450 2451 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-left.js 2452 2453 2454 /** 2455 * WordPress dependencies 2456 */ 2457 2458 const chevronLeft = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 2459 xmlns: "http://www.w3.org/2000/svg", 2460 viewBox: "0 0 24 24" 2461 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 2462 d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" 2463 })); 2464 /* harmony default export */ var chevron_left = (chevronLeft); 2465 2466 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-right.js 2467 2468 2469 /** 2470 * WordPress dependencies 2471 */ 2472 2473 const chevronRight = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 2474 xmlns: "http://www.w3.org/2000/svg", 2475 viewBox: "0 0 24 24" 2476 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 2477 d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" 2478 })); 2479 /* harmony default export */ var chevron_right = (chevronRight); 2480 2481 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal-tabs/index.js 2482 2483 2484 /** 2485 * WordPress dependencies 2486 */ 2487 2488 2489 2490 2491 2492 const PREFERENCES_MENU = 'preferences-menu'; 2493 function PreferencesModalTabs(_ref) { 2494 let { 2495 sections 2496 } = _ref; 2497 const isLargeViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium'); // This is also used to sync the two different rendered components 2498 // between small and large viewports. 2499 2500 const [activeMenu, setActiveMenu] = (0,external_wp_element_namespaceObject.useState)(PREFERENCES_MENU); 2501 /** 2502 * Create helper objects from `sections` for easier data handling. 2503 * `tabs` is used for creating the `TabPanel` and `sectionsContentMap` 2504 * is used for easier access to active tab's content. 2505 */ 2506 2507 const { 2508 tabs, 2509 sectionsContentMap 2510 } = (0,external_wp_element_namespaceObject.useMemo)(() => { 2511 let mappedTabs = { 2512 tabs: [], 2513 sectionsContentMap: {} 2514 }; 2515 2516 if (sections.length) { 2517 mappedTabs = sections.reduce((accumulator, _ref2) => { 2518 let { 2519 name, 2520 tabLabel: title, 2521 content 2522 } = _ref2; 2523 accumulator.tabs.push({ 2524 name, 2525 title 2526 }); 2527 accumulator.sectionsContentMap[name] = content; 2528 return accumulator; 2529 }, { 2530 tabs: [], 2531 sectionsContentMap: {} 2532 }); 2533 } 2534 2535 return mappedTabs; 2536 }, [sections]); 2537 const getCurrentTab = (0,external_wp_element_namespaceObject.useCallback)(tab => sectionsContentMap[tab.name] || null, [sectionsContentMap]); 2538 let modalContent; // We render different components based on the viewport size. 2539 2540 if (isLargeViewport) { 2541 modalContent = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TabPanel, { 2542 className: "interface-preferences__tabs", 2543 tabs: tabs, 2544 initialTabName: activeMenu !== PREFERENCES_MENU ? activeMenu : undefined, 2545 onSelect: setActiveMenu, 2546 orientation: "vertical" 2547 }, getCurrentTab); 2548 } else { 2549 modalContent = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorProvider, { 2550 initialPath: "/", 2551 className: "interface-preferences__provider" 2552 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, { 2553 path: "/" 2554 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, { 2555 isBorderless: true, 2556 size: "small" 2557 }, (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 => { 2558 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorButton, { 2559 key: tab.name, 2560 path: tab.name, 2561 as: external_wp_components_namespaceObject.__experimentalItem, 2562 isAction: true 2563 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 2564 justify: "space-between" 2565 }, (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, { 2566 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right 2567 })))); 2568 }))))), sections.length && sections.map(section => { 2569 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, { 2570 key: `$section.name}-menu`, 2571 path: section.name 2572 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, { 2573 isBorderless: true, 2574 size: "large" 2575 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardHeader, { 2576 isBorderless: false, 2577 justify: "left", 2578 size: "small", 2579 gap: "6" 2580 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorBackButton, { 2581 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left, 2582 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous view') 2583 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, { 2584 size: "16" 2585 }, section.tabLabel)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, section.content))); 2586 })); 2587 } 2588 2589 return modalContent; 2590 } 2591 2592 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal-section/index.js 2593 2594 2595 const Section = _ref => { 2596 let { 2597 description, 2598 title, 2599 children 2600 } = _ref; 2601 return (0,external_wp_element_namespaceObject.createElement)("fieldset", { 2602 className: "interface-preferences-modal__section" 2603 }, (0,external_wp_element_namespaceObject.createElement)("legend", null, (0,external_wp_element_namespaceObject.createElement)("h2", { 2604 className: "interface-preferences-modal__section-title" 2605 }, title), description && (0,external_wp_element_namespaceObject.createElement)("p", { 2606 className: "interface-preferences-modal__section-description" 2607 }, description)), children); 2608 }; 2609 2610 /* harmony default export */ var preferences_modal_section = (Section); 2611 2612 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal-base-option/index.js 2613 2614 2615 /** 2616 * WordPress dependencies 2617 */ 2618 2619 2620 function BaseOption(_ref) { 2621 let { 2622 help, 2623 label, 2624 isChecked, 2625 onChange, 2626 children 2627 } = _ref; 2628 return (0,external_wp_element_namespaceObject.createElement)("div", { 2629 className: "interface-preferences-modal__option" 2630 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToggleControl, { 2631 help: help, 2632 label: label, 2633 checked: isChecked, 2634 onChange: onChange 2635 }), children); 2636 } 2637 2638 /* harmony default export */ var preferences_modal_base_option = (BaseOption); 2639 2640 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/index.js 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 ;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/index.js 2655 2656 2657 2658 ;// CONCATENATED MODULE: external ["wp","blockEditor"] 2659 var external_wp_blockEditor_namespaceObject = window["wp"]["blockEditor"]; 2660 ;// CONCATENATED MODULE: external ["wp","a11y"] 2661 var external_wp_a11y_namespaceObject = window["wp"]["a11y"]; 2662 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/is-template-revertable.js 2663 /** 2664 * Check if a template is revertable to its original theme-provided template file. 2665 * 2666 * @param {Object} template The template entity to check. 2667 * @return {boolean} Whether the template is revertable. 2668 */ 2669 function isTemplateRevertable(template) { 2670 if (!template) { 2671 return false; 2672 } 2673 /* eslint-disable camelcase */ 2674 2675 2676 return (template === null || template === void 0 ? void 0 : template.source) === 'custom' && (template === null || template === void 0 ? void 0 : template.has_theme_file); 2677 /* eslint-enable camelcase */ 2678 } 2679 2680 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/actions.js 2681 /** 2682 * WordPress dependencies 2683 */ 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 /** 2696 * Internal dependencies 2697 */ 2698 2699 2700 2701 /** 2702 * Dispatches an action that toggles a feature flag. 2703 * 2704 * @param {string} featureName Feature name. 2705 */ 2706 2707 function actions_toggleFeature(featureName) { 2708 return function (_ref) { 2709 let { 2710 registry 2711 } = _ref; 2712 external_wp_deprecated_default()("select( 'core/edit-site' ).toggleFeature( featureName )", { 2713 since: '6.0', 2714 alternative: "select( 'core/preferences').toggle( 'core/edit-site', featureName )" 2715 }); 2716 registry.dispatch(external_wp_preferences_namespaceObject.store).toggle('core/edit-site', featureName); 2717 }; 2718 } 2719 /** 2720 * Action that changes the width of the editing canvas. 2721 * 2722 * @param {string} deviceType 2723 * 2724 * @return {Object} Action object. 2725 */ 2726 2727 function __experimentalSetPreviewDeviceType(deviceType) { 2728 return { 2729 type: 'SET_PREVIEW_DEVICE_TYPE', 2730 deviceType 2731 }; 2732 } 2733 /** 2734 * Action that sets a template, optionally fetching it from REST API. 2735 * 2736 * @param {number} templateId The template ID. 2737 * @param {string} templateSlug The template slug. 2738 * @return {Object} Action object. 2739 */ 2740 2741 const setTemplate = (templateId, templateSlug) => async _ref2 => { 2742 let { 2743 dispatch, 2744 registry 2745 } = _ref2; 2746 2747 if (!templateSlug) { 2748 const template = await registry.resolveSelect(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', 'wp_template', templateId); 2749 templateSlug = template === null || template === void 0 ? void 0 : template.slug; 2750 } 2751 2752 dispatch({ 2753 type: 'SET_TEMPLATE', 2754 templateId, 2755 page: { 2756 context: { 2757 templateSlug 2758 } 2759 } 2760 }); 2761 }; 2762 /** 2763 * Action that adds a new template and sets it as the current template. 2764 * 2765 * @param {Object} template The template. 2766 * 2767 * @return {Object} Action object used to set the current template. 2768 */ 2769 2770 const addTemplate = template => async _ref3 => { 2771 let { 2772 dispatch, 2773 registry 2774 } = _ref3; 2775 const newTemplate = await registry.dispatch(external_wp_coreData_namespaceObject.store).saveEntityRecord('postType', 'wp_template', template); 2776 2777 if (template.content) { 2778 registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', 'wp_template', newTemplate.id, { 2779 blocks: (0,external_wp_blocks_namespaceObject.parse)(template.content) 2780 }, { 2781 undoIgnore: true 2782 }); 2783 } 2784 2785 dispatch({ 2786 type: 'SET_TEMPLATE', 2787 templateId: newTemplate.id, 2788 page: { 2789 context: { 2790 templateSlug: newTemplate.slug 2791 } 2792 } 2793 }); 2794 }; 2795 /** 2796 * Action that removes a template. 2797 * 2798 * @param {Object} template The template object. 2799 */ 2800 2801 const removeTemplate = template => async _ref4 => { 2802 let { 2803 registry 2804 } = _ref4; 2805 2806 try { 2807 await registry.dispatch(external_wp_coreData_namespaceObject.store).deleteEntityRecord('postType', template.type, template.id, { 2808 force: true 2809 }); 2810 const lastError = registry.select(external_wp_coreData_namespaceObject.store).getLastEntityDeleteError('postType', template.type, template.id); 2811 2812 if (lastError) { 2813 throw lastError; 2814 } 2815 2816 registry.dispatch(external_wp_notices_namespaceObject.store).createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)( 2817 /* translators: The template/part's name. */ 2818 (0,external_wp_i18n_namespaceObject.__)('"%s" deleted.'), template.title.rendered), { 2819 type: 'snackbar' 2820 }); 2821 } catch (error) { 2822 const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while deleting the template.'); 2823 registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice(errorMessage, { 2824 type: 'snackbar' 2825 }); 2826 } 2827 }; 2828 /** 2829 * Action that sets a template part. 2830 * 2831 * @param {string} templatePartId The template part ID. 2832 * 2833 * @return {Object} Action object. 2834 */ 2835 2836 function setTemplatePart(templatePartId) { 2837 return { 2838 type: 'SET_TEMPLATE_PART', 2839 templatePartId 2840 }; 2841 } 2842 /** 2843 * Action that sets the home template ID to the template ID of the page resolved 2844 * from a given path. 2845 * 2846 * @param {number} homeTemplateId The template ID for the homepage. 2847 */ 2848 2849 function setHomeTemplateId(homeTemplateId) { 2850 return { 2851 type: 'SET_HOME_TEMPLATE', 2852 homeTemplateId 2853 }; 2854 } 2855 /** 2856 * Resolves the template for a page and displays both. If no path is given, attempts 2857 * to use the postId to generate a path like `?p=${ postId }`. 2858 * 2859 * @param {Object} page The page object. 2860 * @param {string} page.type The page type. 2861 * @param {string} page.slug The page slug. 2862 * @param {string} page.path The page path. 2863 * @param {Object} page.context The page context. 2864 * 2865 * @return {number} The resolved template ID for the page route. 2866 */ 2867 2868 const setPage = page => async _ref5 => { 2869 var _page$context; 2870 2871 let { 2872 dispatch, 2873 registry 2874 } = _ref5; 2875 2876 if (!page.path && (_page$context = page.context) !== null && _page$context !== void 0 && _page$context.postId) { 2877 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 "/" 2878 2879 page.path = (0,external_wp_url_namespaceObject.getPathAndQueryString)(entity === null || entity === void 0 ? void 0 : entity.link); 2880 } 2881 2882 const template = await registry.resolveSelect(external_wp_coreData_namespaceObject.store).__experimentalGetTemplateForLink(page.path); 2883 2884 if (!template) { 2885 return; 2886 } 2887 2888 dispatch({ 2889 type: 'SET_PAGE', 2890 page: template.slug ? { ...page, 2891 context: { ...page.context, 2892 templateSlug: template.slug 2893 } 2894 } : page, 2895 templateId: template.id 2896 }); 2897 return template.id; 2898 }; 2899 /** 2900 * Action that sets the active navigation panel menu. 2901 * 2902 * @param {string} menu Menu prop of active menu. 2903 * 2904 * @return {Object} Action object. 2905 */ 2906 2907 function setNavigationPanelActiveMenu(menu) { 2908 return { 2909 type: 'SET_NAVIGATION_PANEL_ACTIVE_MENU', 2910 menu 2911 }; 2912 } 2913 /** 2914 * Opens the navigation panel and sets its active menu at the same time. 2915 * 2916 * @param {string} menu Identifies the menu to open. 2917 */ 2918 2919 function openNavigationPanelToMenu(menu) { 2920 return { 2921 type: 'OPEN_NAVIGATION_PANEL_TO_MENU', 2922 menu 2923 }; 2924 } 2925 /** 2926 * Sets whether the navigation panel should be open. 2927 * 2928 * @param {boolean} isOpen If true, opens the nav panel. If false, closes it. It 2929 * does not toggle the state, but sets it directly. 2930 */ 2931 2932 function setIsNavigationPanelOpened(isOpen) { 2933 return { 2934 type: 'SET_IS_NAVIGATION_PANEL_OPENED', 2935 isOpen 2936 }; 2937 } 2938 /** 2939 * Opens or closes the inserter. 2940 * 2941 * @param {boolean|Object} value Whether the inserter should be 2942 * opened (true) or closed (false). 2943 * To specify an insertion point, 2944 * use an object. 2945 * @param {string} value.rootClientId The root client ID to insert at. 2946 * @param {number} value.insertionIndex The index to insert at. 2947 * 2948 * @return {Object} Action object. 2949 */ 2950 2951 function setIsInserterOpened(value) { 2952 return { 2953 type: 'SET_IS_INSERTER_OPENED', 2954 value 2955 }; 2956 } 2957 /** 2958 * Returns an action object used to update the settings. 2959 * 2960 * @param {Object} settings New settings. 2961 * 2962 * @return {Object} Action object. 2963 */ 2964 2965 function updateSettings(settings) { 2966 return { 2967 type: 'UPDATE_SETTINGS', 2968 settings 2969 }; 2970 } 2971 /** 2972 * Sets whether the list view panel should be open. 2973 * 2974 * @param {boolean} isOpen If true, opens the list view. If false, closes it. 2975 * It does not toggle the state, but sets it directly. 2976 */ 2977 2978 function setIsListViewOpened(isOpen) { 2979 return { 2980 type: 'SET_IS_LIST_VIEW_OPENED', 2981 isOpen 2982 }; 2983 } 2984 /** 2985 * Reverts a template to its original theme-provided file. 2986 * 2987 * @param {Object} template The template to revert. 2988 * @param {Object} [options] 2989 * @param {boolean} [options.allowUndo] Whether to allow the user to undo 2990 * reverting the template. Default true. 2991 */ 2992 2993 const revertTemplate = function (template) { 2994 let { 2995 allowUndo = true 2996 } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 2997 return async _ref6 => { 2998 let { 2999 registry 3000 } = _ref6; 3001 3002 if (!isTemplateRevertable(template)) { 3003 registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice((0,external_wp_i18n_namespaceObject.__)('This template is not revertable.'), { 3004 type: 'snackbar' 3005 }); 3006 return; 3007 } 3008 3009 try { 3010 var _fileTemplate$content; 3011 3012 const templateEntityConfig = registry.select(external_wp_coreData_namespaceObject.store).getEntityConfig('postType', template.type); 3013 3014 if (!templateEntityConfig) { 3015 registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice((0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error. Please reload.'), { 3016 type: 'snackbar' 3017 }); 3018 return; 3019 } 3020 3021 const fileTemplatePath = (0,external_wp_url_namespaceObject.addQueryArgs)(`$templateEntityConfig.baseURL}/$template.id}`, { 3022 context: 'edit', 3023 source: 'theme' 3024 }); 3025 const fileTemplate = await external_wp_apiFetch_default()({ 3026 path: fileTemplatePath 3027 }); 3028 3029 if (!fileTemplate) { 3030 registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice((0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error. Please reload.'), { 3031 type: 'snackbar' 3032 }); 3033 return; 3034 } 3035 3036 const serializeBlocks = _ref7 => { 3037 let { 3038 blocks: blocksForSerialization = [] 3039 } = _ref7; 3040 return (0,external_wp_blocks_namespaceObject.__unstableSerializeAndClean)(blocksForSerialization); 3041 }; 3042 3043 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 3044 // the revert in the header toolbar correctly. 3045 3046 registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', template.type, template.id, { 3047 content: serializeBlocks, 3048 // Required to make the `undo` behave correctly. 3049 blocks: edited.blocks, 3050 // Required to revert the blocks in the editor. 3051 source: 'custom' // required to avoid turning the editor into a dirty state 3052 3053 }, { 3054 undoIgnore: true // Required to merge this edit with the last undo level. 3055 3056 }); 3057 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); 3058 registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', template.type, fileTemplate.id, { 3059 content: serializeBlocks, 3060 blocks, 3061 source: 'theme' 3062 }); 3063 3064 if (allowUndo) { 3065 const undoRevert = () => { 3066 registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', template.type, edited.id, { 3067 content: serializeBlocks, 3068 blocks: edited.blocks, 3069 source: 'custom' 3070 }); 3071 }; 3072 3073 registry.dispatch(external_wp_notices_namespaceObject.store).createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Template reverted.'), { 3074 type: 'snackbar', 3075 actions: [{ 3076 label: (0,external_wp_i18n_namespaceObject.__)('Undo'), 3077 onClick: undoRevert 3078 }] 3079 }); 3080 } else { 3081 registry.dispatch(external_wp_notices_namespaceObject.store).createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Template reverted.')); 3082 } 3083 } catch (error) { 3084 const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('Template revert failed. Please reload.'); 3085 registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice(errorMessage, { 3086 type: 'snackbar' 3087 }); 3088 } 3089 }; 3090 }; 3091 /** 3092 * Action that opens an editor sidebar. 3093 * 3094 * @param {?string} name Sidebar name to be opened. 3095 */ 3096 3097 const openGeneralSidebar = name => _ref8 => { 3098 let { 3099 registry 3100 } = _ref8; 3101 registry.dispatch(store).enableComplementaryArea(STORE_NAME, name); 3102 }; 3103 /** 3104 * Action that closes the sidebar. 3105 */ 3106 3107 const closeGeneralSidebar = () => _ref9 => { 3108 let { 3109 registry 3110 } = _ref9; 3111 registry.dispatch(store).disableComplementaryArea(STORE_NAME); 3112 }; 3113 const switchEditorMode = mode => _ref10 => { 3114 let { 3115 registry 3116 } = _ref10; 3117 registry.dispatch('core/preferences').set('core/edit-site', 'editorMode', mode); // Unselect blocks when we switch to a non visual mode. 3118 3119 if (mode !== 'visual') { 3120 registry.dispatch(external_wp_blockEditor_namespaceObject.store).clearSelectedBlock(); 3121 } 3122 3123 if (mode === 'visual') { 3124 (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Visual editor selected'), 'assertive'); 3125 } else if (mode === 'mosaic') { 3126 (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Mosaic view selected'), 'assertive'); 3127 } 3128 }; 3129 3130 ;// CONCATENATED MODULE: ./node_modules/rememo/es/rememo.js 3131 3132 3133 var LEAF_KEY, hasWeakMap; 3134 3135 /** 3136 * Arbitrary value used as key for referencing cache object in WeakMap tree. 3137 * 3138 * @type {Object} 3139 */ 3140 LEAF_KEY = {}; 3141 3142 /** 3143 * Whether environment supports WeakMap. 3144 * 3145 * @type {boolean} 3146 */ 3147 hasWeakMap = typeof WeakMap !== 'undefined'; 3148 3149 /** 3150 * Returns the first argument as the sole entry in an array. 3151 * 3152 * @param {*} value Value to return. 3153 * 3154 * @return {Array} Value returned as entry in array. 3155 */ 3156 function arrayOf( value ) { 3157 return [ value ]; 3158 } 3159 3160 /** 3161 * Returns true if the value passed is object-like, or false otherwise. A value 3162 * is object-like if it can support property assignment, e.g. object or array. 3163 * 3164 * @param {*} value Value to test. 3165 * 3166 * @return {boolean} Whether value is object-like. 3167 */ 3168 function isObjectLike( value ) { 3169 return !! value && 'object' === typeof value; 3170 } 3171 3172 /** 3173 * Creates and returns a new cache object. 3174 * 3175 * @return {Object} Cache object. 3176 */ 3177 function createCache() { 3178 var cache = { 3179 clear: function() { 3180 cache.head = null; 3181 }, 3182 }; 3183 3184 return cache; 3185 } 3186 3187 /** 3188 * Returns true if entries within the two arrays are strictly equal by 3189 * reference from a starting index. 3190 * 3191 * @param {Array} a First array. 3192 * @param {Array} b Second array. 3193 * @param {number} fromIndex Index from which to start comparison. 3194 * 3195 * @return {boolean} Whether arrays are shallowly equal. 3196 */ 3197 function isShallowEqual( a, b, fromIndex ) { 3198 var i; 3199 3200 if ( a.length !== b.length ) { 3201 return false; 3202 } 3203 3204 for ( i = fromIndex; i < a.length; i++ ) { 3205 if ( a[ i ] !== b[ i ] ) { 3206 return false; 3207 } 3208 } 3209 3210 return true; 3211 } 3212 3213 /** 3214 * Returns a memoized selector function. The getDependants function argument is 3215 * called before the memoized selector and is expected to return an immutable 3216 * reference or array of references on which the selector depends for computing 3217 * its own return value. The memoize cache is preserved only as long as those 3218 * dependant references remain the same. If getDependants returns a different 3219 * reference(s), the cache is cleared and the selector value regenerated. 3220 * 3221 * @param {Function} selector Selector function. 3222 * @param {Function} getDependants Dependant getter returning an immutable 3223 * reference or array of reference used in 3224 * cache bust consideration. 3225 * 3226 * @return {Function} Memoized selector. 3227 */ 3228 /* harmony default export */ function rememo(selector, getDependants ) { 3229 var rootCache, getCache; 3230 3231 // Use object source as dependant if getter not provided 3232 if ( ! getDependants ) { 3233 getDependants = arrayOf; 3234 } 3235 3236 /** 3237 * Returns the root cache. If WeakMap is supported, this is assigned to the 3238 * root WeakMap cache set, otherwise it is a shared instance of the default 3239 * cache object. 3240 * 3241 * @return {(WeakMap|Object)} Root cache object. 3242 */ 3243 function getRootCache() { 3244 return rootCache; 3245 } 3246 3247 /** 3248 * Returns the cache for a given dependants array. When possible, a WeakMap 3249 * will be used to create a unique cache for each set of dependants. This 3250 * is feasible due to the nature of WeakMap in allowing garbage collection 3251 * to occur on entries where the key object is no longer referenced. Since 3252 * WeakMap requires the key to be an object, this is only possible when the 3253 * dependant is object-like. The root cache is created as a hierarchy where 3254 * each top-level key is the first entry in a dependants set, the value a 3255 * WeakMap where each key is the next dependant, and so on. This continues 3256 * so long as the dependants are object-like. If no dependants are object- 3257 * like, then the cache is shared across all invocations. 3258 * 3259 * @see isObjectLike 3260 * 3261 * @param {Array} dependants Selector dependants. 3262 * 3263 * @return {Object} Cache object. 3264 */ 3265 function getWeakMapCache( dependants ) { 3266 var caches = rootCache, 3267 isUniqueByDependants = true, 3268 i, dependant, map, cache; 3269 3270 for ( i = 0; i < dependants.length; i++ ) { 3271 dependant = dependants[ i ]; 3272 3273 // Can only compose WeakMap from object-like key. 3274 if ( ! isObjectLike( dependant ) ) { 3275 isUniqueByDependants = false; 3276 break; 3277 } 3278 3279 // Does current segment of cache already have a WeakMap? 3280 if ( caches.has( dependant ) ) { 3281 // Traverse into nested WeakMap. 3282 caches = caches.get( dependant ); 3283 } else { 3284 // Create, set, and traverse into a new one. 3285 map = new WeakMap(); 3286 caches.set( dependant, map ); 3287 caches = map; 3288 } 3289 } 3290 3291 // We use an arbitrary (but consistent) object as key for the last item 3292 // in the WeakMap to serve as our running cache. 3293 if ( ! caches.has( LEAF_KEY ) ) { 3294 cache = createCache(); 3295 cache.isUniqueByDependants = isUniqueByDependants; 3296 caches.set( LEAF_KEY, cache ); 3297 } 3298 3299 return caches.get( LEAF_KEY ); 3300 } 3301 3302 // Assign cache handler by availability of WeakMap 3303 getCache = hasWeakMap ? getWeakMapCache : getRootCache; 3304 3305 /** 3306 * Resets root memoization cache. 3307 */ 3308 function clear() { 3309 rootCache = hasWeakMap ? new WeakMap() : createCache(); 3310 } 3311 3312 // eslint-disable-next-line jsdoc/check-param-names 3313 /** 3314 * The augmented selector call, considering first whether dependants have 3315 * changed before passing it to underlying memoize function. 3316 * 3317 * @param {Object} source Source object for derivation. 3318 * @param {...*} extraArgs Additional arguments to pass to selector. 3319 * 3320 * @return {*} Selector result. 3321 */ 3322 function callSelector( /* source, ...extraArgs */ ) { 3323 var len = arguments.length, 3324 cache, node, i, args, dependants; 3325 3326 // Create copy of arguments (avoid leaking deoptimization). 3327 args = new Array( len ); 3328 for ( i = 0; i < len; i++ ) { 3329 args[ i ] = arguments[ i ]; 3330 } 3331 3332 dependants = getDependants.apply( null, args ); 3333 cache = getCache( dependants ); 3334 3335 // If not guaranteed uniqueness by dependants (primitive type or lack 3336 // of WeakMap support), shallow compare against last dependants and, if 3337 // references have changed, destroy cache to recalculate result. 3338 if ( ! cache.isUniqueByDependants ) { 3339 if ( cache.lastDependants && ! isShallowEqual( dependants, cache.lastDependants, 0 ) ) { 3340 cache.clear(); 3341 } 3342 3343 cache.lastDependants = dependants; 3344 } 3345 3346 node = cache.head; 3347 while ( node ) { 3348 // Check whether node arguments match arguments 3349 if ( ! isShallowEqual( node.args, args, 1 ) ) { 3350 node = node.next; 3351 continue; 3352 } 3353 3354 // At this point we can assume we've found a match 3355 3356 // Surface matched node to head if not already 3357 if ( node !== cache.head ) { 3358 // Adjust siblings to point to each other. 3359 node.prev.next = node.next; 3360 if ( node.next ) { 3361 node.next.prev = node.prev; 3362 } 3363 3364 node.next = cache.head; 3365 node.prev = null; 3366 cache.head.prev = node; 3367 cache.head = node; 3368 } 3369 3370 // Return immediately 3371 return node.val; 3372 } 3373 3374 // No cached value found. Continue to insertion phase: 3375 3376 node = { 3377 // Generate the result from original function 3378 val: selector.apply( null, args ), 3379 }; 3380 3381 // Avoid including the source object in the cache. 3382 args[ 0 ] = null; 3383 node.args = args; 3384 3385 // Don't need to check whether node is already head, since it would 3386 // have been returned above already if it was 3387 3388 // Shift existing head down list 3389 if ( cache.head ) { 3390 cache.head.prev = node; 3391 node.next = cache.head; 3392 } 3393 3394 cache.head = node; 3395 3396 return node.val; 3397 } 3398 3399 callSelector.getDependants = getDependants; 3400 callSelector.clear = clear; 3401 clear(); 3402 3403 return callSelector; 3404 } 3405 3406 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js 3407 /** 3408 * External dependencies 3409 */ 3410 3411 /** 3412 * Internal dependencies 3413 */ 3414 3415 3416 function isTemplateSuperseded(slug, existingSlugs, showOnFront) { 3417 if (!TEMPLATE_OVERRIDES[slug]) { 3418 return false; 3419 } // `home` template is unused if it is superseded by `front-page` 3420 // or "show on front" is set to show a page rather than blog posts. 3421 3422 3423 if (slug === 'home' && showOnFront !== 'posts') { 3424 return true; 3425 } 3426 3427 return TEMPLATE_OVERRIDES[slug].every(overrideSlug => existingSlugs.includes(overrideSlug) || isTemplateSuperseded(overrideSlug, existingSlugs, showOnFront)); 3428 } 3429 function getTemplateLocation(slug) { 3430 const isTopLevelTemplate = TEMPLATES_TOP_LEVEL.includes(slug); 3431 3432 if (isTopLevelTemplate) { 3433 return MENU_TEMPLATES; 3434 } 3435 3436 const isGeneralTemplate = TEMPLATES_GENERAL.includes(slug); 3437 3438 if (isGeneralTemplate) { 3439 return MENU_TEMPLATES_GENERAL; 3440 } 3441 3442 const isPostsTemplate = TEMPLATES_POSTS_PREFIXES.some(prefix => slug.startsWith(prefix)); 3443 3444 if (isPostsTemplate) { 3445 return MENU_TEMPLATES_POSTS; 3446 } 3447 3448 const isPagesTemplate = TEMPLATES_PAGES_PREFIXES.some(prefix => slug.startsWith(prefix)); 3449 3450 if (isPagesTemplate) { 3451 return MENU_TEMPLATES_PAGES; 3452 } 3453 3454 return MENU_TEMPLATES_GENERAL; 3455 } 3456 function getUnusedTemplates(templates, showOnFront) { 3457 const templateSlugs = map(templates, 'slug'); 3458 const supersededTemplates = templates.filter(_ref => { 3459 let { 3460 slug 3461 } = _ref; 3462 return isTemplateSuperseded(slug, templateSlugs, showOnFront); 3463 }); 3464 return supersededTemplates; 3465 } 3466 function getTemplatesLocationMap(templates) { 3467 return templates.reduce((obj, template) => { 3468 obj[template.slug] = getTemplateLocation(template.slug); 3469 return obj; 3470 }, {}); 3471 } 3472 3473 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/selectors.js 3474 /** 3475 * External dependencies 3476 */ 3477 3478 3479 /** 3480 * WordPress dependencies 3481 */ 3482 3483 3484 3485 3486 3487 3488 3489 3490 /** 3491 * Internal dependencies 3492 */ 3493 3494 3495 3496 /** 3497 * @typedef {'template'|'template_type'} TemplateType Template type. 3498 */ 3499 3500 /** 3501 * Helper for getting a preference from the preferences store. 3502 * 3503 * This is only present so that `getSettings` doesn't need to be made a 3504 * registry selector. 3505 * 3506 * It's unstable because the selector needs to be exported and so part of the 3507 * public API to work. 3508 */ 3509 3510 const __unstableGetPreference = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, name) => select(external_wp_preferences_namespaceObject.store).get('core/edit-site', name)); 3511 /** 3512 * Returns whether the given feature is enabled or not. 3513 * 3514 * @param {Object} state Global application state. 3515 * @param {string} featureName Feature slug. 3516 * 3517 * @return {boolean} Is active. 3518 */ 3519 3520 function selectors_isFeatureActive(state, featureName) { 3521 external_wp_deprecated_default()(`select( 'core/interface' ).isFeatureActive`, { 3522 since: '6.0', 3523 alternative: `select( 'core/preferences' ).get` 3524 }); 3525 return !!__unstableGetPreference(state, featureName); 3526 } 3527 /** 3528 * Returns the current editing canvas device type. 3529 * 3530 * @param {Object} state Global application state. 3531 * 3532 * @return {string} Device type. 3533 */ 3534 3535 function __experimentalGetPreviewDeviceType(state) { 3536 return state.deviceType; 3537 } 3538 /** 3539 * Returns whether the current user can create media or not. 3540 * 3541 * @param {Object} state Global application state. 3542 * 3543 * @return {Object} Whether the current user can create media or not. 3544 */ 3545 3546 const getCanUserCreateMedia = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => select(external_wp_coreData_namespaceObject.store).canUser('create', 'media')); 3547 /** 3548 * Returns any available Reusable blocks. 3549 * 3550 * @param {Object} state Global application state. 3551 * 3552 * @return {Array} The available reusable blocks. 3553 */ 3554 3555 const getReusableBlocks = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => { 3556 const isWeb = external_wp_element_namespaceObject.Platform.OS === 'web'; 3557 return isWeb ? select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_block', { 3558 per_page: -1 3559 }) : []; 3560 }); 3561 /** 3562 * Returns the settings, taking into account active features and permissions. 3563 * 3564 * @param {Object} state Global application state. 3565 * @param {Function} setIsInserterOpen Setter for the open state of the global inserter. 3566 * 3567 * @return {Object} Settings. 3568 */ 3569 3570 const getSettings = rememo((state, setIsInserterOpen) => { 3571 const settings = { ...state.settings, 3572 outlineMode: true, 3573 focusMode: !!__unstableGetPreference(state, 'focusMode'), 3574 hasFixedToolbar: !!__unstableGetPreference(state, 'fixedToolbar'), 3575 keepCaretInsideBlock: !!__unstableGetPreference(state, 'keepCaretInsideBlock'), 3576 showIconLabels: !!__unstableGetPreference(state, 'showIconLabels'), 3577 __experimentalSetIsInserterOpened: setIsInserterOpen, 3578 __experimentalReusableBlocks: getReusableBlocks(state), 3579 __experimentalPreferPatternsOnRoot: 'wp_template' === getEditedPostType(state) 3580 }; 3581 const canUserCreateMedia = getCanUserCreateMedia(state); 3582 3583 if (!canUserCreateMedia) { 3584 return settings; 3585 } 3586 3587 settings.mediaUpload = _ref => { 3588 let { 3589 onError, 3590 ...rest 3591 } = _ref; 3592 (0,external_wp_mediaUtils_namespaceObject.uploadMedia)({ 3593 wpAllowedMimeTypes: state.settings.allowedMimeTypes, 3594 onError: _ref2 => { 3595 let { 3596 message 3597 } = _ref2; 3598 return onError(message); 3599 }, 3600 ...rest 3601 }); 3602 }; 3603 3604 return settings; 3605 }, state => [getCanUserCreateMedia(state), state.settings, __unstableGetPreference(state, 'focusMode'), __unstableGetPreference(state, 'fixedToolbar'), __unstableGetPreference(state, 'keepCaretInsideBlock'), __unstableGetPreference(state, 'showIconLabels'), getReusableBlocks(state), getEditedPostType(state)]); 3606 /** 3607 * Returns the current home template ID. 3608 * 3609 * @param {Object} state Global application state. 3610 * 3611 * @return {number?} Home template ID. 3612 */ 3613 3614 function getHomeTemplateId(state) { 3615 return state.homeTemplateId; 3616 } 3617 3618 function getCurrentEditedPost(state) { 3619 return state.editedPost; 3620 } 3621 /** 3622 * Returns the current edited post type (wp_template or wp_template_part). 3623 * 3624 * @param {Object} state Global application state. 3625 * 3626 * @return {TemplateType?} Template type. 3627 */ 3628 3629 3630 function getEditedPostType(state) { 3631 return getCurrentEditedPost(state).type; 3632 } 3633 /** 3634 * Returns the ID of the currently edited template or template part. 3635 * 3636 * @param {Object} state Global application state. 3637 * 3638 * @return {string?} Post ID. 3639 */ 3640 3641 function getEditedPostId(state) { 3642 return getCurrentEditedPost(state).id; 3643 } 3644 /** 3645 * Returns the current page object. 3646 * 3647 * @param {Object} state Global application state. 3648 * 3649 * @return {Object} Page. 3650 */ 3651 3652 function getPage(state) { 3653 return getCurrentEditedPost(state).page; 3654 } 3655 /** 3656 * Returns the active menu in the navigation panel. 3657 * 3658 * @param {Object} state Global application state. 3659 * 3660 * @return {string} Active menu. 3661 */ 3662 3663 function getNavigationPanelActiveMenu(state) { 3664 return state.navigationPanel.menu; 3665 } 3666 /** 3667 * Returns the current template or template part's corresponding 3668 * navigation panel's sub menu, to be used with `openNavigationPanelToMenu`. 3669 * 3670 * @param {Object} state Global application state. 3671 * 3672 * @return {string} The current template or template part's sub menu. 3673 */ 3674 3675 const getCurrentTemplateNavigationPanelSubMenu = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => { 3676 const templateType = getEditedPostType(state); 3677 const templateId = getEditedPostId(state); 3678 const template = templateId ? select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', templateType, templateId) : null; 3679 3680 if (!template) { 3681 return MENU_ROOT; 3682 } 3683 3684 if ('wp_template_part' === templateType) { 3685 var _TEMPLATE_PARTS_SUB_M; 3686 3687 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; 3688 } 3689 3690 const templates = select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_template'); 3691 const showOnFront = select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('root', 'site').show_on_front; 3692 3693 if (isTemplateSuperseded(template.slug, (0,external_lodash_namespaceObject.map)(templates, 'slug'), showOnFront)) { 3694 return MENU_TEMPLATES_UNUSED; 3695 } 3696 3697 return getTemplateLocation(template.slug); 3698 }); 3699 /** 3700 * Returns the current opened/closed state of the navigation panel. 3701 * 3702 * @param {Object} state Global application state. 3703 * 3704 * @return {boolean} True if the navigation panel should be open; false if closed. 3705 */ 3706 3707 function isNavigationOpened(state) { 3708 return state.navigationPanel.isOpen; 3709 } 3710 /** 3711 * Returns the current opened/closed state of the inserter panel. 3712 * 3713 * @param {Object} state Global application state. 3714 * 3715 * @return {boolean} True if the inserter panel should be open; false if closed. 3716 */ 3717 3718 function isInserterOpened(state) { 3719 return !!state.blockInserterPanel; 3720 } 3721 /** 3722 * Get the insertion point for the inserter. 3723 * 3724 * @param {Object} state Global application state. 3725 * 3726 * @return {Object} The root client ID, index to insert at and starting filter value. 3727 */ 3728 3729 function __experimentalGetInsertionPoint(state) { 3730 const { 3731 rootClientId, 3732 insertionIndex, 3733 filterValue 3734 } = state.blockInserterPanel; 3735 return { 3736 rootClientId, 3737 insertionIndex, 3738 filterValue 3739 }; 3740 } 3741 /** 3742 * Returns the current opened/closed state of the list view panel. 3743 * 3744 * @param {Object} state Global application state. 3745 * 3746 * @return {boolean} True if the list view panel should be open; false if closed. 3747 */ 3748 3749 function isListViewOpened(state) { 3750 return state.listViewPanel; 3751 } 3752 /** 3753 * Returns the template parts and their blocks for the current edited template. 3754 * 3755 * @param {Object} state Global application state. 3756 * @return {Array} Template parts and their blocks in an array. 3757 */ 3758 3759 const getCurrentTemplateTemplateParts = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => { 3760 var _template$blocks; 3761 3762 const templateType = getEditedPostType(state); 3763 const templateId = getEditedPostId(state); 3764 const template = select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('postType', templateType, templateId); 3765 const templateParts = select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_template_part', { 3766 per_page: -1 3767 }); 3768 const templatePartsById = (0,external_lodash_namespaceObject.keyBy)(templateParts, templatePart => templatePart.id); 3769 return ((_template$blocks = template.blocks) !== null && _template$blocks !== void 0 ? _template$blocks : []).filter(block => (0,external_wp_blocks_namespaceObject.isTemplatePart)(block)).map(block => { 3770 const { 3771 attributes: { 3772 theme, 3773 slug 3774 } 3775 } = block; 3776 const templatePartId = `$theme}//${slug}`; 3777 const templatePart = templatePartsById[templatePartId]; 3778 return { 3779 templatePart, 3780 block 3781 }; 3782 }).filter(_ref3 => { 3783 let { 3784 templatePart 3785 } = _ref3; 3786 return !!templatePart; 3787 }); 3788 }); 3789 /** 3790 * Returns the current editing mode. 3791 * 3792 * @param {Object} state Global application state. 3793 * 3794 * @return {string} Editing mode. 3795 */ 3796 3797 function getEditorMode(state) { 3798 return __unstableGetPreference(state, 'editorMode'); 3799 } 3800 3801 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/index.js 3802 /** 3803 * WordPress dependencies 3804 */ 3805 3806 /** 3807 * Internal dependencies 3808 */ 3809 3810 3811 3812 3813 3814 const storeConfig = { 3815 reducer: reducer, 3816 actions: store_actions_namespaceObject, 3817 selectors: store_selectors_namespaceObject 3818 }; 3819 const store_store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, storeConfig); 3820 (0,external_wp_data_namespaceObject.register)(store_store); 3821 3822 ;// CONCATENATED MODULE: ./node_modules/history/index.js 3823 3824 3825 /** 3826 * Actions represent the type of change to a location value. 3827 * 3828 * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#action 3829 */ 3830 var Action; 3831 3832 (function (Action) { 3833 /** 3834 * A POP indicates a change to an arbitrary index in the history stack, such 3835 * as a back or forward navigation. It does not describe the direction of the 3836 * navigation, only that the current index changed. 3837 * 3838 * Note: This is the default action for newly created history objects. 3839 */ 3840 Action["Pop"] = "POP"; 3841 /** 3842 * A PUSH indicates a new entry being added to the history stack, such as when 3843 * a link is clicked and a new page loads. When this happens, all subsequent 3844 * entries in the stack are lost. 3845 */ 3846 3847 Action["Push"] = "PUSH"; 3848 /** 3849 * A REPLACE indicates the entry at the current index in the history stack 3850 * being replaced by a new one. 3851 */ 3852 3853 Action["Replace"] = "REPLACE"; 3854 })(Action || (Action = {})); 3855 3856 var readOnly = false ? 0 : function (obj) { 3857 return obj; 3858 }; 3859 3860 function warning(cond, message) { 3861 if (!cond) { 3862 // eslint-disable-next-line no-console 3863 if (typeof console !== 'undefined') console.warn(message); 3864 3865 try { 3866 // Welcome to debugging history! 3867 // 3868 // This error is thrown as a convenience so you can more easily 3869 // find the source for a warning that appears in the console by 3870 // enabling "pause on exceptions" in your JavaScript debugger. 3871 throw new Error(message); // eslint-disable-next-line no-empty 3872 } catch (e) {} 3873 } 3874 } 3875 3876 var BeforeUnloadEventType = 'beforeunload'; 3877 var HashChangeEventType = 'hashchange'; 3878 var PopStateEventType = 'popstate'; 3879 /** 3880 * Browser history stores the location in regular URLs. This is the standard for 3881 * most web apps, but it requires some configuration on the server to ensure you 3882 * serve the same app at multiple URLs. 3883 * 3884 * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory 3885 */ 3886 3887 function createBrowserHistory(options) { 3888 if (options === void 0) { 3889 options = {}; 3890 } 3891 3892 var _options = options, 3893 _options$window = _options.window, 3894 window = _options$window === void 0 ? document.defaultView : _options$window; 3895 var globalHistory = window.history; 3896 3897 function getIndexAndLocation() { 3898 var _window$location = window.location, 3899 pathname = _window$location.pathname, 3900 search = _window$location.search, 3901 hash = _window$location.hash; 3902 var state = globalHistory.state || {}; 3903 return [state.idx, readOnly({ 3904 pathname: pathname, 3905 search: search, 3906 hash: hash, 3907 state: state.usr || null, 3908 key: state.key || 'default' 3909 })]; 3910 } 3911 3912 var blockedPopTx = null; 3913 3914 function handlePop() { 3915 if (blockedPopTx) { 3916 blockers.call(blockedPopTx); 3917 blockedPopTx = null; 3918 } else { 3919 var nextAction = Action.Pop; 3920 3921 var _getIndexAndLocation = getIndexAndLocation(), 3922 nextIndex = _getIndexAndLocation[0], 3923 nextLocation = _getIndexAndLocation[1]; 3924 3925 if (blockers.length) { 3926 if (nextIndex != null) { 3927 var delta = index - nextIndex; 3928 3929 if (delta) { 3930 // Revert the POP 3931 blockedPopTx = { 3932 action: nextAction, 3933 location: nextLocation, 3934 retry: function retry() { 3935 go(delta * -1); 3936 } 3937 }; 3938 go(delta); 3939 } 3940 } else { 3941 // Trying to POP to a location with no index. We did not create 3942 // this location, so we can't effectively block the navigation. 3943 false ? 0 : void 0; 3944 } 3945 } else { 3946 applyTx(nextAction); 3947 } 3948 } 3949 } 3950 3951 window.addEventListener(PopStateEventType, handlePop); 3952 var action = Action.Pop; 3953 3954 var _getIndexAndLocation2 = getIndexAndLocation(), 3955 index = _getIndexAndLocation2[0], 3956 location = _getIndexAndLocation2[1]; 3957 3958 var listeners = createEvents(); 3959 var blockers = createEvents(); 3960 3961 if (index == null) { 3962 index = 0; 3963 globalHistory.replaceState(extends_extends({}, globalHistory.state, { 3964 idx: index 3965 }), ''); 3966 } 3967 3968 function createHref(to) { 3969 return typeof to === 'string' ? to : createPath(to); 3970 } // state defaults to `null` because `window.history.state` does 3971 3972 3973 function getNextLocation(to, state) { 3974 if (state === void 0) { 3975 state = null; 3976 } 3977 3978 return readOnly(extends_extends({ 3979 pathname: location.pathname, 3980 hash: '', 3981 search: '' 3982 }, typeof to === 'string' ? parsePath(to) : to, { 3983 state: state, 3984 key: createKey() 3985 })); 3986 } 3987 3988 function getHistoryStateAndUrl(nextLocation, index) { 3989 return [{ 3990 usr: nextLocation.state, 3991 key: nextLocation.key, 3992 idx: index 3993 }, createHref(nextLocation)]; 3994 } 3995 3996 function allowTx(action, location, retry) { 3997 return !blockers.length || (blockers.call({ 3998 action: action, 3999 location: location, 4000 retry: retry 4001 }), false); 4002 } 4003 4004 function applyTx(nextAction) { 4005 action = nextAction; 4006 4007 var _getIndexAndLocation3 = getIndexAndLocation(); 4008 4009 index = _getIndexAndLocation3[0]; 4010 location = _getIndexAndLocation3[1]; 4011 listeners.call({ 4012 action: action, 4013 location: location 4014 }); 4015 } 4016 4017 function push(to, state) { 4018 var nextAction = Action.Push; 4019 var nextLocation = getNextLocation(to, state); 4020 4021 function retry() { 4022 push(to, state); 4023 } 4024 4025 if (allowTx(nextAction, nextLocation, retry)) { 4026 var _getHistoryStateAndUr = getHistoryStateAndUrl(nextLocation, index + 1), 4027 historyState = _getHistoryStateAndUr[0], 4028 url = _getHistoryStateAndUr[1]; // TODO: Support forced reloading 4029 // try...catch because iOS limits us to 100 pushState calls :/ 4030 4031 4032 try { 4033 globalHistory.pushState(historyState, '', url); 4034 } catch (error) { 4035 // They are going to lose state here, but there is no real 4036 // way to warn them about it since the page will refresh... 4037 window.location.assign(url); 4038 } 4039 4040 applyTx(nextAction); 4041 } 4042 } 4043 4044 function replace(to, state) { 4045 var nextAction = Action.Replace; 4046 var nextLocation = getNextLocation(to, state); 4047 4048 function retry() { 4049 replace(to, state); 4050 } 4051 4052 if (allowTx(nextAction, nextLocation, retry)) { 4053 var _getHistoryStateAndUr2 = getHistoryStateAndUrl(nextLocation, index), 4054 historyState = _getHistoryStateAndUr2[0], 4055 url = _getHistoryStateAndUr2[1]; // TODO: Support forced reloading 4056 4057 4058 globalHistory.replaceState(historyState, '', url); 4059 applyTx(nextAction); 4060 } 4061 } 4062 4063 function go(delta) { 4064 globalHistory.go(delta); 4065 } 4066 4067 var history = { 4068 get action() { 4069 return action; 4070 }, 4071 4072 get location() { 4073 return location; 4074 }, 4075 4076 createHref: createHref, 4077 push: push, 4078 replace: replace, 4079 go: go, 4080 back: function back() { 4081 go(-1); 4082 }, 4083 forward: function forward() { 4084 go(1); 4085 }, 4086 listen: function listen(listener) { 4087 return listeners.push(listener); 4088 }, 4089 block: function block(blocker) { 4090 var unblock = blockers.push(blocker); 4091 4092 if (blockers.length === 1) { 4093 window.addEventListener(BeforeUnloadEventType, promptBeforeUnload); 4094 } 4095 4096 return function () { 4097 unblock(); // Remove the beforeunload listener so the document may 4098 // still be salvageable in the pagehide event. 4099 // See https://html.spec.whatwg.org/#unloading-documents 4100 4101 if (!blockers.length) { 4102 window.removeEventListener(BeforeUnloadEventType, promptBeforeUnload); 4103 } 4104 }; 4105 } 4106 }; 4107 return history; 4108 } 4109 /** 4110 * Hash history stores the location in window.location.hash. This makes it ideal 4111 * for situations where you don't want to send the location to the server for 4112 * some reason, either because you do cannot configure it or the URL space is 4113 * reserved for something else. 4114 * 4115 * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory 4116 */ 4117 4118 function createHashHistory(options) { 4119 if (options === void 0) { 4120 options = {}; 4121 } 4122 4123 var _options2 = options, 4124 _options2$window = _options2.window, 4125 window = _options2$window === void 0 ? document.defaultView : _options2$window; 4126 var globalHistory = window.history; 4127 4128 function getIndexAndLocation() { 4129 var _parsePath = parsePath(window.location.hash.substr(1)), 4130 _parsePath$pathname = _parsePath.pathname, 4131 pathname = _parsePath$pathname === void 0 ? '/' : _parsePath$pathname, 4132 _parsePath$search = _parsePath.search, 4133 search = _parsePath$search === void 0 ? '' : _parsePath$search, 4134 _parsePath$hash = _parsePath.hash, 4135 hash = _parsePath$hash === void 0 ? '' : _parsePath$hash; 4136 4137 var state = globalHistory.state || {}; 4138 return [state.idx, readOnly({ 4139 pathname: pathname, 4140 search: search, 4141 hash: hash, 4142 state: state.usr || null, 4143 key: state.key || 'default' 4144 })]; 4145 } 4146 4147 var blockedPopTx = null; 4148 4149 function handlePop() { 4150 if (blockedPopTx) { 4151 blockers.call(blockedPopTx); 4152 blockedPopTx = null; 4153 } else { 4154 var nextAction = Action.Pop; 4155 4156 var _getIndexAndLocation4 = getIndexAndLocation(), 4157 nextIndex = _getIndexAndLocation4[0], 4158 nextLocation = _getIndexAndLocation4[1]; 4159 4160 if (blockers.length) { 4161 if (nextIndex != null) { 4162 var delta = index - nextIndex; 4163 4164 if (delta) { 4165 // Revert the POP 4166 blockedPopTx = { 4167 action: nextAction, 4168 location: nextLocation, 4169 retry: function retry() { 4170 go(delta * -1); 4171 } 4172 }; 4173 go(delta); 4174 } 4175 } else { 4176 // Trying to POP to a location with no index. We did not create 4177 // this location, so we can't effectively block the navigation. 4178 false ? 0 : void 0; 4179 } 4180 } else { 4181 applyTx(nextAction); 4182 } 4183 } 4184 } 4185 4186 window.addEventListener(PopStateEventType, handlePop); // popstate does not fire on hashchange in IE 11 and old (trident) Edge 4187 // https://developer.mozilla.org/de/docs/Web/API/Window/popstate_event 4188 4189 window.addEventListener(HashChangeEventType, function () { 4190 var _getIndexAndLocation5 = getIndexAndLocation(), 4191 nextLocation = _getIndexAndLocation5[1]; // Ignore extraneous hashchange events. 4192 4193 4194 if (createPath(nextLocation) !== createPath(location)) { 4195 handlePop(); 4196 } 4197 }); 4198 var action = Action.Pop; 4199 4200 var _getIndexAndLocation6 = getIndexAndLocation(), 4201 index = _getIndexAndLocation6[0], 4202 location = _getIndexAndLocation6[1]; 4203 4204 var listeners = createEvents(); 4205 var blockers = createEvents(); 4206 4207 if (index == null) { 4208 index = 0; 4209 globalHistory.replaceState(_extends({}, globalHistory.state, { 4210 idx: index 4211 }), ''); 4212 } 4213 4214 function getBaseHref() { 4215 var base = document.querySelector('base'); 4216 var href = ''; 4217 4218 if (base && base.getAttribute('href')) { 4219 var url = window.location.href; 4220 var hashIndex = url.indexOf('#'); 4221 href = hashIndex === -1 ? url : url.slice(0, hashIndex); 4222 } 4223 4224 return href; 4225 } 4226 4227 function createHref(to) { 4228 return getBaseHref() + '#' + (typeof to === 'string' ? to : createPath(to)); 4229 } 4230 4231 function getNextLocation(to, state) { 4232 if (state === void 0) { 4233 state = null; 4234 } 4235 4236 return readOnly(_extends({ 4237 pathname: location.pathname, 4238 hash: '', 4239 search: '' 4240 }, typeof to === 'string' ? parsePath(to) : to, { 4241 state: state, 4242 key: createKey() 4243 })); 4244 } 4245 4246 function getHistoryStateAndUrl(nextLocation, index) { 4247 return [{ 4248 usr: nextLocation.state, 4249 key: nextLocation.key, 4250 idx: index 4251 }, createHref(nextLocation)]; 4252 } 4253 4254 function allowTx(action, location, retry) { 4255 return !blockers.length || (blockers.call({ 4256 action: action, 4257 location: location, 4258 retry: retry 4259 }), false); 4260 } 4261 4262 function applyTx(nextAction) { 4263 action = nextAction; 4264 4265 var _getIndexAndLocation7 = getIndexAndLocation(); 4266 4267 index = _getIndexAndLocation7[0]; 4268 location = _getIndexAndLocation7[1]; 4269 listeners.call({ 4270 action: action, 4271 location: location 4272 }); 4273 } 4274 4275 function push(to, state) { 4276 var nextAction = Action.Push; 4277 var nextLocation = getNextLocation(to, state); 4278 4279 function retry() { 4280 push(to, state); 4281 } 4282 4283 false ? 0 : void 0; 4284 4285 if (allowTx(nextAction, nextLocation, retry)) { 4286 var _getHistoryStateAndUr3 = getHistoryStateAndUrl(nextLocation, index + 1), 4287 historyState = _getHistoryStateAndUr3[0], 4288 url = _getHistoryStateAndUr3[1]; // TODO: Support forced reloading 4289 // try...catch because iOS limits us to 100 pushState calls :/ 4290 4291 4292 try { 4293 globalHistory.pushState(historyState, '', url); 4294 } catch (error) { 4295 // They are going to lose state here, but there is no real 4296 // way to warn them about it since the page will refresh... 4297 window.location.assign(url); 4298 } 4299 4300 applyTx(nextAction); 4301 } 4302 } 4303 4304 function replace(to, state) { 4305 var nextAction = Action.Replace; 4306 var nextLocation = getNextLocation(to, state); 4307 4308 function retry() { 4309 replace(to, state); 4310 } 4311 4312 false ? 0 : void 0; 4313 4314 if (allowTx(nextAction, nextLocation, retry)) { 4315 var _getHistoryStateAndUr4 = getHistoryStateAndUrl(nextLocation, index), 4316 historyState = _getHistoryStateAndUr4[0], 4317 url = _getHistoryStateAndUr4[1]; // TODO: Support forced reloading 4318 4319 4320 globalHistory.replaceState(historyState, '', url); 4321 applyTx(nextAction); 4322 } 4323 } 4324 4325 function go(delta) { 4326 globalHistory.go(delta); 4327 } 4328 4329 var history = { 4330 get action() { 4331 return action; 4332 }, 4333 4334 get location() { 4335 return location; 4336 }, 4337 4338 createHref: createHref, 4339 push: push, 4340 replace: replace, 4341 go: go, 4342 back: function back() { 4343 go(-1); 4344 }, 4345 forward: function forward() { 4346 go(1); 4347 }, 4348 listen: function listen(listener) { 4349 return listeners.push(listener); 4350 }, 4351 block: function block(blocker) { 4352 var unblock = blockers.push(blocker); 4353 4354 if (blockers.length === 1) { 4355 window.addEventListener(BeforeUnloadEventType, promptBeforeUnload); 4356 } 4357 4358 return function () { 4359 unblock(); // Remove the beforeunload listener so the document may 4360 // still be salvageable in the pagehide event. 4361 // See https://html.spec.whatwg.org/#unloading-documents 4362 4363 if (!blockers.length) { 4364 window.removeEventListener(BeforeUnloadEventType, promptBeforeUnload); 4365 } 4366 }; 4367 } 4368 }; 4369 return history; 4370 } 4371 /** 4372 * Memory history stores the current location in memory. It is designed for use 4373 * in stateful non-browser environments like tests and React Native. 4374 * 4375 * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#creatememoryhistory 4376 */ 4377 4378 function createMemoryHistory(options) { 4379 if (options === void 0) { 4380 options = {}; 4381 } 4382 4383 var _options3 = options, 4384 _options3$initialEntr = _options3.initialEntries, 4385 initialEntries = _options3$initialEntr === void 0 ? ['/'] : _options3$initialEntr, 4386 initialIndex = _options3.initialIndex; 4387 var entries = initialEntries.map(function (entry) { 4388 var location = readOnly(_extends({ 4389 pathname: '/', 4390 search: '', 4391 hash: '', 4392 state: null, 4393 key: createKey() 4394 }, typeof entry === 'string' ? parsePath(entry) : entry)); 4395 false ? 0 : void 0; 4396 return location; 4397 }); 4398 var index = clamp(initialIndex == null ? entries.length - 1 : initialIndex, 0, entries.length - 1); 4399 var action = Action.Pop; 4400 var location = entries[index]; 4401 var listeners = createEvents(); 4402 var blockers = createEvents(); 4403 4404 function createHref(to) { 4405 return typeof to === 'string' ? to : createPath(to); 4406 } 4407 4408 function getNextLocation(to, state) { 4409 if (state === void 0) { 4410 state = null; 4411 } 4412 4413 return readOnly(_extends({ 4414 pathname: location.pathname, 4415 search: '', 4416 hash: '' 4417 }, typeof to === 'string' ? parsePath(to) : to, { 4418 state: state, 4419 key: createKey() 4420 })); 4421 } 4422 4423 function allowTx(action, location, retry) { 4424 return !blockers.length || (blockers.call({ 4425 action: action, 4426 location: location, 4427 retry: retry 4428 }), false); 4429 } 4430 4431 function applyTx(nextAction, nextLocation) { 4432 action = nextAction; 4433 location = nextLocation; 4434 listeners.call({ 4435 action: action, 4436 location: location 4437 }); 4438 } 4439 4440 function push(to, state) { 4441 var nextAction = Action.Push; 4442 var nextLocation = getNextLocation(to, state); 4443 4444 function retry() { 4445 push(to, state); 4446 } 4447 4448 false ? 0 : void 0; 4449 4450 if (allowTx(nextAction, nextLocation, retry)) { 4451 index += 1; 4452 entries.splice(index, entries.length, nextLocation); 4453 applyTx(nextAction, nextLocation); 4454 } 4455 } 4456 4457 function replace(to, state) { 4458 var nextAction = Action.Replace; 4459 var nextLocation = getNextLocation(to, state); 4460 4461 function retry() { 4462 replace(to, state); 4463 } 4464 4465 false ? 0 : void 0; 4466 4467 if (allowTx(nextAction, nextLocation, retry)) { 4468 entries[index] = nextLocation; 4469 applyTx(nextAction, nextLocation); 4470 } 4471 } 4472 4473 function go(delta) { 4474 var nextIndex = clamp(index + delta, 0, entries.length - 1); 4475 var nextAction = Action.Pop; 4476 var nextLocation = entries[nextIndex]; 4477 4478 function retry() { 4479 go(delta); 4480 } 4481 4482 if (allowTx(nextAction, nextLocation, retry)) { 4483 index = nextIndex; 4484 applyTx(nextAction, nextLocation); 4485 } 4486 } 4487 4488 var history = { 4489 get index() { 4490 return index; 4491 }, 4492 4493 get action() { 4494 return action; 4495 }, 4496 4497 get location() { 4498 return location; 4499 }, 4500 4501 createHref: createHref, 4502 push: push, 4503 replace: replace, 4504 go: go, 4505 back: function back() { 4506 go(-1); 4507 }, 4508 forward: function forward() { 4509 go(1); 4510 }, 4511 listen: function listen(listener) { 4512 return listeners.push(listener); 4513 }, 4514 block: function block(blocker) { 4515 return blockers.push(blocker); 4516 } 4517 }; 4518 return history; 4519 } //////////////////////////////////////////////////////////////////////////////// 4520 // UTILS 4521 //////////////////////////////////////////////////////////////////////////////// 4522 4523 function clamp(n, lowerBound, upperBound) { 4524 return Math.min(Math.max(n, lowerBound), upperBound); 4525 } 4526 4527 function promptBeforeUnload(event) { 4528 // Cancel the event. 4529 event.preventDefault(); // Chrome (and legacy IE) requires returnValue to be set. 4530 4531 event.returnValue = ''; 4532 } 4533 4534 function createEvents() { 4535 var handlers = []; 4536 return { 4537 get length() { 4538 return handlers.length; 4539 }, 4540 4541 push: function push(fn) { 4542 handlers.push(fn); 4543 return function () { 4544 handlers = handlers.filter(function (handler) { 4545 return handler !== fn; 4546 }); 4547 }; 4548 }, 4549 call: function call(arg) { 4550 handlers.forEach(function (fn) { 4551 return fn && fn(arg); 4552 }); 4553 } 4554 }; 4555 } 4556 4557 function createKey() { 4558 return Math.random().toString(36).substr(2, 8); 4559 } 4560 /** 4561 * Creates a string URL path from the given pathname, search, and hash components. 4562 * 4563 * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createpath 4564 */ 4565 4566 4567 function createPath(_ref) { 4568 var _ref$pathname = _ref.pathname, 4569 pathname = _ref$pathname === void 0 ? '/' : _ref$pathname, 4570 _ref$search = _ref.search, 4571 search = _ref$search === void 0 ? '' : _ref$search, 4572 _ref$hash = _ref.hash, 4573 hash = _ref$hash === void 0 ? '' : _ref$hash; 4574 if (search && search !== '?') pathname += search.charAt(0) === '?' ? search : '?' + search; 4575 if (hash && hash !== '#') pathname += hash.charAt(0) === '#' ? hash : '#' + hash; 4576 return pathname; 4577 } 4578 /** 4579 * Parses a string URL path into its separate pathname, search, and hash components. 4580 * 4581 * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#parsepath 4582 */ 4583 4584 function parsePath(path) { 4585 var parsedPath = {}; 4586 4587 if (path) { 4588 var hashIndex = path.indexOf('#'); 4589 4590 if (hashIndex >= 0) { 4591 parsedPath.hash = path.substr(hashIndex); 4592 path = path.substr(0, hashIndex); 4593 } 4594 4595 var searchIndex = path.indexOf('?'); 4596 4597 if (searchIndex >= 0) { 4598 parsedPath.search = path.substr(searchIndex); 4599 path = path.substr(0, searchIndex); 4600 } 4601 4602 if (path) { 4603 parsedPath.pathname = path; 4604 } 4605 } 4606 4607 return parsedPath; 4608 } 4609 4610 4611 4612 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/history.js 4613 /** 4614 * External dependencies 4615 */ 4616 4617 /** 4618 * WordPress dependencies 4619 */ 4620 4621 4622 const history_history = createBrowserHistory(); 4623 const originalHistoryPush = history_history.push; 4624 const originalHistoryReplace = history_history.replace; 4625 4626 function push(params, state) { 4627 return originalHistoryPush.call(history_history, (0,external_wp_url_namespaceObject.addQueryArgs)(window.location.href, params), state); 4628 } 4629 4630 function replace(params, state) { 4631 return originalHistoryReplace.call(history_history, (0,external_wp_url_namespaceObject.addQueryArgs)(window.location.href, params), state); 4632 } 4633 4634 history_history.push = push; 4635 history_history.replace = replace; 4636 /* harmony default export */ var utils_history = (history_history); 4637 4638 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/index.js 4639 4640 4641 /** 4642 * WordPress dependencies 4643 */ 4644 4645 /** 4646 * Internal dependencies 4647 */ 4648 4649 4650 const RoutesContext = (0,external_wp_element_namespaceObject.createContext)(); 4651 const HistoryContext = (0,external_wp_element_namespaceObject.createContext)(); 4652 function useLocation() { 4653 return (0,external_wp_element_namespaceObject.useContext)(RoutesContext); 4654 } 4655 function useHistory() { 4656 return (0,external_wp_element_namespaceObject.useContext)(HistoryContext); 4657 } 4658 4659 function getLocationWithParams(location) { 4660 const searchParams = new URLSearchParams(location.search); 4661 return { ...location, 4662 params: Object.fromEntries(searchParams.entries()) 4663 }; 4664 } 4665 4666 function Routes(_ref) { 4667 let { 4668 children 4669 } = _ref; 4670 const [location, setLocation] = (0,external_wp_element_namespaceObject.useState)(() => getLocationWithParams(utils_history.location)); 4671 (0,external_wp_element_namespaceObject.useEffect)(() => { 4672 return utils_history.listen(_ref2 => { 4673 let { 4674 location: updatedLocation 4675 } = _ref2; 4676 setLocation(getLocationWithParams(updatedLocation)); 4677 }); 4678 }, []); 4679 return (0,external_wp_element_namespaceObject.createElement)(HistoryContext.Provider, { 4680 value: utils_history 4681 }, (0,external_wp_element_namespaceObject.createElement)(RoutesContext.Provider, { 4682 value: location 4683 }, children(location))); 4684 } 4685 4686 ;// CONCATENATED MODULE: external ["wp","keyboardShortcuts"] 4687 var external_wp_keyboardShortcuts_namespaceObject = window["wp"]["keyboardShortcuts"]; 4688 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plus.js 4689 4690 4691 /** 4692 * WordPress dependencies 4693 */ 4694 4695 const plus = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 4696 xmlns: "http://www.w3.org/2000/svg", 4697 viewBox: "0 0 24 24" 4698 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 4699 d: "M18 11.2h-5.2V6h-1.6v5.2H6v1.6h5.2V18h1.6v-5.2H18z" 4700 })); 4701 /* harmony default export */ var library_plus = (plus); 4702 4703 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/list-view.js 4704 4705 4706 /** 4707 * WordPress dependencies 4708 */ 4709 4710 const listView = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 4711 viewBox: "0 0 24 24", 4712 xmlns: "http://www.w3.org/2000/svg" 4713 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 4714 d: "M13.8 5.2H3v1.5h10.8V5.2zm-3.6 12v1.5H21v-1.5H10.2zm7.2-6H6.6v1.5h10.8v-1.5z" 4715 })); 4716 /* harmony default export */ var list_view = (listView); 4717 4718 ;// CONCATENATED MODULE: external ["wp","keycodes"] 4719 var external_wp_keycodes_namespaceObject = window["wp"]["keycodes"]; 4720 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/external.js 4721 4722 4723 /** 4724 * WordPress dependencies 4725 */ 4726 4727 const external = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 4728 xmlns: "http://www.w3.org/2000/svg", 4729 viewBox: "0 0 24 24" 4730 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 4731 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" 4732 })); 4733 /* harmony default export */ var library_external = (external); 4734 4735 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/config.js 4736 /** 4737 * WordPress dependencies 4738 */ 4739 4740 const textFormattingShortcuts = [{ 4741 keyCombination: { 4742 modifier: 'primary', 4743 character: 'b' 4744 }, 4745 description: (0,external_wp_i18n_namespaceObject.__)('Make the selected text bold.') 4746 }, { 4747 keyCombination: { 4748 modifier: 'primary', 4749 character: 'i' 4750 }, 4751 description: (0,external_wp_i18n_namespaceObject.__)('Make the selected text italic.') 4752 }, { 4753 keyCombination: { 4754 modifier: 'primary', 4755 character: 'k' 4756 }, 4757 description: (0,external_wp_i18n_namespaceObject.__)('Convert the selected text into a link.') 4758 }, { 4759 keyCombination: { 4760 modifier: 'primaryShift', 4761 character: 'k' 4762 }, 4763 description: (0,external_wp_i18n_namespaceObject.__)('Remove a link.') 4764 }, { 4765 keyCombination: { 4766 modifier: 'primary', 4767 character: 'u' 4768 }, 4769 description: (0,external_wp_i18n_namespaceObject.__)('Underline the selected text.') 4770 }]; 4771 4772 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/shortcut.js 4773 4774 4775 /** 4776 * External dependencies 4777 */ 4778 4779 /** 4780 * WordPress dependencies 4781 */ 4782 4783 4784 4785 4786 function KeyCombination(_ref) { 4787 let { 4788 keyCombination, 4789 forceAriaLabel 4790 } = _ref; 4791 const shortcut = keyCombination.modifier ? external_wp_keycodes_namespaceObject.displayShortcutList[keyCombination.modifier](keyCombination.character) : keyCombination.character; 4792 const ariaLabel = keyCombination.modifier ? external_wp_keycodes_namespaceObject.shortcutAriaLabel[keyCombination.modifier](keyCombination.character) : keyCombination.character; 4793 return (0,external_wp_element_namespaceObject.createElement)("kbd", { 4794 className: "edit-site-keyboard-shortcut-help-modal__shortcut-key-combination", 4795 "aria-label": forceAriaLabel || ariaLabel 4796 }, (0,external_lodash_namespaceObject.castArray)(shortcut).map((character, index) => { 4797 if (character === '+') { 4798 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, { 4799 key: index 4800 }, character); 4801 } 4802 4803 return (0,external_wp_element_namespaceObject.createElement)("kbd", { 4804 key: index, 4805 className: "edit-site-keyboard-shortcut-help-modal__shortcut-key" 4806 }, character); 4807 })); 4808 } 4809 4810 function Shortcut(_ref2) { 4811 let { 4812 description, 4813 keyCombination, 4814 aliases = [], 4815 ariaLabel 4816 } = _ref2; 4817 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("div", { 4818 className: "edit-site-keyboard-shortcut-help-modal__shortcut-description" 4819 }, description), (0,external_wp_element_namespaceObject.createElement)("div", { 4820 className: "edit-site-keyboard-shortcut-help-modal__shortcut-term" 4821 }, (0,external_wp_element_namespaceObject.createElement)(KeyCombination, { 4822 keyCombination: keyCombination, 4823 forceAriaLabel: ariaLabel 4824 }), aliases.map((alias, index) => (0,external_wp_element_namespaceObject.createElement)(KeyCombination, { 4825 keyCombination: alias, 4826 forceAriaLabel: ariaLabel, 4827 key: index 4828 })))); 4829 } 4830 4831 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js 4832 4833 4834 /** 4835 * WordPress dependencies 4836 */ 4837 4838 4839 /** 4840 * Internal dependencies 4841 */ 4842 4843 4844 function DynamicShortcut(_ref) { 4845 let { 4846 name 4847 } = _ref; 4848 const { 4849 keyCombination, 4850 description, 4851 aliases 4852 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 4853 const { 4854 getShortcutKeyCombination, 4855 getShortcutDescription, 4856 getShortcutAliases 4857 } = select(external_wp_keyboardShortcuts_namespaceObject.store); 4858 return { 4859 keyCombination: getShortcutKeyCombination(name), 4860 aliases: getShortcutAliases(name), 4861 description: getShortcutDescription(name) 4862 }; 4863 }, [name]); 4864 4865 if (!keyCombination) { 4866 return null; 4867 } 4868 4869 return (0,external_wp_element_namespaceObject.createElement)(Shortcut, { 4870 keyCombination: keyCombination, 4871 description: description, 4872 aliases: aliases 4873 }); 4874 } 4875 4876 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/index.js 4877 4878 4879 /** 4880 * External dependencies 4881 */ 4882 4883 4884 /** 4885 * WordPress dependencies 4886 */ 4887 4888 4889 4890 4891 4892 /** 4893 * Internal dependencies 4894 */ 4895 4896 4897 4898 4899 4900 const ShortcutList = _ref => { 4901 let { 4902 shortcuts 4903 } = _ref; 4904 return ( 4905 /* 4906 * Disable reason: The `list` ARIA role is redundant but 4907 * Safari+VoiceOver won't announce the list otherwise. 4908 */ 4909 4910 /* eslint-disable jsx-a11y/no-redundant-roles */ 4911 (0,external_wp_element_namespaceObject.createElement)("ul", { 4912 className: "edit-site-keyboard-shortcut-help-modal__shortcut-list", 4913 role: "list" 4914 }, shortcuts.map((shortcut, index) => (0,external_wp_element_namespaceObject.createElement)("li", { 4915 className: "edit-site-keyboard-shortcut-help-modal__shortcut", 4916 key: index 4917 }, (0,external_lodash_namespaceObject.isString)(shortcut) ? (0,external_wp_element_namespaceObject.createElement)(DynamicShortcut, { 4918 name: shortcut 4919 }) : (0,external_wp_element_namespaceObject.createElement)(Shortcut, shortcut)))) 4920 /* eslint-enable jsx-a11y/no-redundant-roles */ 4921 4922 ); 4923 }; 4924 4925 const ShortcutSection = _ref2 => { 4926 let { 4927 title, 4928 shortcuts, 4929 className 4930 } = _ref2; 4931 return (0,external_wp_element_namespaceObject.createElement)("section", { 4932 className: classnames_default()('edit-site-keyboard-shortcut-help-modal__section', className) 4933 }, !!title && (0,external_wp_element_namespaceObject.createElement)("h2", { 4934 className: "edit-site-keyboard-shortcut-help-modal__section-title" 4935 }, title), (0,external_wp_element_namespaceObject.createElement)(ShortcutList, { 4936 shortcuts: shortcuts 4937 })); 4938 }; 4939 4940 const ShortcutCategorySection = _ref3 => { 4941 let { 4942 title, 4943 categoryName, 4944 additionalShortcuts = [] 4945 } = _ref3; 4946 const categoryShortcuts = (0,external_wp_data_namespaceObject.useSelect)(select => { 4947 return select(external_wp_keyboardShortcuts_namespaceObject.store).getCategoryShortcuts(categoryName); 4948 }, [categoryName]); 4949 return (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, { 4950 title: title, 4951 shortcuts: categoryShortcuts.concat(additionalShortcuts) 4952 }); 4953 }; 4954 4955 function KeyboardShortcutHelpModal(_ref4) { 4956 let { 4957 isModalActive, 4958 toggleModal 4959 } = _ref4; 4960 4961 if (!isModalActive) { 4962 return null; 4963 } 4964 4965 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, { 4966 className: "edit-site-keyboard-shortcut-help-modal", 4967 title: (0,external_wp_i18n_namespaceObject.__)('Keyboard shortcuts'), 4968 closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'), 4969 onRequestClose: toggleModal 4970 }, (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, { 4971 className: "edit-site-keyboard-shortcut-help-modal__main-shortcuts", 4972 shortcuts: ['core/edit-site/keyboard-shortcuts'] 4973 }), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, { 4974 title: (0,external_wp_i18n_namespaceObject.__)('Global shortcuts'), 4975 categoryName: "global" 4976 }), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, { 4977 title: (0,external_wp_i18n_namespaceObject.__)('Selection shortcuts'), 4978 categoryName: "selection" 4979 }), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, { 4980 title: (0,external_wp_i18n_namespaceObject.__)('Block shortcuts'), 4981 categoryName: "block", 4982 additionalShortcuts: [{ 4983 keyCombination: { 4984 character: '/' 4985 }, 4986 description: (0,external_wp_i18n_namespaceObject.__)('Change the block type after adding a new paragraph.'), 4987 4988 /* translators: The forward-slash character. e.g. '/'. */ 4989 ariaLabel: (0,external_wp_i18n_namespaceObject.__)('Forward-slash') 4990 }] 4991 }), (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, { 4992 title: (0,external_wp_i18n_namespaceObject.__)('Text formatting'), 4993 shortcuts: textFormattingShortcuts 4994 })); 4995 } 4996 4997 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/preferences-modal/enable-feature.js 4998 4999 5000 5001 /** 5002 * WordPress dependencies 5003 */ 5004 5005 5006 5007 function EnableFeature(props) { 5008 const { 5009 featureName, 5010 ...remainingProps 5011 } = props; 5012 const isChecked = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', featureName), [featureName]); 5013 const { 5014 toggle 5015 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store); 5016 5017 const onChange = () => toggle('core/edit-site', featureName); 5018 5019 return (0,external_wp_element_namespaceObject.createElement)(preferences_modal_base_option, extends_extends({ 5020 onChange: onChange, 5021 isChecked: isChecked 5022 }, remainingProps)); 5023 } 5024 5025 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/preferences-modal/index.js 5026 5027 5028 /** 5029 * WordPress dependencies 5030 */ 5031 5032 5033 5034 /** 5035 * Internal dependencies 5036 */ 5037 5038 5039 function EditSitePreferencesModal(_ref) { 5040 let { 5041 isModalActive, 5042 toggleModal 5043 } = _ref; 5044 const sections = (0,external_wp_element_namespaceObject.useMemo)(() => [{ 5045 name: 'general', 5046 tabLabel: (0,external_wp_i18n_namespaceObject.__)('General'), 5047 content: (0,external_wp_element_namespaceObject.createElement)(preferences_modal_section, { 5048 title: (0,external_wp_i18n_namespaceObject.__)('Appearance'), 5049 description: (0,external_wp_i18n_namespaceObject.__)('Customize options related to the block editor interface and editing flow.') 5050 }, (0,external_wp_element_namespaceObject.createElement)(EnableFeature, { 5051 featureName: "focusMode", 5052 help: (0,external_wp_i18n_namespaceObject.__)('Highlights the current block and fades other content.'), 5053 label: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode') 5054 }), (0,external_wp_element_namespaceObject.createElement)(EnableFeature, { 5055 featureName: "showIconLabels", 5056 label: (0,external_wp_i18n_namespaceObject.__)('Show button text labels'), 5057 help: (0,external_wp_i18n_namespaceObject.__)('Show text instead of icons on buttons') 5058 })) 5059 }, { 5060 name: 'blocks', 5061 tabLabel: (0,external_wp_i18n_namespaceObject.__)('Blocks'), 5062 content: (0,external_wp_element_namespaceObject.createElement)(preferences_modal_section, { 5063 title: (0,external_wp_i18n_namespaceObject.__)('Block interactions'), 5064 description: (0,external_wp_i18n_namespaceObject.__)('Customize how you interact with blocks in the block library and editing canvas.') 5065 }, (0,external_wp_element_namespaceObject.createElement)(EnableFeature, { 5066 featureName: "keepCaretInsideBlock", 5067 help: (0,external_wp_i18n_namespaceObject.__)('Aids screen readers by stopping text caret from leaving blocks.'), 5068 label: (0,external_wp_i18n_namespaceObject.__)('Contain text cursor inside block') 5069 })) 5070 }]); 5071 5072 if (!isModalActive) { 5073 return null; 5074 } 5075 5076 return (0,external_wp_element_namespaceObject.createElement)(PreferencesModal, { 5077 closeModal: toggleModal 5078 }, (0,external_wp_element_namespaceObject.createElement)(PreferencesModalTabs, { 5079 sections: sections 5080 })); 5081 } 5082 5083 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/tools-more-menu-group/index.js 5084 5085 5086 /** 5087 * External dependencies 5088 */ 5089 5090 /** 5091 * WordPress dependencies 5092 */ 5093 5094 5095 const { 5096 Fill: ToolsMoreMenuGroup, 5097 Slot 5098 } = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteToolsMoreMenuGroup'); 5099 5100 ToolsMoreMenuGroup.Slot = _ref => { 5101 let { 5102 fillProps 5103 } = _ref; 5104 return (0,external_wp_element_namespaceObject.createElement)(Slot, { 5105 fillProps: fillProps 5106 }, fills => !(0,external_lodash_namespaceObject.isEmpty)(fills) && fills); 5107 }; 5108 5109 /* harmony default export */ var tools_more_menu_group = (ToolsMoreMenuGroup); 5110 5111 // EXTERNAL MODULE: ./node_modules/downloadjs/download.js 5112 var download = __webpack_require__(8981); 5113 var download_default = /*#__PURE__*/__webpack_require__.n(download); 5114 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/download.js 5115 5116 5117 /** 5118 * WordPress dependencies 5119 */ 5120 5121 const download_download = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 5122 xmlns: "http://www.w3.org/2000/svg", 5123 viewBox: "0 0 24 24" 5124 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 5125 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" 5126 })); 5127 /* harmony default export */ var library_download = (download_download); 5128 5129 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/site-export.js 5130 5131 5132 /** 5133 * External dependencies 5134 */ 5135 5136 /** 5137 * WordPress dependencies 5138 */ 5139 5140 5141 5142 5143 5144 5145 5146 function SiteExport() { 5147 const { 5148 createErrorNotice 5149 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 5150 5151 async function handleExport() { 5152 try { 5153 const response = await external_wp_apiFetch_default()({ 5154 path: '/wp-block-editor/v1/export', 5155 parse: false 5156 }); 5157 const blob = await response.blob(); 5158 const contentDisposition = response.headers.get('content-disposition'); 5159 const contentDispositionMatches = contentDisposition.match(/=(.+)\.zip/); 5160 const fileName = contentDispositionMatches[1] ? contentDispositionMatches[1] : 'edit-site-export'; 5161 download_default()(blob, fileName + '.zip', 'application/zip'); 5162 } catch (errorResponse) { 5163 let error = {}; 5164 5165 try { 5166 error = await errorResponse.json(); 5167 } catch (e) {} 5168 5169 const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the site export.'); 5170 createErrorNotice(errorMessage, { 5171 type: 'snackbar' 5172 }); 5173 } 5174 } 5175 5176 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 5177 role: "menuitem", 5178 icon: library_download, 5179 onClick: handleExport, 5180 info: (0,external_wp_i18n_namespaceObject.__)('Download your theme with updated templates and styles.') 5181 }, (0,external_wp_i18n_namespaceObject._x)('Export', 'site exporter menu item')); 5182 } 5183 5184 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/welcome-guide-menu-item.js 5185 5186 5187 /** 5188 * WordPress dependencies 5189 */ 5190 5191 5192 5193 5194 function WelcomeGuideMenuItem() { 5195 const { 5196 toggle 5197 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store); 5198 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 5199 onClick: () => toggle('core/edit-site', 'welcomeGuide') 5200 }, (0,external_wp_i18n_namespaceObject.__)('Welcome Guide')); 5201 } 5202 5203 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/copy-content-menu-item.js 5204 5205 5206 /** 5207 * WordPress dependencies 5208 */ 5209 5210 5211 5212 5213 5214 5215 5216 /** 5217 * Internal dependencies 5218 */ 5219 5220 5221 function CopyContentMenuItem() { 5222 const { 5223 createNotice 5224 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 5225 const getText = (0,external_wp_data_namespaceObject.useSelect)(select => { 5226 return () => { 5227 const { 5228 getEditedPostId, 5229 getEditedPostType 5230 } = select(store_store); 5231 const { 5232 getEditedEntityRecord 5233 } = select(external_wp_coreData_namespaceObject.store); 5234 const record = getEditedEntityRecord('postType', getEditedPostType(), getEditedPostId()); 5235 5236 if (record) { 5237 if (typeof record.content === 'function') { 5238 return record.content(record); 5239 } else if (record.blocks) { 5240 return (0,external_wp_blocks_namespaceObject.__unstableSerializeAndClean)(record.blocks); 5241 } else if (record.content) { 5242 return record.content; 5243 } 5244 } 5245 5246 return ''; 5247 }; 5248 }, []); 5249 5250 function onSuccess() { 5251 createNotice('info', (0,external_wp_i18n_namespaceObject.__)('All content copied.'), { 5252 isDismissible: true, 5253 type: 'snackbar' 5254 }); 5255 } 5256 5257 const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(getText, onSuccess); 5258 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 5259 ref: ref 5260 }, (0,external_wp_i18n_namespaceObject.__)('Copy all content')); 5261 } 5262 5263 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/mode-switcher/index.js 5264 5265 5266 /** 5267 * WordPress dependencies 5268 */ 5269 5270 5271 5272 5273 /** 5274 * Internal dependencies 5275 */ 5276 5277 /** 5278 * Internal dependencies 5279 */ 5280 5281 5282 /** 5283 * Set of available mode options. 5284 * 5285 * @type {Array} 5286 */ 5287 5288 const MODES = [{ 5289 value: 'visual', 5290 label: (0,external_wp_i18n_namespaceObject.__)('Visual editor') 5291 }, { 5292 value: 'text', 5293 label: (0,external_wp_i18n_namespaceObject.__)('Code editor') 5294 }]; 5295 5296 function ModeSwitcher() { 5297 const { 5298 shortcut, 5299 mode 5300 } = (0,external_wp_data_namespaceObject.useSelect)(select => ({ 5301 shortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getShortcutRepresentation('core/edit-site/toggle-mode'), 5302 isRichEditingEnabled: select(store_store).getSettings().richEditingEnabled, 5303 isCodeEditingEnabled: select(store_store).getSettings().codeEditingEnabled, 5304 mode: select(store_store).getEditorMode() 5305 }), []); 5306 const { 5307 switchEditorMode 5308 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 5309 const choices = MODES.map(choice => { 5310 if (choice.value !== mode) { 5311 return { ...choice, 5312 shortcut 5313 }; 5314 } 5315 5316 return choice; 5317 }); 5318 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, { 5319 label: (0,external_wp_i18n_namespaceObject.__)('Editor') 5320 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItemsChoice, { 5321 choices: choices, 5322 value: mode, 5323 onSelect: switchEditorMode 5324 })); 5325 } 5326 5327 /* harmony default export */ var mode_switcher = (ModeSwitcher); 5328 5329 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/index.js 5330 5331 5332 /** 5333 * WordPress dependencies 5334 */ 5335 5336 5337 5338 5339 5340 5341 5342 5343 /** 5344 * Internal dependencies 5345 */ 5346 5347 5348 5349 5350 5351 5352 5353 5354 function MoreMenu() { 5355 const [isModalActive, toggleModal] = (0,external_wp_element_namespaceObject.useReducer)(isActive => !isActive, false); 5356 const [isPreferencesModalActive, togglePreferencesModal] = (0,external_wp_element_namespaceObject.useReducer)(isActive => !isActive, false); 5357 (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/keyboard-shortcuts', toggleModal); 5358 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(MoreMenuDropdown, null, _ref => { 5359 let { 5360 onClose 5361 } = _ref; 5362 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, { 5363 label: (0,external_wp_i18n_namespaceObject._x)('View', 'noun') 5364 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_preferences_namespaceObject.PreferenceToggleMenuItem, { 5365 scope: "core/edit-site", 5366 name: "fixedToolbar", 5367 label: (0,external_wp_i18n_namespaceObject.__)('Top toolbar'), 5368 info: (0,external_wp_i18n_namespaceObject.__)('Access all block and document tools in a single place'), 5369 messageActivated: (0,external_wp_i18n_namespaceObject.__)('Top toolbar activated'), 5370 messageDeactivated: (0,external_wp_i18n_namespaceObject.__)('Top toolbar deactivated') 5371 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_preferences_namespaceObject.PreferenceToggleMenuItem, { 5372 scope: "core/edit-site", 5373 name: "focusMode", 5374 label: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode'), 5375 info: (0,external_wp_i18n_namespaceObject.__)('Focus on one block at a time'), 5376 messageActivated: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode activated'), 5377 messageDeactivated: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode deactivated') 5378 }), (0,external_wp_element_namespaceObject.createElement)(mode_switcher, null), (0,external_wp_element_namespaceObject.createElement)(action_item.Slot, { 5379 name: "core/edit-site/plugin-more-menu", 5380 label: (0,external_wp_i18n_namespaceObject.__)('Plugins'), 5381 as: external_wp_components_namespaceObject.MenuGroup, 5382 fillProps: { 5383 onClick: onClose 5384 } 5385 })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, { 5386 label: (0,external_wp_i18n_namespaceObject.__)('Tools') 5387 }, (0,external_wp_element_namespaceObject.createElement)(SiteExport, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 5388 onClick: toggleModal, 5389 shortcut: external_wp_keycodes_namespaceObject.displayShortcut.access('h') 5390 }, (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, { 5391 icon: library_external, 5392 role: "menuitem", 5393 href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/support/article/site-editor/'), 5394 target: "_blank", 5395 rel: "noopener noreferrer" 5396 }, (0,external_wp_i18n_namespaceObject.__)('Help'), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, { 5397 as: "span" 5398 }, 5399 /* translators: accessibility text */ 5400 (0,external_wp_i18n_namespaceObject.__)('(opens in a new tab)'))), (0,external_wp_element_namespaceObject.createElement)(tools_more_menu_group.Slot, { 5401 fillProps: { 5402 onClose 5403 } 5404 })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 5405 onClick: togglePreferencesModal 5406 }, (0,external_wp_i18n_namespaceObject.__)('Preferences')))); 5407 }), (0,external_wp_element_namespaceObject.createElement)(KeyboardShortcutHelpModal, { 5408 isModalActive: isModalActive, 5409 toggleModal: toggleModal 5410 }), (0,external_wp_element_namespaceObject.createElement)(EditSitePreferencesModal, { 5411 isModalActive: isPreferencesModalActive, 5412 toggleModal: togglePreferencesModal 5413 })); 5414 } 5415 5416 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/save-button/index.js 5417 5418 5419 /** 5420 * External dependencies 5421 */ 5422 5423 /** 5424 * WordPress dependencies 5425 */ 5426 5427 5428 5429 5430 5431 function SaveButton(_ref) { 5432 let { 5433 openEntitiesSavedStates, 5434 isEntitiesSavedStatesOpen 5435 } = _ref; 5436 const { 5437 isDirty, 5438 isSaving 5439 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 5440 const { 5441 __experimentalGetDirtyEntityRecords, 5442 isSavingEntityRecord 5443 } = select(external_wp_coreData_namespaceObject.store); 5444 5445 const dirtyEntityRecords = __experimentalGetDirtyEntityRecords(); 5446 5447 return { 5448 isDirty: dirtyEntityRecords.length > 0, 5449 isSaving: (0,external_lodash_namespaceObject.some)(dirtyEntityRecords, record => isSavingEntityRecord(record.kind, record.name, record.key)) 5450 }; 5451 }, []); 5452 const disabled = !isDirty || isSaving; 5453 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 5454 variant: "primary", 5455 className: "edit-site-save-button__button", 5456 "aria-disabled": disabled, 5457 "aria-expanded": isEntitiesSavedStatesOpen, 5458 disabled: disabled, 5459 isBusy: isSaving, 5460 onClick: disabled ? undefined : openEntitiesSavedStates 5461 }, (0,external_wp_i18n_namespaceObject.__)('Save'))); 5462 } 5463 5464 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/undo.js 5465 5466 5467 /** 5468 * WordPress dependencies 5469 */ 5470 5471 const undo = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 5472 xmlns: "http://www.w3.org/2000/svg", 5473 viewBox: "0 0 24 24" 5474 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 5475 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" 5476 })); 5477 /* harmony default export */ var library_undo = (undo); 5478 5479 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/redo.js 5480 5481 5482 /** 5483 * WordPress dependencies 5484 */ 5485 5486 const redo = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 5487 xmlns: "http://www.w3.org/2000/svg", 5488 viewBox: "0 0 24 24" 5489 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 5490 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" 5491 })); 5492 /* harmony default export */ var library_redo = (redo); 5493 5494 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/undo-redo/undo.js 5495 5496 5497 /** 5498 * WordPress dependencies 5499 */ 5500 5501 5502 5503 5504 5505 5506 function UndoButton() { 5507 const hasUndo = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).hasUndo(), []); 5508 const { 5509 undo 5510 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 5511 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 5512 icon: !(0,external_wp_i18n_namespaceObject.isRTL)() ? library_undo : library_redo, 5513 label: (0,external_wp_i18n_namespaceObject.__)('Undo'), 5514 shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('z') // If there are no undo levels we don't want to actually disable this 5515 // button, because it will remove focus for keyboard users. 5516 // See: https://github.com/WordPress/gutenberg/issues/3486 5517 , 5518 "aria-disabled": !hasUndo, 5519 onClick: hasUndo ? undo : undefined 5520 }); 5521 } 5522 5523 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/undo-redo/redo.js 5524 5525 5526 /** 5527 * WordPress dependencies 5528 */ 5529 5530 5531 5532 5533 5534 5535 function RedoButton() { 5536 const hasRedo = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).hasRedo(), []); 5537 const { 5538 redo 5539 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 5540 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 5541 icon: !(0,external_wp_i18n_namespaceObject.isRTL)() ? library_redo : library_undo, 5542 label: (0,external_wp_i18n_namespaceObject.__)('Redo'), 5543 shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primaryShift('z') // If there are no undo levels we don't want to actually disable this 5544 // button, because it will remove focus for keyboard users. 5545 // See: https://github.com/WordPress/gutenberg/issues/3486 5546 , 5547 "aria-disabled": !hasRedo, 5548 onClick: hasRedo ? redo : undefined 5549 }); 5550 } 5551 5552 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-down.js 5553 5554 5555 /** 5556 * WordPress dependencies 5557 */ 5558 5559 const chevronDown = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 5560 viewBox: "0 0 24 24", 5561 xmlns: "http://www.w3.org/2000/svg" 5562 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 5563 d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z" 5564 })); 5565 /* harmony default export */ var chevron_down = (chevronDown); 5566 5567 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/document-actions/index.js 5568 5569 5570 /** 5571 * External dependencies 5572 */ 5573 5574 /** 5575 * WordPress dependencies 5576 */ 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 function getBlockDisplayText(block) { 5587 if (block) { 5588 const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(block.name); 5589 return blockType ? (0,external_wp_blocks_namespaceObject.__experimentalGetBlockLabel)(blockType, block.attributes) : null; 5590 } 5591 5592 return null; 5593 } 5594 5595 function useSecondaryText() { 5596 const { 5597 getBlock 5598 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 5599 const activeEntityBlockId = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).__experimentalGetActiveBlockIdByBlockNames(['core/template-part']), []); 5600 5601 if (activeEntityBlockId) { 5602 return { 5603 label: getBlockDisplayText(getBlock(activeEntityBlockId)), 5604 isActive: true 5605 }; 5606 } 5607 5608 return {}; 5609 } 5610 /** 5611 * @param {Object} props Props for the DocumentActions component. 5612 * @param {string} props.entityTitle The title to display. 5613 * @param {string} props.entityLabel A label to use for entity-related options. 5614 * E.g. "template" would be used for "edit 5615 * template" and "show template details". 5616 * @param {boolean} props.isLoaded Whether the data is available. 5617 * @param {Function} props.children React component to use for the 5618 * information dropdown area. Should be a 5619 * function which accepts dropdown props. 5620 * @param {boolean} props.showIconLabels Whether buttons display icons or text labels. 5621 */ 5622 5623 5624 function DocumentActions(_ref) { 5625 let { 5626 entityTitle, 5627 entityLabel, 5628 isLoaded, 5629 children: dropdownContent, 5630 showIconLabels 5631 } = _ref; 5632 const { 5633 label 5634 } = useSecondaryText(); // The title ref is passed to the popover as the anchorRef so that the 5635 // dropdown is centered over the whole title area rather than just one 5636 // part of it. 5637 5638 const titleRef = (0,external_wp_element_namespaceObject.useRef)(); // Return a simple loading indicator until we have information to show. 5639 5640 if (!isLoaded) { 5641 return (0,external_wp_element_namespaceObject.createElement)("div", { 5642 className: "edit-site-document-actions" 5643 }, (0,external_wp_i18n_namespaceObject.__)('Loading…')); 5644 } // Return feedback that the template does not seem to exist. 5645 5646 5647 if (!entityTitle) { 5648 return (0,external_wp_element_namespaceObject.createElement)("div", { 5649 className: "edit-site-document-actions" 5650 }, (0,external_wp_i18n_namespaceObject.__)('Template not found')); 5651 } 5652 5653 return (0,external_wp_element_namespaceObject.createElement)("div", { 5654 className: classnames_default()('edit-site-document-actions', { 5655 'has-secondary-label': !!label 5656 }) 5657 }, (0,external_wp_element_namespaceObject.createElement)("div", { 5658 ref: titleRef, 5659 className: "edit-site-document-actions__title-wrapper" 5660 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, { 5661 size: "body", 5662 className: "edit-site-document-actions__title", 5663 as: "h1" 5664 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, { 5665 as: "span" 5666 }, (0,external_wp_i18n_namespaceObject.sprintf)( 5667 /* translators: %s: the entity being edited, like "template"*/ 5668 (0,external_wp_i18n_namespaceObject.__)('Editing %s: '), entityLabel)), entityTitle), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, { 5669 size: "body", 5670 className: "edit-site-document-actions__secondary-item" 5671 }, label !== null && label !== void 0 ? label : ''), dropdownContent && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Dropdown, { 5672 popoverProps: { 5673 anchorRef: titleRef.current 5674 }, 5675 position: "bottom center", 5676 renderToggle: _ref2 => { 5677 let { 5678 isOpen, 5679 onToggle 5680 } = _ref2; 5681 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 5682 className: "edit-site-document-actions__get-info", 5683 icon: chevron_down, 5684 "aria-expanded": isOpen, 5685 "aria-haspopup": "true", 5686 onClick: onToggle, 5687 label: (0,external_wp_i18n_namespaceObject.sprintf)( 5688 /* translators: %s: the entity to see details about, like "template"*/ 5689 (0,external_wp_i18n_namespaceObject.__)('Show %s details'), entityLabel) 5690 }, showIconLabels && (0,external_wp_i18n_namespaceObject.__)('Details')); 5691 }, 5692 contentClassName: "edit-site-document-actions__info-dropdown", 5693 renderContent: dropdownContent 5694 }))); 5695 } 5696 5697 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/link.js 5698 5699 5700 5701 /** 5702 * WordPress dependencies 5703 */ 5704 5705 /** 5706 * Internal dependencies 5707 */ 5708 5709 5710 function useLink() { 5711 let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 5712 let state = arguments.length > 1 ? arguments[1] : undefined; 5713 let shouldReplace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 5714 const history = useHistory(); 5715 5716 function onClick(event) { 5717 event.preventDefault(); 5718 5719 if (shouldReplace) { 5720 history.replace(params, state); 5721 } else { 5722 history.push(params, state); 5723 } 5724 } 5725 5726 return { 5727 href: (0,external_wp_url_namespaceObject.addQueryArgs)(window.location.href, params), 5728 onClick 5729 }; 5730 } 5731 function Link(_ref) { 5732 let { 5733 params = {}, 5734 state, 5735 replace: shouldReplace = false, 5736 children, 5737 ...props 5738 } = _ref; 5739 const { 5740 href, 5741 onClick 5742 } = useLink(params, state, shouldReplace); 5743 return (0,external_wp_element_namespaceObject.createElement)("a", extends_extends({ 5744 href: href, 5745 onClick: onClick 5746 }, props), children); 5747 } 5748 5749 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-details/template-areas.js 5750 5751 5752 5753 /** 5754 * WordPress dependencies 5755 */ 5756 5757 5758 5759 5760 5761 5762 /** 5763 * Internal dependencies 5764 */ 5765 5766 5767 5768 5769 5770 5771 function TemplatePartItemMore(_ref) { 5772 var _templatePart$title; 5773 5774 let { 5775 onClose, 5776 templatePart, 5777 closeTemplateDetailsDropdown 5778 } = _ref; 5779 const { 5780 revertTemplate 5781 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 5782 const { 5783 params 5784 } = useLocation(); 5785 const editLinkProps = useLink({ 5786 postId: templatePart.id, 5787 postType: templatePart.type 5788 }, { 5789 fromTemplateId: params.postId 5790 }); 5791 5792 function editTemplatePart(event) { 5793 editLinkProps.onClick(event); 5794 onClose(); 5795 closeTemplateDetailsDropdown(); 5796 } 5797 5798 function clearCustomizations() { 5799 revertTemplate(templatePart); 5800 onClose(); 5801 closeTemplateDetailsDropdown(); 5802 } 5803 5804 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, { 5805 onClick: editTemplatePart 5806 }), (0,external_wp_i18n_namespaceObject.sprintf)( 5807 /* translators: %s: template part title */ 5808 (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, { 5809 info: (0,external_wp_i18n_namespaceObject.__)('Restore template to default state'), 5810 onClick: clearCustomizations 5811 }, (0,external_wp_i18n_namespaceObject.__)('Clear customizations')))); 5812 } 5813 5814 function TemplatePartItem(_ref2) { 5815 let { 5816 templatePart, 5817 clientId, 5818 closeTemplateDetailsDropdown 5819 } = _ref2; 5820 const { 5821 selectBlock, 5822 toggleBlockHighlight 5823 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 5824 const templatePartArea = (0,external_wp_data_namespaceObject.useSelect)(select => { 5825 const defaultAreas = select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas(); 5826 5827 return defaultAreas.find(defaultArea => defaultArea.area === templatePart.area); 5828 }, [templatePart.area]); 5829 5830 const highlightBlock = () => toggleBlockHighlight(clientId, true); 5831 5832 const cancelHighlightBlock = () => toggleBlockHighlight(clientId, false); 5833 5834 return (0,external_wp_element_namespaceObject.createElement)("div", { 5835 role: "menuitem", 5836 className: "edit-site-template-details__template-areas-item" 5837 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 5838 role: "button", 5839 icon: templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.icon, 5840 iconPosition: "left", 5841 onClick: () => { 5842 selectBlock(clientId); 5843 }, 5844 onMouseOver: highlightBlock, 5845 onMouseLeave: cancelHighlightBlock, 5846 onFocus: highlightBlock, 5847 onBlur: cancelHighlightBlock 5848 }, templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.label), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, { 5849 icon: more_vertical, 5850 label: (0,external_wp_i18n_namespaceObject.__)('More options'), 5851 className: "edit-site-template-details__template-areas-item-more" 5852 }, _ref3 => { 5853 let { 5854 onClose 5855 } = _ref3; 5856 return (0,external_wp_element_namespaceObject.createElement)(TemplatePartItemMore, { 5857 onClose: onClose, 5858 templatePart: templatePart, 5859 closeTemplateDetailsDropdown: closeTemplateDetailsDropdown 5860 }); 5861 })); 5862 } 5863 5864 function TemplateAreas(_ref4) { 5865 let { 5866 closeTemplateDetailsDropdown 5867 } = _ref4; 5868 const templateParts = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getCurrentTemplateTemplateParts(), []); 5869 5870 if (!templateParts.length) { 5871 return null; 5872 } 5873 5874 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, { 5875 label: (0,external_wp_i18n_namespaceObject.__)('Areas'), 5876 className: "edit-site-template-details__group edit-site-template-details__template-areas" 5877 }, templateParts.map(_ref5 => { 5878 let { 5879 templatePart, 5880 block 5881 } = _ref5; 5882 return (0,external_wp_element_namespaceObject.createElement)(TemplatePartItem, { 5883 key: templatePart.slug, 5884 clientId: block.clientId, 5885 templatePart: templatePart, 5886 closeTemplateDetailsDropdown: closeTemplateDetailsDropdown 5887 }); 5888 })); 5889 } 5890 5891 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-details/edit-template-title.js 5892 5893 5894 /** 5895 * WordPress dependencies 5896 */ 5897 5898 5899 5900 function EditTemplateTitle(_ref) { 5901 let { 5902 template 5903 } = _ref; 5904 const [title, setTitle] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', template.type, 'title', template.id); 5905 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, { 5906 label: (0,external_wp_i18n_namespaceObject.__)('Title'), 5907 value: title, 5908 help: (0,external_wp_i18n_namespaceObject.__)('Give the template a title that indicates its purpose, e.g. "Full Width".'), 5909 onChange: newTitle => { 5910 setTitle(newTitle || template.slug); 5911 } 5912 }); 5913 } 5914 5915 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-details/index.js 5916 5917 5918 5919 /** 5920 * WordPress dependencies 5921 */ 5922 5923 5924 5925 5926 5927 /** 5928 * Internal dependencies 5929 */ 5930 5931 5932 5933 5934 5935 5936 5937 function TemplateDetails(_ref) { 5938 let { 5939 template, 5940 onClose 5941 } = _ref; 5942 const { 5943 title, 5944 description 5945 } = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetTemplateInfo(template), []); 5946 const { 5947 revertTemplate 5948 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 5949 const templateSubMenu = (0,external_wp_element_namespaceObject.useMemo)(() => { 5950 if ((template === null || template === void 0 ? void 0 : template.type) === 'wp_template') { 5951 return { 5952 title: (0,external_wp_i18n_namespaceObject.__)('templates'), 5953 menu: MENU_TEMPLATES 5954 }; 5955 } 5956 5957 return TEMPLATE_PARTS_SUB_MENUS.find(_ref2 => { 5958 let { 5959 area 5960 } = _ref2; 5961 return area === (template === null || template === void 0 ? void 0 : template.area); 5962 }); 5963 }, [template]); 5964 const browseAllLinkProps = useLink({ 5965 // TODO: We should update this to filter by template part's areas as well. 5966 postType: template.type, 5967 postId: undefined 5968 }); 5969 5970 if (!template) { 5971 return null; 5972 } 5973 5974 const revert = () => { 5975 revertTemplate(template); 5976 onClose(); 5977 }; 5978 5979 return (0,external_wp_element_namespaceObject.createElement)("div", { 5980 className: "edit-site-template-details" 5981 }, (0,external_wp_element_namespaceObject.createElement)("div", { 5982 className: "edit-site-template-details__group" 5983 }, template.is_custom ? (0,external_wp_element_namespaceObject.createElement)(EditTemplateTitle, { 5984 template: template 5985 }) : (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, { 5986 level: 4, 5987 weight: 600, 5988 className: "edit-site-template-details__title" 5989 }, title), description && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, { 5990 size: "body", 5991 className: "edit-site-template-details__description", 5992 as: "p" 5993 }, description)), (0,external_wp_element_namespaceObject.createElement)(TemplateAreas, { 5994 closeTemplateDetailsDropdown: onClose 5995 }), isTemplateRevertable(template) && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, { 5996 className: "edit-site-template-details__group edit-site-template-details__revert" 5997 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 5998 className: "edit-site-template-details__revert-button", 5999 info: (0,external_wp_i18n_namespaceObject.__)('Restore template to default state'), 6000 onClick: revert 6001 }, (0,external_wp_i18n_namespaceObject.__)('Clear customizations'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, extends_extends({ 6002 className: "edit-site-template-details__show-all-button" 6003 }, browseAllLinkProps), (0,external_wp_i18n_namespaceObject.sprintf)( 6004 /* translators: the template part's area name ("Headers", "Sidebars") or "templates". */ 6005 (0,external_wp_i18n_namespaceObject.__)('Browse all %s'), templateSubMenu.title))); 6006 } 6007 6008 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/index.js 6009 6010 6011 /** 6012 * WordPress dependencies 6013 */ 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 /** 6026 * Internal dependencies 6027 */ 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 const preventDefault = event => { 6038 event.preventDefault(); 6039 }; 6040 6041 function Header(_ref) { 6042 let { 6043 openEntitiesSavedStates, 6044 isEntitiesSavedStatesOpen, 6045 showIconLabels 6046 } = _ref; 6047 const inserterButton = (0,external_wp_element_namespaceObject.useRef)(); 6048 const { 6049 deviceType, 6050 entityTitle, 6051 template, 6052 templateType, 6053 isInserterOpen, 6054 isListViewOpen, 6055 listViewShortcut, 6056 isLoaded, 6057 isVisualMode 6058 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 6059 const { 6060 __experimentalGetPreviewDeviceType, 6061 getEditedPostType, 6062 getEditedPostId, 6063 isInserterOpened, 6064 isListViewOpened, 6065 getEditorMode 6066 } = select(store_store); 6067 const { 6068 getEditedEntityRecord 6069 } = select(external_wp_coreData_namespaceObject.store); 6070 const { 6071 __experimentalGetTemplateInfo: getTemplateInfo 6072 } = select(external_wp_editor_namespaceObject.store); 6073 const { 6074 getShortcutRepresentation 6075 } = select(external_wp_keyboardShortcuts_namespaceObject.store); 6076 const postType = getEditedPostType(); 6077 const postId = getEditedPostId(); 6078 const record = getEditedEntityRecord('postType', postType, postId); 6079 6080 const _isLoaded = !!postId; 6081 6082 return { 6083 deviceType: __experimentalGetPreviewDeviceType(), 6084 entityTitle: getTemplateInfo(record).title, 6085 isLoaded: _isLoaded, 6086 template: record, 6087 templateType: postType, 6088 isInserterOpen: isInserterOpened(), 6089 isListViewOpen: isListViewOpened(), 6090 listViewShortcut: getShortcutRepresentation('core/edit-site/toggle-list-view'), 6091 isVisualMode: getEditorMode() === 'visual' 6092 }; 6093 }, []); 6094 const { 6095 __experimentalSetPreviewDeviceType: setPreviewDeviceType, 6096 setIsInserterOpened, 6097 setIsListViewOpened 6098 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 6099 const isLargeViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium'); 6100 const openInserter = (0,external_wp_element_namespaceObject.useCallback)(() => { 6101 if (isInserterOpen) { 6102 // Focusing the inserter button closes the inserter popover. 6103 inserterButton.current.focus(); 6104 } else { 6105 setIsInserterOpened(true); 6106 } 6107 }, [isInserterOpen, setIsInserterOpened]); 6108 const toggleListView = (0,external_wp_element_namespaceObject.useCallback)(() => setIsListViewOpened(!isListViewOpen), [setIsListViewOpened, isListViewOpen]); 6109 const isFocusMode = templateType === 'wp_template_part'; 6110 return (0,external_wp_element_namespaceObject.createElement)("div", { 6111 className: "edit-site-header" 6112 }, (0,external_wp_element_namespaceObject.createElement)("div", { 6113 className: "edit-site-header_start" 6114 }, (0,external_wp_element_namespaceObject.createElement)("div", { 6115 className: "edit-site-header__toolbar" 6116 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 6117 ref: inserterButton, 6118 variant: "primary", 6119 isPressed: isInserterOpen, 6120 className: "edit-site-header-toolbar__inserter-toggle", 6121 disabled: !isVisualMode, 6122 onMouseDown: preventDefault, 6123 onClick: openInserter, 6124 icon: library_plus, 6125 label: (0,external_wp_i18n_namespaceObject._x)('Toggle block inserter', 'Generic label for block inserter button') 6126 }, 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, { 6127 as: external_wp_blockEditor_namespaceObject.ToolSelector, 6128 disabled: !isVisualMode 6129 }), (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, { 6130 className: "edit-site-header-toolbar__list-view-toggle", 6131 disabled: !isVisualMode, 6132 icon: list_view, 6133 isPressed: isListViewOpen 6134 /* translators: button label text should, if possible, be under 16 characters. */ 6135 , 6136 label: (0,external_wp_i18n_namespaceObject.__)('List View'), 6137 onClick: toggleListView, 6138 shortcut: listViewShortcut 6139 })))), (0,external_wp_element_namespaceObject.createElement)("div", { 6140 className: "edit-site-header_center" 6141 }, (0,external_wp_element_namespaceObject.createElement)(DocumentActions, { 6142 entityTitle: entityTitle, 6143 entityLabel: templateType === 'wp_template_part' ? 'template part' : 'template', 6144 isLoaded: isLoaded, 6145 showIconLabels: showIconLabels 6146 }, _ref2 => { 6147 let { 6148 onClose 6149 } = _ref2; 6150 return (0,external_wp_element_namespaceObject.createElement)(TemplateDetails, { 6151 template: template, 6152 onClose: onClose 6153 }); 6154 })), (0,external_wp_element_namespaceObject.createElement)("div", { 6155 className: "edit-site-header_end" 6156 }, (0,external_wp_element_namespaceObject.createElement)("div", { 6157 className: "edit-site-header__actions" 6158 }, !isFocusMode && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalPreviewOptions, { 6159 deviceType: deviceType, 6160 setDeviceType: setPreviewDeviceType 6161 }), (0,external_wp_element_namespaceObject.createElement)(SaveButton, { 6162 openEntitiesSavedStates: openEntitiesSavedStates, 6163 isEntitiesSavedStatesOpen: isEntitiesSavedStatesOpen 6164 }), (0,external_wp_element_namespaceObject.createElement)(pinned_items.Slot, { 6165 scope: "core/edit-site" 6166 }), (0,external_wp_element_namespaceObject.createElement)(MoreMenu, null)))); 6167 } 6168 6169 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/cog.js 6170 6171 6172 /** 6173 * WordPress dependencies 6174 */ 6175 6176 const cog = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 6177 xmlns: "http://www.w3.org/2000/svg", 6178 viewBox: "0 0 24 24" 6179 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 6180 fillRule: "evenodd", 6181 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", 6182 clipRule: "evenodd" 6183 })); 6184 /* harmony default export */ var library_cog = (cog); 6185 6186 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/default-sidebar.js 6187 6188 6189 /** 6190 * WordPress dependencies 6191 */ 6192 6193 function default_sidebar_DefaultSidebar(_ref) { 6194 let { 6195 className, 6196 identifier, 6197 title, 6198 icon, 6199 children, 6200 closeLabel, 6201 header, 6202 headerClassName, 6203 panelClassName 6204 } = _ref; 6205 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(complementary_area, { 6206 className: className, 6207 scope: "core/edit-site", 6208 identifier: identifier, 6209 title: title, 6210 icon: icon, 6211 closeLabel: closeLabel, 6212 header: header, 6213 headerClassName: headerClassName, 6214 panelClassName: panelClassName 6215 }, children), (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaMoreMenuItem, { 6216 scope: "core/edit-site", 6217 identifier: identifier, 6218 icon: icon 6219 }, title)); 6220 } 6221 6222 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/styles.js 6223 6224 6225 /** 6226 * WordPress dependencies 6227 */ 6228 6229 const styles = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 6230 viewBox: "0 0 24 24", 6231 xmlns: "http://www.w3.org/2000/svg" 6232 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 6233 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" 6234 })); 6235 /* harmony default export */ var library_styles = (styles); 6236 6237 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/icon-with-current-color.js 6238 6239 6240 6241 /** 6242 * External dependencies 6243 */ 6244 6245 /** 6246 * WordPress dependencies 6247 */ 6248 6249 6250 function IconWithCurrentColor(_ref) { 6251 let { 6252 className, 6253 ...props 6254 } = _ref; 6255 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, extends_extends({ 6256 className: classnames_default()(className, 'edit-site-global-styles-icon-with-current-color') 6257 }, props)); 6258 } 6259 6260 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/navigation-button.js 6261 6262 6263 6264 /** 6265 * WordPress dependencies 6266 */ 6267 6268 /** 6269 * Internal dependencies 6270 */ 6271 6272 6273 6274 function GenericNavigationButton(_ref) { 6275 let { 6276 icon, 6277 children, 6278 ...props 6279 } = _ref; 6280 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, { 6281 justify: "flex-start" 6282 }, (0,external_wp_element_namespaceObject.createElement)(IconWithCurrentColor, { 6283 icon: icon, 6284 size: 24 6285 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, children)), !icon && children); 6286 } 6287 6288 function NavigationButton(props) { 6289 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorButton, extends_extends({ 6290 as: GenericNavigationButton 6291 }, props)); 6292 } 6293 6294 function NavigationBackButton(props) { 6295 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorBackButton, extends_extends({ 6296 as: GenericNavigationButton 6297 }, props)); 6298 } 6299 6300 6301 6302 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/typography.js 6303 6304 6305 /** 6306 * WordPress dependencies 6307 */ 6308 6309 const typography = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 6310 xmlns: "http://www.w3.org/2000/svg", 6311 viewBox: "0 0 24 24" 6312 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 6313 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" 6314 })); 6315 /* harmony default export */ var library_typography = (typography); 6316 6317 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/color.js 6318 6319 6320 /** 6321 * WordPress dependencies 6322 */ 6323 6324 const color = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 6325 viewBox: "0 0 24 24", 6326 xmlns: "http://www.w3.org/2000/svg" 6327 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 6328 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" 6329 })); 6330 /* harmony default export */ var library_color = (color); 6331 6332 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/layout.js 6333 6334 6335 /** 6336 * WordPress dependencies 6337 */ 6338 6339 const layout = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 6340 xmlns: "http://www.w3.org/2000/svg", 6341 viewBox: "0 0 24 24" 6342 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 6343 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" 6344 })); 6345 /* harmony default export */ var library_layout = (layout); 6346 6347 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/utils.js 6348 /** 6349 * External dependencies 6350 */ 6351 6352 /* Supporting data. */ 6353 6354 const ROOT_BLOCK_NAME = 'root'; 6355 const ROOT_BLOCK_SELECTOR = 'body'; 6356 const ROOT_BLOCK_SUPPORTS = (/* unused pure expression or super */ null && (['background', 'backgroundColor', 'color', 'linkColor', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'lineHeight', 'textDecoration', 'textTransform', 'padding'])); 6357 const PRESET_METADATA = [{ 6358 path: ['color', 'palette'], 6359 valueKey: 'color', 6360 cssVarInfix: 'color', 6361 classes: [{ 6362 classSuffix: 'color', 6363 propertyName: 'color' 6364 }, { 6365 classSuffix: 'background-color', 6366 propertyName: 'background-color' 6367 }, { 6368 classSuffix: 'border-color', 6369 propertyName: 'border-color' 6370 }] 6371 }, { 6372 path: ['color', 'gradients'], 6373 valueKey: 'gradient', 6374 cssVarInfix: 'gradient', 6375 classes: [{ 6376 classSuffix: 'gradient-background', 6377 propertyName: 'background' 6378 }] 6379 }, { 6380 path: ['color', 'duotone'], 6381 cssVarInfix: 'duotone', 6382 valueFunc: _ref => { 6383 let { 6384 slug 6385 } = _ref; 6386 return `url( '#wp-duotone-$slug}' )`; 6387 }, 6388 classes: [] 6389 }, { 6390 path: ['typography', 'fontSizes'], 6391 valueKey: 'size', 6392 cssVarInfix: 'font-size', 6393 classes: [{ 6394 classSuffix: 'font-size', 6395 propertyName: 'font-size' 6396 }] 6397 }, { 6398 path: ['typography', 'fontFamilies'], 6399 valueKey: 'fontFamily', 6400 cssVarInfix: 'font-family', 6401 classes: [{ 6402 classSuffix: 'font-family', 6403 propertyName: 'font-family' 6404 }] 6405 }]; 6406 const STYLE_PATH_TO_CSS_VAR_INFIX = { 6407 'color.background': 'color', 6408 'color.text': 'color', 6409 'elements.link.color.text': 'color', 6410 'color.gradient': 'gradient', 6411 'typography.fontSize': 'font-size', 6412 'typography.fontFamily': 'font-family' 6413 }; 6414 6415 function findInPresetsBy(features, blockName, presetPath, presetProperty, presetValueValue) { 6416 // Block presets take priority above root level presets. 6417 const orderedPresetsByOrigin = [(0,external_lodash_namespaceObject.get)(features, ['blocks', blockName, ...presetPath]), (0,external_lodash_namespaceObject.get)(features, presetPath)]; 6418 6419 for (const presetByOrigin of orderedPresetsByOrigin) { 6420 if (presetByOrigin) { 6421 // Preset origins ordered by priority. 6422 const origins = ['custom', 'theme', 'default']; 6423 6424 for (const origin of origins) { 6425 const presets = presetByOrigin[origin]; 6426 6427 if (presets) { 6428 const presetObject = (0,external_lodash_namespaceObject.find)(presets, preset => preset[presetProperty] === presetValueValue); 6429 6430 if (presetObject) { 6431 if (presetProperty === 'slug') { 6432 return presetObject; 6433 } // If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored. 6434 6435 6436 const highestPresetObjectWithSameSlug = findInPresetsBy(features, blockName, presetPath, 'slug', presetObject.slug); 6437 6438 if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) { 6439 return presetObject; 6440 } 6441 6442 return undefined; 6443 } 6444 } 6445 } 6446 } 6447 } 6448 } 6449 6450 function getPresetVariableFromValue(features, blockName, variableStylePath, presetPropertyValue) { 6451 if (!presetPropertyValue) { 6452 return presetPropertyValue; 6453 } 6454 6455 const cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[variableStylePath]; 6456 const metadata = (0,external_lodash_namespaceObject.find)(PRESET_METADATA, ['cssVarInfix', cssVarInfix]); 6457 6458 if (!metadata) { 6459 // The property doesn't have preset data 6460 // so the value should be returned as it is. 6461 return presetPropertyValue; 6462 } 6463 6464 const { 6465 valueKey, 6466 path 6467 } = metadata; 6468 const presetObject = findInPresetsBy(features, blockName, path, valueKey, presetPropertyValue); 6469 6470 if (!presetObject) { 6471 // Value wasn't found in the presets, 6472 // so it must be a custom value. 6473 return presetPropertyValue; 6474 } 6475 6476 return `var:preset|$cssVarInfix}|$presetObject.slug}`; 6477 } 6478 6479 function getValueFromPresetVariable(features, blockName, variable, _ref2) { 6480 let [presetType, slug] = _ref2; 6481 const metadata = (0,external_lodash_namespaceObject.find)(PRESET_METADATA, ['cssVarInfix', presetType]); 6482 6483 if (!metadata) { 6484 return variable; 6485 } 6486 6487 const presetObject = findInPresetsBy(features, blockName, metadata.path, 'slug', slug); 6488 6489 if (presetObject) { 6490 const { 6491 valueKey 6492 } = metadata; 6493 const result = presetObject[valueKey]; 6494 return getValueFromVariable(features, blockName, result); 6495 } 6496 6497 return variable; 6498 } 6499 6500 function getValueFromCustomVariable(features, blockName, variable, path) { 6501 var _get; 6502 6503 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]); 6504 6505 if (!result) { 6506 return variable; 6507 } // A variable may reference another variable so we need recursion until we find the value. 6508 6509 6510 return getValueFromVariable(features, blockName, result); 6511 } 6512 6513 function getValueFromVariable(features, blockName, variable) { 6514 if (!variable || !(0,external_lodash_namespaceObject.isString)(variable)) { 6515 return variable; 6516 } 6517 6518 const USER_VALUE_PREFIX = 'var:'; 6519 const THEME_VALUE_PREFIX = 'var(--wp--'; 6520 const THEME_VALUE_SUFFIX = ')'; 6521 let parsedVar; 6522 6523 if (variable.startsWith(USER_VALUE_PREFIX)) { 6524 parsedVar = variable.slice(USER_VALUE_PREFIX.length).split('|'); 6525 } else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) { 6526 parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split('--'); 6527 } else { 6528 // We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )` 6529 return variable; 6530 } 6531 6532 const [type, ...path] = parsedVar; 6533 6534 if (type === 'preset') { 6535 return getValueFromPresetVariable(features, blockName, variable, path); 6536 } 6537 6538 if (type === 'custom') { 6539 return getValueFromCustomVariable(features, blockName, variable, path); 6540 } 6541 6542 return variable; 6543 } 6544 6545 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/context.js 6546 /** 6547 * WordPress dependencies 6548 */ 6549 6550 const DEFAULT_GLOBAL_STYLES_CONTEXT = { 6551 user: {}, 6552 base: {}, 6553 merged: {}, 6554 setUserConfig: () => {} 6555 }; 6556 const GlobalStylesContext = (0,external_wp_element_namespaceObject.createContext)(DEFAULT_GLOBAL_STYLES_CONTEXT); 6557 6558 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/hooks.js 6559 /** 6560 * External dependencies 6561 */ 6562 6563 /** 6564 * WordPress dependencies 6565 */ 6566 6567 6568 6569 6570 /** 6571 * Internal dependencies 6572 */ 6573 6574 6575 6576 const EMPTY_CONFIG = { 6577 isGlobalStylesUserThemeJSON: true, 6578 version: 1 6579 }; 6580 const useGlobalStylesReset = () => { 6581 const { 6582 user: config, 6583 setUserConfig 6584 } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext); 6585 const canReset = !!config && !(0,external_lodash_namespaceObject.isEqual)(config, EMPTY_CONFIG); 6586 return [canReset, (0,external_wp_element_namespaceObject.useCallback)(() => setUserConfig(() => EMPTY_CONFIG), [setUserConfig])]; 6587 }; 6588 function useSetting(path, blockName) { 6589 var _getSettingValueForCo; 6590 6591 let source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'all'; 6592 const { 6593 merged: mergedConfig, 6594 base: baseConfig, 6595 user: userConfig, 6596 setUserConfig 6597 } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext); 6598 const fullPath = !blockName ? `settings.$path}` : `settings.blocks.$blockName}.$path}`; 6599 6600 const setSetting = newValue => { 6601 setUserConfig(currentConfig => { 6602 const newUserConfig = (0,external_lodash_namespaceObject.cloneDeep)(currentConfig); 6603 const pathToSet = external_wp_blocks_namespaceObject.__EXPERIMENTAL_PATHS_WITH_MERGE[path] ? fullPath + '.custom' : fullPath; 6604 (0,external_lodash_namespaceObject.set)(newUserConfig, pathToSet, newValue); 6605 return newUserConfig; 6606 }); 6607 }; 6608 6609 const getSettingValueForContext = name => { 6610 const currentPath = !name ? `settings.$path}` : `settings.blocks.$name}.$path}`; 6611 6612 const getSettingValue = configToUse => { 6613 const result = (0,external_lodash_namespaceObject.get)(configToUse, currentPath); 6614 6615 if (external_wp_blocks_namespaceObject.__EXPERIMENTAL_PATHS_WITH_MERGE[path]) { 6616 var _ref, _result$custom; 6617 6618 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; 6619 } 6620 6621 return result; 6622 }; 6623 6624 let result; 6625 6626 switch (source) { 6627 case 'all': 6628 result = getSettingValue(mergedConfig); 6629 break; 6630 6631 case 'user': 6632 result = getSettingValue(userConfig); 6633 break; 6634 6635 case 'base': 6636 result = getSettingValue(baseConfig); 6637 break; 6638 6639 default: 6640 throw 'Unsupported source'; 6641 } 6642 6643 return result; 6644 }; // Unlike styles settings get inherited from top level settings. 6645 6646 6647 const resultWithFallback = (_getSettingValueForCo = getSettingValueForContext(blockName)) !== null && _getSettingValueForCo !== void 0 ? _getSettingValueForCo : getSettingValueForContext(); 6648 return [resultWithFallback, setSetting]; 6649 } 6650 function useStyle(path, blockName) { 6651 var _get; 6652 6653 let source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'all'; 6654 const { 6655 merged: mergedConfig, 6656 base: baseConfig, 6657 user: userConfig, 6658 setUserConfig 6659 } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext); 6660 const finalPath = !blockName ? `styles.$path}` : `styles.blocks.$blockName}.$path}`; 6661 6662 const setStyle = newValue => { 6663 setUserConfig(currentConfig => { 6664 const newUserConfig = (0,external_lodash_namespaceObject.cloneDeep)(currentConfig); 6665 (0,external_lodash_namespaceObject.set)(newUserConfig, finalPath, getPresetVariableFromValue(mergedConfig.settings, blockName, path, newValue)); 6666 return newUserConfig; 6667 }); 6668 }; 6669 6670 let result; 6671 6672 switch (source) { 6673 case 'all': 6674 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)); 6675 break; 6676 6677 case 'user': 6678 result = getValueFromVariable(mergedConfig.settings, blockName, (0,external_lodash_namespaceObject.get)(userConfig, finalPath)); 6679 break; 6680 6681 case 'base': 6682 result = getValueFromVariable(baseConfig.settings, blockName, (0,external_lodash_namespaceObject.get)(baseConfig, finalPath)); 6683 break; 6684 6685 default: 6686 throw 'Unsupported source'; 6687 } 6688 6689 return [result, setStyle]; 6690 } 6691 const hooks_ROOT_BLOCK_SUPPORTS = ['background', 'backgroundColor', 'color', 'linkColor', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'lineHeight', 'textDecoration', 'textTransform', 'padding']; 6692 function getSupportedGlobalStylesPanels(name) { 6693 if (!name) { 6694 return hooks_ROOT_BLOCK_SUPPORTS; 6695 } 6696 6697 const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(name); 6698 6699 if (!blockType) { 6700 return []; 6701 } 6702 6703 const supportKeys = []; 6704 Object.keys(external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY).forEach(styleName => { 6705 if (!external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].support) { 6706 return; 6707 } // Opting out means that, for certain support keys like background color, 6708 // blocks have to explicitly set the support value false. If the key is 6709 // unset, we still enable it. 6710 6711 6712 if (external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].requiresOptOut) { 6713 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) { 6714 return supportKeys.push(styleName); 6715 } 6716 } 6717 6718 if ((0,external_lodash_namespaceObject.get)(blockType.supports, external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].support, false)) { 6719 return supportKeys.push(styleName); 6720 } 6721 }); 6722 return supportKeys; 6723 } 6724 function useColorsPerOrigin(name) { 6725 const [customColors] = useSetting('color.palette.custom', name); 6726 const [themeColors] = useSetting('color.palette.theme', name); 6727 const [defaultColors] = useSetting('color.palette.default', name); 6728 const [shouldDisplayDefaultColors] = useSetting('color.defaultPalette'); 6729 return (0,external_wp_element_namespaceObject.useMemo)(() => { 6730 const result = []; 6731 6732 if (themeColors && themeColors.length) { 6733 result.push({ 6734 name: (0,external_wp_i18n_namespaceObject._x)('Theme', 'Indicates this palette comes from the theme.'), 6735 colors: themeColors 6736 }); 6737 } 6738 6739 if (shouldDisplayDefaultColors && defaultColors && defaultColors.length) { 6740 result.push({ 6741 name: (0,external_wp_i18n_namespaceObject._x)('Default', 'Indicates this palette comes from WordPress.'), 6742 colors: defaultColors 6743 }); 6744 } 6745 6746 if (customColors && customColors.length) { 6747 result.push({ 6748 name: (0,external_wp_i18n_namespaceObject._x)('Custom', 'Indicates this palette is created by the user.'), 6749 colors: customColors 6750 }); 6751 } 6752 6753 return result; 6754 }, [customColors, themeColors, defaultColors]); 6755 } 6756 function useGradientsPerOrigin(name) { 6757 const [customGradients] = useSetting('color.gradients.custom', name); 6758 const [themeGradients] = useSetting('color.gradients.theme', name); 6759 const [defaultGradients] = useSetting('color.gradients.default', name); 6760 const [shouldDisplayDefaultGradients] = useSetting('color.defaultGradients'); 6761 return (0,external_wp_element_namespaceObject.useMemo)(() => { 6762 const result = []; 6763 6764 if (themeGradients && themeGradients.length) { 6765 result.push({ 6766 name: (0,external_wp_i18n_namespaceObject._x)('Theme', 'Indicates this palette comes from the theme.'), 6767 gradients: themeGradients 6768 }); 6769 } 6770 6771 if (shouldDisplayDefaultGradients && defaultGradients && defaultGradients.length) { 6772 result.push({ 6773 name: (0,external_wp_i18n_namespaceObject._x)('Default', 'Indicates this palette comes from WordPress.'), 6774 gradients: defaultGradients 6775 }); 6776 } 6777 6778 if (customGradients && customGradients.length) { 6779 result.push({ 6780 name: (0,external_wp_i18n_namespaceObject._x)('Custom', 'Indicates this palette is created by the user.'), 6781 gradients: customGradients 6782 }); 6783 } 6784 6785 return result; 6786 }, [customGradients, themeGradients, defaultGradients]); 6787 } 6788 6789 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/border-panel.js 6790 6791 6792 /** 6793 * WordPress dependencies 6794 */ 6795 6796 6797 6798 /** 6799 * Internal dependencies 6800 */ 6801 6802 6803 const MIN_BORDER_WIDTH = 0; 6804 function useHasBorderPanel(name) { 6805 const controls = [useHasBorderColorControl(name), useHasBorderRadiusControl(name), useHasBorderStyleControl(name), useHasBorderWidthControl(name)]; 6806 return controls.some(Boolean); 6807 } 6808 6809 function useHasBorderColorControl(name) { 6810 const supports = getSupportedGlobalStylesPanels(name); 6811 return useSetting('border.color', name)[0] && supports.includes('borderColor'); 6812 } 6813 6814 function useHasBorderRadiusControl(name) { 6815 const supports = getSupportedGlobalStylesPanels(name); 6816 return useSetting('border.radius', name)[0] && supports.includes('borderRadius'); 6817 } 6818 6819 function useHasBorderStyleControl(name) { 6820 const supports = getSupportedGlobalStylesPanels(name); 6821 return useSetting('border.style', name)[0] && supports.includes('borderStyle'); 6822 } 6823 6824 function useHasBorderWidthControl(name) { 6825 const supports = getSupportedGlobalStylesPanels(name); 6826 return useSetting('border.width', name)[0] && supports.includes('borderWidth'); 6827 } 6828 6829 function BorderPanel(_ref) { 6830 let { 6831 name 6832 } = _ref; 6833 // To better reflect if the user has customized a value we need to 6834 // ensure the style value being checked is from the `user` origin. 6835 const [userBorderStyles] = useStyle('border', name, 'user'); 6836 6837 const createHasValueCallback = feature => () => !!(userBorderStyles !== null && userBorderStyles !== void 0 && userBorderStyles[feature]); 6838 6839 const createResetCallback = setStyle => () => setStyle(undefined); 6840 6841 const handleOnChange = setStyle => value => { 6842 setStyle(value || undefined); 6843 }; 6844 6845 const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({ 6846 availableUnits: useSetting('spacing.units')[0] || ['px', 'em', 'rem'] 6847 }); // Border width. 6848 6849 const showBorderWidth = useHasBorderWidthControl(name); 6850 const [borderWidthValue, setBorderWidth] = useStyle('border.width', name); // Border style. 6851 6852 const showBorderStyle = useHasBorderStyleControl(name); 6853 const [borderStyle, setBorderStyle] = useStyle('border.style', name); // When we set a border color or width ensure we have a style so the user 6854 // can see a visible border. 6855 6856 const handleOnChangeWithStyle = setStyle => value => { 6857 if (!!value && !borderStyle) { 6858 setBorderStyle('solid'); 6859 } 6860 6861 setStyle(value || undefined); 6862 }; // Border color. 6863 6864 6865 const showBorderColor = useHasBorderColorControl(name); 6866 const [borderColor, setBorderColor] = useStyle('border.color', name); 6867 const disableCustomColors = !useSetting('color.custom')[0]; 6868 const disableCustomGradients = !useSetting('color.customGradient')[0]; 6869 const borderColorSettings = [{ 6870 label: (0,external_wp_i18n_namespaceObject.__)('Color'), 6871 colors: useColorsPerOrigin(name), 6872 colorValue: borderColor, 6873 onColorChange: handleOnChangeWithStyle(setBorderColor), 6874 clearable: false 6875 }]; // Border radius. 6876 6877 const showBorderRadius = useHasBorderRadiusControl(name); 6878 const [borderRadiusValues, setBorderRadius] = useStyle('border.radius', name); 6879 6880 const hasBorderRadius = () => { 6881 const borderValues = userBorderStyles === null || userBorderStyles === void 0 ? void 0 : userBorderStyles.radius; 6882 6883 if (typeof borderValues === 'object') { 6884 return Object.entries(borderValues).some(Boolean); 6885 } 6886 6887 return !!borderValues; 6888 }; 6889 6890 const resetAll = () => { 6891 setBorderColor(undefined); 6892 setBorderRadius(undefined); 6893 setBorderStyle(undefined); 6894 setBorderWidth(undefined); 6895 }; 6896 6897 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanel, { 6898 label: (0,external_wp_i18n_namespaceObject.__)('Border'), 6899 resetAll: resetAll 6900 }, showBorderWidth && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 6901 className: "single-column", 6902 hasValue: createHasValueCallback('width'), 6903 label: (0,external_wp_i18n_namespaceObject.__)('Width'), 6904 onDeselect: createResetCallback(setBorderWidth), 6905 isShownByDefault: true 6906 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalUnitControl, { 6907 value: borderWidthValue, 6908 label: (0,external_wp_i18n_namespaceObject.__)('Width'), 6909 min: MIN_BORDER_WIDTH, 6910 onChange: handleOnChangeWithStyle(setBorderWidth), 6911 units: units 6912 })), showBorderStyle && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 6913 className: "single-column", 6914 hasValue: createHasValueCallback('style'), 6915 label: (0,external_wp_i18n_namespaceObject.__)('Style'), 6916 onDeselect: createResetCallback(setBorderStyle), 6917 isShownByDefault: true 6918 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalBorderStyleControl, { 6919 value: borderStyle, 6920 onChange: handleOnChange(setBorderStyle) 6921 })), showBorderColor && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 6922 hasValue: createHasValueCallback('color'), 6923 label: (0,external_wp_i18n_namespaceObject.__)('Color'), 6924 onDeselect: createResetCallback(setBorderColor), 6925 isShownByDefault: true 6926 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientSettingsDropdown, { 6927 __experimentalHasMultipleOrigins: true, 6928 __experimentalIsRenderedInSidebar: true, 6929 disableCustomColors: disableCustomColors, 6930 disableCustomGradients: disableCustomGradients, 6931 enableAlpha: true, 6932 settings: borderColorSettings 6933 })), showBorderRadius && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 6934 hasValue: hasBorderRadius, 6935 label: (0,external_wp_i18n_namespaceObject.__)('Radius'), 6936 onDeselect: createResetCallback(setBorderRadius), 6937 isShownByDefault: true 6938 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalBorderRadiusControl, { 6939 values: borderRadiusValues, 6940 onChange: handleOnChange(setBorderRadius) 6941 }))); 6942 } 6943 6944 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-utils.js 6945 /** 6946 * Internal dependencies 6947 */ 6948 6949 function useHasColorPanel(name) { 6950 const supports = getSupportedGlobalStylesPanels(name); 6951 return supports.includes('color') || supports.includes('backgroundColor') || supports.includes('background') || supports.includes('linkColor'); 6952 } 6953 6954 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/dimensions-panel.js 6955 6956 6957 /** 6958 * WordPress dependencies 6959 */ 6960 6961 6962 6963 /** 6964 * Internal dependencies 6965 */ 6966 6967 6968 const AXIAL_SIDES = ['horizontal', 'vertical']; 6969 function useHasDimensionsPanel(name) { 6970 const hasPadding = useHasPadding(name); 6971 const hasMargin = useHasMargin(name); 6972 const hasGap = useHasGap(name); 6973 return hasPadding || hasMargin || hasGap; 6974 } 6975 6976 function useHasPadding(name) { 6977 const supports = getSupportedGlobalStylesPanels(name); 6978 const [settings] = useSetting('spacing.padding', name); 6979 return settings && supports.includes('padding'); 6980 } 6981 6982 function useHasMargin(name) { 6983 const supports = getSupportedGlobalStylesPanels(name); 6984 const [settings] = useSetting('spacing.margin', name); 6985 return settings && supports.includes('margin'); 6986 } 6987 6988 function useHasGap(name) { 6989 const supports = getSupportedGlobalStylesPanels(name); 6990 const [settings] = useSetting('spacing.blockGap', name); // Do not show the gap control panel for block-level global styles 6991 // as they do not work on the frontend. 6992 // See: https://github.com/WordPress/gutenberg/pull/39845. 6993 // We can revert this condition when they're working again. 6994 6995 return !!name ? false : settings && supports.includes('--wp--style--block-gap'); 6996 } 6997 6998 function filterValuesBySides(values, sides) { 6999 if (!sides) { 7000 // If no custom side configuration all sides are opted into by default. 7001 return values; 7002 } // Only include sides opted into within filtered values. 7003 7004 7005 const filteredValues = {}; 7006 sides.forEach(side => { 7007 if (side === 'vertical') { 7008 filteredValues.top = values.top; 7009 filteredValues.bottom = values.bottom; 7010 } 7011 7012 if (side === 'horizontal') { 7013 filteredValues.left = values.left; 7014 filteredValues.right = values.right; 7015 } 7016 7017 filteredValues[side] = values[side]; 7018 }); 7019 return filteredValues; 7020 } 7021 7022 function splitStyleValue(value) { 7023 // Check for shorthand value ( a string value ). 7024 if (value && typeof value === 'string') { 7025 // Convert to value for individual sides for BoxControl. 7026 return { 7027 top: value, 7028 right: value, 7029 bottom: value, 7030 left: value 7031 }; 7032 } 7033 7034 return value; 7035 } 7036 7037 function DimensionsPanel(_ref) { 7038 let { 7039 name 7040 } = _ref; 7041 const showPaddingControl = useHasPadding(name); 7042 const showMarginControl = useHasMargin(name); 7043 const showGapControl = useHasGap(name); 7044 const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({ 7045 availableUnits: useSetting('spacing.units', name)[0] || ['%', 'px', 'em', 'rem', 'vw'] 7046 }); 7047 const [rawPadding, setRawPadding] = useStyle('spacing.padding', name); 7048 const paddingValues = splitStyleValue(rawPadding); 7049 const paddingSides = (0,external_wp_blockEditor_namespaceObject.__experimentalUseCustomSides)(name, 'padding'); 7050 const isAxialPadding = paddingSides && paddingSides.some(side => AXIAL_SIDES.includes(side)); 7051 7052 const setPaddingValues = newPaddingValues => { 7053 const padding = filterValuesBySides(newPaddingValues, paddingSides); 7054 setRawPadding(padding); 7055 }; 7056 7057 const resetPaddingValue = () => setPaddingValues({}); 7058 7059 const hasPaddingValue = () => !!paddingValues && Object.keys(paddingValues).length; 7060 7061 const [rawMargin, setRawMargin] = useStyle('spacing.margin', name); 7062 const marginValues = splitStyleValue(rawMargin); 7063 const marginSides = (0,external_wp_blockEditor_namespaceObject.__experimentalUseCustomSides)(name, 'margin'); 7064 const isAxialMargin = marginSides && marginSides.some(side => AXIAL_SIDES.includes(side)); 7065 7066 const setMarginValues = newMarginValues => { 7067 const margin = filterValuesBySides(newMarginValues, marginSides); 7068 setRawMargin(margin); 7069 }; 7070 7071 const resetMarginValue = () => setMarginValues({}); 7072 7073 const hasMarginValue = () => !!marginValues && Object.keys(marginValues).length; 7074 7075 const [gapValue, setGapValue] = useStyle('spacing.blockGap', name); 7076 7077 const resetGapValue = () => setGapValue(undefined); 7078 7079 const hasGapValue = () => !!gapValue; 7080 7081 const resetAll = () => { 7082 resetPaddingValue(); 7083 resetMarginValue(); 7084 resetGapValue(); 7085 }; 7086 7087 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanel, { 7088 label: (0,external_wp_i18n_namespaceObject.__)('Dimensions'), 7089 resetAll: resetAll 7090 }, showPaddingControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 7091 hasValue: hasPaddingValue, 7092 label: (0,external_wp_i18n_namespaceObject.__)('Padding'), 7093 onDeselect: resetPaddingValue, 7094 isShownByDefault: true 7095 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalBoxControl, { 7096 values: paddingValues, 7097 onChange: setPaddingValues, 7098 label: (0,external_wp_i18n_namespaceObject.__)('Padding'), 7099 sides: paddingSides, 7100 units: units, 7101 allowReset: false, 7102 splitOnAxis: isAxialPadding 7103 })), showMarginControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 7104 hasValue: hasMarginValue, 7105 label: (0,external_wp_i18n_namespaceObject.__)('Margin'), 7106 onDeselect: resetMarginValue, 7107 isShownByDefault: true 7108 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalBoxControl, { 7109 values: marginValues, 7110 onChange: setMarginValues, 7111 label: (0,external_wp_i18n_namespaceObject.__)('Margin'), 7112 sides: marginSides, 7113 units: units, 7114 allowReset: false, 7115 splitOnAxis: isAxialMargin 7116 })), showGapControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 7117 hasValue: hasGapValue, 7118 label: (0,external_wp_i18n_namespaceObject.__)('Block spacing'), 7119 onDeselect: resetGapValue, 7120 isShownByDefault: true 7121 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalUnitControl, { 7122 label: (0,external_wp_i18n_namespaceObject.__)('Block spacing'), 7123 __unstableInputWidth: "80px", 7124 min: 0, 7125 onChange: setGapValue, 7126 units: units, 7127 value: gapValue 7128 }))); 7129 } 7130 7131 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-panel.js 7132 7133 7134 /** 7135 * WordPress dependencies 7136 */ 7137 7138 7139 /** 7140 * Internal dependencies 7141 */ 7142 7143 7144 function useHasTypographyPanel(name) { 7145 const hasLineHeight = useHasLineHeightControl(name); 7146 const hasFontAppearance = useHasAppearanceControl(name); 7147 const hasLetterSpacing = useHasLetterSpacingControl(name); 7148 const supports = getSupportedGlobalStylesPanels(name); 7149 return hasLineHeight || hasFontAppearance || hasLetterSpacing || supports.includes('fontSize'); 7150 } 7151 7152 function useHasLineHeightControl(name) { 7153 const supports = getSupportedGlobalStylesPanels(name); 7154 return useSetting('typography.lineHeight', name)[0] && supports.includes('lineHeight'); 7155 } 7156 7157 function useHasAppearanceControl(name) { 7158 const supports = getSupportedGlobalStylesPanels(name); 7159 const hasFontStyles = useSetting('typography.fontStyle', name)[0] && supports.includes('fontStyle'); 7160 const hasFontWeights = useSetting('typography.fontWeight', name)[0] && supports.includes('fontWeight'); 7161 return hasFontStyles || hasFontWeights; 7162 } 7163 7164 function useHasLetterSpacingControl(name) { 7165 const supports = getSupportedGlobalStylesPanels(name); 7166 return useSetting('typography.letterSpacing', name)[0] && supports.includes('letterSpacing'); 7167 } 7168 7169 function TypographyPanel(_ref) { 7170 let { 7171 name, 7172 element 7173 } = _ref; 7174 const supports = getSupportedGlobalStylesPanels(name); 7175 const prefix = element === 'text' || !element ? '' : `elements.$element}.`; 7176 const [fontSizes] = useSetting('typography.fontSizes', name); 7177 const disableCustomFontSizes = !useSetting('typography.customFontSize', name)[0]; 7178 const [fontFamilies] = useSetting('typography.fontFamilies', name); 7179 const hasFontStyles = useSetting('typography.fontStyle', name)[0] && supports.includes('fontStyle'); 7180 const hasFontWeights = useSetting('typography.fontWeight', name)[0] && supports.includes('fontWeight'); 7181 const hasLineHeightEnabled = useHasLineHeightControl(name); 7182 const hasAppearanceControl = useHasAppearanceControl(name); 7183 const hasLetterSpacingControl = useHasLetterSpacingControl(name); 7184 const [fontFamily, setFontFamily] = useStyle(prefix + 'typography.fontFamily', name); 7185 const [fontSize, setFontSize] = useStyle(prefix + 'typography.fontSize', name); 7186 const [fontStyle, setFontStyle] = useStyle(prefix + 'typography.fontStyle', name); 7187 const [fontWeight, setFontWeight] = useStyle(prefix + 'typography.fontWeight', name); 7188 const [lineHeight, setLineHeight] = useStyle(prefix + 'typography.lineHeight', name); 7189 const [letterSpacing, setLetterSpacing] = useStyle(prefix + 'typography.letterSpacing', name); 7190 const [backgroundColor] = useStyle(prefix + 'color.background', name); 7191 const [gradientValue] = useStyle(prefix + 'color.gradient', name); 7192 const [color] = useStyle(prefix + 'color.text', name); 7193 const extraStyles = element === 'link' ? { 7194 textDecoration: 'underline' 7195 } : {}; 7196 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, { 7197 className: "edit-site-typography-panel", 7198 initialOpen: true 7199 }, (0,external_wp_element_namespaceObject.createElement)("div", { 7200 className: "edit-site-typography-panel__preview", 7201 style: { 7202 fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif', 7203 background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor, 7204 color, 7205 fontSize, 7206 fontStyle, 7207 fontWeight, 7208 letterSpacing, 7209 ...extraStyles 7210 } 7211 }, "Aa"), supports.includes('fontFamily') && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalFontFamilyControl, { 7212 fontFamilies: fontFamilies, 7213 value: fontFamily, 7214 onChange: setFontFamily 7215 }), supports.includes('fontSize') && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FontSizePicker, { 7216 value: fontSize, 7217 onChange: setFontSize, 7218 fontSizes: fontSizes, 7219 disableCustomFontSizes: disableCustomFontSizes 7220 }), hasLineHeightEnabled && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalSpacer, { 7221 marginBottom: 6 7222 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.LineHeightControl, { 7223 __nextHasNoMarginBottom: true, 7224 value: lineHeight, 7225 onChange: setLineHeight 7226 })), hasAppearanceControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalFontAppearanceControl, { 7227 value: { 7228 fontStyle, 7229 fontWeight 7230 }, 7231 onChange: _ref2 => { 7232 let { 7233 fontStyle: newFontStyle, 7234 fontWeight: newFontWeight 7235 } = _ref2; 7236 setFontStyle(newFontStyle); 7237 setFontWeight(newFontWeight); 7238 }, 7239 hasFontStyles: hasFontStyles, 7240 hasFontWeights: hasFontWeights 7241 }), hasLetterSpacingControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalLetterSpacingControl, { 7242 value: letterSpacing, 7243 onChange: setLetterSpacing 7244 })); 7245 } 7246 7247 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/context-menu.js 7248 7249 7250 /** 7251 * WordPress dependencies 7252 */ 7253 7254 7255 7256 /** 7257 * Internal dependencies 7258 */ 7259 7260 7261 7262 7263 7264 7265 7266 function ContextMenu(_ref) { 7267 let { 7268 name, 7269 parentMenu = '' 7270 } = _ref; 7271 const hasTypographyPanel = useHasTypographyPanel(name); 7272 const hasColorPanel = useHasColorPanel(name); 7273 const hasBorderPanel = useHasBorderPanel(name); 7274 const hasDimensionsPanel = useHasDimensionsPanel(name); 7275 const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel; 7276 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, null, hasTypographyPanel && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, { 7277 icon: library_typography, 7278 path: parentMenu + '/typography' 7279 }, (0,external_wp_i18n_namespaceObject.__)('Typography')), hasColorPanel && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, { 7280 icon: library_color, 7281 path: parentMenu + '/colors' 7282 }, (0,external_wp_i18n_namespaceObject.__)('Colors')), hasLayoutPanel && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, { 7283 icon: library_layout, 7284 path: parentMenu + '/layout' 7285 }, (0,external_wp_i18n_namespaceObject.__)('Layout'))); 7286 } 7287 7288 /* harmony default export */ var context_menu = (ContextMenu); 7289 7290 ;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/utils.js 7291 /** 7292 * External dependencies 7293 */ 7294 7295 /** 7296 * Internal dependencies 7297 */ 7298 7299 function generateBoxRules(style, options, path, ruleKey) { 7300 const boxStyle = (0,external_lodash_namespaceObject.get)(style, path); 7301 7302 if (!boxStyle) { 7303 return []; 7304 } 7305 7306 const rules = []; 7307 7308 if (typeof boxStyle === 'string') { 7309 rules.push({ 7310 selector: options.selector, 7311 key: ruleKey, 7312 value: boxStyle 7313 }); 7314 } else { 7315 const sideRules = ['top', 'right', 'bottom', 'left'].reduce((acc, side) => { 7316 const value = (0,external_lodash_namespaceObject.get)(boxStyle, [side]); 7317 7318 if (value) { 7319 acc.push({ 7320 selector: options.selector, 7321 key: `$ruleKey}${(0,external_lodash_namespaceObject.upperFirst)(side)}`, 7322 value 7323 }); 7324 } 7325 7326 return acc; 7327 }, []); 7328 rules.push(...sideRules); 7329 } 7330 7331 return rules; 7332 } 7333 7334 ;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/padding.js 7335 /** 7336 * Internal dependencies 7337 */ 7338 7339 const padding = { 7340 name: 'padding', 7341 generate: (style, options) => { 7342 return generateBoxRules(style, options, ['spacing', 'padding'], 'padding'); 7343 } 7344 }; 7345 /* harmony default export */ var styles_padding = (padding); 7346 7347 ;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/margin.js 7348 /** 7349 * Internal dependencies 7350 */ 7351 7352 const margin = { 7353 name: 'margin', 7354 generate: (style, options) => { 7355 return generateBoxRules(style, options, ['spacing', 'margin'], 'margin'); 7356 } 7357 }; 7358 /* harmony default export */ var styles_margin = (margin); 7359 7360 ;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/index.js 7361 /** 7362 * Internal dependencies 7363 */ 7364 7365 7366 const styleDefinitions = [styles_margin, styles_padding]; 7367 7368 ;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/index.js 7369 /** 7370 * External dependencies 7371 */ 7372 7373 /** 7374 * Internal dependencies 7375 */ 7376 7377 7378 /** 7379 * Generates a stylesheet for a given style object and selector. 7380 * 7381 * @param style Style object. 7382 * @param options Options object with settings to adjust how the styles are generated. 7383 * 7384 * @return generated stylesheet. 7385 */ 7386 7387 function generate(style, options) { 7388 const rules = getCSSRules(style, options); 7389 const groupedRules = groupBy(rules, 'selector'); 7390 const selectorRules = Object.keys(groupedRules).reduce((acc, subSelector) => { 7391 acc.push(`$subSelector} { $groupedRules[subSelector].map(rule => `$kebabCase(rule.key)}: $rule.value};`).join(' ')} }`); 7392 return acc; 7393 }, []); 7394 return selectorRules.join('\n'); 7395 } 7396 /** 7397 * Returns a JSON representation of the generated CSS rules. 7398 * 7399 * @param style Style object. 7400 * @param options Options object with settings to adjust how the styles are generated. 7401 * 7402 * @return generated styles. 7403 */ 7404 7405 function getCSSRules(style, options) { 7406 const rules = []; 7407 styleDefinitions.forEach(definition => { 7408 rules.push(...definition.generate(style, options)); 7409 }); 7410 return rules; 7411 } 7412 7413 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/use-global-styles-output.js 7414 7415 7416 /** 7417 * External dependencies 7418 */ 7419 7420 /** 7421 * WordPress dependencies 7422 */ 7423 7424 7425 7426 7427 7428 /** 7429 * Internal dependencies 7430 */ 7431 7432 /** 7433 * Internal dependencies 7434 */ 7435 7436 7437 7438 7439 function compileStyleValue(uncompiledValue) { 7440 const VARIABLE_REFERENCE_PREFIX = 'var:'; 7441 const VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|'; 7442 const VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--'; 7443 7444 if ((0,external_lodash_namespaceObject.startsWith)(uncompiledValue, VARIABLE_REFERENCE_PREFIX)) { 7445 const variable = uncompiledValue.slice(VARIABLE_REFERENCE_PREFIX.length).split(VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE).join(VARIABLE_PATH_SEPARATOR_TOKEN_STYLE); 7446 return `var(--wp--$variable})`; 7447 } 7448 7449 return uncompiledValue; 7450 } 7451 /** 7452 * Transform given preset tree into a set of style declarations. 7453 * 7454 * @param {Object} blockPresets 7455 * 7456 * @return {Array} An array of style declarations. 7457 */ 7458 7459 7460 function getPresetsDeclarations() { 7461 let blockPresets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 7462 return (0,external_lodash_namespaceObject.reduce)(PRESET_METADATA, (declarations, _ref) => { 7463 let { 7464 path, 7465 valueKey, 7466 valueFunc, 7467 cssVarInfix 7468 } = _ref; 7469 const presetByOrigin = (0,external_lodash_namespaceObject.get)(blockPresets, path, []); 7470 ['default', 'theme', 'custom'].forEach(origin => { 7471 if (presetByOrigin[origin]) { 7472 presetByOrigin[origin].forEach(value => { 7473 if (valueKey) { 7474 declarations.push(`--wp--preset--$cssVarInfix}--${(0,external_lodash_namespaceObject.kebabCase)(value.slug)}: $value[valueKey]}`); 7475 } else if (valueFunc && typeof valueFunc === 'function') { 7476 declarations.push(`--wp--preset--$cssVarInfix}--${(0,external_lodash_namespaceObject.kebabCase)(value.slug)}: $valueFunc(value)}`); 7477 } 7478 }); 7479 } 7480 }); 7481 return declarations; 7482 }, []); 7483 } 7484 /** 7485 * Transform given preset tree into a set of preset class declarations. 7486 * 7487 * @param {string} blockSelector 7488 * @param {Object} blockPresets 7489 * @return {string} CSS declarations for the preset classes. 7490 */ 7491 7492 7493 function getPresetsClasses(blockSelector) { 7494 let blockPresets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 7495 return (0,external_lodash_namespaceObject.reduce)(PRESET_METADATA, (declarations, _ref2) => { 7496 let { 7497 path, 7498 cssVarInfix, 7499 classes 7500 } = _ref2; 7501 7502 if (!classes) { 7503 return declarations; 7504 } 7505 7506 const presetByOrigin = (0,external_lodash_namespaceObject.get)(blockPresets, path, []); 7507 ['default', 'theme', 'custom'].forEach(origin => { 7508 if (presetByOrigin[origin]) { 7509 presetByOrigin[origin].forEach(_ref3 => { 7510 let { 7511 slug 7512 } = _ref3; 7513 classes.forEach(_ref4 => { 7514 let { 7515 classSuffix, 7516 propertyName 7517 } = _ref4; 7518 const classSelectorToUse = `.has-${(0,external_lodash_namespaceObject.kebabCase)(slug)}-$classSuffix}`; 7519 const selectorToUse = blockSelector.split(',') // Selector can be "h1, h2, h3" 7520 .map(selector => `$selector}$classSelectorToUse}`).join(','); 7521 const value = `var(--wp--preset--$cssVarInfix}--${(0,external_lodash_namespaceObject.kebabCase)(slug)})`; 7522 declarations += `$selectorToUse}{$propertyName}: $value} !important;}`; 7523 }); 7524 }); 7525 } 7526 }); 7527 return declarations; 7528 }, ''); 7529 } 7530 7531 function getPresetsSvgFilters() { 7532 let blockPresets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 7533 return PRESET_METADATA.filter( // Duotone are the only type of filters for now. 7534 metadata => metadata.path.at(-1) === 'duotone').flatMap(metadata => { 7535 const presetByOrigin = (0,external_lodash_namespaceObject.get)(blockPresets, metadata.path, {}); 7536 return ['default', 'theme'].filter(origin => presetByOrigin[origin]).flatMap(origin => presetByOrigin[origin].map(preset => (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstablePresetDuotoneFilter, { 7537 preset: preset, 7538 key: preset.slug 7539 }))); 7540 }); 7541 } 7542 7543 function flattenTree() { 7544 let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 7545 let prefix = arguments.length > 1 ? arguments[1] : undefined; 7546 let token = arguments.length > 2 ? arguments[2] : undefined; 7547 let result = []; 7548 Object.keys(input).forEach(key => { 7549 const newKey = prefix + (0,external_lodash_namespaceObject.kebabCase)(key.replace('/', '-')); 7550 const newLeaf = input[key]; 7551 7552 if (newLeaf instanceof Object) { 7553 const newPrefix = newKey + token; 7554 result = [...result, ...flattenTree(newLeaf, newPrefix, token)]; 7555 } else { 7556 result.push(`$newKey}: $newLeaf}`); 7557 } 7558 }); 7559 return result; 7560 } 7561 /** 7562 * Transform given style tree into a set of style declarations. 7563 * 7564 * @param {Object} blockStyles Block styles. 7565 * 7566 * @return {Array} An array of style declarations. 7567 */ 7568 7569 7570 function getStylesDeclarations() { 7571 let blockStyles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 7572 const output = (0,external_lodash_namespaceObject.reduce)(external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY, (declarations, _ref5, key) => { 7573 let { 7574 value, 7575 properties, 7576 useEngine 7577 } = _ref5; 7578 const pathToValue = value; 7579 7580 if ((0,external_lodash_namespaceObject.first)(pathToValue) === 'elements' || useEngine) { 7581 return declarations; 7582 } 7583 7584 const styleValue = (0,external_lodash_namespaceObject.get)(blockStyles, pathToValue); 7585 7586 if (!!properties && !(0,external_lodash_namespaceObject.isString)(styleValue)) { 7587 Object.entries(properties).forEach(entry => { 7588 const [name, prop] = entry; 7589 7590 if (!(0,external_lodash_namespaceObject.get)(styleValue, [prop], false)) { 7591 // Do not create a declaration 7592 // for sub-properties that don't have any value. 7593 return; 7594 } 7595 7596 const cssProperty = (0,external_lodash_namespaceObject.kebabCase)(name); 7597 declarations.push(`$cssProperty}: $compileStyleValue((0,external_lodash_namespaceObject.get)(styleValue, [prop]))}`); 7598 }); 7599 } else if ((0,external_lodash_namespaceObject.get)(blockStyles, pathToValue, false)) { 7600 const cssProperty = key.startsWith('--') ? key : (0,external_lodash_namespaceObject.kebabCase)(key); 7601 declarations.push(`$cssProperty}: $compileStyleValue((0,external_lodash_namespaceObject.get)(blockStyles, pathToValue))}`); 7602 } 7603 7604 return declarations; 7605 }, []); // The goal is to move everything to server side generated engine styles 7606 // This is temporary as we absorb more and more styles into the engine. 7607 7608 const extraRules = getCSSRules(blockStyles, { 7609 selector: 'self' 7610 }); 7611 extraRules.forEach(rule => { 7612 if (rule.selector !== 'self') { 7613 throw "This style can't be added as inline style"; 7614 } 7615 7616 const cssProperty = rule.key.startsWith('--') ? rule.key : (0,external_lodash_namespaceObject.kebabCase)(rule.key); 7617 output.push(`$cssProperty}: $compileStyleValue(rule.value)}`); 7618 }); 7619 return output; 7620 } 7621 7622 const getNodesWithStyles = (tree, blockSelectors) => { 7623 var _tree$styles, _tree$styles2; 7624 7625 const nodes = []; 7626 7627 if (!(tree !== null && tree !== void 0 && tree.styles)) { 7628 return nodes; 7629 } 7630 7631 const pickStyleKeys = treeToPickFrom => (0,external_lodash_namespaceObject.pickBy)(treeToPickFrom, (value, key) => ['border', 'color', 'spacing', 'typography', 'filter'].includes(key)); // Top-level. 7632 7633 7634 const styles = pickStyleKeys(tree.styles); 7635 7636 if (!!styles) { 7637 nodes.push({ 7638 styles, 7639 selector: ROOT_BLOCK_SELECTOR 7640 }); 7641 } 7642 7643 (0,external_lodash_namespaceObject.forEach)((_tree$styles = tree.styles) === null || _tree$styles === void 0 ? void 0 : _tree$styles.elements, (value, key) => { 7644 if (!!value && !!external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[key]) { 7645 nodes.push({ 7646 styles: value, 7647 selector: external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[key] 7648 }); 7649 } 7650 }); // Iterate over blocks: they can have styles & elements. 7651 7652 (0,external_lodash_namespaceObject.forEach)((_tree$styles2 = tree.styles) === null || _tree$styles2 === void 0 ? void 0 : _tree$styles2.blocks, (node, blockName) => { 7653 var _blockSelectors$block; 7654 7655 const blockStyles = pickStyleKeys(node); 7656 7657 if (!!blockStyles && !!(blockSelectors !== null && blockSelectors !== void 0 && (_blockSelectors$block = blockSelectors[blockName]) !== null && _blockSelectors$block !== void 0 && _blockSelectors$block.selector)) { 7658 nodes.push({ 7659 styles: blockStyles, 7660 selector: blockSelectors[blockName].selector, 7661 duotoneSelector: blockSelectors[blockName].duotoneSelector 7662 }); 7663 } 7664 7665 (0,external_lodash_namespaceObject.forEach)(node === null || node === void 0 ? void 0 : node.elements, (value, elementName) => { 7666 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])) { 7667 nodes.push({ 7668 styles: value, 7669 selector: blockSelectors[blockName].selector.split(',').map(sel => sel + ' ' + external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[elementName]).join(',') 7670 }); 7671 } 7672 }); 7673 }); 7674 return nodes; 7675 }; 7676 const getNodesWithSettings = (tree, blockSelectors) => { 7677 var _tree$settings, _tree$settings2; 7678 7679 const nodes = []; 7680 7681 if (!(tree !== null && tree !== void 0 && tree.settings)) { 7682 return nodes; 7683 } 7684 7685 const pickPresets = treeToPickFrom => { 7686 const presets = {}; 7687 PRESET_METADATA.forEach(_ref6 => { 7688 let { 7689 path 7690 } = _ref6; 7691 const value = (0,external_lodash_namespaceObject.get)(treeToPickFrom, path, false); 7692 7693 if (value !== false) { 7694 (0,external_lodash_namespaceObject.set)(presets, path, value); 7695 } 7696 }); 7697 return presets; 7698 }; // Top-level. 7699 7700 7701 const presets = pickPresets(tree.settings); 7702 const custom = (_tree$settings = tree.settings) === null || _tree$settings === void 0 ? void 0 : _tree$settings.custom; 7703 7704 if (!(0,external_lodash_namespaceObject.isEmpty)(presets) || !!custom) { 7705 nodes.push({ 7706 presets, 7707 custom, 7708 selector: ROOT_BLOCK_SELECTOR 7709 }); 7710 } // Blocks. 7711 7712 7713 (0,external_lodash_namespaceObject.forEach)((_tree$settings2 = tree.settings) === null || _tree$settings2 === void 0 ? void 0 : _tree$settings2.blocks, (node, blockName) => { 7714 const blockPresets = pickPresets(node); 7715 const blockCustom = node.custom; 7716 7717 if (!(0,external_lodash_namespaceObject.isEmpty)(blockPresets) || !!blockCustom) { 7718 nodes.push({ 7719 presets: blockPresets, 7720 custom: blockCustom, 7721 selector: blockSelectors[blockName].selector 7722 }); 7723 } 7724 }); 7725 return nodes; 7726 }; 7727 const toCustomProperties = (tree, blockSelectors) => { 7728 const settings = getNodesWithSettings(tree, blockSelectors); 7729 let ruleset = ''; 7730 settings.forEach(_ref7 => { 7731 let { 7732 presets, 7733 custom, 7734 selector 7735 } = _ref7; 7736 const declarations = getPresetsDeclarations(presets); 7737 const customProps = flattenTree(custom, '--wp--custom--', '--'); 7738 7739 if (customProps.length > 0) { 7740 declarations.push(...customProps); 7741 } 7742 7743 if (declarations.length > 0) { 7744 ruleset = ruleset + `$selector}{$declarations.join(';')};}`; 7745 } 7746 }); 7747 return ruleset; 7748 }; 7749 const toStyles = (tree, blockSelectors) => { 7750 const nodesWithStyles = getNodesWithStyles(tree, blockSelectors); 7751 const nodesWithSettings = getNodesWithSettings(tree, blockSelectors); 7752 /* 7753 * Reset default browser margin on the root body element. 7754 * This is set on the root selector **before** generating the ruleset 7755 * from the `theme.json`. This is to ensure that if the `theme.json` declares 7756 * `margin` in its `spacing` declaration for the `body` element then these 7757 * user-generated values take precedence in the CSS cascade. 7758 * @link https://github.com/WordPress/gutenberg/issues/36147. 7759 */ 7760 7761 let ruleset = 'body {margin: 0;}'; 7762 nodesWithStyles.forEach(_ref8 => { 7763 let { 7764 selector, 7765 duotoneSelector, 7766 styles 7767 } = _ref8; 7768 const duotoneStyles = {}; 7769 7770 if (styles !== null && styles !== void 0 && styles.filter) { 7771 duotoneStyles.filter = styles.filter; 7772 delete styles.filter; 7773 } // Process duotone styles (they use color.__experimentalDuotone selector). 7774 7775 7776 if (duotoneSelector) { 7777 const duotoneDeclarations = getStylesDeclarations(duotoneStyles); 7778 7779 if (duotoneDeclarations.length === 0) { 7780 return; 7781 } 7782 7783 ruleset = ruleset + `$duotoneSelector}{$duotoneDeclarations.join(';')};}`; 7784 } // Process the remaning block styles (they use either normal block class or __experimentalSelector). 7785 7786 7787 const declarations = getStylesDeclarations(styles); 7788 7789 if (declarations.length === 0) { 7790 return; 7791 } 7792 7793 ruleset = ruleset + `$selector}{$declarations.join(';')};}`; 7794 }); 7795 nodesWithSettings.forEach(_ref9 => { 7796 let { 7797 selector, 7798 presets 7799 } = _ref9; 7800 7801 if (ROOT_BLOCK_SELECTOR === selector) { 7802 // Do not add extra specificity for top-level classes. 7803 selector = ''; 7804 } 7805 7806 const classes = getPresetsClasses(selector, presets); 7807 7808 if (!(0,external_lodash_namespaceObject.isEmpty)(classes)) { 7809 ruleset = ruleset + classes; 7810 } 7811 }); 7812 return ruleset; 7813 }; 7814 function toSvgFilters(tree, blockSelectors) { 7815 const nodesWithSettings = getNodesWithSettings(tree, blockSelectors); 7816 return nodesWithSettings.flatMap(_ref10 => { 7817 let { 7818 presets 7819 } = _ref10; 7820 return getPresetsSvgFilters(presets); 7821 }); 7822 } 7823 7824 const getBlockSelectors = blockTypes => { 7825 const result = {}; 7826 blockTypes.forEach(blockType => { 7827 var _blockType$supports$_, _blockType$supports, _blockType$supports$c, _blockType$supports2, _blockType$supports2$; 7828 7829 const name = blockType.name; 7830 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('/', '-'); 7831 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; 7832 result[name] = { 7833 name, 7834 selector, 7835 duotoneSelector 7836 }; 7837 }); 7838 return result; 7839 }; 7840 7841 function useGlobalStylesOutput() { 7842 const [stylesheets, setStylesheets] = (0,external_wp_element_namespaceObject.useState)([]); 7843 const [settings, setSettings] = (0,external_wp_element_namespaceObject.useState)({}); 7844 const [svgFilters, setSvgFilters] = (0,external_wp_element_namespaceObject.useState)({}); 7845 const { 7846 merged: mergedConfig 7847 } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext); 7848 (0,external_wp_element_namespaceObject.useEffect)(() => { 7849 if (!(mergedConfig !== null && mergedConfig !== void 0 && mergedConfig.styles) || !(mergedConfig !== null && mergedConfig !== void 0 && mergedConfig.settings)) { 7850 return; 7851 } 7852 7853 const blockSelectors = getBlockSelectors((0,external_wp_blocks_namespaceObject.getBlockTypes)()); 7854 const customProperties = toCustomProperties(mergedConfig, blockSelectors); 7855 const globalStyles = toStyles(mergedConfig, blockSelectors); 7856 const filters = toSvgFilters(mergedConfig, blockSelectors); 7857 setStylesheets([{ 7858 css: customProperties, 7859 isGlobalStyles: true 7860 }, { 7861 css: globalStyles, 7862 isGlobalStyles: true 7863 }]); 7864 setSettings(mergedConfig.settings); 7865 setSvgFilters(filters); 7866 }, [mergedConfig]); 7867 return [stylesheets, settings, svgFilters]; 7868 } 7869 7870 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview.js 7871 7872 7873 /** 7874 * WordPress dependencies 7875 */ 7876 7877 7878 7879 7880 /** 7881 * Internal dependencies 7882 */ 7883 7884 7885 7886 const firstFrame = { 7887 start: { 7888 opacity: 1, 7889 display: 'block' 7890 }, 7891 hover: { 7892 opacity: 0, 7893 display: 'none' 7894 } 7895 }; 7896 const secondFrame = { 7897 hover: { 7898 opacity: 1, 7899 display: 'block' 7900 }, 7901 start: { 7902 opacity: 0, 7903 display: 'none' 7904 } 7905 }; 7906 const normalizedWidth = 248; 7907 const normalizedHeight = 152; 7908 const normalizedColorSwatchSize = 32; 7909 7910 const StylesPreview = _ref => { 7911 let { 7912 label, 7913 isFocused 7914 } = _ref; 7915 const [fontWeight] = useStyle('typography.fontWeight'); 7916 const [fontFamily = 'serif'] = useStyle('typography.fontFamily'); 7917 const [headingFontFamily = fontFamily] = useStyle('elements.h1.typography.fontFamily'); 7918 const [headingFontWeight = fontWeight] = useStyle('elements.h1.typography.fontWeight'); 7919 const [textColor = 'black'] = useStyle('color.text'); 7920 const [headingColor = textColor] = useStyle('elements.h1.color.text'); 7921 const [linkColor = 'blue'] = useStyle('elements.link.color.text'); 7922 const [backgroundColor = 'white'] = useStyle('color.background'); 7923 const [gradientValue] = useStyle('color.gradient'); 7924 const [styles] = useGlobalStylesOutput(); 7925 const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)(); 7926 const [coreColors] = useSetting('color.palette.core'); 7927 const [themeColors] = useSetting('color.palette.theme'); 7928 const [customColors] = useSetting('color.palette.custom'); 7929 const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false); 7930 const [containerResizeListener, { 7931 width 7932 }] = (0,external_wp_compose_namespaceObject.useResizeObserver)(); 7933 const ratio = width ? width / normalizedWidth : 1; 7934 const paletteColors = (themeColors !== null && themeColors !== void 0 ? themeColors : []).concat(customColors !== null && customColors !== void 0 ? customColors : []).concat(coreColors !== null && coreColors !== void 0 ? coreColors : []); 7935 const highlightedColors = paletteColors.filter( // we exclude these two colors because they are already visible in the preview. 7936 _ref2 => { 7937 let { 7938 color 7939 } = _ref2; 7940 return color !== backgroundColor && color !== headingColor; 7941 }).slice(0, 2); 7942 return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableIframe, { 7943 className: "edit-site-global-styles-preview__iframe", 7944 head: (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, { 7945 styles: styles 7946 }), 7947 style: { 7948 height: normalizedHeight * ratio, 7949 visibility: !width ? 'hidden' : 'visible' 7950 }, 7951 onMouseEnter: () => setIsHovered(true), 7952 onMouseLeave: () => setIsHovered(false), 7953 tabIndex: -1 7954 }, containerResizeListener, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, { 7955 style: { 7956 height: normalizedHeight * ratio, 7957 width: '100%', 7958 background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor, 7959 cursor: 'pointer' 7960 }, 7961 initial: "start", 7962 animate: (isHovered || isFocused) && !disableMotion ? 'hover' : 'start' 7963 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, { 7964 variants: firstFrame, 7965 style: { 7966 height: '100%', 7967 overflow: 'hidden' 7968 } 7969 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 7970 spacing: 10 * ratio, 7971 justify: "center", 7972 style: { 7973 height: '100%', 7974 overflow: 'hidden' 7975 } 7976 }, (0,external_wp_element_namespaceObject.createElement)("div", { 7977 style: { 7978 fontFamily: headingFontFamily, 7979 fontSize: 65 * ratio, 7980 color: headingColor, 7981 fontWeight: headingFontWeight 7982 } 7983 }, "Aa"), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, { 7984 spacing: 4 * ratio 7985 }, highlightedColors.map(_ref3 => { 7986 let { 7987 slug, 7988 color 7989 } = _ref3; 7990 return (0,external_wp_element_namespaceObject.createElement)("div", { 7991 key: slug, 7992 style: { 7993 height: normalizedColorSwatchSize * ratio, 7994 width: normalizedColorSwatchSize * ratio, 7995 background: color, 7996 borderRadius: normalizedColorSwatchSize * ratio / 2 7997 } 7998 }); 7999 })))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, { 8000 variants: secondFrame, 8001 style: { 8002 height: '100%', 8003 overflow: 'hidden' 8004 } 8005 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, { 8006 spacing: 3 * ratio, 8007 justify: "center", 8008 style: { 8009 height: '100%', 8010 overflow: 'hidden', 8011 padding: 10 * ratio, 8012 boxSizing: 'border-box' 8013 } 8014 }, label && (0,external_wp_element_namespaceObject.createElement)("div", { 8015 style: { 8016 fontSize: 35 * ratio, 8017 fontFamily: headingFontFamily, 8018 color: headingColor, 8019 fontWeight: headingFontWeight, 8020 lineHeight: '1em' 8021 } 8022 }, label), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8023 spacing: 2 * ratio, 8024 justify: "flex-start" 8025 }, (0,external_wp_element_namespaceObject.createElement)("div", { 8026 style: { 8027 fontFamily, 8028 fontSize: 24 * ratio, 8029 color: textColor 8030 } 8031 }, "Aa"), (0,external_wp_element_namespaceObject.createElement)("div", { 8032 style: { 8033 fontFamily, 8034 fontSize: 24 * ratio, 8035 color: linkColor 8036 } 8037 }, "Aa")), paletteColors && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8038 spacing: 0 8039 }, paletteColors.slice(0, 4).map((_ref4, index) => { 8040 let { 8041 color 8042 } = _ref4; 8043 return (0,external_wp_element_namespaceObject.createElement)("div", { 8044 key: index, 8045 style: { 8046 height: 10 * ratio, 8047 width: 30 * ratio, 8048 background: color, 8049 flexGrow: 1 8050 } 8051 }); 8052 })))))); 8053 }; 8054 8055 /* harmony default export */ var preview = (StylesPreview); 8056 8057 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-root.js 8058 8059 8060 /** 8061 * WordPress dependencies 8062 */ 8063 8064 8065 8066 8067 8068 /** 8069 * Internal dependencies 8070 */ 8071 8072 8073 8074 8075 8076 8077 function ScreenRoot() { 8078 const { 8079 variations 8080 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 8081 return { 8082 variations: select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations() 8083 }; 8084 }, []); 8085 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, { 8086 size: "small" 8087 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, { 8088 spacing: 2 8089 }, (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, { 8090 path: "/variations" 8091 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8092 justify: "space-between" 8093 }, (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, { 8094 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right 8095 }))))), (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, { 8096 path: "/blocks" 8097 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8098 justify: "space-between" 8099 }, (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, { 8100 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right 8101 })))))); 8102 } 8103 8104 /* harmony default export */ var screen_root = (ScreenRoot); 8105 8106 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/header.js 8107 8108 8109 /** 8110 * WordPress dependencies 8111 */ 8112 8113 8114 8115 /** 8116 * Internal dependencies 8117 */ 8118 8119 8120 8121 function ScreenHeader(_ref) { 8122 let { 8123 title, 8124 description 8125 } = _ref; 8126 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, { 8127 spacing: 2 8128 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8129 spacing: 2 8130 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalView, null, (0,external_wp_element_namespaceObject.createElement)(NavigationBackButton, { 8131 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left, 8132 size: "small", 8133 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous view') 8134 })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalSpacer, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, { 8135 level: 5 8136 }, title))), description && (0,external_wp_element_namespaceObject.createElement)("p", { 8137 className: "edit-site-global-styles-header__description" 8138 }, description)); 8139 } 8140 8141 /* harmony default export */ var header = (ScreenHeader); 8142 8143 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-block-list.js 8144 8145 8146 /** 8147 * WordPress dependencies 8148 */ 8149 8150 8151 8152 8153 8154 8155 8156 8157 /** 8158 * Internal dependencies 8159 */ 8160 8161 8162 8163 8164 8165 8166 8167 8168 function useSortedBlockTypes() { 8169 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, 8170 // because third party blocks can be registered earlier than 8171 // the core blocks (usually by using the `init` action), 8172 // thus affecting the display order. 8173 // We don't sort reusable blocks as they are handled differently. 8174 8175 const groupByType = (blocks, block) => { 8176 const { 8177 core, 8178 noncore 8179 } = blocks; 8180 const type = block.name.startsWith('core/') ? core : noncore; 8181 type.push(block); 8182 return blocks; 8183 }; 8184 8185 const { 8186 core: coreItems, 8187 noncore: nonCoreItems 8188 } = blockItems.reduce(groupByType, { 8189 core: [], 8190 noncore: [] 8191 }); 8192 return [...coreItems, ...nonCoreItems]; 8193 } 8194 8195 function BlockMenuItem(_ref) { 8196 let { 8197 block 8198 } = _ref; 8199 const hasTypographyPanel = useHasTypographyPanel(block.name); 8200 const hasColorPanel = useHasColorPanel(block.name); 8201 const hasBorderPanel = useHasBorderPanel(block.name); 8202 const hasDimensionsPanel = useHasDimensionsPanel(block.name); 8203 const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel; 8204 const hasBlockMenuItem = hasTypographyPanel || hasColorPanel || hasLayoutPanel; 8205 8206 if (!hasBlockMenuItem) { 8207 return null; 8208 } 8209 8210 return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, { 8211 path: '/blocks/' + block.name 8212 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8213 justify: "flex-start" 8214 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockIcon, { 8215 icon: block.icon 8216 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, block.title))); 8217 } 8218 8219 function ScreenBlockList() { 8220 const sortedBlockTypes = useSortedBlockTypes(); 8221 const [filterValue, setFilterValue] = (0,external_wp_element_namespaceObject.useState)(''); 8222 const debouncedSpeak = (0,external_wp_compose_namespaceObject.useDebounce)(external_wp_a11y_namespaceObject.speak, 500); 8223 const isMatchingSearchTerm = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blocks_namespaceObject.store).isMatchingSearchTerm, []); 8224 const filteredBlockTypes = (0,external_wp_element_namespaceObject.useMemo)(() => { 8225 if (!filterValue) { 8226 return sortedBlockTypes; 8227 } 8228 8229 return sortedBlockTypes.filter(blockType => isMatchingSearchTerm(blockType, filterValue)); 8230 }, [filterValue, sortedBlockTypes, isMatchingSearchTerm]); 8231 const blockTypesListRef = (0,external_wp_element_namespaceObject.useRef)(); // Announce search results on change 8232 8233 (0,external_wp_element_namespaceObject.useEffect)(() => { 8234 if (!filterValue) { 8235 return; 8236 } // We extract the results from the wrapper div's `ref` because 8237 // filtered items can contain items that will eventually not 8238 // render and there is no reliable way to detect when a child 8239 // will return `null`. 8240 // TODO: We should find a better way of handling this as it's 8241 // fragile and depends on the number of rendered elements of `BlockMenuItem`, 8242 // which is now one. 8243 // @see https://github.com/WordPress/gutenberg/pull/39117#discussion_r816022116 8244 8245 8246 const count = blockTypesListRef.current.childElementCount; 8247 const resultsFoundMessage = (0,external_wp_i18n_namespaceObject.sprintf)( 8248 /* translators: %d: number of results. */ 8249 (0,external_wp_i18n_namespaceObject._n)('%d result found.', '%d results found.', count), count); 8250 debouncedSpeak(resultsFoundMessage, count); 8251 }, [filterValue, debouncedSpeak]); 8252 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 8253 title: (0,external_wp_i18n_namespaceObject.__)('Blocks'), 8254 description: (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of specific blocks and for the whole site.') 8255 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SearchControl, { 8256 className: "edit-site-block-types-search", 8257 onChange: setFilterValue, 8258 value: filterValue, 8259 label: (0,external_wp_i18n_namespaceObject.__)('Search for blocks'), 8260 placeholder: (0,external_wp_i18n_namespaceObject.__)('Search') 8261 }), (0,external_wp_element_namespaceObject.createElement)("div", { 8262 ref: blockTypesListRef, 8263 className: "edit-site-block-types-item-list" 8264 }, filteredBlockTypes.map(block => (0,external_wp_element_namespaceObject.createElement)(BlockMenuItem, { 8265 block: block, 8266 key: 'menu-itemblock-' + block.name 8267 })))); 8268 } 8269 8270 /* harmony default export */ var screen_block_list = (ScreenBlockList); 8271 8272 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-block.js 8273 8274 8275 /** 8276 * WordPress dependencies 8277 */ 8278 8279 /** 8280 * Internal dependencies 8281 */ 8282 8283 8284 8285 8286 function ScreenBlock(_ref) { 8287 let { 8288 name 8289 } = _ref; 8290 const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(name); 8291 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 8292 title: blockType.title 8293 }), (0,external_wp_element_namespaceObject.createElement)(context_menu, { 8294 parentMenu: '/blocks/' + name, 8295 name: name 8296 })); 8297 } 8298 8299 /* harmony default export */ var screen_block = (ScreenBlock); 8300 8301 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/subtitle.js 8302 8303 8304 /** 8305 * WordPress dependencies 8306 */ 8307 8308 8309 function Subtitle(_ref) { 8310 let { 8311 children 8312 } = _ref; 8313 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, { 8314 className: "edit-site-global-styles-subtitle", 8315 level: 2 8316 }, children); 8317 } 8318 8319 /* harmony default export */ var subtitle = (Subtitle); 8320 8321 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography.js 8322 8323 8324 /** 8325 * WordPress dependencies 8326 */ 8327 8328 8329 /** 8330 * Internal dependencies 8331 */ 8332 8333 8334 8335 8336 8337 8338 8339 function Item(_ref) { 8340 let { 8341 name, 8342 parentMenu, 8343 element, 8344 label 8345 } = _ref; 8346 const hasSupport = !name; 8347 const prefix = element === 'text' || !element ? '' : `elements.$element}.`; 8348 const extraStyles = element === 'link' ? { 8349 textDecoration: 'underline' 8350 } : {}; 8351 const [fontFamily] = useStyle(prefix + 'typography.fontFamily', name); 8352 const [fontStyle] = useStyle(prefix + 'typography.fontStyle', name); 8353 const [fontWeight] = useStyle(prefix + 'typography.fontWeight', name); 8354 const [letterSpacing] = useStyle(prefix + 'typography.letterSpacing', name); 8355 const [backgroundColor] = useStyle(prefix + 'color.background', name); 8356 const [gradientValue] = useStyle(prefix + 'color.gradient', name); 8357 const [color] = useStyle(prefix + 'color.text', name); 8358 8359 if (!hasSupport) { 8360 return null; 8361 } 8362 8363 return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, { 8364 path: parentMenu + '/typography/' + element 8365 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8366 justify: "flex-start" 8367 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, { 8368 className: "edit-site-global-styles-screen-typography__indicator", 8369 style: { 8370 fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif', 8371 background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor, 8372 color, 8373 fontStyle, 8374 fontWeight, 8375 letterSpacing, 8376 ...extraStyles 8377 } 8378 }, (0,external_wp_i18n_namespaceObject.__)('Aa')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, label))); 8379 } 8380 8381 function ScreenTypography(_ref2) { 8382 let { 8383 name 8384 } = _ref2; 8385 const parentMenu = name === undefined ? '' : '/blocks/' + name; 8386 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 8387 title: (0,external_wp_i18n_namespaceObject.__)('Typography'), 8388 description: (0,external_wp_i18n_namespaceObject.__)('Manage the typography settings for different elements.') 8389 }), !name && (0,external_wp_element_namespaceObject.createElement)("div", { 8390 className: "edit-site-global-styles-screen-typography" 8391 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, { 8392 spacing: 3 8393 }, (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, { 8394 isBordered: true, 8395 isSeparated: true 8396 }, (0,external_wp_element_namespaceObject.createElement)(Item, { 8397 name: name, 8398 parentMenu: parentMenu, 8399 element: "text", 8400 label: (0,external_wp_i18n_namespaceObject.__)('Text') 8401 }), (0,external_wp_element_namespaceObject.createElement)(Item, { 8402 name: name, 8403 parentMenu: parentMenu, 8404 element: "link", 8405 label: (0,external_wp_i18n_namespaceObject.__)('Links') 8406 })))), !!name && (0,external_wp_element_namespaceObject.createElement)(TypographyPanel, { 8407 name: name, 8408 element: "text" 8409 })); 8410 } 8411 8412 /* harmony default export */ var screen_typography = (ScreenTypography); 8413 8414 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography-element.js 8415 8416 8417 /** 8418 * WordPress dependencies 8419 */ 8420 8421 /** 8422 * Internal dependencies 8423 */ 8424 8425 8426 8427 const screen_typography_element_elements = { 8428 text: { 8429 description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts used on the site.'), 8430 title: (0,external_wp_i18n_namespaceObject.__)('Text') 8431 }, 8432 link: { 8433 description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on the links.'), 8434 title: (0,external_wp_i18n_namespaceObject.__)('Links') 8435 } 8436 }; 8437 8438 function ScreenTypographyElement(_ref) { 8439 let { 8440 name, 8441 element 8442 } = _ref; 8443 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 8444 title: screen_typography_element_elements[element].title, 8445 description: screen_typography_element_elements[element].description 8446 }), (0,external_wp_element_namespaceObject.createElement)(TypographyPanel, { 8447 name: name, 8448 element: element 8449 })); 8450 } 8451 8452 /* harmony default export */ var screen_typography_element = (ScreenTypographyElement); 8453 8454 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-indicator-wrapper.js 8455 8456 8457 8458 /** 8459 * External dependencies 8460 */ 8461 8462 /** 8463 * WordPress dependencies 8464 */ 8465 8466 8467 8468 function ColorIndicatorWrapper(_ref) { 8469 let { 8470 className, 8471 ...props 8472 } = _ref; 8473 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, extends_extends({ 8474 className: classnames_default()('edit-site-global-styles__color-indicator-wrapper', className) 8475 }, props)); 8476 } 8477 8478 /* harmony default export */ var color_indicator_wrapper = (ColorIndicatorWrapper); 8479 8480 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/palette.js 8481 8482 8483 /** 8484 * WordPress dependencies 8485 */ 8486 8487 8488 8489 /** 8490 * Internal dependencies 8491 */ 8492 8493 8494 8495 8496 8497 const EMPTY_COLORS = []; 8498 8499 function Palette(_ref) { 8500 let { 8501 name 8502 } = _ref; 8503 const [customColors] = useSetting('color.palette.custom'); 8504 const [themeColors] = useSetting('color.palette.theme'); 8505 const [defaultColors] = useSetting('color.palette.default'); 8506 const [defaultPaletteEnabled] = useSetting('color.defaultPalette', name); 8507 const colors = (0,external_wp_element_namespaceObject.useMemo)(() => [...(customColors || EMPTY_COLORS), ...(themeColors || EMPTY_COLORS), ...(defaultColors && defaultPaletteEnabled ? defaultColors : EMPTY_COLORS)], [customColors, themeColors, defaultColors, defaultPaletteEnabled]); 8508 const screenPath = !name ? '/colors/palette' : '/blocks/' + name + '/colors/palette'; 8509 const paletteButtonText = colors.length > 0 ? (0,external_wp_i18n_namespaceObject.sprintf)( // Translators: %d: Number of palette colors. 8510 (0,external_wp_i18n_namespaceObject._n)('%d color', '%d colors', colors.length), colors.length) : (0,external_wp_i18n_namespaceObject.__)('Add custom colors'); 8511 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, { 8512 spacing: 3 8513 }, (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, { 8514 isBordered: true, 8515 isSeparated: true 8516 }, (0,external_wp_element_namespaceObject.createElement)(NavigationButton, { 8517 path: screenPath 8518 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8519 direction: colors.length === 0 ? 'row-reverse' : 'row' 8520 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalZStack, { 8521 isLayered: false, 8522 offset: -8 8523 }, colors.slice(0, 5).map(_ref2 => { 8524 let { 8525 color 8526 } = _ref2; 8527 return (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, { 8528 key: color 8529 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, { 8530 colorValue: color 8531 })); 8532 })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, paletteButtonText))))); 8533 } 8534 8535 /* harmony default export */ var palette = (Palette); 8536 8537 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-colors.js 8538 8539 8540 /** 8541 * WordPress dependencies 8542 */ 8543 8544 8545 /** 8546 * Internal dependencies 8547 */ 8548 8549 8550 8551 8552 8553 8554 8555 8556 function BackgroundColorItem(_ref) { 8557 let { 8558 name, 8559 parentMenu 8560 } = _ref; 8561 const supports = getSupportedGlobalStylesPanels(name); 8562 const hasSupport = supports.includes('backgroundColor') || supports.includes('background'); 8563 const [backgroundColor] = useStyle('color.background', name); 8564 const [gradientValue] = useStyle('color.gradient', name); 8565 8566 if (!hasSupport) { 8567 return null; 8568 } 8569 8570 return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, { 8571 path: parentMenu + '/colors/background' 8572 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8573 justify: "flex-start" 8574 }, (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, { 8575 expanded: false 8576 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, { 8577 colorValue: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor 8578 })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Background')))); 8579 } 8580 8581 function TextColorItem(_ref2) { 8582 let { 8583 name, 8584 parentMenu 8585 } = _ref2; 8586 const supports = getSupportedGlobalStylesPanels(name); 8587 const hasSupport = supports.includes('color'); 8588 const [color] = useStyle('color.text', name); 8589 8590 if (!hasSupport) { 8591 return null; 8592 } 8593 8594 return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, { 8595 path: parentMenu + '/colors/text' 8596 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8597 justify: "flex-start" 8598 }, (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, { 8599 expanded: false 8600 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, { 8601 colorValue: color 8602 })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Text')))); 8603 } 8604 8605 function LinkColorItem(_ref3) { 8606 let { 8607 name, 8608 parentMenu 8609 } = _ref3; 8610 const supports = getSupportedGlobalStylesPanels(name); 8611 const hasSupport = supports.includes('linkColor'); 8612 const [color] = useStyle('elements.link.color.text', name); 8613 8614 if (!hasSupport) { 8615 return null; 8616 } 8617 8618 return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, { 8619 path: parentMenu + '/colors/link' 8620 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 8621 justify: "flex-start" 8622 }, (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, { 8623 expanded: false 8624 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, { 8625 colorValue: color 8626 })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Links')))); 8627 } 8628 8629 function ScreenColors(_ref4) { 8630 let { 8631 name 8632 } = _ref4; 8633 const parentMenu = name === undefined ? '' : '/blocks/' + name; 8634 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 8635 title: (0,external_wp_i18n_namespaceObject.__)('Colors'), 8636 description: (0,external_wp_i18n_namespaceObject.__)('Manage palettes and the default color of different global elements on the site.') 8637 }), (0,external_wp_element_namespaceObject.createElement)("div", { 8638 className: "edit-site-global-styles-screen-colors" 8639 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, { 8640 spacing: 10 8641 }, (0,external_wp_element_namespaceObject.createElement)(palette, { 8642 name: name 8643 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, { 8644 spacing: 3 8645 }, (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, { 8646 isBordered: true, 8647 isSeparated: true 8648 }, (0,external_wp_element_namespaceObject.createElement)(BackgroundColorItem, { 8649 name: name, 8650 parentMenu: parentMenu 8651 }), (0,external_wp_element_namespaceObject.createElement)(TextColorItem, { 8652 name: name, 8653 parentMenu: parentMenu 8654 }), (0,external_wp_element_namespaceObject.createElement)(LinkColorItem, { 8655 name: name, 8656 parentMenu: parentMenu 8657 })))))); 8658 } 8659 8660 /* harmony default export */ var screen_colors = (ScreenColors); 8661 8662 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-palette-panel.js 8663 8664 8665 /** 8666 * WordPress dependencies 8667 */ 8668 8669 8670 /** 8671 * Internal dependencies 8672 */ 8673 8674 8675 function ColorPalettePanel(_ref) { 8676 let { 8677 name 8678 } = _ref; 8679 const [themeColors, setThemeColors] = useSetting('color.palette.theme', name); 8680 const [baseThemeColors] = useSetting('color.palette.theme', name, 'base'); 8681 const [defaultColors, setDefaultColors] = useSetting('color.palette.default', name); 8682 const [baseDefaultColors] = useSetting('color.palette.default', name, 'base'); 8683 const [customColors, setCustomColors] = useSetting('color.palette.custom', name); 8684 const [defaultPaletteEnabled] = useSetting('color.defaultPalette', name); 8685 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, { 8686 className: "edit-site-global-styles-color-palette-panel", 8687 spacing: 10 8688 }, !!themeColors && !!themeColors.length && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { 8689 canReset: themeColors !== baseThemeColors, 8690 canOnlyChangeValues: true, 8691 colors: themeColors, 8692 onChange: setThemeColors, 8693 paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme') 8694 }), !!defaultColors && !!defaultColors.length && !!defaultPaletteEnabled && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { 8695 canReset: defaultColors !== baseDefaultColors, 8696 canOnlyChangeValues: true, 8697 colors: defaultColors, 8698 onChange: setDefaultColors, 8699 paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default') 8700 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { 8701 colors: customColors, 8702 onChange: setCustomColors, 8703 paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'), 8704 emptyMessage: (0,external_wp_i18n_namespaceObject.__)('Custom colors are empty! Add some colors to create your own color palette.'), 8705 slugPrefix: "custom-" 8706 })); 8707 } 8708 8709 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/gradients-palette-panel.js 8710 8711 8712 /** 8713 * External dependencies 8714 */ 8715 8716 /** 8717 * WordPress dependencies 8718 */ 8719 8720 8721 8722 /** 8723 * Internal dependencies 8724 */ 8725 8726 8727 8728 function GradientPalettePanel(_ref) { 8729 let { 8730 name 8731 } = _ref; 8732 const [themeGradients, setThemeGradients] = useSetting('color.gradients.theme', name); 8733 const [baseThemeGradients] = useSetting('color.gradients.theme', name, 'base'); 8734 const [defaultGradients, setDefaultGradients] = useSetting('color.gradients.default', name); 8735 const [baseDefaultGradients] = useSetting('color.gradients.default', name, 'base'); 8736 const [customGradients, setCustomGradients] = useSetting('color.gradients.custom', name); 8737 const [defaultPaletteEnabled] = useSetting('color.defaultGradients', name); 8738 const [duotonePalette] = useSetting('color.duotone') || []; 8739 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, { 8740 className: "edit-site-global-styles-gradient-palette-panel", 8741 spacing: 10 8742 }, !!themeGradients && !!themeGradients.length && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { 8743 canReset: themeGradients !== baseThemeGradients, 8744 canOnlyChangeValues: true, 8745 gradients: themeGradients, 8746 onChange: setThemeGradients, 8747 paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme') 8748 }), !!defaultGradients && !!defaultGradients.length && !!defaultPaletteEnabled && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { 8749 canReset: defaultGradients !== baseDefaultGradients, 8750 canOnlyChangeValues: true, 8751 gradients: defaultGradients, 8752 onChange: setDefaultGradients, 8753 paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default') 8754 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { 8755 gradients: customGradients, 8756 onChange: setCustomGradients, 8757 paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'), 8758 emptyMessage: (0,external_wp_i18n_namespaceObject.__)('Custom gradients are empty! Add some gradients to create your own palette.'), 8759 slugPrefix: "custom-" 8760 }), (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, { 8761 margin: 3 8762 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DuotonePicker, { 8763 duotonePalette: duotonePalette, 8764 disableCustomDuotone: true, 8765 disableCustomColors: true, 8766 clearable: false, 8767 onChange: external_lodash_namespaceObject.noop 8768 }))); 8769 } 8770 8771 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-color-palette.js 8772 8773 8774 /** 8775 * WordPress dependencies 8776 */ 8777 8778 8779 8780 /** 8781 * Internal dependencies 8782 */ 8783 8784 8785 8786 8787 8788 function ScreenColorPalette(_ref) { 8789 let { 8790 name 8791 } = _ref; 8792 const [currentTab, setCurrentTab] = (0,external_wp_element_namespaceObject.useState)('solid'); 8793 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 8794 title: (0,external_wp_i18n_namespaceObject.__)('Palette'), 8795 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.') 8796 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 8797 className: "edit-site-screen-color-palette-toggle", 8798 value: currentTab, 8799 onChange: setCurrentTab, 8800 label: (0,external_wp_i18n_namespaceObject.__)('Select palette type'), 8801 hideLabelFromVision: true, 8802 isBlock: true 8803 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 8804 value: "solid", 8805 label: (0,external_wp_i18n_namespaceObject.__)('Solid') 8806 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 8807 value: "gradient", 8808 label: (0,external_wp_i18n_namespaceObject.__)('Gradient') 8809 })), currentTab === 'solid' && (0,external_wp_element_namespaceObject.createElement)(ColorPalettePanel, { 8810 name: name 8811 }), currentTab === 'gradient' && (0,external_wp_element_namespaceObject.createElement)(GradientPalettePanel, { 8812 name: name 8813 })); 8814 } 8815 8816 /* harmony default export */ var screen_color_palette = (ScreenColorPalette); 8817 8818 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-background-color.js 8819 8820 8821 8822 /** 8823 * WordPress dependencies 8824 */ 8825 8826 8827 /** 8828 * Internal dependencies 8829 */ 8830 8831 8832 8833 8834 function ScreenBackgroundColor(_ref) { 8835 let { 8836 name 8837 } = _ref; 8838 const supports = getSupportedGlobalStylesPanels(name); 8839 const [solids] = useSetting('color.palette', name); 8840 const [gradients] = useSetting('color.gradients', name); 8841 const [areCustomSolidsEnabled] = useSetting('color.custom', name); 8842 const [areCustomGradientsEnabled] = useSetting('color.customGradient', name); 8843 const colorsPerOrigin = useColorsPerOrigin(name); 8844 const gradientsPerOrigin = useGradientsPerOrigin(name); 8845 const [isBackgroundEnabled] = useSetting('color.background', name); 8846 const hasBackgroundColor = supports.includes('backgroundColor') && isBackgroundEnabled && (solids.length > 0 || areCustomSolidsEnabled); 8847 const hasGradientColor = supports.includes('background') && (gradients.length > 0 || areCustomGradientsEnabled); 8848 const [backgroundColor, setBackgroundColor] = useStyle('color.background', name); 8849 const [userBackgroundColor] = useStyle('color.background', name, 'user'); 8850 const [gradient, setGradient] = useStyle('color.gradient', name); 8851 const [userGradient] = useStyle('color.gradient', name, 'user'); 8852 8853 if (!hasBackgroundColor && !hasGradientColor) { 8854 return null; 8855 } 8856 8857 let backgroundSettings = {}; 8858 8859 if (hasBackgroundColor) { 8860 backgroundSettings = { 8861 colorValue: backgroundColor, 8862 onColorChange: setBackgroundColor 8863 }; 8864 8865 if (backgroundColor) { 8866 backgroundSettings.clearable = backgroundColor === userBackgroundColor; 8867 } 8868 } 8869 8870 let gradientSettings = {}; 8871 8872 if (hasGradientColor) { 8873 gradientSettings = { 8874 gradientValue: gradient, 8875 onGradientChange: setGradient 8876 }; 8877 8878 if (gradient) { 8879 gradientSettings.clearable = gradient === userGradient; 8880 } 8881 } 8882 8883 const controlProps = { ...backgroundSettings, 8884 ...gradientSettings 8885 }; 8886 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 8887 title: (0,external_wp_i18n_namespaceObject.__)('Background'), 8888 description: (0,external_wp_i18n_namespaceObject.__)('Set a background color or gradient for the whole site.') 8889 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientControl, extends_extends({ 8890 className: "edit-site-screen-background-color__control", 8891 colors: colorsPerOrigin, 8892 gradients: gradientsPerOrigin, 8893 disableCustomColors: !areCustomSolidsEnabled, 8894 disableCustomGradients: !areCustomGradientsEnabled, 8895 __experimentalHasMultipleOrigins: true, 8896 showTitle: false, 8897 enableAlpha: true, 8898 __experimentalIsRenderedInSidebar: true 8899 }, controlProps))); 8900 } 8901 8902 /* harmony default export */ var screen_background_color = (ScreenBackgroundColor); 8903 8904 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-text-color.js 8905 8906 8907 /** 8908 * WordPress dependencies 8909 */ 8910 8911 8912 /** 8913 * Internal dependencies 8914 */ 8915 8916 8917 8918 8919 function ScreenTextColor(_ref) { 8920 let { 8921 name 8922 } = _ref; 8923 const supports = getSupportedGlobalStylesPanels(name); 8924 const [solids] = useSetting('color.palette', name); 8925 const [areCustomSolidsEnabled] = useSetting('color.custom', name); 8926 const [isTextEnabled] = useSetting('color.text', name); 8927 const colorsPerOrigin = useColorsPerOrigin(name); 8928 const hasTextColor = supports.includes('color') && isTextEnabled && (solids.length > 0 || areCustomSolidsEnabled); 8929 const [color, setColor] = useStyle('color.text', name); 8930 const [userColor] = useStyle('color.text', name, 'user'); 8931 8932 if (!hasTextColor) { 8933 return null; 8934 } 8935 8936 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 8937 title: (0,external_wp_i18n_namespaceObject.__)('Text'), 8938 description: (0,external_wp_i18n_namespaceObject.__)('Set the default color used for text across the site.') 8939 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientControl, { 8940 className: "edit-site-screen-text-color__control", 8941 colors: colorsPerOrigin, 8942 disableCustomColors: !areCustomSolidsEnabled, 8943 __experimentalHasMultipleOrigins: true, 8944 showTitle: false, 8945 enableAlpha: true, 8946 __experimentalIsRenderedInSidebar: true, 8947 colorValue: color, 8948 onColorChange: setColor, 8949 clearable: color === userColor 8950 })); 8951 } 8952 8953 /* harmony default export */ var screen_text_color = (ScreenTextColor); 8954 8955 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-link-color.js 8956 8957 8958 /** 8959 * WordPress dependencies 8960 */ 8961 8962 8963 /** 8964 * Internal dependencies 8965 */ 8966 8967 8968 8969 8970 function ScreenLinkColor(_ref) { 8971 let { 8972 name 8973 } = _ref; 8974 const supports = getSupportedGlobalStylesPanels(name); 8975 const [solids] = useSetting('color.palette', name); 8976 const [areCustomSolidsEnabled] = useSetting('color.custom', name); 8977 const colorsPerOrigin = useColorsPerOrigin(name); 8978 const [isLinkEnabled] = useSetting('color.link', name); 8979 const hasLinkColor = supports.includes('linkColor') && isLinkEnabled && (solids.length > 0 || areCustomSolidsEnabled); 8980 const [linkColor, setLinkColor] = useStyle('elements.link.color.text', name); 8981 const [userLinkColor] = useStyle('elements.link.color.text', name, 'user'); 8982 8983 if (!hasLinkColor) { 8984 return null; 8985 } 8986 8987 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 8988 title: (0,external_wp_i18n_namespaceObject.__)('Links'), 8989 description: (0,external_wp_i18n_namespaceObject.__)('Set the default color used for links across the site.') 8990 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientControl, { 8991 className: "edit-site-screen-link-color__control", 8992 colors: colorsPerOrigin, 8993 disableCustomColors: !areCustomSolidsEnabled, 8994 __experimentalHasMultipleOrigins: true, 8995 showTitle: false, 8996 enableAlpha: true, 8997 __experimentalIsRenderedInSidebar: true, 8998 colorValue: linkColor, 8999 onColorChange: setLinkColor, 9000 clearable: linkColor === userLinkColor 9001 })); 9002 } 9003 9004 /* harmony default export */ var screen_link_color = (ScreenLinkColor); 9005 9006 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-layout.js 9007 9008 9009 /** 9010 * WordPress dependencies 9011 */ 9012 9013 /** 9014 * Internal dependencies 9015 */ 9016 9017 9018 9019 9020 9021 function ScreenLayout(_ref) { 9022 let { 9023 name 9024 } = _ref; 9025 const hasBorderPanel = useHasBorderPanel(name); 9026 const hasDimensionsPanel = useHasDimensionsPanel(name); 9027 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 9028 title: (0,external_wp_i18n_namespaceObject.__)('Layout') 9029 }), hasDimensionsPanel && (0,external_wp_element_namespaceObject.createElement)(DimensionsPanel, { 9030 name: name 9031 }), hasBorderPanel && (0,external_wp_element_namespaceObject.createElement)(BorderPanel, { 9032 name: name 9033 })); 9034 } 9035 9036 /* harmony default export */ var screen_layout = (ScreenLayout); 9037 9038 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/global-styles-provider.js 9039 9040 9041 /** 9042 * External dependencies 9043 */ 9044 9045 /** 9046 * WordPress dependencies 9047 */ 9048 9049 9050 9051 9052 /** 9053 * Internal dependencies 9054 */ 9055 9056 9057 9058 function mergeTreesCustomizer(_, srcValue) { 9059 // We only pass as arrays the presets, 9060 // in which case we want the new array of values 9061 // to override the old array (no merging). 9062 if (Array.isArray(srcValue)) { 9063 return srcValue; 9064 } 9065 } 9066 9067 function mergeBaseAndUserConfigs(base, user) { 9068 return (0,external_lodash_namespaceObject.mergeWith)({}, base, user, mergeTreesCustomizer); 9069 } 9070 9071 const cleanEmptyObject = object => { 9072 if (!(0,external_lodash_namespaceObject.isObject)(object) || Array.isArray(object)) { 9073 return object; 9074 } 9075 9076 const cleanedNestedObjects = (0,external_lodash_namespaceObject.pickBy)((0,external_lodash_namespaceObject.mapValues)(object, cleanEmptyObject), external_lodash_namespaceObject.identity); 9077 return (0,external_lodash_namespaceObject.isEmpty)(cleanedNestedObjects) ? undefined : cleanedNestedObjects; 9078 }; 9079 9080 function useGlobalStylesUserConfig() { 9081 const { 9082 globalStylesId, 9083 settings, 9084 styles 9085 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 9086 const _globalStylesId = select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentGlobalStylesId(); 9087 9088 const record = _globalStylesId ? select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('root', 'globalStyles', _globalStylesId) : undefined; 9089 return { 9090 globalStylesId: _globalStylesId, 9091 settings: record === null || record === void 0 ? void 0 : record.settings, 9092 styles: record === null || record === void 0 ? void 0 : record.styles 9093 }; 9094 }, []); 9095 const { 9096 getEditedEntityRecord 9097 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store); 9098 const { 9099 editEntityRecord 9100 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 9101 const config = (0,external_wp_element_namespaceObject.useMemo)(() => { 9102 return { 9103 settings: settings !== null && settings !== void 0 ? settings : {}, 9104 styles: styles !== null && styles !== void 0 ? styles : {} 9105 }; 9106 }, [settings, styles]); 9107 const setConfig = (0,external_wp_element_namespaceObject.useCallback)(callback => { 9108 var _record$styles, _record$settings; 9109 9110 const record = getEditedEntityRecord('root', 'globalStyles', globalStylesId); 9111 const currentConfig = { 9112 styles: (_record$styles = record === null || record === void 0 ? void 0 : record.styles) !== null && _record$styles !== void 0 ? _record$styles : {}, 9113 settings: (_record$settings = record === null || record === void 0 ? void 0 : record.settings) !== null && _record$settings !== void 0 ? _record$settings : {} 9114 }; 9115 const updatedConfig = callback(currentConfig); 9116 editEntityRecord('root', 'globalStyles', globalStylesId, { 9117 styles: cleanEmptyObject(updatedConfig.styles) || {}, 9118 settings: cleanEmptyObject(updatedConfig.settings) || {} 9119 }); 9120 }, [globalStylesId]); 9121 return [!!settings || !!styles, config, setConfig]; 9122 } 9123 9124 function useGlobalStylesBaseConfig() { 9125 const baseConfig = (0,external_wp_data_namespaceObject.useSelect)(select => { 9126 return select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeBaseGlobalStyles(); 9127 }, []); 9128 return [!!baseConfig, baseConfig]; 9129 } 9130 9131 function useGlobalStylesContext() { 9132 const [isUserConfigReady, userConfig, setUserConfig] = useGlobalStylesUserConfig(); 9133 const [isBaseConfigReady, baseConfig] = useGlobalStylesBaseConfig(); 9134 const mergedConfig = (0,external_wp_element_namespaceObject.useMemo)(() => { 9135 if (!baseConfig || !userConfig) { 9136 return {}; 9137 } 9138 9139 return mergeBaseAndUserConfigs(baseConfig, userConfig); 9140 }, [userConfig, baseConfig]); 9141 const context = (0,external_wp_element_namespaceObject.useMemo)(() => { 9142 return { 9143 isReady: isUserConfigReady && isBaseConfigReady, 9144 user: userConfig, 9145 base: baseConfig, 9146 merged: mergedConfig, 9147 setUserConfig 9148 }; 9149 }, [mergedConfig, userConfig, baseConfig, setUserConfig, isUserConfigReady, isBaseConfigReady]); 9150 return context; 9151 } 9152 9153 function GlobalStylesProvider(_ref) { 9154 let { 9155 children 9156 } = _ref; 9157 const context = useGlobalStylesContext(); 9158 9159 if (!context.isReady) { 9160 return null; 9161 } 9162 9163 return (0,external_wp_element_namespaceObject.createElement)(GlobalStylesContext.Provider, { 9164 value: context 9165 }, children); 9166 } 9167 9168 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-style-variations.js 9169 9170 9171 /** 9172 * External dependencies 9173 */ 9174 9175 9176 /** 9177 * WordPress dependencies 9178 */ 9179 9180 9181 9182 9183 9184 9185 9186 /** 9187 * Internal dependencies 9188 */ 9189 9190 9191 9192 9193 9194 9195 function compareVariations(a, b) { 9196 return (0,external_lodash_namespaceObject.isEqual)(a.styles, b.styles) && (0,external_lodash_namespaceObject.isEqual)(a.settings, b.settings); 9197 } 9198 9199 function Variation(_ref) { 9200 let { 9201 variation 9202 } = _ref; 9203 const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false); 9204 const { 9205 base, 9206 user, 9207 setUserConfig 9208 } = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext); 9209 const context = (0,external_wp_element_namespaceObject.useMemo)(() => { 9210 var _variation$settings, _variation$styles; 9211 9212 return { 9213 user: { 9214 settings: (_variation$settings = variation.settings) !== null && _variation$settings !== void 0 ? _variation$settings : {}, 9215 styles: (_variation$styles = variation.styles) !== null && _variation$styles !== void 0 ? _variation$styles : {} 9216 }, 9217 base, 9218 merged: mergeBaseAndUserConfigs(base, variation), 9219 setUserConfig: () => {} 9220 }; 9221 }, [variation, base]); 9222 9223 const selectVariation = () => { 9224 setUserConfig(() => { 9225 return { 9226 settings: variation.settings, 9227 styles: variation.styles 9228 }; 9229 }); 9230 }; 9231 9232 const selectOnEnter = event => { 9233 if (event.keyCode === external_wp_keycodes_namespaceObject.ENTER) { 9234 event.preventDefault(); 9235 selectVariation(); 9236 } 9237 }; 9238 9239 const isActive = (0,external_wp_element_namespaceObject.useMemo)(() => { 9240 return compareVariations(user, variation); 9241 }, [user, variation]); 9242 return (0,external_wp_element_namespaceObject.createElement)(GlobalStylesContext.Provider, { 9243 value: context 9244 }, (0,external_wp_element_namespaceObject.createElement)("div", { 9245 className: classnames_default()('edit-site-global-styles-variations_item', { 9246 'is-active': isActive 9247 }), 9248 role: "button", 9249 onClick: selectVariation, 9250 onKeyDown: selectOnEnter, 9251 tabIndex: "0", 9252 "aria-label": variation === null || variation === void 0 ? void 0 : variation.title, 9253 onFocus: () => setIsFocused(true), 9254 onBlur: () => setIsFocused(false) 9255 }, (0,external_wp_element_namespaceObject.createElement)("div", { 9256 className: "edit-site-global-styles-variations_item-preview" 9257 }, (0,external_wp_element_namespaceObject.createElement)(preview, { 9258 label: variation === null || variation === void 0 ? void 0 : variation.title, 9259 isFocused: isFocused 9260 })))); 9261 } 9262 9263 function ScreenStyleVariations() { 9264 const { 9265 variations 9266 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 9267 return { 9268 variations: select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations() 9269 }; 9270 }, []); 9271 const withEmptyVariation = (0,external_wp_element_namespaceObject.useMemo)(() => { 9272 return [{ 9273 title: (0,external_wp_i18n_namespaceObject.__)('Default'), 9274 settings: {}, 9275 styles: {} 9276 }, ...variations]; 9277 }, [variations]); 9278 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, { 9279 back: "/", 9280 title: (0,external_wp_i18n_namespaceObject.__)('Browse styles'), 9281 description: (0,external_wp_i18n_namespaceObject.__)('Choose a different style combination for the theme styles') 9282 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, { 9283 size: "small", 9284 isBorderless: true 9285 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalGrid, { 9286 columns: 2 9287 }, withEmptyVariation === null || withEmptyVariation === void 0 ? void 0 : withEmptyVariation.map((variation, index) => (0,external_wp_element_namespaceObject.createElement)(Variation, { 9288 key: index, 9289 variation: variation 9290 })))))); 9291 } 9292 9293 /* harmony default export */ var screen_style_variations = (ScreenStyleVariations); 9294 9295 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/ui.js 9296 9297 9298 9299 /** 9300 * WordPress dependencies 9301 */ 9302 9303 9304 /** 9305 * Internal dependencies 9306 */ 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 function GlobalStylesNavigationScreen(_ref) { 9322 let { 9323 className, 9324 ...props 9325 } = _ref; 9326 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, extends_extends({ 9327 className: ['edit-site-global-styles-sidebar__navigator-screen', className].filter(Boolean).join(' ') 9328 }, props)); 9329 } 9330 9331 function ContextScreens(_ref2) { 9332 let { 9333 name 9334 } = _ref2; 9335 const parentMenu = name === undefined ? '' : '/blocks/' + name; 9336 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9337 path: parentMenu + '/typography' 9338 }, (0,external_wp_element_namespaceObject.createElement)(screen_typography, { 9339 name: name 9340 })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9341 path: parentMenu + '/typography/text' 9342 }, (0,external_wp_element_namespaceObject.createElement)(screen_typography_element, { 9343 name: name, 9344 element: "text" 9345 })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9346 path: parentMenu + '/typography/link' 9347 }, (0,external_wp_element_namespaceObject.createElement)(screen_typography_element, { 9348 name: name, 9349 element: "link" 9350 })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9351 path: parentMenu + '/colors' 9352 }, (0,external_wp_element_namespaceObject.createElement)(screen_colors, { 9353 name: name 9354 })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9355 path: parentMenu + '/colors/palette' 9356 }, (0,external_wp_element_namespaceObject.createElement)(screen_color_palette, { 9357 name: name 9358 })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9359 path: parentMenu + '/colors/background' 9360 }, (0,external_wp_element_namespaceObject.createElement)(screen_background_color, { 9361 name: name 9362 })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9363 path: parentMenu + '/colors/text' 9364 }, (0,external_wp_element_namespaceObject.createElement)(screen_text_color, { 9365 name: name 9366 })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9367 path: parentMenu + '/colors/link' 9368 }, (0,external_wp_element_namespaceObject.createElement)(screen_link_color, { 9369 name: name 9370 })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9371 path: parentMenu + '/layout' 9372 }, (0,external_wp_element_namespaceObject.createElement)(screen_layout, { 9373 name: name 9374 }))); 9375 } 9376 9377 function GlobalStylesUI() { 9378 const blocks = (0,external_wp_blocks_namespaceObject.getBlockTypes)(); 9379 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorProvider, { 9380 className: "edit-site-global-styles-sidebar__navigator-provider", 9381 initialPath: "/" 9382 }, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9383 path: "/" 9384 }, (0,external_wp_element_namespaceObject.createElement)(screen_root, null)), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9385 path: "/variations" 9386 }, (0,external_wp_element_namespaceObject.createElement)(screen_style_variations, null)), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9387 path: "/blocks" 9388 }, (0,external_wp_element_namespaceObject.createElement)(screen_block_list, null)), blocks.map(block => (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, { 9389 key: 'menu-block-' + block.name, 9390 path: '/blocks/' + block.name 9391 }, (0,external_wp_element_namespaceObject.createElement)(screen_block, { 9392 name: block.name 9393 }))), (0,external_wp_element_namespaceObject.createElement)(ContextScreens, null), blocks.map(block => (0,external_wp_element_namespaceObject.createElement)(ContextScreens, { 9394 key: 'screens-block-' + block.name, 9395 name: block.name 9396 }))); 9397 } 9398 9399 /* harmony default export */ var ui = (GlobalStylesUI); 9400 9401 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/index.js 9402 9403 9404 9405 9406 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/global-styles-sidebar.js 9407 9408 9409 /** 9410 * WordPress dependencies 9411 */ 9412 9413 9414 9415 9416 9417 /** 9418 * Internal dependencies 9419 */ 9420 9421 9422 9423 function GlobalStylesSidebar() { 9424 const [canReset, onReset] = useGlobalStylesReset(); 9425 const { 9426 toggle 9427 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store); 9428 return (0,external_wp_element_namespaceObject.createElement)(default_sidebar_DefaultSidebar, { 9429 className: "edit-site-global-styles-sidebar", 9430 identifier: "edit-site/global-styles", 9431 title: (0,external_wp_i18n_namespaceObject.__)('Styles'), 9432 icon: library_styles, 9433 closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close global styles sidebar'), 9434 panelClassName: "edit-site-global-styles-sidebar__panel", 9435 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", { 9436 className: "edit-site-global-styles-sidebar__beta" 9437 }, (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, { 9438 icon: more_vertical, 9439 label: (0,external_wp_i18n_namespaceObject.__)('More Global Styles Actions'), 9440 toggleProps: { 9441 disabled: !canReset 9442 }, 9443 controls: [{ 9444 title: (0,external_wp_i18n_namespaceObject.__)('Reset to defaults'), 9445 onClick: onReset 9446 }, { 9447 title: (0,external_wp_i18n_namespaceObject.__)('Welcome Guide'), 9448 onClick: () => toggle('core/edit-site', 'welcomeGuideStyles') 9449 }] 9450 }))) 9451 }, (0,external_wp_element_namespaceObject.createElement)(ui, null)); 9452 } 9453 9454 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js 9455 9456 9457 /** 9458 * WordPress dependencies 9459 */ 9460 9461 9462 9463 const ALLOWED_BLOCKS = { 9464 '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'], 9465 'core/social-links': ['core/social-link'], 9466 'core/navigation-submenu': ['core/navigation-link', 'core/navigation-submenu'], 9467 'core/navigation-link': ['core/navigation-link', 'core/navigation-submenu'] 9468 }; 9469 function navigation_menu_NavigationMenu(_ref) { 9470 let { 9471 innerBlocks, 9472 id 9473 } = _ref; 9474 const { 9475 updateBlockListSettings 9476 } = useDispatch(blockEditorStore); //TODO: Block settings are normally updated as a side effect of rendering InnerBlocks in BlockList 9477 //Think through a better way of doing this, possible with adding allowed blocks to block library metadata 9478 9479 useEffect(() => { 9480 updateBlockListSettings('', { 9481 allowedBlocks: ALLOWED_BLOCKS['core/navigation'] 9482 }); 9483 innerBlocks.forEach(block => { 9484 if (ALLOWED_BLOCKS[block.name]) { 9485 updateBlockListSettings(block.clientId, { 9486 allowedBlocks: ALLOWED_BLOCKS[block.name] 9487 }); 9488 } 9489 }); 9490 }, [updateBlockListSettings, innerBlocks]); 9491 return createElement(Fragment, null, createElement(ListView, { 9492 id: id, 9493 showNestedBlocks: true, 9494 expandNested: false, 9495 __experimentalFeatures: true, 9496 __experimentalPersistentListViewFeatures: true 9497 })); 9498 } 9499 9500 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/navigation-menu-sidebar/navigation-inspector.js 9501 9502 9503 /** 9504 * WordPress dependencies 9505 */ 9506 9507 9508 9509 9510 9511 9512 9513 9514 /** 9515 * Internal dependencies 9516 */ 9517 9518 9519 const NAVIGATION_MENUS_QUERY = [{ 9520 per_page: -1, 9521 status: 'publish' 9522 }]; 9523 function navigation_inspector_NavigationInspector() { 9524 var _navigationMenus$; 9525 9526 const { 9527 selectedNavigationBlockId, 9528 clientIdToRef, 9529 navigationMenus, 9530 isResolvingNavigationMenus, 9531 hasResolvedNavigationMenus, 9532 firstNavigationBlockId 9533 } = useSelect(select => { 9534 const { 9535 __experimentalGetActiveBlockIdByBlockNames, 9536 __experimentalGetGlobalBlocksByName, 9537 getBlock 9538 } = select(blockEditorStore); 9539 const { 9540 getEntityRecords, 9541 hasFinishedResolution, 9542 isResolving 9543 } = select(coreStore); 9544 const navigationMenusQuery = ['postType', 'wp_navigation', NAVIGATION_MENUS_QUERY[0]]; // Get the active Navigation block (if present). 9545 9546 const selectedNavId = __experimentalGetActiveBlockIdByBlockNames('core/navigation'); // Get all Navigation blocks currently within the editor canvas. 9547 9548 9549 const navBlockIds = __experimentalGetGlobalBlocksByName('core/navigation'); 9550 9551 const idToRef = {}; 9552 navBlockIds.forEach(id => { 9553 var _getBlock, _getBlock$attributes; 9554 9555 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; 9556 }); 9557 return { 9558 selectedNavigationBlockId: selectedNavId, 9559 firstNavigationBlockId: navBlockIds === null || navBlockIds === void 0 ? void 0 : navBlockIds[0], 9560 clientIdToRef: idToRef, 9561 navigationMenus: getEntityRecords(...navigationMenusQuery), 9562 isResolvingNavigationMenus: isResolving('getEntityRecords', navigationMenusQuery), 9563 hasResolvedNavigationMenus: hasFinishedResolution('getEntityRecords', navigationMenusQuery) 9564 }; 9565 }, []); 9566 const navMenuListId = useInstanceId(NavigationMenu, 'edit-site-navigation-inspector-menu'); 9567 const firstNavRefInTemplate = clientIdToRef[firstNavigationBlockId]; 9568 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: 9569 // - the Navigation Menu referenced by the first Nav block within the template. 9570 // - the first of the available Navigation Menus (`wp_navigation`) posts. 9571 9572 const defaultNavigationMenuId = firstNavRefInTemplate || firstNavigationMenuRef; // The Navigation Menu manually selected by the user within the Nav inspector. 9573 9574 const [currentMenuId, setCurrentMenuId] = useState(firstNavRefInTemplate); // If a Nav block is selected within the canvas then set the 9575 // Navigation Menu referenced by it's `ref` attribute to be 9576 // active within the Navigation sidebar. 9577 9578 useEffect(() => { 9579 if (selectedNavigationBlockId) { 9580 setCurrentMenuId(clientIdToRef[selectedNavigationBlockId]); 9581 } 9582 }, [selectedNavigationBlockId]); 9583 let options = []; 9584 9585 if (navigationMenus) { 9586 options = navigationMenus.map(_ref => { 9587 let { 9588 id, 9589 title 9590 } = _ref; 9591 return { 9592 value: id, 9593 label: title.rendered 9594 }; 9595 }); 9596 } 9597 9598 const [innerBlocks, onInput, onChange] = useEntityBlockEditor('postType', 'wp_navigation', { 9599 id: currentMenuId || defaultNavigationMenuId 9600 }); 9601 const { 9602 isLoadingInnerBlocks, 9603 hasLoadedInnerBlocks 9604 } = useSelect(select => { 9605 const { 9606 isResolving, 9607 hasFinishedResolution 9608 } = select(coreStore); 9609 return { 9610 isLoadingInnerBlocks: isResolving('getEntityRecord', ['postType', 'wp_navigation', currentMenuId || defaultNavigationMenuId]), 9611 hasLoadedInnerBlocks: hasFinishedResolution('getEntityRecord', ['postType', 'wp_navigation', currentMenuId || defaultNavigationMenuId]) 9612 }; 9613 }, [currentMenuId, defaultNavigationMenuId]); 9614 const isLoading = !(hasResolvedNavigationMenus && hasLoadedInnerBlocks); 9615 const hasMoreThanOneNavigationMenu = (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 1; 9616 const hasNavigationMenus = !!(navigationMenus !== null && navigationMenus !== void 0 && navigationMenus.length); // Entity block editor will return entities that are not currently published. 9617 // Guard by only allowing their usage if there are published Nav Menus. 9618 9619 const publishedInnerBlocks = hasNavigationMenus ? innerBlocks : []; 9620 const hasInnerBlocks = !!(publishedInnerBlocks !== null && publishedInnerBlocks !== void 0 && publishedInnerBlocks.length); 9621 useEffect(() => { 9622 if (isResolvingNavigationMenus) { 9623 speak('Loading Navigation sidebar menus.'); 9624 } 9625 9626 if (hasResolvedNavigationMenus) { 9627 speak('Navigation sidebar menus have loaded.'); 9628 } 9629 }, [isResolvingNavigationMenus, hasResolvedNavigationMenus]); 9630 useEffect(() => { 9631 if (isLoadingInnerBlocks) { 9632 speak('Loading Navigation sidebar selected menu items.'); 9633 } 9634 9635 if (hasLoadedInnerBlocks) { 9636 speak('Navigation sidebar selected menu items have loaded.'); 9637 } 9638 }, [isLoadingInnerBlocks, hasLoadedInnerBlocks]); 9639 return createElement("div", { 9640 className: "edit-site-navigation-inspector" 9641 }, hasResolvedNavigationMenus && !hasNavigationMenus && createElement("p", { 9642 className: "edit-site-navigation-inspector__empty-msg" 9643 }, __('There are no Navigation Menus.')), !hasResolvedNavigationMenus && createElement("div", { 9644 className: "edit-site-navigation-inspector__placeholder" 9645 }), hasResolvedNavigationMenus && hasMoreThanOneNavigationMenu && createElement(SelectControl, { 9646 "aria-controls": // aria-controls should only apply when referenced element is in DOM 9647 hasLoadedInnerBlocks ? navMenuListId : undefined, 9648 value: currentMenuId || defaultNavigationMenuId, 9649 options: options, 9650 onChange: newMenuId => setCurrentMenuId(Number(newMenuId)) 9651 }), isLoading && createElement(Fragment, null, createElement("div", { 9652 className: "edit-site-navigation-inspector__placeholder is-child" 9653 }), createElement("div", { 9654 className: "edit-site-navigation-inspector__placeholder is-child" 9655 }), createElement("div", { 9656 className: "edit-site-navigation-inspector__placeholder is-child" 9657 })), hasInnerBlocks && !isLoading && createElement(BlockEditorProvider, { 9658 value: publishedInnerBlocks, 9659 onChange: onChange, 9660 onInput: onInput 9661 }, createElement(NavigationMenu, { 9662 id: navMenuListId, 9663 innerBlocks: publishedInnerBlocks 9664 })), !hasInnerBlocks && !isLoading && createElement("p", { 9665 className: "edit-site-navigation-inspector__empty-msg" 9666 }, __('Navigation Menu is empty.'))); 9667 } 9668 9669 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/navigation-menu-sidebar/index.js 9670 9671 9672 /** 9673 * WordPress dependencies 9674 */ 9675 9676 9677 9678 /** 9679 * Internal dependencies 9680 */ 9681 9682 9683 9684 function NavigationMenuSidebar() { 9685 return createElement(DefaultSidebar, { 9686 className: "edit-site-navigation-menu-sidebar", 9687 identifier: "edit-site/navigation-menu", 9688 title: __('Navigation Menus'), 9689 icon: navigation, 9690 closeLabel: __('Close navigation menu sidebar'), 9691 panelClassName: "edit-site-navigation-menu-sidebar__panel", 9692 header: createElement(Flex, null, createElement(FlexBlock, null, createElement("strong", null, __('Navigation Menus')))) 9693 }, createElement(NavigationInspector, null)); 9694 } 9695 9696 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/constants.js 9697 const SIDEBAR_TEMPLATE = 'edit-site/template'; 9698 const SIDEBAR_BLOCK = 'edit-site/block-inspector'; 9699 9700 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/settings-header/index.js 9701 9702 9703 /** 9704 * WordPress dependencies 9705 */ 9706 9707 9708 9709 9710 /** 9711 * Internal dependencies 9712 */ 9713 9714 9715 9716 9717 const SettingsHeader = _ref => { 9718 let { 9719 sidebarName 9720 } = _ref; 9721 const { 9722 enableComplementaryArea 9723 } = (0,external_wp_data_namespaceObject.useDispatch)(store); 9724 9725 const openTemplateSettings = () => enableComplementaryArea(STORE_NAME, SIDEBAR_TEMPLATE); 9726 9727 const openBlockSettings = () => enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK); 9728 9729 const [templateAriaLabel, templateActiveClass] = sidebarName === SIDEBAR_TEMPLATE ? // translators: ARIA label for the Template sidebar tab, selected. 9730 [(0,external_wp_i18n_namespaceObject.__)('Template (selected)'), 'is-active'] : // translators: ARIA label for the Template Settings Sidebar tab, not selected. 9731 [(0,external_wp_i18n_namespaceObject.__)('Template'), '']; 9732 const [blockAriaLabel, blockActiveClass] = sidebarName === SIDEBAR_BLOCK ? // translators: ARIA label for the Block Settings Sidebar tab, selected. 9733 [(0,external_wp_i18n_namespaceObject.__)('Block (selected)'), 'is-active'] : // translators: ARIA label for the Block Settings Sidebar tab, not selected. 9734 [(0,external_wp_i18n_namespaceObject.__)('Block'), '']; 9735 /* Use a list so screen readers will announce how many tabs there are. */ 9736 9737 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, { 9738 onClick: openTemplateSettings, 9739 className: `edit-site-sidebar__panel-tab $templateActiveClass}`, 9740 "aria-label": templateAriaLabel // translators: Data label for the Template Settings Sidebar tab. 9741 , 9742 "data-label": (0,external_wp_i18n_namespaceObject.__)('Template') 9743 }, // translators: Text label for the Template Settings Sidebar tab. 9744 (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, { 9745 onClick: openBlockSettings, 9746 className: `edit-site-sidebar__panel-tab $blockActiveClass}`, 9747 "aria-label": blockAriaLabel // translators: Data label for the Block Settings Sidebar tab. 9748 , 9749 "data-label": (0,external_wp_i18n_namespaceObject.__)('Block') 9750 }, // translators: Text label for the Block Settings Sidebar tab. 9751 (0,external_wp_i18n_namespaceObject.__)('Block')))); 9752 }; 9753 9754 /* harmony default export */ var settings_header = (SettingsHeader); 9755 9756 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/template-card/template-areas.js 9757 9758 9759 /** 9760 * WordPress dependencies 9761 */ 9762 9763 9764 9765 9766 9767 /** 9768 * Internal dependencies 9769 */ 9770 9771 9772 9773 function TemplateAreaItem(_ref) { 9774 let { 9775 area, 9776 clientId 9777 } = _ref; 9778 const { 9779 selectBlock, 9780 toggleBlockHighlight 9781 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 9782 const templatePartArea = (0,external_wp_data_namespaceObject.useSelect)(select => { 9783 const defaultAreas = select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas(); 9784 9785 return defaultAreas.find(defaultArea => defaultArea.area === area); 9786 }, [area]); 9787 9788 const highlightBlock = () => toggleBlockHighlight(clientId, true); 9789 9790 const cancelHighlightBlock = () => toggleBlockHighlight(clientId, false); 9791 9792 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 9793 className: "edit-site-template-card__template-areas-item", 9794 icon: templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.icon, 9795 onMouseOver: highlightBlock, 9796 onMouseLeave: cancelHighlightBlock, 9797 onFocus: highlightBlock, 9798 onBlur: cancelHighlightBlock, 9799 onClick: () => { 9800 selectBlock(clientId); 9801 } 9802 }, templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.label); 9803 } 9804 9805 function template_areas_TemplateAreas() { 9806 const templateParts = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getCurrentTemplateTemplateParts(), []); 9807 9808 if (!templateParts.length) { 9809 return null; 9810 } 9811 9812 return (0,external_wp_element_namespaceObject.createElement)("section", { 9813 className: "edit-site-template-card__template-areas" 9814 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, { 9815 level: 3, 9816 className: "edit-site-template-card__template-areas-title" 9817 }, (0,external_wp_i18n_namespaceObject.__)('Areas')), (0,external_wp_element_namespaceObject.createElement)("ul", { 9818 className: "edit-site-template-card__template-areas-list" 9819 }, templateParts.map(_ref2 => { 9820 let { 9821 templatePart, 9822 block 9823 } = _ref2; 9824 return (0,external_wp_element_namespaceObject.createElement)("li", { 9825 key: templatePart.slug 9826 }, (0,external_wp_element_namespaceObject.createElement)(TemplateAreaItem, { 9827 area: templatePart.area, 9828 clientId: block.clientId 9829 })); 9830 }))); 9831 } 9832 9833 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/template-card/index.js 9834 9835 9836 /** 9837 * WordPress dependencies 9838 */ 9839 9840 9841 9842 9843 /** 9844 * Internal dependencies 9845 */ 9846 9847 9848 9849 function TemplateCard() { 9850 const { 9851 title, 9852 description, 9853 icon 9854 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 9855 const { 9856 getEditedPostType, 9857 getEditedPostId 9858 } = select(store_store); 9859 const { 9860 getEntityRecord 9861 } = select(external_wp_coreData_namespaceObject.store); 9862 const { 9863 __experimentalGetTemplateInfo: getTemplateInfo 9864 } = select(external_wp_editor_namespaceObject.store); 9865 const postType = getEditedPostType(); 9866 const postId = getEditedPostId(); 9867 const record = getEntityRecord('postType', postType, postId); 9868 const info = record ? getTemplateInfo(record) : {}; 9869 return info; 9870 }, []); 9871 9872 if (!title && !description) { 9873 return null; 9874 } 9875 9876 return (0,external_wp_element_namespaceObject.createElement)("div", { 9877 className: "edit-site-template-card" 9878 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, { 9879 className: "edit-site-template-card__icon", 9880 icon: icon 9881 }), (0,external_wp_element_namespaceObject.createElement)("div", { 9882 className: "edit-site-template-card__content" 9883 }, (0,external_wp_element_namespaceObject.createElement)("h2", { 9884 className: "edit-site-template-card__title" 9885 }, title), (0,external_wp_element_namespaceObject.createElement)("div", { 9886 className: "edit-site-template-card__description" 9887 }, description), (0,external_wp_element_namespaceObject.createElement)(template_areas_TemplateAreas, null))); 9888 } 9889 9890 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/index.js 9891 9892 9893 /** 9894 * WordPress dependencies 9895 */ 9896 9897 9898 9899 9900 9901 9902 9903 /** 9904 * Internal dependencies 9905 */ 9906 9907 9908 9909 9910 9911 9912 9913 9914 const { 9915 Slot: InspectorSlot, 9916 Fill: InspectorFill 9917 } = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteSidebarInspector'); 9918 const SidebarInspectorFill = InspectorFill; 9919 function SidebarComplementaryAreaFills() { 9920 const { 9921 sidebar, 9922 isEditorSidebarOpened, 9923 hasBlockSelection 9924 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 9925 const _sidebar = select(store).getActiveComplementaryArea(STORE_NAME); 9926 9927 const _isEditorSidebarOpened = [SIDEBAR_BLOCK, SIDEBAR_TEMPLATE].includes(_sidebar); 9928 9929 return { 9930 sidebar: _sidebar, 9931 isEditorSidebarOpened: _isEditorSidebarOpened, 9932 hasBlockSelection: !!select(external_wp_blockEditor_namespaceObject.store).getBlockSelectionStart() 9933 }; 9934 }, []); 9935 const { 9936 enableComplementaryArea 9937 } = (0,external_wp_data_namespaceObject.useDispatch)(store); 9938 (0,external_wp_element_namespaceObject.useEffect)(() => { 9939 if (!isEditorSidebarOpened) return; 9940 9941 if (hasBlockSelection) { 9942 enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK); 9943 } else { 9944 enableComplementaryArea(STORE_NAME, SIDEBAR_TEMPLATE); 9945 } 9946 }, [hasBlockSelection, isEditorSidebarOpened]); 9947 let sidebarName = sidebar; 9948 9949 if (!isEditorSidebarOpened) { 9950 sidebarName = hasBlockSelection ? SIDEBAR_BLOCK : SIDEBAR_TEMPLATE; 9951 } // Conditionally include NavMenu sidebar in Plugin only. 9952 // Optimise for dead code elimination. 9953 // See https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/feature-flags.md#dead-code-elimination. 9954 9955 9956 let MaybeNavigationMenuSidebar = external_wp_element_namespaceObject.Fragment; 9957 9958 if (false) {} 9959 9960 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(default_sidebar_DefaultSidebar, { 9961 identifier: sidebarName, 9962 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 9963 icon: library_cog, 9964 closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close settings sidebar'), 9965 header: (0,external_wp_element_namespaceObject.createElement)(settings_header, { 9966 sidebarName: sidebarName 9967 }), 9968 headerClassName: "edit-site-sidebar__panel-tabs" 9969 }, 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, { 9970 bubblesVirtually: true 9971 })), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesSidebar, null), (0,external_wp_element_namespaceObject.createElement)(MaybeNavigationMenuSidebar, null)); 9972 } 9973 9974 ;// CONCATENATED MODULE: external ["wp","htmlEntities"] 9975 var external_wp_htmlEntities_namespaceObject = window["wp"]["htmlEntities"]; 9976 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/home.js 9977 9978 9979 /** 9980 * WordPress dependencies 9981 */ 9982 9983 const home = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 9984 xmlns: "http://www.w3.org/2000/svg", 9985 viewBox: "0 0 24 24" 9986 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 9987 d: "M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z" 9988 })); 9989 /* harmony default export */ var library_home = (home); 9990 9991 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol-filled.js 9992 9993 9994 /** 9995 * WordPress dependencies 9996 */ 9997 9998 const symbolFilled = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 9999 xmlns: "http://www.w3.org/2000/svg", 10000 viewBox: "0 0 24 24" 10001 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 10002 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" 10003 })); 10004 /* harmony default export */ var symbol_filled = (symbolFilled); 10005 10006 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/main-dashboard-button/index.js 10007 10008 10009 /** 10010 * WordPress dependencies 10011 */ 10012 10013 const slotName = '__experimentalMainDashboardButton'; 10014 const { 10015 Fill, 10016 Slot: MainDashboardButtonSlot 10017 } = (0,external_wp_components_namespaceObject.createSlotFill)(slotName); 10018 const MainDashboardButton = Fill; 10019 10020 const main_dashboard_button_Slot = _ref => { 10021 let { 10022 children 10023 } = _ref; 10024 const slot = (0,external_wp_components_namespaceObject.__experimentalUseSlot)(slotName); 10025 const hasFills = Boolean(slot.fills && slot.fills.length); 10026 10027 if (!hasFills) { 10028 return children; 10029 } 10030 10031 return (0,external_wp_element_namespaceObject.createElement)(MainDashboardButtonSlot, { 10032 bubblesVirtually: true 10033 }); 10034 }; 10035 10036 MainDashboardButton.Slot = main_dashboard_button_Slot; 10037 /* harmony default export */ var main_dashboard_button = (MainDashboardButton); 10038 10039 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-panel/index.js 10040 10041 10042 10043 /** 10044 * External dependencies 10045 */ 10046 10047 /** 10048 * WordPress dependencies 10049 */ 10050 10051 10052 10053 10054 10055 10056 10057 10058 /** 10059 * Internal dependencies 10060 */ 10061 10062 10063 10064 10065 const SITE_EDITOR_KEY = 'site-editor'; 10066 10067 function NavLink(_ref) { 10068 let { 10069 params, 10070 replace, 10071 ...props 10072 } = _ref; 10073 const linkProps = useLink(params, replace); 10074 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationItem, extends_extends({}, linkProps, props)); 10075 } 10076 10077 const NavigationPanel = _ref2 => { 10078 let { 10079 activeItem = SITE_EDITOR_KEY 10080 } = _ref2; 10081 const { 10082 homeTemplate, 10083 isNavigationOpen, 10084 siteTitle 10085 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 10086 const { 10087 getEntityRecord 10088 } = select(external_wp_coreData_namespaceObject.store); 10089 const { 10090 getSettings, 10091 isNavigationOpened 10092 } = select(store_store); 10093 const siteData = getEntityRecord('root', '__unstableBase', undefined) || {}; 10094 return { 10095 siteTitle: siteData.name, 10096 homeTemplate: getSettings().__unstableHomeTemplate, 10097 isNavigationOpen: isNavigationOpened() 10098 }; 10099 }, []); 10100 const { 10101 setIsNavigationPanelOpened 10102 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 10103 10104 const closeOnEscape = event => { 10105 if (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE && !event.defaultPrevented) { 10106 event.preventDefault(); 10107 setIsNavigationPanelOpened(false); 10108 } 10109 }; 10110 10111 return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions 10112 (0,external_wp_element_namespaceObject.createElement)("div", { 10113 className: classnames_default()(`edit-site-navigation-panel`, { 10114 'is-open': isNavigationOpen 10115 }), 10116 onKeyDown: closeOnEscape 10117 }, (0,external_wp_element_namespaceObject.createElement)("div", { 10118 className: "edit-site-navigation-panel__inner" 10119 }, (0,external_wp_element_namespaceObject.createElement)("div", { 10120 className: "edit-site-navigation-panel__site-title-container" 10121 }, (0,external_wp_element_namespaceObject.createElement)("div", { 10122 className: "edit-site-navigation-panel__site-title" 10123 }, (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle))), (0,external_wp_element_namespaceObject.createElement)("div", { 10124 className: "edit-site-navigation-panel__scroll-container" 10125 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigation, { 10126 activeItem: activeItem 10127 }, (0,external_wp_element_namespaceObject.createElement)(main_dashboard_button.Slot, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationBackButton, { 10128 backButtonLabel: (0,external_wp_i18n_namespaceObject.__)('Dashboard'), 10129 className: "edit-site-navigation-panel__back-to-dashboard", 10130 href: "index.php" 10131 })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationMenu, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationGroup, { 10132 title: (0,external_wp_i18n_namespaceObject.__)('Editor') 10133 }, (0,external_wp_element_namespaceObject.createElement)(NavLink, { 10134 icon: library_home, 10135 title: (0,external_wp_i18n_namespaceObject.__)('Site'), 10136 item: SITE_EDITOR_KEY, 10137 params: { 10138 postId: homeTemplate === null || homeTemplate === void 0 ? void 0 : homeTemplate.postId, 10139 postType: homeTemplate === null || homeTemplate === void 0 ? void 0 : homeTemplate.postType 10140 } 10141 }), (0,external_wp_element_namespaceObject.createElement)(NavLink, { 10142 icon: library_layout, 10143 title: (0,external_wp_i18n_namespaceObject.__)('Templates'), 10144 item: "wp_template", 10145 params: { 10146 postId: undefined, 10147 postType: 'wp_template' 10148 } 10149 }), (0,external_wp_element_namespaceObject.createElement)(NavLink, { 10150 icon: symbol_filled, 10151 title: (0,external_wp_i18n_namespaceObject.__)('Template Parts'), 10152 item: "wp_template_part", 10153 params: { 10154 postId: undefined, 10155 postType: 'wp_template_part' 10156 } 10157 }))))))) 10158 ); 10159 }; 10160 10161 /* harmony default export */ var navigation_panel = (NavigationPanel); 10162 10163 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/wordpress.js 10164 10165 10166 /** 10167 * WordPress dependencies 10168 */ 10169 10170 const wordpress = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 10171 xmlns: "http://www.w3.org/2000/svg", 10172 viewBox: "-2 -2 24 24" 10173 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 10174 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" 10175 })); 10176 /* harmony default export */ var library_wordpress = (wordpress); 10177 10178 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-toggle/index.js 10179 10180 10181 /** 10182 * External dependencies 10183 */ 10184 10185 /** 10186 * WordPress dependencies 10187 */ 10188 10189 10190 10191 10192 10193 10194 10195 10196 /** 10197 * Internal dependencies 10198 */ 10199 10200 10201 10202 function NavigationToggle(_ref) { 10203 let { 10204 icon 10205 } = _ref; 10206 const { 10207 isNavigationOpen, 10208 isRequestingSiteIcon, 10209 siteIconUrl 10210 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 10211 const { 10212 getEntityRecord, 10213 isResolving 10214 } = select(external_wp_coreData_namespaceObject.store); 10215 const siteData = getEntityRecord('root', '__unstableBase', undefined) || {}; 10216 return { 10217 isNavigationOpen: select(store_store).isNavigationOpened(), 10218 isRequestingSiteIcon: isResolving('core', 'getEntityRecord', ['root', '__unstableBase', undefined]), 10219 siteIconUrl: siteData.site_icon_url 10220 }; 10221 }, []); 10222 const { 10223 setIsNavigationPanelOpened 10224 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 10225 const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)(); 10226 const navigationToggleRef = (0,external_wp_element_namespaceObject.useRef)(); 10227 (0,external_wp_element_namespaceObject.useEffect)(() => { 10228 // TODO: Remove this effect when alternative solution is merged. 10229 // See: https://github.com/WordPress/gutenberg/pull/37314 10230 if (!isNavigationOpen) { 10231 navigationToggleRef.current.focus(); 10232 } 10233 }, [isNavigationOpen]); 10234 10235 const toggleNavigationPanel = () => setIsNavigationPanelOpened(!isNavigationOpen); 10236 10237 let buttonIcon = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, { 10238 size: "36px", 10239 icon: library_wordpress 10240 }); 10241 const effect = { 10242 expand: { 10243 scale: 1.25, 10244 transition: { 10245 type: 'tween', 10246 duration: '0.3' 10247 } 10248 } 10249 }; 10250 10251 if (siteIconUrl) { 10252 buttonIcon = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.img, { 10253 variants: !disableMotion && effect, 10254 alt: (0,external_wp_i18n_namespaceObject.__)('Site Icon'), 10255 className: "edit-site-navigation-toggle__site-icon", 10256 src: siteIconUrl 10257 }); 10258 } else if (isRequestingSiteIcon) { 10259 buttonIcon = null; 10260 } else if (icon) { 10261 buttonIcon = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, { 10262 size: "36px", 10263 icon: icon 10264 }); 10265 } 10266 10267 const classes = classnames_default()({ 10268 'edit-site-navigation-toggle__button': true, 10269 'has-icon': siteIconUrl 10270 }); 10271 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, { 10272 className: 'edit-site-navigation-toggle' + (isNavigationOpen ? ' is-open' : ''), 10273 whileHover: "expand" 10274 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 10275 className: classes, 10276 label: (0,external_wp_i18n_namespaceObject.__)('Toggle navigation'), 10277 ref: navigationToggleRef // isPressed will add unwanted styles. 10278 , 10279 "aria-pressed": isNavigationOpen, 10280 onClick: toggleNavigationPanel, 10281 showTooltip: true 10282 }, buttonIcon)); 10283 } 10284 10285 /* harmony default export */ var navigation_toggle = (NavigationToggle); 10286 10287 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/index.js 10288 10289 10290 /** 10291 * WordPress dependencies 10292 */ 10293 10294 10295 10296 10297 /** 10298 * Internal dependencies 10299 */ 10300 10301 10302 10303 10304 const { 10305 Fill: NavigationPanelPreviewFill, 10306 Slot: NavigationPanelPreviewSlot 10307 } = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteNavigationPanelPreview'); 10308 const { 10309 Fill: NavigationSidebarFill, 10310 Slot: NavigationSidebarSlot 10311 } = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteNavigationSidebar'); 10312 10313 function NavigationSidebar(_ref) { 10314 let { 10315 isDefaultOpen = false, 10316 activeTemplateType 10317 } = _ref; 10318 const isDesktopViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium'); 10319 const { 10320 setIsNavigationPanelOpened 10321 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 10322 (0,external_wp_element_namespaceObject.useEffect)(function autoOpenNavigationPanelOnViewportChange() { 10323 setIsNavigationPanelOpened(isDefaultOpen && isDesktopViewport); 10324 }, [isDefaultOpen, isDesktopViewport, setIsNavigationPanelOpened]); 10325 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, { 10326 activeItem: activeTemplateType 10327 }), (0,external_wp_element_namespaceObject.createElement)(NavigationPanelPreviewSlot, null)); 10328 } 10329 10330 NavigationSidebar.Slot = NavigationSidebarSlot; 10331 /* harmony default export */ var navigation_sidebar = (NavigationSidebar); 10332 10333 ;// CONCATENATED MODULE: external ["wp","reusableBlocks"] 10334 var external_wp_reusableBlocks_namespaceObject = window["wp"]["reusableBlocks"]; 10335 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/convert-to-regular.js 10336 10337 10338 /** 10339 * WordPress dependencies 10340 */ 10341 10342 10343 10344 10345 function ConvertToRegularBlocks(_ref) { 10346 let { 10347 clientId 10348 } = _ref; 10349 const { 10350 getBlocks 10351 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 10352 const { 10353 replaceBlocks 10354 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 10355 const canRemove = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).canRemoveBlock(clientId), [clientId]); 10356 10357 if (!canRemove) { 10358 return null; 10359 } 10360 10361 return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, null, _ref2 => { 10362 let { 10363 onClose 10364 } = _ref2; 10365 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 10366 onClick: () => { 10367 replaceBlocks(clientId, getBlocks(clientId)); 10368 onClose(); 10369 } 10370 }, (0,external_wp_i18n_namespaceObject.__)('Detach blocks from template part')); 10371 }); 10372 } 10373 10374 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/create-template-part-modal/index.js 10375 10376 10377 /** 10378 * WordPress dependencies 10379 */ 10380 10381 10382 10383 10384 10385 10386 10387 /** 10388 * Internal dependencies 10389 */ 10390 10391 10392 function CreateTemplatePartModal(_ref) { 10393 let { 10394 closeModal, 10395 onCreate 10396 } = _ref; 10397 const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(''); 10398 const [area, setArea] = (0,external_wp_element_namespaceObject.useState)(TEMPLATE_PART_AREA_GENERAL); 10399 const [isSubmitting, setIsSubmitting] = (0,external_wp_element_namespaceObject.useState)(false); 10400 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(CreateTemplatePartModal); 10401 const templatePartAreas = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas(), []); 10402 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, { 10403 title: (0,external_wp_i18n_namespaceObject.__)('Create a template part'), 10404 closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'), 10405 onRequestClose: closeModal, 10406 overlayClassName: "edit-site-create-template-part-modal" 10407 }, (0,external_wp_element_namespaceObject.createElement)("form", { 10408 onSubmit: async event => { 10409 event.preventDefault(); 10410 10411 if (!title) { 10412 return; 10413 } 10414 10415 setIsSubmitting(true); 10416 await onCreate({ 10417 title, 10418 area 10419 }); 10420 } 10421 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, { 10422 label: (0,external_wp_i18n_namespaceObject.__)('Name'), 10423 value: title, 10424 onChange: setTitle, 10425 required: true 10426 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.BaseControl, { 10427 label: (0,external_wp_i18n_namespaceObject.__)('Area'), 10428 id: `edit-site-create-template-part-modal__area-selection-$instanceId}`, 10429 className: "edit-site-create-template-part-modal__area-base-control" 10430 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalRadioGroup, { 10431 label: (0,external_wp_i18n_namespaceObject.__)('Area'), 10432 className: "edit-site-create-template-part-modal__area-radio-group", 10433 id: `edit-site-create-template-part-modal__area-selection-$instanceId}`, 10434 onChange: setArea, 10435 checked: area 10436 }, templatePartAreas.map(_ref2 => { 10437 let { 10438 icon, 10439 label, 10440 area: value, 10441 description 10442 } = _ref2; 10443 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalRadio, { 10444 key: label, 10445 value: value, 10446 className: "edit-site-create-template-part-modal__area-radio" 10447 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, { 10448 align: "start", 10449 justify: "start" 10450 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, { 10451 icon: icon 10452 })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexBlock, { 10453 className: "edit-site-create-template-part-modal__option-label" 10454 }, label, (0,external_wp_element_namespaceObject.createElement)("div", null, description)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, { 10455 className: "edit-site-create-template-part-modal__checkbox" 10456 }, area === value && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, { 10457 icon: library_check 10458 })))); 10459 }))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, { 10460 className: "edit-site-create-template-part-modal__modal-actions", 10461 justify: "flex-end" 10462 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 10463 variant: "secondary", 10464 onClick: () => { 10465 closeModal(); 10466 } 10467 }, (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, { 10468 variant: "primary", 10469 type: "submit", 10470 disabled: !title, 10471 isBusy: isSubmitting 10472 }, (0,external_wp_i18n_namespaceObject.__)('Create')))))); 10473 } 10474 10475 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/convert-to-template-part.js 10476 10477 10478 /** 10479 * External dependencies 10480 */ 10481 10482 /** 10483 * WordPress dependencies 10484 */ 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 /** 10495 * Internal dependencies 10496 */ 10497 10498 10499 function ConvertToTemplatePart(_ref) { 10500 let { 10501 clientIds, 10502 blocks 10503 } = _ref; 10504 const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false); 10505 const { 10506 replaceBlocks 10507 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 10508 const { 10509 saveEntityRecord 10510 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 10511 const { 10512 createSuccessNotice 10513 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 10514 10515 const onConvert = async _ref2 => { 10516 let { 10517 title, 10518 area 10519 } = _ref2; 10520 // Currently template parts only allow latin chars. 10521 // Fallback slug will receive suffix by default. 10522 const cleanSlug = (0,external_lodash_namespaceObject.kebabCase)(title).replace(/[^\w-]+/g, '') || 'wp-custom-part'; 10523 const templatePart = await saveEntityRecord('postType', 'wp_template_part', { 10524 slug: cleanSlug, 10525 title, 10526 content: (0,external_wp_blocks_namespaceObject.serialize)(blocks), 10527 area 10528 }); 10529 replaceBlocks(clientIds, (0,external_wp_blocks_namespaceObject.createBlock)('core/template-part', { 10530 slug: templatePart.slug, 10531 theme: templatePart.theme 10532 })); 10533 createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Template part created.'), { 10534 type: 'snackbar' 10535 }); // The modal and this component will be unmounted because of `replaceBlocks` above, 10536 // so no need to call `closeModal` or `onClose`. 10537 }; 10538 10539 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, { 10540 onClick: () => { 10541 setIsModalOpen(true); 10542 } 10543 }, (0,external_wp_i18n_namespaceObject.__)('Make template part'))), isModalOpen && (0,external_wp_element_namespaceObject.createElement)(CreateTemplatePartModal, { 10544 closeModal: () => { 10545 setIsModalOpen(false); 10546 }, 10547 onCreate: onConvert 10548 })); 10549 } 10550 10551 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/index.js 10552 10553 10554 /** 10555 * WordPress dependencies 10556 */ 10557 10558 10559 /** 10560 * Internal dependencies 10561 */ 10562 10563 10564 10565 function TemplatePartConverter() { 10566 var _blocks$; 10567 10568 const { 10569 clientIds, 10570 blocks 10571 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 10572 const { 10573 getSelectedBlockClientIds, 10574 getBlocksByClientId 10575 } = select(external_wp_blockEditor_namespaceObject.store); 10576 const selectedBlockClientIds = getSelectedBlockClientIds(); 10577 return { 10578 clientIds: selectedBlockClientIds, 10579 blocks: getBlocksByClientId(selectedBlockClientIds) 10580 }; 10581 }, []); // Allow converting a single template part to standard blocks. 10582 10583 if (blocks.length === 1 && ((_blocks$ = blocks[0]) === null || _blocks$ === void 0 ? void 0 : _blocks$.name) === 'core/template-part') { 10584 return (0,external_wp_element_namespaceObject.createElement)(ConvertToRegularBlocks, { 10585 clientId: clientIds[0] 10586 }); 10587 } 10588 10589 return (0,external_wp_element_namespaceObject.createElement)(ConvertToTemplatePart, { 10590 clientIds: clientIds, 10591 blocks: blocks 10592 }); 10593 } 10594 10595 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pencil.js 10596 10597 10598 /** 10599 * WordPress dependencies 10600 */ 10601 10602 const pencil = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 10603 xmlns: "http://www.w3.org/2000/svg", 10604 viewBox: "0 0 24 24" 10605 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 10606 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" 10607 })); 10608 /* harmony default export */ var library_pencil = (pencil); 10609 10610 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/edit.js 10611 /** 10612 * Internal dependencies 10613 */ 10614 10615 /* harmony default export */ var edit = (library_pencil); 10616 10617 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigate-to-link/index.js 10618 10619 10620 /** 10621 * WordPress dependencies 10622 */ 10623 10624 10625 10626 10627 10628 10629 10630 function NavigateToLink(_ref) { 10631 let { 10632 type, 10633 id, 10634 activePage, 10635 onActivePageChange 10636 } = _ref; 10637 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]); 10638 const onClick = (0,external_wp_element_namespaceObject.useMemo)(() => { 10639 if (!(post !== null && post !== void 0 && post.link)) return null; 10640 const path = (0,external_wp_url_namespaceObject.getPathAndQueryString)(post.link); 10641 if (path === (activePage === null || activePage === void 0 ? void 0 : activePage.path)) return null; 10642 return () => onActivePageChange({ 10643 type, 10644 slug: post.slug, 10645 path, 10646 context: { 10647 postType: post.type, 10648 postId: post.id 10649 } 10650 }); 10651 }, [post, activePage === null || activePage === void 0 ? void 0 : activePage.path, onActivePageChange]); 10652 return onClick && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 10653 icon: edit, 10654 label: (0,external_wp_i18n_namespaceObject.__)('Edit Page Template'), 10655 onClick: onClick 10656 }); 10657 } 10658 10659 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/block-inspector-button.js 10660 10661 10662 /** 10663 * WordPress dependencies 10664 */ 10665 10666 10667 10668 10669 10670 10671 /** 10672 * Internal dependencies 10673 */ 10674 10675 10676 10677 10678 function BlockInspectorButton(_ref) { 10679 let { 10680 onClick = () => {} 10681 } = _ref; 10682 const { 10683 shortcut, 10684 isBlockInspectorOpen 10685 } = (0,external_wp_data_namespaceObject.useSelect)(select => ({ 10686 shortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getShortcutRepresentation('core/edit-site/toggle-block-settings-sidebar'), 10687 isBlockInspectorOpen: select(store).getActiveComplementaryArea(store_store.name) === SIDEBAR_BLOCK 10688 }), []); 10689 const { 10690 enableComplementaryArea, 10691 disableComplementaryArea 10692 } = (0,external_wp_data_namespaceObject.useDispatch)(store); 10693 const label = isBlockInspectorOpen ? (0,external_wp_i18n_namespaceObject.__)('Hide more settings') : (0,external_wp_i18n_namespaceObject.__)('Show more settings'); 10694 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 10695 onClick: () => { 10696 if (isBlockInspectorOpen) { 10697 disableComplementaryArea(STORE_NAME); 10698 (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Block settings closed')); 10699 } else { 10700 enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK); 10701 (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Additional settings are now available in the Editor block settings sidebar')); 10702 } // Close dropdown menu. 10703 10704 10705 onClick(); 10706 }, 10707 shortcut: shortcut 10708 }, label); 10709 } 10710 10711 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/edit-template-part-menu-button/index.js 10712 10713 10714 10715 /** 10716 * WordPress dependencies 10717 */ 10718 10719 10720 10721 10722 10723 10724 /** 10725 * Internal dependencies 10726 */ 10727 10728 10729 10730 function EditTemplatePartMenuButton() { 10731 return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, null, _ref => { 10732 let { 10733 selectedClientIds, 10734 onClose 10735 } = _ref; 10736 return (0,external_wp_element_namespaceObject.createElement)(EditTemplatePartMenuItem, { 10737 selectedClientId: selectedClientIds[0], 10738 onClose: onClose 10739 }); 10740 }); 10741 } 10742 10743 function EditTemplatePartMenuItem(_ref2) { 10744 let { 10745 selectedClientId, 10746 onClose 10747 } = _ref2; 10748 const { 10749 params 10750 } = useLocation(); 10751 const selectedTemplatePart = (0,external_wp_data_namespaceObject.useSelect)(select => { 10752 const block = select(external_wp_blockEditor_namespaceObject.store).getBlock(selectedClientId); 10753 10754 if (block && (0,external_wp_blocks_namespaceObject.isTemplatePart)(block)) { 10755 const { 10756 theme, 10757 slug 10758 } = block.attributes; 10759 return select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', 'wp_template_part', // Ideally this should be an official public API. 10760 `$theme}//${slug}`); 10761 } 10762 }, [selectedClientId]); 10763 const linkProps = useLink({ 10764 postId: selectedTemplatePart === null || selectedTemplatePart === void 0 ? void 0 : selectedTemplatePart.id, 10765 postType: selectedTemplatePart === null || selectedTemplatePart === void 0 ? void 0 : selectedTemplatePart.type 10766 }, { 10767 fromTemplateId: params.postId 10768 }); 10769 10770 if (!selectedTemplatePart) { 10771 return null; 10772 } 10773 10774 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, extends_extends({}, linkProps, { 10775 onClick: event => { 10776 linkProps.onClick(event); 10777 onClose(); 10778 } 10779 }), 10780 /* translators: %s: template part title */ 10781 (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Edit %s'), selectedTemplatePart.slug)); 10782 } 10783 10784 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/arrow-left.js 10785 10786 10787 /** 10788 * WordPress dependencies 10789 */ 10790 10791 const arrowLeft = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 10792 xmlns: "http://www.w3.org/2000/svg", 10793 viewBox: "0 0 24 24" 10794 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 10795 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" 10796 })); 10797 /* harmony default export */ var arrow_left = (arrowLeft); 10798 10799 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/back-button.js 10800 10801 10802 /** 10803 * WordPress dependencies 10804 */ 10805 10806 10807 10808 /** 10809 * Internal dependencies 10810 */ 10811 10812 10813 10814 function BackButton() { 10815 var _location$state; 10816 10817 const location = useLocation(); 10818 const history = useHistory(); 10819 const isTemplatePart = location.params.postType === 'wp_template_part'; 10820 const previousTemplateId = (_location$state = location.state) === null || _location$state === void 0 ? void 0 : _location$state.fromTemplateId; 10821 10822 if (!isTemplatePart || !previousTemplateId) { 10823 return null; 10824 } 10825 10826 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 10827 className: "edit-site-visual-editor__back-button", 10828 icon: arrow_left, 10829 onClick: () => { 10830 history.back(); 10831 } 10832 }, (0,external_wp_i18n_namespaceObject.__)('Back')); 10833 } 10834 10835 /* harmony default export */ var back_button = (BackButton); 10836 10837 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/resize-handle.js 10838 10839 10840 /** 10841 * WordPress dependencies 10842 */ 10843 10844 10845 10846 const DELTA_DISTANCE = 20; // The distance to resize per keydown in pixels. 10847 10848 function ResizeHandle(_ref) { 10849 let { 10850 direction, 10851 resizeWidthBy 10852 } = _ref; 10853 10854 function handleKeyDown(event) { 10855 const { 10856 keyCode 10857 } = event; 10858 10859 if (direction === 'left' && keyCode === external_wp_keycodes_namespaceObject.LEFT || direction === 'right' && keyCode === external_wp_keycodes_namespaceObject.RIGHT) { 10860 resizeWidthBy(DELTA_DISTANCE); 10861 } else if (direction === 'left' && keyCode === external_wp_keycodes_namespaceObject.RIGHT || direction === 'right' && keyCode === external_wp_keycodes_namespaceObject.LEFT) { 10862 resizeWidthBy(-DELTA_DISTANCE); 10863 } 10864 } 10865 10866 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("button", { 10867 className: `resizable-editor__drag-handle is-$direction}`, 10868 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Drag to resize'), 10869 "aria-describedby": `resizable-editor__resize-help-$direction}`, 10870 onKeyDown: handleKeyDown 10871 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, { 10872 id: `resizable-editor__resize-help-$direction}` 10873 }, (0,external_wp_i18n_namespaceObject.__)('Use left and right arrow keys to resize the canvas.'))); 10874 } 10875 10876 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/resizable-editor.js 10877 10878 10879 10880 /** 10881 * WordPress dependencies 10882 */ 10883 10884 10885 10886 10887 10888 /** 10889 * Internal dependencies 10890 */ 10891 10892 10893 10894 const DEFAULT_STYLES = { 10895 width: '100%', 10896 height: '100%' 10897 }; // Removes the inline styles in the drag handles. 10898 10899 const HANDLE_STYLES_OVERRIDE = { 10900 position: undefined, 10901 userSelect: undefined, 10902 cursor: undefined, 10903 width: undefined, 10904 height: undefined, 10905 top: undefined, 10906 right: undefined, 10907 bottom: undefined, 10908 left: undefined 10909 }; 10910 10911 function ResizableEditor(_ref) { 10912 let { 10913 enableResizing, 10914 settings, 10915 children, 10916 ...props 10917 } = _ref; 10918 const deviceType = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).__experimentalGetPreviewDeviceType(), []); 10919 const deviceStyles = (0,external_wp_blockEditor_namespaceObject.__experimentalUseResizeCanvas)(deviceType); 10920 const [width, setWidth] = (0,external_wp_element_namespaceObject.useState)(DEFAULT_STYLES.width); 10921 const [height, setHeight] = (0,external_wp_element_namespaceObject.useState)(DEFAULT_STYLES.height); 10922 const iframeRef = (0,external_wp_element_namespaceObject.useRef)(); 10923 const mouseMoveTypingResetRef = (0,external_wp_blockEditor_namespaceObject.__unstableUseMouseMoveTypingReset)(); 10924 const ref = (0,external_wp_compose_namespaceObject.useMergeRefs)([iframeRef, mouseMoveTypingResetRef]); 10925 (0,external_wp_element_namespaceObject.useEffect)(function autoResizeIframeHeight() { 10926 const iframe = iframeRef.current; 10927 10928 if (!iframe || !enableResizing) { 10929 return; 10930 } 10931 10932 let animationFrame = null; 10933 10934 function resizeHeight() { 10935 if (!animationFrame) { 10936 // Throttle the updates on animation frame. 10937 animationFrame = iframe.contentWindow.requestAnimationFrame(() => { 10938 setHeight(iframe.contentDocument.documentElement.scrollHeight); 10939 animationFrame = null; 10940 }); 10941 } 10942 } 10943 10944 let resizeObserver; 10945 10946 function registerObserver() { 10947 var _resizeObserver; 10948 10949 (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : _resizeObserver.disconnect(); 10950 resizeObserver = new iframe.contentWindow.ResizeObserver(resizeHeight); // Observing the <html> rather than the <body> because the latter 10951 // gets destroyed and remounted after initialization in <Iframe>. 10952 10953 resizeObserver.observe(iframe.contentDocument.documentElement); 10954 resizeHeight(); 10955 } // This is only required in Firefox for some unknown reasons. 10956 10957 10958 iframe.addEventListener('load', registerObserver); // This is required in Chrome and Safari. 10959 10960 registerObserver(); 10961 return () => { 10962 var _iframe$contentWindow, _resizeObserver2; 10963 10964 (_iframe$contentWindow = iframe.contentWindow) === null || _iframe$contentWindow === void 0 ? void 0 : _iframe$contentWindow.cancelAnimationFrame(animationFrame); 10965 (_resizeObserver2 = resizeObserver) === null || _resizeObserver2 === void 0 ? void 0 : _resizeObserver2.disconnect(); 10966 iframe.removeEventListener('load', registerObserver); 10967 }; 10968 }, [enableResizing]); 10969 const resizeWidthBy = (0,external_wp_element_namespaceObject.useCallback)(deltaPixels => { 10970 if (iframeRef.current) { 10971 setWidth(iframeRef.current.offsetWidth + deltaPixels); 10972 } 10973 }, []); 10974 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ResizableBox, { 10975 size: { 10976 width, 10977 height 10978 }, 10979 onResizeStop: (event, direction, element) => { 10980 setWidth(element.style.width); 10981 }, 10982 minWidth: 300, 10983 maxWidth: "100%", 10984 maxHeight: "100%", 10985 enable: { 10986 right: enableResizing, 10987 left: enableResizing 10988 }, 10989 showHandle: enableResizing // The editor is centered horizontally, resizing it only 10990 // moves half the distance. Hence double the ratio to correctly 10991 // align the cursor to the resizer handle. 10992 , 10993 resizeRatio: 2, 10994 handleComponent: { 10995 left: (0,external_wp_element_namespaceObject.createElement)(ResizeHandle, { 10996 direction: "left", 10997 resizeWidthBy: resizeWidthBy 10998 }), 10999 right: (0,external_wp_element_namespaceObject.createElement)(ResizeHandle, { 11000 direction: "right", 11001 resizeWidthBy: resizeWidthBy 11002 }) 11003 }, 11004 handleClasses: undefined, 11005 handleStyles: { 11006 left: HANDLE_STYLES_OVERRIDE, 11007 right: HANDLE_STYLES_OVERRIDE 11008 } 11009 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableIframe, extends_extends({ 11010 style: enableResizing ? undefined : deviceStyles, 11011 head: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, { 11012 styles: settings.styles 11013 }), (0,external_wp_element_namespaceObject.createElement)("style", null, // Forming a "block formatting context" to prevent margin collapsing. 11014 // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context 11015 `.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. 11016 `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, 11017 // which isn't a requirement in auto resize mode. 11018 `.is-root-container { min-height: 0 !important; }`)), 11019 assets: settings.__unstableResolvedAssets, 11020 ref: ref, 11021 name: "editor-canvas", 11022 className: "edit-site-visual-editor__editor-canvas" 11023 }, props), settings.svgFilters, children)); 11024 } 11025 11026 /* harmony default export */ var resizable_editor = (ResizableEditor); 11027 11028 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/index.js 11029 11030 11031 11032 /** 11033 * External dependencies 11034 */ 11035 11036 /** 11037 * WordPress dependencies 11038 */ 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 /** 11051 * Internal dependencies 11052 */ 11053 11054 11055 11056 11057 11058 11059 11060 11061 11062 const LAYOUT = { 11063 type: 'default', 11064 // At the root level of the site editor, no alignments should be allowed. 11065 alignments: [] 11066 }; 11067 function BlockEditor(_ref) { 11068 let { 11069 setIsInserterOpen 11070 } = _ref; 11071 const { 11072 settings 11073 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 11074 let storedSettings = select(store_store).getSettings(setIsInserterOpen); 11075 11076 if (!storedSettings.__experimentalBlockPatterns) { 11077 storedSettings = { ...storedSettings, 11078 __experimentalBlockPatterns: select(external_wp_coreData_namespaceObject.store).getBlockPatterns() 11079 }; 11080 } 11081 11082 if (!storedSettings.__experimentalBlockPatternCategories) { 11083 storedSettings = { ...storedSettings, 11084 __experimentalBlockPatternCategories: select(external_wp_coreData_namespaceObject.store).getBlockPatternCategories() 11085 }; 11086 } 11087 11088 return { 11089 settings: storedSettings 11090 }; 11091 }, [setIsInserterOpen]); 11092 const { 11093 templateType, 11094 templateId, 11095 page 11096 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 11097 const { 11098 getEditedPostType, 11099 getEditedPostId, 11100 getPage 11101 } = select(store_store); 11102 return { 11103 templateType: getEditedPostType(), 11104 templateId: getEditedPostId(), 11105 page: getPage() 11106 }; 11107 }, [setIsInserterOpen]); 11108 const [blocks, onInput, onChange] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', templateType); 11109 const { 11110 setPage 11111 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 11112 const { 11113 enableComplementaryArea 11114 } = (0,external_wp_data_namespaceObject.useDispatch)(store); 11115 const openNavigationSidebar = (0,external_wp_element_namespaceObject.useCallback)(() => { 11116 enableComplementaryArea('core/edit-site', 'edit-site/navigation-menu'); 11117 }, [enableComplementaryArea]); 11118 const contentRef = (0,external_wp_element_namespaceObject.useRef)(); 11119 const mergedRefs = (0,external_wp_compose_namespaceObject.useMergeRefs)([contentRef, (0,external_wp_blockEditor_namespaceObject.__unstableUseTypingObserver)()]); 11120 const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<'); 11121 const { 11122 clearSelectedBlock 11123 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 11124 const isTemplatePart = templateType === 'wp_template_part'; 11125 11126 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, { 11127 className: "components-toolbar__control", 11128 label: (0,external_wp_i18n_namespaceObject.__)('Open list view'), 11129 onClick: openNavigationSidebar, 11130 icon: list_view 11131 })); // Conditionally include NavMenu sidebar in Plugin only. 11132 // Optimise for dead code elimination. 11133 // See https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/feature-flags.md#dead-code-elimination. 11134 11135 11136 let MaybeNavMenuSidebarToggle = external_wp_element_namespaceObject.Fragment; 11137 11138 if (false) {} 11139 11140 return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, { 11141 settings: settings, 11142 value: blocks, 11143 onInput: onInput, 11144 onChange: onChange, 11145 useSubRegistry: false 11146 }, (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, { 11147 activePage: page, 11148 onActivePageChange: setPage 11149 })), [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, { 11150 className: classnames_default()('edit-site-visual-editor', { 11151 'is-focus-mode': isTemplatePart 11152 }), 11153 __unstableContentRef: contentRef, 11154 onClick: event => { 11155 // Clear selected block when clicking on the gray background. 11156 if (event.target === event.currentTarget) { 11157 clearSelectedBlock(); 11158 } 11159 } 11160 }, (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. 11161 , { 11162 key: templateId, 11163 enableResizing: isTemplatePart && // Disable resizing in mobile viewport. 11164 !isMobileViewport, 11165 settings: settings, 11166 contentRef: mergedRefs 11167 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockList, { 11168 className: "edit-site-block-editor__block-list wp-site-blocks", 11169 __experimentalLayout: LAYOUT, 11170 renderAppender: isTemplatePart ? false : undefined 11171 })), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableBlockSettingsMenuFirstItem, null, _ref2 => { 11172 let { 11173 onClose 11174 } = _ref2; 11175 return (0,external_wp_element_namespaceObject.createElement)(BlockInspectorButton, { 11176 onClick: onClose 11177 }); 11178 }), (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)); 11179 } 11180 11181 // EXTERNAL MODULE: ./node_modules/react-autosize-textarea/lib/index.js 11182 var lib = __webpack_require__(773); 11183 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/code-editor/code-editor-text-area.js 11184 11185 11186 /** 11187 * External dependencies 11188 */ 11189 11190 /** 11191 * WordPress dependencies 11192 */ 11193 11194 /** 11195 * WordPress dependencies 11196 */ 11197 11198 /** 11199 * WordPress dependencies 11200 */ 11201 11202 11203 11204 11205 11206 function CodeEditorTextArea(_ref) { 11207 let { 11208 value, 11209 onChange, 11210 onInput 11211 } = _ref; 11212 const [stateValue, setStateValue] = (0,external_wp_element_namespaceObject.useState)(value); 11213 const [isDirty, setIsDirty] = (0,external_wp_element_namespaceObject.useState)(false); 11214 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(CodeEditorTextArea); 11215 11216 if (!isDirty && stateValue !== value) { 11217 setStateValue(value); 11218 } 11219 /** 11220 * Handles a textarea change event to notify the onChange prop callback and 11221 * reflect the new value in the component's own state. This marks the start 11222 * of the user's edits, if not already changed, preventing future props 11223 * changes to value from replacing the rendered value. This is expected to 11224 * be followed by a reset to dirty state via `stopEditing`. 11225 * 11226 * @see stopEditing 11227 * 11228 * @param {Event} event Change event. 11229 */ 11230 11231 11232 const onChangeHandler = event => { 11233 const newValue = event.target.value; 11234 onInput(newValue); 11235 setStateValue(newValue); 11236 setIsDirty(true); 11237 }; 11238 /** 11239 * Function called when the user has completed their edits, responsible for 11240 * ensuring that changes, if made, are surfaced to the onPersist prop 11241 * callback and resetting dirty state. 11242 */ 11243 11244 11245 const stopEditing = () => { 11246 if (isDirty) { 11247 onChange(stateValue); 11248 setIsDirty(false); 11249 } 11250 }; 11251 11252 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, { 11253 as: "label", 11254 htmlFor: `code-editor-text-area-$instanceId}` 11255 }, (0,external_wp_i18n_namespaceObject.__)('Type text or HTML')), (0,external_wp_element_namespaceObject.createElement)(lib/* default */.Z, { 11256 autoComplete: "off", 11257 dir: "auto", 11258 value: stateValue, 11259 onChange: onChangeHandler, 11260 onBlur: stopEditing, 11261 className: "edit-site-code-editor-text-area", 11262 id: `code-editor-text-area-$instanceId}`, 11263 placeholder: (0,external_wp_i18n_namespaceObject.__)('Start writing with text or HTML') 11264 })); 11265 } 11266 11267 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/code-editor/index.js 11268 11269 11270 /** 11271 * WordPress dependencies 11272 */ 11273 11274 11275 11276 11277 11278 11279 /** 11280 * Internal dependencies 11281 */ 11282 11283 11284 11285 function CodeEditor() { 11286 const { 11287 templateType, 11288 shortcut 11289 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 11290 const { 11291 getEditedPostType 11292 } = select(store_store); 11293 const { 11294 getShortcutRepresentation 11295 } = select(external_wp_keyboardShortcuts_namespaceObject.store); 11296 return { 11297 templateType: getEditedPostType(), 11298 shortcut: getShortcutRepresentation('core/edit-site/toggle-mode') 11299 }; 11300 }, []); 11301 const [contentStructure, setContent] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', templateType, 'content'); 11302 const [blocks,, onChange] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', templateType); 11303 const content = contentStructure instanceof Function ? contentStructure({ 11304 blocks 11305 }) : contentStructure; 11306 const { 11307 switchEditorMode 11308 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 11309 return (0,external_wp_element_namespaceObject.createElement)("div", { 11310 className: "edit-site-code-editor" 11311 }, (0,external_wp_element_namespaceObject.createElement)("div", { 11312 className: "edit-site-code-editor__toolbar" 11313 }, (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, { 11314 variant: "tertiary", 11315 onClick: () => switchEditorMode('visual'), 11316 shortcut: shortcut 11317 }, (0,external_wp_i18n_namespaceObject.__)('Exit code editor'))), (0,external_wp_element_namespaceObject.createElement)("div", { 11318 className: "edit-site-code-editor__body" 11319 }, (0,external_wp_element_namespaceObject.createElement)(CodeEditorTextArea, { 11320 value: content, 11321 onChange: newContent => { 11322 onChange((0,external_wp_blocks_namespaceObject.parse)(newContent), { 11323 selection: undefined 11324 }); 11325 }, 11326 onInput: setContent 11327 }))); 11328 } 11329 11330 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcuts/index.js 11331 /** 11332 * WordPress dependencies 11333 */ 11334 11335 11336 11337 11338 11339 11340 /** 11341 * Internal dependencies 11342 */ 11343 11344 11345 11346 11347 11348 function KeyboardShortcuts(_ref) { 11349 let { 11350 openEntitiesSavedStates 11351 } = _ref; 11352 const { 11353 __experimentalGetDirtyEntityRecords, 11354 isSavingEntityRecord 11355 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store); 11356 const { 11357 getEditorMode 11358 } = (0,external_wp_data_namespaceObject.useSelect)(store_store); 11359 const isListViewOpen = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).isListViewOpened(), []); 11360 const isBlockInspectorOpen = (0,external_wp_data_namespaceObject.useSelect)(select => select(store).getActiveComplementaryArea(store_store.name) === SIDEBAR_BLOCK, []); 11361 const { 11362 redo, 11363 undo 11364 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 11365 const { 11366 setIsListViewOpened, 11367 switchEditorMode 11368 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 11369 const { 11370 enableComplementaryArea, 11371 disableComplementaryArea 11372 } = (0,external_wp_data_namespaceObject.useDispatch)(store); 11373 (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/save', event => { 11374 event.preventDefault(); 11375 11376 const dirtyEntityRecords = __experimentalGetDirtyEntityRecords(); 11377 11378 const isDirty = !!dirtyEntityRecords.length; 11379 const isSaving = dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key)); 11380 11381 if (!isSaving && isDirty) { 11382 openEntitiesSavedStates(); 11383 } 11384 }); 11385 (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/undo', event => { 11386 undo(); 11387 event.preventDefault(); 11388 }); 11389 (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/redo', event => { 11390 redo(); 11391 event.preventDefault(); 11392 }); 11393 (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/toggle-list-view', () => { 11394 setIsListViewOpened(!isListViewOpen); 11395 }); 11396 (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/toggle-block-settings-sidebar', event => { 11397 // This shortcut has no known clashes, but use preventDefault to prevent any 11398 // obscure shortcuts from triggering. 11399 event.preventDefault(); 11400 11401 if (isBlockInspectorOpen) { 11402 disableComplementaryArea(STORE_NAME); 11403 } else { 11404 enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK); 11405 } 11406 }); 11407 (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/toggle-mode', () => { 11408 switchEditorMode(getEditorMode() === 'visual' ? 'text' : 'visual'); 11409 }); 11410 return null; 11411 } 11412 11413 function KeyboardShortcutsRegister() { 11414 // Registering the shortcuts. 11415 const { 11416 registerShortcut 11417 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_keyboardShortcuts_namespaceObject.store); 11418 (0,external_wp_element_namespaceObject.useEffect)(() => { 11419 registerShortcut({ 11420 name: 'core/edit-site/save', 11421 category: 'global', 11422 description: (0,external_wp_i18n_namespaceObject.__)('Save your changes.'), 11423 keyCombination: { 11424 modifier: 'primary', 11425 character: 's' 11426 } 11427 }); 11428 registerShortcut({ 11429 name: 'core/edit-site/undo', 11430 category: 'global', 11431 description: (0,external_wp_i18n_namespaceObject.__)('Undo your last changes.'), 11432 keyCombination: { 11433 modifier: 'primary', 11434 character: 'z' 11435 } 11436 }); 11437 registerShortcut({ 11438 name: 'core/edit-site/redo', 11439 category: 'global', 11440 description: (0,external_wp_i18n_namespaceObject.__)('Redo your last undo.'), 11441 keyCombination: { 11442 modifier: 'primaryShift', 11443 character: 'z' 11444 } 11445 }); 11446 registerShortcut({ 11447 name: 'core/edit-site/toggle-list-view', 11448 category: 'global', 11449 description: (0,external_wp_i18n_namespaceObject.__)('Open the block list view.'), 11450 keyCombination: { 11451 modifier: 'access', 11452 character: 'o' 11453 } 11454 }); 11455 registerShortcut({ 11456 name: 'core/edit-site/toggle-block-settings-sidebar', 11457 category: 'global', 11458 description: (0,external_wp_i18n_namespaceObject.__)('Show or hide the block settings sidebar.'), 11459 keyCombination: { 11460 modifier: 'primaryShift', 11461 character: ',' 11462 } 11463 }); 11464 registerShortcut({ 11465 name: 'core/edit-site/keyboard-shortcuts', 11466 category: 'main', 11467 description: (0,external_wp_i18n_namespaceObject.__)('Display these keyboard shortcuts.'), 11468 keyCombination: { 11469 modifier: 'access', 11470 character: 'h' 11471 } 11472 }); 11473 registerShortcut({ 11474 name: 'core/edit-site/next-region', 11475 category: 'global', 11476 description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the next part of the editor.'), 11477 keyCombination: { 11478 modifier: 'ctrl', 11479 character: '`' 11480 }, 11481 aliases: [{ 11482 modifier: 'access', 11483 character: 'n' 11484 }] 11485 }); 11486 registerShortcut({ 11487 name: 'core/edit-site/previous-region', 11488 category: 'global', 11489 description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous part of the editor.'), 11490 keyCombination: { 11491 modifier: 'ctrlShift', 11492 character: '`' 11493 }, 11494 aliases: [{ 11495 modifier: 'access', 11496 character: 'p' 11497 }] 11498 }); 11499 registerShortcut({ 11500 name: 'core/edit-site/toggle-mode', 11501 category: 'global', 11502 description: (0,external_wp_i18n_namespaceObject.__)('Switch between visual editor and code editor.'), 11503 keyCombination: { 11504 modifier: 'secondary', 11505 character: 'm' 11506 } 11507 }); 11508 }, [registerShortcut]); 11509 return null; 11510 } 11511 11512 KeyboardShortcuts.Register = KeyboardShortcutsRegister; 11513 /* harmony default export */ var keyboard_shortcuts = (KeyboardShortcuts); 11514 11515 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/url-query-controller/index.js 11516 /** 11517 * WordPress dependencies 11518 */ 11519 11520 11521 /** 11522 * Internal dependencies 11523 */ 11524 11525 11526 11527 function URLQueryController() { 11528 const { 11529 setTemplate, 11530 setTemplatePart, 11531 setPage 11532 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 11533 const { 11534 params: { 11535 postId, 11536 postType 11537 } 11538 } = useLocation(); // Set correct entity on page navigation. 11539 11540 (0,external_wp_element_namespaceObject.useEffect)(() => { 11541 if ('page' === postType || 'post' === postType) { 11542 setPage({ 11543 context: { 11544 postType, 11545 postId 11546 } 11547 }); // Resolves correct template based on ID. 11548 } else if ('wp_template' === postType) { 11549 setTemplate(postId); 11550 } else if ('wp_template_part' === postType) { 11551 setTemplatePart(postId); 11552 } 11553 }, [postId, postType]); 11554 return null; 11555 } 11556 11557 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close.js 11558 11559 11560 /** 11561 * WordPress dependencies 11562 */ 11563 11564 const close_close = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 11565 xmlns: "http://www.w3.org/2000/svg", 11566 viewBox: "0 0 24 24" 11567 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 11568 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" 11569 })); 11570 /* harmony default export */ var library_close = (close_close); 11571 11572 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/secondary-sidebar/inserter-sidebar.js 11573 11574 11575 11576 /** 11577 * WordPress dependencies 11578 */ 11579 11580 11581 11582 11583 11584 11585 11586 /** 11587 * Internal dependencies 11588 */ 11589 11590 11591 function InserterSidebar() { 11592 const { 11593 setIsInserterOpened 11594 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 11595 const insertionPoint = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).__experimentalGetInsertionPoint(), []); 11596 const isMobile = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<'); 11597 const TagName = !isMobile ? external_wp_components_namespaceObject.VisuallyHidden : 'div'; 11598 const [inserterDialogRef, inserterDialogProps] = (0,external_wp_compose_namespaceObject.__experimentalUseDialog)({ 11599 onClose: () => setIsInserterOpened(false), 11600 focusOnMount: null 11601 }); 11602 const libraryRef = (0,external_wp_element_namespaceObject.useRef)(); 11603 (0,external_wp_element_namespaceObject.useEffect)(() => { 11604 libraryRef.current.focusSearch(); 11605 }, []); 11606 return (0,external_wp_element_namespaceObject.createElement)("div", extends_extends({ 11607 ref: inserterDialogRef 11608 }, inserterDialogProps, { 11609 className: "edit-site-editor__inserter-panel" 11610 }), (0,external_wp_element_namespaceObject.createElement)(TagName, { 11611 className: "edit-site-editor__inserter-panel-header" 11612 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 11613 icon: library_close, 11614 label: (0,external_wp_i18n_namespaceObject.__)('Close block inserter'), 11615 onClick: () => setIsInserterOpened(false) 11616 })), (0,external_wp_element_namespaceObject.createElement)("div", { 11617 className: "edit-site-editor__inserter-panel-content" 11618 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalLibrary, { 11619 showInserterHelpPanel: true, 11620 shouldFocusBlock: isMobile, 11621 rootClientId: insertionPoint.rootClientId, 11622 __experimentalInsertionIndex: insertionPoint.insertionIndex, 11623 __experimentalFilterValue: insertionPoint.filterValue, 11624 ref: libraryRef 11625 }))); 11626 } 11627 11628 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/secondary-sidebar/list-view-sidebar.js 11629 11630 11631 /** 11632 * WordPress dependencies 11633 */ 11634 11635 11636 11637 11638 11639 11640 11641 /** 11642 * Internal dependencies 11643 */ 11644 11645 11646 function ListViewSidebar() { 11647 const { 11648 setIsListViewOpened 11649 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 11650 const focusOnMountRef = (0,external_wp_compose_namespaceObject.useFocusOnMount)('firstElement'); 11651 const headerFocusReturnRef = (0,external_wp_compose_namespaceObject.useFocusReturn)(); 11652 const contentFocusReturnRef = (0,external_wp_compose_namespaceObject.useFocusReturn)(); 11653 11654 function closeOnEscape(event) { 11655 if (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE && !event.defaultPrevented) { 11656 setIsListViewOpened(false); 11657 } 11658 } 11659 11660 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(ListViewSidebar); 11661 const labelId = `edit-site-editor__list-view-panel-label-$instanceId}`; 11662 return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions 11663 (0,external_wp_element_namespaceObject.createElement)("div", { 11664 "aria-labelledby": labelId, 11665 className: "edit-site-editor__list-view-panel", 11666 onKeyDown: closeOnEscape 11667 }, (0,external_wp_element_namespaceObject.createElement)("div", { 11668 className: "edit-site-editor__list-view-panel-header", 11669 ref: headerFocusReturnRef 11670 }, (0,external_wp_element_namespaceObject.createElement)("strong", { 11671 id: labelId 11672 }, (0,external_wp_i18n_namespaceObject.__)('List View')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 11673 icon: close_small, 11674 label: (0,external_wp_i18n_namespaceObject.__)('Close List View Sidebar'), 11675 onClick: () => setIsListViewOpened(false) 11676 })), (0,external_wp_element_namespaceObject.createElement)("div", { 11677 className: "edit-site-editor__list-view-panel-content", 11678 ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([contentFocusReturnRef, focusOnMountRef]) 11679 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalListView, { 11680 showNestedBlocks: true, 11681 __experimentalFeatures: true, 11682 __experimentalPersistentListViewFeatures: true 11683 }))) 11684 ); 11685 } 11686 11687 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/error-boundary/warning.js 11688 11689 11690 /** 11691 * WordPress dependencies 11692 */ 11693 11694 11695 11696 11697 11698 function CopyButton(_ref) { 11699 let { 11700 text, 11701 children 11702 } = _ref; 11703 const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(text); 11704 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 11705 variant: "secondary", 11706 ref: ref 11707 }, children); 11708 } 11709 11710 function ErrorBoundaryWarning(_ref2) { 11711 let { 11712 message, 11713 error, 11714 reboot, 11715 dashboardLink 11716 } = _ref2; 11717 const actions = []; 11718 11719 if (reboot) { 11720 actions.push((0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 11721 key: "recovery", 11722 onClick: reboot, 11723 variant: "secondary" 11724 }, (0,external_wp_i18n_namespaceObject.__)('Attempt Recovery'))); 11725 } 11726 11727 if (error) { 11728 actions.push((0,external_wp_element_namespaceObject.createElement)(CopyButton, { 11729 key: "copy-error", 11730 text: error.stack 11731 }, (0,external_wp_i18n_namespaceObject.__)('Copy Error'))); 11732 } 11733 11734 if (dashboardLink) { 11735 actions.push((0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 11736 key: "back-to-dashboard", 11737 variant: "secondary", 11738 href: dashboardLink 11739 }, (0,external_wp_i18n_namespaceObject.__)('Back to dashboard'))); 11740 } 11741 11742 return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.Warning, { 11743 className: "editor-error-boundary", 11744 actions: actions 11745 }, message); 11746 } 11747 11748 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/error-boundary/index.js 11749 11750 11751 /** 11752 * WordPress dependencies 11753 */ 11754 11755 11756 /** 11757 * Internal dependencies 11758 */ 11759 11760 11761 class ErrorBoundary extends external_wp_element_namespaceObject.Component { 11762 constructor() { 11763 super(...arguments); 11764 this.reboot = this.reboot.bind(this); 11765 this.state = { 11766 error: null 11767 }; 11768 } 11769 11770 static getDerivedStateFromError(error) { 11771 return { 11772 error 11773 }; 11774 } 11775 11776 reboot() { 11777 this.props.onError(); 11778 } 11779 11780 render() { 11781 const { 11782 error 11783 } = this.state; 11784 11785 if (!error) { 11786 return this.props.children; 11787 } 11788 11789 return (0,external_wp_element_namespaceObject.createElement)(ErrorBoundaryWarning, { 11790 message: (0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error.'), 11791 error: error, 11792 reboot: this.reboot 11793 }); 11794 } 11795 11796 } 11797 11798 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/image.js 11799 11800 function WelcomeGuideImage(_ref) { 11801 let { 11802 nonAnimatedSrc, 11803 animatedSrc 11804 } = _ref; 11805 return (0,external_wp_element_namespaceObject.createElement)("picture", { 11806 className: "edit-site-welcome-guide__image" 11807 }, (0,external_wp_element_namespaceObject.createElement)("source", { 11808 srcSet: nonAnimatedSrc, 11809 media: "(prefers-reduced-motion: reduce)" 11810 }), (0,external_wp_element_namespaceObject.createElement)("img", { 11811 src: animatedSrc, 11812 width: "312", 11813 height: "240", 11814 alt: "" 11815 })); 11816 } 11817 11818 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/editor.js 11819 11820 11821 /** 11822 * WordPress dependencies 11823 */ 11824 11825 11826 11827 11828 11829 /** 11830 * Internal dependencies 11831 */ 11832 11833 11834 function WelcomeGuideEditor() { 11835 const { 11836 toggle 11837 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store); 11838 const isActive = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuide'), []); 11839 11840 if (!isActive) { 11841 return null; 11842 } 11843 11844 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Guide, { 11845 className: "edit-site-welcome-guide", 11846 contentLabel: (0,external_wp_i18n_namespaceObject.__)('Welcome to the site editor'), 11847 finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Get Started'), 11848 onFinish: () => toggle('core/edit-site', 'welcomeGuide'), 11849 pages: [{ 11850 image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, { 11851 nonAnimatedSrc: "https://s.w.org/images/block-editor/edit-your-site.svg?1", 11852 animatedSrc: "https://s.w.org/images/block-editor/edit-your-site.gif?1" 11853 }), 11854 content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", { 11855 className: "edit-site-welcome-guide__heading" 11856 }, (0,external_wp_i18n_namespaceObject.__)('Edit your site')), (0,external_wp_element_namespaceObject.createElement)("p", { 11857 className: "edit-site-welcome-guide__text" 11858 }, (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", { 11859 className: "edit-site-welcome-guide__text" 11860 }, (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.'), { 11861 StylesIconImage: (0,external_wp_element_namespaceObject.createElement)("img", { 11862 alt: (0,external_wp_i18n_namespaceObject.__)('styles'), 11863 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" 11864 }) 11865 }))) 11866 }] 11867 }); 11868 } 11869 11870 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/styles.js 11871 11872 11873 /** 11874 * WordPress dependencies 11875 */ 11876 11877 11878 11879 11880 11881 /** 11882 * Internal dependencies 11883 */ 11884 11885 11886 11887 function WelcomeGuideStyles() { 11888 const { 11889 toggle 11890 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store); 11891 const { 11892 isActive, 11893 isStylesOpen 11894 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 11895 const sidebar = select(store).getActiveComplementaryArea(store_store.name); 11896 return { 11897 isActive: !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuideStyles'), 11898 isStylesOpen: sidebar === 'edit-site/global-styles' 11899 }; 11900 }, []); 11901 11902 if (!isActive || !isStylesOpen) { 11903 return null; 11904 } 11905 11906 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Guide, { 11907 className: "edit-site-welcome-guide", 11908 contentLabel: (0,external_wp_i18n_namespaceObject.__)('Welcome to styles'), 11909 finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Get Started'), 11910 onFinish: () => toggle('core/edit-site', 'welcomeGuideStyles'), 11911 pages: [{ 11912 image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, { 11913 nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.svg?1", 11914 animatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.gif?1" 11915 }), 11916 content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", { 11917 className: "edit-site-welcome-guide__heading" 11918 }, (0,external_wp_i18n_namespaceObject.__)('Welcome to Styles')), (0,external_wp_element_namespaceObject.createElement)("p", { 11919 className: "edit-site-welcome-guide__text" 11920 }, (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.'))) 11921 }, { 11922 image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, { 11923 nonAnimatedSrc: "https://s.w.org/images/block-editor/set-the-design.svg?1", 11924 animatedSrc: "https://s.w.org/images/block-editor/set-the-design.gif?1" 11925 }), 11926 content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", { 11927 className: "edit-site-welcome-guide__heading" 11928 }, (0,external_wp_i18n_namespaceObject.__)('Set the design')), (0,external_wp_element_namespaceObject.createElement)("p", { 11929 className: "edit-site-welcome-guide__text" 11930 }, (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! '))) 11931 }, { 11932 image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, { 11933 nonAnimatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.svg?1", 11934 animatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.gif?1" 11935 }), 11936 content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", { 11937 className: "edit-site-welcome-guide__heading" 11938 }, (0,external_wp_i18n_namespaceObject.__)('Personalize blocks')), (0,external_wp_element_namespaceObject.createElement)("p", { 11939 className: "edit-site-welcome-guide__text" 11940 }, (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.'))) 11941 }, { 11942 image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, { 11943 nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.svg", 11944 animatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.gif" 11945 }), 11946 content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", { 11947 className: "edit-site-welcome-guide__heading" 11948 }, (0,external_wp_i18n_namespaceObject.__)('Learn more')), (0,external_wp_element_namespaceObject.createElement)("p", { 11949 className: "edit-site-welcome-guide__text" 11950 }, (0,external_wp_i18n_namespaceObject.__)('New to block themes and styling your site? '), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ExternalLink, { 11951 href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/support/article/styles-overview/') 11952 }, (0,external_wp_i18n_namespaceObject.__)('Here’s a detailed guide to learn how to make the most of it.')))) 11953 }] 11954 }); 11955 } 11956 11957 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/index.js 11958 11959 11960 /** 11961 * Internal dependencies 11962 */ 11963 11964 11965 function WelcomeGuide() { 11966 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)); 11967 } 11968 11969 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor/global-styles-renderer.js 11970 /** 11971 * External dependencies 11972 */ 11973 11974 /** 11975 * WordPress dependencies 11976 */ 11977 11978 11979 11980 /** 11981 * Internal dependencies 11982 */ 11983 11984 11985 /** 11986 * Internal dependencies 11987 */ 11988 11989 11990 11991 function useGlobalStylesRenderer() { 11992 const [styles, settings, svgFilters] = useGlobalStylesOutput(); 11993 const { 11994 getSettings 11995 } = (0,external_wp_data_namespaceObject.useSelect)(store_store); 11996 const { 11997 updateSettings 11998 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 11999 (0,external_wp_element_namespaceObject.useEffect)(() => { 12000 if (!styles || !settings) { 12001 return; 12002 } 12003 12004 const currentStoreSettings = getSettings(); 12005 const nonGlobalStyles = (0,external_lodash_namespaceObject.filter)(currentStoreSettings.styles, style => !style.isGlobalStyles); 12006 updateSettings({ ...currentStoreSettings, 12007 styles: [...nonGlobalStyles, ...styles], 12008 svgFilters, 12009 __experimentalFeatures: settings 12010 }); 12011 }, [styles, settings]); 12012 } 12013 12014 function GlobalStylesRenderer() { 12015 useGlobalStylesRenderer(); 12016 return null; 12017 } 12018 12019 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/use-title.js 12020 /** 12021 * WordPress dependencies 12022 */ 12023 12024 12025 12026 12027 12028 /** 12029 * Internal dependencies 12030 */ 12031 12032 12033 function useTitle(title) { 12034 const location = useLocation(); 12035 const siteTitle = (0,external_wp_data_namespaceObject.useSelect)(select => { 12036 var _select$getEntityReco; 12037 12038 return (_select$getEntityReco = select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', 'site')) === null || _select$getEntityReco === void 0 ? void 0 : _select$getEntityReco.title; 12039 }, []); 12040 const isInitialLocationRef = (0,external_wp_element_namespaceObject.useRef)(true); 12041 (0,external_wp_element_namespaceObject.useEffect)(() => { 12042 isInitialLocationRef.current = false; 12043 }, [location]); 12044 (0,external_wp_element_namespaceObject.useEffect)(() => { 12045 // Don't update or announce the title for initial page load. 12046 if (isInitialLocationRef.current) { 12047 return; 12048 } 12049 12050 if (title && siteTitle) { 12051 // @see https://github.com/WordPress/wordpress-develop/blob/94849898192d271d533e09756007e176feb80697/src/wp-admin/admin-header.php#L67-L68 12052 const formattedTitle = (0,external_wp_i18n_namespaceObject.sprintf)( 12053 /* translators: Admin screen title. 1: Admin screen name, 2: Network or site name. */ 12054 (0,external_wp_i18n_namespaceObject.__)('%1$s ‹ %2$s — WordPress'), title, siteTitle); 12055 document.title = formattedTitle; // Announce title on route change for screen readers. 12056 12057 (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.sprintf)( 12058 /* translators: The page title that is currently displaying. */ 12059 (0,external_wp_i18n_namespaceObject.__)('Now displaying: %s'), document.title), 'assertive'); 12060 } 12061 }, [title, siteTitle, location]); 12062 } 12063 12064 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor/index.js 12065 12066 12067 /** 12068 * WordPress dependencies 12069 */ 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 /** 12081 * Internal dependencies 12082 */ 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12099 const interfaceLabels = { 12100 drawer: (0,external_wp_i18n_namespaceObject.__)('Navigation Sidebar') 12101 }; 12102 12103 function Editor(_ref) { 12104 let { 12105 onError 12106 } = _ref; 12107 const { 12108 isInserterOpen, 12109 isListViewOpen, 12110 sidebarIsOpened, 12111 settings, 12112 entityId, 12113 templateType, 12114 page, 12115 template, 12116 templateResolved, 12117 isNavigationOpen, 12118 previousShortcut, 12119 nextShortcut, 12120 editorMode, 12121 showIconLabels 12122 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 12123 const { 12124 isInserterOpened, 12125 isListViewOpened, 12126 getSettings, 12127 getEditedPostType, 12128 getEditedPostId, 12129 getPage, 12130 isNavigationOpened, 12131 getEditorMode 12132 } = select(store_store); 12133 const { 12134 hasFinishedResolution, 12135 getEntityRecord 12136 } = select(external_wp_coreData_namespaceObject.store); 12137 const postType = getEditedPostType(); 12138 const postId = getEditedPostId(); // The currently selected entity to display. Typically template or template part. 12139 12140 return { 12141 isInserterOpen: isInserterOpened(), 12142 isListViewOpen: isListViewOpened(), 12143 sidebarIsOpened: !!select(store).getActiveComplementaryArea(store_store.name), 12144 settings: getSettings(), 12145 templateType: postType, 12146 page: getPage(), 12147 template: postId ? getEntityRecord('postType', postType, postId) : null, 12148 templateResolved: postId ? hasFinishedResolution('getEntityRecord', ['postType', postType, postId]) : false, 12149 entityId: postId, 12150 isNavigationOpen: isNavigationOpened(), 12151 previousShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/previous-region'), 12152 nextShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/next-region'), 12153 editorMode: getEditorMode(), 12154 showIconLabels: select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'showIconLabels') 12155 }; 12156 }, []); 12157 const { 12158 setPage, 12159 setIsInserterOpened 12160 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 12161 const { 12162 enableComplementaryArea 12163 } = (0,external_wp_data_namespaceObject.useDispatch)(store); 12164 const [isEntitiesSavedStatesOpen, setIsEntitiesSavedStatesOpen] = (0,external_wp_element_namespaceObject.useState)(false); 12165 const openEntitiesSavedStates = (0,external_wp_element_namespaceObject.useCallback)(() => setIsEntitiesSavedStatesOpen(true), []); 12166 const closeEntitiesSavedStates = (0,external_wp_element_namespaceObject.useCallback)(() => { 12167 setIsEntitiesSavedStatesOpen(false); 12168 }, []); 12169 const blockContext = (0,external_wp_element_namespaceObject.useMemo)(() => ({ ...(page === null || page === void 0 ? void 0 : page.context), 12170 queryContext: [(page === null || page === void 0 ? void 0 : page.context.queryContext) || { 12171 page: 1 12172 }, newQueryContext => setPage({ ...page, 12173 context: { ...(page === null || page === void 0 ? void 0 : page.context), 12174 queryContext: { ...(page === null || page === void 0 ? void 0 : page.context.queryContext), 12175 ...newQueryContext 12176 } 12177 } 12178 })] 12179 }), [page === null || page === void 0 ? void 0 : page.context]); 12180 (0,external_wp_element_namespaceObject.useEffect)(() => { 12181 if (isNavigationOpen) { 12182 document.body.classList.add('is-navigation-sidebar-open'); 12183 } else { 12184 document.body.classList.remove('is-navigation-sidebar-open'); 12185 } 12186 }, [isNavigationOpen]); 12187 (0,external_wp_element_namespaceObject.useEffect)(function openGlobalStylesOnLoad() { 12188 const searchParams = new URLSearchParams(window.location.search); 12189 12190 if (searchParams.get('styles') === 'open') { 12191 enableComplementaryArea('core/edit-site', 'edit-site/global-styles'); 12192 } 12193 }, [enableComplementaryArea]); // Don't render the Editor until the settings are set and loaded. 12194 12195 const isReady = (settings === null || settings === void 0 ? void 0 : settings.siteUrl) && templateType !== undefined && entityId !== undefined; 12196 const secondarySidebarLabel = isListViewOpen ? (0,external_wp_i18n_namespaceObject.__)('List View') : (0,external_wp_i18n_namespaceObject.__)('Block Library'); 12197 12198 const secondarySidebar = () => { 12199 if (editorMode === 'visual' && isInserterOpen) { 12200 return (0,external_wp_element_namespaceObject.createElement)(InserterSidebar, null); 12201 } 12202 12203 if (editorMode === 'visual' && isListViewOpen) { 12204 return (0,external_wp_element_namespaceObject.createElement)(ListViewSidebar, null); 12205 } 12206 12207 return null; 12208 }; // Only announce the title once the editor is ready to prevent "Replace" 12209 // action in <URlQueryController> from double-announcing. 12210 12211 12212 useTitle(isReady && (0,external_wp_i18n_namespaceObject.__)('Editor (beta)')); 12213 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, { 12214 kind: "root", 12215 type: "site" 12216 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_coreData_namespaceObject.EntityProvider, { 12217 kind: "postType", 12218 type: templateType, 12219 id: entityId 12220 }, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesProvider, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockContextProvider, { 12221 value: blockContext 12222 }, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesRenderer, null), (0,external_wp_element_namespaceObject.createElement)(ErrorBoundary, { 12223 onError: onError 12224 }, (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, { 12225 labels: { ...interfaceLabels, 12226 secondarySidebar: secondarySidebarLabel 12227 }, 12228 className: showIconLabels && 'show-icon-labels', 12229 secondarySidebar: secondarySidebar(), 12230 sidebar: sidebarIsOpened && (0,external_wp_element_namespaceObject.createElement)(complementary_area.Slot, { 12231 scope: "core/edit-site" 12232 }), 12233 drawer: (0,external_wp_element_namespaceObject.createElement)(navigation_sidebar.Slot, null), 12234 header: (0,external_wp_element_namespaceObject.createElement)(Header, { 12235 openEntitiesSavedStates: openEntitiesSavedStates, 12236 showIconLabels: showIconLabels 12237 }), 12238 notices: (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.EditorSnackbars, null), 12239 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, { 12240 scope: "core/block-inspector" 12241 }), editorMode === 'visual' && template && (0,external_wp_element_namespaceObject.createElement)(BlockEditor, { 12242 setIsInserterOpen: setIsInserterOpened 12243 }), 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, { 12244 status: "warning", 12245 isDismissible: false 12246 }, (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, { 12247 openEntitiesSavedStates: openEntitiesSavedStates 12248 })), 12249 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, { 12250 close: closeEntitiesSavedStates 12251 }) : (0,external_wp_element_namespaceObject.createElement)("div", { 12252 className: "edit-site-editor__toggle-save-panel" 12253 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 12254 variant: "secondary", 12255 className: "edit-site-editor__toggle-save-panel-button", 12256 onClick: openEntitiesSavedStates, 12257 "aria-expanded": false 12258 }, (0,external_wp_i18n_namespaceObject.__)('Open save panel')))), 12259 footer: (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockBreadcrumb, { 12260 rootLabelText: (0,external_wp_i18n_namespaceObject.__)('Template') 12261 }), 12262 shortcuts: { 12263 previous: previousShortcut, 12264 next: nextShortcut 12265 } 12266 }), (0,external_wp_element_namespaceObject.createElement)(WelcomeGuide, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Popover.Slot, null)))))))); 12267 } 12268 12269 /* harmony default export */ var editor = (Editor); 12270 12271 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/use-register-shortcuts.js 12272 /** 12273 * WordPress dependencies 12274 */ 12275 12276 12277 12278 12279 function useRegisterShortcuts() { 12280 const { 12281 registerShortcut 12282 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_keyboardShortcuts_namespaceObject.store); 12283 (0,external_wp_element_namespaceObject.useEffect)(() => { 12284 registerShortcut({ 12285 name: 'core/edit-site/next-region', 12286 category: 'global', 12287 description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the next part of the editor.'), 12288 keyCombination: { 12289 modifier: 'ctrl', 12290 character: '`' 12291 }, 12292 aliases: [{ 12293 modifier: 'access', 12294 character: 'n' 12295 }] 12296 }); 12297 registerShortcut({ 12298 name: 'core/edit-site/previous-region', 12299 category: 'global', 12300 description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous part of the editor.'), 12301 keyCombination: { 12302 modifier: 'ctrlShift', 12303 character: '`' 12304 }, 12305 aliases: [{ 12306 modifier: 'access', 12307 character: 'p' 12308 }] 12309 }); 12310 }, []); 12311 } 12312 12313 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post.js 12314 12315 12316 /** 12317 * WordPress dependencies 12318 */ 12319 12320 const post = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12321 xmlns: "http://www.w3.org/2000/svg", 12322 viewBox: "0 0 24 24" 12323 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12324 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" 12325 })); 12326 /* harmony default export */ var library_post = (post); 12327 12328 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/page.js 12329 12330 12331 /** 12332 * WordPress dependencies 12333 */ 12334 12335 const page = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12336 xmlns: "http://www.w3.org/2000/svg", 12337 viewBox: "0 0 24 24" 12338 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12339 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" 12340 })); 12341 /* harmony default export */ var library_page = (page); 12342 12343 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/archive.js 12344 12345 12346 /** 12347 * WordPress dependencies 12348 */ 12349 12350 const archive = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12351 viewBox: "0 0 24 24", 12352 xmlns: "http://www.w3.org/2000/svg" 12353 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12354 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" 12355 })); 12356 /* harmony default export */ var library_archive = (archive); 12357 12358 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/search.js 12359 12360 12361 /** 12362 * WordPress dependencies 12363 */ 12364 12365 const search = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12366 xmlns: "http://www.w3.org/2000/svg", 12367 viewBox: "0 0 24 24" 12368 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12369 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" 12370 })); 12371 /* harmony default export */ var library_search = (search); 12372 12373 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/not-found.js 12374 12375 12376 /** 12377 * WordPress dependencies 12378 */ 12379 12380 const notFound = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12381 xmlns: "http://www.w3.org/2000/svg", 12382 viewBox: "0 0 24 24" 12383 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12384 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" 12385 })); 12386 /* harmony default export */ var not_found = (notFound); 12387 12388 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/list.js 12389 12390 12391 /** 12392 * WordPress dependencies 12393 */ 12394 12395 const list = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12396 viewBox: "0 0 24 24", 12397 xmlns: "http://www.w3.org/2000/svg" 12398 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12399 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" 12400 })); 12401 /* harmony default export */ var library_list = (list); 12402 12403 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/category.js 12404 12405 12406 /** 12407 * WordPress dependencies 12408 */ 12409 12410 const category = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12411 viewBox: "0 0 24 24", 12412 xmlns: "http://www.w3.org/2000/svg" 12413 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12414 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", 12415 fillRule: "evenodd", 12416 clipRule: "evenodd" 12417 })); 12418 /* harmony default export */ var library_category = (category); 12419 12420 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-author.js 12421 12422 12423 /** 12424 * WordPress dependencies 12425 */ 12426 12427 const postAuthor = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12428 viewBox: "0 0 24 24", 12429 xmlns: "http://www.w3.org/2000/svg" 12430 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12431 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", 12432 fillRule: "evenodd", 12433 clipRule: "evenodd" 12434 })); 12435 /* harmony default export */ var post_author = (postAuthor); 12436 12437 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/block-meta.js 12438 12439 12440 /** 12441 * WordPress dependencies 12442 */ 12443 12444 const blockDefault = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12445 xmlns: "http://www.w3.org/2000/svg", 12446 viewBox: "0 0 24 24" 12447 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12448 "fill-rule": "evenodd", 12449 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", 12450 "clip-rule": "evenodd" 12451 })); 12452 /* harmony default export */ var block_meta = (blockDefault); 12453 12454 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-date.js 12455 12456 12457 /** 12458 * WordPress dependencies 12459 */ 12460 12461 const postDate = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12462 xmlns: "http://www.w3.org/2000/svg", 12463 viewBox: "0 0 24 24" 12464 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12465 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" 12466 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12467 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" 12468 })); 12469 /* harmony default export */ var post_date = (postDate); 12470 12471 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/tag.js 12472 12473 12474 /** 12475 * WordPress dependencies 12476 */ 12477 12478 const tag = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12479 xmlns: "http://www.w3.org/2000/svg", 12480 viewBox: "0 0 24 24" 12481 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12482 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" 12483 })); 12484 /* harmony default export */ var library_tag = (tag); 12485 12486 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/media.js 12487 12488 12489 /** 12490 * WordPress dependencies 12491 */ 12492 12493 const media = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 12494 xmlns: "http://www.w3.org/2000/svg", 12495 viewBox: "0 0 24 24" 12496 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 12497 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" 12498 })); 12499 /* harmony default export */ var library_media = (media); 12500 12501 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/new-template.js 12502 12503 12504 /** 12505 * External dependencies 12506 */ 12507 12508 /** 12509 * WordPress dependencies 12510 */ 12511 12512 12513 12514 12515 12516 12517 12518 12519 /** 12520 * Internal dependencies 12521 */ 12522 12523 12524 const DEFAULT_TEMPLATE_SLUGS = ['front-page', 'single-post', 'page', 'index', 'archive', 'author', 'category', 'date', 'tag', 'taxonomy', 'search', '404']; 12525 const TEMPLATE_ICONS = { 12526 'front-page': library_home, 12527 'single-post': library_post, 12528 page: library_page, 12529 archive: library_archive, 12530 search: library_search, 12531 404: not_found, 12532 index: library_list, 12533 category: library_category, 12534 author: post_author, 12535 taxonomy: block_meta, 12536 date: post_date, 12537 tag: library_tag, 12538 attachment: library_media 12539 }; 12540 function NewTemplate(_ref) { 12541 let { 12542 postType 12543 } = _ref; 12544 const history = useHistory(); 12545 const { 12546 templates, 12547 defaultTemplateTypes 12548 } = (0,external_wp_data_namespaceObject.useSelect)(select => ({ 12549 templates: select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_template', { 12550 per_page: -1 12551 }), 12552 defaultTemplateTypes: select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplateTypes() 12553 }), []); 12554 const { 12555 saveEntityRecord 12556 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 12557 const { 12558 createErrorNotice 12559 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 12560 12561 async function createTemplate(_ref2) { 12562 let { 12563 slug 12564 } = _ref2; 12565 12566 try { 12567 const { 12568 title, 12569 description 12570 } = (0,external_lodash_namespaceObject.find)(defaultTemplateTypes, { 12571 slug 12572 }); 12573 const template = await saveEntityRecord('postType', 'wp_template', { 12574 excerpt: description, 12575 // Slugs need to be strings, so this is for template `404` 12576 slug: slug.toString(), 12577 status: 'publish', 12578 title 12579 }, { 12580 throwOnError: true 12581 }); // Navigate to the created template editor. 12582 12583 history.push({ 12584 postId: template.id, 12585 postType: template.type 12586 }); // TODO: Add a success notice? 12587 } catch (error) { 12588 const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the template.'); 12589 createErrorNotice(errorMessage, { 12590 type: 'snackbar' 12591 }); 12592 } 12593 } 12594 12595 const existingTemplateSlugs = (0,external_lodash_namespaceObject.map)(templates, 'slug'); 12596 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)); 12597 12598 if (!missingTemplates.length) { 12599 return null; 12600 } // Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order. 12601 12602 12603 missingTemplates.sort((template1, template2) => { 12604 return DEFAULT_TEMPLATE_SLUGS.indexOf(template1.slug) - DEFAULT_TEMPLATE_SLUGS.indexOf(template2.slug); 12605 }); 12606 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, { 12607 className: "edit-site-new-template-dropdown", 12608 icon: null, 12609 text: postType.labels.add_new, 12610 label: postType.labels.add_new_item, 12611 popoverProps: { 12612 noArrow: false 12613 }, 12614 toggleProps: { 12615 variant: 'primary' 12616 } 12617 }, () => (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.NavigableMenu, { 12618 className: "edit-site-new-template-dropdown__popover" 12619 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, { 12620 label: postType.labels.add_new_item 12621 }, (0,external_lodash_namespaceObject.map)(missingTemplates, _ref3 => { 12622 let { 12623 title, 12624 description, 12625 slug 12626 } = _ref3; 12627 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 12628 icon: TEMPLATE_ICONS[slug], 12629 iconPosition: "left", 12630 info: description, 12631 key: slug, 12632 onClick: () => { 12633 createTemplate({ 12634 slug 12635 }); // We will be navigated way so no need to close the dropdown. 12636 } 12637 }, title); 12638 })))); 12639 } 12640 12641 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/new-template-part.js 12642 12643 12644 /** 12645 * External dependencies 12646 */ 12647 12648 /** 12649 * WordPress dependencies 12650 */ 12651 12652 12653 12654 12655 12656 12657 12658 /** 12659 * Internal dependencies 12660 */ 12661 12662 12663 12664 function NewTemplatePart(_ref) { 12665 let { 12666 postType 12667 } = _ref; 12668 const history = useHistory(); 12669 const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false); 12670 const { 12671 createErrorNotice 12672 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 12673 const { 12674 saveEntityRecord 12675 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 12676 12677 async function createTemplatePart(_ref2) { 12678 let { 12679 title, 12680 area 12681 } = _ref2; 12682 12683 if (!title) { 12684 createErrorNotice((0,external_wp_i18n_namespaceObject.__)('Title is not defined.'), { 12685 type: 'snackbar' 12686 }); 12687 return; 12688 } 12689 12690 try { 12691 // Currently template parts only allow latin chars. 12692 // Fallback slug will receive suffix by default. 12693 const cleanSlug = (0,external_lodash_namespaceObject.kebabCase)(title).replace(/[^\w-]+/g, '') || 'wp-custom-part'; 12694 const templatePart = await saveEntityRecord('postType', 'wp_template_part', { 12695 slug: cleanSlug, 12696 title, 12697 content: '', 12698 area 12699 }, { 12700 throwOnError: true 12701 }); 12702 setIsModalOpen(false); // Navigate to the created template part editor. 12703 12704 history.push({ 12705 postId: templatePart.id, 12706 postType: templatePart.type 12707 }); // TODO: Add a success notice? 12708 } catch (error) { 12709 const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the template part.'); 12710 createErrorNotice(errorMessage, { 12711 type: 'snackbar' 12712 }); 12713 setIsModalOpen(false); 12714 } 12715 } 12716 12717 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 12718 variant: "primary", 12719 onClick: () => { 12720 setIsModalOpen(true); 12721 } 12722 }, postType.labels.add_new), isModalOpen && (0,external_wp_element_namespaceObject.createElement)(CreateTemplatePartModal, { 12723 closeModal: () => setIsModalOpen(false), 12724 onCreate: createTemplatePart 12725 })); 12726 } 12727 12728 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/index.js 12729 12730 12731 /** 12732 * WordPress dependencies 12733 */ 12734 12735 12736 /** 12737 * Internal dependencies 12738 */ 12739 12740 12741 12742 function AddNewTemplate(_ref) { 12743 let { 12744 templateType = 'wp_template' 12745 } = _ref; 12746 const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]); 12747 12748 if (!postType) { 12749 return null; 12750 } 12751 12752 if (templateType === 'wp_template') { 12753 return (0,external_wp_element_namespaceObject.createElement)(NewTemplate, { 12754 postType: postType 12755 }); 12756 } else if (templateType === 'wp_template_part') { 12757 return (0,external_wp_element_namespaceObject.createElement)(NewTemplatePart, { 12758 postType: postType 12759 }); 12760 } 12761 12762 return null; 12763 } 12764 12765 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/header.js 12766 12767 12768 /** 12769 * WordPress dependencies 12770 */ 12771 12772 12773 12774 /** 12775 * Internal dependencies 12776 */ 12777 12778 12779 function header_Header(_ref) { 12780 var _postType$labels; 12781 12782 let { 12783 templateType 12784 } = _ref; 12785 const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]); 12786 12787 if (!postType) { 12788 return null; 12789 } 12790 12791 return (0,external_wp_element_namespaceObject.createElement)("header", { 12792 className: "edit-site-list-header" 12793 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, { 12794 level: 1, 12795 className: "edit-site-list-header__title" 12796 }, (_postType$labels = postType.labels) === null || _postType$labels === void 0 ? void 0 : _postType$labels.name), (0,external_wp_element_namespaceObject.createElement)("div", { 12797 className: "edit-site-list-header__right" 12798 }, (0,external_wp_element_namespaceObject.createElement)(AddNewTemplate, { 12799 templateType: templateType 12800 }))); 12801 } 12802 12803 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/is-template-removable.js 12804 /** 12805 * Check if a template is removable. 12806 * 12807 * @param {Object} template The template entity to check. 12808 * @return {boolean} Whether the template is revertable. 12809 */ 12810 function isTemplateRemovable(template) { 12811 if (!template) { 12812 return false; 12813 } 12814 12815 return template.source === 'custom' && !template.has_theme_file; 12816 } 12817 12818 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/actions/rename-menu-item.js 12819 12820 12821 /** 12822 * WordPress dependencies 12823 */ 12824 12825 12826 12827 12828 12829 12830 function RenameMenuItem(_ref) { 12831 let { 12832 template, 12833 onClose 12834 } = _ref; 12835 const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(() => template.title.rendered); 12836 const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false); 12837 const { 12838 editEntityRecord, 12839 saveEditedEntityRecord 12840 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 12841 const { 12842 createSuccessNotice, 12843 createErrorNotice 12844 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 12845 12846 if (!template.is_custom) { 12847 return null; 12848 } 12849 12850 async function onTemplateRename(event) { 12851 event.preventDefault(); 12852 12853 try { 12854 await editEntityRecord('postType', template.type, template.id, { 12855 title 12856 }); // Update state before saving rerenders the list. 12857 12858 setTitle(''); 12859 setIsModalOpen(false); 12860 onClose(); // Persist edited entity. 12861 12862 await saveEditedEntityRecord('postType', template.type, template.id, { 12863 throwOnError: true 12864 }); 12865 createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Entity renamed.'), { 12866 type: 'snackbar' 12867 }); 12868 } catch (error) { 12869 const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while renaming the entity.'); 12870 createErrorNotice(errorMessage, { 12871 type: 'snackbar' 12872 }); 12873 } 12874 } 12875 12876 return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 12877 onClick: () => { 12878 setIsModalOpen(true); 12879 setTitle(template.title.rendered); 12880 } 12881 }, (0,external_wp_i18n_namespaceObject.__)('Rename')), isModalOpen && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, { 12882 title: (0,external_wp_i18n_namespaceObject.__)('Rename'), 12883 closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'), 12884 onRequestClose: () => { 12885 setIsModalOpen(false); 12886 }, 12887 overlayClassName: "edit-site-list__rename-modal" 12888 }, (0,external_wp_element_namespaceObject.createElement)("form", { 12889 onSubmit: onTemplateRename 12890 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, { 12891 align: "flex-start", 12892 gap: 8 12893 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, { 12894 label: (0,external_wp_i18n_namespaceObject.__)('Name'), 12895 value: title, 12896 onChange: setTitle, 12897 required: true 12898 }))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, { 12899 className: "edit-site-list__rename-modal-actions", 12900 justify: "flex-end", 12901 expanded: false 12902 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 12903 variant: "tertiary", 12904 onClick: () => { 12905 setIsModalOpen(false); 12906 } 12907 }, (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, { 12908 variant: "primary", 12909 type: "submit" 12910 }, (0,external_wp_i18n_namespaceObject.__)('Save'))))))); 12911 } 12912 12913 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/actions/index.js 12914 12915 12916 /** 12917 * WordPress dependencies 12918 */ 12919 12920 12921 12922 12923 12924 12925 /** 12926 * Internal dependencies 12927 */ 12928 12929 12930 12931 12932 12933 function Actions(_ref) { 12934 let { 12935 template 12936 } = _ref; 12937 const { 12938 removeTemplate, 12939 revertTemplate 12940 } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); 12941 const { 12942 saveEditedEntityRecord 12943 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 12944 const { 12945 createSuccessNotice, 12946 createErrorNotice 12947 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 12948 const isRemovable = isTemplateRemovable(template); 12949 const isRevertable = isTemplateRevertable(template); 12950 12951 if (!isRemovable && !isRevertable) { 12952 return null; 12953 } 12954 12955 async function revertAndSaveTemplate() { 12956 try { 12957 await revertTemplate(template, { 12958 allowUndo: false 12959 }); 12960 await saveEditedEntityRecord('postType', template.type, template.id); 12961 createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Entity reverted.'), { 12962 type: 'snackbar' 12963 }); 12964 } catch (error) { 12965 const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while reverting the entity.'); 12966 createErrorNotice(errorMessage, { 12967 type: 'snackbar' 12968 }); 12969 } 12970 } 12971 12972 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, { 12973 icon: more_vertical, 12974 label: (0,external_wp_i18n_namespaceObject.__)('Actions'), 12975 className: "edit-site-list-table__actions" 12976 }, _ref2 => { 12977 let { 12978 onClose 12979 } = _ref2; 12980 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, { 12981 template: template, 12982 onClose: onClose 12983 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 12984 isDestructive: true, 12985 isTertiary: true, 12986 onClick: () => { 12987 removeTemplate(template); 12988 onClose(); 12989 } 12990 }, (0,external_wp_i18n_namespaceObject.__)('Delete'))), isRevertable && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { 12991 info: (0,external_wp_i18n_namespaceObject.__)('Restore to default state'), 12992 onClick: () => { 12993 revertAndSaveTemplate(); 12994 onClose(); 12995 } 12996 }, (0,external_wp_i18n_namespaceObject.__)('Clear customizations'))); 12997 }); 12998 } 12999 13000 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plugins.js 13001 13002 13003 /** 13004 * WordPress dependencies 13005 */ 13006 13007 const plugins = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 13008 xmlns: "http://www.w3.org/2000/svg", 13009 viewBox: "0 0 24 24" 13010 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 13011 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" 13012 })); 13013 /* harmony default export */ var library_plugins = (plugins); 13014 13015 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment-author-avatar.js 13016 13017 13018 /** 13019 * WordPress dependencies 13020 */ 13021 13022 const commentAuthorAvatar = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 13023 xmlns: "http://www.w3.org/2000/svg", 13024 viewBox: "0 0 24 24" 13025 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 13026 fillRule: "evenodd", 13027 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", 13028 clipRule: "evenodd" 13029 })); 13030 /* harmony default export */ var comment_author_avatar = (commentAuthorAvatar); 13031 13032 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/globe.js 13033 13034 13035 /** 13036 * WordPress dependencies 13037 */ 13038 13039 const globe = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { 13040 xmlns: "http://www.w3.org/2000/svg", 13041 viewBox: "0 0 24 24" 13042 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { 13043 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" 13044 })); 13045 /* harmony default export */ var library_globe = (globe); 13046 13047 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/added-by.js 13048 13049 13050 /** 13051 * External dependencies 13052 */ 13053 13054 /** 13055 * WordPress dependencies 13056 */ 13057 13058 13059 13060 13061 13062 13063 13064 const TEMPLATE_POST_TYPE_NAMES = ['wp_template', 'wp_template_part']; 13065 13066 function CustomizedTooltip(_ref) { 13067 let { 13068 isCustomized, 13069 children 13070 } = _ref; 13071 13072 if (!isCustomized) { 13073 return children; 13074 } 13075 13076 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Tooltip, { 13077 text: (0,external_wp_i18n_namespaceObject.__)('This template has been customized') 13078 }, children); 13079 } 13080 13081 function BaseAddedBy(_ref2) { 13082 let { 13083 text, 13084 icon, 13085 imageUrl, 13086 isCustomized 13087 } = _ref2; 13088 const [isImageLoaded, setIsImageLoaded] = (0,external_wp_element_namespaceObject.useState)(false); 13089 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, { 13090 alignment: "left" 13091 }, (0,external_wp_element_namespaceObject.createElement)(CustomizedTooltip, { 13092 isCustomized: isCustomized 13093 }, imageUrl ? (0,external_wp_element_namespaceObject.createElement)("div", { 13094 className: classnames_default()('edit-site-list-added-by__avatar', { 13095 'is-loaded': isImageLoaded 13096 }) 13097 }, (0,external_wp_element_namespaceObject.createElement)("img", { 13098 onLoad: () => setIsImageLoaded(true), 13099 alt: "", 13100 src: imageUrl 13101 })) : (0,external_wp_element_namespaceObject.createElement)("div", { 13102 className: classnames_default()('edit-site-list-added-by__icon', { 13103 'is-customized': isCustomized 13104 }) 13105 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, { 13106 icon: icon 13107 }))), (0,external_wp_element_namespaceObject.createElement)("span", null, text)); 13108 } 13109 13110 function AddedByTheme(_ref3) { 13111 var _theme$name; 13112 13113 let { 13114 slug, 13115 isCustomized 13116 } = _ref3; 13117 const theme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getTheme(slug), [slug]); 13118 return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, { 13119 icon: library_layout, 13120 text: (theme === null || theme === void 0 ? void 0 : (_theme$name = theme.name) === null || _theme$name === void 0 ? void 0 : _theme$name.rendered) || slug, 13121 isCustomized: isCustomized 13122 }); 13123 } 13124 13125 function AddedByPlugin(_ref4) { 13126 let { 13127 slug, 13128 isCustomized 13129 } = _ref4; 13130 const plugin = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPlugin(slug), [slug]); 13131 return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, { 13132 icon: library_plugins, 13133 text: (plugin === null || plugin === void 0 ? void 0 : plugin.name) || slug, 13134 isCustomized: isCustomized 13135 }); 13136 } 13137 13138 function AddedByAuthor(_ref5) { 13139 var _user$avatar_urls; 13140 13141 let { 13142 id 13143 } = _ref5; 13144 const user = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getUser(id), [id]); 13145 return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, { 13146 icon: comment_author_avatar, 13147 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], 13148 text: user === null || user === void 0 ? void 0 : user.nickname 13149 }); 13150 } 13151 13152 function AddedBySite() { 13153 const { 13154 name, 13155 logoURL 13156 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 13157 var _getMedia; 13158 13159 const { 13160 getEntityRecord, 13161 getMedia 13162 } = select(external_wp_coreData_namespaceObject.store); 13163 const siteData = getEntityRecord('root', '__unstableBase'); 13164 return { 13165 name: siteData === null || siteData === void 0 ? void 0 : siteData.name, 13166 logoURL: siteData !== null && siteData !== void 0 && siteData.site_logo ? (_getMedia = getMedia(siteData.site_logo)) === null || _getMedia === void 0 ? void 0 : _getMedia.source_url : undefined 13167 }; 13168 }, []); 13169 return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, { 13170 icon: library_globe, 13171 imageUrl: logoURL, 13172 text: name 13173 }); 13174 } 13175 13176 function AddedBy(_ref6) { 13177 let { 13178 templateType, 13179 template 13180 } = _ref6; 13181 13182 if (!template) { 13183 return; 13184 } 13185 13186 if (TEMPLATE_POST_TYPE_NAMES.includes(templateType)) { 13187 // Template originally provided by a theme, but customized by a user. 13188 // Templates originally didn't have the 'origin' field so identify 13189 // older customized templates by checking for no origin and a 'theme' 13190 // or 'custom' source. 13191 if (template.has_theme_file && (template.origin === 'theme' || !template.origin && ['theme', 'custom'].includes(template.source))) { 13192 return (0,external_wp_element_namespaceObject.createElement)(AddedByTheme, { 13193 slug: template.theme, 13194 isCustomized: template.source === 'custom' 13195 }); 13196 } // Template originally provided by a plugin, but customized by a user. 13197 13198 13199 if (template.has_theme_file && template.origin === 'plugin') { 13200 return (0,external_wp_element_namespaceObject.createElement)(AddedByPlugin, { 13201 slug: template.theme, 13202 isCustomized: template.source === 'custom' 13203 }); 13204 } // Template was created from scratch, but has no author. Author support 13205 // was only added to templates in WordPress 5.9. Fallback to showing the 13206 // site logo and title. 13207 13208 13209 if (!template.has_theme_file && template.source === 'custom' && !template.author) { 13210 return (0,external_wp_element_namespaceObject.createElement)(AddedBySite, null); 13211 } 13212 } // Simply show the author for templates created from scratch that have an 13213 // author or for any other post type. 13214 13215 13216 return (0,external_wp_element_namespaceObject.createElement)(AddedByAuthor, { 13217 id: template.author 13218 }); 13219 } 13220 13221 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/table.js 13222 13223 13224 /** 13225 * WordPress dependencies 13226 */ 13227 13228 13229 13230 13231 13232 /** 13233 * Internal dependencies 13234 */ 13235 13236 13237 13238 13239 function Table(_ref) { 13240 let { 13241 templateType 13242 } = _ref; 13243 const { 13244 records: templates, 13245 isResolving: isLoading 13246 } = (0,external_wp_coreData_namespaceObject.__experimentalUseEntityRecords)('postType', templateType, { 13247 per_page: -1 13248 }); 13249 const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]); 13250 13251 if (!templates || isLoading) { 13252 return null; 13253 } 13254 13255 if (!templates.length) { 13256 var _postType$labels, _postType$labels$name; 13257 13258 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". 13259 (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())); 13260 } 13261 13262 return (// These explicit aria roles are needed for Safari. 13263 // See https://developer.mozilla.org/en-US/docs/Web/CSS/display#tables 13264 (0,external_wp_element_namespaceObject.createElement)("table", { 13265 className: "edit-site-list-table", 13266 role: "table" 13267 }, (0,external_wp_element_namespaceObject.createElement)("thead", null, (0,external_wp_element_namespaceObject.createElement)("tr", { 13268 className: "edit-site-list-table-head", 13269 role: "row" 13270 }, (0,external_wp_element_namespaceObject.createElement)("th", { 13271 className: "edit-site-list-table-column", 13272 role: "columnheader" 13273 }, (0,external_wp_i18n_namespaceObject.__)('Template')), (0,external_wp_element_namespaceObject.createElement)("th", { 13274 className: "edit-site-list-table-column", 13275 role: "columnheader" 13276 }, (0,external_wp_i18n_namespaceObject.__)('Added by')), (0,external_wp_element_namespaceObject.createElement)("th", { 13277 className: "edit-site-list-table-column", 13278 role: "columnheader" 13279 }, (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 => { 13280 var _template$title; 13281 13282 return (0,external_wp_element_namespaceObject.createElement)("tr", { 13283 key: template.id, 13284 className: "edit-site-list-table-row", 13285 role: "row" 13286 }, (0,external_wp_element_namespaceObject.createElement)("td", { 13287 className: "edit-site-list-table-column", 13288 role: "cell" 13289 }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, { 13290 level: 4 13291 }, (0,external_wp_element_namespaceObject.createElement)(Link, { 13292 params: { 13293 postId: template.id, 13294 postType: template.type 13295 } 13296 }, (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", { 13297 className: "edit-site-list-table-column", 13298 role: "cell" 13299 }, (0,external_wp_element_namespaceObject.createElement)(AddedBy, { 13300 templateType: templateType, 13301 template: template 13302 })), (0,external_wp_element_namespaceObject.createElement)("td", { 13303 className: "edit-site-list-table-column", 13304 role: "cell" 13305 }, (0,external_wp_element_namespaceObject.createElement)(Actions, { 13306 template: template 13307 }))); 13308 }))) 13309 ); 13310 } 13311 13312 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/index.js 13313 13314 13315 /** 13316 * External dependencies 13317 */ 13318 13319 /** 13320 * WordPress dependencies 13321 */ 13322 13323 13324 13325 13326 13327 13328 13329 /** 13330 * Internal dependencies 13331 */ 13332 13333 13334 13335 13336 13337 13338 13339 13340 function List() { 13341 var _postType$labels, _postType$labels2; 13342 13343 const { 13344 params: { 13345 postType: templateType 13346 } 13347 } = useLocation(); 13348 useRegisterShortcuts(); 13349 const { 13350 previousShortcut, 13351 nextShortcut, 13352 isNavigationOpen 13353 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 13354 return { 13355 previousShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/previous-region'), 13356 nextShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/next-region'), 13357 isNavigationOpen: select(store_store).isNavigationOpened() 13358 }; 13359 }, []); 13360 const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]); 13361 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 13362 // the postType has loaded, otherwise `InterfaceSkeleton` will fallback to the defaults. 13363 13364 const itemsListLabel = postType === null || postType === void 0 ? void 0 : (_postType$labels2 = postType.labels) === null || _postType$labels2 === void 0 ? void 0 : _postType$labels2.items_list; 13365 const detailedRegionLabels = postType ? { 13366 header: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s - the name of the page, 'Header' as in the header area of that page. 13367 (0,external_wp_i18n_namespaceObject.__)('%s - Header'), itemsListLabel), 13368 body: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s - the name of the page, 'Content' as in the content area of that page. 13369 (0,external_wp_i18n_namespaceObject.__)('%s - Content'), itemsListLabel) 13370 } : undefined; 13371 return (0,external_wp_element_namespaceObject.createElement)(interface_skeleton, { 13372 className: classnames_default()('edit-site-list', { 13373 'is-navigation-open': isNavigationOpen 13374 }), 13375 labels: { 13376 drawer: (0,external_wp_i18n_namespaceObject.__)('Navigation Sidebar'), 13377 ...detailedRegionLabels 13378 }, 13379 header: (0,external_wp_element_namespaceObject.createElement)(header_Header, { 13380 templateType: templateType 13381 }), 13382 drawer: (0,external_wp_element_namespaceObject.createElement)(navigation_sidebar.Slot, null), 13383 notices: (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.EditorSnackbars, null), 13384 content: (0,external_wp_element_namespaceObject.createElement)(Table, { 13385 templateType: templateType 13386 }), 13387 shortcuts: { 13388 previous: previousShortcut, 13389 next: nextShortcut 13390 } 13391 }); 13392 } 13393 13394 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/get-is-list-page.js 13395 /** 13396 * Returns if the params match the list page route. 13397 * 13398 * @param {Object} params The search params. 13399 * @param {string} params.postId The post ID. 13400 * @param {string} params.postType The post type. 13401 * @return {boolean} Is list page or not. 13402 */ 13403 function getIsListPage(_ref) { 13404 let { 13405 postId, 13406 postType 13407 } = _ref; 13408 return !!(!postId && postType); 13409 } 13410 13411 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/app/index.js 13412 13413 13414 /** 13415 * WordPress dependencies 13416 */ 13417 13418 13419 13420 13421 13422 13423 /** 13424 * Internal dependencies 13425 */ 13426 13427 13428 13429 13430 13431 13432 function EditSiteApp(_ref) { 13433 let { 13434 reboot 13435 } = _ref; 13436 const { 13437 createErrorNotice 13438 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 13439 13440 function onPluginAreaError(name) { 13441 createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)( 13442 /* translators: %s: plugin name */ 13443 (0,external_wp_i18n_namespaceObject.__)('The "%s" plugin has encountered an error and cannot be rendered.'), name)); 13444 } 13445 13446 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 => { 13447 let { 13448 params 13449 } = _ref2; 13450 const isListPage = getIsListPage(params); 13451 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, { 13452 onError: reboot 13453 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_plugins_namespaceObject.PluginArea, { 13454 onError: onPluginAreaError 13455 }), (0,external_wp_element_namespaceObject.createElement)(navigation_sidebar // Open the navigation sidebar by default when in the list page. 13456 , { 13457 isDefaultOpen: !!isListPage, 13458 activeTemplateType: isListPage ? params.postType : undefined 13459 })); 13460 })); 13461 } 13462 13463 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/plugin-sidebar/index.js 13464 13465 13466 13467 /** 13468 * WordPress dependencies 13469 */ 13470 13471 /** 13472 * Renders a sidebar when activated. The contents within the `PluginSidebar` will appear as content within the sidebar. 13473 * It also automatically renders a corresponding `PluginSidebarMenuItem` component when `isPinnable` flag is set to `true`. 13474 * If you wish to display the sidebar, you can with use the `PluginSidebarMoreMenuItem` component or the `wp.data.dispatch` API: 13475 * 13476 * ```js 13477 * wp.data.dispatch( 'core/edit-site' ).openGeneralSidebar( 'plugin-name/sidebar-name' ); 13478 * ``` 13479 * 13480 * @see PluginSidebarMoreMenuItem 13481 * 13482 * @param {Object} props Element props. 13483 * @param {string} props.name A string identifying the sidebar. Must be unique for every sidebar registered within the scope of your plugin. 13484 * @param {string} [props.className] An optional class name added to the sidebar body. 13485 * @param {string} props.title Title displayed at the top of the sidebar. 13486 * @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. 13487 * @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. 13488 * 13489 * @example 13490 * ```js 13491 * // Using ES5 syntax 13492 * var __ = wp.i18n.__; 13493 * var el = wp.element.createElement; 13494 * var PanelBody = wp.components.PanelBody; 13495 * var PluginSidebar = wp.editSite.PluginSidebar; 13496 * var moreIcon = wp.element.createElement( 'svg' ); //... svg element. 13497 * 13498 * function MyPluginSidebar() { 13499 * return el( 13500 * PluginSidebar, 13501 * { 13502 * name: 'my-sidebar', 13503 * title: 'My sidebar title', 13504 * icon: moreIcon, 13505 * }, 13506 * el( 13507 * PanelBody, 13508 * {}, 13509 * __( 'My sidebar content' ) 13510 * ) 13511 * ); 13512 * } 13513 * ``` 13514 * 13515 * @example 13516 * ```jsx 13517 * // Using ESNext syntax 13518 * import { __ } from '@wordpress/i18n'; 13519 * import { PanelBody } from '@wordpress/components'; 13520 * import { PluginSidebar } from '@wordpress/edit-site'; 13521 * import { more } from '@wordpress/icons'; 13522 * 13523 * const MyPluginSidebar = () => ( 13524 * <PluginSidebar 13525 * name="my-sidebar" 13526 * title="My sidebar title" 13527 * icon={ more } 13528 * > 13529 * <PanelBody> 13530 * { __( 'My sidebar content' ) } 13531 * </PanelBody> 13532 * </PluginSidebar> 13533 * ); 13534 * ``` 13535 */ 13536 13537 function PluginSidebarEditSite(_ref) { 13538 let { 13539 className, 13540 ...props 13541 } = _ref; 13542 return (0,external_wp_element_namespaceObject.createElement)(complementary_area, extends_extends({ 13543 panelClassName: className, 13544 className: "edit-site-sidebar", 13545 scope: "core/edit-site" 13546 }, props)); 13547 } 13548 13549 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/plugin-sidebar-more-menu-item/index.js 13550 13551 13552 13553 /** 13554 * WordPress dependencies 13555 */ 13556 13557 /** 13558 * Renders a menu item in `Plugins` group in `More Menu` drop down, 13559 * and can be used to activate the corresponding `PluginSidebar` component. 13560 * The text within the component appears as the menu item label. 13561 * 13562 * @param {Object} props Component props. 13563 * @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. 13564 * @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. 13565 * 13566 * @example 13567 * ```js 13568 * // Using ES5 syntax 13569 * var __ = wp.i18n.__; 13570 * var PluginSidebarMoreMenuItem = wp.editSite.PluginSidebarMoreMenuItem; 13571 * var moreIcon = wp.element.createElement( 'svg' ); //... svg element. 13572 * 13573 * function MySidebarMoreMenuItem() { 13574 * return wp.element.createElement( 13575 * PluginSidebarMoreMenuItem, 13576 * { 13577 * target: 'my-sidebar', 13578 * icon: moreIcon, 13579 * }, 13580 * __( 'My sidebar title' ) 13581 * ) 13582 * } 13583 * ``` 13584 * 13585 * @example 13586 * ```jsx 13587 * // Using ESNext syntax 13588 * import { __ } from '@wordpress/i18n'; 13589 * import { PluginSidebarMoreMenuItem } from '@wordpress/edit-site'; 13590 * import { more } from '@wordpress/icons'; 13591 * 13592 * const MySidebarMoreMenuItem = () => ( 13593 * <PluginSidebarMoreMenuItem 13594 * target="my-sidebar" 13595 * icon={ more } 13596 * > 13597 * { __( 'My sidebar title' ) } 13598 * </PluginSidebarMoreMenuItem> 13599 * ); 13600 * ``` 13601 * 13602 * @return {WPComponent} The component to be rendered. 13603 */ 13604 13605 function PluginSidebarMoreMenuItem(props) { 13606 return (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaMoreMenuItem // Menu item is marked with unstable prop for backward compatibility. 13607 // @see https://github.com/WordPress/gutenberg/issues/14457 13608 , extends_extends({ 13609 __unstableExplicitMenuItem: true, 13610 scope: "core/edit-site" 13611 }, props)); 13612 } 13613 13614 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/plugin-more-menu-item/index.js 13615 /** 13616 * WordPress dependencies 13617 */ 13618 13619 13620 13621 13622 /** 13623 * 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. 13624 * The text within the component appears as the menu item label. 13625 * 13626 * @param {Object} props Component properties. 13627 * @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. 13628 * @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. 13629 * @param {Function} [props.onClick=noop] The callback function to be executed when the user clicks the menu item. 13630 * @param {...*} [props.other] Any additional props are passed through to the underlying [Button](/packages/components/src/button/README.md) component. 13631 * 13632 * @example 13633 * ```js 13634 * // Using ES5 syntax 13635 * var __ = wp.i18n.__; 13636 * var PluginMoreMenuItem = wp.editSite.PluginMoreMenuItem; 13637 * var moreIcon = wp.element.createElement( 'svg' ); //... svg element. 13638 * 13639 * function onButtonClick() { 13640 * alert( 'Button clicked.' ); 13641 * } 13642 * 13643 * function MyButtonMoreMenuItem() { 13644 * return wp.element.createElement( 13645 * PluginMoreMenuItem, 13646 * { 13647 * icon: moreIcon, 13648 * onClick: onButtonClick, 13649 * }, 13650 * __( 'My button title' ) 13651 * ); 13652 * } 13653 * ``` 13654 * 13655 * @example 13656 * ```jsx 13657 * // Using ESNext syntax 13658 * import { __ } from '@wordpress/i18n'; 13659 * import { PluginMoreMenuItem } from '@wordpress/edit-site'; 13660 * import { more } from '@wordpress/icons'; 13661 * 13662 * function onButtonClick() { 13663 * alert( 'Button clicked.' ); 13664 * } 13665 * 13666 * const MyButtonMoreMenuItem = () => ( 13667 * <PluginMoreMenuItem 13668 * icon={ more } 13669 * onClick={ onButtonClick } 13670 * > 13671 * { __( 'My button title' ) } 13672 * </PluginMoreMenuItem> 13673 * ); 13674 * ``` 13675 * 13676 * @return {WPComponent} The component to be rendered. 13677 */ 13678 13679 /* harmony default export */ var plugin_more_menu_item = ((0,external_wp_compose_namespaceObject.compose)((0,external_wp_plugins_namespaceObject.withPluginContext)((context, ownProps) => { 13680 var _ownProps$as; 13681 13682 return { 13683 as: (_ownProps$as = ownProps.as) !== null && _ownProps$as !== void 0 ? _ownProps$as : external_wp_components_namespaceObject.MenuItem, 13684 icon: ownProps.icon || context.icon, 13685 name: 'core/edit-site/plugin-more-menu' 13686 }; 13687 }))(action_item)); 13688 13689 ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/index.js 13690 13691 13692 /** 13693 * WordPress dependencies 13694 */ 13695 13696 13697 13698 13699 13700 13701 13702 13703 13704 13705 /** 13706 * Internal dependencies 13707 */ 13708 13709 13710 13711 13712 13713 13714 /** 13715 * Reinitializes the editor after the user chooses to reboot the editor after 13716 * an unhandled error occurs, replacing previously mounted editor element using 13717 * an initial state from prior to the crash. 13718 * 13719 * @param {Element} target DOM node in which editor is rendered. 13720 * @param {?Object} settings Editor settings object. 13721 */ 13722 13723 function reinitializeEditor(target, settings) { 13724 // Display warning if editor wasn't able to resolve homepage template. 13725 if (!settings.__unstableHomeTemplate) { 13726 (0,external_wp_element_namespaceObject.render)((0,external_wp_element_namespaceObject.createElement)(ErrorBoundaryWarning, { 13727 message: (0,external_wp_i18n_namespaceObject.__)('The editor is unable to find a block template for the homepage.'), 13728 dashboardLink: "index.php" 13729 }), target); 13730 return; 13731 } // This will be a no-op if the target doesn't have any React nodes. 13732 13733 13734 (0,external_wp_element_namespaceObject.unmountComponentAtNode)(target); 13735 const reboot = reinitializeEditor.bind(null, target, settings); // We dispatch actions and update the store synchronously before rendering 13736 // so that we won't trigger unnecessary re-renders with useEffect. 13737 13738 { 13739 (0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core/edit-site', { 13740 editorMode: 'visual', 13741 fixedToolbar: false, 13742 focusMode: false, 13743 keepCaretInsideBlock: false, 13744 welcomeGuide: true, 13745 welcomeGuideStyles: true 13746 }); 13747 (0,external_wp_data_namespaceObject.dispatch)(store_store).updateSettings(settings); // Keep the defaultTemplateTypes in the core/editor settings too, 13748 // so that they can be selected with core/editor selectors in any editor. 13749 // This is needed because edit-site doesn't initialize with EditorProvider, 13750 // which internally uses updateEditorSettings as well. 13751 13752 (0,external_wp_data_namespaceObject.dispatch)(external_wp_editor_namespaceObject.store).updateEditorSettings({ 13753 defaultTemplateTypes: settings.defaultTemplateTypes, 13754 defaultTemplatePartAreas: settings.defaultTemplatePartAreas 13755 }); 13756 const isLandingOnListPage = getIsListPage((0,external_wp_url_namespaceObject.getQueryArgs)(window.location.href)); 13757 13758 if (isLandingOnListPage) { 13759 // Default the navigation panel to be opened when we're in a bigger 13760 // screen and land in the list screen. 13761 (0,external_wp_data_namespaceObject.dispatch)(store_store).setIsNavigationPanelOpened((0,external_wp_data_namespaceObject.select)(external_wp_viewport_namespaceObject.store).isViewportMatch('medium')); 13762 } 13763 } 13764 (0,external_wp_element_namespaceObject.render)((0,external_wp_element_namespaceObject.createElement)(EditSiteApp, { 13765 reboot: reboot 13766 }), target); 13767 } 13768 /** 13769 * Initializes the site editor screen. 13770 * 13771 * @param {string} id ID of the root element to render the screen in. 13772 * @param {Object} settings Editor settings. 13773 */ 13774 13775 function initializeEditor(id, settings) { 13776 settings.__experimentalFetchLinkSuggestions = (search, searchOptions) => (0,external_wp_coreData_namespaceObject.__experimentalFetchLinkSuggestions)(search, searchOptions, settings); 13777 13778 settings.__experimentalFetchRichUrlData = external_wp_coreData_namespaceObject.__experimentalFetchUrlData; 13779 settings.__experimentalSpotlightEntityBlocks = ['core/template-part']; 13780 const target = document.getElementById(id); 13781 13782 (0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).__experimentalReapplyBlockTypeFilters(); 13783 13784 (0,external_wp_blockLibrary_namespaceObject.registerCoreBlocks)(); 13785 13786 if (false) {} 13787 13788 reinitializeEditor(target, settings); 13789 } 13790 13791 13792 13793 13794 13795 13796 }(); 13797 (window.wp = window.wp || {}).editSite = __webpack_exports__; 13798 /******/ })() 13799 ;
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Dec 22 01:00:02 2024 | Cross-referenced by PHPXref 0.7.1 |