13820 lines
467 KiB
JavaScript
13820 lines
467 KiB
JavaScript
|
/******/ (function() { // webpackBootstrap
|
|||
|
/******/ var __webpack_modules__ = ({
|
|||
|
|
|||
|
/***/ 6411:
|
|||
|
/***/ (function(module, exports) {
|
|||
|
|
|||
|
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
|
|||
|
autosize 4.0.4
|
|||
|
license: MIT
|
|||
|
http://www.jacklmoore.com/autosize
|
|||
|
*/
|
|||
|
(function (global, factory) {
|
|||
|
if (true) {
|
|||
|
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
|
|||
|
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
|
|||
|
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
|
|||
|
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
|||
|
} else { var mod; }
|
|||
|
})(this, function (module, exports) {
|
|||
|
'use strict';
|
|||
|
|
|||
|
var map = typeof Map === "function" ? new Map() : function () {
|
|||
|
var keys = [];
|
|||
|
var values = [];
|
|||
|
|
|||
|
return {
|
|||
|
has: function has(key) {
|
|||
|
return keys.indexOf(key) > -1;
|
|||
|
},
|
|||
|
get: function get(key) {
|
|||
|
return values[keys.indexOf(key)];
|
|||
|
},
|
|||
|
set: function set(key, value) {
|
|||
|
if (keys.indexOf(key) === -1) {
|
|||
|
keys.push(key);
|
|||
|
values.push(value);
|
|||
|
}
|
|||
|
},
|
|||
|
delete: function _delete(key) {
|
|||
|
var index = keys.indexOf(key);
|
|||
|
if (index > -1) {
|
|||
|
keys.splice(index, 1);
|
|||
|
values.splice(index, 1);
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
}();
|
|||
|
|
|||
|
var createEvent = function createEvent(name) {
|
|||
|
return new Event(name, { bubbles: true });
|
|||
|
};
|
|||
|
try {
|
|||
|
new Event('test');
|
|||
|
} catch (e) {
|
|||
|
// IE does not support `new Event()`
|
|||
|
createEvent = function createEvent(name) {
|
|||
|
var evt = document.createEvent('Event');
|
|||
|
evt.initEvent(name, true, false);
|
|||
|
return evt;
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
function assign(ta) {
|
|||
|
if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
|
|||
|
|
|||
|
var heightOffset = null;
|
|||
|
var clientWidth = null;
|
|||
|
var cachedHeight = null;
|
|||
|
|
|||
|
function init() {
|
|||
|
var style = window.getComputedStyle(ta, null);
|
|||
|
|
|||
|
if (style.resize === 'vertical') {
|
|||
|
ta.style.resize = 'none';
|
|||
|
} else if (style.resize === 'both') {
|
|||
|
ta.style.resize = 'horizontal';
|
|||
|
}
|
|||
|
|
|||
|
if (style.boxSizing === 'content-box') {
|
|||
|
heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
|
|||
|
} else {
|
|||
|
heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
|
|||
|
}
|
|||
|
// Fix when a textarea is not on document body and heightOffset is Not a Number
|
|||
|
if (isNaN(heightOffset)) {
|
|||
|
heightOffset = 0;
|
|||
|
}
|
|||
|
|
|||
|
update();
|
|||
|
}
|
|||
|
|
|||
|
function changeOverflow(value) {
|
|||
|
{
|
|||
|
// Chrome/Safari-specific fix:
|
|||
|
// When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
|
|||
|
// made available by removing the scrollbar. The following forces the necessary text reflow.
|
|||
|
var width = ta.style.width;
|
|||
|
ta.style.width = '0px';
|
|||
|
// Force reflow:
|
|||
|
/* jshint ignore:start */
|
|||
|
ta.offsetWidth;
|
|||
|
/* jshint ignore:end */
|
|||
|
ta.style.width = width;
|
|||
|
}
|
|||
|
|
|||
|
ta.style.overflowY = value;
|
|||
|
}
|
|||
|
|
|||
|
function getParentOverflows(el) {
|
|||
|
var arr = [];
|
|||
|
|
|||
|
while (el && el.parentNode && el.parentNode instanceof Element) {
|
|||
|
if (el.parentNode.scrollTop) {
|
|||
|
arr.push({
|
|||
|
node: el.parentNode,
|
|||
|
scrollTop: el.parentNode.scrollTop
|
|||
|
});
|
|||
|
}
|
|||
|
el = el.parentNode;
|
|||
|
}
|
|||
|
|
|||
|
return arr;
|
|||
|
}
|
|||
|
|
|||
|
function resize() {
|
|||
|
if (ta.scrollHeight === 0) {
|
|||
|
// If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
var overflows = getParentOverflows(ta);
|
|||
|
var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
|
|||
|
|
|||
|
ta.style.height = '';
|
|||
|
ta.style.height = ta.scrollHeight + heightOffset + 'px';
|
|||
|
|
|||
|
// used to check if an update is actually necessary on window.resize
|
|||
|
clientWidth = ta.clientWidth;
|
|||
|
|
|||
|
// prevents scroll-position jumping
|
|||
|
overflows.forEach(function (el) {
|
|||
|
el.node.scrollTop = el.scrollTop;
|
|||
|
});
|
|||
|
|
|||
|
if (docTop) {
|
|||
|
document.documentElement.scrollTop = docTop;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function update() {
|
|||
|
resize();
|
|||
|
|
|||
|
var styleHeight = Math.round(parseFloat(ta.style.height));
|
|||
|
var computed = window.getComputedStyle(ta, null);
|
|||
|
|
|||
|
// Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
|
|||
|
var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;
|
|||
|
|
|||
|
// The actual height not matching the style height (set via the resize method) indicates that
|
|||
|
// the max-height has been exceeded, in which case the overflow should be allowed.
|
|||
|
if (actualHeight < styleHeight) {
|
|||
|
if (computed.overflowY === 'hidden') {
|
|||
|
changeOverflow('scroll');
|
|||
|
resize();
|
|||
|
actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
|
|||
|
}
|
|||
|
} else {
|
|||
|
// Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
|
|||
|
if (computed.overflowY !== 'hidden') {
|
|||
|
changeOverflow('hidden');
|
|||
|
resize();
|
|||
|
actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (cachedHeight !== actualHeight) {
|
|||
|
cachedHeight = actualHeight;
|
|||
|
var evt = createEvent('autosize:resized');
|
|||
|
try {
|
|||
|
ta.dispatchEvent(evt);
|
|||
|
} catch (err) {
|
|||
|
// Firefox will throw an error on dispatchEvent for a detached element
|
|||
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=889376
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
var pageResize = function pageResize() {
|
|||
|
if (ta.clientWidth !== clientWidth) {
|
|||
|
update();
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
var destroy = function (style) {
|
|||
|
window.removeEventListener('resize', pageResize, false);
|
|||
|
ta.removeEventListener('input', update, false);
|
|||
|
ta.removeEventListener('keyup', update, false);
|
|||
|
ta.removeEventListener('autosize:destroy', destroy, false);
|
|||
|
ta.removeEventListener('autosize:update', update, false);
|
|||
|
|
|||
|
Object.keys(style).forEach(function (key) {
|
|||
|
ta.style[key] = style[key];
|
|||
|
});
|
|||
|
|
|||
|
map.delete(ta);
|
|||
|
}.bind(ta, {
|
|||
|
height: ta.style.height,
|
|||
|
resize: ta.style.resize,
|
|||
|
overflowY: ta.style.overflowY,
|
|||
|
overflowX: ta.style.overflowX,
|
|||
|
wordWrap: ta.style.wordWrap
|
|||
|
});
|
|||
|
|
|||
|
ta.addEventListener('autosize:destroy', destroy, false);
|
|||
|
|
|||
|
// IE9 does not fire onpropertychange or oninput for deletions,
|
|||
|
// so binding to onkeyup to catch most of those events.
|
|||
|
// There is no way that I know of to detect something like 'cut' in IE9.
|
|||
|
if ('onpropertychange' in ta && 'oninput' in ta) {
|
|||
|
ta.addEventListener('keyup', update, false);
|
|||
|
}
|
|||
|
|
|||
|
window.addEventListener('resize', pageResize, false);
|
|||
|
ta.addEventListener('input', update, false);
|
|||
|
ta.addEventListener('autosize:update', update, false);
|
|||
|
ta.style.overflowX = 'hidden';
|
|||
|
ta.style.wordWrap = 'break-word';
|
|||
|
|
|||
|
map.set(ta, {
|
|||
|
destroy: destroy,
|
|||
|
update: update
|
|||
|
});
|
|||
|
|
|||
|
init();
|
|||
|
}
|
|||
|
|
|||
|
function destroy(ta) {
|
|||
|
var methods = map.get(ta);
|
|||
|
if (methods) {
|
|||
|
methods.destroy();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function update(ta) {
|
|||
|
var methods = map.get(ta);
|
|||
|
if (methods) {
|
|||
|
methods.update();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
var autosize = null;
|
|||
|
|
|||
|
// Do nothing in Node.js environment and IE8 (or lower)
|
|||
|
if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
|
|||
|
autosize = function autosize(el) {
|
|||
|
return el;
|
|||
|
};
|
|||
|
autosize.destroy = function (el) {
|
|||
|
return el;
|
|||
|
};
|
|||
|
autosize.update = function (el) {
|
|||
|
return el;
|
|||
|
};
|
|||
|
} else {
|
|||
|
autosize = function autosize(el, options) {
|
|||
|
if (el) {
|
|||
|
Array.prototype.forEach.call(el.length ? el : [el], function (x) {
|
|||
|
return assign(x, options);
|
|||
|
});
|
|||
|
}
|
|||
|
return el;
|
|||
|
};
|
|||
|
autosize.destroy = function (el) {
|
|||
|
if (el) {
|
|||
|
Array.prototype.forEach.call(el.length ? el : [el], destroy);
|
|||
|
}
|
|||
|
return el;
|
|||
|
};
|
|||
|
autosize.update = function (el) {
|
|||
|
if (el) {
|
|||
|
Array.prototype.forEach.call(el.length ? el : [el], update);
|
|||
|
}
|
|||
|
return el;
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
exports.default = autosize;
|
|||
|
module.exports = exports['default'];
|
|||
|
});
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ 4403:
|
|||
|
/***/ (function(module, exports) {
|
|||
|
|
|||
|
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
|
|||
|
Copyright (c) 2018 Jed Watson.
|
|||
|
Licensed under the MIT License (MIT), see
|
|||
|
http://jedwatson.github.io/classnames
|
|||
|
*/
|
|||
|
/* global define */
|
|||
|
|
|||
|
(function () {
|
|||
|
'use strict';
|
|||
|
|
|||
|
var hasOwn = {}.hasOwnProperty;
|
|||
|
|
|||
|
function classNames() {
|
|||
|
var classes = [];
|
|||
|
|
|||
|
for (var i = 0; i < arguments.length; i++) {
|
|||
|
var arg = arguments[i];
|
|||
|
if (!arg) continue;
|
|||
|
|
|||
|
var argType = typeof arg;
|
|||
|
|
|||
|
if (argType === 'string' || argType === 'number') {
|
|||
|
classes.push(arg);
|
|||
|
} else if (Array.isArray(arg)) {
|
|||
|
if (arg.length) {
|
|||
|
var inner = classNames.apply(null, arg);
|
|||
|
if (inner) {
|
|||
|
classes.push(inner);
|
|||
|
}
|
|||
|
}
|
|||
|
} else if (argType === 'object') {
|
|||
|
if (arg.toString === Object.prototype.toString) {
|
|||
|
for (var key in arg) {
|
|||
|
if (hasOwn.call(arg, key) && arg[key]) {
|
|||
|
classes.push(key);
|
|||
|
}
|
|||
|
}
|
|||
|
} else {
|
|||
|
classes.push(arg.toString());
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return classes.join(' ');
|
|||
|
}
|
|||
|
|
|||
|
if ( true && module.exports) {
|
|||
|
classNames.default = classNames;
|
|||
|
module.exports = classNames;
|
|||
|
} else if (true) {
|
|||
|
// register as 'classnames', consistent with npm package name
|
|||
|
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
|
|||
|
return classNames;
|
|||
|
}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
|
|||
|
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
|||
|
} else {}
|
|||
|
}());
|
|||
|
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ 4827:
|
|||
|
/***/ (function(module) {
|
|||
|
|
|||
|
// This code has been refactored for 140 bytes
|
|||
|
// You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js
|
|||
|
var computedStyle = function (el, prop, getComputedStyle) {
|
|||
|
getComputedStyle = window.getComputedStyle;
|
|||
|
|
|||
|
// In one fell swoop
|
|||
|
return (
|
|||
|
// If we have getComputedStyle
|
|||
|
getComputedStyle ?
|
|||
|
// Query it
|
|||
|
// TODO: From CSS-Query notes, we might need (node, null) for FF
|
|||
|
getComputedStyle(el) :
|
|||
|
|
|||
|
// Otherwise, we are in IE and use currentStyle
|
|||
|
el.currentStyle
|
|||
|
)[
|
|||
|
// Switch to camelCase for CSSOM
|
|||
|
// DEV: Grabbed from jQuery
|
|||
|
// https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194
|
|||
|
// https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597
|
|||
|
prop.replace(/-(\w)/gi, function (word, letter) {
|
|||
|
return letter.toUpperCase();
|
|||
|
})
|
|||
|
];
|
|||
|
};
|
|||
|
|
|||
|
module.exports = computedStyle;
|
|||
|
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ 8981:
|
|||
|
/***/ (function(module, exports) {
|
|||
|
|
|||
|
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage
|
|||
|
// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime
|
|||
|
// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs
|
|||
|
// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.
|
|||
|
// v4 adds AMD/UMD, commonJS, and plain browser support
|
|||
|
// v4.1 adds url download capability via solo URL argument (same domain/CORS only)
|
|||
|
// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors
|
|||
|
// https://github.com/rndme/download
|
|||
|
|
|||
|
(function (root, factory) {
|
|||
|
if (true) {
|
|||
|
// AMD. Register as an anonymous module.
|
|||
|
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
|
|||
|
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
|
|||
|
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
|
|||
|
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
|||
|
} else {}
|
|||
|
}(this, function () {
|
|||
|
|
|||
|
return function download(data, strFileName, strMimeType) {
|
|||
|
|
|||
|
var self = window, // this script is only for browsers anyway...
|
|||
|
defaultMime = "application/octet-stream", // this default mime also triggers iframe downloads
|
|||
|
mimeType = strMimeType || defaultMime,
|
|||
|
payload = data,
|
|||
|
url = !strFileName && !strMimeType && payload,
|
|||
|
anchor = document.createElement("a"),
|
|||
|
toString = function(a){return String(a);},
|
|||
|
myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),
|
|||
|
fileName = strFileName || "download",
|
|||
|
blob,
|
|||
|
reader;
|
|||
|
myBlob= myBlob.call ? myBlob.bind(self) : Blob ;
|
|||
|
|
|||
|
if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
|
|||
|
payload=[payload, mimeType];
|
|||
|
mimeType=payload[0];
|
|||
|
payload=payload[1];
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument
|
|||
|
fileName = url.split("/").pop().split("?")[0];
|
|||
|
anchor.href = url; // assign href prop to temp anchor
|
|||
|
if(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:
|
|||
|
var ajax=new XMLHttpRequest();
|
|||
|
ajax.open( "GET", url, true);
|
|||
|
ajax.responseType = 'blob';
|
|||
|
ajax.onload= function(e){
|
|||
|
download(e.target.response, fileName, defaultMime);
|
|||
|
};
|
|||
|
setTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:
|
|||
|
return ajax;
|
|||
|
} // end if valid url?
|
|||
|
} // end if url?
|
|||
|
|
|||
|
|
|||
|
//go ahead and download dataURLs right away
|
|||
|
if(/^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(payload)){
|
|||
|
|
|||
|
if(payload.length > (1024*1024*1.999) && myBlob !== toString ){
|
|||
|
payload=dataUrlToBlob(payload);
|
|||
|
mimeType=payload.type || defaultMime;
|
|||
|
}else{
|
|||
|
return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:
|
|||
|
navigator.msSaveBlob(dataUrlToBlob(payload), fileName) :
|
|||
|
saver(payload) ; // everyone else can save dataURLs un-processed
|
|||
|
}
|
|||
|
|
|||
|
}else{//not data url, is it a string with special needs?
|
|||
|
if(/([\x80-\xff])/.test(payload)){
|
|||
|
var i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length;
|
|||
|
for(i;i<mx;++i) tempUiArr[i]= payload.charCodeAt(i);
|
|||
|
payload=new myBlob([tempUiArr], {type: mimeType});
|
|||
|
}
|
|||
|
}
|
|||
|
blob = payload instanceof myBlob ?
|
|||
|
payload :
|
|||
|
new myBlob([payload], {type: mimeType}) ;
|
|||
|
|
|||
|
|
|||
|
function dataUrlToBlob(strUrl) {
|
|||
|
var parts= strUrl.split(/[:;,]/),
|
|||
|
type= parts[1],
|
|||
|
decoder= parts[2] == "base64" ? atob : decodeURIComponent,
|
|||
|
binData= decoder( parts.pop() ),
|
|||
|
mx= binData.length,
|
|||
|
i= 0,
|
|||
|
uiArr= new Uint8Array(mx);
|
|||
|
|
|||
|
for(i;i<mx;++i) uiArr[i]= binData.charCodeAt(i);
|
|||
|
|
|||
|
return new myBlob([uiArr], {type: type});
|
|||
|
}
|
|||
|
|
|||
|
function saver(url, winMode){
|
|||
|
|
|||
|
if ('download' in anchor) { //html5 A[download]
|
|||
|
anchor.href = url;
|
|||
|
anchor.setAttribute("download", fileName);
|
|||
|
anchor.className = "download-js-link";
|
|||
|
anchor.innerHTML = "downloading...";
|
|||
|
anchor.style.display = "none";
|
|||
|
document.body.appendChild(anchor);
|
|||
|
setTimeout(function() {
|
|||
|
anchor.click();
|
|||
|
document.body.removeChild(anchor);
|
|||
|
if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(anchor.href);}, 250 );}
|
|||
|
}, 66);
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
// handle non-a[download] safari as best we can:
|
|||
|
if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent)) {
|
|||
|
if(/^data:/.test(url)) url="data:"+url.replace(/^data:([\w\/\-\+]+)/, defaultMime);
|
|||
|
if(!window.open(url)){ // popup blocked, offer direct download:
|
|||
|
if(confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")){ location.href=url; }
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
//do iframe dataURL download (old ch+FF):
|
|||
|
var f = document.createElement("iframe");
|
|||
|
document.body.appendChild(f);
|
|||
|
|
|||
|
if(!winMode && /^data:/.test(url)){ // force a mime that will download:
|
|||
|
url="data:"+url.replace(/^data:([\w\/\-\+]+)/, defaultMime);
|
|||
|
}
|
|||
|
f.src=url;
|
|||
|
setTimeout(function(){ document.body.removeChild(f); }, 333);
|
|||
|
|
|||
|
}//end saver
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)
|
|||
|
return navigator.msSaveBlob(blob, fileName);
|
|||
|
}
|
|||
|
|
|||
|
if(self.URL){ // simple fast and modern way using Blob and URL:
|
|||
|
saver(self.URL.createObjectURL(blob), true);
|
|||
|
}else{
|
|||
|
// handle non-Blob()+non-URL browsers:
|
|||
|
if(typeof blob === "string" || blob.constructor===toString ){
|
|||
|
try{
|
|||
|
return saver( "data:" + mimeType + ";base64," + self.btoa(blob) );
|
|||
|
}catch(y){
|
|||
|
return saver( "data:" + mimeType + "," + encodeURIComponent(blob) );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Blob but not URL support:
|
|||
|
reader=new FileReader();
|
|||
|
reader.onload=function(e){
|
|||
|
saver(this.result);
|
|||
|
};
|
|||
|
reader.readAsDataURL(blob);
|
|||
|
}
|
|||
|
return true;
|
|||
|
}; /* end download() */
|
|||
|
}));
|
|||
|
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ 9894:
|
|||
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|||
|
|
|||
|
// Load in dependencies
|
|||
|
var computedStyle = __webpack_require__(4827);
|
|||
|
|
|||
|
/**
|
|||
|
* Calculate the `line-height` of a given node
|
|||
|
* @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.
|
|||
|
* @returns {Number} `line-height` of the element in pixels
|
|||
|
*/
|
|||
|
function lineHeight(node) {
|
|||
|
// Grab the line-height via style
|
|||
|
var lnHeightStr = computedStyle(node, 'line-height');
|
|||
|
var lnHeight = parseFloat(lnHeightStr, 10);
|
|||
|
|
|||
|
// If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')
|
|||
|
if (lnHeightStr === lnHeight + '') {
|
|||
|
// Save the old lineHeight style and update the em unit to the element
|
|||
|
var _lnHeightStyle = node.style.lineHeight;
|
|||
|
node.style.lineHeight = lnHeightStr + 'em';
|
|||
|
|
|||
|
// Calculate the em based height
|
|||
|
lnHeightStr = computedStyle(node, 'line-height');
|
|||
|
lnHeight = parseFloat(lnHeightStr, 10);
|
|||
|
|
|||
|
// Revert the lineHeight style
|
|||
|
if (_lnHeightStyle) {
|
|||
|
node.style.lineHeight = _lnHeightStyle;
|
|||
|
} else {
|
|||
|
delete node.style.lineHeight;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)
|
|||
|
// DEV: `em` units are converted to `pt` in IE6
|
|||
|
// Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length
|
|||
|
if (lnHeightStr.indexOf('pt') !== -1) {
|
|||
|
lnHeight *= 4;
|
|||
|
lnHeight /= 3;
|
|||
|
// Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)
|
|||
|
} else if (lnHeightStr.indexOf('mm') !== -1) {
|
|||
|
lnHeight *= 96;
|
|||
|
lnHeight /= 25.4;
|
|||
|
// Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)
|
|||
|
} else if (lnHeightStr.indexOf('cm') !== -1) {
|
|||
|
lnHeight *= 96;
|
|||
|
lnHeight /= 2.54;
|
|||
|
// Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)
|
|||
|
} else if (lnHeightStr.indexOf('in') !== -1) {
|
|||
|
lnHeight *= 96;
|
|||
|
// Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)
|
|||
|
} else if (lnHeightStr.indexOf('pc') !== -1) {
|
|||
|
lnHeight *= 16;
|
|||
|
}
|
|||
|
|
|||
|
// Continue our computation
|
|||
|
lnHeight = Math.round(lnHeight);
|
|||
|
|
|||
|
// If the line-height is "normal", calculate by font-size
|
|||
|
if (lnHeightStr === 'normal') {
|
|||
|
// Create a temporary node
|
|||
|
var nodeName = node.nodeName;
|
|||
|
var _node = document.createElement(nodeName);
|
|||
|
_node.innerHTML = ' ';
|
|||
|
|
|||
|
// If we have a text area, reset it to only 1 row
|
|||
|
// https://github.com/twolfson/line-height/issues/4
|
|||
|
if (nodeName.toUpperCase() === 'TEXTAREA') {
|
|||
|
_node.setAttribute('rows', '1');
|
|||
|
}
|
|||
|
|
|||
|
// Set the font-size of the element
|
|||
|
var fontSizeStr = computedStyle(node, 'font-size');
|
|||
|
_node.style.fontSize = fontSizeStr;
|
|||
|
|
|||
|
// Remove default padding/border which can affect offset height
|
|||
|
// https://github.com/twolfson/line-height/issues/4
|
|||
|
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight
|
|||
|
_node.style.padding = '0px';
|
|||
|
_node.style.border = '0px';
|
|||
|
|
|||
|
// Append it to the body
|
|||
|
var body = document.body;
|
|||
|
body.appendChild(_node);
|
|||
|
|
|||
|
// Assume the line height of the element is the height
|
|||
|
var height = _node.offsetHeight;
|
|||
|
lnHeight = height;
|
|||
|
|
|||
|
// Remove our child from the DOM
|
|||
|
body.removeChild(_node);
|
|||
|
}
|
|||
|
|
|||
|
// Return the calculated height
|
|||
|
return lnHeight;
|
|||
|
}
|
|||
|
|
|||
|
// Export lineHeight
|
|||
|
module.exports = lineHeight;
|
|||
|
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ 5372:
|
|||
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
/**
|
|||
|
* Copyright (c) 2013-present, Facebook, Inc.
|
|||
|
*
|
|||
|
* This source code is licensed under the MIT license found in the
|
|||
|
* LICENSE file in the root directory of this source tree.
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
var ReactPropTypesSecret = __webpack_require__(9567);
|
|||
|
|
|||
|
function emptyFunction() {}
|
|||
|
function emptyFunctionWithReset() {}
|
|||
|
emptyFunctionWithReset.resetWarningCache = emptyFunction;
|
|||
|
|
|||
|
module.exports = function() {
|
|||
|
function shim(props, propName, componentName, location, propFullName, secret) {
|
|||
|
if (secret === ReactPropTypesSecret) {
|
|||
|
// It is still safe when called from React.
|
|||
|
return;
|
|||
|
}
|
|||
|
var err = new Error(
|
|||
|
'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
|
|||
|
'Use PropTypes.checkPropTypes() to call them. ' +
|
|||
|
'Read more at http://fb.me/use-check-prop-types'
|
|||
|
);
|
|||
|
err.name = 'Invariant Violation';
|
|||
|
throw err;
|
|||
|
};
|
|||
|
shim.isRequired = shim;
|
|||
|
function getShim() {
|
|||
|
return shim;
|
|||
|
};
|
|||
|
// Important!
|
|||
|
// Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
|
|||
|
var ReactPropTypes = {
|
|||
|
array: shim,
|
|||
|
bigint: shim,
|
|||
|
bool: shim,
|
|||
|
func: shim,
|
|||
|
number: shim,
|
|||
|
object: shim,
|
|||
|
string: shim,
|
|||
|
symbol: shim,
|
|||
|
|
|||
|
any: shim,
|
|||
|
arrayOf: getShim,
|
|||
|
element: shim,
|
|||
|
elementType: shim,
|
|||
|
instanceOf: getShim,
|
|||
|
node: shim,
|
|||
|
objectOf: getShim,
|
|||
|
oneOf: getShim,
|
|||
|
oneOfType: getShim,
|
|||
|
shape: getShim,
|
|||
|
exact: getShim,
|
|||
|
|
|||
|
checkPropTypes: emptyFunctionWithReset,
|
|||
|
resetWarningCache: emptyFunction
|
|||
|
};
|
|||
|
|
|||
|
ReactPropTypes.PropTypes = ReactPropTypes;
|
|||
|
|
|||
|
return ReactPropTypes;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ 2652:
|
|||
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|||
|
|
|||
|
/**
|
|||
|
* Copyright (c) 2013-present, Facebook, Inc.
|
|||
|
*
|
|||
|
* This source code is licensed under the MIT license found in the
|
|||
|
* LICENSE file in the root directory of this source tree.
|
|||
|
*/
|
|||
|
|
|||
|
if (false) { var throwOnDirectAccess, ReactIs; } else {
|
|||
|
// By explicitly using `prop-types` you are opting into new production behavior.
|
|||
|
// http://fb.me/prop-types-in-prod
|
|||
|
module.exports = __webpack_require__(5372)();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ 9567:
|
|||
|
/***/ (function(module) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
/**
|
|||
|
* Copyright (c) 2013-present, Facebook, Inc.
|
|||
|
*
|
|||
|
* This source code is licensed under the MIT license found in the
|
|||
|
* LICENSE file in the root directory of this source tree.
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
|
|||
|
|
|||
|
module.exports = ReactPropTypesSecret;
|
|||
|
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ 5438:
|
|||
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
|
|||
|
var __extends = (this && this.__extends) || (function () {
|
|||
|
var extendStatics = Object.setPrototypeOf ||
|
|||
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|||
|
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|||
|
return function (d, b) {
|
|||
|
extendStatics(d, b);
|
|||
|
function __() { this.constructor = d; }
|
|||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|||
|
};
|
|||
|
})();
|
|||
|
var __assign = (this && this.__assign) || Object.assign || function(t) {
|
|||
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|||
|
s = arguments[i];
|
|||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|||
|
t[p] = s[p];
|
|||
|
}
|
|||
|
return t;
|
|||
|
};
|
|||
|
var __rest = (this && this.__rest) || function (s, e) {
|
|||
|
var t = {};
|
|||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|||
|
t[p] = s[p];
|
|||
|
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|||
|
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
|
|||
|
t[p[i]] = s[p[i]];
|
|||
|
return t;
|
|||
|
};
|
|||
|
exports.__esModule = true;
|
|||
|
var React = __webpack_require__(9196);
|
|||
|
var PropTypes = __webpack_require__(2652);
|
|||
|
var autosize = __webpack_require__(6411);
|
|||
|
var _getLineHeight = __webpack_require__(9894);
|
|||
|
var getLineHeight = _getLineHeight;
|
|||
|
var RESIZED = "autosize:resized";
|
|||
|
/**
|
|||
|
* A light replacement for built-in textarea component
|
|||
|
* which automaticaly adjusts its height to match the content
|
|||
|
*/
|
|||
|
var TextareaAutosizeClass = /** @class */ (function (_super) {
|
|||
|
__extends(TextareaAutosizeClass, _super);
|
|||
|
function TextareaAutosizeClass() {
|
|||
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|||
|
_this.state = {
|
|||
|
lineHeight: null
|
|||
|
};
|
|||
|
_this.textarea = null;
|
|||
|
_this.onResize = function (e) {
|
|||
|
if (_this.props.onResize) {
|
|||
|
_this.props.onResize(e);
|
|||
|
}
|
|||
|
};
|
|||
|
_this.updateLineHeight = function () {
|
|||
|
if (_this.textarea) {
|
|||
|
_this.setState({
|
|||
|
lineHeight: getLineHeight(_this.textarea)
|
|||
|
});
|
|||
|
}
|
|||
|
};
|
|||
|
_this.onChange = function (e) {
|
|||
|
var onChange = _this.props.onChange;
|
|||
|
_this.currentValue = e.currentTarget.value;
|
|||
|
onChange && onChange(e);
|
|||
|
};
|
|||
|
return _this;
|
|||
|
}
|
|||
|
TextareaAutosizeClass.prototype.componentDidMount = function () {
|
|||
|
var _this = this;
|
|||
|
var _a = this.props, maxRows = _a.maxRows, async = _a.async;
|
|||
|
if (typeof maxRows === "number") {
|
|||
|
this.updateLineHeight();
|
|||
|
}
|
|||
|
if (typeof maxRows === "number" || async) {
|
|||
|
/*
|
|||
|
the defer is needed to:
|
|||
|
- force "autosize" to activate the scrollbar when this.props.maxRows is passed
|
|||
|
- support StyledComponents (see #71)
|
|||
|
*/
|
|||
|
setTimeout(function () { return _this.textarea && autosize(_this.textarea); });
|
|||
|
}
|
|||
|
else {
|
|||
|
this.textarea && autosize(this.textarea);
|
|||
|
}
|
|||
|
if (this.textarea) {
|
|||
|
this.textarea.addEventListener(RESIZED, this.onResize);
|
|||
|
}
|
|||
|
};
|
|||
|
TextareaAutosizeClass.prototype.componentWillUnmount = function () {
|
|||
|
if (this.textarea) {
|
|||
|
this.textarea.removeEventListener(RESIZED, this.onResize);
|
|||
|
autosize.destroy(this.textarea);
|
|||
|
}
|
|||
|
};
|
|||
|
TextareaAutosizeClass.prototype.render = function () {
|
|||
|
var _this = this;
|
|||
|
var _a = this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, children = _b.children, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "innerRef", "children"]), lineHeight = _a.state.lineHeight;
|
|||
|
var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null;
|
|||
|
return (React.createElement("textarea", __assign({}, props, { onChange: this.onChange, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, ref: function (element) {
|
|||
|
_this.textarea = element;
|
|||
|
if (typeof _this.props.innerRef === 'function') {
|
|||
|
_this.props.innerRef(element);
|
|||
|
}
|
|||
|
else if (_this.props.innerRef) {
|
|||
|
_this.props.innerRef.current = element;
|
|||
|
}
|
|||
|
} }), children));
|
|||
|
};
|
|||
|
TextareaAutosizeClass.prototype.componentDidUpdate = function () {
|
|||
|
this.textarea && autosize.update(this.textarea);
|
|||
|
};
|
|||
|
TextareaAutosizeClass.defaultProps = {
|
|||
|
rows: 1,
|
|||
|
async: false
|
|||
|
};
|
|||
|
TextareaAutosizeClass.propTypes = {
|
|||
|
rows: PropTypes.number,
|
|||
|
maxRows: PropTypes.number,
|
|||
|
onResize: PropTypes.func,
|
|||
|
innerRef: PropTypes.any,
|
|||
|
async: PropTypes.bool
|
|||
|
};
|
|||
|
return TextareaAutosizeClass;
|
|||
|
}(React.Component));
|
|||
|
exports.TextareaAutosize = React.forwardRef(function (props, ref) {
|
|||
|
return React.createElement(TextareaAutosizeClass, __assign({}, props, { innerRef: ref }));
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ 773:
|
|||
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
var __webpack_unused_export__;
|
|||
|
|
|||
|
__webpack_unused_export__ = true;
|
|||
|
var TextareaAutosize_1 = __webpack_require__(5438);
|
|||
|
exports.Z = TextareaAutosize_1.TextareaAutosize;
|
|||
|
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ 9196:
|
|||
|
/***/ (function(module) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
module.exports = window["React"];
|
|||
|
|
|||
|
/***/ })
|
|||
|
|
|||
|
/******/ });
|
|||
|
/************************************************************************/
|
|||
|
/******/ // The module cache
|
|||
|
/******/ var __webpack_module_cache__ = {};
|
|||
|
/******/
|
|||
|
/******/ // The require function
|
|||
|
/******/ function __webpack_require__(moduleId) {
|
|||
|
/******/ // Check if module is in cache
|
|||
|
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|||
|
/******/ if (cachedModule !== undefined) {
|
|||
|
/******/ return cachedModule.exports;
|
|||
|
/******/ }
|
|||
|
/******/ // Create a new module (and put it into the cache)
|
|||
|
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|||
|
/******/ // no module.id needed
|
|||
|
/******/ // no module.loaded needed
|
|||
|
/******/ exports: {}
|
|||
|
/******/ };
|
|||
|
/******/
|
|||
|
/******/ // Execute the module function
|
|||
|
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|||
|
/******/
|
|||
|
/******/ // Return the exports of the module
|
|||
|
/******/ return module.exports;
|
|||
|
/******/ }
|
|||
|
/******/
|
|||
|
/************************************************************************/
|
|||
|
/******/ /* webpack/runtime/compat get default export */
|
|||
|
/******/ !function() {
|
|||
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|||
|
/******/ __webpack_require__.n = function(module) {
|
|||
|
/******/ var getter = module && module.__esModule ?
|
|||
|
/******/ function() { return module['default']; } :
|
|||
|
/******/ function() { return module; };
|
|||
|
/******/ __webpack_require__.d(getter, { a: getter });
|
|||
|
/******/ return getter;
|
|||
|
/******/ };
|
|||
|
/******/ }();
|
|||
|
/******/
|
|||
|
/******/ /* webpack/runtime/define property getters */
|
|||
|
/******/ !function() {
|
|||
|
/******/ // define getter functions for harmony exports
|
|||
|
/******/ __webpack_require__.d = function(exports, definition) {
|
|||
|
/******/ for(var key in definition) {
|
|||
|
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|||
|
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|||
|
/******/ }
|
|||
|
/******/ }
|
|||
|
/******/ };
|
|||
|
/******/ }();
|
|||
|
/******/
|
|||
|
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|||
|
/******/ !function() {
|
|||
|
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
|
|||
|
/******/ }();
|
|||
|
/******/
|
|||
|
/******/ /* webpack/runtime/make namespace object */
|
|||
|
/******/ !function() {
|
|||
|
/******/ // define __esModule on exports
|
|||
|
/******/ __webpack_require__.r = function(exports) {
|
|||
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|||
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|||
|
/******/ }
|
|||
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|||
|
/******/ };
|
|||
|
/******/ }();
|
|||
|
/******/
|
|||
|
/************************************************************************/
|
|||
|
var __webpack_exports__ = {};
|
|||
|
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
|
|||
|
!function() {
|
|||
|
"use strict";
|
|||
|
// ESM COMPAT FLAG
|
|||
|
__webpack_require__.r(__webpack_exports__);
|
|||
|
|
|||
|
// EXPORTS
|
|||
|
__webpack_require__.d(__webpack_exports__, {
|
|||
|
"PluginMoreMenuItem": function() { return /* reexport */ plugin_more_menu_item; },
|
|||
|
"PluginSidebar": function() { return /* reexport */ PluginSidebarEditSite; },
|
|||
|
"PluginSidebarMoreMenuItem": function() { return /* reexport */ PluginSidebarMoreMenuItem; },
|
|||
|
"__experimentalMainDashboardButton": function() { return /* reexport */ main_dashboard_button; },
|
|||
|
"__experimentalNavigationToggle": function() { return /* reexport */ navigation_toggle; },
|
|||
|
"initializeEditor": function() { return /* binding */ initializeEditor; },
|
|||
|
"reinitializeEditor": function() { return /* binding */ reinitializeEditor; }
|
|||
|
});
|
|||
|
|
|||
|
// NAMESPACE OBJECT: ./node_modules/@wordpress/interface/build-module/store/actions.js
|
|||
|
var actions_namespaceObject = {};
|
|||
|
__webpack_require__.r(actions_namespaceObject);
|
|||
|
__webpack_require__.d(actions_namespaceObject, {
|
|||
|
"disableComplementaryArea": function() { return disableComplementaryArea; },
|
|||
|
"enableComplementaryArea": function() { return enableComplementaryArea; },
|
|||
|
"pinItem": function() { return pinItem; },
|
|||
|
"setFeatureDefaults": function() { return setFeatureDefaults; },
|
|||
|
"setFeatureValue": function() { return setFeatureValue; },
|
|||
|
"toggleFeature": function() { return toggleFeature; },
|
|||
|
"unpinItem": function() { return unpinItem; }
|
|||
|
});
|
|||
|
|
|||
|
// NAMESPACE OBJECT: ./node_modules/@wordpress/interface/build-module/store/selectors.js
|
|||
|
var selectors_namespaceObject = {};
|
|||
|
__webpack_require__.r(selectors_namespaceObject);
|
|||
|
__webpack_require__.d(selectors_namespaceObject, {
|
|||
|
"getActiveComplementaryArea": function() { return getActiveComplementaryArea; },
|
|||
|
"isFeatureActive": function() { return isFeatureActive; },
|
|||
|
"isItemPinned": function() { return isItemPinned; }
|
|||
|
});
|
|||
|
|
|||
|
// NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/actions.js
|
|||
|
var store_actions_namespaceObject = {};
|
|||
|
__webpack_require__.r(store_actions_namespaceObject);
|
|||
|
__webpack_require__.d(store_actions_namespaceObject, {
|
|||
|
"__experimentalSetPreviewDeviceType": function() { return __experimentalSetPreviewDeviceType; },
|
|||
|
"addTemplate": function() { return addTemplate; },
|
|||
|
"closeGeneralSidebar": function() { return closeGeneralSidebar; },
|
|||
|
"openGeneralSidebar": function() { return openGeneralSidebar; },
|
|||
|
"openNavigationPanelToMenu": function() { return openNavigationPanelToMenu; },
|
|||
|
"removeTemplate": function() { return removeTemplate; },
|
|||
|
"revertTemplate": function() { return revertTemplate; },
|
|||
|
"setHomeTemplateId": function() { return setHomeTemplateId; },
|
|||
|
"setIsInserterOpened": function() { return setIsInserterOpened; },
|
|||
|
"setIsListViewOpened": function() { return setIsListViewOpened; },
|
|||
|
"setIsNavigationPanelOpened": function() { return setIsNavigationPanelOpened; },
|
|||
|
"setNavigationPanelActiveMenu": function() { return setNavigationPanelActiveMenu; },
|
|||
|
"setPage": function() { return setPage; },
|
|||
|
"setTemplate": function() { return setTemplate; },
|
|||
|
"setTemplatePart": function() { return setTemplatePart; },
|
|||
|
"switchEditorMode": function() { return switchEditorMode; },
|
|||
|
"toggleFeature": function() { return actions_toggleFeature; },
|
|||
|
"updateSettings": function() { return updateSettings; }
|
|||
|
});
|
|||
|
|
|||
|
// NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/selectors.js
|
|||
|
var store_selectors_namespaceObject = {};
|
|||
|
__webpack_require__.r(store_selectors_namespaceObject);
|
|||
|
__webpack_require__.d(store_selectors_namespaceObject, {
|
|||
|
"__experimentalGetInsertionPoint": function() { return __experimentalGetInsertionPoint; },
|
|||
|
"__experimentalGetPreviewDeviceType": function() { return __experimentalGetPreviewDeviceType; },
|
|||
|
"__unstableGetPreference": function() { return __unstableGetPreference; },
|
|||
|
"getCanUserCreateMedia": function() { return getCanUserCreateMedia; },
|
|||
|
"getCurrentTemplateNavigationPanelSubMenu": function() { return getCurrentTemplateNavigationPanelSubMenu; },
|
|||
|
"getCurrentTemplateTemplateParts": function() { return getCurrentTemplateTemplateParts; },
|
|||
|
"getEditedPostId": function() { return getEditedPostId; },
|
|||
|
"getEditedPostType": function() { return getEditedPostType; },
|
|||
|
"getEditorMode": function() { return getEditorMode; },
|
|||
|
"getHomeTemplateId": function() { return getHomeTemplateId; },
|
|||
|
"getNavigationPanelActiveMenu": function() { return getNavigationPanelActiveMenu; },
|
|||
|
"getPage": function() { return getPage; },
|
|||
|
"getReusableBlocks": function() { return getReusableBlocks; },
|
|||
|
"getSettings": function() { return getSettings; },
|
|||
|
"isFeatureActive": function() { return selectors_isFeatureActive; },
|
|||
|
"isInserterOpened": function() { return isInserterOpened; },
|
|||
|
"isListViewOpened": function() { return isListViewOpened; },
|
|||
|
"isNavigationOpened": function() { return isNavigationOpened; }
|
|||
|
});
|
|||
|
|
|||
|
;// CONCATENATED MODULE: external ["wp","element"]
|
|||
|
var external_wp_element_namespaceObject = window["wp"]["element"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","blocks"]
|
|||
|
var external_wp_blocks_namespaceObject = window["wp"]["blocks"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","blockLibrary"]
|
|||
|
var external_wp_blockLibrary_namespaceObject = window["wp"]["blockLibrary"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","data"]
|
|||
|
var external_wp_data_namespaceObject = window["wp"]["data"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","coreData"]
|
|||
|
var external_wp_coreData_namespaceObject = window["wp"]["coreData"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","editor"]
|
|||
|
var external_wp_editor_namespaceObject = window["wp"]["editor"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","preferences"]
|
|||
|
var external_wp_preferences_namespaceObject = window["wp"]["preferences"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","i18n"]
|
|||
|
var external_wp_i18n_namespaceObject = window["wp"]["i18n"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","viewport"]
|
|||
|
var external_wp_viewport_namespaceObject = window["wp"]["viewport"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","url"]
|
|||
|
var external_wp_url_namespaceObject = window["wp"]["url"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","hooks"]
|
|||
|
var external_wp_hooks_namespaceObject = window["wp"]["hooks"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","mediaUtils"]
|
|||
|
var external_wp_mediaUtils_namespaceObject = window["wp"]["mediaUtils"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/hooks/components.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
(0,external_wp_hooks_namespaceObject.addFilter)('editor.MediaUpload', 'core/edit-site/components/media-upload', () => external_wp_mediaUtils_namespaceObject.MediaUpload);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/hooks/index.js
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/constants.js
|
|||
|
/**
|
|||
|
* The identifier for the data store.
|
|||
|
*
|
|||
|
* @type {string}
|
|||
|
*/
|
|||
|
const STORE_NAME = 'core/edit-site';
|
|||
|
const TEMPLATE_PART_AREA_HEADER = 'header';
|
|||
|
const TEMPLATE_PART_AREA_FOOTER = 'footer';
|
|||
|
const TEMPLATE_PART_AREA_SIDEBAR = 'sidebar';
|
|||
|
const TEMPLATE_PART_AREA_GENERAL = 'uncategorized';
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-panel/constants.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
const TEMPLATES_PRIMARY = ['index', 'singular', 'archive', 'single', 'page', 'home', '404', 'search'];
|
|||
|
const TEMPLATES_SECONDARY = ['author', 'category', 'taxonomy', 'date', 'tag', 'attachment', 'single-post', 'front-page'];
|
|||
|
const TEMPLATES_TOP_LEVEL = [...TEMPLATES_PRIMARY, ...TEMPLATES_SECONDARY];
|
|||
|
const TEMPLATES_GENERAL = ['page-home'];
|
|||
|
const TEMPLATES_POSTS_PREFIXES = ['post-', 'author-', 'single-post-', 'tag-'];
|
|||
|
const TEMPLATES_PAGES_PREFIXES = ['page-'];
|
|||
|
const TEMPLATE_OVERRIDES = {
|
|||
|
singular: ['single', 'page'],
|
|||
|
index: ['archive', '404', 'search', 'singular', 'home'],
|
|||
|
home: ['front-page']
|
|||
|
};
|
|||
|
const MENU_ROOT = 'root';
|
|||
|
const MENU_TEMPLATE_PARTS = 'template-parts';
|
|||
|
const MENU_TEMPLATES = 'templates';
|
|||
|
const MENU_TEMPLATES_GENERAL = 'templates-general';
|
|||
|
const MENU_TEMPLATES_PAGES = 'templates-pages';
|
|||
|
const MENU_TEMPLATES_POSTS = 'templates-posts';
|
|||
|
const MENU_TEMPLATES_UNUSED = 'templates-unused';
|
|||
|
const MENU_TEMPLATE_PARTS_HEADERS = 'template-parts-headers';
|
|||
|
const MENU_TEMPLATE_PARTS_FOOTERS = 'template-parts-footers';
|
|||
|
const MENU_TEMPLATE_PARTS_SIDEBARS = 'template-parts-sidebars';
|
|||
|
const MENU_TEMPLATE_PARTS_GENERAL = 'template-parts-general';
|
|||
|
const TEMPLATE_PARTS_SUB_MENUS = [{
|
|||
|
area: TEMPLATE_PART_AREA_HEADER,
|
|||
|
menu: MENU_TEMPLATE_PARTS_HEADERS,
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('headers')
|
|||
|
}, {
|
|||
|
area: TEMPLATE_PART_AREA_FOOTER,
|
|||
|
menu: MENU_TEMPLATE_PARTS_FOOTERS,
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('footers')
|
|||
|
}, {
|
|||
|
area: TEMPLATE_PART_AREA_SIDEBAR,
|
|||
|
menu: MENU_TEMPLATE_PARTS_SIDEBARS,
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('sidebars')
|
|||
|
}, {
|
|||
|
area: TEMPLATE_PART_AREA_GENERAL,
|
|||
|
menu: MENU_TEMPLATE_PARTS_GENERAL,
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('general')
|
|||
|
}];
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/reducer.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Reducer returning the editing canvas device type.
|
|||
|
*
|
|||
|
* @param {Object} state Current state.
|
|||
|
* @param {Object} action Dispatched action.
|
|||
|
*
|
|||
|
* @return {Object} Updated state.
|
|||
|
*/
|
|||
|
|
|||
|
function deviceType() {
|
|||
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Desktop';
|
|||
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|||
|
|
|||
|
switch (action.type) {
|
|||
|
case 'SET_PREVIEW_DEVICE_TYPE':
|
|||
|
return action.deviceType;
|
|||
|
}
|
|||
|
|
|||
|
return state;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Reducer returning the settings.
|
|||
|
*
|
|||
|
* @param {Object} state Current state.
|
|||
|
* @param {Object} action Dispatched action.
|
|||
|
*
|
|||
|
* @return {Object} Updated state.
|
|||
|
*/
|
|||
|
|
|||
|
function settings() {
|
|||
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|||
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|||
|
|
|||
|
switch (action.type) {
|
|||
|
case 'UPDATE_SETTINGS':
|
|||
|
return { ...state,
|
|||
|
...action.settings
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
return state;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Reducer keeping track of the currently edited Post Type,
|
|||
|
* Post Id and the context provided to fill the content of the block editor.
|
|||
|
*
|
|||
|
* @param {Object} state Current edited post.
|
|||
|
* @param {Object} action Dispatched action.
|
|||
|
*
|
|||
|
* @return {Object} Updated state.
|
|||
|
*/
|
|||
|
|
|||
|
function editedPost() {
|
|||
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|||
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|||
|
|
|||
|
switch (action.type) {
|
|||
|
case 'SET_TEMPLATE':
|
|||
|
case 'SET_PAGE':
|
|||
|
return {
|
|||
|
type: 'wp_template',
|
|||
|
id: action.templateId,
|
|||
|
page: action.page
|
|||
|
};
|
|||
|
|
|||
|
case 'SET_TEMPLATE_PART':
|
|||
|
return {
|
|||
|
type: 'wp_template_part',
|
|||
|
id: action.templatePartId
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
return state;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Reducer for information about the site's homepage.
|
|||
|
*
|
|||
|
* @param {Object} state Current state.
|
|||
|
* @param {Object} action Dispatched action.
|
|||
|
*
|
|||
|
* @return {Object} Updated state.
|
|||
|
*/
|
|||
|
|
|||
|
function homeTemplateId(state, action) {
|
|||
|
switch (action.type) {
|
|||
|
case 'SET_HOME_TEMPLATE':
|
|||
|
return action.homeTemplateId;
|
|||
|
}
|
|||
|
|
|||
|
return state;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Reducer for information about the navigation panel, such as its active menu
|
|||
|
* and whether it should be opened or closed.
|
|||
|
*
|
|||
|
* Note: this reducer interacts with the inserter and list view panels reducers
|
|||
|
* to make sure that only one of the three panels is open at the same time.
|
|||
|
*
|
|||
|
* @param {Object} state Current state.
|
|||
|
* @param {Object} action Dispatched action.
|
|||
|
*/
|
|||
|
|
|||
|
function navigationPanel() {
|
|||
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|||
|
menu: MENU_ROOT,
|
|||
|
isOpen: false
|
|||
|
};
|
|||
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|||
|
|
|||
|
switch (action.type) {
|
|||
|
case 'SET_NAVIGATION_PANEL_ACTIVE_MENU':
|
|||
|
return { ...state,
|
|||
|
menu: action.menu
|
|||
|
};
|
|||
|
|
|||
|
case 'OPEN_NAVIGATION_PANEL_TO_MENU':
|
|||
|
return { ...state,
|
|||
|
isOpen: true,
|
|||
|
menu: action.menu
|
|||
|
};
|
|||
|
|
|||
|
case 'SET_IS_NAVIGATION_PANEL_OPENED':
|
|||
|
return { ...state,
|
|||
|
menu: !action.isOpen ? MENU_ROOT : state.menu,
|
|||
|
// Set menu to root when closing panel.
|
|||
|
isOpen: action.isOpen
|
|||
|
};
|
|||
|
|
|||
|
case 'SET_IS_LIST_VIEW_OPENED':
|
|||
|
return { ...state,
|
|||
|
menu: state.isOpen && action.isOpen ? MENU_ROOT : state.menu,
|
|||
|
// Set menu to root when closing panel.
|
|||
|
isOpen: action.isOpen ? false : state.isOpen
|
|||
|
};
|
|||
|
|
|||
|
case 'SET_IS_INSERTER_OPENED':
|
|||
|
return { ...state,
|
|||
|
menu: state.isOpen && action.value ? MENU_ROOT : state.menu,
|
|||
|
// Set menu to root when closing panel.
|
|||
|
isOpen: action.value ? false : state.isOpen
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
return state;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Reducer to set the block inserter panel open or closed.
|
|||
|
*
|
|||
|
* Note: this reducer interacts with the navigation and list view panels reducers
|
|||
|
* to make sure that only one of the three panels is open at the same time.
|
|||
|
*
|
|||
|
* @param {boolean|Object} state Current state.
|
|||
|
* @param {Object} action Dispatched action.
|
|||
|
*/
|
|||
|
|
|||
|
function blockInserterPanel() {
|
|||
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|||
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|||
|
|
|||
|
switch (action.type) {
|
|||
|
case 'OPEN_NAVIGATION_PANEL_TO_MENU':
|
|||
|
return false;
|
|||
|
|
|||
|
case 'SET_IS_NAVIGATION_PANEL_OPENED':
|
|||
|
case 'SET_IS_LIST_VIEW_OPENED':
|
|||
|
return action.isOpen ? false : state;
|
|||
|
|
|||
|
case 'SET_IS_INSERTER_OPENED':
|
|||
|
return action.value;
|
|||
|
}
|
|||
|
|
|||
|
return state;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Reducer to set the list view panel open or closed.
|
|||
|
*
|
|||
|
* Note: this reducer interacts with the navigation and inserter panels reducers
|
|||
|
* to make sure that only one of the three panels is open at the same time.
|
|||
|
*
|
|||
|
* @param {Object} state Current state.
|
|||
|
* @param {Object} action Dispatched action.
|
|||
|
*/
|
|||
|
|
|||
|
function listViewPanel() {
|
|||
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|||
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|||
|
|
|||
|
switch (action.type) {
|
|||
|
case 'OPEN_NAVIGATION_PANEL_TO_MENU':
|
|||
|
return false;
|
|||
|
|
|||
|
case 'SET_IS_NAVIGATION_PANEL_OPENED':
|
|||
|
return action.isOpen ? false : state;
|
|||
|
|
|||
|
case 'SET_IS_INSERTER_OPENED':
|
|||
|
return action.value ? false : state;
|
|||
|
|
|||
|
case 'SET_IS_LIST_VIEW_OPENED':
|
|||
|
return action.isOpen;
|
|||
|
}
|
|||
|
|
|||
|
return state;
|
|||
|
}
|
|||
|
/* harmony default export */ var reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
|
|||
|
deviceType,
|
|||
|
settings,
|
|||
|
editedPost,
|
|||
|
homeTemplateId,
|
|||
|
navigationPanel,
|
|||
|
blockInserterPanel,
|
|||
|
listViewPanel
|
|||
|
}));
|
|||
|
|
|||
|
;// CONCATENATED MODULE: external ["wp","apiFetch"]
|
|||
|
var external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"];
|
|||
|
var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject);
|
|||
|
;// CONCATENATED MODULE: external ["wp","deprecated"]
|
|||
|
var external_wp_deprecated_namespaceObject = window["wp"]["deprecated"];
|
|||
|
var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject);
|
|||
|
;// CONCATENATED MODULE: external ["wp","notices"]
|
|||
|
var external_wp_notices_namespaceObject = window["wp"]["notices"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
|
|||
|
function extends_extends() {
|
|||
|
extends_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|||
|
for (var i = 1; i < arguments.length; i++) {
|
|||
|
var source = arguments[i];
|
|||
|
|
|||
|
for (var key in source) {
|
|||
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|||
|
target[key] = source[key];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return target;
|
|||
|
};
|
|||
|
return extends_extends.apply(this, arguments);
|
|||
|
}
|
|||
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|||
|
var classnames = __webpack_require__(4403);
|
|||
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|||
|
;// CONCATENATED MODULE: external ["wp","components"]
|
|||
|
var external_wp_components_namespaceObject = window["wp"]["components"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","primitives"]
|
|||
|
var external_wp_primitives_namespaceObject = window["wp"]["primitives"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/check.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const check = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_check = (check);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/star-filled.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const starFilled = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var star_filled = (starFilled);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/star-empty.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const starEmpty = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
fillRule: "evenodd",
|
|||
|
d: "M9.706 8.646a.25.25 0 01-.188.137l-4.626.672a.25.25 0 00-.139.427l3.348 3.262a.25.25 0 01.072.222l-.79 4.607a.25.25 0 00.362.264l4.138-2.176a.25.25 0 01.233 0l4.137 2.175a.25.25 0 00.363-.263l-.79-4.607a.25.25 0 01.072-.222l3.347-3.262a.25.25 0 00-.139-.427l-4.626-.672a.25.25 0 01-.188-.137l-2.069-4.192a.25.25 0 00-.448 0L9.706 8.646zM12 7.39l-.948 1.921a1.75 1.75 0 01-1.317.957l-2.12.308 1.534 1.495c.412.402.6.982.503 1.55l-.362 2.11 1.896-.997a1.75 1.75 0 011.629 0l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39z",
|
|||
|
clipRule: "evenodd"
|
|||
|
}));
|
|||
|
/* harmony default export */ var star_empty = (starEmpty);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close-small.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const closeSmall = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var close_small = (closeSmall);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: external "lodash"
|
|||
|
var external_lodash_namespaceObject = window["lodash"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/actions.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Enable the complementary area.
|
|||
|
*
|
|||
|
* @param {string} scope Complementary area scope.
|
|||
|
* @param {string} area Area identifier.
|
|||
|
*/
|
|||
|
|
|||
|
const enableComplementaryArea = (scope, area) => _ref => {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref;
|
|||
|
|
|||
|
// Return early if there's no area.
|
|||
|
if (!area) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'complementaryArea', area);
|
|||
|
};
|
|||
|
/**
|
|||
|
* Disable the complementary area.
|
|||
|
*
|
|||
|
* @param {string} scope Complementary area scope.
|
|||
|
*/
|
|||
|
|
|||
|
const disableComplementaryArea = scope => _ref2 => {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref2;
|
|||
|
registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'complementaryArea', null);
|
|||
|
};
|
|||
|
/**
|
|||
|
* Pins an item.
|
|||
|
*
|
|||
|
* @param {string} scope Item scope.
|
|||
|
* @param {string} item Item identifier.
|
|||
|
*
|
|||
|
* @return {Object} Action object.
|
|||
|
*/
|
|||
|
|
|||
|
const pinItem = (scope, item) => _ref3 => {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref3;
|
|||
|
|
|||
|
// Return early if there's no item.
|
|||
|
if (!item) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
const pinnedItems = registry.select(external_wp_preferences_namespaceObject.store).get(scope, 'pinnedItems'); // The item is already pinned, there's nothing to do.
|
|||
|
|
|||
|
if ((pinnedItems === null || pinnedItems === void 0 ? void 0 : pinnedItems[item]) === true) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'pinnedItems', { ...pinnedItems,
|
|||
|
[item]: true
|
|||
|
});
|
|||
|
};
|
|||
|
/**
|
|||
|
* Unpins an item.
|
|||
|
*
|
|||
|
* @param {string} scope Item scope.
|
|||
|
* @param {string} item Item identifier.
|
|||
|
*/
|
|||
|
|
|||
|
const unpinItem = (scope, item) => _ref4 => {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref4;
|
|||
|
|
|||
|
// Return early if there's no item.
|
|||
|
if (!item) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
const pinnedItems = registry.select(external_wp_preferences_namespaceObject.store).get(scope, 'pinnedItems');
|
|||
|
registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, 'pinnedItems', { ...pinnedItems,
|
|||
|
[item]: false
|
|||
|
});
|
|||
|
};
|
|||
|
/**
|
|||
|
* Returns an action object used in signalling that a feature should be toggled.
|
|||
|
*
|
|||
|
* @param {string} scope The feature scope (e.g. core/edit-post).
|
|||
|
* @param {string} featureName The feature name.
|
|||
|
*/
|
|||
|
|
|||
|
function toggleFeature(scope, featureName) {
|
|||
|
return function (_ref5) {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref5;
|
|||
|
external_wp_deprecated_default()(`dispatch( 'core/interface' ).toggleFeature`, {
|
|||
|
since: '6.0',
|
|||
|
alternative: `dispatch( 'core/preferences' ).toggle`
|
|||
|
});
|
|||
|
registry.dispatch(external_wp_preferences_namespaceObject.store).toggle(scope, featureName);
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns an action object used in signalling that a feature should be set to
|
|||
|
* a true or false value
|
|||
|
*
|
|||
|
* @param {string} scope The feature scope (e.g. core/edit-post).
|
|||
|
* @param {string} featureName The feature name.
|
|||
|
* @param {boolean} value The value to set.
|
|||
|
*
|
|||
|
* @return {Object} Action object.
|
|||
|
*/
|
|||
|
|
|||
|
function setFeatureValue(scope, featureName, value) {
|
|||
|
return function (_ref6) {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref6;
|
|||
|
external_wp_deprecated_default()(`dispatch( 'core/interface' ).setFeatureValue`, {
|
|||
|
since: '6.0',
|
|||
|
alternative: `dispatch( 'core/preferences' ).set`
|
|||
|
});
|
|||
|
registry.dispatch(external_wp_preferences_namespaceObject.store).set(scope, featureName, !!value);
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns an action object used in signalling that defaults should be set for features.
|
|||
|
*
|
|||
|
* @param {string} scope The feature scope (e.g. core/edit-post).
|
|||
|
* @param {Object<string, boolean>} defaults A key/value map of feature names to values.
|
|||
|
*
|
|||
|
* @return {Object} Action object.
|
|||
|
*/
|
|||
|
|
|||
|
function setFeatureDefaults(scope, defaults) {
|
|||
|
return function (_ref7) {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref7;
|
|||
|
external_wp_deprecated_default()(`dispatch( 'core/interface' ).setFeatureDefaults`, {
|
|||
|
since: '6.0',
|
|||
|
alternative: `dispatch( 'core/preferences' ).setDefaults`
|
|||
|
});
|
|||
|
registry.dispatch(external_wp_preferences_namespaceObject.store).setDefaults(scope, defaults);
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/selectors.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Returns the complementary area that is active in a given scope.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
* @param {string} scope Item scope.
|
|||
|
*
|
|||
|
* @return {string} The complementary area that is active in the given scope.
|
|||
|
*/
|
|||
|
|
|||
|
const getActiveComplementaryArea = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, scope) => {
|
|||
|
return select(external_wp_preferences_namespaceObject.store).get(scope, 'complementaryArea');
|
|||
|
});
|
|||
|
/**
|
|||
|
* Returns a boolean indicating if an item is pinned or not.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
* @param {string} scope Scope.
|
|||
|
* @param {string} item Item to check.
|
|||
|
*
|
|||
|
* @return {boolean} True if the item is pinned and false otherwise.
|
|||
|
*/
|
|||
|
|
|||
|
const isItemPinned = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, scope, item) => {
|
|||
|
var _pinnedItems$item;
|
|||
|
|
|||
|
const pinnedItems = select(external_wp_preferences_namespaceObject.store).get(scope, 'pinnedItems');
|
|||
|
return (_pinnedItems$item = pinnedItems === null || pinnedItems === void 0 ? void 0 : pinnedItems[item]) !== null && _pinnedItems$item !== void 0 ? _pinnedItems$item : true;
|
|||
|
});
|
|||
|
/**
|
|||
|
* Returns a boolean indicating whether a feature is active for a particular
|
|||
|
* scope.
|
|||
|
*
|
|||
|
* @param {Object} state The store state.
|
|||
|
* @param {string} scope The scope of the feature (e.g. core/edit-post).
|
|||
|
* @param {string} featureName The name of the feature.
|
|||
|
*
|
|||
|
* @return {boolean} Is the feature enabled?
|
|||
|
*/
|
|||
|
|
|||
|
const isFeatureActive = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, scope, featureName) => {
|
|||
|
external_wp_deprecated_default()(`select( 'core/interface' ).isFeatureActive( scope, featureName )`, {
|
|||
|
since: '6.0',
|
|||
|
alternative: `select( 'core/preferences' ).get( scope, featureName )`
|
|||
|
});
|
|||
|
return !!select(external_wp_preferences_namespaceObject.store).get(scope, featureName);
|
|||
|
});
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/constants.js
|
|||
|
/**
|
|||
|
* The identifier for the data store.
|
|||
|
*
|
|||
|
* @type {string}
|
|||
|
*/
|
|||
|
const constants_STORE_NAME = 'core/interface';
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/store/index.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Store definition for the interface namespace.
|
|||
|
*
|
|||
|
* @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
|
|||
|
*
|
|||
|
* @type {Object}
|
|||
|
*/
|
|||
|
|
|||
|
const store = (0,external_wp_data_namespaceObject.createReduxStore)(constants_STORE_NAME, {
|
|||
|
reducer: () => {},
|
|||
|
actions: actions_namespaceObject,
|
|||
|
selectors: selectors_namespaceObject
|
|||
|
}); // Once we build a more generic persistence plugin that works across types of stores
|
|||
|
// we'd be able to replace this with a register call.
|
|||
|
|
|||
|
(0,external_wp_data_namespaceObject.register)(store);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: external ["wp","plugins"]
|
|||
|
var external_wp_plugins_namespaceObject = window["wp"]["plugins"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-context/index.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/* harmony default export */ var complementary_area_context = ((0,external_wp_plugins_namespaceObject.withPluginContext)((context, ownProps) => {
|
|||
|
return {
|
|||
|
icon: ownProps.icon || context.icon,
|
|||
|
identifier: ownProps.identifier || `${context.name}/${ownProps.name}`
|
|||
|
};
|
|||
|
}));
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-toggle/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ComplementaryAreaToggle(_ref) {
|
|||
|
let {
|
|||
|
as = external_wp_components_namespaceObject.Button,
|
|||
|
scope,
|
|||
|
identifier,
|
|||
|
icon,
|
|||
|
selectedIcon,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
const ComponentToUse = as;
|
|||
|
const isSelected = (0,external_wp_data_namespaceObject.useSelect)(select => select(store).getActiveComplementaryArea(scope) === identifier, [identifier]);
|
|||
|
const {
|
|||
|
enableComplementaryArea,
|
|||
|
disableComplementaryArea
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(ComponentToUse, extends_extends({
|
|||
|
icon: selectedIcon && isSelected ? selectedIcon : icon,
|
|||
|
onClick: () => {
|
|||
|
if (isSelected) {
|
|||
|
disableComplementaryArea(scope);
|
|||
|
} else {
|
|||
|
enableComplementaryArea(scope, identifier);
|
|||
|
}
|
|||
|
}
|
|||
|
}, (0,external_lodash_namespaceObject.omit)(props, ['name'])));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var complementary_area_toggle = (complementary_area_context(ComplementaryAreaToggle));
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-header/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const ComplementaryAreaHeader = _ref => {
|
|||
|
let {
|
|||
|
smallScreenTitle,
|
|||
|
children,
|
|||
|
className,
|
|||
|
toggleButtonProps
|
|||
|
} = _ref;
|
|||
|
const toggleButton = (0,external_wp_element_namespaceObject.createElement)(complementary_area_toggle, extends_extends({
|
|||
|
icon: close_small
|
|||
|
}, toggleButtonProps));
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "components-panel__header interface-complementary-area-header__small"
|
|||
|
}, smallScreenTitle && (0,external_wp_element_namespaceObject.createElement)("span", {
|
|||
|
className: "interface-complementary-area-header__small-title"
|
|||
|
}, smallScreenTitle), toggleButton), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: classnames_default()('components-panel__header', 'interface-complementary-area-header', className),
|
|||
|
tabIndex: -1
|
|||
|
}, children, toggleButton));
|
|||
|
};
|
|||
|
|
|||
|
/* harmony default export */ var complementary_area_header = (ComplementaryAreaHeader);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/action-item/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ActionItemSlot(_ref) {
|
|||
|
let {
|
|||
|
name,
|
|||
|
as: Component = external_wp_components_namespaceObject.ButtonGroup,
|
|||
|
fillProps = {},
|
|||
|
bubblesVirtually,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Slot, {
|
|||
|
name: name,
|
|||
|
bubblesVirtually: bubblesVirtually,
|
|||
|
fillProps: fillProps
|
|||
|
}, fills => {
|
|||
|
if ((0,external_lodash_namespaceObject.isEmpty)(external_wp_element_namespaceObject.Children.toArray(fills))) {
|
|||
|
return null;
|
|||
|
} // Special handling exists for backward compatibility.
|
|||
|
// It ensures that menu items created by plugin authors aren't
|
|||
|
// duplicated with automatically injected menu items coming
|
|||
|
// from pinnable plugin sidebars.
|
|||
|
// @see https://github.com/WordPress/gutenberg/issues/14457
|
|||
|
|
|||
|
|
|||
|
const initializedByPlugins = [];
|
|||
|
external_wp_element_namespaceObject.Children.forEach(fills, _ref2 => {
|
|||
|
let {
|
|||
|
props: {
|
|||
|
__unstableExplicitMenuItem,
|
|||
|
__unstableTarget
|
|||
|
}
|
|||
|
} = _ref2;
|
|||
|
|
|||
|
if (__unstableTarget && __unstableExplicitMenuItem) {
|
|||
|
initializedByPlugins.push(__unstableTarget);
|
|||
|
}
|
|||
|
});
|
|||
|
const children = external_wp_element_namespaceObject.Children.map(fills, child => {
|
|||
|
if (!child.props.__unstableExplicitMenuItem && initializedByPlugins.includes(child.props.__unstableTarget)) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return child;
|
|||
|
});
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(Component, props, children);
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function ActionItem(_ref3) {
|
|||
|
let {
|
|||
|
name,
|
|||
|
as: Component = external_wp_components_namespaceObject.Button,
|
|||
|
onClick,
|
|||
|
...props
|
|||
|
} = _ref3;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Fill, {
|
|||
|
name: name
|
|||
|
}, _ref4 => {
|
|||
|
let {
|
|||
|
onClick: fpOnClick
|
|||
|
} = _ref4;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(Component, extends_extends({
|
|||
|
onClick: onClick || fpOnClick ? function () {
|
|||
|
(onClick || external_lodash_namespaceObject.noop)(...arguments);
|
|||
|
(fpOnClick || external_lodash_namespaceObject.noop)(...arguments);
|
|||
|
} : undefined
|
|||
|
}, props));
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
ActionItem.Slot = ActionItemSlot;
|
|||
|
/* harmony default export */ var action_item = (ActionItem);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area-more-menu-item/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const PluginsMenuItem = props => // Menu item is marked with unstable prop for backward compatibility.
|
|||
|
// They are removed so they don't leak to DOM elements.
|
|||
|
// @see https://github.com/WordPress/gutenberg/issues/14457
|
|||
|
(0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, (0,external_lodash_namespaceObject.omit)(props, ['__unstableExplicitMenuItem', '__unstableTarget']));
|
|||
|
|
|||
|
function ComplementaryAreaMoreMenuItem(_ref) {
|
|||
|
let {
|
|||
|
scope,
|
|||
|
target,
|
|||
|
__unstableExplicitMenuItem,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(complementary_area_toggle, extends_extends({
|
|||
|
as: toggleProps => {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(action_item, extends_extends({
|
|||
|
__unstableExplicitMenuItem: __unstableExplicitMenuItem,
|
|||
|
__unstableTarget: `${scope}/${target}`,
|
|||
|
as: PluginsMenuItem,
|
|||
|
name: `${scope}/plugin-more-menu`
|
|||
|
}, toggleProps));
|
|||
|
},
|
|||
|
role: "menuitemcheckbox",
|
|||
|
selectedIcon: library_check,
|
|||
|
name: target,
|
|||
|
scope: scope
|
|||
|
}, props));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/pinned-items/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function PinnedItems(_ref) {
|
|||
|
let {
|
|||
|
scope,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Fill, extends_extends({
|
|||
|
name: `PinnedItems/${scope}`
|
|||
|
}, props));
|
|||
|
}
|
|||
|
|
|||
|
function PinnedItemsSlot(_ref2) {
|
|||
|
let {
|
|||
|
scope,
|
|||
|
className,
|
|||
|
...props
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Slot, extends_extends({
|
|||
|
name: `PinnedItems/${scope}`
|
|||
|
}, props), fills => !(0,external_lodash_namespaceObject.isEmpty)(fills) && (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: classnames_default()(className, 'interface-pinned-items')
|
|||
|
}, fills));
|
|||
|
}
|
|||
|
|
|||
|
PinnedItems.Slot = PinnedItemsSlot;
|
|||
|
/* harmony default export */ var pinned_items = (PinnedItems);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/complementary-area/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ComplementaryAreaSlot(_ref) {
|
|||
|
let {
|
|||
|
scope,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Slot, extends_extends({
|
|||
|
name: `ComplementaryArea/${scope}`
|
|||
|
}, props));
|
|||
|
}
|
|||
|
|
|||
|
function ComplementaryAreaFill(_ref2) {
|
|||
|
let {
|
|||
|
scope,
|
|||
|
children,
|
|||
|
className
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Fill, {
|
|||
|
name: `ComplementaryArea/${scope}`
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: className
|
|||
|
}, children));
|
|||
|
}
|
|||
|
|
|||
|
function useAdjustComplementaryListener(scope, identifier, activeArea, isActive, isSmall) {
|
|||
|
const previousIsSmall = (0,external_wp_element_namespaceObject.useRef)(false);
|
|||
|
const shouldOpenWhenNotSmall = (0,external_wp_element_namespaceObject.useRef)(false);
|
|||
|
const {
|
|||
|
enableComplementaryArea,
|
|||
|
disableComplementaryArea
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
// If the complementary area is active and the editor is switching from a big to a small window size.
|
|||
|
if (isActive && isSmall && !previousIsSmall.current) {
|
|||
|
// Disable the complementary area.
|
|||
|
disableComplementaryArea(scope); // Flag the complementary area to be reopened when the window size goes from small to big.
|
|||
|
|
|||
|
shouldOpenWhenNotSmall.current = true;
|
|||
|
} else if ( // If there is a flag indicating the complementary area should be enabled when we go from small to big window size
|
|||
|
// and we are going from a small to big window size.
|
|||
|
shouldOpenWhenNotSmall.current && !isSmall && previousIsSmall.current) {
|
|||
|
// Remove the flag indicating the complementary area should be enabled.
|
|||
|
shouldOpenWhenNotSmall.current = false; // Enable the complementary area.
|
|||
|
|
|||
|
enableComplementaryArea(scope, identifier);
|
|||
|
} else if ( // If the flag is indicating the current complementary should be reopened but another complementary area becomes active,
|
|||
|
// remove the flag.
|
|||
|
shouldOpenWhenNotSmall.current && activeArea && activeArea !== identifier) {
|
|||
|
shouldOpenWhenNotSmall.current = false;
|
|||
|
}
|
|||
|
|
|||
|
if (isSmall !== previousIsSmall.current) {
|
|||
|
previousIsSmall.current = isSmall;
|
|||
|
}
|
|||
|
}, [isActive, isSmall, scope, identifier, activeArea]);
|
|||
|
}
|
|||
|
|
|||
|
function ComplementaryArea(_ref3) {
|
|||
|
let {
|
|||
|
children,
|
|||
|
className,
|
|||
|
closeLabel = (0,external_wp_i18n_namespaceObject.__)('Close plugin'),
|
|||
|
identifier,
|
|||
|
header,
|
|||
|
headerClassName,
|
|||
|
icon,
|
|||
|
isPinnable = true,
|
|||
|
panelClassName,
|
|||
|
scope,
|
|||
|
name,
|
|||
|
smallScreenTitle,
|
|||
|
title,
|
|||
|
toggleShortcut,
|
|||
|
isActiveByDefault,
|
|||
|
showIconLabels = false
|
|||
|
} = _ref3;
|
|||
|
const {
|
|||
|
isActive,
|
|||
|
isPinned,
|
|||
|
activeArea,
|
|||
|
isSmall,
|
|||
|
isLarge
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
getActiveComplementaryArea,
|
|||
|
isItemPinned
|
|||
|
} = select(store);
|
|||
|
|
|||
|
const _activeArea = getActiveComplementaryArea(scope);
|
|||
|
|
|||
|
return {
|
|||
|
isActive: _activeArea === identifier,
|
|||
|
isPinned: isItemPinned(scope, identifier),
|
|||
|
activeArea: _activeArea,
|
|||
|
isSmall: select(external_wp_viewport_namespaceObject.store).isViewportMatch('< medium'),
|
|||
|
isLarge: select(external_wp_viewport_namespaceObject.store).isViewportMatch('large')
|
|||
|
};
|
|||
|
}, [identifier, scope]);
|
|||
|
useAdjustComplementaryListener(scope, identifier, activeArea, isActive, isSmall);
|
|||
|
const {
|
|||
|
enableComplementaryArea,
|
|||
|
disableComplementaryArea,
|
|||
|
pinItem,
|
|||
|
unpinItem
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
if (isActiveByDefault && activeArea === undefined && !isSmall) {
|
|||
|
enableComplementaryArea(scope, identifier);
|
|||
|
}
|
|||
|
}, [activeArea, isActiveByDefault, scope, identifier, isSmall]);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, isPinnable && (0,external_wp_element_namespaceObject.createElement)(pinned_items, {
|
|||
|
scope: scope
|
|||
|
}, isPinned && (0,external_wp_element_namespaceObject.createElement)(complementary_area_toggle, {
|
|||
|
scope: scope,
|
|||
|
identifier: identifier,
|
|||
|
isPressed: isActive && (!showIconLabels || isLarge),
|
|||
|
"aria-expanded": isActive,
|
|||
|
label: title,
|
|||
|
icon: showIconLabels ? library_check : icon,
|
|||
|
showTooltip: !showIconLabels,
|
|||
|
variant: showIconLabels ? 'tertiary' : undefined
|
|||
|
})), name && isPinnable && (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaMoreMenuItem, {
|
|||
|
target: name,
|
|||
|
scope: scope,
|
|||
|
icon: icon
|
|||
|
}, title), isActive && (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaFill, {
|
|||
|
className: classnames_default()('interface-complementary-area', className),
|
|||
|
scope: scope
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(complementary_area_header, {
|
|||
|
className: headerClassName,
|
|||
|
closeLabel: closeLabel,
|
|||
|
onClose: () => disableComplementaryArea(scope),
|
|||
|
smallScreenTitle: smallScreenTitle,
|
|||
|
toggleButtonProps: {
|
|||
|
label: closeLabel,
|
|||
|
shortcut: toggleShortcut,
|
|||
|
scope,
|
|||
|
identifier
|
|||
|
}
|
|||
|
}, header || (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("strong", null, title), isPinnable && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
className: "interface-complementary-area__pin-unpin-item",
|
|||
|
icon: isPinned ? star_filled : star_empty,
|
|||
|
label: isPinned ? (0,external_wp_i18n_namespaceObject.__)('Unpin from toolbar') : (0,external_wp_i18n_namespaceObject.__)('Pin to toolbar'),
|
|||
|
onClick: () => (isPinned ? unpinItem : pinItem)(scope, identifier),
|
|||
|
isPressed: isPinned,
|
|||
|
"aria-expanded": isPinned
|
|||
|
}))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Panel, {
|
|||
|
className: panelClassName
|
|||
|
}, children)));
|
|||
|
}
|
|||
|
|
|||
|
const ComplementaryAreaWrapped = complementary_area_context(ComplementaryArea);
|
|||
|
ComplementaryAreaWrapped.Slot = ComplementaryAreaSlot;
|
|||
|
/* harmony default export */ var complementary_area = (ComplementaryAreaWrapped);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: external ["wp","compose"]
|
|||
|
var external_wp_compose_namespaceObject = window["wp"]["compose"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/interface-skeleton/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function useHTMLClass(className) {
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
const element = document && document.querySelector(`html:not(.${className})`);
|
|||
|
|
|||
|
if (!element) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
element.classList.toggle(className);
|
|||
|
return () => {
|
|||
|
element.classList.toggle(className);
|
|||
|
};
|
|||
|
}, [className]);
|
|||
|
}
|
|||
|
|
|||
|
function InterfaceSkeleton(_ref, ref) {
|
|||
|
let {
|
|||
|
footer,
|
|||
|
header,
|
|||
|
sidebar,
|
|||
|
secondarySidebar,
|
|||
|
notices,
|
|||
|
content,
|
|||
|
drawer,
|
|||
|
actions,
|
|||
|
labels,
|
|||
|
className,
|
|||
|
shortcuts
|
|||
|
} = _ref;
|
|||
|
const navigateRegionsProps = (0,external_wp_components_namespaceObject.__unstableUseNavigateRegions)(shortcuts);
|
|||
|
useHTMLClass('interface-interface-skeleton__html-container');
|
|||
|
const defaultLabels = {
|
|||
|
/* translators: accessibility text for the nav bar landmark region. */
|
|||
|
drawer: (0,external_wp_i18n_namespaceObject.__)('Drawer'),
|
|||
|
|
|||
|
/* translators: accessibility text for the top bar landmark region. */
|
|||
|
header: (0,external_wp_i18n_namespaceObject.__)('Header'),
|
|||
|
|
|||
|
/* translators: accessibility text for the content landmark region. */
|
|||
|
body: (0,external_wp_i18n_namespaceObject.__)('Content'),
|
|||
|
|
|||
|
/* translators: accessibility text for the secondary sidebar landmark region. */
|
|||
|
secondarySidebar: (0,external_wp_i18n_namespaceObject.__)('Block Library'),
|
|||
|
|
|||
|
/* translators: accessibility text for the settings landmark region. */
|
|||
|
sidebar: (0,external_wp_i18n_namespaceObject.__)('Settings'),
|
|||
|
|
|||
|
/* translators: accessibility text for the publish landmark region. */
|
|||
|
actions: (0,external_wp_i18n_namespaceObject.__)('Publish'),
|
|||
|
|
|||
|
/* translators: accessibility text for the footer landmark region. */
|
|||
|
footer: (0,external_wp_i18n_namespaceObject.__)('Footer')
|
|||
|
};
|
|||
|
const mergedLabels = { ...defaultLabels,
|
|||
|
...labels
|
|||
|
};
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", extends_extends({}, navigateRegionsProps, {
|
|||
|
ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([ref, navigateRegionsProps.ref]),
|
|||
|
className: classnames_default()(className, 'interface-interface-skeleton', navigateRegionsProps.className, !!footer && 'has-footer')
|
|||
|
}), !!drawer && (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-interface-skeleton__drawer",
|
|||
|
role: "region",
|
|||
|
"aria-label": mergedLabels.drawer,
|
|||
|
tabIndex: "-1"
|
|||
|
}, drawer), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-interface-skeleton__editor"
|
|||
|
}, !!header && (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-interface-skeleton__header",
|
|||
|
role: "region",
|
|||
|
"aria-label": mergedLabels.header,
|
|||
|
tabIndex: "-1"
|
|||
|
}, header), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-interface-skeleton__body"
|
|||
|
}, !!secondarySidebar && (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-interface-skeleton__secondary-sidebar",
|
|||
|
role: "region",
|
|||
|
"aria-label": mergedLabels.secondarySidebar,
|
|||
|
tabIndex: "-1"
|
|||
|
}, secondarySidebar), !!notices && (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-interface-skeleton__notices"
|
|||
|
}, notices), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-interface-skeleton__content",
|
|||
|
role: "region",
|
|||
|
"aria-label": mergedLabels.body,
|
|||
|
tabIndex: "-1"
|
|||
|
}, content), !!sidebar && (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-interface-skeleton__sidebar",
|
|||
|
role: "region",
|
|||
|
"aria-label": mergedLabels.sidebar,
|
|||
|
tabIndex: "-1"
|
|||
|
}, sidebar), !!actions && (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-interface-skeleton__actions",
|
|||
|
role: "region",
|
|||
|
"aria-label": mergedLabels.actions,
|
|||
|
tabIndex: "-1"
|
|||
|
}, actions))), !!footer && (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-interface-skeleton__footer",
|
|||
|
role: "region",
|
|||
|
"aria-label": mergedLabels.footer,
|
|||
|
tabIndex: "-1"
|
|||
|
}, footer));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var interface_skeleton = ((0,external_wp_element_namespaceObject.forwardRef)(InterfaceSkeleton));
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/more-vertical.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const moreVertical = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var more_vertical = (moreVertical);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/more-menu-dropdown/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function MoreMenuDropdown(_ref) {
|
|||
|
let {
|
|||
|
as: DropdownComponent = external_wp_components_namespaceObject.DropdownMenu,
|
|||
|
className,
|
|||
|
|
|||
|
/* translators: button label text should, if possible, be under 16 characters. */
|
|||
|
label = (0,external_wp_i18n_namespaceObject.__)('Options'),
|
|||
|
popoverProps,
|
|||
|
toggleProps,
|
|||
|
children
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(DropdownComponent, {
|
|||
|
className: classnames_default()('interface-more-menu-dropdown', className),
|
|||
|
icon: more_vertical,
|
|||
|
label: label,
|
|||
|
popoverProps: {
|
|||
|
position: 'bottom left',
|
|||
|
...popoverProps,
|
|||
|
className: classnames_default()('interface-more-menu-dropdown__content', popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.className)
|
|||
|
},
|
|||
|
toggleProps: {
|
|||
|
tooltipPosition: 'bottom',
|
|||
|
...toggleProps
|
|||
|
}
|
|||
|
}, onClose => children(onClose));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function PreferencesModal(_ref) {
|
|||
|
let {
|
|||
|
closeModal,
|
|||
|
children
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, {
|
|||
|
className: "interface-preferences-modal",
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Preferences'),
|
|||
|
closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'),
|
|||
|
onRequestClose: closeModal
|
|||
|
}, children);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/icon/index.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */
|
|||
|
|
|||
|
/**
|
|||
|
* Return an SVG icon.
|
|||
|
*
|
|||
|
* @param {IconProps} props icon is the SVG component to render
|
|||
|
* size is a number specifiying the icon size in pixels
|
|||
|
* Other props will be passed to wrapped SVG component
|
|||
|
*
|
|||
|
* @return {JSX.Element} Icon component
|
|||
|
*/
|
|||
|
|
|||
|
function Icon(_ref) {
|
|||
|
let {
|
|||
|
icon,
|
|||
|
size = 24,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.cloneElement)(icon, {
|
|||
|
width: size,
|
|||
|
height: size,
|
|||
|
...props
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var icon = (Icon);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-left.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const chevronLeft = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var chevron_left = (chevronLeft);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-right.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const chevronRight = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var chevron_right = (chevronRight);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal-tabs/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const PREFERENCES_MENU = 'preferences-menu';
|
|||
|
function PreferencesModalTabs(_ref) {
|
|||
|
let {
|
|||
|
sections
|
|||
|
} = _ref;
|
|||
|
const isLargeViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium'); // This is also used to sync the two different rendered components
|
|||
|
// between small and large viewports.
|
|||
|
|
|||
|
const [activeMenu, setActiveMenu] = (0,external_wp_element_namespaceObject.useState)(PREFERENCES_MENU);
|
|||
|
/**
|
|||
|
* Create helper objects from `sections` for easier data handling.
|
|||
|
* `tabs` is used for creating the `TabPanel` and `sectionsContentMap`
|
|||
|
* is used for easier access to active tab's content.
|
|||
|
*/
|
|||
|
|
|||
|
const {
|
|||
|
tabs,
|
|||
|
sectionsContentMap
|
|||
|
} = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
let mappedTabs = {
|
|||
|
tabs: [],
|
|||
|
sectionsContentMap: {}
|
|||
|
};
|
|||
|
|
|||
|
if (sections.length) {
|
|||
|
mappedTabs = sections.reduce((accumulator, _ref2) => {
|
|||
|
let {
|
|||
|
name,
|
|||
|
tabLabel: title,
|
|||
|
content
|
|||
|
} = _ref2;
|
|||
|
accumulator.tabs.push({
|
|||
|
name,
|
|||
|
title
|
|||
|
});
|
|||
|
accumulator.sectionsContentMap[name] = content;
|
|||
|
return accumulator;
|
|||
|
}, {
|
|||
|
tabs: [],
|
|||
|
sectionsContentMap: {}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return mappedTabs;
|
|||
|
}, [sections]);
|
|||
|
const getCurrentTab = (0,external_wp_element_namespaceObject.useCallback)(tab => sectionsContentMap[tab.name] || null, [sectionsContentMap]);
|
|||
|
let modalContent; // We render different components based on the viewport size.
|
|||
|
|
|||
|
if (isLargeViewport) {
|
|||
|
modalContent = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TabPanel, {
|
|||
|
className: "interface-preferences__tabs",
|
|||
|
tabs: tabs,
|
|||
|
initialTabName: activeMenu !== PREFERENCES_MENU ? activeMenu : undefined,
|
|||
|
onSelect: setActiveMenu,
|
|||
|
orientation: "vertical"
|
|||
|
}, getCurrentTab);
|
|||
|
} else {
|
|||
|
modalContent = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorProvider, {
|
|||
|
initialPath: "/",
|
|||
|
className: "interface-preferences__provider"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, {
|
|||
|
path: "/"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, {
|
|||
|
isBorderless: true,
|
|||
|
size: "small"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, null, tabs.map(tab => {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorButton, {
|
|||
|
key: tab.name,
|
|||
|
path: tab.name,
|
|||
|
as: external_wp_components_namespaceObject.__experimentalItem,
|
|||
|
isAction: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
justify: "space-between"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalTruncate, null, tab.title)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(icon, {
|
|||
|
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
|
|||
|
}))));
|
|||
|
}))))), sections.length && sections.map(section => {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, {
|
|||
|
key: `${section.name}-menu`,
|
|||
|
path: section.name
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, {
|
|||
|
isBorderless: true,
|
|||
|
size: "large"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardHeader, {
|
|||
|
isBorderless: false,
|
|||
|
justify: "left",
|
|||
|
size: "small",
|
|||
|
gap: "6"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorBackButton, {
|
|||
|
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left,
|
|||
|
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous view')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, {
|
|||
|
size: "16"
|
|||
|
}, section.tabLabel)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, section.content)));
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
return modalContent;
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal-section/index.js
|
|||
|
|
|||
|
|
|||
|
const Section = _ref => {
|
|||
|
let {
|
|||
|
description,
|
|||
|
title,
|
|||
|
children
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("fieldset", {
|
|||
|
className: "interface-preferences-modal__section"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("legend", null, (0,external_wp_element_namespaceObject.createElement)("h2", {
|
|||
|
className: "interface-preferences-modal__section-title"
|
|||
|
}, title), description && (0,external_wp_element_namespaceObject.createElement)("p", {
|
|||
|
className: "interface-preferences-modal__section-description"
|
|||
|
}, description)), children);
|
|||
|
};
|
|||
|
|
|||
|
/* harmony default export */ var preferences_modal_section = (Section);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/preferences-modal-base-option/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function BaseOption(_ref) {
|
|||
|
let {
|
|||
|
help,
|
|||
|
label,
|
|||
|
isChecked,
|
|||
|
onChange,
|
|||
|
children
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "interface-preferences-modal__option"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToggleControl, {
|
|||
|
help: help,
|
|||
|
label: label,
|
|||
|
checked: isChecked,
|
|||
|
onChange: onChange
|
|||
|
}), children);
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var preferences_modal_base_option = (BaseOption);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/components/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/interface/build-module/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;// CONCATENATED MODULE: external ["wp","blockEditor"]
|
|||
|
var external_wp_blockEditor_namespaceObject = window["wp"]["blockEditor"];
|
|||
|
;// CONCATENATED MODULE: external ["wp","a11y"]
|
|||
|
var external_wp_a11y_namespaceObject = window["wp"]["a11y"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/is-template-revertable.js
|
|||
|
/**
|
|||
|
* Check if a template is revertable to its original theme-provided template file.
|
|||
|
*
|
|||
|
* @param {Object} template The template entity to check.
|
|||
|
* @return {boolean} Whether the template is revertable.
|
|||
|
*/
|
|||
|
function isTemplateRevertable(template) {
|
|||
|
if (!template) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
/* eslint-disable camelcase */
|
|||
|
|
|||
|
|
|||
|
return (template === null || template === void 0 ? void 0 : template.source) === 'custom' && (template === null || template === void 0 ? void 0 : template.has_theme_file);
|
|||
|
/* eslint-enable camelcase */
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/actions.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Dispatches an action that toggles a feature flag.
|
|||
|
*
|
|||
|
* @param {string} featureName Feature name.
|
|||
|
*/
|
|||
|
|
|||
|
function actions_toggleFeature(featureName) {
|
|||
|
return function (_ref) {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref;
|
|||
|
external_wp_deprecated_default()("select( 'core/edit-site' ).toggleFeature( featureName )", {
|
|||
|
since: '6.0',
|
|||
|
alternative: "select( 'core/preferences').toggle( 'core/edit-site', featureName )"
|
|||
|
});
|
|||
|
registry.dispatch(external_wp_preferences_namespaceObject.store).toggle('core/edit-site', featureName);
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Action that changes the width of the editing canvas.
|
|||
|
*
|
|||
|
* @param {string} deviceType
|
|||
|
*
|
|||
|
* @return {Object} Action object.
|
|||
|
*/
|
|||
|
|
|||
|
function __experimentalSetPreviewDeviceType(deviceType) {
|
|||
|
return {
|
|||
|
type: 'SET_PREVIEW_DEVICE_TYPE',
|
|||
|
deviceType
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Action that sets a template, optionally fetching it from REST API.
|
|||
|
*
|
|||
|
* @param {number} templateId The template ID.
|
|||
|
* @param {string} templateSlug The template slug.
|
|||
|
* @return {Object} Action object.
|
|||
|
*/
|
|||
|
|
|||
|
const setTemplate = (templateId, templateSlug) => async _ref2 => {
|
|||
|
let {
|
|||
|
dispatch,
|
|||
|
registry
|
|||
|
} = _ref2;
|
|||
|
|
|||
|
if (!templateSlug) {
|
|||
|
const template = await registry.resolveSelect(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', 'wp_template', templateId);
|
|||
|
templateSlug = template === null || template === void 0 ? void 0 : template.slug;
|
|||
|
}
|
|||
|
|
|||
|
dispatch({
|
|||
|
type: 'SET_TEMPLATE',
|
|||
|
templateId,
|
|||
|
page: {
|
|||
|
context: {
|
|||
|
templateSlug
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
};
|
|||
|
/**
|
|||
|
* Action that adds a new template and sets it as the current template.
|
|||
|
*
|
|||
|
* @param {Object} template The template.
|
|||
|
*
|
|||
|
* @return {Object} Action object used to set the current template.
|
|||
|
*/
|
|||
|
|
|||
|
const addTemplate = template => async _ref3 => {
|
|||
|
let {
|
|||
|
dispatch,
|
|||
|
registry
|
|||
|
} = _ref3;
|
|||
|
const newTemplate = await registry.dispatch(external_wp_coreData_namespaceObject.store).saveEntityRecord('postType', 'wp_template', template);
|
|||
|
|
|||
|
if (template.content) {
|
|||
|
registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', 'wp_template', newTemplate.id, {
|
|||
|
blocks: (0,external_wp_blocks_namespaceObject.parse)(template.content)
|
|||
|
}, {
|
|||
|
undoIgnore: true
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
dispatch({
|
|||
|
type: 'SET_TEMPLATE',
|
|||
|
templateId: newTemplate.id,
|
|||
|
page: {
|
|||
|
context: {
|
|||
|
templateSlug: newTemplate.slug
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
};
|
|||
|
/**
|
|||
|
* Action that removes a template.
|
|||
|
*
|
|||
|
* @param {Object} template The template object.
|
|||
|
*/
|
|||
|
|
|||
|
const removeTemplate = template => async _ref4 => {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref4;
|
|||
|
|
|||
|
try {
|
|||
|
await registry.dispatch(external_wp_coreData_namespaceObject.store).deleteEntityRecord('postType', template.type, template.id, {
|
|||
|
force: true
|
|||
|
});
|
|||
|
const lastError = registry.select(external_wp_coreData_namespaceObject.store).getLastEntityDeleteError('postType', template.type, template.id);
|
|||
|
|
|||
|
if (lastError) {
|
|||
|
throw lastError;
|
|||
|
}
|
|||
|
|
|||
|
registry.dispatch(external_wp_notices_namespaceObject.store).createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
|
|||
|
/* translators: The template/part's name. */
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('"%s" deleted.'), template.title.rendered), {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
} catch (error) {
|
|||
|
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while deleting the template.');
|
|||
|
registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice(errorMessage, {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
}
|
|||
|
};
|
|||
|
/**
|
|||
|
* Action that sets a template part.
|
|||
|
*
|
|||
|
* @param {string} templatePartId The template part ID.
|
|||
|
*
|
|||
|
* @return {Object} Action object.
|
|||
|
*/
|
|||
|
|
|||
|
function setTemplatePart(templatePartId) {
|
|||
|
return {
|
|||
|
type: 'SET_TEMPLATE_PART',
|
|||
|
templatePartId
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Action that sets the home template ID to the template ID of the page resolved
|
|||
|
* from a given path.
|
|||
|
*
|
|||
|
* @param {number} homeTemplateId The template ID for the homepage.
|
|||
|
*/
|
|||
|
|
|||
|
function setHomeTemplateId(homeTemplateId) {
|
|||
|
return {
|
|||
|
type: 'SET_HOME_TEMPLATE',
|
|||
|
homeTemplateId
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Resolves the template for a page and displays both. If no path is given, attempts
|
|||
|
* to use the postId to generate a path like `?p=${ postId }`.
|
|||
|
*
|
|||
|
* @param {Object} page The page object.
|
|||
|
* @param {string} page.type The page type.
|
|||
|
* @param {string} page.slug The page slug.
|
|||
|
* @param {string} page.path The page path.
|
|||
|
* @param {Object} page.context The page context.
|
|||
|
*
|
|||
|
* @return {number} The resolved template ID for the page route.
|
|||
|
*/
|
|||
|
|
|||
|
const setPage = page => async _ref5 => {
|
|||
|
var _page$context;
|
|||
|
|
|||
|
let {
|
|||
|
dispatch,
|
|||
|
registry
|
|||
|
} = _ref5;
|
|||
|
|
|||
|
if (!page.path && (_page$context = page.context) !== null && _page$context !== void 0 && _page$context.postId) {
|
|||
|
const entity = await registry.resolveSelect(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', page.context.postType || 'post', page.context.postId); // If the entity is undefined for some reason, path will resolve to "/"
|
|||
|
|
|||
|
page.path = (0,external_wp_url_namespaceObject.getPathAndQueryString)(entity === null || entity === void 0 ? void 0 : entity.link);
|
|||
|
}
|
|||
|
|
|||
|
const template = await registry.resolveSelect(external_wp_coreData_namespaceObject.store).__experimentalGetTemplateForLink(page.path);
|
|||
|
|
|||
|
if (!template) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
dispatch({
|
|||
|
type: 'SET_PAGE',
|
|||
|
page: template.slug ? { ...page,
|
|||
|
context: { ...page.context,
|
|||
|
templateSlug: template.slug
|
|||
|
}
|
|||
|
} : page,
|
|||
|
templateId: template.id
|
|||
|
});
|
|||
|
return template.id;
|
|||
|
};
|
|||
|
/**
|
|||
|
* Action that sets the active navigation panel menu.
|
|||
|
*
|
|||
|
* @param {string} menu Menu prop of active menu.
|
|||
|
*
|
|||
|
* @return {Object} Action object.
|
|||
|
*/
|
|||
|
|
|||
|
function setNavigationPanelActiveMenu(menu) {
|
|||
|
return {
|
|||
|
type: 'SET_NAVIGATION_PANEL_ACTIVE_MENU',
|
|||
|
menu
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Opens the navigation panel and sets its active menu at the same time.
|
|||
|
*
|
|||
|
* @param {string} menu Identifies the menu to open.
|
|||
|
*/
|
|||
|
|
|||
|
function openNavigationPanelToMenu(menu) {
|
|||
|
return {
|
|||
|
type: 'OPEN_NAVIGATION_PANEL_TO_MENU',
|
|||
|
menu
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Sets whether the navigation panel should be open.
|
|||
|
*
|
|||
|
* @param {boolean} isOpen If true, opens the nav panel. If false, closes it. It
|
|||
|
* does not toggle the state, but sets it directly.
|
|||
|
*/
|
|||
|
|
|||
|
function setIsNavigationPanelOpened(isOpen) {
|
|||
|
return {
|
|||
|
type: 'SET_IS_NAVIGATION_PANEL_OPENED',
|
|||
|
isOpen
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Opens or closes the inserter.
|
|||
|
*
|
|||
|
* @param {boolean|Object} value Whether the inserter should be
|
|||
|
* opened (true) or closed (false).
|
|||
|
* To specify an insertion point,
|
|||
|
* use an object.
|
|||
|
* @param {string} value.rootClientId The root client ID to insert at.
|
|||
|
* @param {number} value.insertionIndex The index to insert at.
|
|||
|
*
|
|||
|
* @return {Object} Action object.
|
|||
|
*/
|
|||
|
|
|||
|
function setIsInserterOpened(value) {
|
|||
|
return {
|
|||
|
type: 'SET_IS_INSERTER_OPENED',
|
|||
|
value
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns an action object used to update the settings.
|
|||
|
*
|
|||
|
* @param {Object} settings New settings.
|
|||
|
*
|
|||
|
* @return {Object} Action object.
|
|||
|
*/
|
|||
|
|
|||
|
function updateSettings(settings) {
|
|||
|
return {
|
|||
|
type: 'UPDATE_SETTINGS',
|
|||
|
settings
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Sets whether the list view panel should be open.
|
|||
|
*
|
|||
|
* @param {boolean} isOpen If true, opens the list view. If false, closes it.
|
|||
|
* It does not toggle the state, but sets it directly.
|
|||
|
*/
|
|||
|
|
|||
|
function setIsListViewOpened(isOpen) {
|
|||
|
return {
|
|||
|
type: 'SET_IS_LIST_VIEW_OPENED',
|
|||
|
isOpen
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Reverts a template to its original theme-provided file.
|
|||
|
*
|
|||
|
* @param {Object} template The template to revert.
|
|||
|
* @param {Object} [options]
|
|||
|
* @param {boolean} [options.allowUndo] Whether to allow the user to undo
|
|||
|
* reverting the template. Default true.
|
|||
|
*/
|
|||
|
|
|||
|
const revertTemplate = function (template) {
|
|||
|
let {
|
|||
|
allowUndo = true
|
|||
|
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|||
|
return async _ref6 => {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref6;
|
|||
|
|
|||
|
if (!isTemplateRevertable(template)) {
|
|||
|
registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice((0,external_wp_i18n_namespaceObject.__)('This template is not revertable.'), {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
var _fileTemplate$content;
|
|||
|
|
|||
|
const templateEntityConfig = registry.select(external_wp_coreData_namespaceObject.store).getEntityConfig('postType', template.type);
|
|||
|
|
|||
|
if (!templateEntityConfig) {
|
|||
|
registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice((0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error. Please reload.'), {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
const fileTemplatePath = (0,external_wp_url_namespaceObject.addQueryArgs)(`${templateEntityConfig.baseURL}/${template.id}`, {
|
|||
|
context: 'edit',
|
|||
|
source: 'theme'
|
|||
|
});
|
|||
|
const fileTemplate = await external_wp_apiFetch_default()({
|
|||
|
path: fileTemplatePath
|
|||
|
});
|
|||
|
|
|||
|
if (!fileTemplate) {
|
|||
|
registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice((0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error. Please reload.'), {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
const serializeBlocks = _ref7 => {
|
|||
|
let {
|
|||
|
blocks: blocksForSerialization = []
|
|||
|
} = _ref7;
|
|||
|
return (0,external_wp_blocks_namespaceObject.__unstableSerializeAndClean)(blocksForSerialization);
|
|||
|
};
|
|||
|
|
|||
|
const edited = registry.select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('postType', template.type, template.id); // We are fixing up the undo level here to make sure we can undo
|
|||
|
// the revert in the header toolbar correctly.
|
|||
|
|
|||
|
registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', template.type, template.id, {
|
|||
|
content: serializeBlocks,
|
|||
|
// Required to make the `undo` behave correctly.
|
|||
|
blocks: edited.blocks,
|
|||
|
// Required to revert the blocks in the editor.
|
|||
|
source: 'custom' // required to avoid turning the editor into a dirty state
|
|||
|
|
|||
|
}, {
|
|||
|
undoIgnore: true // Required to merge this edit with the last undo level.
|
|||
|
|
|||
|
});
|
|||
|
const blocks = (0,external_wp_blocks_namespaceObject.parse)(fileTemplate === null || fileTemplate === void 0 ? void 0 : (_fileTemplate$content = fileTemplate.content) === null || _fileTemplate$content === void 0 ? void 0 : _fileTemplate$content.raw);
|
|||
|
registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', template.type, fileTemplate.id, {
|
|||
|
content: serializeBlocks,
|
|||
|
blocks,
|
|||
|
source: 'theme'
|
|||
|
});
|
|||
|
|
|||
|
if (allowUndo) {
|
|||
|
const undoRevert = () => {
|
|||
|
registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', template.type, edited.id, {
|
|||
|
content: serializeBlocks,
|
|||
|
blocks: edited.blocks,
|
|||
|
source: 'custom'
|
|||
|
});
|
|||
|
};
|
|||
|
|
|||
|
registry.dispatch(external_wp_notices_namespaceObject.store).createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Template reverted.'), {
|
|||
|
type: 'snackbar',
|
|||
|
actions: [{
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Undo'),
|
|||
|
onClick: undoRevert
|
|||
|
}]
|
|||
|
});
|
|||
|
} else {
|
|||
|
registry.dispatch(external_wp_notices_namespaceObject.store).createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Template reverted.'));
|
|||
|
}
|
|||
|
} catch (error) {
|
|||
|
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('Template revert failed. Please reload.');
|
|||
|
registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice(errorMessage, {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
}
|
|||
|
};
|
|||
|
};
|
|||
|
/**
|
|||
|
* Action that opens an editor sidebar.
|
|||
|
*
|
|||
|
* @param {?string} name Sidebar name to be opened.
|
|||
|
*/
|
|||
|
|
|||
|
const openGeneralSidebar = name => _ref8 => {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref8;
|
|||
|
registry.dispatch(store).enableComplementaryArea(STORE_NAME, name);
|
|||
|
};
|
|||
|
/**
|
|||
|
* Action that closes the sidebar.
|
|||
|
*/
|
|||
|
|
|||
|
const closeGeneralSidebar = () => _ref9 => {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref9;
|
|||
|
registry.dispatch(store).disableComplementaryArea(STORE_NAME);
|
|||
|
};
|
|||
|
const switchEditorMode = mode => _ref10 => {
|
|||
|
let {
|
|||
|
registry
|
|||
|
} = _ref10;
|
|||
|
registry.dispatch('core/preferences').set('core/edit-site', 'editorMode', mode); // Unselect blocks when we switch to a non visual mode.
|
|||
|
|
|||
|
if (mode !== 'visual') {
|
|||
|
registry.dispatch(external_wp_blockEditor_namespaceObject.store).clearSelectedBlock();
|
|||
|
}
|
|||
|
|
|||
|
if (mode === 'visual') {
|
|||
|
(0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Visual editor selected'), 'assertive');
|
|||
|
} else if (mode === 'mosaic') {
|
|||
|
(0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Mosaic view selected'), 'assertive');
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/rememo/es/rememo.js
|
|||
|
|
|||
|
|
|||
|
var LEAF_KEY, hasWeakMap;
|
|||
|
|
|||
|
/**
|
|||
|
* Arbitrary value used as key for referencing cache object in WeakMap tree.
|
|||
|
*
|
|||
|
* @type {Object}
|
|||
|
*/
|
|||
|
LEAF_KEY = {};
|
|||
|
|
|||
|
/**
|
|||
|
* Whether environment supports WeakMap.
|
|||
|
*
|
|||
|
* @type {boolean}
|
|||
|
*/
|
|||
|
hasWeakMap = typeof WeakMap !== 'undefined';
|
|||
|
|
|||
|
/**
|
|||
|
* Returns the first argument as the sole entry in an array.
|
|||
|
*
|
|||
|
* @param {*} value Value to return.
|
|||
|
*
|
|||
|
* @return {Array} Value returned as entry in array.
|
|||
|
*/
|
|||
|
function arrayOf( value ) {
|
|||
|
return [ value ];
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Returns true if the value passed is object-like, or false otherwise. A value
|
|||
|
* is object-like if it can support property assignment, e.g. object or array.
|
|||
|
*
|
|||
|
* @param {*} value Value to test.
|
|||
|
*
|
|||
|
* @return {boolean} Whether value is object-like.
|
|||
|
*/
|
|||
|
function isObjectLike( value ) {
|
|||
|
return !! value && 'object' === typeof value;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Creates and returns a new cache object.
|
|||
|
*
|
|||
|
* @return {Object} Cache object.
|
|||
|
*/
|
|||
|
function createCache() {
|
|||
|
var cache = {
|
|||
|
clear: function() {
|
|||
|
cache.head = null;
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
return cache;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Returns true if entries within the two arrays are strictly equal by
|
|||
|
* reference from a starting index.
|
|||
|
*
|
|||
|
* @param {Array} a First array.
|
|||
|
* @param {Array} b Second array.
|
|||
|
* @param {number} fromIndex Index from which to start comparison.
|
|||
|
*
|
|||
|
* @return {boolean} Whether arrays are shallowly equal.
|
|||
|
*/
|
|||
|
function isShallowEqual( a, b, fromIndex ) {
|
|||
|
var i;
|
|||
|
|
|||
|
if ( a.length !== b.length ) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
for ( i = fromIndex; i < a.length; i++ ) {
|
|||
|
if ( a[ i ] !== b[ i ] ) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Returns a memoized selector function. The getDependants function argument is
|
|||
|
* called before the memoized selector and is expected to return an immutable
|
|||
|
* reference or array of references on which the selector depends for computing
|
|||
|
* its own return value. The memoize cache is preserved only as long as those
|
|||
|
* dependant references remain the same. If getDependants returns a different
|
|||
|
* reference(s), the cache is cleared and the selector value regenerated.
|
|||
|
*
|
|||
|
* @param {Function} selector Selector function.
|
|||
|
* @param {Function} getDependants Dependant getter returning an immutable
|
|||
|
* reference or array of reference used in
|
|||
|
* cache bust consideration.
|
|||
|
*
|
|||
|
* @return {Function} Memoized selector.
|
|||
|
*/
|
|||
|
/* harmony default export */ function rememo(selector, getDependants ) {
|
|||
|
var rootCache, getCache;
|
|||
|
|
|||
|
// Use object source as dependant if getter not provided
|
|||
|
if ( ! getDependants ) {
|
|||
|
getDependants = arrayOf;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Returns the root cache. If WeakMap is supported, this is assigned to the
|
|||
|
* root WeakMap cache set, otherwise it is a shared instance of the default
|
|||
|
* cache object.
|
|||
|
*
|
|||
|
* @return {(WeakMap|Object)} Root cache object.
|
|||
|
*/
|
|||
|
function getRootCache() {
|
|||
|
return rootCache;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Returns the cache for a given dependants array. When possible, a WeakMap
|
|||
|
* will be used to create a unique cache for each set of dependants. This
|
|||
|
* is feasible due to the nature of WeakMap in allowing garbage collection
|
|||
|
* to occur on entries where the key object is no longer referenced. Since
|
|||
|
* WeakMap requires the key to be an object, this is only possible when the
|
|||
|
* dependant is object-like. The root cache is created as a hierarchy where
|
|||
|
* each top-level key is the first entry in a dependants set, the value a
|
|||
|
* WeakMap where each key is the next dependant, and so on. This continues
|
|||
|
* so long as the dependants are object-like. If no dependants are object-
|
|||
|
* like, then the cache is shared across all invocations.
|
|||
|
*
|
|||
|
* @see isObjectLike
|
|||
|
*
|
|||
|
* @param {Array} dependants Selector dependants.
|
|||
|
*
|
|||
|
* @return {Object} Cache object.
|
|||
|
*/
|
|||
|
function getWeakMapCache( dependants ) {
|
|||
|
var caches = rootCache,
|
|||
|
isUniqueByDependants = true,
|
|||
|
i, dependant, map, cache;
|
|||
|
|
|||
|
for ( i = 0; i < dependants.length; i++ ) {
|
|||
|
dependant = dependants[ i ];
|
|||
|
|
|||
|
// Can only compose WeakMap from object-like key.
|
|||
|
if ( ! isObjectLike( dependant ) ) {
|
|||
|
isUniqueByDependants = false;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
// Does current segment of cache already have a WeakMap?
|
|||
|
if ( caches.has( dependant ) ) {
|
|||
|
// Traverse into nested WeakMap.
|
|||
|
caches = caches.get( dependant );
|
|||
|
} else {
|
|||
|
// Create, set, and traverse into a new one.
|
|||
|
map = new WeakMap();
|
|||
|
caches.set( dependant, map );
|
|||
|
caches = map;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// We use an arbitrary (but consistent) object as key for the last item
|
|||
|
// in the WeakMap to serve as our running cache.
|
|||
|
if ( ! caches.has( LEAF_KEY ) ) {
|
|||
|
cache = createCache();
|
|||
|
cache.isUniqueByDependants = isUniqueByDependants;
|
|||
|
caches.set( LEAF_KEY, cache );
|
|||
|
}
|
|||
|
|
|||
|
return caches.get( LEAF_KEY );
|
|||
|
}
|
|||
|
|
|||
|
// Assign cache handler by availability of WeakMap
|
|||
|
getCache = hasWeakMap ? getWeakMapCache : getRootCache;
|
|||
|
|
|||
|
/**
|
|||
|
* Resets root memoization cache.
|
|||
|
*/
|
|||
|
function clear() {
|
|||
|
rootCache = hasWeakMap ? new WeakMap() : createCache();
|
|||
|
}
|
|||
|
|
|||
|
// eslint-disable-next-line jsdoc/check-param-names
|
|||
|
/**
|
|||
|
* The augmented selector call, considering first whether dependants have
|
|||
|
* changed before passing it to underlying memoize function.
|
|||
|
*
|
|||
|
* @param {Object} source Source object for derivation.
|
|||
|
* @param {...*} extraArgs Additional arguments to pass to selector.
|
|||
|
*
|
|||
|
* @return {*} Selector result.
|
|||
|
*/
|
|||
|
function callSelector( /* source, ...extraArgs */ ) {
|
|||
|
var len = arguments.length,
|
|||
|
cache, node, i, args, dependants;
|
|||
|
|
|||
|
// Create copy of arguments (avoid leaking deoptimization).
|
|||
|
args = new Array( len );
|
|||
|
for ( i = 0; i < len; i++ ) {
|
|||
|
args[ i ] = arguments[ i ];
|
|||
|
}
|
|||
|
|
|||
|
dependants = getDependants.apply( null, args );
|
|||
|
cache = getCache( dependants );
|
|||
|
|
|||
|
// If not guaranteed uniqueness by dependants (primitive type or lack
|
|||
|
// of WeakMap support), shallow compare against last dependants and, if
|
|||
|
// references have changed, destroy cache to recalculate result.
|
|||
|
if ( ! cache.isUniqueByDependants ) {
|
|||
|
if ( cache.lastDependants && ! isShallowEqual( dependants, cache.lastDependants, 0 ) ) {
|
|||
|
cache.clear();
|
|||
|
}
|
|||
|
|
|||
|
cache.lastDependants = dependants;
|
|||
|
}
|
|||
|
|
|||
|
node = cache.head;
|
|||
|
while ( node ) {
|
|||
|
// Check whether node arguments match arguments
|
|||
|
if ( ! isShallowEqual( node.args, args, 1 ) ) {
|
|||
|
node = node.next;
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
// At this point we can assume we've found a match
|
|||
|
|
|||
|
// Surface matched node to head if not already
|
|||
|
if ( node !== cache.head ) {
|
|||
|
// Adjust siblings to point to each other.
|
|||
|
node.prev.next = node.next;
|
|||
|
if ( node.next ) {
|
|||
|
node.next.prev = node.prev;
|
|||
|
}
|
|||
|
|
|||
|
node.next = cache.head;
|
|||
|
node.prev = null;
|
|||
|
cache.head.prev = node;
|
|||
|
cache.head = node;
|
|||
|
}
|
|||
|
|
|||
|
// Return immediately
|
|||
|
return node.val;
|
|||
|
}
|
|||
|
|
|||
|
// No cached value found. Continue to insertion phase:
|
|||
|
|
|||
|
node = {
|
|||
|
// Generate the result from original function
|
|||
|
val: selector.apply( null, args ),
|
|||
|
};
|
|||
|
|
|||
|
// Avoid including the source object in the cache.
|
|||
|
args[ 0 ] = null;
|
|||
|
node.args = args;
|
|||
|
|
|||
|
// Don't need to check whether node is already head, since it would
|
|||
|
// have been returned above already if it was
|
|||
|
|
|||
|
// Shift existing head down list
|
|||
|
if ( cache.head ) {
|
|||
|
cache.head.prev = node;
|
|||
|
node.next = cache.head;
|
|||
|
}
|
|||
|
|
|||
|
cache.head = node;
|
|||
|
|
|||
|
return node.val;
|
|||
|
}
|
|||
|
|
|||
|
callSelector.getDependants = getDependants;
|
|||
|
callSelector.clear = clear;
|
|||
|
clear();
|
|||
|
|
|||
|
return callSelector;
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function isTemplateSuperseded(slug, existingSlugs, showOnFront) {
|
|||
|
if (!TEMPLATE_OVERRIDES[slug]) {
|
|||
|
return false;
|
|||
|
} // `home` template is unused if it is superseded by `front-page`
|
|||
|
// or "show on front" is set to show a page rather than blog posts.
|
|||
|
|
|||
|
|
|||
|
if (slug === 'home' && showOnFront !== 'posts') {
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
return TEMPLATE_OVERRIDES[slug].every(overrideSlug => existingSlugs.includes(overrideSlug) || isTemplateSuperseded(overrideSlug, existingSlugs, showOnFront));
|
|||
|
}
|
|||
|
function getTemplateLocation(slug) {
|
|||
|
const isTopLevelTemplate = TEMPLATES_TOP_LEVEL.includes(slug);
|
|||
|
|
|||
|
if (isTopLevelTemplate) {
|
|||
|
return MENU_TEMPLATES;
|
|||
|
}
|
|||
|
|
|||
|
const isGeneralTemplate = TEMPLATES_GENERAL.includes(slug);
|
|||
|
|
|||
|
if (isGeneralTemplate) {
|
|||
|
return MENU_TEMPLATES_GENERAL;
|
|||
|
}
|
|||
|
|
|||
|
const isPostsTemplate = TEMPLATES_POSTS_PREFIXES.some(prefix => slug.startsWith(prefix));
|
|||
|
|
|||
|
if (isPostsTemplate) {
|
|||
|
return MENU_TEMPLATES_POSTS;
|
|||
|
}
|
|||
|
|
|||
|
const isPagesTemplate = TEMPLATES_PAGES_PREFIXES.some(prefix => slug.startsWith(prefix));
|
|||
|
|
|||
|
if (isPagesTemplate) {
|
|||
|
return MENU_TEMPLATES_PAGES;
|
|||
|
}
|
|||
|
|
|||
|
return MENU_TEMPLATES_GENERAL;
|
|||
|
}
|
|||
|
function getUnusedTemplates(templates, showOnFront) {
|
|||
|
const templateSlugs = map(templates, 'slug');
|
|||
|
const supersededTemplates = templates.filter(_ref => {
|
|||
|
let {
|
|||
|
slug
|
|||
|
} = _ref;
|
|||
|
return isTemplateSuperseded(slug, templateSlugs, showOnFront);
|
|||
|
});
|
|||
|
return supersededTemplates;
|
|||
|
}
|
|||
|
function getTemplatesLocationMap(templates) {
|
|||
|
return templates.reduce((obj, template) => {
|
|||
|
obj[template.slug] = getTemplateLocation(template.slug);
|
|||
|
return obj;
|
|||
|
}, {});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/selectors.js
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @typedef {'template'|'template_type'} TemplateType Template type.
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Helper for getting a preference from the preferences store.
|
|||
|
*
|
|||
|
* This is only present so that `getSettings` doesn't need to be made a
|
|||
|
* registry selector.
|
|||
|
*
|
|||
|
* It's unstable because the selector needs to be exported and so part of the
|
|||
|
* public API to work.
|
|||
|
*/
|
|||
|
|
|||
|
const __unstableGetPreference = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, name) => select(external_wp_preferences_namespaceObject.store).get('core/edit-site', name));
|
|||
|
/**
|
|||
|
* Returns whether the given feature is enabled or not.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
* @param {string} featureName Feature slug.
|
|||
|
*
|
|||
|
* @return {boolean} Is active.
|
|||
|
*/
|
|||
|
|
|||
|
function selectors_isFeatureActive(state, featureName) {
|
|||
|
external_wp_deprecated_default()(`select( 'core/interface' ).isFeatureActive`, {
|
|||
|
since: '6.0',
|
|||
|
alternative: `select( 'core/preferences' ).get`
|
|||
|
});
|
|||
|
return !!__unstableGetPreference(state, featureName);
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns the current editing canvas device type.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {string} Device type.
|
|||
|
*/
|
|||
|
|
|||
|
function __experimentalGetPreviewDeviceType(state) {
|
|||
|
return state.deviceType;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns whether the current user can create media or not.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {Object} Whether the current user can create media or not.
|
|||
|
*/
|
|||
|
|
|||
|
const getCanUserCreateMedia = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => select(external_wp_coreData_namespaceObject.store).canUser('create', 'media'));
|
|||
|
/**
|
|||
|
* Returns any available Reusable blocks.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {Array} The available reusable blocks.
|
|||
|
*/
|
|||
|
|
|||
|
const getReusableBlocks = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
|
|||
|
const isWeb = external_wp_element_namespaceObject.Platform.OS === 'web';
|
|||
|
return isWeb ? select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_block', {
|
|||
|
per_page: -1
|
|||
|
}) : [];
|
|||
|
});
|
|||
|
/**
|
|||
|
* Returns the settings, taking into account active features and permissions.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
* @param {Function} setIsInserterOpen Setter for the open state of the global inserter.
|
|||
|
*
|
|||
|
* @return {Object} Settings.
|
|||
|
*/
|
|||
|
|
|||
|
const getSettings = rememo((state, setIsInserterOpen) => {
|
|||
|
const settings = { ...state.settings,
|
|||
|
outlineMode: true,
|
|||
|
focusMode: !!__unstableGetPreference(state, 'focusMode'),
|
|||
|
hasFixedToolbar: !!__unstableGetPreference(state, 'fixedToolbar'),
|
|||
|
keepCaretInsideBlock: !!__unstableGetPreference(state, 'keepCaretInsideBlock'),
|
|||
|
showIconLabels: !!__unstableGetPreference(state, 'showIconLabels'),
|
|||
|
__experimentalSetIsInserterOpened: setIsInserterOpen,
|
|||
|
__experimentalReusableBlocks: getReusableBlocks(state),
|
|||
|
__experimentalPreferPatternsOnRoot: 'wp_template' === getEditedPostType(state)
|
|||
|
};
|
|||
|
const canUserCreateMedia = getCanUserCreateMedia(state);
|
|||
|
|
|||
|
if (!canUserCreateMedia) {
|
|||
|
return settings;
|
|||
|
}
|
|||
|
|
|||
|
settings.mediaUpload = _ref => {
|
|||
|
let {
|
|||
|
onError,
|
|||
|
...rest
|
|||
|
} = _ref;
|
|||
|
(0,external_wp_mediaUtils_namespaceObject.uploadMedia)({
|
|||
|
wpAllowedMimeTypes: state.settings.allowedMimeTypes,
|
|||
|
onError: _ref2 => {
|
|||
|
let {
|
|||
|
message
|
|||
|
} = _ref2;
|
|||
|
return onError(message);
|
|||
|
},
|
|||
|
...rest
|
|||
|
});
|
|||
|
};
|
|||
|
|
|||
|
return settings;
|
|||
|
}, state => [getCanUserCreateMedia(state), state.settings, __unstableGetPreference(state, 'focusMode'), __unstableGetPreference(state, 'fixedToolbar'), __unstableGetPreference(state, 'keepCaretInsideBlock'), __unstableGetPreference(state, 'showIconLabels'), getReusableBlocks(state), getEditedPostType(state)]);
|
|||
|
/**
|
|||
|
* Returns the current home template ID.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {number?} Home template ID.
|
|||
|
*/
|
|||
|
|
|||
|
function getHomeTemplateId(state) {
|
|||
|
return state.homeTemplateId;
|
|||
|
}
|
|||
|
|
|||
|
function getCurrentEditedPost(state) {
|
|||
|
return state.editedPost;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns the current edited post type (wp_template or wp_template_part).
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {TemplateType?} Template type.
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function getEditedPostType(state) {
|
|||
|
return getCurrentEditedPost(state).type;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns the ID of the currently edited template or template part.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {string?} Post ID.
|
|||
|
*/
|
|||
|
|
|||
|
function getEditedPostId(state) {
|
|||
|
return getCurrentEditedPost(state).id;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns the current page object.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {Object} Page.
|
|||
|
*/
|
|||
|
|
|||
|
function getPage(state) {
|
|||
|
return getCurrentEditedPost(state).page;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns the active menu in the navigation panel.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {string} Active menu.
|
|||
|
*/
|
|||
|
|
|||
|
function getNavigationPanelActiveMenu(state) {
|
|||
|
return state.navigationPanel.menu;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns the current template or template part's corresponding
|
|||
|
* navigation panel's sub menu, to be used with `openNavigationPanelToMenu`.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {string} The current template or template part's sub menu.
|
|||
|
*/
|
|||
|
|
|||
|
const getCurrentTemplateNavigationPanelSubMenu = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
|
|||
|
const templateType = getEditedPostType(state);
|
|||
|
const templateId = getEditedPostId(state);
|
|||
|
const template = templateId ? select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', templateType, templateId) : null;
|
|||
|
|
|||
|
if (!template) {
|
|||
|
return MENU_ROOT;
|
|||
|
}
|
|||
|
|
|||
|
if ('wp_template_part' === templateType) {
|
|||
|
var _TEMPLATE_PARTS_SUB_M;
|
|||
|
|
|||
|
return ((_TEMPLATE_PARTS_SUB_M = TEMPLATE_PARTS_SUB_MENUS.find(submenu => submenu.area === (template === null || template === void 0 ? void 0 : template.area))) === null || _TEMPLATE_PARTS_SUB_M === void 0 ? void 0 : _TEMPLATE_PARTS_SUB_M.menu) || MENU_TEMPLATE_PARTS;
|
|||
|
}
|
|||
|
|
|||
|
const templates = select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_template');
|
|||
|
const showOnFront = select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('root', 'site').show_on_front;
|
|||
|
|
|||
|
if (isTemplateSuperseded(template.slug, (0,external_lodash_namespaceObject.map)(templates, 'slug'), showOnFront)) {
|
|||
|
return MENU_TEMPLATES_UNUSED;
|
|||
|
}
|
|||
|
|
|||
|
return getTemplateLocation(template.slug);
|
|||
|
});
|
|||
|
/**
|
|||
|
* Returns the current opened/closed state of the navigation panel.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {boolean} True if the navigation panel should be open; false if closed.
|
|||
|
*/
|
|||
|
|
|||
|
function isNavigationOpened(state) {
|
|||
|
return state.navigationPanel.isOpen;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns the current opened/closed state of the inserter panel.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {boolean} True if the inserter panel should be open; false if closed.
|
|||
|
*/
|
|||
|
|
|||
|
function isInserterOpened(state) {
|
|||
|
return !!state.blockInserterPanel;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Get the insertion point for the inserter.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {Object} The root client ID, index to insert at and starting filter value.
|
|||
|
*/
|
|||
|
|
|||
|
function __experimentalGetInsertionPoint(state) {
|
|||
|
const {
|
|||
|
rootClientId,
|
|||
|
insertionIndex,
|
|||
|
filterValue
|
|||
|
} = state.blockInserterPanel;
|
|||
|
return {
|
|||
|
rootClientId,
|
|||
|
insertionIndex,
|
|||
|
filterValue
|
|||
|
};
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns the current opened/closed state of the list view panel.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {boolean} True if the list view panel should be open; false if closed.
|
|||
|
*/
|
|||
|
|
|||
|
function isListViewOpened(state) {
|
|||
|
return state.listViewPanel;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns the template parts and their blocks for the current edited template.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
* @return {Array} Template parts and their blocks in an array.
|
|||
|
*/
|
|||
|
|
|||
|
const getCurrentTemplateTemplateParts = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
|
|||
|
var _template$blocks;
|
|||
|
|
|||
|
const templateType = getEditedPostType(state);
|
|||
|
const templateId = getEditedPostId(state);
|
|||
|
const template = select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('postType', templateType, templateId);
|
|||
|
const templateParts = select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_template_part', {
|
|||
|
per_page: -1
|
|||
|
});
|
|||
|
const templatePartsById = (0,external_lodash_namespaceObject.keyBy)(templateParts, templatePart => templatePart.id);
|
|||
|
return ((_template$blocks = template.blocks) !== null && _template$blocks !== void 0 ? _template$blocks : []).filter(block => (0,external_wp_blocks_namespaceObject.isTemplatePart)(block)).map(block => {
|
|||
|
const {
|
|||
|
attributes: {
|
|||
|
theme,
|
|||
|
slug
|
|||
|
}
|
|||
|
} = block;
|
|||
|
const templatePartId = `${theme}//${slug}`;
|
|||
|
const templatePart = templatePartsById[templatePartId];
|
|||
|
return {
|
|||
|
templatePart,
|
|||
|
block
|
|||
|
};
|
|||
|
}).filter(_ref3 => {
|
|||
|
let {
|
|||
|
templatePart
|
|||
|
} = _ref3;
|
|||
|
return !!templatePart;
|
|||
|
});
|
|||
|
});
|
|||
|
/**
|
|||
|
* Returns the current editing mode.
|
|||
|
*
|
|||
|
* @param {Object} state Global application state.
|
|||
|
*
|
|||
|
* @return {string} Editing mode.
|
|||
|
*/
|
|||
|
|
|||
|
function getEditorMode(state) {
|
|||
|
return __unstableGetPreference(state, 'editorMode');
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/store/index.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const storeConfig = {
|
|||
|
reducer: reducer,
|
|||
|
actions: store_actions_namespaceObject,
|
|||
|
selectors: store_selectors_namespaceObject
|
|||
|
};
|
|||
|
const store_store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, storeConfig);
|
|||
|
(0,external_wp_data_namespaceObject.register)(store_store);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/history/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Actions represent the type of change to a location value.
|
|||
|
*
|
|||
|
* @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#action
|
|||
|
*/
|
|||
|
var Action;
|
|||
|
|
|||
|
(function (Action) {
|
|||
|
/**
|
|||
|
* A POP indicates a change to an arbitrary index in the history stack, such
|
|||
|
* as a back or forward navigation. It does not describe the direction of the
|
|||
|
* navigation, only that the current index changed.
|
|||
|
*
|
|||
|
* Note: This is the default action for newly created history objects.
|
|||
|
*/
|
|||
|
Action["Pop"] = "POP";
|
|||
|
/**
|
|||
|
* A PUSH indicates a new entry being added to the history stack, such as when
|
|||
|
* a link is clicked and a new page loads. When this happens, all subsequent
|
|||
|
* entries in the stack are lost.
|
|||
|
*/
|
|||
|
|
|||
|
Action["Push"] = "PUSH";
|
|||
|
/**
|
|||
|
* A REPLACE indicates the entry at the current index in the history stack
|
|||
|
* being replaced by a new one.
|
|||
|
*/
|
|||
|
|
|||
|
Action["Replace"] = "REPLACE";
|
|||
|
})(Action || (Action = {}));
|
|||
|
|
|||
|
var readOnly = false ? 0 : function (obj) {
|
|||
|
return obj;
|
|||
|
};
|
|||
|
|
|||
|
function warning(cond, message) {
|
|||
|
if (!cond) {
|
|||
|
// eslint-disable-next-line no-console
|
|||
|
if (typeof console !== 'undefined') console.warn(message);
|
|||
|
|
|||
|
try {
|
|||
|
// Welcome to debugging history!
|
|||
|
//
|
|||
|
// This error is thrown as a convenience so you can more easily
|
|||
|
// find the source for a warning that appears in the console by
|
|||
|
// enabling "pause on exceptions" in your JavaScript debugger.
|
|||
|
throw new Error(message); // eslint-disable-next-line no-empty
|
|||
|
} catch (e) {}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
var BeforeUnloadEventType = 'beforeunload';
|
|||
|
var HashChangeEventType = 'hashchange';
|
|||
|
var PopStateEventType = 'popstate';
|
|||
|
/**
|
|||
|
* Browser history stores the location in regular URLs. This is the standard for
|
|||
|
* most web apps, but it requires some configuration on the server to ensure you
|
|||
|
* serve the same app at multiple URLs.
|
|||
|
*
|
|||
|
* @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory
|
|||
|
*/
|
|||
|
|
|||
|
function createBrowserHistory(options) {
|
|||
|
if (options === void 0) {
|
|||
|
options = {};
|
|||
|
}
|
|||
|
|
|||
|
var _options = options,
|
|||
|
_options$window = _options.window,
|
|||
|
window = _options$window === void 0 ? document.defaultView : _options$window;
|
|||
|
var globalHistory = window.history;
|
|||
|
|
|||
|
function getIndexAndLocation() {
|
|||
|
var _window$location = window.location,
|
|||
|
pathname = _window$location.pathname,
|
|||
|
search = _window$location.search,
|
|||
|
hash = _window$location.hash;
|
|||
|
var state = globalHistory.state || {};
|
|||
|
return [state.idx, readOnly({
|
|||
|
pathname: pathname,
|
|||
|
search: search,
|
|||
|
hash: hash,
|
|||
|
state: state.usr || null,
|
|||
|
key: state.key || 'default'
|
|||
|
})];
|
|||
|
}
|
|||
|
|
|||
|
var blockedPopTx = null;
|
|||
|
|
|||
|
function handlePop() {
|
|||
|
if (blockedPopTx) {
|
|||
|
blockers.call(blockedPopTx);
|
|||
|
blockedPopTx = null;
|
|||
|
} else {
|
|||
|
var nextAction = Action.Pop;
|
|||
|
|
|||
|
var _getIndexAndLocation = getIndexAndLocation(),
|
|||
|
nextIndex = _getIndexAndLocation[0],
|
|||
|
nextLocation = _getIndexAndLocation[1];
|
|||
|
|
|||
|
if (blockers.length) {
|
|||
|
if (nextIndex != null) {
|
|||
|
var delta = index - nextIndex;
|
|||
|
|
|||
|
if (delta) {
|
|||
|
// Revert the POP
|
|||
|
blockedPopTx = {
|
|||
|
action: nextAction,
|
|||
|
location: nextLocation,
|
|||
|
retry: function retry() {
|
|||
|
go(delta * -1);
|
|||
|
}
|
|||
|
};
|
|||
|
go(delta);
|
|||
|
}
|
|||
|
} else {
|
|||
|
// Trying to POP to a location with no index. We did not create
|
|||
|
// this location, so we can't effectively block the navigation.
|
|||
|
false ? 0 : void 0;
|
|||
|
}
|
|||
|
} else {
|
|||
|
applyTx(nextAction);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
window.addEventListener(PopStateEventType, handlePop);
|
|||
|
var action = Action.Pop;
|
|||
|
|
|||
|
var _getIndexAndLocation2 = getIndexAndLocation(),
|
|||
|
index = _getIndexAndLocation2[0],
|
|||
|
location = _getIndexAndLocation2[1];
|
|||
|
|
|||
|
var listeners = createEvents();
|
|||
|
var blockers = createEvents();
|
|||
|
|
|||
|
if (index == null) {
|
|||
|
index = 0;
|
|||
|
globalHistory.replaceState(extends_extends({}, globalHistory.state, {
|
|||
|
idx: index
|
|||
|
}), '');
|
|||
|
}
|
|||
|
|
|||
|
function createHref(to) {
|
|||
|
return typeof to === 'string' ? to : createPath(to);
|
|||
|
} // state defaults to `null` because `window.history.state` does
|
|||
|
|
|||
|
|
|||
|
function getNextLocation(to, state) {
|
|||
|
if (state === void 0) {
|
|||
|
state = null;
|
|||
|
}
|
|||
|
|
|||
|
return readOnly(extends_extends({
|
|||
|
pathname: location.pathname,
|
|||
|
hash: '',
|
|||
|
search: ''
|
|||
|
}, typeof to === 'string' ? parsePath(to) : to, {
|
|||
|
state: state,
|
|||
|
key: createKey()
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
function getHistoryStateAndUrl(nextLocation, index) {
|
|||
|
return [{
|
|||
|
usr: nextLocation.state,
|
|||
|
key: nextLocation.key,
|
|||
|
idx: index
|
|||
|
}, createHref(nextLocation)];
|
|||
|
}
|
|||
|
|
|||
|
function allowTx(action, location, retry) {
|
|||
|
return !blockers.length || (blockers.call({
|
|||
|
action: action,
|
|||
|
location: location,
|
|||
|
retry: retry
|
|||
|
}), false);
|
|||
|
}
|
|||
|
|
|||
|
function applyTx(nextAction) {
|
|||
|
action = nextAction;
|
|||
|
|
|||
|
var _getIndexAndLocation3 = getIndexAndLocation();
|
|||
|
|
|||
|
index = _getIndexAndLocation3[0];
|
|||
|
location = _getIndexAndLocation3[1];
|
|||
|
listeners.call({
|
|||
|
action: action,
|
|||
|
location: location
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function push(to, state) {
|
|||
|
var nextAction = Action.Push;
|
|||
|
var nextLocation = getNextLocation(to, state);
|
|||
|
|
|||
|
function retry() {
|
|||
|
push(to, state);
|
|||
|
}
|
|||
|
|
|||
|
if (allowTx(nextAction, nextLocation, retry)) {
|
|||
|
var _getHistoryStateAndUr = getHistoryStateAndUrl(nextLocation, index + 1),
|
|||
|
historyState = _getHistoryStateAndUr[0],
|
|||
|
url = _getHistoryStateAndUr[1]; // TODO: Support forced reloading
|
|||
|
// try...catch because iOS limits us to 100 pushState calls :/
|
|||
|
|
|||
|
|
|||
|
try {
|
|||
|
globalHistory.pushState(historyState, '', url);
|
|||
|
} catch (error) {
|
|||
|
// They are going to lose state here, but there is no real
|
|||
|
// way to warn them about it since the page will refresh...
|
|||
|
window.location.assign(url);
|
|||
|
}
|
|||
|
|
|||
|
applyTx(nextAction);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function replace(to, state) {
|
|||
|
var nextAction = Action.Replace;
|
|||
|
var nextLocation = getNextLocation(to, state);
|
|||
|
|
|||
|
function retry() {
|
|||
|
replace(to, state);
|
|||
|
}
|
|||
|
|
|||
|
if (allowTx(nextAction, nextLocation, retry)) {
|
|||
|
var _getHistoryStateAndUr2 = getHistoryStateAndUrl(nextLocation, index),
|
|||
|
historyState = _getHistoryStateAndUr2[0],
|
|||
|
url = _getHistoryStateAndUr2[1]; // TODO: Support forced reloading
|
|||
|
|
|||
|
|
|||
|
globalHistory.replaceState(historyState, '', url);
|
|||
|
applyTx(nextAction);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function go(delta) {
|
|||
|
globalHistory.go(delta);
|
|||
|
}
|
|||
|
|
|||
|
var history = {
|
|||
|
get action() {
|
|||
|
return action;
|
|||
|
},
|
|||
|
|
|||
|
get location() {
|
|||
|
return location;
|
|||
|
},
|
|||
|
|
|||
|
createHref: createHref,
|
|||
|
push: push,
|
|||
|
replace: replace,
|
|||
|
go: go,
|
|||
|
back: function back() {
|
|||
|
go(-1);
|
|||
|
},
|
|||
|
forward: function forward() {
|
|||
|
go(1);
|
|||
|
},
|
|||
|
listen: function listen(listener) {
|
|||
|
return listeners.push(listener);
|
|||
|
},
|
|||
|
block: function block(blocker) {
|
|||
|
var unblock = blockers.push(blocker);
|
|||
|
|
|||
|
if (blockers.length === 1) {
|
|||
|
window.addEventListener(BeforeUnloadEventType, promptBeforeUnload);
|
|||
|
}
|
|||
|
|
|||
|
return function () {
|
|||
|
unblock(); // Remove the beforeunload listener so the document may
|
|||
|
// still be salvageable in the pagehide event.
|
|||
|
// See https://html.spec.whatwg.org/#unloading-documents
|
|||
|
|
|||
|
if (!blockers.length) {
|
|||
|
window.removeEventListener(BeforeUnloadEventType, promptBeforeUnload);
|
|||
|
}
|
|||
|
};
|
|||
|
}
|
|||
|
};
|
|||
|
return history;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Hash history stores the location in window.location.hash. This makes it ideal
|
|||
|
* for situations where you don't want to send the location to the server for
|
|||
|
* some reason, either because you do cannot configure it or the URL space is
|
|||
|
* reserved for something else.
|
|||
|
*
|
|||
|
* @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory
|
|||
|
*/
|
|||
|
|
|||
|
function createHashHistory(options) {
|
|||
|
if (options === void 0) {
|
|||
|
options = {};
|
|||
|
}
|
|||
|
|
|||
|
var _options2 = options,
|
|||
|
_options2$window = _options2.window,
|
|||
|
window = _options2$window === void 0 ? document.defaultView : _options2$window;
|
|||
|
var globalHistory = window.history;
|
|||
|
|
|||
|
function getIndexAndLocation() {
|
|||
|
var _parsePath = parsePath(window.location.hash.substr(1)),
|
|||
|
_parsePath$pathname = _parsePath.pathname,
|
|||
|
pathname = _parsePath$pathname === void 0 ? '/' : _parsePath$pathname,
|
|||
|
_parsePath$search = _parsePath.search,
|
|||
|
search = _parsePath$search === void 0 ? '' : _parsePath$search,
|
|||
|
_parsePath$hash = _parsePath.hash,
|
|||
|
hash = _parsePath$hash === void 0 ? '' : _parsePath$hash;
|
|||
|
|
|||
|
var state = globalHistory.state || {};
|
|||
|
return [state.idx, readOnly({
|
|||
|
pathname: pathname,
|
|||
|
search: search,
|
|||
|
hash: hash,
|
|||
|
state: state.usr || null,
|
|||
|
key: state.key || 'default'
|
|||
|
})];
|
|||
|
}
|
|||
|
|
|||
|
var blockedPopTx = null;
|
|||
|
|
|||
|
function handlePop() {
|
|||
|
if (blockedPopTx) {
|
|||
|
blockers.call(blockedPopTx);
|
|||
|
blockedPopTx = null;
|
|||
|
} else {
|
|||
|
var nextAction = Action.Pop;
|
|||
|
|
|||
|
var _getIndexAndLocation4 = getIndexAndLocation(),
|
|||
|
nextIndex = _getIndexAndLocation4[0],
|
|||
|
nextLocation = _getIndexAndLocation4[1];
|
|||
|
|
|||
|
if (blockers.length) {
|
|||
|
if (nextIndex != null) {
|
|||
|
var delta = index - nextIndex;
|
|||
|
|
|||
|
if (delta) {
|
|||
|
// Revert the POP
|
|||
|
blockedPopTx = {
|
|||
|
action: nextAction,
|
|||
|
location: nextLocation,
|
|||
|
retry: function retry() {
|
|||
|
go(delta * -1);
|
|||
|
}
|
|||
|
};
|
|||
|
go(delta);
|
|||
|
}
|
|||
|
} else {
|
|||
|
// Trying to POP to a location with no index. We did not create
|
|||
|
// this location, so we can't effectively block the navigation.
|
|||
|
false ? 0 : void 0;
|
|||
|
}
|
|||
|
} else {
|
|||
|
applyTx(nextAction);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
window.addEventListener(PopStateEventType, handlePop); // popstate does not fire on hashchange in IE 11 and old (trident) Edge
|
|||
|
// https://developer.mozilla.org/de/docs/Web/API/Window/popstate_event
|
|||
|
|
|||
|
window.addEventListener(HashChangeEventType, function () {
|
|||
|
var _getIndexAndLocation5 = getIndexAndLocation(),
|
|||
|
nextLocation = _getIndexAndLocation5[1]; // Ignore extraneous hashchange events.
|
|||
|
|
|||
|
|
|||
|
if (createPath(nextLocation) !== createPath(location)) {
|
|||
|
handlePop();
|
|||
|
}
|
|||
|
});
|
|||
|
var action = Action.Pop;
|
|||
|
|
|||
|
var _getIndexAndLocation6 = getIndexAndLocation(),
|
|||
|
index = _getIndexAndLocation6[0],
|
|||
|
location = _getIndexAndLocation6[1];
|
|||
|
|
|||
|
var listeners = createEvents();
|
|||
|
var blockers = createEvents();
|
|||
|
|
|||
|
if (index == null) {
|
|||
|
index = 0;
|
|||
|
globalHistory.replaceState(_extends({}, globalHistory.state, {
|
|||
|
idx: index
|
|||
|
}), '');
|
|||
|
}
|
|||
|
|
|||
|
function getBaseHref() {
|
|||
|
var base = document.querySelector('base');
|
|||
|
var href = '';
|
|||
|
|
|||
|
if (base && base.getAttribute('href')) {
|
|||
|
var url = window.location.href;
|
|||
|
var hashIndex = url.indexOf('#');
|
|||
|
href = hashIndex === -1 ? url : url.slice(0, hashIndex);
|
|||
|
}
|
|||
|
|
|||
|
return href;
|
|||
|
}
|
|||
|
|
|||
|
function createHref(to) {
|
|||
|
return getBaseHref() + '#' + (typeof to === 'string' ? to : createPath(to));
|
|||
|
}
|
|||
|
|
|||
|
function getNextLocation(to, state) {
|
|||
|
if (state === void 0) {
|
|||
|
state = null;
|
|||
|
}
|
|||
|
|
|||
|
return readOnly(_extends({
|
|||
|
pathname: location.pathname,
|
|||
|
hash: '',
|
|||
|
search: ''
|
|||
|
}, typeof to === 'string' ? parsePath(to) : to, {
|
|||
|
state: state,
|
|||
|
key: createKey()
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
function getHistoryStateAndUrl(nextLocation, index) {
|
|||
|
return [{
|
|||
|
usr: nextLocation.state,
|
|||
|
key: nextLocation.key,
|
|||
|
idx: index
|
|||
|
}, createHref(nextLocation)];
|
|||
|
}
|
|||
|
|
|||
|
function allowTx(action, location, retry) {
|
|||
|
return !blockers.length || (blockers.call({
|
|||
|
action: action,
|
|||
|
location: location,
|
|||
|
retry: retry
|
|||
|
}), false);
|
|||
|
}
|
|||
|
|
|||
|
function applyTx(nextAction) {
|
|||
|
action = nextAction;
|
|||
|
|
|||
|
var _getIndexAndLocation7 = getIndexAndLocation();
|
|||
|
|
|||
|
index = _getIndexAndLocation7[0];
|
|||
|
location = _getIndexAndLocation7[1];
|
|||
|
listeners.call({
|
|||
|
action: action,
|
|||
|
location: location
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function push(to, state) {
|
|||
|
var nextAction = Action.Push;
|
|||
|
var nextLocation = getNextLocation(to, state);
|
|||
|
|
|||
|
function retry() {
|
|||
|
push(to, state);
|
|||
|
}
|
|||
|
|
|||
|
false ? 0 : void 0;
|
|||
|
|
|||
|
if (allowTx(nextAction, nextLocation, retry)) {
|
|||
|
var _getHistoryStateAndUr3 = getHistoryStateAndUrl(nextLocation, index + 1),
|
|||
|
historyState = _getHistoryStateAndUr3[0],
|
|||
|
url = _getHistoryStateAndUr3[1]; // TODO: Support forced reloading
|
|||
|
// try...catch because iOS limits us to 100 pushState calls :/
|
|||
|
|
|||
|
|
|||
|
try {
|
|||
|
globalHistory.pushState(historyState, '', url);
|
|||
|
} catch (error) {
|
|||
|
// They are going to lose state here, but there is no real
|
|||
|
// way to warn them about it since the page will refresh...
|
|||
|
window.location.assign(url);
|
|||
|
}
|
|||
|
|
|||
|
applyTx(nextAction);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function replace(to, state) {
|
|||
|
var nextAction = Action.Replace;
|
|||
|
var nextLocation = getNextLocation(to, state);
|
|||
|
|
|||
|
function retry() {
|
|||
|
replace(to, state);
|
|||
|
}
|
|||
|
|
|||
|
false ? 0 : void 0;
|
|||
|
|
|||
|
if (allowTx(nextAction, nextLocation, retry)) {
|
|||
|
var _getHistoryStateAndUr4 = getHistoryStateAndUrl(nextLocation, index),
|
|||
|
historyState = _getHistoryStateAndUr4[0],
|
|||
|
url = _getHistoryStateAndUr4[1]; // TODO: Support forced reloading
|
|||
|
|
|||
|
|
|||
|
globalHistory.replaceState(historyState, '', url);
|
|||
|
applyTx(nextAction);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function go(delta) {
|
|||
|
globalHistory.go(delta);
|
|||
|
}
|
|||
|
|
|||
|
var history = {
|
|||
|
get action() {
|
|||
|
return action;
|
|||
|
},
|
|||
|
|
|||
|
get location() {
|
|||
|
return location;
|
|||
|
},
|
|||
|
|
|||
|
createHref: createHref,
|
|||
|
push: push,
|
|||
|
replace: replace,
|
|||
|
go: go,
|
|||
|
back: function back() {
|
|||
|
go(-1);
|
|||
|
},
|
|||
|
forward: function forward() {
|
|||
|
go(1);
|
|||
|
},
|
|||
|
listen: function listen(listener) {
|
|||
|
return listeners.push(listener);
|
|||
|
},
|
|||
|
block: function block(blocker) {
|
|||
|
var unblock = blockers.push(blocker);
|
|||
|
|
|||
|
if (blockers.length === 1) {
|
|||
|
window.addEventListener(BeforeUnloadEventType, promptBeforeUnload);
|
|||
|
}
|
|||
|
|
|||
|
return function () {
|
|||
|
unblock(); // Remove the beforeunload listener so the document may
|
|||
|
// still be salvageable in the pagehide event.
|
|||
|
// See https://html.spec.whatwg.org/#unloading-documents
|
|||
|
|
|||
|
if (!blockers.length) {
|
|||
|
window.removeEventListener(BeforeUnloadEventType, promptBeforeUnload);
|
|||
|
}
|
|||
|
};
|
|||
|
}
|
|||
|
};
|
|||
|
return history;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Memory history stores the current location in memory. It is designed for use
|
|||
|
* in stateful non-browser environments like tests and React Native.
|
|||
|
*
|
|||
|
* @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#creatememoryhistory
|
|||
|
*/
|
|||
|
|
|||
|
function createMemoryHistory(options) {
|
|||
|
if (options === void 0) {
|
|||
|
options = {};
|
|||
|
}
|
|||
|
|
|||
|
var _options3 = options,
|
|||
|
_options3$initialEntr = _options3.initialEntries,
|
|||
|
initialEntries = _options3$initialEntr === void 0 ? ['/'] : _options3$initialEntr,
|
|||
|
initialIndex = _options3.initialIndex;
|
|||
|
var entries = initialEntries.map(function (entry) {
|
|||
|
var location = readOnly(_extends({
|
|||
|
pathname: '/',
|
|||
|
search: '',
|
|||
|
hash: '',
|
|||
|
state: null,
|
|||
|
key: createKey()
|
|||
|
}, typeof entry === 'string' ? parsePath(entry) : entry));
|
|||
|
false ? 0 : void 0;
|
|||
|
return location;
|
|||
|
});
|
|||
|
var index = clamp(initialIndex == null ? entries.length - 1 : initialIndex, 0, entries.length - 1);
|
|||
|
var action = Action.Pop;
|
|||
|
var location = entries[index];
|
|||
|
var listeners = createEvents();
|
|||
|
var blockers = createEvents();
|
|||
|
|
|||
|
function createHref(to) {
|
|||
|
return typeof to === 'string' ? to : createPath(to);
|
|||
|
}
|
|||
|
|
|||
|
function getNextLocation(to, state) {
|
|||
|
if (state === void 0) {
|
|||
|
state = null;
|
|||
|
}
|
|||
|
|
|||
|
return readOnly(_extends({
|
|||
|
pathname: location.pathname,
|
|||
|
search: '',
|
|||
|
hash: ''
|
|||
|
}, typeof to === 'string' ? parsePath(to) : to, {
|
|||
|
state: state,
|
|||
|
key: createKey()
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
function allowTx(action, location, retry) {
|
|||
|
return !blockers.length || (blockers.call({
|
|||
|
action: action,
|
|||
|
location: location,
|
|||
|
retry: retry
|
|||
|
}), false);
|
|||
|
}
|
|||
|
|
|||
|
function applyTx(nextAction, nextLocation) {
|
|||
|
action = nextAction;
|
|||
|
location = nextLocation;
|
|||
|
listeners.call({
|
|||
|
action: action,
|
|||
|
location: location
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function push(to, state) {
|
|||
|
var nextAction = Action.Push;
|
|||
|
var nextLocation = getNextLocation(to, state);
|
|||
|
|
|||
|
function retry() {
|
|||
|
push(to, state);
|
|||
|
}
|
|||
|
|
|||
|
false ? 0 : void 0;
|
|||
|
|
|||
|
if (allowTx(nextAction, nextLocation, retry)) {
|
|||
|
index += 1;
|
|||
|
entries.splice(index, entries.length, nextLocation);
|
|||
|
applyTx(nextAction, nextLocation);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function replace(to, state) {
|
|||
|
var nextAction = Action.Replace;
|
|||
|
var nextLocation = getNextLocation(to, state);
|
|||
|
|
|||
|
function retry() {
|
|||
|
replace(to, state);
|
|||
|
}
|
|||
|
|
|||
|
false ? 0 : void 0;
|
|||
|
|
|||
|
if (allowTx(nextAction, nextLocation, retry)) {
|
|||
|
entries[index] = nextLocation;
|
|||
|
applyTx(nextAction, nextLocation);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function go(delta) {
|
|||
|
var nextIndex = clamp(index + delta, 0, entries.length - 1);
|
|||
|
var nextAction = Action.Pop;
|
|||
|
var nextLocation = entries[nextIndex];
|
|||
|
|
|||
|
function retry() {
|
|||
|
go(delta);
|
|||
|
}
|
|||
|
|
|||
|
if (allowTx(nextAction, nextLocation, retry)) {
|
|||
|
index = nextIndex;
|
|||
|
applyTx(nextAction, nextLocation);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
var history = {
|
|||
|
get index() {
|
|||
|
return index;
|
|||
|
},
|
|||
|
|
|||
|
get action() {
|
|||
|
return action;
|
|||
|
},
|
|||
|
|
|||
|
get location() {
|
|||
|
return location;
|
|||
|
},
|
|||
|
|
|||
|
createHref: createHref,
|
|||
|
push: push,
|
|||
|
replace: replace,
|
|||
|
go: go,
|
|||
|
back: function back() {
|
|||
|
go(-1);
|
|||
|
},
|
|||
|
forward: function forward() {
|
|||
|
go(1);
|
|||
|
},
|
|||
|
listen: function listen(listener) {
|
|||
|
return listeners.push(listener);
|
|||
|
},
|
|||
|
block: function block(blocker) {
|
|||
|
return blockers.push(blocker);
|
|||
|
}
|
|||
|
};
|
|||
|
return history;
|
|||
|
} ////////////////////////////////////////////////////////////////////////////////
|
|||
|
// UTILS
|
|||
|
////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
function clamp(n, lowerBound, upperBound) {
|
|||
|
return Math.min(Math.max(n, lowerBound), upperBound);
|
|||
|
}
|
|||
|
|
|||
|
function promptBeforeUnload(event) {
|
|||
|
// Cancel the event.
|
|||
|
event.preventDefault(); // Chrome (and legacy IE) requires returnValue to be set.
|
|||
|
|
|||
|
event.returnValue = '';
|
|||
|
}
|
|||
|
|
|||
|
function createEvents() {
|
|||
|
var handlers = [];
|
|||
|
return {
|
|||
|
get length() {
|
|||
|
return handlers.length;
|
|||
|
},
|
|||
|
|
|||
|
push: function push(fn) {
|
|||
|
handlers.push(fn);
|
|||
|
return function () {
|
|||
|
handlers = handlers.filter(function (handler) {
|
|||
|
return handler !== fn;
|
|||
|
});
|
|||
|
};
|
|||
|
},
|
|||
|
call: function call(arg) {
|
|||
|
handlers.forEach(function (fn) {
|
|||
|
return fn && fn(arg);
|
|||
|
});
|
|||
|
}
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
function createKey() {
|
|||
|
return Math.random().toString(36).substr(2, 8);
|
|||
|
}
|
|||
|
/**
|
|||
|
* Creates a string URL path from the given pathname, search, and hash components.
|
|||
|
*
|
|||
|
* @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createpath
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function createPath(_ref) {
|
|||
|
var _ref$pathname = _ref.pathname,
|
|||
|
pathname = _ref$pathname === void 0 ? '/' : _ref$pathname,
|
|||
|
_ref$search = _ref.search,
|
|||
|
search = _ref$search === void 0 ? '' : _ref$search,
|
|||
|
_ref$hash = _ref.hash,
|
|||
|
hash = _ref$hash === void 0 ? '' : _ref$hash;
|
|||
|
if (search && search !== '?') pathname += search.charAt(0) === '?' ? search : '?' + search;
|
|||
|
if (hash && hash !== '#') pathname += hash.charAt(0) === '#' ? hash : '#' + hash;
|
|||
|
return pathname;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Parses a string URL path into its separate pathname, search, and hash components.
|
|||
|
*
|
|||
|
* @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#parsepath
|
|||
|
*/
|
|||
|
|
|||
|
function parsePath(path) {
|
|||
|
var parsedPath = {};
|
|||
|
|
|||
|
if (path) {
|
|||
|
var hashIndex = path.indexOf('#');
|
|||
|
|
|||
|
if (hashIndex >= 0) {
|
|||
|
parsedPath.hash = path.substr(hashIndex);
|
|||
|
path = path.substr(0, hashIndex);
|
|||
|
}
|
|||
|
|
|||
|
var searchIndex = path.indexOf('?');
|
|||
|
|
|||
|
if (searchIndex >= 0) {
|
|||
|
parsedPath.search = path.substr(searchIndex);
|
|||
|
path = path.substr(0, searchIndex);
|
|||
|
}
|
|||
|
|
|||
|
if (path) {
|
|||
|
parsedPath.pathname = path;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return parsedPath;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/history.js
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
const history_history = createBrowserHistory();
|
|||
|
const originalHistoryPush = history_history.push;
|
|||
|
const originalHistoryReplace = history_history.replace;
|
|||
|
|
|||
|
function push(params, state) {
|
|||
|
return originalHistoryPush.call(history_history, (0,external_wp_url_namespaceObject.addQueryArgs)(window.location.href, params), state);
|
|||
|
}
|
|||
|
|
|||
|
function replace(params, state) {
|
|||
|
return originalHistoryReplace.call(history_history, (0,external_wp_url_namespaceObject.addQueryArgs)(window.location.href, params), state);
|
|||
|
}
|
|||
|
|
|||
|
history_history.push = push;
|
|||
|
history_history.replace = replace;
|
|||
|
/* harmony default export */ var utils_history = (history_history);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
const RoutesContext = (0,external_wp_element_namespaceObject.createContext)();
|
|||
|
const HistoryContext = (0,external_wp_element_namespaceObject.createContext)();
|
|||
|
function useLocation() {
|
|||
|
return (0,external_wp_element_namespaceObject.useContext)(RoutesContext);
|
|||
|
}
|
|||
|
function useHistory() {
|
|||
|
return (0,external_wp_element_namespaceObject.useContext)(HistoryContext);
|
|||
|
}
|
|||
|
|
|||
|
function getLocationWithParams(location) {
|
|||
|
const searchParams = new URLSearchParams(location.search);
|
|||
|
return { ...location,
|
|||
|
params: Object.fromEntries(searchParams.entries())
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
function Routes(_ref) {
|
|||
|
let {
|
|||
|
children
|
|||
|
} = _ref;
|
|||
|
const [location, setLocation] = (0,external_wp_element_namespaceObject.useState)(() => getLocationWithParams(utils_history.location));
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
return utils_history.listen(_ref2 => {
|
|||
|
let {
|
|||
|
location: updatedLocation
|
|||
|
} = _ref2;
|
|||
|
setLocation(getLocationWithParams(updatedLocation));
|
|||
|
});
|
|||
|
}, []);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(HistoryContext.Provider, {
|
|||
|
value: utils_history
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(RoutesContext.Provider, {
|
|||
|
value: location
|
|||
|
}, children(location)));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: external ["wp","keyboardShortcuts"]
|
|||
|
var external_wp_keyboardShortcuts_namespaceObject = window["wp"]["keyboardShortcuts"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plus.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const plus = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M18 11.2h-5.2V6h-1.6v5.2H6v1.6h5.2V18h1.6v-5.2H18z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_plus = (plus);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/list-view.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const listView = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
viewBox: "0 0 24 24",
|
|||
|
xmlns: "http://www.w3.org/2000/svg"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M13.8 5.2H3v1.5h10.8V5.2zm-3.6 12v1.5H21v-1.5H10.2zm7.2-6H6.6v1.5h10.8v-1.5z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var list_view = (listView);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: external ["wp","keycodes"]
|
|||
|
var external_wp_keycodes_namespaceObject = window["wp"]["keycodes"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/external.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const external = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M18.2 17c0 .7-.6 1.2-1.2 1.2H7c-.7 0-1.2-.6-1.2-1.2V7c0-.7.6-1.2 1.2-1.2h3.2V4.2H7C5.5 4.2 4.2 5.5 4.2 7v10c0 1.5 1.2 2.8 2.8 2.8h10c1.5 0 2.8-1.2 2.8-2.8v-3.6h-1.5V17zM14.9 3v1.5h3.7l-6.4 6.4 1.1 1.1 6.4-6.4v3.7h1.5V3h-6.3z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_external = (external);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/config.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const textFormattingShortcuts = [{
|
|||
|
keyCombination: {
|
|||
|
modifier: 'primary',
|
|||
|
character: 'b'
|
|||
|
},
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Make the selected text bold.')
|
|||
|
}, {
|
|||
|
keyCombination: {
|
|||
|
modifier: 'primary',
|
|||
|
character: 'i'
|
|||
|
},
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Make the selected text italic.')
|
|||
|
}, {
|
|||
|
keyCombination: {
|
|||
|
modifier: 'primary',
|
|||
|
character: 'k'
|
|||
|
},
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Convert the selected text into a link.')
|
|||
|
}, {
|
|||
|
keyCombination: {
|
|||
|
modifier: 'primaryShift',
|
|||
|
character: 'k'
|
|||
|
},
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Remove a link.')
|
|||
|
}, {
|
|||
|
keyCombination: {
|
|||
|
modifier: 'primary',
|
|||
|
character: 'u'
|
|||
|
},
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Underline the selected text.')
|
|||
|
}];
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/shortcut.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function KeyCombination(_ref) {
|
|||
|
let {
|
|||
|
keyCombination,
|
|||
|
forceAriaLabel
|
|||
|
} = _ref;
|
|||
|
const shortcut = keyCombination.modifier ? external_wp_keycodes_namespaceObject.displayShortcutList[keyCombination.modifier](keyCombination.character) : keyCombination.character;
|
|||
|
const ariaLabel = keyCombination.modifier ? external_wp_keycodes_namespaceObject.shortcutAriaLabel[keyCombination.modifier](keyCombination.character) : keyCombination.character;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("kbd", {
|
|||
|
className: "edit-site-keyboard-shortcut-help-modal__shortcut-key-combination",
|
|||
|
"aria-label": forceAriaLabel || ariaLabel
|
|||
|
}, (0,external_lodash_namespaceObject.castArray)(shortcut).map((character, index) => {
|
|||
|
if (character === '+') {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, {
|
|||
|
key: index
|
|||
|
}, character);
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("kbd", {
|
|||
|
key: index,
|
|||
|
className: "edit-site-keyboard-shortcut-help-modal__shortcut-key"
|
|||
|
}, character);
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
function Shortcut(_ref2) {
|
|||
|
let {
|
|||
|
description,
|
|||
|
keyCombination,
|
|||
|
aliases = [],
|
|||
|
ariaLabel
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-keyboard-shortcut-help-modal__shortcut-description"
|
|||
|
}, description), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-keyboard-shortcut-help-modal__shortcut-term"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(KeyCombination, {
|
|||
|
keyCombination: keyCombination,
|
|||
|
forceAriaLabel: ariaLabel
|
|||
|
}), aliases.map((alias, index) => (0,external_wp_element_namespaceObject.createElement)(KeyCombination, {
|
|||
|
keyCombination: alias,
|
|||
|
forceAriaLabel: ariaLabel,
|
|||
|
key: index
|
|||
|
}))));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function DynamicShortcut(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
keyCombination,
|
|||
|
description,
|
|||
|
aliases
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
getShortcutKeyCombination,
|
|||
|
getShortcutDescription,
|
|||
|
getShortcutAliases
|
|||
|
} = select(external_wp_keyboardShortcuts_namespaceObject.store);
|
|||
|
return {
|
|||
|
keyCombination: getShortcutKeyCombination(name),
|
|||
|
aliases: getShortcutAliases(name),
|
|||
|
description: getShortcutDescription(name)
|
|||
|
};
|
|||
|
}, [name]);
|
|||
|
|
|||
|
if (!keyCombination) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(Shortcut, {
|
|||
|
keyCombination: keyCombination,
|
|||
|
description: description,
|
|||
|
aliases: aliases
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcut-help-modal/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const ShortcutList = _ref => {
|
|||
|
let {
|
|||
|
shortcuts
|
|||
|
} = _ref;
|
|||
|
return (
|
|||
|
/*
|
|||
|
* Disable reason: The `list` ARIA role is redundant but
|
|||
|
* Safari+VoiceOver won't announce the list otherwise.
|
|||
|
*/
|
|||
|
|
|||
|
/* eslint-disable jsx-a11y/no-redundant-roles */
|
|||
|
(0,external_wp_element_namespaceObject.createElement)("ul", {
|
|||
|
className: "edit-site-keyboard-shortcut-help-modal__shortcut-list",
|
|||
|
role: "list"
|
|||
|
}, shortcuts.map((shortcut, index) => (0,external_wp_element_namespaceObject.createElement)("li", {
|
|||
|
className: "edit-site-keyboard-shortcut-help-modal__shortcut",
|
|||
|
key: index
|
|||
|
}, (0,external_lodash_namespaceObject.isString)(shortcut) ? (0,external_wp_element_namespaceObject.createElement)(DynamicShortcut, {
|
|||
|
name: shortcut
|
|||
|
}) : (0,external_wp_element_namespaceObject.createElement)(Shortcut, shortcut))))
|
|||
|
/* eslint-enable jsx-a11y/no-redundant-roles */
|
|||
|
|
|||
|
);
|
|||
|
};
|
|||
|
|
|||
|
const ShortcutSection = _ref2 => {
|
|||
|
let {
|
|||
|
title,
|
|||
|
shortcuts,
|
|||
|
className
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("section", {
|
|||
|
className: classnames_default()('edit-site-keyboard-shortcut-help-modal__section', className)
|
|||
|
}, !!title && (0,external_wp_element_namespaceObject.createElement)("h2", {
|
|||
|
className: "edit-site-keyboard-shortcut-help-modal__section-title"
|
|||
|
}, title), (0,external_wp_element_namespaceObject.createElement)(ShortcutList, {
|
|||
|
shortcuts: shortcuts
|
|||
|
}));
|
|||
|
};
|
|||
|
|
|||
|
const ShortcutCategorySection = _ref3 => {
|
|||
|
let {
|
|||
|
title,
|
|||
|
categoryName,
|
|||
|
additionalShortcuts = []
|
|||
|
} = _ref3;
|
|||
|
const categoryShortcuts = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
return select(external_wp_keyboardShortcuts_namespaceObject.store).getCategoryShortcuts(categoryName);
|
|||
|
}, [categoryName]);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, {
|
|||
|
title: title,
|
|||
|
shortcuts: categoryShortcuts.concat(additionalShortcuts)
|
|||
|
});
|
|||
|
};
|
|||
|
|
|||
|
function KeyboardShortcutHelpModal(_ref4) {
|
|||
|
let {
|
|||
|
isModalActive,
|
|||
|
toggleModal
|
|||
|
} = _ref4;
|
|||
|
|
|||
|
if (!isModalActive) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, {
|
|||
|
className: "edit-site-keyboard-shortcut-help-modal",
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Keyboard shortcuts'),
|
|||
|
closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'),
|
|||
|
onRequestClose: toggleModal
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, {
|
|||
|
className: "edit-site-keyboard-shortcut-help-modal__main-shortcuts",
|
|||
|
shortcuts: ['core/edit-site/keyboard-shortcuts']
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Global shortcuts'),
|
|||
|
categoryName: "global"
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Selection shortcuts'),
|
|||
|
categoryName: "selection"
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Block shortcuts'),
|
|||
|
categoryName: "block",
|
|||
|
additionalShortcuts: [{
|
|||
|
keyCombination: {
|
|||
|
character: '/'
|
|||
|
},
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Change the block type after adding a new paragraph.'),
|
|||
|
|
|||
|
/* translators: The forward-slash character. e.g. '/'. */
|
|||
|
ariaLabel: (0,external_wp_i18n_namespaceObject.__)('Forward-slash')
|
|||
|
}]
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Text formatting'),
|
|||
|
shortcuts: textFormattingShortcuts
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/preferences-modal/enable-feature.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function EnableFeature(props) {
|
|||
|
const {
|
|||
|
featureName,
|
|||
|
...remainingProps
|
|||
|
} = props;
|
|||
|
const isChecked = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', featureName), [featureName]);
|
|||
|
const {
|
|||
|
toggle
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
|
|||
|
|
|||
|
const onChange = () => toggle('core/edit-site', featureName);
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(preferences_modal_base_option, extends_extends({
|
|||
|
onChange: onChange,
|
|||
|
isChecked: isChecked
|
|||
|
}, remainingProps));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/preferences-modal/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function EditSitePreferencesModal(_ref) {
|
|||
|
let {
|
|||
|
isModalActive,
|
|||
|
toggleModal
|
|||
|
} = _ref;
|
|||
|
const sections = (0,external_wp_element_namespaceObject.useMemo)(() => [{
|
|||
|
name: 'general',
|
|||
|
tabLabel: (0,external_wp_i18n_namespaceObject.__)('General'),
|
|||
|
content: (0,external_wp_element_namespaceObject.createElement)(preferences_modal_section, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Appearance'),
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Customize options related to the block editor interface and editing flow.')
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(EnableFeature, {
|
|||
|
featureName: "focusMode",
|
|||
|
help: (0,external_wp_i18n_namespaceObject.__)('Highlights the current block and fades other content.'),
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(EnableFeature, {
|
|||
|
featureName: "showIconLabels",
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Show button text labels'),
|
|||
|
help: (0,external_wp_i18n_namespaceObject.__)('Show text instead of icons on buttons')
|
|||
|
}))
|
|||
|
}, {
|
|||
|
name: 'blocks',
|
|||
|
tabLabel: (0,external_wp_i18n_namespaceObject.__)('Blocks'),
|
|||
|
content: (0,external_wp_element_namespaceObject.createElement)(preferences_modal_section, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Block interactions'),
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Customize how you interact with blocks in the block library and editing canvas.')
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(EnableFeature, {
|
|||
|
featureName: "keepCaretInsideBlock",
|
|||
|
help: (0,external_wp_i18n_namespaceObject.__)('Aids screen readers by stopping text caret from leaving blocks.'),
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Contain text cursor inside block')
|
|||
|
}))
|
|||
|
}]);
|
|||
|
|
|||
|
if (!isModalActive) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(PreferencesModal, {
|
|||
|
closeModal: toggleModal
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(PreferencesModalTabs, {
|
|||
|
sections: sections
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/tools-more-menu-group/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
const {
|
|||
|
Fill: ToolsMoreMenuGroup,
|
|||
|
Slot
|
|||
|
} = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteToolsMoreMenuGroup');
|
|||
|
|
|||
|
ToolsMoreMenuGroup.Slot = _ref => {
|
|||
|
let {
|
|||
|
fillProps
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(Slot, {
|
|||
|
fillProps: fillProps
|
|||
|
}, fills => !(0,external_lodash_namespaceObject.isEmpty)(fills) && fills);
|
|||
|
};
|
|||
|
|
|||
|
/* harmony default export */ var tools_more_menu_group = (ToolsMoreMenuGroup);
|
|||
|
|
|||
|
// EXTERNAL MODULE: ./node_modules/downloadjs/download.js
|
|||
|
var download = __webpack_require__(8981);
|
|||
|
var download_default = /*#__PURE__*/__webpack_require__.n(download);
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/download.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const download_download = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M18 11.3l-1-1.1-4 4V3h-1.5v11.3L7 10.2l-1 1.1 6.2 5.8 5.8-5.8zm.5 3.7v3.5h-13V15H4v5h16v-5h-1.5z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_download = (download_download);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/site-export.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function SiteExport() {
|
|||
|
const {
|
|||
|
createErrorNotice
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
|
|||
|
|
|||
|
async function handleExport() {
|
|||
|
try {
|
|||
|
const response = await external_wp_apiFetch_default()({
|
|||
|
path: '/wp-block-editor/v1/export',
|
|||
|
parse: false
|
|||
|
});
|
|||
|
const blob = await response.blob();
|
|||
|
const contentDisposition = response.headers.get('content-disposition');
|
|||
|
const contentDispositionMatches = contentDisposition.match(/=(.+)\.zip/);
|
|||
|
const fileName = contentDispositionMatches[1] ? contentDispositionMatches[1] : 'edit-site-export';
|
|||
|
download_default()(blob, fileName + '.zip', 'application/zip');
|
|||
|
} catch (errorResponse) {
|
|||
|
let error = {};
|
|||
|
|
|||
|
try {
|
|||
|
error = await errorResponse.json();
|
|||
|
} catch (e) {}
|
|||
|
|
|||
|
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the site export.');
|
|||
|
createErrorNotice(errorMessage, {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
role: "menuitem",
|
|||
|
icon: library_download,
|
|||
|
onClick: handleExport,
|
|||
|
info: (0,external_wp_i18n_namespaceObject.__)('Download your theme with updated templates and styles.')
|
|||
|
}, (0,external_wp_i18n_namespaceObject._x)('Export', 'site exporter menu item'));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/welcome-guide-menu-item.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function WelcomeGuideMenuItem() {
|
|||
|
const {
|
|||
|
toggle
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
onClick: () => toggle('core/edit-site', 'welcomeGuide')
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Welcome Guide'));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/copy-content-menu-item.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function CopyContentMenuItem() {
|
|||
|
const {
|
|||
|
createNotice
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
|
|||
|
const getText = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
return () => {
|
|||
|
const {
|
|||
|
getEditedPostId,
|
|||
|
getEditedPostType
|
|||
|
} = select(store_store);
|
|||
|
const {
|
|||
|
getEditedEntityRecord
|
|||
|
} = select(external_wp_coreData_namespaceObject.store);
|
|||
|
const record = getEditedEntityRecord('postType', getEditedPostType(), getEditedPostId());
|
|||
|
|
|||
|
if (record) {
|
|||
|
if (typeof record.content === 'function') {
|
|||
|
return record.content(record);
|
|||
|
} else if (record.blocks) {
|
|||
|
return (0,external_wp_blocks_namespaceObject.__unstableSerializeAndClean)(record.blocks);
|
|||
|
} else if (record.content) {
|
|||
|
return record.content;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return '';
|
|||
|
};
|
|||
|
}, []);
|
|||
|
|
|||
|
function onSuccess() {
|
|||
|
createNotice('info', (0,external_wp_i18n_namespaceObject.__)('All content copied.'), {
|
|||
|
isDismissible: true,
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(getText, onSuccess);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
ref: ref
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Copy all content'));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/mode-switcher/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Set of available mode options.
|
|||
|
*
|
|||
|
* @type {Array}
|
|||
|
*/
|
|||
|
|
|||
|
const MODES = [{
|
|||
|
value: 'visual',
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Visual editor')
|
|||
|
}, {
|
|||
|
value: 'text',
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Code editor')
|
|||
|
}];
|
|||
|
|
|||
|
function ModeSwitcher() {
|
|||
|
const {
|
|||
|
shortcut,
|
|||
|
mode
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => ({
|
|||
|
shortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getShortcutRepresentation('core/edit-site/toggle-mode'),
|
|||
|
isRichEditingEnabled: select(store_store).getSettings().richEditingEnabled,
|
|||
|
isCodeEditingEnabled: select(store_store).getSettings().codeEditingEnabled,
|
|||
|
mode: select(store_store).getEditorMode()
|
|||
|
}), []);
|
|||
|
const {
|
|||
|
switchEditorMode
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const choices = MODES.map(choice => {
|
|||
|
if (choice.value !== mode) {
|
|||
|
return { ...choice,
|
|||
|
shortcut
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
return choice;
|
|||
|
});
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Editor')
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItemsChoice, {
|
|||
|
choices: choices,
|
|||
|
value: mode,
|
|||
|
onSelect: switchEditorMode
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var mode_switcher = (ModeSwitcher);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/more-menu/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function MoreMenu() {
|
|||
|
const [isModalActive, toggleModal] = (0,external_wp_element_namespaceObject.useReducer)(isActive => !isActive, false);
|
|||
|
const [isPreferencesModalActive, togglePreferencesModal] = (0,external_wp_element_namespaceObject.useReducer)(isActive => !isActive, false);
|
|||
|
(0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/keyboard-shortcuts', toggleModal);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(MoreMenuDropdown, null, _ref => {
|
|||
|
let {
|
|||
|
onClose
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject._x)('View', 'noun')
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_preferences_namespaceObject.PreferenceToggleMenuItem, {
|
|||
|
scope: "core/edit-site",
|
|||
|
name: "fixedToolbar",
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Top toolbar'),
|
|||
|
info: (0,external_wp_i18n_namespaceObject.__)('Access all block and document tools in a single place'),
|
|||
|
messageActivated: (0,external_wp_i18n_namespaceObject.__)('Top toolbar activated'),
|
|||
|
messageDeactivated: (0,external_wp_i18n_namespaceObject.__)('Top toolbar deactivated')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_preferences_namespaceObject.PreferenceToggleMenuItem, {
|
|||
|
scope: "core/edit-site",
|
|||
|
name: "focusMode",
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode'),
|
|||
|
info: (0,external_wp_i18n_namespaceObject.__)('Focus on one block at a time'),
|
|||
|
messageActivated: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode activated'),
|
|||
|
messageDeactivated: (0,external_wp_i18n_namespaceObject.__)('Spotlight mode deactivated')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(mode_switcher, null), (0,external_wp_element_namespaceObject.createElement)(action_item.Slot, {
|
|||
|
name: "core/edit-site/plugin-more-menu",
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Plugins'),
|
|||
|
as: external_wp_components_namespaceObject.MenuGroup,
|
|||
|
fillProps: {
|
|||
|
onClick: onClose
|
|||
|
}
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Tools')
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(SiteExport, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
onClick: toggleModal,
|
|||
|
shortcut: external_wp_keycodes_namespaceObject.displayShortcut.access('h')
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Keyboard shortcuts')), (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideMenuItem, null), (0,external_wp_element_namespaceObject.createElement)(CopyContentMenuItem, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
icon: library_external,
|
|||
|
role: "menuitem",
|
|||
|
href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/support/article/site-editor/'),
|
|||
|
target: "_blank",
|
|||
|
rel: "noopener noreferrer"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Help'), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
|
|||
|
as: "span"
|
|||
|
},
|
|||
|
/* translators: accessibility text */
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('(opens in a new tab)'))), (0,external_wp_element_namespaceObject.createElement)(tools_more_menu_group.Slot, {
|
|||
|
fillProps: {
|
|||
|
onClose
|
|||
|
}
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
onClick: togglePreferencesModal
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Preferences'))));
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(KeyboardShortcutHelpModal, {
|
|||
|
isModalActive: isModalActive,
|
|||
|
toggleModal: toggleModal
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(EditSitePreferencesModal, {
|
|||
|
isModalActive: isPreferencesModalActive,
|
|||
|
toggleModal: togglePreferencesModal
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/save-button/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function SaveButton(_ref) {
|
|||
|
let {
|
|||
|
openEntitiesSavedStates,
|
|||
|
isEntitiesSavedStatesOpen
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
isDirty,
|
|||
|
isSaving
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
__experimentalGetDirtyEntityRecords,
|
|||
|
isSavingEntityRecord
|
|||
|
} = select(external_wp_coreData_namespaceObject.store);
|
|||
|
|
|||
|
const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
|
|||
|
|
|||
|
return {
|
|||
|
isDirty: dirtyEntityRecords.length > 0,
|
|||
|
isSaving: (0,external_lodash_namespaceObject.some)(dirtyEntityRecords, record => isSavingEntityRecord(record.kind, record.name, record.key))
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const disabled = !isDirty || isSaving;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
variant: "primary",
|
|||
|
className: "edit-site-save-button__button",
|
|||
|
"aria-disabled": disabled,
|
|||
|
"aria-expanded": isEntitiesSavedStatesOpen,
|
|||
|
disabled: disabled,
|
|||
|
isBusy: isSaving,
|
|||
|
onClick: disabled ? undefined : openEntitiesSavedStates
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Save')));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/undo.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const undo = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M18.3 11.7c-.6-.6-1.4-.9-2.3-.9H6.7l2.9-3.3-1.1-1-4.5 5L8.5 16l1-1-2.7-2.7H16c.5 0 .9.2 1.3.5 1 1 1 3.4 1 4.5v.3h1.5v-.2c0-1.5 0-4.3-1.5-5.7z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_undo = (undo);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/redo.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const redo = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M15.6 6.5l-1.1 1 2.9 3.3H8c-.9 0-1.7.3-2.3.9-1.4 1.5-1.4 4.2-1.4 5.6v.2h1.5v-.3c0-1.1 0-3.5 1-4.5.3-.3.7-.5 1.3-.5h9.2L14.5 15l1.1 1.1 4.6-4.6-4.6-5z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_redo = (redo);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/undo-redo/undo.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function UndoButton() {
|
|||
|
const hasUndo = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).hasUndo(), []);
|
|||
|
const {
|
|||
|
undo
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
icon: !(0,external_wp_i18n_namespaceObject.isRTL)() ? library_undo : library_redo,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Undo'),
|
|||
|
shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('z') // If there are no undo levels we don't want to actually disable this
|
|||
|
// button, because it will remove focus for keyboard users.
|
|||
|
// See: https://github.com/WordPress/gutenberg/issues/3486
|
|||
|
,
|
|||
|
"aria-disabled": !hasUndo,
|
|||
|
onClick: hasUndo ? undo : undefined
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/undo-redo/redo.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function RedoButton() {
|
|||
|
const hasRedo = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).hasRedo(), []);
|
|||
|
const {
|
|||
|
redo
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
icon: !(0,external_wp_i18n_namespaceObject.isRTL)() ? library_redo : library_undo,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Redo'),
|
|||
|
shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primaryShift('z') // If there are no undo levels we don't want to actually disable this
|
|||
|
// button, because it will remove focus for keyboard users.
|
|||
|
// See: https://github.com/WordPress/gutenberg/issues/3486
|
|||
|
,
|
|||
|
"aria-disabled": !hasRedo,
|
|||
|
onClick: hasRedo ? redo : undefined
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-down.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const chevronDown = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
viewBox: "0 0 24 24",
|
|||
|
xmlns: "http://www.w3.org/2000/svg"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var chevron_down = (chevronDown);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/document-actions/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function getBlockDisplayText(block) {
|
|||
|
if (block) {
|
|||
|
const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(block.name);
|
|||
|
return blockType ? (0,external_wp_blocks_namespaceObject.__experimentalGetBlockLabel)(blockType, block.attributes) : null;
|
|||
|
}
|
|||
|
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
function useSecondaryText() {
|
|||
|
const {
|
|||
|
getBlock
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store);
|
|||
|
const activeEntityBlockId = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).__experimentalGetActiveBlockIdByBlockNames(['core/template-part']), []);
|
|||
|
|
|||
|
if (activeEntityBlockId) {
|
|||
|
return {
|
|||
|
label: getBlockDisplayText(getBlock(activeEntityBlockId)),
|
|||
|
isActive: true
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
return {};
|
|||
|
}
|
|||
|
/**
|
|||
|
* @param {Object} props Props for the DocumentActions component.
|
|||
|
* @param {string} props.entityTitle The title to display.
|
|||
|
* @param {string} props.entityLabel A label to use for entity-related options.
|
|||
|
* E.g. "template" would be used for "edit
|
|||
|
* template" and "show template details".
|
|||
|
* @param {boolean} props.isLoaded Whether the data is available.
|
|||
|
* @param {Function} props.children React component to use for the
|
|||
|
* information dropdown area. Should be a
|
|||
|
* function which accepts dropdown props.
|
|||
|
* @param {boolean} props.showIconLabels Whether buttons display icons or text labels.
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function DocumentActions(_ref) {
|
|||
|
let {
|
|||
|
entityTitle,
|
|||
|
entityLabel,
|
|||
|
isLoaded,
|
|||
|
children: dropdownContent,
|
|||
|
showIconLabels
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
label
|
|||
|
} = useSecondaryText(); // The title ref is passed to the popover as the anchorRef so that the
|
|||
|
// dropdown is centered over the whole title area rather than just one
|
|||
|
// part of it.
|
|||
|
|
|||
|
const titleRef = (0,external_wp_element_namespaceObject.useRef)(); // Return a simple loading indicator until we have information to show.
|
|||
|
|
|||
|
if (!isLoaded) {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-document-actions"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Loading…'));
|
|||
|
} // Return feedback that the template does not seem to exist.
|
|||
|
|
|||
|
|
|||
|
if (!entityTitle) {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-document-actions"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Template not found'));
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: classnames_default()('edit-site-document-actions', {
|
|||
|
'has-secondary-label': !!label
|
|||
|
})
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
ref: titleRef,
|
|||
|
className: "edit-site-document-actions__title-wrapper"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, {
|
|||
|
size: "body",
|
|||
|
className: "edit-site-document-actions__title",
|
|||
|
as: "h1"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
|
|||
|
as: "span"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.sprintf)(
|
|||
|
/* translators: %s: the entity being edited, like "template"*/
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('Editing %s: '), entityLabel)), entityTitle), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, {
|
|||
|
size: "body",
|
|||
|
className: "edit-site-document-actions__secondary-item"
|
|||
|
}, label !== null && label !== void 0 ? label : ''), dropdownContent && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Dropdown, {
|
|||
|
popoverProps: {
|
|||
|
anchorRef: titleRef.current
|
|||
|
},
|
|||
|
position: "bottom center",
|
|||
|
renderToggle: _ref2 => {
|
|||
|
let {
|
|||
|
isOpen,
|
|||
|
onToggle
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
className: "edit-site-document-actions__get-info",
|
|||
|
icon: chevron_down,
|
|||
|
"aria-expanded": isOpen,
|
|||
|
"aria-haspopup": "true",
|
|||
|
onClick: onToggle,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.sprintf)(
|
|||
|
/* translators: %s: the entity to see details about, like "template"*/
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('Show %s details'), entityLabel)
|
|||
|
}, showIconLabels && (0,external_wp_i18n_namespaceObject.__)('Details'));
|
|||
|
},
|
|||
|
contentClassName: "edit-site-document-actions__info-dropdown",
|
|||
|
renderContent: dropdownContent
|
|||
|
})));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/link.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function useLink() {
|
|||
|
let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|||
|
let state = arguments.length > 1 ? arguments[1] : undefined;
|
|||
|
let shouldReplace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|||
|
const history = useHistory();
|
|||
|
|
|||
|
function onClick(event) {
|
|||
|
event.preventDefault();
|
|||
|
|
|||
|
if (shouldReplace) {
|
|||
|
history.replace(params, state);
|
|||
|
} else {
|
|||
|
history.push(params, state);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return {
|
|||
|
href: (0,external_wp_url_namespaceObject.addQueryArgs)(window.location.href, params),
|
|||
|
onClick
|
|||
|
};
|
|||
|
}
|
|||
|
function Link(_ref) {
|
|||
|
let {
|
|||
|
params = {},
|
|||
|
state,
|
|||
|
replace: shouldReplace = false,
|
|||
|
children,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
href,
|
|||
|
onClick
|
|||
|
} = useLink(params, state, shouldReplace);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("a", extends_extends({
|
|||
|
href: href,
|
|||
|
onClick: onClick
|
|||
|
}, props), children);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-details/template-areas.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function TemplatePartItemMore(_ref) {
|
|||
|
var _templatePart$title;
|
|||
|
|
|||
|
let {
|
|||
|
onClose,
|
|||
|
templatePart,
|
|||
|
closeTemplateDetailsDropdown
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
revertTemplate
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const {
|
|||
|
params
|
|||
|
} = useLocation();
|
|||
|
const editLinkProps = useLink({
|
|||
|
postId: templatePart.id,
|
|||
|
postType: templatePart.type
|
|||
|
}, {
|
|||
|
fromTemplateId: params.postId
|
|||
|
});
|
|||
|
|
|||
|
function editTemplatePart(event) {
|
|||
|
editLinkProps.onClick(event);
|
|||
|
onClose();
|
|||
|
closeTemplateDetailsDropdown();
|
|||
|
}
|
|||
|
|
|||
|
function clearCustomizations() {
|
|||
|
revertTemplate(templatePart);
|
|||
|
onClose();
|
|||
|
closeTemplateDetailsDropdown();
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, extends_extends({}, editLinkProps, {
|
|||
|
onClick: editTemplatePart
|
|||
|
}), (0,external_wp_i18n_namespaceObject.sprintf)(
|
|||
|
/* translators: %s: template part title */
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('Edit %s'), (_templatePart$title = templatePart.title) === null || _templatePart$title === void 0 ? void 0 : _templatePart$title.rendered))), isTemplateRevertable(templatePart) && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
info: (0,external_wp_i18n_namespaceObject.__)('Restore template to default state'),
|
|||
|
onClick: clearCustomizations
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Clear customizations'))));
|
|||
|
}
|
|||
|
|
|||
|
function TemplatePartItem(_ref2) {
|
|||
|
let {
|
|||
|
templatePart,
|
|||
|
clientId,
|
|||
|
closeTemplateDetailsDropdown
|
|||
|
} = _ref2;
|
|||
|
const {
|
|||
|
selectBlock,
|
|||
|
toggleBlockHighlight
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
|
|||
|
const templatePartArea = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const defaultAreas = select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas();
|
|||
|
|
|||
|
return defaultAreas.find(defaultArea => defaultArea.area === templatePart.area);
|
|||
|
}, [templatePart.area]);
|
|||
|
|
|||
|
const highlightBlock = () => toggleBlockHighlight(clientId, true);
|
|||
|
|
|||
|
const cancelHighlightBlock = () => toggleBlockHighlight(clientId, false);
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
role: "menuitem",
|
|||
|
className: "edit-site-template-details__template-areas-item"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
role: "button",
|
|||
|
icon: templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.icon,
|
|||
|
iconPosition: "left",
|
|||
|
onClick: () => {
|
|||
|
selectBlock(clientId);
|
|||
|
},
|
|||
|
onMouseOver: highlightBlock,
|
|||
|
onMouseLeave: cancelHighlightBlock,
|
|||
|
onFocus: highlightBlock,
|
|||
|
onBlur: cancelHighlightBlock
|
|||
|
}, templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.label), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, {
|
|||
|
icon: more_vertical,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('More options'),
|
|||
|
className: "edit-site-template-details__template-areas-item-more"
|
|||
|
}, _ref3 => {
|
|||
|
let {
|
|||
|
onClose
|
|||
|
} = _ref3;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(TemplatePartItemMore, {
|
|||
|
onClose: onClose,
|
|||
|
templatePart: templatePart,
|
|||
|
closeTemplateDetailsDropdown: closeTemplateDetailsDropdown
|
|||
|
});
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
function TemplateAreas(_ref4) {
|
|||
|
let {
|
|||
|
closeTemplateDetailsDropdown
|
|||
|
} = _ref4;
|
|||
|
const templateParts = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getCurrentTemplateTemplateParts(), []);
|
|||
|
|
|||
|
if (!templateParts.length) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Areas'),
|
|||
|
className: "edit-site-template-details__group edit-site-template-details__template-areas"
|
|||
|
}, templateParts.map(_ref5 => {
|
|||
|
let {
|
|||
|
templatePart,
|
|||
|
block
|
|||
|
} = _ref5;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(TemplatePartItem, {
|
|||
|
key: templatePart.slug,
|
|||
|
clientId: block.clientId,
|
|||
|
templatePart: templatePart,
|
|||
|
closeTemplateDetailsDropdown: closeTemplateDetailsDropdown
|
|||
|
});
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-details/edit-template-title.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function EditTemplateTitle(_ref) {
|
|||
|
let {
|
|||
|
template
|
|||
|
} = _ref;
|
|||
|
const [title, setTitle] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', template.type, 'title', template.id);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Title'),
|
|||
|
value: title,
|
|||
|
help: (0,external_wp_i18n_namespaceObject.__)('Give the template a title that indicates its purpose, e.g. "Full Width".'),
|
|||
|
onChange: newTitle => {
|
|||
|
setTitle(newTitle || template.slug);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-details/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function TemplateDetails(_ref) {
|
|||
|
let {
|
|||
|
template,
|
|||
|
onClose
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
title,
|
|||
|
description
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetTemplateInfo(template), []);
|
|||
|
const {
|
|||
|
revertTemplate
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const templateSubMenu = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
if ((template === null || template === void 0 ? void 0 : template.type) === 'wp_template') {
|
|||
|
return {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('templates'),
|
|||
|
menu: MENU_TEMPLATES
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
return TEMPLATE_PARTS_SUB_MENUS.find(_ref2 => {
|
|||
|
let {
|
|||
|
area
|
|||
|
} = _ref2;
|
|||
|
return area === (template === null || template === void 0 ? void 0 : template.area);
|
|||
|
});
|
|||
|
}, [template]);
|
|||
|
const browseAllLinkProps = useLink({
|
|||
|
// TODO: We should update this to filter by template part's areas as well.
|
|||
|
postType: template.type,
|
|||
|
postId: undefined
|
|||
|
}); // Only user-created and non-default templates can change the name.
|
|||
|
|
|||
|
const canEditTitle = template.is_custom && !template.has_theme_file;
|
|||
|
|
|||
|
if (!template) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
const revert = () => {
|
|||
|
revertTemplate(template);
|
|||
|
onClose();
|
|||
|
};
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-template-details"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-template-details__group"
|
|||
|
}, canEditTitle ? (0,external_wp_element_namespaceObject.createElement)(EditTemplateTitle, {
|
|||
|
template: template
|
|||
|
}) : (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
|
|||
|
level: 4,
|
|||
|
weight: 600,
|
|||
|
className: "edit-site-template-details__title"
|
|||
|
}, title), description && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalText, {
|
|||
|
size: "body",
|
|||
|
className: "edit-site-template-details__description",
|
|||
|
as: "p"
|
|||
|
}, description)), (0,external_wp_element_namespaceObject.createElement)(TemplateAreas, {
|
|||
|
closeTemplateDetailsDropdown: onClose
|
|||
|
}), isTemplateRevertable(template) && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
|
|||
|
className: "edit-site-template-details__group edit-site-template-details__revert"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
className: "edit-site-template-details__revert-button",
|
|||
|
info: (0,external_wp_i18n_namespaceObject.__)('Restore template to default state'),
|
|||
|
onClick: revert
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Clear customizations'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, extends_extends({
|
|||
|
className: "edit-site-template-details__show-all-button"
|
|||
|
}, browseAllLinkProps), (0,external_wp_i18n_namespaceObject.sprintf)(
|
|||
|
/* translators: the template part's area name ("Headers", "Sidebars") or "templates". */
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('Browse all %s'), templateSubMenu.title)));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const preventDefault = event => {
|
|||
|
event.preventDefault();
|
|||
|
};
|
|||
|
|
|||
|
function Header(_ref) {
|
|||
|
let {
|
|||
|
openEntitiesSavedStates,
|
|||
|
isEntitiesSavedStatesOpen,
|
|||
|
showIconLabels
|
|||
|
} = _ref;
|
|||
|
const inserterButton = (0,external_wp_element_namespaceObject.useRef)();
|
|||
|
const {
|
|||
|
deviceType,
|
|||
|
entityTitle,
|
|||
|
template,
|
|||
|
templateType,
|
|||
|
isInserterOpen,
|
|||
|
isListViewOpen,
|
|||
|
listViewShortcut,
|
|||
|
isLoaded,
|
|||
|
isVisualMode
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
__experimentalGetPreviewDeviceType,
|
|||
|
getEditedPostType,
|
|||
|
getEditedPostId,
|
|||
|
isInserterOpened,
|
|||
|
isListViewOpened,
|
|||
|
getEditorMode
|
|||
|
} = select(store_store);
|
|||
|
const {
|
|||
|
getEditedEntityRecord
|
|||
|
} = select(external_wp_coreData_namespaceObject.store);
|
|||
|
const {
|
|||
|
__experimentalGetTemplateInfo: getTemplateInfo
|
|||
|
} = select(external_wp_editor_namespaceObject.store);
|
|||
|
const {
|
|||
|
getShortcutRepresentation
|
|||
|
} = select(external_wp_keyboardShortcuts_namespaceObject.store);
|
|||
|
const postType = getEditedPostType();
|
|||
|
const postId = getEditedPostId();
|
|||
|
const record = getEditedEntityRecord('postType', postType, postId);
|
|||
|
|
|||
|
const _isLoaded = !!postId;
|
|||
|
|
|||
|
return {
|
|||
|
deviceType: __experimentalGetPreviewDeviceType(),
|
|||
|
entityTitle: getTemplateInfo(record).title,
|
|||
|
isLoaded: _isLoaded,
|
|||
|
template: record,
|
|||
|
templateType: postType,
|
|||
|
isInserterOpen: isInserterOpened(),
|
|||
|
isListViewOpen: isListViewOpened(),
|
|||
|
listViewShortcut: getShortcutRepresentation('core/edit-site/toggle-list-view'),
|
|||
|
isVisualMode: getEditorMode() === 'visual'
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const {
|
|||
|
__experimentalSetPreviewDeviceType: setPreviewDeviceType,
|
|||
|
setIsInserterOpened,
|
|||
|
setIsListViewOpened
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const isLargeViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium');
|
|||
|
const openInserter = (0,external_wp_element_namespaceObject.useCallback)(() => {
|
|||
|
if (isInserterOpen) {
|
|||
|
// Focusing the inserter button closes the inserter popover.
|
|||
|
inserterButton.current.focus();
|
|||
|
} else {
|
|||
|
setIsInserterOpened(true);
|
|||
|
}
|
|||
|
}, [isInserterOpen, setIsInserterOpened]);
|
|||
|
const toggleListView = (0,external_wp_element_namespaceObject.useCallback)(() => setIsListViewOpened(!isListViewOpen), [setIsListViewOpened, isListViewOpen]);
|
|||
|
const isFocusMode = templateType === 'wp_template_part';
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-header"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-header_start"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-header__toolbar"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
ref: inserterButton,
|
|||
|
variant: "primary",
|
|||
|
isPressed: isInserterOpen,
|
|||
|
className: "edit-site-header-toolbar__inserter-toggle",
|
|||
|
disabled: !isVisualMode,
|
|||
|
onMouseDown: preventDefault,
|
|||
|
onClick: openInserter,
|
|||
|
icon: library_plus,
|
|||
|
label: (0,external_wp_i18n_namespaceObject._x)('Toggle block inserter', 'Generic label for block inserter button')
|
|||
|
}, showIconLabels && (!isInserterOpen ? (0,external_wp_i18n_namespaceObject.__)('Add') : (0,external_wp_i18n_namespaceObject.__)('Close'))), isLargeViewport && (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToolbarItem, {
|
|||
|
as: external_wp_blockEditor_namespaceObject.ToolSelector,
|
|||
|
disabled: !isVisualMode
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(UndoButton, null), (0,external_wp_element_namespaceObject.createElement)(RedoButton, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
className: "edit-site-header-toolbar__list-view-toggle",
|
|||
|
disabled: !isVisualMode,
|
|||
|
icon: list_view,
|
|||
|
isPressed: isListViewOpen
|
|||
|
/* translators: button label text should, if possible, be under 16 characters. */
|
|||
|
,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('List View'),
|
|||
|
onClick: toggleListView,
|
|||
|
shortcut: listViewShortcut
|
|||
|
})))), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-header_center"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(DocumentActions, {
|
|||
|
entityTitle: entityTitle,
|
|||
|
entityLabel: templateType === 'wp_template_part' ? 'template part' : 'template',
|
|||
|
isLoaded: isLoaded,
|
|||
|
showIconLabels: showIconLabels
|
|||
|
}, _ref2 => {
|
|||
|
let {
|
|||
|
onClose
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(TemplateDetails, {
|
|||
|
template: template,
|
|||
|
onClose: onClose
|
|||
|
});
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-header_end"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-header__actions"
|
|||
|
}, !isFocusMode && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalPreviewOptions, {
|
|||
|
deviceType: deviceType,
|
|||
|
setDeviceType: setPreviewDeviceType
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(SaveButton, {
|
|||
|
openEntitiesSavedStates: openEntitiesSavedStates,
|
|||
|
isEntitiesSavedStatesOpen: isEntitiesSavedStatesOpen
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(pinned_items.Slot, {
|
|||
|
scope: "core/edit-site"
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(MoreMenu, null))));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/cog.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const cog = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
fillRule: "evenodd",
|
|||
|
d: "M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z",
|
|||
|
clipRule: "evenodd"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_cog = (cog);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/default-sidebar.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
function default_sidebar_DefaultSidebar(_ref) {
|
|||
|
let {
|
|||
|
className,
|
|||
|
identifier,
|
|||
|
title,
|
|||
|
icon,
|
|||
|
children,
|
|||
|
closeLabel,
|
|||
|
header,
|
|||
|
headerClassName,
|
|||
|
panelClassName
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(complementary_area, {
|
|||
|
className: className,
|
|||
|
scope: "core/edit-site",
|
|||
|
identifier: identifier,
|
|||
|
title: title,
|
|||
|
icon: icon,
|
|||
|
closeLabel: closeLabel,
|
|||
|
header: header,
|
|||
|
headerClassName: headerClassName,
|
|||
|
panelClassName: panelClassName
|
|||
|
}, children), (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaMoreMenuItem, {
|
|||
|
scope: "core/edit-site",
|
|||
|
identifier: identifier,
|
|||
|
icon: icon
|
|||
|
}, title));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/styles.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const styles = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
viewBox: "0 0 24 24",
|
|||
|
xmlns: "http://www.w3.org/2000/svg"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_styles = (styles);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/icon-with-current-color.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function IconWithCurrentColor(_ref) {
|
|||
|
let {
|
|||
|
className,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, extends_extends({
|
|||
|
className: classnames_default()(className, 'edit-site-global-styles-icon-with-current-color')
|
|||
|
}, props));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/navigation-button.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function GenericNavigationButton(_ref) {
|
|||
|
let {
|
|||
|
icon,
|
|||
|
children,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItem, props, icon && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
justify: "flex-start"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(IconWithCurrentColor, {
|
|||
|
icon: icon,
|
|||
|
size: 24
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, children)), !icon && children);
|
|||
|
}
|
|||
|
|
|||
|
function NavigationButton(props) {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorButton, extends_extends({
|
|||
|
as: GenericNavigationButton
|
|||
|
}, props));
|
|||
|
}
|
|||
|
|
|||
|
function NavigationBackButton(props) {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorBackButton, extends_extends({
|
|||
|
as: GenericNavigationButton
|
|||
|
}, props));
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/typography.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const typography = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M6.9 7L3 17.8h1.7l1-2.8h4.1l1 2.8h1.7L8.6 7H6.9zm-.7 6.6l1.5-4.3 1.5 4.3h-3zM21.6 17c-.1.1-.2.2-.3.2-.1.1-.2.1-.4.1s-.3-.1-.4-.2c-.1-.1-.1-.3-.1-.6V12c0-.5 0-1-.1-1.4-.1-.4-.3-.7-.5-1-.2-.2-.5-.4-.9-.5-.4 0-.8-.1-1.3-.1s-1 .1-1.4.2c-.4.1-.7.3-1 .4-.2.2-.4.3-.6.5-.1.2-.2.4-.2.7 0 .3.1.5.2.8.2.2.4.3.8.3.3 0 .6-.1.8-.3.2-.2.3-.4.3-.7 0-.3-.1-.5-.2-.7-.2-.2-.4-.3-.6-.4.2-.2.4-.3.7-.4.3-.1.6-.1.8-.1.3 0 .6 0 .8.1.2.1.4.3.5.5.1.2.2.5.2.9v1.1c0 .3-.1.5-.3.6-.2.2-.5.3-.9.4-.3.1-.7.3-1.1.4-.4.1-.8.3-1.1.5-.3.2-.6.4-.8.7-.2.3-.3.7-.3 1.2 0 .6.2 1.1.5 1.4.3.4.9.5 1.6.5.5 0 1-.1 1.4-.3.4-.2.8-.6 1.1-1.1 0 .4.1.7.3 1 .2.3.6.4 1.2.4.4 0 .7-.1.9-.2.2-.1.5-.3.7-.4h-.3zm-3-.9c-.2.4-.5.7-.8.8-.3.2-.6.2-.8.2-.4 0-.6-.1-.9-.3-.2-.2-.3-.6-.3-1.1 0-.5.1-.9.3-1.2s.5-.5.8-.7c.3-.2.7-.3 1-.5.3-.1.6-.3.7-.6v3.4z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_typography = (typography);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/color.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const color = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
viewBox: "0 0 24 24",
|
|||
|
xmlns: "http://www.w3.org/2000/svg"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3zm-5.1 7.6c-2.5 0-4.6-2.1-4.6-4.6 0-.3.1-1 .8-2.3.5-.9 1.1-1.9 2-3.1.7-.9 1.3-1.7 1.8-2.3.7.8 1.3 1.6 1.8 2.3.8 1.1 1.5 2.2 2 3.1.7 1.3.8 2 .8 2.3 0 2.5-2.1 4.6-4.6 4.6z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_color = (color);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/layout.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const layout = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_layout = (layout);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/utils.js
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/* Supporting data. */
|
|||
|
|
|||
|
const ROOT_BLOCK_NAME = 'root';
|
|||
|
const ROOT_BLOCK_SELECTOR = 'body';
|
|||
|
const ROOT_BLOCK_SUPPORTS = (/* unused pure expression or super */ null && (['background', 'backgroundColor', 'color', 'linkColor', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'lineHeight', 'textDecoration', 'textTransform', 'padding']));
|
|||
|
const PRESET_METADATA = [{
|
|||
|
path: ['color', 'palette'],
|
|||
|
valueKey: 'color',
|
|||
|
cssVarInfix: 'color',
|
|||
|
classes: [{
|
|||
|
classSuffix: 'color',
|
|||
|
propertyName: 'color'
|
|||
|
}, {
|
|||
|
classSuffix: 'background-color',
|
|||
|
propertyName: 'background-color'
|
|||
|
}, {
|
|||
|
classSuffix: 'border-color',
|
|||
|
propertyName: 'border-color'
|
|||
|
}]
|
|||
|
}, {
|
|||
|
path: ['color', 'gradients'],
|
|||
|
valueKey: 'gradient',
|
|||
|
cssVarInfix: 'gradient',
|
|||
|
classes: [{
|
|||
|
classSuffix: 'gradient-background',
|
|||
|
propertyName: 'background'
|
|||
|
}]
|
|||
|
}, {
|
|||
|
path: ['color', 'duotone'],
|
|||
|
cssVarInfix: 'duotone',
|
|||
|
valueFunc: _ref => {
|
|||
|
let {
|
|||
|
slug
|
|||
|
} = _ref;
|
|||
|
return `url( '#wp-duotone-${slug}' )`;
|
|||
|
},
|
|||
|
classes: []
|
|||
|
}, {
|
|||
|
path: ['typography', 'fontSizes'],
|
|||
|
valueKey: 'size',
|
|||
|
cssVarInfix: 'font-size',
|
|||
|
classes: [{
|
|||
|
classSuffix: 'font-size',
|
|||
|
propertyName: 'font-size'
|
|||
|
}]
|
|||
|
}, {
|
|||
|
path: ['typography', 'fontFamilies'],
|
|||
|
valueKey: 'fontFamily',
|
|||
|
cssVarInfix: 'font-family',
|
|||
|
classes: [{
|
|||
|
classSuffix: 'font-family',
|
|||
|
propertyName: 'font-family'
|
|||
|
}]
|
|||
|
}];
|
|||
|
const STYLE_PATH_TO_CSS_VAR_INFIX = {
|
|||
|
'color.background': 'color',
|
|||
|
'color.text': 'color',
|
|||
|
'elements.link.color.text': 'color',
|
|||
|
'color.gradient': 'gradient',
|
|||
|
'typography.fontSize': 'font-size',
|
|||
|
'typography.fontFamily': 'font-family'
|
|||
|
};
|
|||
|
|
|||
|
function findInPresetsBy(features, blockName, presetPath, presetProperty, presetValueValue) {
|
|||
|
// Block presets take priority above root level presets.
|
|||
|
const orderedPresetsByOrigin = [(0,external_lodash_namespaceObject.get)(features, ['blocks', blockName, ...presetPath]), (0,external_lodash_namespaceObject.get)(features, presetPath)];
|
|||
|
|
|||
|
for (const presetByOrigin of orderedPresetsByOrigin) {
|
|||
|
if (presetByOrigin) {
|
|||
|
// Preset origins ordered by priority.
|
|||
|
const origins = ['custom', 'theme', 'default'];
|
|||
|
|
|||
|
for (const origin of origins) {
|
|||
|
const presets = presetByOrigin[origin];
|
|||
|
|
|||
|
if (presets) {
|
|||
|
const presetObject = (0,external_lodash_namespaceObject.find)(presets, preset => preset[presetProperty] === presetValueValue);
|
|||
|
|
|||
|
if (presetObject) {
|
|||
|
if (presetProperty === 'slug') {
|
|||
|
return presetObject;
|
|||
|
} // If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.
|
|||
|
|
|||
|
|
|||
|
const highestPresetObjectWithSameSlug = findInPresetsBy(features, blockName, presetPath, 'slug', presetObject.slug);
|
|||
|
|
|||
|
if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) {
|
|||
|
return presetObject;
|
|||
|
}
|
|||
|
|
|||
|
return undefined;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function getPresetVariableFromValue(features, blockName, variableStylePath, presetPropertyValue) {
|
|||
|
if (!presetPropertyValue) {
|
|||
|
return presetPropertyValue;
|
|||
|
}
|
|||
|
|
|||
|
const cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[variableStylePath];
|
|||
|
const metadata = (0,external_lodash_namespaceObject.find)(PRESET_METADATA, ['cssVarInfix', cssVarInfix]);
|
|||
|
|
|||
|
if (!metadata) {
|
|||
|
// The property doesn't have preset data
|
|||
|
// so the value should be returned as it is.
|
|||
|
return presetPropertyValue;
|
|||
|
}
|
|||
|
|
|||
|
const {
|
|||
|
valueKey,
|
|||
|
path
|
|||
|
} = metadata;
|
|||
|
const presetObject = findInPresetsBy(features, blockName, path, valueKey, presetPropertyValue);
|
|||
|
|
|||
|
if (!presetObject) {
|
|||
|
// Value wasn't found in the presets,
|
|||
|
// so it must be a custom value.
|
|||
|
return presetPropertyValue;
|
|||
|
}
|
|||
|
|
|||
|
return `var:preset|${cssVarInfix}|${presetObject.slug}`;
|
|||
|
}
|
|||
|
|
|||
|
function getValueFromPresetVariable(features, blockName, variable, _ref2) {
|
|||
|
let [presetType, slug] = _ref2;
|
|||
|
const metadata = (0,external_lodash_namespaceObject.find)(PRESET_METADATA, ['cssVarInfix', presetType]);
|
|||
|
|
|||
|
if (!metadata) {
|
|||
|
return variable;
|
|||
|
}
|
|||
|
|
|||
|
const presetObject = findInPresetsBy(features, blockName, metadata.path, 'slug', slug);
|
|||
|
|
|||
|
if (presetObject) {
|
|||
|
const {
|
|||
|
valueKey
|
|||
|
} = metadata;
|
|||
|
const result = presetObject[valueKey];
|
|||
|
return getValueFromVariable(features, blockName, result);
|
|||
|
}
|
|||
|
|
|||
|
return variable;
|
|||
|
}
|
|||
|
|
|||
|
function getValueFromCustomVariable(features, blockName, variable, path) {
|
|||
|
var _get;
|
|||
|
|
|||
|
const result = (_get = (0,external_lodash_namespaceObject.get)(features, ['blocks', blockName, 'custom', ...path])) !== null && _get !== void 0 ? _get : (0,external_lodash_namespaceObject.get)(features, ['custom', ...path]);
|
|||
|
|
|||
|
if (!result) {
|
|||
|
return variable;
|
|||
|
} // A variable may reference another variable so we need recursion until we find the value.
|
|||
|
|
|||
|
|
|||
|
return getValueFromVariable(features, blockName, result);
|
|||
|
}
|
|||
|
|
|||
|
function getValueFromVariable(features, blockName, variable) {
|
|||
|
if (!variable || !(0,external_lodash_namespaceObject.isString)(variable)) {
|
|||
|
return variable;
|
|||
|
}
|
|||
|
|
|||
|
const USER_VALUE_PREFIX = 'var:';
|
|||
|
const THEME_VALUE_PREFIX = 'var(--wp--';
|
|||
|
const THEME_VALUE_SUFFIX = ')';
|
|||
|
let parsedVar;
|
|||
|
|
|||
|
if (variable.startsWith(USER_VALUE_PREFIX)) {
|
|||
|
parsedVar = variable.slice(USER_VALUE_PREFIX.length).split('|');
|
|||
|
} else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) {
|
|||
|
parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split('--');
|
|||
|
} else {
|
|||
|
// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`
|
|||
|
return variable;
|
|||
|
}
|
|||
|
|
|||
|
const [type, ...path] = parsedVar;
|
|||
|
|
|||
|
if (type === 'preset') {
|
|||
|
return getValueFromPresetVariable(features, blockName, variable, path);
|
|||
|
}
|
|||
|
|
|||
|
if (type === 'custom') {
|
|||
|
return getValueFromCustomVariable(features, blockName, variable, path);
|
|||
|
}
|
|||
|
|
|||
|
return variable;
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/context.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const DEFAULT_GLOBAL_STYLES_CONTEXT = {
|
|||
|
user: {},
|
|||
|
base: {},
|
|||
|
merged: {},
|
|||
|
setUserConfig: () => {}
|
|||
|
};
|
|||
|
const GlobalStylesContext = (0,external_wp_element_namespaceObject.createContext)(DEFAULT_GLOBAL_STYLES_CONTEXT);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/hooks.js
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const EMPTY_CONFIG = {
|
|||
|
settings: {},
|
|||
|
styles: {}
|
|||
|
};
|
|||
|
const useGlobalStylesReset = () => {
|
|||
|
const {
|
|||
|
user: config,
|
|||
|
setUserConfig
|
|||
|
} = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
|
|||
|
const canReset = !!config && !(0,external_lodash_namespaceObject.isEqual)(config, EMPTY_CONFIG);
|
|||
|
return [canReset, (0,external_wp_element_namespaceObject.useCallback)(() => setUserConfig(() => EMPTY_CONFIG), [setUserConfig])];
|
|||
|
};
|
|||
|
function useSetting(path, blockName) {
|
|||
|
var _getSettingValueForCo;
|
|||
|
|
|||
|
let source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'all';
|
|||
|
const {
|
|||
|
merged: mergedConfig,
|
|||
|
base: baseConfig,
|
|||
|
user: userConfig,
|
|||
|
setUserConfig
|
|||
|
} = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
|
|||
|
const fullPath = !blockName ? `settings.${path}` : `settings.blocks.${blockName}.${path}`;
|
|||
|
|
|||
|
const setSetting = newValue => {
|
|||
|
setUserConfig(currentConfig => {
|
|||
|
const newUserConfig = (0,external_lodash_namespaceObject.cloneDeep)(currentConfig);
|
|||
|
const pathToSet = external_wp_blocks_namespaceObject.__EXPERIMENTAL_PATHS_WITH_MERGE[path] ? fullPath + '.custom' : fullPath;
|
|||
|
(0,external_lodash_namespaceObject.set)(newUserConfig, pathToSet, newValue);
|
|||
|
return newUserConfig;
|
|||
|
});
|
|||
|
};
|
|||
|
|
|||
|
const getSettingValueForContext = name => {
|
|||
|
const currentPath = !name ? `settings.${path}` : `settings.blocks.${name}.${path}`;
|
|||
|
|
|||
|
const getSettingValue = configToUse => {
|
|||
|
const result = (0,external_lodash_namespaceObject.get)(configToUse, currentPath);
|
|||
|
|
|||
|
if (external_wp_blocks_namespaceObject.__EXPERIMENTAL_PATHS_WITH_MERGE[path]) {
|
|||
|
var _ref, _result$custom;
|
|||
|
|
|||
|
return (_ref = (_result$custom = result === null || result === void 0 ? void 0 : result.custom) !== null && _result$custom !== void 0 ? _result$custom : result === null || result === void 0 ? void 0 : result.theme) !== null && _ref !== void 0 ? _ref : result === null || result === void 0 ? void 0 : result.default;
|
|||
|
}
|
|||
|
|
|||
|
return result;
|
|||
|
};
|
|||
|
|
|||
|
let result;
|
|||
|
|
|||
|
switch (source) {
|
|||
|
case 'all':
|
|||
|
result = getSettingValue(mergedConfig);
|
|||
|
break;
|
|||
|
|
|||
|
case 'user':
|
|||
|
result = getSettingValue(userConfig);
|
|||
|
break;
|
|||
|
|
|||
|
case 'base':
|
|||
|
result = getSettingValue(baseConfig);
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
throw 'Unsupported source';
|
|||
|
}
|
|||
|
|
|||
|
return result;
|
|||
|
}; // Unlike styles settings get inherited from top level settings.
|
|||
|
|
|||
|
|
|||
|
const resultWithFallback = (_getSettingValueForCo = getSettingValueForContext(blockName)) !== null && _getSettingValueForCo !== void 0 ? _getSettingValueForCo : getSettingValueForContext();
|
|||
|
return [resultWithFallback, setSetting];
|
|||
|
}
|
|||
|
function useStyle(path, blockName) {
|
|||
|
var _get;
|
|||
|
|
|||
|
let source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'all';
|
|||
|
const {
|
|||
|
merged: mergedConfig,
|
|||
|
base: baseConfig,
|
|||
|
user: userConfig,
|
|||
|
setUserConfig
|
|||
|
} = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
|
|||
|
const finalPath = !blockName ? `styles.${path}` : `styles.blocks.${blockName}.${path}`;
|
|||
|
|
|||
|
const setStyle = newValue => {
|
|||
|
setUserConfig(currentConfig => {
|
|||
|
const newUserConfig = (0,external_lodash_namespaceObject.cloneDeep)(currentConfig);
|
|||
|
(0,external_lodash_namespaceObject.set)(newUserConfig, finalPath, getPresetVariableFromValue(mergedConfig.settings, blockName, path, newValue));
|
|||
|
return newUserConfig;
|
|||
|
});
|
|||
|
};
|
|||
|
|
|||
|
let result;
|
|||
|
|
|||
|
switch (source) {
|
|||
|
case 'all':
|
|||
|
result = getValueFromVariable(mergedConfig.settings, blockName, (_get = (0,external_lodash_namespaceObject.get)(userConfig, finalPath)) !== null && _get !== void 0 ? _get : (0,external_lodash_namespaceObject.get)(baseConfig, finalPath));
|
|||
|
break;
|
|||
|
|
|||
|
case 'user':
|
|||
|
result = getValueFromVariable(mergedConfig.settings, blockName, (0,external_lodash_namespaceObject.get)(userConfig, finalPath));
|
|||
|
break;
|
|||
|
|
|||
|
case 'base':
|
|||
|
result = getValueFromVariable(baseConfig.settings, blockName, (0,external_lodash_namespaceObject.get)(baseConfig, finalPath));
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
throw 'Unsupported source';
|
|||
|
}
|
|||
|
|
|||
|
return [result, setStyle];
|
|||
|
}
|
|||
|
const hooks_ROOT_BLOCK_SUPPORTS = ['background', 'backgroundColor', 'color', 'linkColor', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'lineHeight', 'textDecoration', 'textTransform', 'padding'];
|
|||
|
function getSupportedGlobalStylesPanels(name) {
|
|||
|
if (!name) {
|
|||
|
return hooks_ROOT_BLOCK_SUPPORTS;
|
|||
|
}
|
|||
|
|
|||
|
const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(name);
|
|||
|
|
|||
|
if (!blockType) {
|
|||
|
return [];
|
|||
|
}
|
|||
|
|
|||
|
const supportKeys = [];
|
|||
|
Object.keys(external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY).forEach(styleName => {
|
|||
|
if (!external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].support) {
|
|||
|
return;
|
|||
|
} // Opting out means that, for certain support keys like background color,
|
|||
|
// blocks have to explicitly set the support value false. If the key is
|
|||
|
// unset, we still enable it.
|
|||
|
|
|||
|
|
|||
|
if (external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].requiresOptOut) {
|
|||
|
if ((0,external_lodash_namespaceObject.has)(blockType.supports, external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].support[0]) && (0,external_lodash_namespaceObject.get)(blockType.supports, external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].support) !== false) {
|
|||
|
return supportKeys.push(styleName);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if ((0,external_lodash_namespaceObject.get)(blockType.supports, external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY[styleName].support, false)) {
|
|||
|
return supportKeys.push(styleName);
|
|||
|
}
|
|||
|
});
|
|||
|
return supportKeys;
|
|||
|
}
|
|||
|
function useColorsPerOrigin(name) {
|
|||
|
const [customColors] = useSetting('color.palette.custom', name);
|
|||
|
const [themeColors] = useSetting('color.palette.theme', name);
|
|||
|
const [defaultColors] = useSetting('color.palette.default', name);
|
|||
|
const [shouldDisplayDefaultColors] = useSetting('color.defaultPalette');
|
|||
|
return (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
const result = [];
|
|||
|
|
|||
|
if (themeColors && themeColors.length) {
|
|||
|
result.push({
|
|||
|
name: (0,external_wp_i18n_namespaceObject._x)('Theme', 'Indicates this palette comes from the theme.'),
|
|||
|
colors: themeColors
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if (shouldDisplayDefaultColors && defaultColors && defaultColors.length) {
|
|||
|
result.push({
|
|||
|
name: (0,external_wp_i18n_namespaceObject._x)('Default', 'Indicates this palette comes from WordPress.'),
|
|||
|
colors: defaultColors
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if (customColors && customColors.length) {
|
|||
|
result.push({
|
|||
|
name: (0,external_wp_i18n_namespaceObject._x)('Custom', 'Indicates this palette is created by the user.'),
|
|||
|
colors: customColors
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return result;
|
|||
|
}, [customColors, themeColors, defaultColors]);
|
|||
|
}
|
|||
|
function useGradientsPerOrigin(name) {
|
|||
|
const [customGradients] = useSetting('color.gradients.custom', name);
|
|||
|
const [themeGradients] = useSetting('color.gradients.theme', name);
|
|||
|
const [defaultGradients] = useSetting('color.gradients.default', name);
|
|||
|
const [shouldDisplayDefaultGradients] = useSetting('color.defaultGradients');
|
|||
|
return (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
const result = [];
|
|||
|
|
|||
|
if (themeGradients && themeGradients.length) {
|
|||
|
result.push({
|
|||
|
name: (0,external_wp_i18n_namespaceObject._x)('Theme', 'Indicates this palette comes from the theme.'),
|
|||
|
gradients: themeGradients
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if (shouldDisplayDefaultGradients && defaultGradients && defaultGradients.length) {
|
|||
|
result.push({
|
|||
|
name: (0,external_wp_i18n_namespaceObject._x)('Default', 'Indicates this palette comes from WordPress.'),
|
|||
|
gradients: defaultGradients
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if (customGradients && customGradients.length) {
|
|||
|
result.push({
|
|||
|
name: (0,external_wp_i18n_namespaceObject._x)('Custom', 'Indicates this palette is created by the user.'),
|
|||
|
gradients: customGradients
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return result;
|
|||
|
}, [customGradients, themeGradients, defaultGradients]);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/border-panel.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
const MIN_BORDER_WIDTH = 0;
|
|||
|
function useHasBorderPanel(name) {
|
|||
|
const controls = [useHasBorderColorControl(name), useHasBorderRadiusControl(name), useHasBorderStyleControl(name), useHasBorderWidthControl(name)];
|
|||
|
return controls.some(Boolean);
|
|||
|
}
|
|||
|
|
|||
|
function useHasBorderColorControl(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
return useSetting('border.color', name)[0] && supports.includes('borderColor');
|
|||
|
}
|
|||
|
|
|||
|
function useHasBorderRadiusControl(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
return useSetting('border.radius', name)[0] && supports.includes('borderRadius');
|
|||
|
}
|
|||
|
|
|||
|
function useHasBorderStyleControl(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
return useSetting('border.style', name)[0] && supports.includes('borderStyle');
|
|||
|
}
|
|||
|
|
|||
|
function useHasBorderWidthControl(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
return useSetting('border.width', name)[0] && supports.includes('borderWidth');
|
|||
|
}
|
|||
|
|
|||
|
function BorderPanel(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
// To better reflect if the user has customized a value we need to
|
|||
|
// ensure the style value being checked is from the `user` origin.
|
|||
|
const [userBorderStyles] = useStyle('border', name, 'user');
|
|||
|
|
|||
|
const createHasValueCallback = feature => () => !!(userBorderStyles !== null && userBorderStyles !== void 0 && userBorderStyles[feature]);
|
|||
|
|
|||
|
const createResetCallback = setStyle => () => setStyle(undefined);
|
|||
|
|
|||
|
const handleOnChange = setStyle => value => {
|
|||
|
setStyle(value || undefined);
|
|||
|
};
|
|||
|
|
|||
|
const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({
|
|||
|
availableUnits: useSetting('spacing.units')[0] || ['px', 'em', 'rem']
|
|||
|
}); // Border width.
|
|||
|
|
|||
|
const showBorderWidth = useHasBorderWidthControl(name);
|
|||
|
const [borderWidthValue, setBorderWidth] = useStyle('border.width', name); // Border style.
|
|||
|
|
|||
|
const showBorderStyle = useHasBorderStyleControl(name);
|
|||
|
const [borderStyle, setBorderStyle] = useStyle('border.style', name); // When we set a border color or width ensure we have a style so the user
|
|||
|
// can see a visible border.
|
|||
|
|
|||
|
const handleOnChangeWithStyle = setStyle => value => {
|
|||
|
if (!!value && !borderStyle) {
|
|||
|
setBorderStyle('solid');
|
|||
|
}
|
|||
|
|
|||
|
setStyle(value || undefined);
|
|||
|
}; // Border color.
|
|||
|
|
|||
|
|
|||
|
const showBorderColor = useHasBorderColorControl(name);
|
|||
|
const [borderColor, setBorderColor] = useStyle('border.color', name);
|
|||
|
const disableCustomColors = !useSetting('color.custom')[0];
|
|||
|
const disableCustomGradients = !useSetting('color.customGradient')[0];
|
|||
|
const borderColorSettings = [{
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Color'),
|
|||
|
colors: useColorsPerOrigin(name),
|
|||
|
colorValue: borderColor,
|
|||
|
onColorChange: handleOnChangeWithStyle(setBorderColor),
|
|||
|
clearable: false
|
|||
|
}]; // Border radius.
|
|||
|
|
|||
|
const showBorderRadius = useHasBorderRadiusControl(name);
|
|||
|
const [borderRadiusValues, setBorderRadius] = useStyle('border.radius', name);
|
|||
|
|
|||
|
const hasBorderRadius = () => {
|
|||
|
const borderValues = userBorderStyles === null || userBorderStyles === void 0 ? void 0 : userBorderStyles.radius;
|
|||
|
|
|||
|
if (typeof borderValues === 'object') {
|
|||
|
return Object.entries(borderValues).some(Boolean);
|
|||
|
}
|
|||
|
|
|||
|
return !!borderValues;
|
|||
|
};
|
|||
|
|
|||
|
const resetAll = () => {
|
|||
|
setBorderColor(undefined);
|
|||
|
setBorderRadius(undefined);
|
|||
|
setBorderStyle(undefined);
|
|||
|
setBorderWidth(undefined);
|
|||
|
};
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanel, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Border'),
|
|||
|
resetAll: resetAll
|
|||
|
}, showBorderWidth && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
|
|||
|
className: "single-column",
|
|||
|
hasValue: createHasValueCallback('width'),
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Width'),
|
|||
|
onDeselect: createResetCallback(setBorderWidth),
|
|||
|
isShownByDefault: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalUnitControl, {
|
|||
|
value: borderWidthValue,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Width'),
|
|||
|
min: MIN_BORDER_WIDTH,
|
|||
|
onChange: handleOnChangeWithStyle(setBorderWidth),
|
|||
|
units: units
|
|||
|
})), showBorderStyle && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
|
|||
|
className: "single-column",
|
|||
|
hasValue: createHasValueCallback('style'),
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Style'),
|
|||
|
onDeselect: createResetCallback(setBorderStyle),
|
|||
|
isShownByDefault: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalBorderStyleControl, {
|
|||
|
value: borderStyle,
|
|||
|
onChange: handleOnChange(setBorderStyle)
|
|||
|
})), showBorderColor && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
|
|||
|
hasValue: createHasValueCallback('color'),
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Color'),
|
|||
|
onDeselect: createResetCallback(setBorderColor),
|
|||
|
isShownByDefault: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientSettingsDropdown, {
|
|||
|
__experimentalHasMultipleOrigins: true,
|
|||
|
__experimentalIsRenderedInSidebar: true,
|
|||
|
disableCustomColors: disableCustomColors,
|
|||
|
disableCustomGradients: disableCustomGradients,
|
|||
|
enableAlpha: true,
|
|||
|
settings: borderColorSettings
|
|||
|
})), showBorderRadius && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
|
|||
|
hasValue: hasBorderRadius,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Radius'),
|
|||
|
onDeselect: createResetCallback(setBorderRadius),
|
|||
|
isShownByDefault: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalBorderRadiusControl, {
|
|||
|
values: borderRadiusValues,
|
|||
|
onChange: handleOnChange(setBorderRadius)
|
|||
|
})));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-utils.js
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
function useHasColorPanel(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
return supports.includes('color') || supports.includes('backgroundColor') || supports.includes('background') || supports.includes('linkColor');
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/dimensions-panel.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
const AXIAL_SIDES = ['horizontal', 'vertical'];
|
|||
|
function useHasDimensionsPanel(name) {
|
|||
|
const hasPadding = useHasPadding(name);
|
|||
|
const hasMargin = useHasMargin(name);
|
|||
|
const hasGap = useHasGap(name);
|
|||
|
return hasPadding || hasMargin || hasGap;
|
|||
|
}
|
|||
|
|
|||
|
function useHasPadding(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const [settings] = useSetting('spacing.padding', name);
|
|||
|
return settings && supports.includes('padding');
|
|||
|
}
|
|||
|
|
|||
|
function useHasMargin(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const [settings] = useSetting('spacing.margin', name);
|
|||
|
return settings && supports.includes('margin');
|
|||
|
}
|
|||
|
|
|||
|
function useHasGap(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const [settings] = useSetting('spacing.blockGap', name); // Do not show the gap control panel for block-level global styles
|
|||
|
// as they do not work on the frontend.
|
|||
|
// See: https://github.com/WordPress/gutenberg/pull/39845.
|
|||
|
// We can revert this condition when they're working again.
|
|||
|
|
|||
|
return !!name ? false : settings && supports.includes('--wp--style--block-gap');
|
|||
|
}
|
|||
|
|
|||
|
function filterValuesBySides(values, sides) {
|
|||
|
if (!sides) {
|
|||
|
// If no custom side configuration all sides are opted into by default.
|
|||
|
return values;
|
|||
|
} // Only include sides opted into within filtered values.
|
|||
|
|
|||
|
|
|||
|
const filteredValues = {};
|
|||
|
sides.forEach(side => {
|
|||
|
if (side === 'vertical') {
|
|||
|
filteredValues.top = values.top;
|
|||
|
filteredValues.bottom = values.bottom;
|
|||
|
}
|
|||
|
|
|||
|
if (side === 'horizontal') {
|
|||
|
filteredValues.left = values.left;
|
|||
|
filteredValues.right = values.right;
|
|||
|
}
|
|||
|
|
|||
|
filteredValues[side] = values[side];
|
|||
|
});
|
|||
|
return filteredValues;
|
|||
|
}
|
|||
|
|
|||
|
function splitStyleValue(value) {
|
|||
|
// Check for shorthand value ( a string value ).
|
|||
|
if (value && typeof value === 'string') {
|
|||
|
// Convert to value for individual sides for BoxControl.
|
|||
|
return {
|
|||
|
top: value,
|
|||
|
right: value,
|
|||
|
bottom: value,
|
|||
|
left: value
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
return value;
|
|||
|
}
|
|||
|
|
|||
|
function DimensionsPanel(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const showPaddingControl = useHasPadding(name);
|
|||
|
const showMarginControl = useHasMargin(name);
|
|||
|
const showGapControl = useHasGap(name);
|
|||
|
const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({
|
|||
|
availableUnits: useSetting('spacing.units', name)[0] || ['%', 'px', 'em', 'rem', 'vw']
|
|||
|
});
|
|||
|
const [rawPadding, setRawPadding] = useStyle('spacing.padding', name);
|
|||
|
const paddingValues = splitStyleValue(rawPadding);
|
|||
|
const paddingSides = (0,external_wp_blockEditor_namespaceObject.__experimentalUseCustomSides)(name, 'padding');
|
|||
|
const isAxialPadding = paddingSides && paddingSides.some(side => AXIAL_SIDES.includes(side));
|
|||
|
|
|||
|
const setPaddingValues = newPaddingValues => {
|
|||
|
const padding = filterValuesBySides(newPaddingValues, paddingSides);
|
|||
|
setRawPadding(padding);
|
|||
|
};
|
|||
|
|
|||
|
const resetPaddingValue = () => setPaddingValues({});
|
|||
|
|
|||
|
const hasPaddingValue = () => !!paddingValues && Object.keys(paddingValues).length;
|
|||
|
|
|||
|
const [rawMargin, setRawMargin] = useStyle('spacing.margin', name);
|
|||
|
const marginValues = splitStyleValue(rawMargin);
|
|||
|
const marginSides = (0,external_wp_blockEditor_namespaceObject.__experimentalUseCustomSides)(name, 'margin');
|
|||
|
const isAxialMargin = marginSides && marginSides.some(side => AXIAL_SIDES.includes(side));
|
|||
|
|
|||
|
const setMarginValues = newMarginValues => {
|
|||
|
const margin = filterValuesBySides(newMarginValues, marginSides);
|
|||
|
setRawMargin(margin);
|
|||
|
};
|
|||
|
|
|||
|
const resetMarginValue = () => setMarginValues({});
|
|||
|
|
|||
|
const hasMarginValue = () => !!marginValues && Object.keys(marginValues).length;
|
|||
|
|
|||
|
const [gapValue, setGapValue] = useStyle('spacing.blockGap', name);
|
|||
|
|
|||
|
const resetGapValue = () => setGapValue(undefined);
|
|||
|
|
|||
|
const hasGapValue = () => !!gapValue;
|
|||
|
|
|||
|
const resetAll = () => {
|
|||
|
resetPaddingValue();
|
|||
|
resetMarginValue();
|
|||
|
resetGapValue();
|
|||
|
};
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanel, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Dimensions'),
|
|||
|
resetAll: resetAll
|
|||
|
}, showPaddingControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
|
|||
|
hasValue: hasPaddingValue,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Padding'),
|
|||
|
onDeselect: resetPaddingValue,
|
|||
|
isShownByDefault: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalBoxControl, {
|
|||
|
values: paddingValues,
|
|||
|
onChange: setPaddingValues,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Padding'),
|
|||
|
sides: paddingSides,
|
|||
|
units: units,
|
|||
|
allowReset: false,
|
|||
|
splitOnAxis: isAxialPadding
|
|||
|
})), showMarginControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
|
|||
|
hasValue: hasMarginValue,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Margin'),
|
|||
|
onDeselect: resetMarginValue,
|
|||
|
isShownByDefault: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalBoxControl, {
|
|||
|
values: marginValues,
|
|||
|
onChange: setMarginValues,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Margin'),
|
|||
|
sides: marginSides,
|
|||
|
units: units,
|
|||
|
allowReset: false,
|
|||
|
splitOnAxis: isAxialMargin
|
|||
|
})), showGapControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
|
|||
|
hasValue: hasGapValue,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Block spacing'),
|
|||
|
onDeselect: resetGapValue,
|
|||
|
isShownByDefault: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalUnitControl, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Block spacing'),
|
|||
|
__unstableInputWidth: "80px",
|
|||
|
min: 0,
|
|||
|
onChange: setGapValue,
|
|||
|
units: units,
|
|||
|
value: gapValue
|
|||
|
})));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-panel.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function useHasTypographyPanel(name) {
|
|||
|
const hasLineHeight = useHasLineHeightControl(name);
|
|||
|
const hasFontAppearance = useHasAppearanceControl(name);
|
|||
|
const hasLetterSpacing = useHasLetterSpacingControl(name);
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
return hasLineHeight || hasFontAppearance || hasLetterSpacing || supports.includes('fontSize');
|
|||
|
}
|
|||
|
|
|||
|
function useHasLineHeightControl(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
return useSetting('typography.lineHeight', name)[0] && supports.includes('lineHeight');
|
|||
|
}
|
|||
|
|
|||
|
function useHasAppearanceControl(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const hasFontStyles = useSetting('typography.fontStyle', name)[0] && supports.includes('fontStyle');
|
|||
|
const hasFontWeights = useSetting('typography.fontWeight', name)[0] && supports.includes('fontWeight');
|
|||
|
return hasFontStyles || hasFontWeights;
|
|||
|
}
|
|||
|
|
|||
|
function useHasLetterSpacingControl(name) {
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
return useSetting('typography.letterSpacing', name)[0] && supports.includes('letterSpacing');
|
|||
|
}
|
|||
|
|
|||
|
function TypographyPanel(_ref) {
|
|||
|
let {
|
|||
|
name,
|
|||
|
element
|
|||
|
} = _ref;
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const prefix = element === 'text' || !element ? '' : `elements.${element}.`;
|
|||
|
const [fontSizes] = useSetting('typography.fontSizes', name);
|
|||
|
const disableCustomFontSizes = !useSetting('typography.customFontSize', name)[0];
|
|||
|
const [fontFamilies] = useSetting('typography.fontFamilies', name);
|
|||
|
const hasFontStyles = useSetting('typography.fontStyle', name)[0] && supports.includes('fontStyle');
|
|||
|
const hasFontWeights = useSetting('typography.fontWeight', name)[0] && supports.includes('fontWeight');
|
|||
|
const hasLineHeightEnabled = useHasLineHeightControl(name);
|
|||
|
const hasAppearanceControl = useHasAppearanceControl(name);
|
|||
|
const hasLetterSpacingControl = useHasLetterSpacingControl(name);
|
|||
|
const [fontFamily, setFontFamily] = useStyle(prefix + 'typography.fontFamily', name);
|
|||
|
const [fontSize, setFontSize] = useStyle(prefix + 'typography.fontSize', name);
|
|||
|
const [fontStyle, setFontStyle] = useStyle(prefix + 'typography.fontStyle', name);
|
|||
|
const [fontWeight, setFontWeight] = useStyle(prefix + 'typography.fontWeight', name);
|
|||
|
const [lineHeight, setLineHeight] = useStyle(prefix + 'typography.lineHeight', name);
|
|||
|
const [letterSpacing, setLetterSpacing] = useStyle(prefix + 'typography.letterSpacing', name);
|
|||
|
const [backgroundColor] = useStyle(prefix + 'color.background', name);
|
|||
|
const [gradientValue] = useStyle(prefix + 'color.gradient', name);
|
|||
|
const [color] = useStyle(prefix + 'color.text', name);
|
|||
|
const extraStyles = element === 'link' ? {
|
|||
|
textDecoration: 'underline'
|
|||
|
} : {};
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, {
|
|||
|
className: "edit-site-typography-panel",
|
|||
|
initialOpen: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-typography-panel__preview",
|
|||
|
style: {
|
|||
|
fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif',
|
|||
|
background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor,
|
|||
|
color,
|
|||
|
fontSize,
|
|||
|
fontStyle,
|
|||
|
fontWeight,
|
|||
|
letterSpacing,
|
|||
|
...extraStyles
|
|||
|
}
|
|||
|
}, "Aa"), supports.includes('fontFamily') && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalFontFamilyControl, {
|
|||
|
fontFamilies: fontFamilies,
|
|||
|
value: fontFamily,
|
|||
|
onChange: setFontFamily
|
|||
|
}), supports.includes('fontSize') && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FontSizePicker, {
|
|||
|
value: fontSize,
|
|||
|
onChange: setFontSize,
|
|||
|
fontSizes: fontSizes,
|
|||
|
disableCustomFontSizes: disableCustomFontSizes
|
|||
|
}), hasLineHeightEnabled && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalSpacer, {
|
|||
|
marginBottom: 6
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.LineHeightControl, {
|
|||
|
__nextHasNoMarginBottom: true,
|
|||
|
value: lineHeight,
|
|||
|
onChange: setLineHeight
|
|||
|
})), hasAppearanceControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalFontAppearanceControl, {
|
|||
|
value: {
|
|||
|
fontStyle,
|
|||
|
fontWeight
|
|||
|
},
|
|||
|
onChange: _ref2 => {
|
|||
|
let {
|
|||
|
fontStyle: newFontStyle,
|
|||
|
fontWeight: newFontWeight
|
|||
|
} = _ref2;
|
|||
|
setFontStyle(newFontStyle);
|
|||
|
setFontWeight(newFontWeight);
|
|||
|
},
|
|||
|
hasFontStyles: hasFontStyles,
|
|||
|
hasFontWeights: hasFontWeights
|
|||
|
}), hasLetterSpacingControl && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalLetterSpacingControl, {
|
|||
|
value: letterSpacing,
|
|||
|
onChange: setLetterSpacing
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/context-menu.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ContextMenu(_ref) {
|
|||
|
let {
|
|||
|
name,
|
|||
|
parentMenu = ''
|
|||
|
} = _ref;
|
|||
|
const hasTypographyPanel = useHasTypographyPanel(name);
|
|||
|
const hasColorPanel = useHasColorPanel(name);
|
|||
|
const hasBorderPanel = useHasBorderPanel(name);
|
|||
|
const hasDimensionsPanel = useHasDimensionsPanel(name);
|
|||
|
const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, null, hasTypographyPanel && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
icon: library_typography,
|
|||
|
path: parentMenu + '/typography'
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Typography')), hasColorPanel && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
icon: library_color,
|
|||
|
path: parentMenu + '/colors'
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Colors')), hasLayoutPanel && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
icon: library_layout,
|
|||
|
path: parentMenu + '/layout'
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Layout')));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var context_menu = (ContextMenu);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/utils.js
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
function generateBoxRules(style, options, path, ruleKey) {
|
|||
|
const boxStyle = (0,external_lodash_namespaceObject.get)(style, path);
|
|||
|
|
|||
|
if (!boxStyle) {
|
|||
|
return [];
|
|||
|
}
|
|||
|
|
|||
|
const rules = [];
|
|||
|
|
|||
|
if (typeof boxStyle === 'string') {
|
|||
|
rules.push({
|
|||
|
selector: options.selector,
|
|||
|
key: ruleKey,
|
|||
|
value: boxStyle
|
|||
|
});
|
|||
|
} else {
|
|||
|
const sideRules = ['top', 'right', 'bottom', 'left'].reduce((acc, side) => {
|
|||
|
const value = (0,external_lodash_namespaceObject.get)(boxStyle, [side]);
|
|||
|
|
|||
|
if (value) {
|
|||
|
acc.push({
|
|||
|
selector: options.selector,
|
|||
|
key: `${ruleKey}${(0,external_lodash_namespaceObject.upperFirst)(side)}`,
|
|||
|
value
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return acc;
|
|||
|
}, []);
|
|||
|
rules.push(...sideRules);
|
|||
|
}
|
|||
|
|
|||
|
return rules;
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/padding.js
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const padding = {
|
|||
|
name: 'padding',
|
|||
|
generate: (style, options) => {
|
|||
|
return generateBoxRules(style, options, ['spacing', 'padding'], 'padding');
|
|||
|
}
|
|||
|
};
|
|||
|
/* harmony default export */ var styles_padding = (padding);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/margin.js
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const margin = {
|
|||
|
name: 'margin',
|
|||
|
generate: (style, options) => {
|
|||
|
return generateBoxRules(style, options, ['spacing', 'margin'], 'margin');
|
|||
|
}
|
|||
|
};
|
|||
|
/* harmony default export */ var styles_margin = (margin);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/styles/index.js
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
const styleDefinitions = [styles_margin, styles_padding];
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/style-engine/build-module/index.js
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Generates a stylesheet for a given style object and selector.
|
|||
|
*
|
|||
|
* @param style Style object.
|
|||
|
* @param options Options object with settings to adjust how the styles are generated.
|
|||
|
*
|
|||
|
* @return generated stylesheet.
|
|||
|
*/
|
|||
|
|
|||
|
function generate(style, options) {
|
|||
|
const rules = getCSSRules(style, options);
|
|||
|
const groupedRules = groupBy(rules, 'selector');
|
|||
|
const selectorRules = Object.keys(groupedRules).reduce((acc, subSelector) => {
|
|||
|
acc.push(`${subSelector} { ${groupedRules[subSelector].map(rule => `${kebabCase(rule.key)}: ${rule.value};`).join(' ')} }`);
|
|||
|
return acc;
|
|||
|
}, []);
|
|||
|
return selectorRules.join('\n');
|
|||
|
}
|
|||
|
/**
|
|||
|
* Returns a JSON representation of the generated CSS rules.
|
|||
|
*
|
|||
|
* @param style Style object.
|
|||
|
* @param options Options object with settings to adjust how the styles are generated.
|
|||
|
*
|
|||
|
* @return generated styles.
|
|||
|
*/
|
|||
|
|
|||
|
function getCSSRules(style, options) {
|
|||
|
const rules = [];
|
|||
|
styleDefinitions.forEach(definition => {
|
|||
|
rules.push(...definition.generate(style, options));
|
|||
|
});
|
|||
|
return rules;
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/use-global-styles-output.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function compileStyleValue(uncompiledValue) {
|
|||
|
const VARIABLE_REFERENCE_PREFIX = 'var:';
|
|||
|
const VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|';
|
|||
|
const VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--';
|
|||
|
|
|||
|
if ((0,external_lodash_namespaceObject.startsWith)(uncompiledValue, VARIABLE_REFERENCE_PREFIX)) {
|
|||
|
const variable = uncompiledValue.slice(VARIABLE_REFERENCE_PREFIX.length).split(VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE).join(VARIABLE_PATH_SEPARATOR_TOKEN_STYLE);
|
|||
|
return `var(--wp--${variable})`;
|
|||
|
}
|
|||
|
|
|||
|
return uncompiledValue;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Transform given preset tree into a set of style declarations.
|
|||
|
*
|
|||
|
* @param {Object} blockPresets
|
|||
|
*
|
|||
|
* @return {Array} An array of style declarations.
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function getPresetsDeclarations() {
|
|||
|
let blockPresets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|||
|
return (0,external_lodash_namespaceObject.reduce)(PRESET_METADATA, (declarations, _ref) => {
|
|||
|
let {
|
|||
|
path,
|
|||
|
valueKey,
|
|||
|
valueFunc,
|
|||
|
cssVarInfix
|
|||
|
} = _ref;
|
|||
|
const presetByOrigin = (0,external_lodash_namespaceObject.get)(blockPresets, path, []);
|
|||
|
['default', 'theme', 'custom'].forEach(origin => {
|
|||
|
if (presetByOrigin[origin]) {
|
|||
|
presetByOrigin[origin].forEach(value => {
|
|||
|
if (valueKey) {
|
|||
|
declarations.push(`--wp--preset--${cssVarInfix}--${(0,external_lodash_namespaceObject.kebabCase)(value.slug)}: ${value[valueKey]}`);
|
|||
|
} else if (valueFunc && typeof valueFunc === 'function') {
|
|||
|
declarations.push(`--wp--preset--${cssVarInfix}--${(0,external_lodash_namespaceObject.kebabCase)(value.slug)}: ${valueFunc(value)}`);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
return declarations;
|
|||
|
}, []);
|
|||
|
}
|
|||
|
/**
|
|||
|
* Transform given preset tree into a set of preset class declarations.
|
|||
|
*
|
|||
|
* @param {string} blockSelector
|
|||
|
* @param {Object} blockPresets
|
|||
|
* @return {string} CSS declarations for the preset classes.
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function getPresetsClasses(blockSelector) {
|
|||
|
let blockPresets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|||
|
return (0,external_lodash_namespaceObject.reduce)(PRESET_METADATA, (declarations, _ref2) => {
|
|||
|
let {
|
|||
|
path,
|
|||
|
cssVarInfix,
|
|||
|
classes
|
|||
|
} = _ref2;
|
|||
|
|
|||
|
if (!classes) {
|
|||
|
return declarations;
|
|||
|
}
|
|||
|
|
|||
|
const presetByOrigin = (0,external_lodash_namespaceObject.get)(blockPresets, path, []);
|
|||
|
['default', 'theme', 'custom'].forEach(origin => {
|
|||
|
if (presetByOrigin[origin]) {
|
|||
|
presetByOrigin[origin].forEach(_ref3 => {
|
|||
|
let {
|
|||
|
slug
|
|||
|
} = _ref3;
|
|||
|
classes.forEach(_ref4 => {
|
|||
|
let {
|
|||
|
classSuffix,
|
|||
|
propertyName
|
|||
|
} = _ref4;
|
|||
|
const classSelectorToUse = `.has-${(0,external_lodash_namespaceObject.kebabCase)(slug)}-${classSuffix}`;
|
|||
|
const selectorToUse = blockSelector.split(',') // Selector can be "h1, h2, h3"
|
|||
|
.map(selector => `${selector}${classSelectorToUse}`).join(',');
|
|||
|
const value = `var(--wp--preset--${cssVarInfix}--${(0,external_lodash_namespaceObject.kebabCase)(slug)})`;
|
|||
|
declarations += `${selectorToUse}{${propertyName}: ${value} !important;}`;
|
|||
|
});
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
return declarations;
|
|||
|
}, '');
|
|||
|
}
|
|||
|
|
|||
|
function getPresetsSvgFilters() {
|
|||
|
let blockPresets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|||
|
return PRESET_METADATA.filter( // Duotone are the only type of filters for now.
|
|||
|
metadata => metadata.path.at(-1) === 'duotone').flatMap(metadata => {
|
|||
|
const presetByOrigin = (0,external_lodash_namespaceObject.get)(blockPresets, metadata.path, {});
|
|||
|
return ['default', 'theme'].filter(origin => presetByOrigin[origin]).flatMap(origin => presetByOrigin[origin].map(preset => (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstablePresetDuotoneFilter, {
|
|||
|
preset: preset,
|
|||
|
key: preset.slug
|
|||
|
})));
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function flattenTree() {
|
|||
|
let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|||
|
let prefix = arguments.length > 1 ? arguments[1] : undefined;
|
|||
|
let token = arguments.length > 2 ? arguments[2] : undefined;
|
|||
|
let result = [];
|
|||
|
Object.keys(input).forEach(key => {
|
|||
|
const newKey = prefix + (0,external_lodash_namespaceObject.kebabCase)(key.replace('/', '-'));
|
|||
|
const newLeaf = input[key];
|
|||
|
|
|||
|
if (newLeaf instanceof Object) {
|
|||
|
const newPrefix = newKey + token;
|
|||
|
result = [...result, ...flattenTree(newLeaf, newPrefix, token)];
|
|||
|
} else {
|
|||
|
result.push(`${newKey}: ${newLeaf}`);
|
|||
|
}
|
|||
|
});
|
|||
|
return result;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Transform given style tree into a set of style declarations.
|
|||
|
*
|
|||
|
* @param {Object} blockStyles Block styles.
|
|||
|
*
|
|||
|
* @return {Array} An array of style declarations.
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function getStylesDeclarations() {
|
|||
|
let blockStyles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|||
|
const output = (0,external_lodash_namespaceObject.reduce)(external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY, (declarations, _ref5, key) => {
|
|||
|
let {
|
|||
|
value,
|
|||
|
properties,
|
|||
|
useEngine
|
|||
|
} = _ref5;
|
|||
|
const pathToValue = value;
|
|||
|
|
|||
|
if ((0,external_lodash_namespaceObject.first)(pathToValue) === 'elements' || useEngine) {
|
|||
|
return declarations;
|
|||
|
}
|
|||
|
|
|||
|
const styleValue = (0,external_lodash_namespaceObject.get)(blockStyles, pathToValue);
|
|||
|
|
|||
|
if (!!properties && !(0,external_lodash_namespaceObject.isString)(styleValue)) {
|
|||
|
Object.entries(properties).forEach(entry => {
|
|||
|
const [name, prop] = entry;
|
|||
|
|
|||
|
if (!(0,external_lodash_namespaceObject.get)(styleValue, [prop], false)) {
|
|||
|
// Do not create a declaration
|
|||
|
// for sub-properties that don't have any value.
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
const cssProperty = (0,external_lodash_namespaceObject.kebabCase)(name);
|
|||
|
declarations.push(`${cssProperty}: ${compileStyleValue((0,external_lodash_namespaceObject.get)(styleValue, [prop]))}`);
|
|||
|
});
|
|||
|
} else if ((0,external_lodash_namespaceObject.get)(blockStyles, pathToValue, false)) {
|
|||
|
const cssProperty = key.startsWith('--') ? key : (0,external_lodash_namespaceObject.kebabCase)(key);
|
|||
|
declarations.push(`${cssProperty}: ${compileStyleValue((0,external_lodash_namespaceObject.get)(blockStyles, pathToValue))}`);
|
|||
|
}
|
|||
|
|
|||
|
return declarations;
|
|||
|
}, []); // The goal is to move everything to server side generated engine styles
|
|||
|
// This is temporary as we absorb more and more styles into the engine.
|
|||
|
|
|||
|
const extraRules = getCSSRules(blockStyles, {
|
|||
|
selector: 'self'
|
|||
|
});
|
|||
|
extraRules.forEach(rule => {
|
|||
|
if (rule.selector !== 'self') {
|
|||
|
throw "This style can't be added as inline style";
|
|||
|
}
|
|||
|
|
|||
|
const cssProperty = rule.key.startsWith('--') ? rule.key : (0,external_lodash_namespaceObject.kebabCase)(rule.key);
|
|||
|
output.push(`${cssProperty}: ${compileStyleValue(rule.value)}`);
|
|||
|
});
|
|||
|
return output;
|
|||
|
}
|
|||
|
|
|||
|
const getNodesWithStyles = (tree, blockSelectors) => {
|
|||
|
var _tree$styles, _tree$styles2;
|
|||
|
|
|||
|
const nodes = [];
|
|||
|
|
|||
|
if (!(tree !== null && tree !== void 0 && tree.styles)) {
|
|||
|
return nodes;
|
|||
|
}
|
|||
|
|
|||
|
const pickStyleKeys = treeToPickFrom => (0,external_lodash_namespaceObject.pickBy)(treeToPickFrom, (value, key) => ['border', 'color', 'spacing', 'typography', 'filter'].includes(key)); // Top-level.
|
|||
|
|
|||
|
|
|||
|
const styles = pickStyleKeys(tree.styles);
|
|||
|
|
|||
|
if (!!styles) {
|
|||
|
nodes.push({
|
|||
|
styles,
|
|||
|
selector: ROOT_BLOCK_SELECTOR
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
(0,external_lodash_namespaceObject.forEach)((_tree$styles = tree.styles) === null || _tree$styles === void 0 ? void 0 : _tree$styles.elements, (value, key) => {
|
|||
|
if (!!value && !!external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[key]) {
|
|||
|
nodes.push({
|
|||
|
styles: value,
|
|||
|
selector: external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[key]
|
|||
|
});
|
|||
|
}
|
|||
|
}); // Iterate over blocks: they can have styles & elements.
|
|||
|
|
|||
|
(0,external_lodash_namespaceObject.forEach)((_tree$styles2 = tree.styles) === null || _tree$styles2 === void 0 ? void 0 : _tree$styles2.blocks, (node, blockName) => {
|
|||
|
var _blockSelectors$block;
|
|||
|
|
|||
|
const blockStyles = pickStyleKeys(node);
|
|||
|
|
|||
|
if (!!blockStyles && !!(blockSelectors !== null && blockSelectors !== void 0 && (_blockSelectors$block = blockSelectors[blockName]) !== null && _blockSelectors$block !== void 0 && _blockSelectors$block.selector)) {
|
|||
|
nodes.push({
|
|||
|
styles: blockStyles,
|
|||
|
selector: blockSelectors[blockName].selector,
|
|||
|
duotoneSelector: blockSelectors[blockName].duotoneSelector
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
(0,external_lodash_namespaceObject.forEach)(node === null || node === void 0 ? void 0 : node.elements, (value, elementName) => {
|
|||
|
if (!!value && !!(blockSelectors !== null && blockSelectors !== void 0 && blockSelectors[blockName]) && !!(external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS !== null && external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS !== void 0 && external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[elementName])) {
|
|||
|
nodes.push({
|
|||
|
styles: value,
|
|||
|
selector: blockSelectors[blockName].selector.split(',').map(sel => sel + ' ' + external_wp_blocks_namespaceObject.__EXPERIMENTAL_ELEMENTS[elementName]).join(',')
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
return nodes;
|
|||
|
};
|
|||
|
const getNodesWithSettings = (tree, blockSelectors) => {
|
|||
|
var _tree$settings, _tree$settings2;
|
|||
|
|
|||
|
const nodes = [];
|
|||
|
|
|||
|
if (!(tree !== null && tree !== void 0 && tree.settings)) {
|
|||
|
return nodes;
|
|||
|
}
|
|||
|
|
|||
|
const pickPresets = treeToPickFrom => {
|
|||
|
const presets = {};
|
|||
|
PRESET_METADATA.forEach(_ref6 => {
|
|||
|
let {
|
|||
|
path
|
|||
|
} = _ref6;
|
|||
|
const value = (0,external_lodash_namespaceObject.get)(treeToPickFrom, path, false);
|
|||
|
|
|||
|
if (value !== false) {
|
|||
|
(0,external_lodash_namespaceObject.set)(presets, path, value);
|
|||
|
}
|
|||
|
});
|
|||
|
return presets;
|
|||
|
}; // Top-level.
|
|||
|
|
|||
|
|
|||
|
const presets = pickPresets(tree.settings);
|
|||
|
const custom = (_tree$settings = tree.settings) === null || _tree$settings === void 0 ? void 0 : _tree$settings.custom;
|
|||
|
|
|||
|
if (!(0,external_lodash_namespaceObject.isEmpty)(presets) || !!custom) {
|
|||
|
nodes.push({
|
|||
|
presets,
|
|||
|
custom,
|
|||
|
selector: ROOT_BLOCK_SELECTOR
|
|||
|
});
|
|||
|
} // Blocks.
|
|||
|
|
|||
|
|
|||
|
(0,external_lodash_namespaceObject.forEach)((_tree$settings2 = tree.settings) === null || _tree$settings2 === void 0 ? void 0 : _tree$settings2.blocks, (node, blockName) => {
|
|||
|
const blockPresets = pickPresets(node);
|
|||
|
const blockCustom = node.custom;
|
|||
|
|
|||
|
if (!(0,external_lodash_namespaceObject.isEmpty)(blockPresets) || !!blockCustom) {
|
|||
|
nodes.push({
|
|||
|
presets: blockPresets,
|
|||
|
custom: blockCustom,
|
|||
|
selector: blockSelectors[blockName].selector
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
return nodes;
|
|||
|
};
|
|||
|
const toCustomProperties = (tree, blockSelectors) => {
|
|||
|
const settings = getNodesWithSettings(tree, blockSelectors);
|
|||
|
let ruleset = '';
|
|||
|
settings.forEach(_ref7 => {
|
|||
|
let {
|
|||
|
presets,
|
|||
|
custom,
|
|||
|
selector
|
|||
|
} = _ref7;
|
|||
|
const declarations = getPresetsDeclarations(presets);
|
|||
|
const customProps = flattenTree(custom, '--wp--custom--', '--');
|
|||
|
|
|||
|
if (customProps.length > 0) {
|
|||
|
declarations.push(...customProps);
|
|||
|
}
|
|||
|
|
|||
|
if (declarations.length > 0) {
|
|||
|
ruleset = ruleset + `${selector}{${declarations.join(';')};}`;
|
|||
|
}
|
|||
|
});
|
|||
|
return ruleset;
|
|||
|
};
|
|||
|
const toStyles = (tree, blockSelectors) => {
|
|||
|
const nodesWithStyles = getNodesWithStyles(tree, blockSelectors);
|
|||
|
const nodesWithSettings = getNodesWithSettings(tree, blockSelectors);
|
|||
|
/*
|
|||
|
* Reset default browser margin on the root body element.
|
|||
|
* This is set on the root selector **before** generating the ruleset
|
|||
|
* from the `theme.json`. This is to ensure that if the `theme.json` declares
|
|||
|
* `margin` in its `spacing` declaration for the `body` element then these
|
|||
|
* user-generated values take precedence in the CSS cascade.
|
|||
|
* @link https://github.com/WordPress/gutenberg/issues/36147.
|
|||
|
*/
|
|||
|
|
|||
|
let ruleset = 'body {margin: 0;}';
|
|||
|
nodesWithStyles.forEach(_ref8 => {
|
|||
|
let {
|
|||
|
selector,
|
|||
|
duotoneSelector,
|
|||
|
styles
|
|||
|
} = _ref8;
|
|||
|
const duotoneStyles = {};
|
|||
|
|
|||
|
if (styles !== null && styles !== void 0 && styles.filter) {
|
|||
|
duotoneStyles.filter = styles.filter;
|
|||
|
delete styles.filter;
|
|||
|
} // Process duotone styles (they use color.__experimentalDuotone selector).
|
|||
|
|
|||
|
|
|||
|
if (duotoneSelector) {
|
|||
|
const duotoneDeclarations = getStylesDeclarations(duotoneStyles);
|
|||
|
|
|||
|
if (duotoneDeclarations.length === 0) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
ruleset = ruleset + `${duotoneSelector}{${duotoneDeclarations.join(';')};}`;
|
|||
|
} // Process the remaning block styles (they use either normal block class or __experimentalSelector).
|
|||
|
|
|||
|
|
|||
|
const declarations = getStylesDeclarations(styles);
|
|||
|
|
|||
|
if (declarations.length === 0) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
ruleset = ruleset + `${selector}{${declarations.join(';')};}`;
|
|||
|
});
|
|||
|
nodesWithSettings.forEach(_ref9 => {
|
|||
|
let {
|
|||
|
selector,
|
|||
|
presets
|
|||
|
} = _ref9;
|
|||
|
|
|||
|
if (ROOT_BLOCK_SELECTOR === selector) {
|
|||
|
// Do not add extra specificity for top-level classes.
|
|||
|
selector = '';
|
|||
|
}
|
|||
|
|
|||
|
const classes = getPresetsClasses(selector, presets);
|
|||
|
|
|||
|
if (!(0,external_lodash_namespaceObject.isEmpty)(classes)) {
|
|||
|
ruleset = ruleset + classes;
|
|||
|
}
|
|||
|
});
|
|||
|
return ruleset;
|
|||
|
};
|
|||
|
function toSvgFilters(tree, blockSelectors) {
|
|||
|
const nodesWithSettings = getNodesWithSettings(tree, blockSelectors);
|
|||
|
return nodesWithSettings.flatMap(_ref10 => {
|
|||
|
let {
|
|||
|
presets
|
|||
|
} = _ref10;
|
|||
|
return getPresetsSvgFilters(presets);
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
const getBlockSelectors = blockTypes => {
|
|||
|
const result = {};
|
|||
|
blockTypes.forEach(blockType => {
|
|||
|
var _blockType$supports$_, _blockType$supports, _blockType$supports$c, _blockType$supports2, _blockType$supports2$;
|
|||
|
|
|||
|
const name = blockType.name;
|
|||
|
const selector = (_blockType$supports$_ = blockType === null || blockType === void 0 ? void 0 : (_blockType$supports = blockType.supports) === null || _blockType$supports === void 0 ? void 0 : _blockType$supports.__experimentalSelector) !== null && _blockType$supports$_ !== void 0 ? _blockType$supports$_ : '.wp-block-' + name.replace('core/', '').replace('/', '-');
|
|||
|
const duotoneSelector = (_blockType$supports$c = blockType === null || blockType === void 0 ? void 0 : (_blockType$supports2 = blockType.supports) === null || _blockType$supports2 === void 0 ? void 0 : (_blockType$supports2$ = _blockType$supports2.color) === null || _blockType$supports2$ === void 0 ? void 0 : _blockType$supports2$.__experimentalDuotone) !== null && _blockType$supports$c !== void 0 ? _blockType$supports$c : null;
|
|||
|
result[name] = {
|
|||
|
name,
|
|||
|
selector,
|
|||
|
duotoneSelector
|
|||
|
};
|
|||
|
});
|
|||
|
return result;
|
|||
|
};
|
|||
|
|
|||
|
function useGlobalStylesOutput() {
|
|||
|
const [stylesheets, setStylesheets] = (0,external_wp_element_namespaceObject.useState)([]);
|
|||
|
const [settings, setSettings] = (0,external_wp_element_namespaceObject.useState)({});
|
|||
|
const [svgFilters, setSvgFilters] = (0,external_wp_element_namespaceObject.useState)({});
|
|||
|
const {
|
|||
|
merged: mergedConfig
|
|||
|
} = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
if (!(mergedConfig !== null && mergedConfig !== void 0 && mergedConfig.styles) || !(mergedConfig !== null && mergedConfig !== void 0 && mergedConfig.settings)) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
const blockSelectors = getBlockSelectors((0,external_wp_blocks_namespaceObject.getBlockTypes)());
|
|||
|
const customProperties = toCustomProperties(mergedConfig, blockSelectors);
|
|||
|
const globalStyles = toStyles(mergedConfig, blockSelectors);
|
|||
|
const filters = toSvgFilters(mergedConfig, blockSelectors);
|
|||
|
setStylesheets([{
|
|||
|
css: customProperties,
|
|||
|
isGlobalStyles: true
|
|||
|
}, {
|
|||
|
css: globalStyles,
|
|||
|
isGlobalStyles: true
|
|||
|
}]);
|
|||
|
setSettings(mergedConfig.settings);
|
|||
|
setSvgFilters(filters);
|
|||
|
}, [mergedConfig]);
|
|||
|
return [stylesheets, settings, svgFilters];
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const firstFrame = {
|
|||
|
start: {
|
|||
|
opacity: 1,
|
|||
|
display: 'block'
|
|||
|
},
|
|||
|
hover: {
|
|||
|
opacity: 0,
|
|||
|
display: 'none'
|
|||
|
}
|
|||
|
};
|
|||
|
const secondFrame = {
|
|||
|
hover: {
|
|||
|
opacity: 1,
|
|||
|
display: 'block'
|
|||
|
},
|
|||
|
start: {
|
|||
|
opacity: 0,
|
|||
|
display: 'none'
|
|||
|
}
|
|||
|
};
|
|||
|
const normalizedWidth = 248;
|
|||
|
const normalizedHeight = 152;
|
|||
|
const normalizedColorSwatchSize = 32;
|
|||
|
|
|||
|
const StylesPreview = _ref => {
|
|||
|
let {
|
|||
|
label,
|
|||
|
isFocused
|
|||
|
} = _ref;
|
|||
|
const [fontWeight] = useStyle('typography.fontWeight');
|
|||
|
const [fontFamily = 'serif'] = useStyle('typography.fontFamily');
|
|||
|
const [headingFontFamily = fontFamily] = useStyle('elements.h1.typography.fontFamily');
|
|||
|
const [headingFontWeight = fontWeight] = useStyle('elements.h1.typography.fontWeight');
|
|||
|
const [textColor = 'black'] = useStyle('color.text');
|
|||
|
const [headingColor = textColor] = useStyle('elements.h1.color.text');
|
|||
|
const [linkColor = 'blue'] = useStyle('elements.link.color.text');
|
|||
|
const [backgroundColor = 'white'] = useStyle('color.background');
|
|||
|
const [gradientValue] = useStyle('color.gradient');
|
|||
|
const [styles] = useGlobalStylesOutput();
|
|||
|
const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
|
|||
|
const [coreColors] = useSetting('color.palette.core');
|
|||
|
const [themeColors] = useSetting('color.palette.theme');
|
|||
|
const [customColors] = useSetting('color.palette.custom');
|
|||
|
const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false);
|
|||
|
const [containerResizeListener, {
|
|||
|
width
|
|||
|
}] = (0,external_wp_compose_namespaceObject.useResizeObserver)();
|
|||
|
const ratio = width ? width / normalizedWidth : 1;
|
|||
|
const paletteColors = (themeColors !== null && themeColors !== void 0 ? themeColors : []).concat(customColors !== null && customColors !== void 0 ? customColors : []).concat(coreColors !== null && coreColors !== void 0 ? coreColors : []);
|
|||
|
const highlightedColors = paletteColors.filter( // we exclude these two colors because they are already visible in the preview.
|
|||
|
_ref2 => {
|
|||
|
let {
|
|||
|
color
|
|||
|
} = _ref2;
|
|||
|
return color !== backgroundColor && color !== headingColor;
|
|||
|
}).slice(0, 2); // Reset leaked styles from WP common.css.
|
|||
|
|
|||
|
const editorStyles = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
if (styles) {
|
|||
|
return [...styles, {
|
|||
|
css: 'body{min-width: 0;}',
|
|||
|
isGlobalStyles: true
|
|||
|
}];
|
|||
|
}
|
|||
|
|
|||
|
return styles;
|
|||
|
}, [styles]);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableIframe, {
|
|||
|
className: "edit-site-global-styles-preview__iframe",
|
|||
|
head: (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, {
|
|||
|
styles: editorStyles
|
|||
|
}),
|
|||
|
style: {
|
|||
|
height: normalizedHeight * ratio,
|
|||
|
visibility: !width ? 'hidden' : 'visible'
|
|||
|
},
|
|||
|
onMouseEnter: () => setIsHovered(true),
|
|||
|
onMouseLeave: () => setIsHovered(false),
|
|||
|
tabIndex: -1
|
|||
|
}, containerResizeListener, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, {
|
|||
|
style: {
|
|||
|
height: normalizedHeight * ratio,
|
|||
|
width: '100%',
|
|||
|
background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor,
|
|||
|
cursor: 'pointer'
|
|||
|
},
|
|||
|
initial: "start",
|
|||
|
animate: (isHovered || isFocused) && !disableMotion ? 'hover' : 'start'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, {
|
|||
|
variants: firstFrame,
|
|||
|
style: {
|
|||
|
height: '100%',
|
|||
|
overflow: 'hidden'
|
|||
|
}
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
spacing: 10 * ratio,
|
|||
|
justify: "center",
|
|||
|
style: {
|
|||
|
height: '100%',
|
|||
|
overflow: 'hidden'
|
|||
|
}
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
style: {
|
|||
|
fontFamily: headingFontFamily,
|
|||
|
fontSize: 65 * ratio,
|
|||
|
color: headingColor,
|
|||
|
fontWeight: headingFontWeight
|
|||
|
}
|
|||
|
}, "Aa"), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
|
|||
|
spacing: 4 * ratio
|
|||
|
}, highlightedColors.map(_ref3 => {
|
|||
|
let {
|
|||
|
slug,
|
|||
|
color
|
|||
|
} = _ref3;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
key: slug,
|
|||
|
style: {
|
|||
|
height: normalizedColorSwatchSize * ratio,
|
|||
|
width: normalizedColorSwatchSize * ratio,
|
|||
|
background: color,
|
|||
|
borderRadius: normalizedColorSwatchSize * ratio / 2
|
|||
|
}
|
|||
|
});
|
|||
|
})))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, {
|
|||
|
variants: secondFrame,
|
|||
|
style: {
|
|||
|
height: '100%',
|
|||
|
overflow: 'hidden'
|
|||
|
}
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
|
|||
|
spacing: 3 * ratio,
|
|||
|
justify: "center",
|
|||
|
style: {
|
|||
|
height: '100%',
|
|||
|
overflow: 'hidden',
|
|||
|
padding: 10 * ratio,
|
|||
|
boxSizing: 'border-box'
|
|||
|
}
|
|||
|
}, label && (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
style: {
|
|||
|
fontSize: 35 * ratio,
|
|||
|
fontFamily: headingFontFamily,
|
|||
|
color: headingColor,
|
|||
|
fontWeight: headingFontWeight,
|
|||
|
lineHeight: '1em'
|
|||
|
}
|
|||
|
}, label), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
spacing: 2 * ratio,
|
|||
|
justify: "flex-start"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
style: {
|
|||
|
fontFamily,
|
|||
|
fontSize: 24 * ratio,
|
|||
|
color: textColor
|
|||
|
}
|
|||
|
}, "Aa"), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
style: {
|
|||
|
fontFamily,
|
|||
|
fontSize: 24 * ratio,
|
|||
|
color: linkColor
|
|||
|
}
|
|||
|
}, "Aa")), paletteColors && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
spacing: 0
|
|||
|
}, paletteColors.slice(0, 4).map((_ref4, index) => {
|
|||
|
let {
|
|||
|
color
|
|||
|
} = _ref4;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
key: index,
|
|||
|
style: {
|
|||
|
height: 10 * ratio,
|
|||
|
width: 30 * ratio,
|
|||
|
background: color,
|
|||
|
flexGrow: 1
|
|||
|
}
|
|||
|
});
|
|||
|
}))))));
|
|||
|
};
|
|||
|
|
|||
|
/* harmony default export */ var preview = (StylesPreview);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-root.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ScreenRoot() {
|
|||
|
const {
|
|||
|
variations
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
return {
|
|||
|
variations: select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations()
|
|||
|
};
|
|||
|
}, []);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, {
|
|||
|
size: "small"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
|
|||
|
spacing: 2
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardMedia, null, (0,external_wp_element_namespaceObject.createElement)(preview, null))), !!(variations !== null && variations !== void 0 && variations.length) && (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
path: "/variations"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
justify: "space-between"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Browse styles')), (0,external_wp_element_namespaceObject.createElement)(IconWithCurrentColor, {
|
|||
|
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
|
|||
|
}))))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(context_menu, null)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardDivider, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItem, null, (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of specific blocks for the whole site.')), (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
path: "/blocks"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
justify: "space-between"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Blocks')), (0,external_wp_element_namespaceObject.createElement)(IconWithCurrentColor, {
|
|||
|
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
|
|||
|
}))))));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_root = (ScreenRoot);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/header.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ScreenHeader(_ref) {
|
|||
|
let {
|
|||
|
title,
|
|||
|
description
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
|
|||
|
spacing: 2
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
spacing: 2
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalView, null, (0,external_wp_element_namespaceObject.createElement)(NavigationBackButton, {
|
|||
|
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left,
|
|||
|
size: "small",
|
|||
|
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous view')
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalSpacer, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
|
|||
|
level: 5
|
|||
|
}, title))), description && (0,external_wp_element_namespaceObject.createElement)("p", {
|
|||
|
className: "edit-site-global-styles-header__description"
|
|||
|
}, description));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var header = (ScreenHeader);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-block-list.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function useSortedBlockTypes() {
|
|||
|
const blockItems = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blocks_namespaceObject.store).getBlockTypes(), []); // Ensure core blocks are prioritized in the returned results,
|
|||
|
// because third party blocks can be registered earlier than
|
|||
|
// the core blocks (usually by using the `init` action),
|
|||
|
// thus affecting the display order.
|
|||
|
// We don't sort reusable blocks as they are handled differently.
|
|||
|
|
|||
|
const groupByType = (blocks, block) => {
|
|||
|
const {
|
|||
|
core,
|
|||
|
noncore
|
|||
|
} = blocks;
|
|||
|
const type = block.name.startsWith('core/') ? core : noncore;
|
|||
|
type.push(block);
|
|||
|
return blocks;
|
|||
|
};
|
|||
|
|
|||
|
const {
|
|||
|
core: coreItems,
|
|||
|
noncore: nonCoreItems
|
|||
|
} = blockItems.reduce(groupByType, {
|
|||
|
core: [],
|
|||
|
noncore: []
|
|||
|
});
|
|||
|
return [...coreItems, ...nonCoreItems];
|
|||
|
}
|
|||
|
|
|||
|
function BlockMenuItem(_ref) {
|
|||
|
let {
|
|||
|
block
|
|||
|
} = _ref;
|
|||
|
const hasTypographyPanel = useHasTypographyPanel(block.name);
|
|||
|
const hasColorPanel = useHasColorPanel(block.name);
|
|||
|
const hasBorderPanel = useHasBorderPanel(block.name);
|
|||
|
const hasDimensionsPanel = useHasDimensionsPanel(block.name);
|
|||
|
const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
|
|||
|
const hasBlockMenuItem = hasTypographyPanel || hasColorPanel || hasLayoutPanel;
|
|||
|
|
|||
|
if (!hasBlockMenuItem) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
path: '/blocks/' + block.name
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
justify: "flex-start"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockIcon, {
|
|||
|
icon: block.icon
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, block.title)));
|
|||
|
}
|
|||
|
|
|||
|
function ScreenBlockList() {
|
|||
|
const sortedBlockTypes = useSortedBlockTypes();
|
|||
|
const [filterValue, setFilterValue] = (0,external_wp_element_namespaceObject.useState)('');
|
|||
|
const debouncedSpeak = (0,external_wp_compose_namespaceObject.useDebounce)(external_wp_a11y_namespaceObject.speak, 500);
|
|||
|
const isMatchingSearchTerm = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blocks_namespaceObject.store).isMatchingSearchTerm, []);
|
|||
|
const filteredBlockTypes = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
if (!filterValue) {
|
|||
|
return sortedBlockTypes;
|
|||
|
}
|
|||
|
|
|||
|
return sortedBlockTypes.filter(blockType => isMatchingSearchTerm(blockType, filterValue));
|
|||
|
}, [filterValue, sortedBlockTypes, isMatchingSearchTerm]);
|
|||
|
const blockTypesListRef = (0,external_wp_element_namespaceObject.useRef)(); // Announce search results on change
|
|||
|
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
if (!filterValue) {
|
|||
|
return;
|
|||
|
} // We extract the results from the wrapper div's `ref` because
|
|||
|
// filtered items can contain items that will eventually not
|
|||
|
// render and there is no reliable way to detect when a child
|
|||
|
// will return `null`.
|
|||
|
// TODO: We should find a better way of handling this as it's
|
|||
|
// fragile and depends on the number of rendered elements of `BlockMenuItem`,
|
|||
|
// which is now one.
|
|||
|
// @see https://github.com/WordPress/gutenberg/pull/39117#discussion_r816022116
|
|||
|
|
|||
|
|
|||
|
const count = blockTypesListRef.current.childElementCount;
|
|||
|
const resultsFoundMessage = (0,external_wp_i18n_namespaceObject.sprintf)(
|
|||
|
/* translators: %d: number of results. */
|
|||
|
(0,external_wp_i18n_namespaceObject._n)('%d result found.', '%d results found.', count), count);
|
|||
|
debouncedSpeak(resultsFoundMessage, count);
|
|||
|
}, [filterValue, debouncedSpeak]);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Blocks'),
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of specific blocks and for the whole site.')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SearchControl, {
|
|||
|
className: "edit-site-block-types-search",
|
|||
|
onChange: setFilterValue,
|
|||
|
value: filterValue,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Search for blocks'),
|
|||
|
placeholder: (0,external_wp_i18n_namespaceObject.__)('Search')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
ref: blockTypesListRef,
|
|||
|
className: "edit-site-block-types-item-list"
|
|||
|
}, filteredBlockTypes.map(block => (0,external_wp_element_namespaceObject.createElement)(BlockMenuItem, {
|
|||
|
block: block,
|
|||
|
key: 'menu-itemblock-' + block.name
|
|||
|
}))));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_block_list = (ScreenBlockList);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-block.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ScreenBlock(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(name);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
title: blockType.title
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(context_menu, {
|
|||
|
parentMenu: '/blocks/' + name,
|
|||
|
name: name
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_block = (ScreenBlock);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/subtitle.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function Subtitle(_ref) {
|
|||
|
let {
|
|||
|
children
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
|
|||
|
className: "edit-site-global-styles-subtitle",
|
|||
|
level: 2
|
|||
|
}, children);
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var subtitle = (Subtitle);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function Item(_ref) {
|
|||
|
let {
|
|||
|
name,
|
|||
|
parentMenu,
|
|||
|
element,
|
|||
|
label
|
|||
|
} = _ref;
|
|||
|
const hasSupport = !name;
|
|||
|
const prefix = element === 'text' || !element ? '' : `elements.${element}.`;
|
|||
|
const extraStyles = element === 'link' ? {
|
|||
|
textDecoration: 'underline'
|
|||
|
} : {};
|
|||
|
const [fontFamily] = useStyle(prefix + 'typography.fontFamily', name);
|
|||
|
const [fontStyle] = useStyle(prefix + 'typography.fontStyle', name);
|
|||
|
const [fontWeight] = useStyle(prefix + 'typography.fontWeight', name);
|
|||
|
const [letterSpacing] = useStyle(prefix + 'typography.letterSpacing', name);
|
|||
|
const [backgroundColor] = useStyle(prefix + 'color.background', name);
|
|||
|
const [gradientValue] = useStyle(prefix + 'color.gradient', name);
|
|||
|
const [color] = useStyle(prefix + 'color.text', name);
|
|||
|
|
|||
|
if (!hasSupport) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
path: parentMenu + '/typography/' + element
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
justify: "flex-start"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, {
|
|||
|
className: "edit-site-global-styles-screen-typography__indicator",
|
|||
|
style: {
|
|||
|
fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif',
|
|||
|
background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor,
|
|||
|
color,
|
|||
|
fontStyle,
|
|||
|
fontWeight,
|
|||
|
letterSpacing,
|
|||
|
...extraStyles
|
|||
|
}
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Aa')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, label)));
|
|||
|
}
|
|||
|
|
|||
|
function ScreenTypography(_ref2) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref2;
|
|||
|
const parentMenu = name === undefined ? '' : '/blocks/' + name;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Typography'),
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Manage the typography settings for different elements.')
|
|||
|
}), !name && (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-global-styles-screen-typography"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
|
|||
|
spacing: 3
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(subtitle, null, (0,external_wp_i18n_namespaceObject.__)('Elements')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, {
|
|||
|
isBordered: true,
|
|||
|
isSeparated: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(Item, {
|
|||
|
name: name,
|
|||
|
parentMenu: parentMenu,
|
|||
|
element: "text",
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Text')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(Item, {
|
|||
|
name: name,
|
|||
|
parentMenu: parentMenu,
|
|||
|
element: "link",
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Links')
|
|||
|
})))), !!name && (0,external_wp_element_namespaceObject.createElement)(TypographyPanel, {
|
|||
|
name: name,
|
|||
|
element: "text"
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_typography = (ScreenTypography);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography-element.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const screen_typography_element_elements = {
|
|||
|
text: {
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts used on the site.'),
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Text')
|
|||
|
},
|
|||
|
link: {
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on the links.'),
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Links')
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
function ScreenTypographyElement(_ref) {
|
|||
|
let {
|
|||
|
name,
|
|||
|
element
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
title: screen_typography_element_elements[element].title,
|
|||
|
description: screen_typography_element_elements[element].description
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(TypographyPanel, {
|
|||
|
name: name,
|
|||
|
element: element
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_typography_element = (ScreenTypographyElement);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-indicator-wrapper.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ColorIndicatorWrapper(_ref) {
|
|||
|
let {
|
|||
|
className,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, extends_extends({
|
|||
|
className: classnames_default()('edit-site-global-styles__color-indicator-wrapper', className)
|
|||
|
}, props));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var color_indicator_wrapper = (ColorIndicatorWrapper);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/palette.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const EMPTY_COLORS = [];
|
|||
|
|
|||
|
function Palette(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const [customColors] = useSetting('color.palette.custom');
|
|||
|
const [themeColors] = useSetting('color.palette.theme');
|
|||
|
const [defaultColors] = useSetting('color.palette.default');
|
|||
|
const [defaultPaletteEnabled] = useSetting('color.defaultPalette', name);
|
|||
|
const colors = (0,external_wp_element_namespaceObject.useMemo)(() => [...(customColors || EMPTY_COLORS), ...(themeColors || EMPTY_COLORS), ...(defaultColors && defaultPaletteEnabled ? defaultColors : EMPTY_COLORS)], [customColors, themeColors, defaultColors, defaultPaletteEnabled]);
|
|||
|
const screenPath = !name ? '/colors/palette' : '/blocks/' + name + '/colors/palette';
|
|||
|
const paletteButtonText = colors.length > 0 ? (0,external_wp_i18n_namespaceObject.sprintf)( // Translators: %d: Number of palette colors.
|
|||
|
(0,external_wp_i18n_namespaceObject._n)('%d color', '%d colors', colors.length), colors.length) : (0,external_wp_i18n_namespaceObject.__)('Add custom colors');
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
|
|||
|
spacing: 3
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(subtitle, null, (0,external_wp_i18n_namespaceObject.__)('Palette')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, {
|
|||
|
isBordered: true,
|
|||
|
isSeparated: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
path: screenPath
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
direction: colors.length === 0 ? 'row-reverse' : 'row'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalZStack, {
|
|||
|
isLayered: false,
|
|||
|
offset: -8
|
|||
|
}, colors.slice(0, 5).map(_ref2 => {
|
|||
|
let {
|
|||
|
color
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, {
|
|||
|
key: color
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, {
|
|||
|
colorValue: color
|
|||
|
}));
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, paletteButtonText)))));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var palette = (Palette);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-colors.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function BackgroundColorItem(_ref) {
|
|||
|
let {
|
|||
|
name,
|
|||
|
parentMenu
|
|||
|
} = _ref;
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const hasSupport = supports.includes('backgroundColor') || supports.includes('background');
|
|||
|
const [backgroundColor] = useStyle('color.background', name);
|
|||
|
const [gradientValue] = useStyle('color.gradient', name);
|
|||
|
|
|||
|
if (!hasSupport) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
path: parentMenu + '/colors/background'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
justify: "flex-start"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, {
|
|||
|
expanded: false
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, {
|
|||
|
colorValue: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Background'))));
|
|||
|
}
|
|||
|
|
|||
|
function TextColorItem(_ref2) {
|
|||
|
let {
|
|||
|
name,
|
|||
|
parentMenu
|
|||
|
} = _ref2;
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const hasSupport = supports.includes('color');
|
|||
|
const [color] = useStyle('color.text', name);
|
|||
|
|
|||
|
if (!hasSupport) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
path: parentMenu + '/colors/text'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
justify: "flex-start"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, {
|
|||
|
expanded: false
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, {
|
|||
|
colorValue: color
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Text'))));
|
|||
|
}
|
|||
|
|
|||
|
function LinkColorItem(_ref3) {
|
|||
|
let {
|
|||
|
name,
|
|||
|
parentMenu
|
|||
|
} = _ref3;
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const hasSupport = supports.includes('linkColor');
|
|||
|
const [color] = useStyle('elements.link.color.text', name);
|
|||
|
|
|||
|
if (!hasSupport) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(NavigationButton, {
|
|||
|
path: parentMenu + '/colors/link'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
justify: "flex-start"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(color_indicator_wrapper, {
|
|||
|
expanded: false
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ColorIndicator, {
|
|||
|
colorValue: color
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_i18n_namespaceObject.__)('Links'))));
|
|||
|
}
|
|||
|
|
|||
|
function ScreenColors(_ref4) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref4;
|
|||
|
const parentMenu = name === undefined ? '' : '/blocks/' + name;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Colors'),
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Manage palettes and the default color of different global elements on the site.')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-global-styles-screen-colors"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
|
|||
|
spacing: 10
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(palette, {
|
|||
|
name: name
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
|
|||
|
spacing: 3
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(subtitle, null, (0,external_wp_i18n_namespaceObject.__)('Elements')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalItemGroup, {
|
|||
|
isBordered: true,
|
|||
|
isSeparated: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(BackgroundColorItem, {
|
|||
|
name: name,
|
|||
|
parentMenu: parentMenu
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(TextColorItem, {
|
|||
|
name: name,
|
|||
|
parentMenu: parentMenu
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(LinkColorItem, {
|
|||
|
name: name,
|
|||
|
parentMenu: parentMenu
|
|||
|
}))))));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_colors = (ScreenColors);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-palette-panel.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function ColorPalettePanel(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const [themeColors, setThemeColors] = useSetting('color.palette.theme', name);
|
|||
|
const [baseThemeColors] = useSetting('color.palette.theme', name, 'base');
|
|||
|
const [defaultColors, setDefaultColors] = useSetting('color.palette.default', name);
|
|||
|
const [baseDefaultColors] = useSetting('color.palette.default', name, 'base');
|
|||
|
const [customColors, setCustomColors] = useSetting('color.palette.custom', name);
|
|||
|
const [defaultPaletteEnabled] = useSetting('color.defaultPalette', name);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
|
|||
|
className: "edit-site-global-styles-color-palette-panel",
|
|||
|
spacing: 10
|
|||
|
}, !!themeColors && !!themeColors.length && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
|
|||
|
canReset: themeColors !== baseThemeColors,
|
|||
|
canOnlyChangeValues: true,
|
|||
|
colors: themeColors,
|
|||
|
onChange: setThemeColors,
|
|||
|
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme')
|
|||
|
}), !!defaultColors && !!defaultColors.length && !!defaultPaletteEnabled && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
|
|||
|
canReset: defaultColors !== baseDefaultColors,
|
|||
|
canOnlyChangeValues: true,
|
|||
|
colors: defaultColors,
|
|||
|
onChange: setDefaultColors,
|
|||
|
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
|
|||
|
colors: customColors,
|
|||
|
onChange: setCustomColors,
|
|||
|
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'),
|
|||
|
emptyMessage: (0,external_wp_i18n_namespaceObject.__)('Custom colors are empty! Add some colors to create your own color palette.'),
|
|||
|
slugPrefix: "custom-"
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/gradients-palette-panel.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function GradientPalettePanel(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const [themeGradients, setThemeGradients] = useSetting('color.gradients.theme', name);
|
|||
|
const [baseThemeGradients] = useSetting('color.gradients.theme', name, 'base');
|
|||
|
const [defaultGradients, setDefaultGradients] = useSetting('color.gradients.default', name);
|
|||
|
const [baseDefaultGradients] = useSetting('color.gradients.default', name, 'base');
|
|||
|
const [customGradients, setCustomGradients] = useSetting('color.gradients.custom', name);
|
|||
|
const [defaultPaletteEnabled] = useSetting('color.defaultGradients', name);
|
|||
|
const [duotonePalette] = useSetting('color.duotone') || [];
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalVStack, {
|
|||
|
className: "edit-site-global-styles-gradient-palette-panel",
|
|||
|
spacing: 10
|
|||
|
}, !!themeGradients && !!themeGradients.length && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
|
|||
|
canReset: themeGradients !== baseThemeGradients,
|
|||
|
canOnlyChangeValues: true,
|
|||
|
gradients: themeGradients,
|
|||
|
onChange: setThemeGradients,
|
|||
|
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme')
|
|||
|
}), !!defaultGradients && !!defaultGradients.length && !!defaultPaletteEnabled && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
|
|||
|
canReset: defaultGradients !== baseDefaultGradients,
|
|||
|
canOnlyChangeValues: true,
|
|||
|
gradients: defaultGradients,
|
|||
|
onChange: setDefaultGradients,
|
|||
|
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
|
|||
|
gradients: customGradients,
|
|||
|
onChange: setCustomGradients,
|
|||
|
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'),
|
|||
|
emptyMessage: (0,external_wp_i18n_namespaceObject.__)('Custom gradients are empty! Add some gradients to create your own palette.'),
|
|||
|
slugPrefix: "custom-"
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)("div", null, (0,external_wp_element_namespaceObject.createElement)(subtitle, null, (0,external_wp_i18n_namespaceObject.__)('Duotone')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalSpacer, {
|
|||
|
margin: 3
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DuotonePicker, {
|
|||
|
duotonePalette: duotonePalette,
|
|||
|
disableCustomDuotone: true,
|
|||
|
disableCustomColors: true,
|
|||
|
clearable: false,
|
|||
|
onChange: external_lodash_namespaceObject.noop
|
|||
|
})));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-color-palette.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ScreenColorPalette(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const [currentTab, setCurrentTab] = (0,external_wp_element_namespaceObject.useState)('solid');
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Palette'),
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Palettes are used to provide default color options for blocks and various design tools. Here you can edit the colors with their labels.')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, {
|
|||
|
className: "edit-site-screen-color-palette-toggle",
|
|||
|
value: currentTab,
|
|||
|
onChange: setCurrentTab,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Select palette type'),
|
|||
|
hideLabelFromVision: true,
|
|||
|
isBlock: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
|
|||
|
value: "solid",
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Solid')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
|
|||
|
value: "gradient",
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Gradient')
|
|||
|
})), currentTab === 'solid' && (0,external_wp_element_namespaceObject.createElement)(ColorPalettePanel, {
|
|||
|
name: name
|
|||
|
}), currentTab === 'gradient' && (0,external_wp_element_namespaceObject.createElement)(GradientPalettePanel, {
|
|||
|
name: name
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_color_palette = (ScreenColorPalette);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-background-color.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ScreenBackgroundColor(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const [solids] = useSetting('color.palette', name);
|
|||
|
const [gradients] = useSetting('color.gradients', name);
|
|||
|
const [areCustomSolidsEnabled] = useSetting('color.custom', name);
|
|||
|
const [areCustomGradientsEnabled] = useSetting('color.customGradient', name);
|
|||
|
const colorsPerOrigin = useColorsPerOrigin(name);
|
|||
|
const gradientsPerOrigin = useGradientsPerOrigin(name);
|
|||
|
const [isBackgroundEnabled] = useSetting('color.background', name);
|
|||
|
const hasBackgroundColor = supports.includes('backgroundColor') && isBackgroundEnabled && (solids.length > 0 || areCustomSolidsEnabled);
|
|||
|
const hasGradientColor = supports.includes('background') && (gradients.length > 0 || areCustomGradientsEnabled);
|
|||
|
const [backgroundColor, setBackgroundColor] = useStyle('color.background', name);
|
|||
|
const [userBackgroundColor] = useStyle('color.background', name, 'user');
|
|||
|
const [gradient, setGradient] = useStyle('color.gradient', name);
|
|||
|
const [userGradient] = useStyle('color.gradient', name, 'user');
|
|||
|
|
|||
|
if (!hasBackgroundColor && !hasGradientColor) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
let backgroundSettings = {};
|
|||
|
|
|||
|
if (hasBackgroundColor) {
|
|||
|
backgroundSettings = {
|
|||
|
colorValue: backgroundColor,
|
|||
|
onColorChange: setBackgroundColor
|
|||
|
};
|
|||
|
|
|||
|
if (backgroundColor) {
|
|||
|
backgroundSettings.clearable = backgroundColor === userBackgroundColor;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
let gradientSettings = {};
|
|||
|
|
|||
|
if (hasGradientColor) {
|
|||
|
gradientSettings = {
|
|||
|
gradientValue: gradient,
|
|||
|
onGradientChange: setGradient
|
|||
|
};
|
|||
|
|
|||
|
if (gradient) {
|
|||
|
gradientSettings.clearable = gradient === userGradient;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
const controlProps = { ...backgroundSettings,
|
|||
|
...gradientSettings
|
|||
|
};
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Background'),
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Set a background color or gradient for the whole site.')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientControl, extends_extends({
|
|||
|
className: "edit-site-screen-background-color__control",
|
|||
|
colors: colorsPerOrigin,
|
|||
|
gradients: gradientsPerOrigin,
|
|||
|
disableCustomColors: !areCustomSolidsEnabled,
|
|||
|
disableCustomGradients: !areCustomGradientsEnabled,
|
|||
|
__experimentalHasMultipleOrigins: true,
|
|||
|
showTitle: false,
|
|||
|
enableAlpha: true,
|
|||
|
__experimentalIsRenderedInSidebar: true
|
|||
|
}, controlProps)));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_background_color = (ScreenBackgroundColor);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-text-color.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ScreenTextColor(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const [solids] = useSetting('color.palette', name);
|
|||
|
const [areCustomSolidsEnabled] = useSetting('color.custom', name);
|
|||
|
const [isTextEnabled] = useSetting('color.text', name);
|
|||
|
const colorsPerOrigin = useColorsPerOrigin(name);
|
|||
|
const hasTextColor = supports.includes('color') && isTextEnabled && (solids.length > 0 || areCustomSolidsEnabled);
|
|||
|
const [color, setColor] = useStyle('color.text', name);
|
|||
|
const [userColor] = useStyle('color.text', name, 'user');
|
|||
|
|
|||
|
if (!hasTextColor) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Text'),
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Set the default color used for text across the site.')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientControl, {
|
|||
|
className: "edit-site-screen-text-color__control",
|
|||
|
colors: colorsPerOrigin,
|
|||
|
disableCustomColors: !areCustomSolidsEnabled,
|
|||
|
__experimentalHasMultipleOrigins: true,
|
|||
|
showTitle: false,
|
|||
|
enableAlpha: true,
|
|||
|
__experimentalIsRenderedInSidebar: true,
|
|||
|
colorValue: color,
|
|||
|
onColorChange: setColor,
|
|||
|
clearable: color === userColor
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_text_color = (ScreenTextColor);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-link-color.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ScreenLinkColor(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const supports = getSupportedGlobalStylesPanels(name);
|
|||
|
const [solids] = useSetting('color.palette', name);
|
|||
|
const [areCustomSolidsEnabled] = useSetting('color.custom', name);
|
|||
|
const colorsPerOrigin = useColorsPerOrigin(name);
|
|||
|
const [isLinkEnabled] = useSetting('color.link', name);
|
|||
|
const hasLinkColor = supports.includes('linkColor') && isLinkEnabled && (solids.length > 0 || areCustomSolidsEnabled);
|
|||
|
const [linkColor, setLinkColor] = useStyle('elements.link.color.text', name);
|
|||
|
const [userLinkColor] = useStyle('elements.link.color.text', name, 'user');
|
|||
|
|
|||
|
if (!hasLinkColor) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Links'),
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Set the default color used for links across the site.')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientControl, {
|
|||
|
className: "edit-site-screen-link-color__control",
|
|||
|
colors: colorsPerOrigin,
|
|||
|
disableCustomColors: !areCustomSolidsEnabled,
|
|||
|
__experimentalHasMultipleOrigins: true,
|
|||
|
showTitle: false,
|
|||
|
enableAlpha: true,
|
|||
|
__experimentalIsRenderedInSidebar: true,
|
|||
|
colorValue: linkColor,
|
|||
|
onColorChange: setLinkColor,
|
|||
|
clearable: linkColor === userLinkColor
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_link_color = (ScreenLinkColor);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-layout.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ScreenLayout(_ref) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref;
|
|||
|
const hasBorderPanel = useHasBorderPanel(name);
|
|||
|
const hasDimensionsPanel = useHasDimensionsPanel(name);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Layout')
|
|||
|
}), hasDimensionsPanel && (0,external_wp_element_namespaceObject.createElement)(DimensionsPanel, {
|
|||
|
name: name
|
|||
|
}), hasBorderPanel && (0,external_wp_element_namespaceObject.createElement)(BorderPanel, {
|
|||
|
name: name
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_layout = (ScreenLayout);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/global-styles-provider.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function mergeTreesCustomizer(_, srcValue) {
|
|||
|
// We only pass as arrays the presets,
|
|||
|
// in which case we want the new array of values
|
|||
|
// to override the old array (no merging).
|
|||
|
if (Array.isArray(srcValue)) {
|
|||
|
return srcValue;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function mergeBaseAndUserConfigs(base, user) {
|
|||
|
return (0,external_lodash_namespaceObject.mergeWith)({}, base, user, mergeTreesCustomizer);
|
|||
|
}
|
|||
|
|
|||
|
const cleanEmptyObject = object => {
|
|||
|
if (!(0,external_lodash_namespaceObject.isObject)(object) || Array.isArray(object)) {
|
|||
|
return object;
|
|||
|
}
|
|||
|
|
|||
|
const cleanedNestedObjects = (0,external_lodash_namespaceObject.pickBy)((0,external_lodash_namespaceObject.mapValues)(object, cleanEmptyObject), external_lodash_namespaceObject.identity);
|
|||
|
return (0,external_lodash_namespaceObject.isEmpty)(cleanedNestedObjects) ? undefined : cleanedNestedObjects;
|
|||
|
};
|
|||
|
|
|||
|
function useGlobalStylesUserConfig() {
|
|||
|
const {
|
|||
|
globalStylesId,
|
|||
|
settings,
|
|||
|
styles
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const _globalStylesId = select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentGlobalStylesId();
|
|||
|
|
|||
|
const record = _globalStylesId ? select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('root', 'globalStyles', _globalStylesId) : undefined;
|
|||
|
return {
|
|||
|
globalStylesId: _globalStylesId,
|
|||
|
settings: record === null || record === void 0 ? void 0 : record.settings,
|
|||
|
styles: record === null || record === void 0 ? void 0 : record.styles
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const {
|
|||
|
getEditedEntityRecord
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store);
|
|||
|
const {
|
|||
|
editEntityRecord
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
|
|||
|
const config = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
return {
|
|||
|
settings: settings !== null && settings !== void 0 ? settings : {},
|
|||
|
styles: styles !== null && styles !== void 0 ? styles : {}
|
|||
|
};
|
|||
|
}, [settings, styles]);
|
|||
|
const setConfig = (0,external_wp_element_namespaceObject.useCallback)(callback => {
|
|||
|
var _record$styles, _record$settings;
|
|||
|
|
|||
|
const record = getEditedEntityRecord('root', 'globalStyles', globalStylesId);
|
|||
|
const currentConfig = {
|
|||
|
styles: (_record$styles = record === null || record === void 0 ? void 0 : record.styles) !== null && _record$styles !== void 0 ? _record$styles : {},
|
|||
|
settings: (_record$settings = record === null || record === void 0 ? void 0 : record.settings) !== null && _record$settings !== void 0 ? _record$settings : {}
|
|||
|
};
|
|||
|
const updatedConfig = callback(currentConfig);
|
|||
|
editEntityRecord('root', 'globalStyles', globalStylesId, {
|
|||
|
styles: cleanEmptyObject(updatedConfig.styles) || {},
|
|||
|
settings: cleanEmptyObject(updatedConfig.settings) || {}
|
|||
|
});
|
|||
|
}, [globalStylesId]);
|
|||
|
return [!!settings || !!styles, config, setConfig];
|
|||
|
}
|
|||
|
|
|||
|
function useGlobalStylesBaseConfig() {
|
|||
|
const baseConfig = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
return select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeBaseGlobalStyles();
|
|||
|
}, []);
|
|||
|
return [!!baseConfig, baseConfig];
|
|||
|
}
|
|||
|
|
|||
|
function useGlobalStylesContext() {
|
|||
|
const [isUserConfigReady, userConfig, setUserConfig] = useGlobalStylesUserConfig();
|
|||
|
const [isBaseConfigReady, baseConfig] = useGlobalStylesBaseConfig();
|
|||
|
const mergedConfig = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
if (!baseConfig || !userConfig) {
|
|||
|
return {};
|
|||
|
}
|
|||
|
|
|||
|
return mergeBaseAndUserConfigs(baseConfig, userConfig);
|
|||
|
}, [userConfig, baseConfig]);
|
|||
|
const context = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
return {
|
|||
|
isReady: isUserConfigReady && isBaseConfigReady,
|
|||
|
user: userConfig,
|
|||
|
base: baseConfig,
|
|||
|
merged: mergedConfig,
|
|||
|
setUserConfig
|
|||
|
};
|
|||
|
}, [mergedConfig, userConfig, baseConfig, setUserConfig, isUserConfigReady, isBaseConfigReady]);
|
|||
|
return context;
|
|||
|
}
|
|||
|
|
|||
|
function GlobalStylesProvider(_ref) {
|
|||
|
let {
|
|||
|
children
|
|||
|
} = _ref;
|
|||
|
const context = useGlobalStylesContext();
|
|||
|
|
|||
|
if (!context.isReady) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(GlobalStylesContext.Provider, {
|
|||
|
value: context
|
|||
|
}, children);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-style-variations.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function compareVariations(a, b) {
|
|||
|
return (0,external_lodash_namespaceObject.isEqual)(a.styles, b.styles) && (0,external_lodash_namespaceObject.isEqual)(a.settings, b.settings);
|
|||
|
}
|
|||
|
|
|||
|
function Variation(_ref) {
|
|||
|
let {
|
|||
|
variation
|
|||
|
} = _ref;
|
|||
|
const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false);
|
|||
|
const {
|
|||
|
base,
|
|||
|
user,
|
|||
|
setUserConfig
|
|||
|
} = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
|
|||
|
const context = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
var _variation$settings, _variation$styles;
|
|||
|
|
|||
|
return {
|
|||
|
user: {
|
|||
|
settings: (_variation$settings = variation.settings) !== null && _variation$settings !== void 0 ? _variation$settings : {},
|
|||
|
styles: (_variation$styles = variation.styles) !== null && _variation$styles !== void 0 ? _variation$styles : {}
|
|||
|
},
|
|||
|
base,
|
|||
|
merged: mergeBaseAndUserConfigs(base, variation),
|
|||
|
setUserConfig: () => {}
|
|||
|
};
|
|||
|
}, [variation, base]);
|
|||
|
|
|||
|
const selectVariation = () => {
|
|||
|
setUserConfig(() => {
|
|||
|
return {
|
|||
|
settings: variation.settings,
|
|||
|
styles: variation.styles
|
|||
|
};
|
|||
|
});
|
|||
|
};
|
|||
|
|
|||
|
const selectOnEnter = event => {
|
|||
|
if (event.keyCode === external_wp_keycodes_namespaceObject.ENTER) {
|
|||
|
event.preventDefault();
|
|||
|
selectVariation();
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
const isActive = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
return compareVariations(user, variation);
|
|||
|
}, [user, variation]);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(GlobalStylesContext.Provider, {
|
|||
|
value: context
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: classnames_default()('edit-site-global-styles-variations_item', {
|
|||
|
'is-active': isActive
|
|||
|
}),
|
|||
|
role: "button",
|
|||
|
onClick: selectVariation,
|
|||
|
onKeyDown: selectOnEnter,
|
|||
|
tabIndex: "0",
|
|||
|
"aria-label": variation === null || variation === void 0 ? void 0 : variation.title,
|
|||
|
onFocus: () => setIsFocused(true),
|
|||
|
onBlur: () => setIsFocused(false)
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-global-styles-variations_item-preview"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(preview, {
|
|||
|
label: variation === null || variation === void 0 ? void 0 : variation.title,
|
|||
|
isFocused: isFocused
|
|||
|
}))));
|
|||
|
}
|
|||
|
|
|||
|
function ScreenStyleVariations() {
|
|||
|
const {
|
|||
|
variations
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
return {
|
|||
|
variations: select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations()
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const withEmptyVariation = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
return [{
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Default'),
|
|||
|
settings: {},
|
|||
|
styles: {}
|
|||
|
}, ...variations];
|
|||
|
}, [variations]);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(header, {
|
|||
|
back: "/",
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Browse styles'),
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Choose a different style combination for the theme styles')
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Card, {
|
|||
|
size: "small",
|
|||
|
isBorderless: true
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CardBody, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalGrid, {
|
|||
|
columns: 2
|
|||
|
}, withEmptyVariation === null || withEmptyVariation === void 0 ? void 0 : withEmptyVariation.map((variation, index) => (0,external_wp_element_namespaceObject.createElement)(Variation, {
|
|||
|
key: index,
|
|||
|
variation: variation
|
|||
|
}))))));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var screen_style_variations = (ScreenStyleVariations);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/ui.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function GlobalStylesNavigationScreen(_ref) {
|
|||
|
let {
|
|||
|
className,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, extends_extends({
|
|||
|
className: ['edit-site-global-styles-sidebar__navigator-screen', className].filter(Boolean).join(' ')
|
|||
|
}, props));
|
|||
|
}
|
|||
|
|
|||
|
function ContextScreens(_ref2) {
|
|||
|
let {
|
|||
|
name
|
|||
|
} = _ref2;
|
|||
|
const parentMenu = name === undefined ? '' : '/blocks/' + name;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: parentMenu + '/typography'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_typography, {
|
|||
|
name: name
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: parentMenu + '/typography/text'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_typography_element, {
|
|||
|
name: name,
|
|||
|
element: "text"
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: parentMenu + '/typography/link'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_typography_element, {
|
|||
|
name: name,
|
|||
|
element: "link"
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: parentMenu + '/colors'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_colors, {
|
|||
|
name: name
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: parentMenu + '/colors/palette'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_color_palette, {
|
|||
|
name: name
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: parentMenu + '/colors/background'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_background_color, {
|
|||
|
name: name
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: parentMenu + '/colors/text'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_text_color, {
|
|||
|
name: name
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: parentMenu + '/colors/link'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_link_color, {
|
|||
|
name: name
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: parentMenu + '/layout'
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_layout, {
|
|||
|
name: name
|
|||
|
})));
|
|||
|
}
|
|||
|
|
|||
|
function GlobalStylesUI() {
|
|||
|
const blocks = (0,external_wp_blocks_namespaceObject.getBlockTypes)();
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigatorProvider, {
|
|||
|
className: "edit-site-global-styles-sidebar__navigator-provider",
|
|||
|
initialPath: "/"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: "/"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_root, null)), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: "/variations"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_style_variations, null)), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
path: "/blocks"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_block_list, null)), blocks.map(block => (0,external_wp_element_namespaceObject.createElement)(GlobalStylesNavigationScreen, {
|
|||
|
key: 'menu-block-' + block.name,
|
|||
|
path: '/blocks/' + block.name
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(screen_block, {
|
|||
|
name: block.name
|
|||
|
}))), (0,external_wp_element_namespaceObject.createElement)(ContextScreens, null), blocks.map(block => (0,external_wp_element_namespaceObject.createElement)(ContextScreens, {
|
|||
|
key: 'screens-block-' + block.name,
|
|||
|
name: block.name
|
|||
|
})));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var ui = (GlobalStylesUI);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/global-styles-sidebar.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function GlobalStylesSidebar() {
|
|||
|
const [canReset, onReset] = useGlobalStylesReset();
|
|||
|
const {
|
|||
|
toggle
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(default_sidebar_DefaultSidebar, {
|
|||
|
className: "edit-site-global-styles-sidebar",
|
|||
|
identifier: "edit-site/global-styles",
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Styles'),
|
|||
|
icon: library_styles,
|
|||
|
closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close global styles sidebar'),
|
|||
|
panelClassName: "edit-site-global-styles-sidebar__panel",
|
|||
|
header: (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexBlock, null, (0,external_wp_element_namespaceObject.createElement)("strong", null, (0,external_wp_i18n_namespaceObject.__)('Styles')), (0,external_wp_element_namespaceObject.createElement)("span", {
|
|||
|
className: "edit-site-global-styles-sidebar__beta"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Beta'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, {
|
|||
|
icon: more_vertical,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('More Global Styles Actions'),
|
|||
|
controls: [{
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Reset to defaults'),
|
|||
|
onClick: onReset,
|
|||
|
isDisabled: !canReset
|
|||
|
}, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Welcome Guide'),
|
|||
|
onClick: () => toggle('core/edit-site', 'welcomeGuideStyles')
|
|||
|
}]
|
|||
|
})))
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(ui, null));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const ALLOWED_BLOCKS = {
|
|||
|
'core/navigation': ['core/navigation-link', 'core/search', 'core/social-links', 'core/page-list', 'core/spacer', 'core/home-link', 'core/site-title', 'core/site-logo', 'core/navigation-submenu'],
|
|||
|
'core/social-links': ['core/social-link'],
|
|||
|
'core/navigation-submenu': ['core/navigation-link', 'core/navigation-submenu'],
|
|||
|
'core/navigation-link': ['core/navigation-link', 'core/navigation-submenu']
|
|||
|
};
|
|||
|
function navigation_menu_NavigationMenu(_ref) {
|
|||
|
let {
|
|||
|
innerBlocks,
|
|||
|
id
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
updateBlockListSettings
|
|||
|
} = useDispatch(blockEditorStore); //TODO: Block settings are normally updated as a side effect of rendering InnerBlocks in BlockList
|
|||
|
//Think through a better way of doing this, possible with adding allowed blocks to block library metadata
|
|||
|
|
|||
|
useEffect(() => {
|
|||
|
updateBlockListSettings('', {
|
|||
|
allowedBlocks: ALLOWED_BLOCKS['core/navigation']
|
|||
|
});
|
|||
|
innerBlocks.forEach(block => {
|
|||
|
if (ALLOWED_BLOCKS[block.name]) {
|
|||
|
updateBlockListSettings(block.clientId, {
|
|||
|
allowedBlocks: ALLOWED_BLOCKS[block.name]
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
}, [updateBlockListSettings, innerBlocks]);
|
|||
|
return createElement(Fragment, null, createElement(ListView, {
|
|||
|
id: id,
|
|||
|
showNestedBlocks: true,
|
|||
|
expandNested: false,
|
|||
|
__experimentalFeatures: true,
|
|||
|
__experimentalPersistentListViewFeatures: true
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/navigation-menu-sidebar/navigation-inspector.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
const NAVIGATION_MENUS_QUERY = [{
|
|||
|
per_page: -1,
|
|||
|
status: 'publish'
|
|||
|
}];
|
|||
|
function navigation_inspector_NavigationInspector() {
|
|||
|
var _navigationMenus$;
|
|||
|
|
|||
|
const {
|
|||
|
selectedNavigationBlockId,
|
|||
|
clientIdToRef,
|
|||
|
navigationMenus,
|
|||
|
isResolvingNavigationMenus,
|
|||
|
hasResolvedNavigationMenus,
|
|||
|
firstNavigationBlockId
|
|||
|
} = useSelect(select => {
|
|||
|
const {
|
|||
|
__experimentalGetActiveBlockIdByBlockNames,
|
|||
|
__experimentalGetGlobalBlocksByName,
|
|||
|
getBlock
|
|||
|
} = select(blockEditorStore);
|
|||
|
const {
|
|||
|
getEntityRecords,
|
|||
|
hasFinishedResolution,
|
|||
|
isResolving
|
|||
|
} = select(coreStore);
|
|||
|
const navigationMenusQuery = ['postType', 'wp_navigation', NAVIGATION_MENUS_QUERY[0]]; // Get the active Navigation block (if present).
|
|||
|
|
|||
|
const selectedNavId = __experimentalGetActiveBlockIdByBlockNames('core/navigation'); // Get all Navigation blocks currently within the editor canvas.
|
|||
|
|
|||
|
|
|||
|
const navBlockIds = __experimentalGetGlobalBlocksByName('core/navigation');
|
|||
|
|
|||
|
const idToRef = {};
|
|||
|
navBlockIds.forEach(id => {
|
|||
|
var _getBlock, _getBlock$attributes;
|
|||
|
|
|||
|
idToRef[id] = (_getBlock = getBlock(id)) === null || _getBlock === void 0 ? void 0 : (_getBlock$attributes = _getBlock.attributes) === null || _getBlock$attributes === void 0 ? void 0 : _getBlock$attributes.ref;
|
|||
|
});
|
|||
|
return {
|
|||
|
selectedNavigationBlockId: selectedNavId,
|
|||
|
firstNavigationBlockId: navBlockIds === null || navBlockIds === void 0 ? void 0 : navBlockIds[0],
|
|||
|
clientIdToRef: idToRef,
|
|||
|
navigationMenus: getEntityRecords(...navigationMenusQuery),
|
|||
|
isResolvingNavigationMenus: isResolving('getEntityRecords', navigationMenusQuery),
|
|||
|
hasResolvedNavigationMenus: hasFinishedResolution('getEntityRecords', navigationMenusQuery)
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const navMenuListId = useInstanceId(NavigationMenu, 'edit-site-navigation-inspector-menu');
|
|||
|
const firstNavRefInTemplate = clientIdToRef[firstNavigationBlockId];
|
|||
|
const firstNavigationMenuRef = navigationMenus === null || navigationMenus === void 0 ? void 0 : (_navigationMenus$ = navigationMenus[0]) === null || _navigationMenus$ === void 0 ? void 0 : _navigationMenus$.id; // Default Navigation Menu is either:
|
|||
|
// - the Navigation Menu referenced by the first Nav block within the template.
|
|||
|
// - the first of the available Navigation Menus (`wp_navigation`) posts.
|
|||
|
|
|||
|
const defaultNavigationMenuId = firstNavRefInTemplate || firstNavigationMenuRef; // The Navigation Menu manually selected by the user within the Nav inspector.
|
|||
|
|
|||
|
const [currentMenuId, setCurrentMenuId] = useState(firstNavRefInTemplate); // If a Nav block is selected within the canvas then set the
|
|||
|
// Navigation Menu referenced by it's `ref` attribute to be
|
|||
|
// active within the Navigation sidebar.
|
|||
|
|
|||
|
useEffect(() => {
|
|||
|
if (selectedNavigationBlockId) {
|
|||
|
setCurrentMenuId(clientIdToRef[selectedNavigationBlockId]);
|
|||
|
}
|
|||
|
}, [selectedNavigationBlockId]);
|
|||
|
let options = [];
|
|||
|
|
|||
|
if (navigationMenus) {
|
|||
|
options = navigationMenus.map(_ref => {
|
|||
|
let {
|
|||
|
id,
|
|||
|
title
|
|||
|
} = _ref;
|
|||
|
return {
|
|||
|
value: id,
|
|||
|
label: title.rendered
|
|||
|
};
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
const [innerBlocks, onInput, onChange] = useEntityBlockEditor('postType', 'wp_navigation', {
|
|||
|
id: currentMenuId || defaultNavigationMenuId
|
|||
|
});
|
|||
|
const {
|
|||
|
isLoadingInnerBlocks,
|
|||
|
hasLoadedInnerBlocks
|
|||
|
} = useSelect(select => {
|
|||
|
const {
|
|||
|
isResolving,
|
|||
|
hasFinishedResolution
|
|||
|
} = select(coreStore);
|
|||
|
return {
|
|||
|
isLoadingInnerBlocks: isResolving('getEntityRecord', ['postType', 'wp_navigation', currentMenuId || defaultNavigationMenuId]),
|
|||
|
hasLoadedInnerBlocks: hasFinishedResolution('getEntityRecord', ['postType', 'wp_navigation', currentMenuId || defaultNavigationMenuId])
|
|||
|
};
|
|||
|
}, [currentMenuId, defaultNavigationMenuId]);
|
|||
|
const isLoading = !(hasResolvedNavigationMenus && hasLoadedInnerBlocks);
|
|||
|
const hasMoreThanOneNavigationMenu = (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 1;
|
|||
|
const hasNavigationMenus = !!(navigationMenus !== null && navigationMenus !== void 0 && navigationMenus.length); // Entity block editor will return entities that are not currently published.
|
|||
|
// Guard by only allowing their usage if there are published Nav Menus.
|
|||
|
|
|||
|
const publishedInnerBlocks = hasNavigationMenus ? innerBlocks : [];
|
|||
|
const hasInnerBlocks = !!(publishedInnerBlocks !== null && publishedInnerBlocks !== void 0 && publishedInnerBlocks.length);
|
|||
|
useEffect(() => {
|
|||
|
if (isResolvingNavigationMenus) {
|
|||
|
speak('Loading Navigation sidebar menus.');
|
|||
|
}
|
|||
|
|
|||
|
if (hasResolvedNavigationMenus) {
|
|||
|
speak('Navigation sidebar menus have loaded.');
|
|||
|
}
|
|||
|
}, [isResolvingNavigationMenus, hasResolvedNavigationMenus]);
|
|||
|
useEffect(() => {
|
|||
|
if (isLoadingInnerBlocks) {
|
|||
|
speak('Loading Navigation sidebar selected menu items.');
|
|||
|
}
|
|||
|
|
|||
|
if (hasLoadedInnerBlocks) {
|
|||
|
speak('Navigation sidebar selected menu items have loaded.');
|
|||
|
}
|
|||
|
}, [isLoadingInnerBlocks, hasLoadedInnerBlocks]);
|
|||
|
return createElement("div", {
|
|||
|
className: "edit-site-navigation-inspector"
|
|||
|
}, hasResolvedNavigationMenus && !hasNavigationMenus && createElement("p", {
|
|||
|
className: "edit-site-navigation-inspector__empty-msg"
|
|||
|
}, __('There are no Navigation Menus.')), !hasResolvedNavigationMenus && createElement("div", {
|
|||
|
className: "edit-site-navigation-inspector__placeholder"
|
|||
|
}), hasResolvedNavigationMenus && hasMoreThanOneNavigationMenu && createElement(SelectControl, {
|
|||
|
"aria-controls": // aria-controls should only apply when referenced element is in DOM
|
|||
|
hasLoadedInnerBlocks ? navMenuListId : undefined,
|
|||
|
value: currentMenuId || defaultNavigationMenuId,
|
|||
|
options: options,
|
|||
|
onChange: newMenuId => setCurrentMenuId(Number(newMenuId))
|
|||
|
}), isLoading && createElement(Fragment, null, createElement("div", {
|
|||
|
className: "edit-site-navigation-inspector__placeholder is-child"
|
|||
|
}), createElement("div", {
|
|||
|
className: "edit-site-navigation-inspector__placeholder is-child"
|
|||
|
}), createElement("div", {
|
|||
|
className: "edit-site-navigation-inspector__placeholder is-child"
|
|||
|
})), hasInnerBlocks && !isLoading && createElement(BlockEditorProvider, {
|
|||
|
value: publishedInnerBlocks,
|
|||
|
onChange: onChange,
|
|||
|
onInput: onInput
|
|||
|
}, createElement(NavigationMenu, {
|
|||
|
id: navMenuListId,
|
|||
|
innerBlocks: publishedInnerBlocks
|
|||
|
})), !hasInnerBlocks && !isLoading && createElement("p", {
|
|||
|
className: "edit-site-navigation-inspector__empty-msg"
|
|||
|
}, __('Navigation Menu is empty.')));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/navigation-menu-sidebar/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function NavigationMenuSidebar() {
|
|||
|
return createElement(DefaultSidebar, {
|
|||
|
className: "edit-site-navigation-menu-sidebar",
|
|||
|
identifier: "edit-site/navigation-menu",
|
|||
|
title: __('Navigation Menus'),
|
|||
|
icon: navigation,
|
|||
|
closeLabel: __('Close navigation menu sidebar'),
|
|||
|
panelClassName: "edit-site-navigation-menu-sidebar__panel",
|
|||
|
header: createElement(Flex, null, createElement(FlexBlock, null, createElement("strong", null, __('Navigation Menus'))))
|
|||
|
}, createElement(NavigationInspector, null));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/constants.js
|
|||
|
const SIDEBAR_TEMPLATE = 'edit-site/template';
|
|||
|
const SIDEBAR_BLOCK = 'edit-site/block-inspector';
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/settings-header/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const SettingsHeader = _ref => {
|
|||
|
let {
|
|||
|
sidebarName
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
enableComplementaryArea
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
|
|||
|
|
|||
|
const openTemplateSettings = () => enableComplementaryArea(STORE_NAME, SIDEBAR_TEMPLATE);
|
|||
|
|
|||
|
const openBlockSettings = () => enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK);
|
|||
|
|
|||
|
const [templateAriaLabel, templateActiveClass] = sidebarName === SIDEBAR_TEMPLATE ? // translators: ARIA label for the Template sidebar tab, selected.
|
|||
|
[(0,external_wp_i18n_namespaceObject.__)('Template (selected)'), 'is-active'] : // translators: ARIA label for the Template Settings Sidebar tab, not selected.
|
|||
|
[(0,external_wp_i18n_namespaceObject.__)('Template'), ''];
|
|||
|
const [blockAriaLabel, blockActiveClass] = sidebarName === SIDEBAR_BLOCK ? // translators: ARIA label for the Block Settings Sidebar tab, selected.
|
|||
|
[(0,external_wp_i18n_namespaceObject.__)('Block (selected)'), 'is-active'] : // translators: ARIA label for the Block Settings Sidebar tab, not selected.
|
|||
|
[(0,external_wp_i18n_namespaceObject.__)('Block'), ''];
|
|||
|
/* Use a list so screen readers will announce how many tabs there are. */
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("ul", null, (0,external_wp_element_namespaceObject.createElement)("li", null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
onClick: openTemplateSettings,
|
|||
|
className: `edit-site-sidebar__panel-tab ${templateActiveClass}`,
|
|||
|
"aria-label": templateAriaLabel // translators: Data label for the Template Settings Sidebar tab.
|
|||
|
,
|
|||
|
"data-label": (0,external_wp_i18n_namespaceObject.__)('Template')
|
|||
|
}, // translators: Text label for the Template Settings Sidebar tab.
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('Template'))), (0,external_wp_element_namespaceObject.createElement)("li", null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
onClick: openBlockSettings,
|
|||
|
className: `edit-site-sidebar__panel-tab ${blockActiveClass}`,
|
|||
|
"aria-label": blockAriaLabel // translators: Data label for the Block Settings Sidebar tab.
|
|||
|
,
|
|||
|
"data-label": (0,external_wp_i18n_namespaceObject.__)('Block')
|
|||
|
}, // translators: Text label for the Block Settings Sidebar tab.
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('Block'))));
|
|||
|
};
|
|||
|
|
|||
|
/* harmony default export */ var settings_header = (SettingsHeader);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/template-card/template-areas.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function TemplateAreaItem(_ref) {
|
|||
|
let {
|
|||
|
area,
|
|||
|
clientId
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
selectBlock,
|
|||
|
toggleBlockHighlight
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
|
|||
|
const templatePartArea = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const defaultAreas = select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas();
|
|||
|
|
|||
|
return defaultAreas.find(defaultArea => defaultArea.area === area);
|
|||
|
}, [area]);
|
|||
|
|
|||
|
const highlightBlock = () => toggleBlockHighlight(clientId, true);
|
|||
|
|
|||
|
const cancelHighlightBlock = () => toggleBlockHighlight(clientId, false);
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
className: "edit-site-template-card__template-areas-item",
|
|||
|
icon: templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.icon,
|
|||
|
onMouseOver: highlightBlock,
|
|||
|
onMouseLeave: cancelHighlightBlock,
|
|||
|
onFocus: highlightBlock,
|
|||
|
onBlur: cancelHighlightBlock,
|
|||
|
onClick: () => {
|
|||
|
selectBlock(clientId);
|
|||
|
}
|
|||
|
}, templatePartArea === null || templatePartArea === void 0 ? void 0 : templatePartArea.label);
|
|||
|
}
|
|||
|
|
|||
|
function template_areas_TemplateAreas() {
|
|||
|
const templateParts = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getCurrentTemplateTemplateParts(), []);
|
|||
|
|
|||
|
if (!templateParts.length) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("section", {
|
|||
|
className: "edit-site-template-card__template-areas"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
|
|||
|
level: 3,
|
|||
|
className: "edit-site-template-card__template-areas-title"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Areas')), (0,external_wp_element_namespaceObject.createElement)("ul", {
|
|||
|
className: "edit-site-template-card__template-areas-list"
|
|||
|
}, templateParts.map(_ref2 => {
|
|||
|
let {
|
|||
|
templatePart,
|
|||
|
block
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("li", {
|
|||
|
key: templatePart.slug
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(TemplateAreaItem, {
|
|||
|
area: templatePart.area,
|
|||
|
clientId: block.clientId
|
|||
|
}));
|
|||
|
})));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/template-card/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function TemplateCard() {
|
|||
|
const {
|
|||
|
title,
|
|||
|
description,
|
|||
|
icon
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
getEditedPostType,
|
|||
|
getEditedPostId
|
|||
|
} = select(store_store);
|
|||
|
const {
|
|||
|
getEntityRecord
|
|||
|
} = select(external_wp_coreData_namespaceObject.store);
|
|||
|
const {
|
|||
|
__experimentalGetTemplateInfo: getTemplateInfo
|
|||
|
} = select(external_wp_editor_namespaceObject.store);
|
|||
|
const postType = getEditedPostType();
|
|||
|
const postId = getEditedPostId();
|
|||
|
const record = getEntityRecord('postType', postType, postId);
|
|||
|
const info = record ? getTemplateInfo(record) : {};
|
|||
|
return info;
|
|||
|
}, []);
|
|||
|
|
|||
|
if (!title && !description) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-template-card"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
|
|||
|
className: "edit-site-template-card__icon",
|
|||
|
icon: icon
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-template-card__content"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("h2", {
|
|||
|
className: "edit-site-template-card__title"
|
|||
|
}, title), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-template-card__description"
|
|||
|
}, description), (0,external_wp_element_namespaceObject.createElement)(template_areas_TemplateAreas, null)));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const {
|
|||
|
Slot: InspectorSlot,
|
|||
|
Fill: InspectorFill
|
|||
|
} = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteSidebarInspector');
|
|||
|
const SidebarInspectorFill = InspectorFill;
|
|||
|
function SidebarComplementaryAreaFills() {
|
|||
|
const {
|
|||
|
sidebar,
|
|||
|
isEditorSidebarOpened,
|
|||
|
hasBlockSelection
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const _sidebar = select(store).getActiveComplementaryArea(STORE_NAME);
|
|||
|
|
|||
|
const _isEditorSidebarOpened = [SIDEBAR_BLOCK, SIDEBAR_TEMPLATE].includes(_sidebar);
|
|||
|
|
|||
|
return {
|
|||
|
sidebar: _sidebar,
|
|||
|
isEditorSidebarOpened: _isEditorSidebarOpened,
|
|||
|
hasBlockSelection: !!select(external_wp_blockEditor_namespaceObject.store).getBlockSelectionStart()
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const {
|
|||
|
enableComplementaryArea
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
if (!isEditorSidebarOpened) return;
|
|||
|
|
|||
|
if (hasBlockSelection) {
|
|||
|
enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK);
|
|||
|
} else {
|
|||
|
enableComplementaryArea(STORE_NAME, SIDEBAR_TEMPLATE);
|
|||
|
}
|
|||
|
}, [hasBlockSelection, isEditorSidebarOpened]);
|
|||
|
let sidebarName = sidebar;
|
|||
|
|
|||
|
if (!isEditorSidebarOpened) {
|
|||
|
sidebarName = hasBlockSelection ? SIDEBAR_BLOCK : SIDEBAR_TEMPLATE;
|
|||
|
} // Conditionally include NavMenu sidebar in Plugin only.
|
|||
|
// Optimise for dead code elimination.
|
|||
|
// See https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/feature-flags.md#dead-code-elimination.
|
|||
|
|
|||
|
|
|||
|
let MaybeNavigationMenuSidebar = external_wp_element_namespaceObject.Fragment;
|
|||
|
|
|||
|
if (false) {}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(default_sidebar_DefaultSidebar, {
|
|||
|
identifier: sidebarName,
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Settings'),
|
|||
|
icon: library_cog,
|
|||
|
closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close settings sidebar'),
|
|||
|
header: (0,external_wp_element_namespaceObject.createElement)(settings_header, {
|
|||
|
sidebarName: sidebarName
|
|||
|
}),
|
|||
|
headerClassName: "edit-site-sidebar__panel-tabs"
|
|||
|
}, sidebarName === SIDEBAR_TEMPLATE && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, null, (0,external_wp_element_namespaceObject.createElement)(TemplateCard, null)), sidebarName === SIDEBAR_BLOCK && (0,external_wp_element_namespaceObject.createElement)(InspectorSlot, {
|
|||
|
bubblesVirtually: true
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(GlobalStylesSidebar, null), (0,external_wp_element_namespaceObject.createElement)(MaybeNavigationMenuSidebar, null));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: external ["wp","htmlEntities"]
|
|||
|
var external_wp_htmlEntities_namespaceObject = window["wp"]["htmlEntities"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/home.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const home = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_home = (home);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol-filled.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const symbolFilled = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var symbol_filled = (symbolFilled);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/main-dashboard-button/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const slotName = '__experimentalMainDashboardButton';
|
|||
|
const {
|
|||
|
Fill,
|
|||
|
Slot: MainDashboardButtonSlot
|
|||
|
} = (0,external_wp_components_namespaceObject.createSlotFill)(slotName);
|
|||
|
const MainDashboardButton = Fill;
|
|||
|
|
|||
|
const main_dashboard_button_Slot = _ref => {
|
|||
|
let {
|
|||
|
children
|
|||
|
} = _ref;
|
|||
|
const slot = (0,external_wp_components_namespaceObject.__experimentalUseSlot)(slotName);
|
|||
|
const hasFills = Boolean(slot.fills && slot.fills.length);
|
|||
|
|
|||
|
if (!hasFills) {
|
|||
|
return children;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(MainDashboardButtonSlot, {
|
|||
|
bubblesVirtually: true
|
|||
|
});
|
|||
|
};
|
|||
|
|
|||
|
MainDashboardButton.Slot = main_dashboard_button_Slot;
|
|||
|
/* harmony default export */ var main_dashboard_button = (MainDashboardButton);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-panel/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const SITE_EDITOR_KEY = 'site-editor';
|
|||
|
|
|||
|
function NavLink(_ref) {
|
|||
|
let {
|
|||
|
params,
|
|||
|
replace,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
const linkProps = useLink(params, replace);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationItem, extends_extends({}, linkProps, props));
|
|||
|
}
|
|||
|
|
|||
|
const NavigationPanel = _ref2 => {
|
|||
|
let {
|
|||
|
activeItem = SITE_EDITOR_KEY
|
|||
|
} = _ref2;
|
|||
|
const {
|
|||
|
homeTemplate,
|
|||
|
isNavigationOpen,
|
|||
|
siteTitle
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
getEntityRecord
|
|||
|
} = select(external_wp_coreData_namespaceObject.store);
|
|||
|
const {
|
|||
|
getSettings,
|
|||
|
isNavigationOpened
|
|||
|
} = select(store_store);
|
|||
|
const siteData = getEntityRecord('root', '__unstableBase', undefined) || {};
|
|||
|
return {
|
|||
|
siteTitle: siteData.name,
|
|||
|
homeTemplate: getSettings().__unstableHomeTemplate,
|
|||
|
isNavigationOpen: isNavigationOpened()
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const {
|
|||
|
setIsNavigationPanelOpened
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
|
|||
|
const closeOnEscape = event => {
|
|||
|
if (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE && !event.defaultPrevented) {
|
|||
|
event.preventDefault();
|
|||
|
setIsNavigationPanelOpened(false);
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|||
|
(0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: classnames_default()(`edit-site-navigation-panel`, {
|
|||
|
'is-open': isNavigationOpen
|
|||
|
}),
|
|||
|
onKeyDown: closeOnEscape
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-navigation-panel__inner"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-navigation-panel__site-title-container"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-navigation-panel__site-title"
|
|||
|
}, (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle))), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-navigation-panel__scroll-container"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigation, {
|
|||
|
activeItem: activeItem
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(main_dashboard_button.Slot, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationBackButton, {
|
|||
|
backButtonLabel: (0,external_wp_i18n_namespaceObject.__)('Dashboard'),
|
|||
|
className: "edit-site-navigation-panel__back-to-dashboard",
|
|||
|
href: "index.php"
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationMenu, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalNavigationGroup, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Editor')
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(NavLink, {
|
|||
|
icon: library_home,
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Site'),
|
|||
|
item: SITE_EDITOR_KEY,
|
|||
|
params: {
|
|||
|
postId: homeTemplate === null || homeTemplate === void 0 ? void 0 : homeTemplate.postId,
|
|||
|
postType: homeTemplate === null || homeTemplate === void 0 ? void 0 : homeTemplate.postType
|
|||
|
}
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(NavLink, {
|
|||
|
icon: library_layout,
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Templates'),
|
|||
|
item: "wp_template",
|
|||
|
params: {
|
|||
|
postId: undefined,
|
|||
|
postType: 'wp_template'
|
|||
|
}
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(NavLink, {
|
|||
|
icon: symbol_filled,
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Template Parts'),
|
|||
|
item: "wp_template_part",
|
|||
|
params: {
|
|||
|
postId: undefined,
|
|||
|
postType: 'wp_template_part'
|
|||
|
}
|
|||
|
})))))))
|
|||
|
);
|
|||
|
};
|
|||
|
|
|||
|
/* harmony default export */ var navigation_panel = (NavigationPanel);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/wordpress.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const wordpress = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "-2 -2 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_wordpress = (wordpress);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/navigation-toggle/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function NavigationToggle(_ref) {
|
|||
|
let {
|
|||
|
icon
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
isNavigationOpen,
|
|||
|
isRequestingSiteIcon,
|
|||
|
siteIconUrl
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
getEntityRecord,
|
|||
|
isResolving
|
|||
|
} = select(external_wp_coreData_namespaceObject.store);
|
|||
|
const siteData = getEntityRecord('root', '__unstableBase', undefined) || {};
|
|||
|
return {
|
|||
|
isNavigationOpen: select(store_store).isNavigationOpened(),
|
|||
|
isRequestingSiteIcon: isResolving('core', 'getEntityRecord', ['root', '__unstableBase', undefined]),
|
|||
|
siteIconUrl: siteData.site_icon_url
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const {
|
|||
|
setIsNavigationPanelOpened
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
|
|||
|
const navigationToggleRef = (0,external_wp_element_namespaceObject.useRef)();
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
// TODO: Remove this effect when alternative solution is merged.
|
|||
|
// See: https://github.com/WordPress/gutenberg/pull/37314
|
|||
|
if (!isNavigationOpen) {
|
|||
|
navigationToggleRef.current.focus();
|
|||
|
}
|
|||
|
}, [isNavigationOpen]);
|
|||
|
|
|||
|
const toggleNavigationPanel = () => setIsNavigationPanelOpened(!isNavigationOpen);
|
|||
|
|
|||
|
let buttonIcon = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
|
|||
|
size: "36px",
|
|||
|
icon: library_wordpress
|
|||
|
});
|
|||
|
const effect = {
|
|||
|
expand: {
|
|||
|
scale: 1.25,
|
|||
|
transition: {
|
|||
|
type: 'tween',
|
|||
|
duration: '0.3'
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
if (siteIconUrl) {
|
|||
|
buttonIcon = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.img, {
|
|||
|
variants: !disableMotion && effect,
|
|||
|
alt: (0,external_wp_i18n_namespaceObject.__)('Site Icon'),
|
|||
|
className: "edit-site-navigation-toggle__site-icon",
|
|||
|
src: siteIconUrl
|
|||
|
});
|
|||
|
} else if (isRequestingSiteIcon) {
|
|||
|
buttonIcon = null;
|
|||
|
} else if (icon) {
|
|||
|
buttonIcon = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
|
|||
|
size: "36px",
|
|||
|
icon: icon
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
const classes = classnames_default()({
|
|||
|
'edit-site-navigation-toggle__button': true,
|
|||
|
'has-icon': siteIconUrl
|
|||
|
});
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__unstableMotion.div, {
|
|||
|
className: 'edit-site-navigation-toggle' + (isNavigationOpen ? ' is-open' : ''),
|
|||
|
whileHover: "expand"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
className: classes,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Toggle navigation'),
|
|||
|
ref: navigationToggleRef // isPressed will add unwanted styles.
|
|||
|
,
|
|||
|
"aria-pressed": isNavigationOpen,
|
|||
|
onClick: toggleNavigationPanel,
|
|||
|
showTooltip: true
|
|||
|
}, buttonIcon));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var navigation_toggle = (NavigationToggle);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigation-sidebar/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const {
|
|||
|
Fill: NavigationPanelPreviewFill,
|
|||
|
Slot: NavigationPanelPreviewSlot
|
|||
|
} = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteNavigationPanelPreview');
|
|||
|
const {
|
|||
|
Fill: NavigationSidebarFill,
|
|||
|
Slot: NavigationSidebarSlot
|
|||
|
} = (0,external_wp_components_namespaceObject.createSlotFill)('EditSiteNavigationSidebar');
|
|||
|
|
|||
|
function NavigationSidebar(_ref) {
|
|||
|
let {
|
|||
|
isDefaultOpen = false,
|
|||
|
activeTemplateType
|
|||
|
} = _ref;
|
|||
|
const isDesktopViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium');
|
|||
|
const {
|
|||
|
setIsNavigationPanelOpened
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(function autoOpenNavigationPanelOnViewportChange() {
|
|||
|
setIsNavigationPanelOpened(isDefaultOpen && isDesktopViewport);
|
|||
|
}, [isDefaultOpen, isDesktopViewport, setIsNavigationPanelOpened]);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(NavigationSidebarFill, null, (0,external_wp_element_namespaceObject.createElement)(navigation_toggle, null), (0,external_wp_element_namespaceObject.createElement)(navigation_panel, {
|
|||
|
activeItem: activeTemplateType
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(NavigationPanelPreviewSlot, null));
|
|||
|
}
|
|||
|
|
|||
|
NavigationSidebar.Slot = NavigationSidebarSlot;
|
|||
|
/* harmony default export */ var navigation_sidebar = (NavigationSidebar);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: external ["wp","reusableBlocks"]
|
|||
|
var external_wp_reusableBlocks_namespaceObject = window["wp"]["reusableBlocks"];
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/convert-to-regular.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function ConvertToRegularBlocks(_ref) {
|
|||
|
let {
|
|||
|
clientId
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
getBlocks
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store);
|
|||
|
const {
|
|||
|
replaceBlocks
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
|
|||
|
const canRemove = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).canRemoveBlock(clientId), [clientId]);
|
|||
|
|
|||
|
if (!canRemove) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, null, _ref2 => {
|
|||
|
let {
|
|||
|
onClose
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
onClick: () => {
|
|||
|
replaceBlocks(clientId, getBlocks(clientId));
|
|||
|
onClose();
|
|||
|
}
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Detach blocks from template part'));
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/create-template-part-modal/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function CreateTemplatePartModal(_ref) {
|
|||
|
let {
|
|||
|
closeModal,
|
|||
|
onCreate
|
|||
|
} = _ref;
|
|||
|
const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)('');
|
|||
|
const [area, setArea] = (0,external_wp_element_namespaceObject.useState)(TEMPLATE_PART_AREA_GENERAL);
|
|||
|
const [isSubmitting, setIsSubmitting] = (0,external_wp_element_namespaceObject.useState)(false);
|
|||
|
const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(CreateTemplatePartModal);
|
|||
|
const templatePartAreas = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas(), []);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Create a template part'),
|
|||
|
closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'),
|
|||
|
onRequestClose: closeModal,
|
|||
|
overlayClassName: "edit-site-create-template-part-modal"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("form", {
|
|||
|
onSubmit: async event => {
|
|||
|
event.preventDefault();
|
|||
|
|
|||
|
if (!title) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
setIsSubmitting(true);
|
|||
|
await onCreate({
|
|||
|
title,
|
|||
|
area
|
|||
|
});
|
|||
|
}
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Name'),
|
|||
|
value: title,
|
|||
|
onChange: setTitle,
|
|||
|
required: true
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.BaseControl, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Area'),
|
|||
|
id: `edit-site-create-template-part-modal__area-selection-${instanceId}`,
|
|||
|
className: "edit-site-create-template-part-modal__area-base-control"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalRadioGroup, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Area'),
|
|||
|
className: "edit-site-create-template-part-modal__area-radio-group",
|
|||
|
id: `edit-site-create-template-part-modal__area-selection-${instanceId}`,
|
|||
|
onChange: setArea,
|
|||
|
checked: area
|
|||
|
}, templatePartAreas.map(_ref2 => {
|
|||
|
let {
|
|||
|
icon,
|
|||
|
label,
|
|||
|
area: value,
|
|||
|
description
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalRadio, {
|
|||
|
key: label,
|
|||
|
value: value,
|
|||
|
className: "edit-site-create-template-part-modal__area-radio"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, {
|
|||
|
align: "start",
|
|||
|
justify: "start"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
|
|||
|
icon: icon
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexBlock, {
|
|||
|
className: "edit-site-create-template-part-modal__option-label"
|
|||
|
}, label, (0,external_wp_element_namespaceObject.createElement)("div", null, description)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, {
|
|||
|
className: "edit-site-create-template-part-modal__checkbox"
|
|||
|
}, area === value && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
|
|||
|
icon: library_check
|
|||
|
}))));
|
|||
|
}))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, {
|
|||
|
className: "edit-site-create-template-part-modal__modal-actions",
|
|||
|
justify: "flex-end"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
variant: "secondary",
|
|||
|
onClick: () => {
|
|||
|
closeModal();
|
|||
|
}
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Cancel'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
variant: "primary",
|
|||
|
type: "submit",
|
|||
|
disabled: !title,
|
|||
|
isBusy: isSubmitting
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Create'))))));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/convert-to-template-part.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function ConvertToTemplatePart(_ref) {
|
|||
|
let {
|
|||
|
clientIds,
|
|||
|
blocks
|
|||
|
} = _ref;
|
|||
|
const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
|
|||
|
const {
|
|||
|
replaceBlocks
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
|
|||
|
const {
|
|||
|
saveEntityRecord
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
|
|||
|
const {
|
|||
|
createSuccessNotice
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
|
|||
|
|
|||
|
const onConvert = async _ref2 => {
|
|||
|
let {
|
|||
|
title,
|
|||
|
area
|
|||
|
} = _ref2;
|
|||
|
// Currently template parts only allow latin chars.
|
|||
|
// Fallback slug will receive suffix by default.
|
|||
|
const cleanSlug = (0,external_lodash_namespaceObject.kebabCase)(title).replace(/[^\w-]+/g, '') || 'wp-custom-part';
|
|||
|
const templatePart = await saveEntityRecord('postType', 'wp_template_part', {
|
|||
|
slug: cleanSlug,
|
|||
|
title,
|
|||
|
content: (0,external_wp_blocks_namespaceObject.serialize)(blocks),
|
|||
|
area
|
|||
|
});
|
|||
|
replaceBlocks(clientIds, (0,external_wp_blocks_namespaceObject.createBlock)('core/template-part', {
|
|||
|
slug: templatePart.slug,
|
|||
|
theme: templatePart.theme
|
|||
|
}));
|
|||
|
createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Template part created.'), {
|
|||
|
type: 'snackbar'
|
|||
|
}); // The modal and this component will be unmounted because of `replaceBlocks` above,
|
|||
|
// so no need to call `closeModal` or `onClose`.
|
|||
|
};
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, null, () => (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
onClick: () => {
|
|||
|
setIsModalOpen(true);
|
|||
|
}
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Make template part'))), isModalOpen && (0,external_wp_element_namespaceObject.createElement)(CreateTemplatePartModal, {
|
|||
|
closeModal: () => {
|
|||
|
setIsModalOpen(false);
|
|||
|
},
|
|||
|
onCreate: onConvert
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/template-part-converter/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function TemplatePartConverter() {
|
|||
|
var _blocks$;
|
|||
|
|
|||
|
const {
|
|||
|
clientIds,
|
|||
|
blocks
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
getSelectedBlockClientIds,
|
|||
|
getBlocksByClientId
|
|||
|
} = select(external_wp_blockEditor_namespaceObject.store);
|
|||
|
const selectedBlockClientIds = getSelectedBlockClientIds();
|
|||
|
return {
|
|||
|
clientIds: selectedBlockClientIds,
|
|||
|
blocks: getBlocksByClientId(selectedBlockClientIds)
|
|||
|
};
|
|||
|
}, []); // Allow converting a single template part to standard blocks.
|
|||
|
|
|||
|
if (blocks.length === 1 && ((_blocks$ = blocks[0]) === null || _blocks$ === void 0 ? void 0 : _blocks$.name) === 'core/template-part') {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(ConvertToRegularBlocks, {
|
|||
|
clientId: clientIds[0]
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(ConvertToTemplatePart, {
|
|||
|
clientIds: clientIds,
|
|||
|
blocks: blocks
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pencil.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const pencil = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M20.1 5.1L16.9 2 6.2 12.7l-1.3 4.4 4.5-1.3L20.1 5.1zM4 20.8h8v-1.5H4v1.5z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_pencil = (pencil);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/edit.js
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/* harmony default export */ var edit = (library_pencil);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/navigate-to-link/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function NavigateToLink(_ref) {
|
|||
|
let {
|
|||
|
type,
|
|||
|
id,
|
|||
|
activePage,
|
|||
|
onActivePageChange
|
|||
|
} = _ref;
|
|||
|
const post = (0,external_wp_data_namespaceObject.useSelect)(select => type && id && type !== 'URL' && select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', type, id), [type, id]);
|
|||
|
const onClick = (0,external_wp_element_namespaceObject.useMemo)(() => {
|
|||
|
if (!(post !== null && post !== void 0 && post.link)) return null;
|
|||
|
const path = (0,external_wp_url_namespaceObject.getPathAndQueryString)(post.link);
|
|||
|
if (path === (activePage === null || activePage === void 0 ? void 0 : activePage.path)) return null;
|
|||
|
return () => onActivePageChange({
|
|||
|
type,
|
|||
|
slug: post.slug,
|
|||
|
path,
|
|||
|
context: {
|
|||
|
postType: post.type,
|
|||
|
postId: post.id
|
|||
|
}
|
|||
|
});
|
|||
|
}, [post, activePage === null || activePage === void 0 ? void 0 : activePage.path, onActivePageChange]);
|
|||
|
return onClick && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
icon: edit,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Edit Page Template'),
|
|||
|
onClick: onClick
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/block-inspector-button.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function BlockInspectorButton(_ref) {
|
|||
|
let {
|
|||
|
onClick = () => {}
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
shortcut,
|
|||
|
isBlockInspectorOpen
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => ({
|
|||
|
shortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getShortcutRepresentation('core/edit-site/toggle-block-settings-sidebar'),
|
|||
|
isBlockInspectorOpen: select(store).getActiveComplementaryArea(store_store.name) === SIDEBAR_BLOCK
|
|||
|
}), []);
|
|||
|
const {
|
|||
|
enableComplementaryArea,
|
|||
|
disableComplementaryArea
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
|
|||
|
const label = isBlockInspectorOpen ? (0,external_wp_i18n_namespaceObject.__)('Hide more settings') : (0,external_wp_i18n_namespaceObject.__)('Show more settings');
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
onClick: () => {
|
|||
|
if (isBlockInspectorOpen) {
|
|||
|
disableComplementaryArea(STORE_NAME);
|
|||
|
(0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Block settings closed'));
|
|||
|
} else {
|
|||
|
enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK);
|
|||
|
(0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Additional settings are now available in the Editor block settings sidebar'));
|
|||
|
} // Close dropdown menu.
|
|||
|
|
|||
|
|
|||
|
onClick();
|
|||
|
},
|
|||
|
shortcut: shortcut
|
|||
|
}, label);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/edit-template-part-menu-button/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function EditTemplatePartMenuButton() {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, null, _ref => {
|
|||
|
let {
|
|||
|
selectedClientIds,
|
|||
|
onClose
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(EditTemplatePartMenuItem, {
|
|||
|
selectedClientId: selectedClientIds[0],
|
|||
|
onClose: onClose
|
|||
|
});
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function EditTemplatePartMenuItem(_ref2) {
|
|||
|
let {
|
|||
|
selectedClientId,
|
|||
|
onClose
|
|||
|
} = _ref2;
|
|||
|
const {
|
|||
|
params
|
|||
|
} = useLocation();
|
|||
|
const selectedTemplatePart = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const block = select(external_wp_blockEditor_namespaceObject.store).getBlock(selectedClientId);
|
|||
|
|
|||
|
if (block && (0,external_wp_blocks_namespaceObject.isTemplatePart)(block)) {
|
|||
|
const {
|
|||
|
theme,
|
|||
|
slug
|
|||
|
} = block.attributes;
|
|||
|
return select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', 'wp_template_part', // Ideally this should be an official public API.
|
|||
|
`${theme}//${slug}`);
|
|||
|
}
|
|||
|
}, [selectedClientId]);
|
|||
|
const linkProps = useLink({
|
|||
|
postId: selectedTemplatePart === null || selectedTemplatePart === void 0 ? void 0 : selectedTemplatePart.id,
|
|||
|
postType: selectedTemplatePart === null || selectedTemplatePart === void 0 ? void 0 : selectedTemplatePart.type
|
|||
|
}, {
|
|||
|
fromTemplateId: params.postId
|
|||
|
});
|
|||
|
|
|||
|
if (!selectedTemplatePart) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, extends_extends({}, linkProps, {
|
|||
|
onClick: event => {
|
|||
|
linkProps.onClick(event);
|
|||
|
onClose();
|
|||
|
}
|
|||
|
}),
|
|||
|
/* translators: %s: template part title */
|
|||
|
(0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Edit %s'), selectedTemplatePart.slug));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/arrow-left.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const arrowLeft = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M20 10.8H6.7l4.1-4.5-1.1-1.1-5.8 6.3 5.8 5.8 1.1-1.1-4-3.9H20z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var arrow_left = (arrowLeft);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/back-button.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function BackButton() {
|
|||
|
var _location$state;
|
|||
|
|
|||
|
const location = useLocation();
|
|||
|
const history = useHistory();
|
|||
|
const isTemplatePart = location.params.postType === 'wp_template_part';
|
|||
|
const previousTemplateId = (_location$state = location.state) === null || _location$state === void 0 ? void 0 : _location$state.fromTemplateId;
|
|||
|
|
|||
|
if (!isTemplatePart || !previousTemplateId) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
className: "edit-site-visual-editor__back-button",
|
|||
|
icon: arrow_left,
|
|||
|
onClick: () => {
|
|||
|
history.back();
|
|||
|
}
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Back'));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var back_button = (BackButton);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/resize-handle.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const DELTA_DISTANCE = 20; // The distance to resize per keydown in pixels.
|
|||
|
|
|||
|
function ResizeHandle(_ref) {
|
|||
|
let {
|
|||
|
direction,
|
|||
|
resizeWidthBy
|
|||
|
} = _ref;
|
|||
|
|
|||
|
function handleKeyDown(event) {
|
|||
|
const {
|
|||
|
keyCode
|
|||
|
} = event;
|
|||
|
|
|||
|
if (direction === 'left' && keyCode === external_wp_keycodes_namespaceObject.LEFT || direction === 'right' && keyCode === external_wp_keycodes_namespaceObject.RIGHT) {
|
|||
|
resizeWidthBy(DELTA_DISTANCE);
|
|||
|
} else if (direction === 'left' && keyCode === external_wp_keycodes_namespaceObject.RIGHT || direction === 'right' && keyCode === external_wp_keycodes_namespaceObject.LEFT) {
|
|||
|
resizeWidthBy(-DELTA_DISTANCE);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("button", {
|
|||
|
className: `resizable-editor__drag-handle is-${direction}`,
|
|||
|
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Drag to resize'),
|
|||
|
"aria-describedby": `resizable-editor__resize-help-${direction}`,
|
|||
|
onKeyDown: handleKeyDown
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
|
|||
|
id: `resizable-editor__resize-help-${direction}`
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Use left and right arrow keys to resize the canvas.')));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/resizable-editor.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const DEFAULT_STYLES = {
|
|||
|
width: '100%',
|
|||
|
height: '100%'
|
|||
|
}; // Removes the inline styles in the drag handles.
|
|||
|
|
|||
|
const HANDLE_STYLES_OVERRIDE = {
|
|||
|
position: undefined,
|
|||
|
userSelect: undefined,
|
|||
|
cursor: undefined,
|
|||
|
width: undefined,
|
|||
|
height: undefined,
|
|||
|
top: undefined,
|
|||
|
right: undefined,
|
|||
|
bottom: undefined,
|
|||
|
left: undefined
|
|||
|
};
|
|||
|
|
|||
|
function ResizableEditor(_ref) {
|
|||
|
let {
|
|||
|
enableResizing,
|
|||
|
settings,
|
|||
|
children,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
const deviceType = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).__experimentalGetPreviewDeviceType(), []);
|
|||
|
const deviceStyles = (0,external_wp_blockEditor_namespaceObject.__experimentalUseResizeCanvas)(deviceType);
|
|||
|
const [width, setWidth] = (0,external_wp_element_namespaceObject.useState)(DEFAULT_STYLES.width);
|
|||
|
const [height, setHeight] = (0,external_wp_element_namespaceObject.useState)(DEFAULT_STYLES.height);
|
|||
|
const iframeRef = (0,external_wp_element_namespaceObject.useRef)();
|
|||
|
const mouseMoveTypingResetRef = (0,external_wp_blockEditor_namespaceObject.__unstableUseMouseMoveTypingReset)();
|
|||
|
const ref = (0,external_wp_compose_namespaceObject.useMergeRefs)([iframeRef, mouseMoveTypingResetRef]);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(function autoResizeIframeHeight() {
|
|||
|
const iframe = iframeRef.current;
|
|||
|
|
|||
|
if (!iframe || !enableResizing) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
let animationFrame = null;
|
|||
|
|
|||
|
function resizeHeight() {
|
|||
|
if (!animationFrame) {
|
|||
|
// Throttle the updates on animation frame.
|
|||
|
animationFrame = iframe.contentWindow.requestAnimationFrame(() => {
|
|||
|
setHeight(iframe.contentDocument.documentElement.scrollHeight);
|
|||
|
animationFrame = null;
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
let resizeObserver;
|
|||
|
|
|||
|
function registerObserver() {
|
|||
|
var _resizeObserver;
|
|||
|
|
|||
|
(_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : _resizeObserver.disconnect();
|
|||
|
resizeObserver = new iframe.contentWindow.ResizeObserver(resizeHeight); // Observing the <html> rather than the <body> because the latter
|
|||
|
// gets destroyed and remounted after initialization in <Iframe>.
|
|||
|
|
|||
|
resizeObserver.observe(iframe.contentDocument.documentElement);
|
|||
|
resizeHeight();
|
|||
|
} // This is only required in Firefox for some unknown reasons.
|
|||
|
|
|||
|
|
|||
|
iframe.addEventListener('load', registerObserver); // This is required in Chrome and Safari.
|
|||
|
|
|||
|
registerObserver();
|
|||
|
return () => {
|
|||
|
var _iframe$contentWindow, _resizeObserver2;
|
|||
|
|
|||
|
(_iframe$contentWindow = iframe.contentWindow) === null || _iframe$contentWindow === void 0 ? void 0 : _iframe$contentWindow.cancelAnimationFrame(animationFrame);
|
|||
|
(_resizeObserver2 = resizeObserver) === null || _resizeObserver2 === void 0 ? void 0 : _resizeObserver2.disconnect();
|
|||
|
iframe.removeEventListener('load', registerObserver);
|
|||
|
};
|
|||
|
}, [enableResizing]);
|
|||
|
const resizeWidthBy = (0,external_wp_element_namespaceObject.useCallback)(deltaPixels => {
|
|||
|
if (iframeRef.current) {
|
|||
|
setWidth(iframeRef.current.offsetWidth + deltaPixels);
|
|||
|
}
|
|||
|
}, []);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ResizableBox, {
|
|||
|
size: {
|
|||
|
width,
|
|||
|
height
|
|||
|
},
|
|||
|
onResizeStop: (event, direction, element) => {
|
|||
|
setWidth(element.style.width);
|
|||
|
},
|
|||
|
minWidth: 300,
|
|||
|
maxWidth: "100%",
|
|||
|
maxHeight: "100%",
|
|||
|
enable: {
|
|||
|
right: enableResizing,
|
|||
|
left: enableResizing
|
|||
|
},
|
|||
|
showHandle: enableResizing // The editor is centered horizontally, resizing it only
|
|||
|
// moves half the distance. Hence double the ratio to correctly
|
|||
|
// align the cursor to the resizer handle.
|
|||
|
,
|
|||
|
resizeRatio: 2,
|
|||
|
handleComponent: {
|
|||
|
left: (0,external_wp_element_namespaceObject.createElement)(ResizeHandle, {
|
|||
|
direction: "left",
|
|||
|
resizeWidthBy: resizeWidthBy
|
|||
|
}),
|
|||
|
right: (0,external_wp_element_namespaceObject.createElement)(ResizeHandle, {
|
|||
|
direction: "right",
|
|||
|
resizeWidthBy: resizeWidthBy
|
|||
|
})
|
|||
|
},
|
|||
|
handleClasses: undefined,
|
|||
|
handleStyles: {
|
|||
|
left: HANDLE_STYLES_OVERRIDE,
|
|||
|
right: HANDLE_STYLES_OVERRIDE
|
|||
|
}
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableIframe, extends_extends({
|
|||
|
style: enableResizing ? undefined : deviceStyles,
|
|||
|
head: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, {
|
|||
|
styles: settings.styles
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)("style", null, // Forming a "block formatting context" to prevent margin collapsing.
|
|||
|
// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
|
|||
|
`.is-root-container { display: flow-root; }`), enableResizing && (0,external_wp_element_namespaceObject.createElement)("style", null, // Force the <html> and <body>'s heights to fit the content.
|
|||
|
`html, body { height: -moz-fit-content !important; height: fit-content !important; min-height: 0 !important; }`, // Some themes will have `min-height: 100vh` for the root container,
|
|||
|
// which isn't a requirement in auto resize mode.
|
|||
|
`.is-root-container { min-height: 0 !important; }`)),
|
|||
|
assets: settings.__unstableResolvedAssets,
|
|||
|
ref: ref,
|
|||
|
name: "editor-canvas",
|
|||
|
className: "edit-site-visual-editor__editor-canvas"
|
|||
|
}, props), settings.svgFilters, children));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var resizable_editor = (ResizableEditor);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const LAYOUT = {
|
|||
|
type: 'default',
|
|||
|
// At the root level of the site editor, no alignments should be allowed.
|
|||
|
alignments: []
|
|||
|
};
|
|||
|
function BlockEditor(_ref) {
|
|||
|
var _storedSettings$__exp, _storedSettings$__exp2;
|
|||
|
|
|||
|
let {
|
|||
|
setIsInserterOpen
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
storedSettings,
|
|||
|
templateType,
|
|||
|
templateId,
|
|||
|
page
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
getSettings,
|
|||
|
getEditedPostType,
|
|||
|
getEditedPostId,
|
|||
|
getPage
|
|||
|
} = select(store_store);
|
|||
|
return {
|
|||
|
storedSettings: getSettings(setIsInserterOpen),
|
|||
|
templateType: getEditedPostType(),
|
|||
|
templateId: getEditedPostId(),
|
|||
|
page: getPage()
|
|||
|
};
|
|||
|
}, [setIsInserterOpen]);
|
|||
|
const settingsBlockPatterns = (_storedSettings$__exp = storedSettings.__experimentalAdditionalBlockPatterns) !== null && _storedSettings$__exp !== void 0 ? _storedSettings$__exp : // WP 6.0
|
|||
|
storedSettings.__experimentalBlockPatterns; // WP 5.9
|
|||
|
|
|||
|
const settingsBlockPatternCategories = (_storedSettings$__exp2 = storedSettings.__experimentalAdditionalBlockPatternCategories) !== null && _storedSettings$__exp2 !== void 0 ? _storedSettings$__exp2 : // WP 6.0
|
|||
|
storedSettings.__experimentalBlockPatternCategories; // WP 5.9
|
|||
|
|
|||
|
const {
|
|||
|
restBlockPatterns,
|
|||
|
restBlockPatternCategories
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => ({
|
|||
|
restBlockPatterns: select(external_wp_coreData_namespaceObject.store).getBlockPatterns(),
|
|||
|
restBlockPatternCategories: select(external_wp_coreData_namespaceObject.store).getBlockPatternCategories()
|
|||
|
}), []);
|
|||
|
const blockPatterns = (0,external_wp_element_namespaceObject.useMemo)(() => (0,external_lodash_namespaceObject.unionBy)(settingsBlockPatterns, restBlockPatterns, 'name'), [settingsBlockPatterns, restBlockPatterns]);
|
|||
|
const blockPatternCategories = (0,external_wp_element_namespaceObject.useMemo)(() => (0,external_lodash_namespaceObject.unionBy)(settingsBlockPatternCategories, restBlockPatternCategories, 'name'), [settingsBlockPatternCategories, restBlockPatternCategories]);
|
|||
|
const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({ ...(0,external_lodash_namespaceObject.omit)(storedSettings, ['__experimentalAdditionalBlockPatterns', '__experimentalAdditionalBlockPatternCategories']),
|
|||
|
__experimentalBlockPatterns: blockPatterns,
|
|||
|
__experimentalBlockPatternCategories: blockPatternCategories
|
|||
|
}), [storedSettings, blockPatterns, blockPatternCategories]);
|
|||
|
const [blocks, onInput, onChange] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', templateType);
|
|||
|
const {
|
|||
|
setPage
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const {
|
|||
|
enableComplementaryArea
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
|
|||
|
const openNavigationSidebar = (0,external_wp_element_namespaceObject.useCallback)(() => {
|
|||
|
enableComplementaryArea('core/edit-site', 'edit-site/navigation-menu');
|
|||
|
}, [enableComplementaryArea]);
|
|||
|
const contentRef = (0,external_wp_element_namespaceObject.useRef)();
|
|||
|
const mergedRefs = (0,external_wp_compose_namespaceObject.useMergeRefs)([contentRef, (0,external_wp_blockEditor_namespaceObject.__unstableUseTypingObserver)()]);
|
|||
|
const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<');
|
|||
|
const {
|
|||
|
clearSelectedBlock
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
|
|||
|
const isTemplatePart = templateType === 'wp_template_part';
|
|||
|
const hasBlocks = blocks.length !== 0;
|
|||
|
|
|||
|
const NavMenuSidebarToggle = () => (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToolbarGroup, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToolbarButton, {
|
|||
|
className: "components-toolbar__control",
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Open list view'),
|
|||
|
onClick: openNavigationSidebar,
|
|||
|
icon: list_view
|
|||
|
})); // Conditionally include NavMenu sidebar in Plugin only.
|
|||
|
// Optimise for dead code elimination.
|
|||
|
// See https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/feature-flags.md#dead-code-elimination.
|
|||
|
|
|||
|
|
|||
|
let MaybeNavMenuSidebarToggle = external_wp_element_namespaceObject.Fragment;
|
|||
|
|
|||
|
if (false) {}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, {
|
|||
|
settings: settings,
|
|||
|
value: blocks,
|
|||
|
onInput: onInput,
|
|||
|
onChange: onChange,
|
|||
|
useSubRegistry: false
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(EditTemplatePartMenuButton, null), (0,external_wp_element_namespaceObject.createElement)(TemplatePartConverter, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalLinkControl.ViewerFill, null, (0,external_wp_element_namespaceObject.useCallback)(fillProps => (0,external_wp_element_namespaceObject.createElement)(NavigateToLink, extends_extends({}, fillProps, {
|
|||
|
activePage: page,
|
|||
|
onActivePageChange: setPage
|
|||
|
})), [page])), (0,external_wp_element_namespaceObject.createElement)(SidebarInspectorFill, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockInspector, null)), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockTools, {
|
|||
|
className: classnames_default()('edit-site-visual-editor', {
|
|||
|
'is-focus-mode': isTemplatePart
|
|||
|
}),
|
|||
|
__unstableContentRef: contentRef,
|
|||
|
onClick: event => {
|
|||
|
// Clear selected block when clicking on the gray background.
|
|||
|
if (event.target === event.currentTarget) {
|
|||
|
clearSelectedBlock();
|
|||
|
}
|
|||
|
}
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockEditorKeyboardShortcuts.Register, null), (0,external_wp_element_namespaceObject.createElement)(back_button, null), (0,external_wp_element_namespaceObject.createElement)(resizable_editor // Reinitialize the editor and reset the states when the template changes.
|
|||
|
, {
|
|||
|
key: templateId,
|
|||
|
enableResizing: isTemplatePart && // Disable resizing in mobile viewport.
|
|||
|
!isMobileViewport,
|
|||
|
settings: settings,
|
|||
|
contentRef: mergedRefs
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockList, {
|
|||
|
className: "edit-site-block-editor__block-list wp-site-blocks",
|
|||
|
__experimentalLayout: LAYOUT,
|
|||
|
renderAppender: isTemplatePart && hasBlocks ? false : undefined
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableBlockSettingsMenuFirstItem, null, _ref2 => {
|
|||
|
let {
|
|||
|
onClose
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(BlockInspectorButton, {
|
|||
|
onClick: onClose
|
|||
|
});
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableBlockToolbarLastItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableBlockNameContext.Consumer, null, blockName => blockName === 'core/navigation' && (0,external_wp_element_namespaceObject.createElement)(MaybeNavMenuSidebarToggle, null)))), (0,external_wp_element_namespaceObject.createElement)(external_wp_reusableBlocks_namespaceObject.ReusableBlocksMenuItems, null));
|
|||
|
}
|
|||
|
|
|||
|
// EXTERNAL MODULE: ./node_modules/react-autosize-textarea/lib/index.js
|
|||
|
var lib = __webpack_require__(773);
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/code-editor/code-editor-text-area.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function CodeEditorTextArea(_ref) {
|
|||
|
let {
|
|||
|
value,
|
|||
|
onChange,
|
|||
|
onInput
|
|||
|
} = _ref;
|
|||
|
const [stateValue, setStateValue] = (0,external_wp_element_namespaceObject.useState)(value);
|
|||
|
const [isDirty, setIsDirty] = (0,external_wp_element_namespaceObject.useState)(false);
|
|||
|
const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(CodeEditorTextArea);
|
|||
|
|
|||
|
if (!isDirty && stateValue !== value) {
|
|||
|
setStateValue(value);
|
|||
|
}
|
|||
|
/**
|
|||
|
* Handles a textarea change event to notify the onChange prop callback and
|
|||
|
* reflect the new value in the component's own state. This marks the start
|
|||
|
* of the user's edits, if not already changed, preventing future props
|
|||
|
* changes to value from replacing the rendered value. This is expected to
|
|||
|
* be followed by a reset to dirty state via `stopEditing`.
|
|||
|
*
|
|||
|
* @see stopEditing
|
|||
|
*
|
|||
|
* @param {Event} event Change event.
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
const onChangeHandler = event => {
|
|||
|
const newValue = event.target.value;
|
|||
|
onInput(newValue);
|
|||
|
setStateValue(newValue);
|
|||
|
setIsDirty(true);
|
|||
|
};
|
|||
|
/**
|
|||
|
* Function called when the user has completed their edits, responsible for
|
|||
|
* ensuring that changes, if made, are surfaced to the onPersist prop
|
|||
|
* callback and resetting dirty state.
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
const stopEditing = () => {
|
|||
|
if (isDirty) {
|
|||
|
onChange(stateValue);
|
|||
|
setIsDirty(false);
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
|
|||
|
as: "label",
|
|||
|
htmlFor: `code-editor-text-area-${instanceId}`
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Type text or HTML')), (0,external_wp_element_namespaceObject.createElement)(lib/* default */.Z, {
|
|||
|
autoComplete: "off",
|
|||
|
dir: "auto",
|
|||
|
value: stateValue,
|
|||
|
onChange: onChangeHandler,
|
|||
|
onBlur: stopEditing,
|
|||
|
className: "edit-site-code-editor-text-area",
|
|||
|
id: `code-editor-text-area-${instanceId}`,
|
|||
|
placeholder: (0,external_wp_i18n_namespaceObject.__)('Start writing with text or HTML')
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/code-editor/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function CodeEditor() {
|
|||
|
const {
|
|||
|
templateType,
|
|||
|
shortcut
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
getEditedPostType
|
|||
|
} = select(store_store);
|
|||
|
const {
|
|||
|
getShortcutRepresentation
|
|||
|
} = select(external_wp_keyboardShortcuts_namespaceObject.store);
|
|||
|
return {
|
|||
|
templateType: getEditedPostType(),
|
|||
|
shortcut: getShortcutRepresentation('core/edit-site/toggle-mode')
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const [contentStructure, setContent] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', templateType, 'content');
|
|||
|
const [blocks,, onChange] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', templateType);
|
|||
|
const content = contentStructure instanceof Function ? contentStructure({
|
|||
|
blocks
|
|||
|
}) : contentStructure;
|
|||
|
const {
|
|||
|
switchEditorMode
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-code-editor"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-code-editor__toolbar"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("h2", null, (0,external_wp_i18n_namespaceObject.__)('Editing code')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
variant: "tertiary",
|
|||
|
onClick: () => switchEditorMode('visual'),
|
|||
|
shortcut: shortcut
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Exit code editor'))), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-code-editor__body"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(CodeEditorTextArea, {
|
|||
|
value: content,
|
|||
|
onChange: newContent => {
|
|||
|
onChange((0,external_wp_blocks_namespaceObject.parse)(newContent), {
|
|||
|
selection: undefined
|
|||
|
});
|
|||
|
},
|
|||
|
onInput: setContent
|
|||
|
})));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/keyboard-shortcuts/index.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function KeyboardShortcuts(_ref) {
|
|||
|
let {
|
|||
|
openEntitiesSavedStates
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
__experimentalGetDirtyEntityRecords,
|
|||
|
isSavingEntityRecord
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store);
|
|||
|
const {
|
|||
|
getEditorMode
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(store_store);
|
|||
|
const isListViewOpen = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).isListViewOpened(), []);
|
|||
|
const isBlockInspectorOpen = (0,external_wp_data_namespaceObject.useSelect)(select => select(store).getActiveComplementaryArea(store_store.name) === SIDEBAR_BLOCK, []);
|
|||
|
const {
|
|||
|
redo,
|
|||
|
undo
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
|
|||
|
const {
|
|||
|
setIsListViewOpened,
|
|||
|
switchEditorMode
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const {
|
|||
|
enableComplementaryArea,
|
|||
|
disableComplementaryArea
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
|
|||
|
(0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/save', event => {
|
|||
|
event.preventDefault();
|
|||
|
|
|||
|
const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
|
|||
|
|
|||
|
const isDirty = !!dirtyEntityRecords.length;
|
|||
|
const isSaving = dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key));
|
|||
|
|
|||
|
if (!isSaving && isDirty) {
|
|||
|
openEntitiesSavedStates();
|
|||
|
}
|
|||
|
});
|
|||
|
(0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/undo', event => {
|
|||
|
undo();
|
|||
|
event.preventDefault();
|
|||
|
});
|
|||
|
(0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/redo', event => {
|
|||
|
redo();
|
|||
|
event.preventDefault();
|
|||
|
});
|
|||
|
(0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/toggle-list-view', () => {
|
|||
|
setIsListViewOpened(!isListViewOpen);
|
|||
|
});
|
|||
|
(0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/toggle-block-settings-sidebar', event => {
|
|||
|
// This shortcut has no known clashes, but use preventDefault to prevent any
|
|||
|
// obscure shortcuts from triggering.
|
|||
|
event.preventDefault();
|
|||
|
|
|||
|
if (isBlockInspectorOpen) {
|
|||
|
disableComplementaryArea(STORE_NAME);
|
|||
|
} else {
|
|||
|
enableComplementaryArea(STORE_NAME, SIDEBAR_BLOCK);
|
|||
|
}
|
|||
|
});
|
|||
|
(0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/toggle-mode', () => {
|
|||
|
switchEditorMode(getEditorMode() === 'visual' ? 'text' : 'visual');
|
|||
|
});
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
function KeyboardShortcutsRegister() {
|
|||
|
// Registering the shortcuts.
|
|||
|
const {
|
|||
|
registerShortcut
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_keyboardShortcuts_namespaceObject.store);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/save',
|
|||
|
category: 'global',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Save your changes.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'primary',
|
|||
|
character: 's'
|
|||
|
}
|
|||
|
});
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/undo',
|
|||
|
category: 'global',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Undo your last changes.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'primary',
|
|||
|
character: 'z'
|
|||
|
}
|
|||
|
});
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/redo',
|
|||
|
category: 'global',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Redo your last undo.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'primaryShift',
|
|||
|
character: 'z'
|
|||
|
}
|
|||
|
});
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/toggle-list-view',
|
|||
|
category: 'global',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Open the block list view.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'access',
|
|||
|
character: 'o'
|
|||
|
}
|
|||
|
});
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/toggle-block-settings-sidebar',
|
|||
|
category: 'global',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Show or hide the block settings sidebar.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'primaryShift',
|
|||
|
character: ','
|
|||
|
}
|
|||
|
});
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/keyboard-shortcuts',
|
|||
|
category: 'main',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Display these keyboard shortcuts.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'access',
|
|||
|
character: 'h'
|
|||
|
}
|
|||
|
});
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/next-region',
|
|||
|
category: 'global',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the next part of the editor.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'ctrl',
|
|||
|
character: '`'
|
|||
|
},
|
|||
|
aliases: [{
|
|||
|
modifier: 'access',
|
|||
|
character: 'n'
|
|||
|
}]
|
|||
|
});
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/previous-region',
|
|||
|
category: 'global',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous part of the editor.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'ctrlShift',
|
|||
|
character: '`'
|
|||
|
},
|
|||
|
aliases: [{
|
|||
|
modifier: 'access',
|
|||
|
character: 'p'
|
|||
|
}]
|
|||
|
});
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/toggle-mode',
|
|||
|
category: 'global',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Switch between visual editor and code editor.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'secondary',
|
|||
|
character: 'm'
|
|||
|
}
|
|||
|
});
|
|||
|
}, [registerShortcut]);
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
KeyboardShortcuts.Register = KeyboardShortcutsRegister;
|
|||
|
/* harmony default export */ var keyboard_shortcuts = (KeyboardShortcuts);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/url-query-controller/index.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function URLQueryController() {
|
|||
|
const {
|
|||
|
setTemplate,
|
|||
|
setTemplatePart,
|
|||
|
setPage
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const {
|
|||
|
params: {
|
|||
|
postId,
|
|||
|
postType
|
|||
|
}
|
|||
|
} = useLocation(); // Set correct entity on page navigation.
|
|||
|
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
if ('page' === postType || 'post' === postType) {
|
|||
|
setPage({
|
|||
|
context: {
|
|||
|
postType,
|
|||
|
postId
|
|||
|
}
|
|||
|
}); // Resolves correct template based on ID.
|
|||
|
} else if ('wp_template' === postType) {
|
|||
|
setTemplate(postId);
|
|||
|
} else if ('wp_template_part' === postType) {
|
|||
|
setTemplatePart(postId);
|
|||
|
}
|
|||
|
}, [postId, postType]);
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const close_close = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_close = (close_close);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/secondary-sidebar/inserter-sidebar.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function InserterSidebar() {
|
|||
|
const {
|
|||
|
setIsInserterOpened
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const insertionPoint = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).__experimentalGetInsertionPoint(), []);
|
|||
|
const isMobile = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<');
|
|||
|
const TagName = !isMobile ? external_wp_components_namespaceObject.VisuallyHidden : 'div';
|
|||
|
const [inserterDialogRef, inserterDialogProps] = (0,external_wp_compose_namespaceObject.__experimentalUseDialog)({
|
|||
|
onClose: () => setIsInserterOpened(false),
|
|||
|
focusOnMount: null
|
|||
|
});
|
|||
|
const libraryRef = (0,external_wp_element_namespaceObject.useRef)();
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
libraryRef.current.focusSearch();
|
|||
|
}, []);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", extends_extends({
|
|||
|
ref: inserterDialogRef
|
|||
|
}, inserterDialogProps, {
|
|||
|
className: "edit-site-editor__inserter-panel"
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(TagName, {
|
|||
|
className: "edit-site-editor__inserter-panel-header"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
icon: library_close,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Close block inserter'),
|
|||
|
onClick: () => setIsInserterOpened(false)
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-editor__inserter-panel-content"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalLibrary, {
|
|||
|
showInserterHelpPanel: true,
|
|||
|
shouldFocusBlock: isMobile,
|
|||
|
rootClientId: insertionPoint.rootClientId,
|
|||
|
__experimentalInsertionIndex: insertionPoint.insertionIndex,
|
|||
|
__experimentalFilterValue: insertionPoint.filterValue,
|
|||
|
ref: libraryRef
|
|||
|
})));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/secondary-sidebar/list-view-sidebar.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function ListViewSidebar() {
|
|||
|
const {
|
|||
|
setIsListViewOpened
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const focusOnMountRef = (0,external_wp_compose_namespaceObject.useFocusOnMount)('firstElement');
|
|||
|
const headerFocusReturnRef = (0,external_wp_compose_namespaceObject.useFocusReturn)();
|
|||
|
const contentFocusReturnRef = (0,external_wp_compose_namespaceObject.useFocusReturn)();
|
|||
|
|
|||
|
function closeOnEscape(event) {
|
|||
|
if (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE && !event.defaultPrevented) {
|
|||
|
setIsListViewOpened(false);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(ListViewSidebar);
|
|||
|
const labelId = `edit-site-editor__list-view-panel-label-${instanceId}`;
|
|||
|
return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|||
|
(0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
"aria-labelledby": labelId,
|
|||
|
className: "edit-site-editor__list-view-panel",
|
|||
|
onKeyDown: closeOnEscape
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-editor__list-view-panel-header",
|
|||
|
ref: headerFocusReturnRef
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("strong", {
|
|||
|
id: labelId
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('List View')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
icon: close_small,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Close List View Sidebar'),
|
|||
|
onClick: () => setIsListViewOpened(false)
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-editor__list-view-panel-content",
|
|||
|
ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([contentFocusReturnRef, focusOnMountRef])
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalListView, {
|
|||
|
showNestedBlocks: true,
|
|||
|
__experimentalFeatures: true,
|
|||
|
__experimentalPersistentListViewFeatures: true
|
|||
|
})))
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/error-boundary/warning.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function CopyButton(_ref) {
|
|||
|
let {
|
|||
|
text,
|
|||
|
children
|
|||
|
} = _ref;
|
|||
|
const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(text);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
variant: "secondary",
|
|||
|
ref: ref
|
|||
|
}, children);
|
|||
|
}
|
|||
|
|
|||
|
function ErrorBoundaryWarning(_ref2) {
|
|||
|
let {
|
|||
|
message,
|
|||
|
error,
|
|||
|
reboot,
|
|||
|
dashboardLink
|
|||
|
} = _ref2;
|
|||
|
const actions = [];
|
|||
|
|
|||
|
if (reboot) {
|
|||
|
actions.push((0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
key: "recovery",
|
|||
|
onClick: reboot,
|
|||
|
variant: "secondary"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Attempt Recovery')));
|
|||
|
}
|
|||
|
|
|||
|
if (error) {
|
|||
|
actions.push((0,external_wp_element_namespaceObject.createElement)(CopyButton, {
|
|||
|
key: "copy-error",
|
|||
|
text: error.stack
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Copy Error')));
|
|||
|
}
|
|||
|
|
|||
|
if (dashboardLink) {
|
|||
|
actions.push((0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
key: "back-to-dashboard",
|
|||
|
variant: "secondary",
|
|||
|
href: dashboardLink
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Back to dashboard')));
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.Warning, {
|
|||
|
className: "editor-error-boundary",
|
|||
|
actions: actions
|
|||
|
}, message);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/error-boundary/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
class ErrorBoundary extends external_wp_element_namespaceObject.Component {
|
|||
|
constructor() {
|
|||
|
super(...arguments);
|
|||
|
this.reboot = this.reboot.bind(this);
|
|||
|
this.state = {
|
|||
|
error: null
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
static getDerivedStateFromError(error) {
|
|||
|
return {
|
|||
|
error
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
reboot() {
|
|||
|
this.props.onError();
|
|||
|
}
|
|||
|
|
|||
|
render() {
|
|||
|
const {
|
|||
|
error
|
|||
|
} = this.state;
|
|||
|
|
|||
|
if (!error) {
|
|||
|
return this.props.children;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(ErrorBoundaryWarning, {
|
|||
|
message: (0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error.'),
|
|||
|
error: error,
|
|||
|
reboot: this.reboot
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/image.js
|
|||
|
|
|||
|
function WelcomeGuideImage(_ref) {
|
|||
|
let {
|
|||
|
nonAnimatedSrc,
|
|||
|
animatedSrc
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("picture", {
|
|||
|
className: "edit-site-welcome-guide__image"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("source", {
|
|||
|
srcSet: nonAnimatedSrc,
|
|||
|
media: "(prefers-reduced-motion: reduce)"
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)("img", {
|
|||
|
src: animatedSrc,
|
|||
|
width: "312",
|
|||
|
height: "240",
|
|||
|
alt: ""
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/editor.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function WelcomeGuideEditor() {
|
|||
|
const {
|
|||
|
toggle
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
|
|||
|
const isActive = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuide'), []);
|
|||
|
|
|||
|
if (!isActive) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Guide, {
|
|||
|
className: "edit-site-welcome-guide",
|
|||
|
contentLabel: (0,external_wp_i18n_namespaceObject.__)('Welcome to the site editor'),
|
|||
|
finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Get Started'),
|
|||
|
onFinish: () => toggle('core/edit-site', 'welcomeGuide'),
|
|||
|
pages: [{
|
|||
|
image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, {
|
|||
|
nonAnimatedSrc: "https://s.w.org/images/block-editor/edit-your-site.svg?1",
|
|||
|
animatedSrc: "https://s.w.org/images/block-editor/edit-your-site.gif?1"
|
|||
|
}),
|
|||
|
content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", {
|
|||
|
className: "edit-site-welcome-guide__heading"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Edit your site')), (0,external_wp_element_namespaceObject.createElement)("p", {
|
|||
|
className: "edit-site-welcome-guide__text"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Design everything on your site — from the header right down to the footer — using blocks.')), (0,external_wp_element_namespaceObject.createElement)("p", {
|
|||
|
className: "edit-site-welcome-guide__text"
|
|||
|
}, (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.__)('Click <StylesIconImage /> to start designing your blocks, and choose your typography, layout, and colors.'), {
|
|||
|
StylesIconImage: (0,external_wp_element_namespaceObject.createElement)("img", {
|
|||
|
alt: (0,external_wp_i18n_namespaceObject.__)('styles'),
|
|||
|
src: "data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' fill='%231E1E1E'/%3E%3C/svg%3E%0A"
|
|||
|
})
|
|||
|
})))
|
|||
|
}]
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/styles.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function WelcomeGuideStyles() {
|
|||
|
const {
|
|||
|
toggle
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
|
|||
|
const {
|
|||
|
isActive,
|
|||
|
isStylesOpen
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const sidebar = select(store).getActiveComplementaryArea(store_store.name);
|
|||
|
return {
|
|||
|
isActive: !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuideStyles'),
|
|||
|
isStylesOpen: sidebar === 'edit-site/global-styles'
|
|||
|
};
|
|||
|
}, []);
|
|||
|
|
|||
|
if (!isActive || !isStylesOpen) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Guide, {
|
|||
|
className: "edit-site-welcome-guide",
|
|||
|
contentLabel: (0,external_wp_i18n_namespaceObject.__)('Welcome to styles'),
|
|||
|
finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Get Started'),
|
|||
|
onFinish: () => toggle('core/edit-site', 'welcomeGuideStyles'),
|
|||
|
pages: [{
|
|||
|
image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, {
|
|||
|
nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.svg?1",
|
|||
|
animatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.gif?1"
|
|||
|
}),
|
|||
|
content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", {
|
|||
|
className: "edit-site-welcome-guide__heading"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Welcome to Styles')), (0,external_wp_element_namespaceObject.createElement)("p", {
|
|||
|
className: "edit-site-welcome-guide__text"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Tweak your site, or give it a whole new look! Get creative — how about a new color palette for your buttons, or choosing a new font? Take a look at what you can do here.')))
|
|||
|
}, {
|
|||
|
image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, {
|
|||
|
nonAnimatedSrc: "https://s.w.org/images/block-editor/set-the-design.svg?1",
|
|||
|
animatedSrc: "https://s.w.org/images/block-editor/set-the-design.gif?1"
|
|||
|
}),
|
|||
|
content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", {
|
|||
|
className: "edit-site-welcome-guide__heading"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Set the design')), (0,external_wp_element_namespaceObject.createElement)("p", {
|
|||
|
className: "edit-site-welcome-guide__text"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('You can customize your site as much as you like with different colors, typography, and layouts. Or if you prefer, just leave it up to your theme to handle! ')))
|
|||
|
}, {
|
|||
|
image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, {
|
|||
|
nonAnimatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.svg?1",
|
|||
|
animatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.gif?1"
|
|||
|
}),
|
|||
|
content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", {
|
|||
|
className: "edit-site-welcome-guide__heading"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Personalize blocks')), (0,external_wp_element_namespaceObject.createElement)("p", {
|
|||
|
className: "edit-site-welcome-guide__text"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('You can adjust your blocks to ensure a cohesive experience across your site — add your unique colors to a branded Button block, or adjust the Heading block to your preferred size.')))
|
|||
|
}, {
|
|||
|
image: (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideImage, {
|
|||
|
nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.svg",
|
|||
|
animatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.gif"
|
|||
|
}),
|
|||
|
content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("h1", {
|
|||
|
className: "edit-site-welcome-guide__heading"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Learn more')), (0,external_wp_element_namespaceObject.createElement)("p", {
|
|||
|
className: "edit-site-welcome-guide__text"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('New to block themes and styling your site? '), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ExternalLink, {
|
|||
|
href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/support/article/styles-overview/')
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Here’s a detailed guide to learn how to make the most of it.'))))
|
|||
|
}]
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function WelcomeGuide() {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideEditor, null), (0,external_wp_element_namespaceObject.createElement)(WelcomeGuideStyles, null));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor/global-styles-renderer.js
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function useGlobalStylesRenderer() {
|
|||
|
const [styles, settings, svgFilters] = useGlobalStylesOutput();
|
|||
|
const {
|
|||
|
getSettings
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(store_store);
|
|||
|
const {
|
|||
|
updateSettings
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
if (!styles || !settings) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
const currentStoreSettings = getSettings();
|
|||
|
const nonGlobalStyles = (0,external_lodash_namespaceObject.filter)(currentStoreSettings.styles, style => !style.isGlobalStyles);
|
|||
|
updateSettings({ ...currentStoreSettings,
|
|||
|
styles: [...nonGlobalStyles, ...styles],
|
|||
|
svgFilters,
|
|||
|
__experimentalFeatures: settings
|
|||
|
});
|
|||
|
}, [styles, settings]);
|
|||
|
}
|
|||
|
|
|||
|
function GlobalStylesRenderer() {
|
|||
|
useGlobalStylesRenderer();
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/use-title.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function useTitle(title) {
|
|||
|
const location = useLocation();
|
|||
|
const siteTitle = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
var _select$getEntityReco;
|
|||
|
|
|||
|
return (_select$getEntityReco = select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', 'site')) === null || _select$getEntityReco === void 0 ? void 0 : _select$getEntityReco.title;
|
|||
|
}, []);
|
|||
|
const isInitialLocationRef = (0,external_wp_element_namespaceObject.useRef)(true);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
isInitialLocationRef.current = false;
|
|||
|
}, [location]);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
// Don't update or announce the title for initial page load.
|
|||
|
if (isInitialLocationRef.current) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (title && siteTitle) {
|
|||
|
// @see https://github.com/WordPress/wordpress-develop/blob/94849898192d271d533e09756007e176feb80697/src/wp-admin/admin-header.php#L67-L68
|
|||
|
const formattedTitle = (0,external_wp_i18n_namespaceObject.sprintf)(
|
|||
|
/* translators: Admin screen title. 1: Admin screen name, 2: Network or site name. */
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('%1$s ‹ %2$s — WordPress'), title, siteTitle);
|
|||
|
document.title = formattedTitle; // Announce title on route change for screen readers.
|
|||
|
|
|||
|
(0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.sprintf)(
|
|||
|
/* translators: The page title that is currently displaying. */
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('Now displaying: %s'), document.title), 'assertive');
|
|||
|
}
|
|||
|
}, [title, siteTitle, location]);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const interfaceLabels = {
|
|||
|
drawer: (0,external_wp_i18n_namespaceObject.__)('Navigation Sidebar')
|
|||
|
};
|
|||
|
|
|||
|
function Editor(_ref) {
|
|||
|
let {
|
|||
|
onError
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
isInserterOpen,
|
|||
|
isListViewOpen,
|
|||
|
sidebarIsOpened,
|
|||
|
settings,
|
|||
|
entityId,
|
|||
|
templateType,
|
|||
|
page,
|
|||
|
template,
|
|||
|
templateResolved,
|
|||
|
isNavigationOpen,
|
|||
|
previousShortcut,
|
|||
|
nextShortcut,
|
|||
|
editorMode,
|
|||
|
showIconLabels
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
const {
|
|||
|
isInserterOpened,
|
|||
|
isListViewOpened,
|
|||
|
getSettings,
|
|||
|
getEditedPostType,
|
|||
|
getEditedPostId,
|
|||
|
getPage,
|
|||
|
isNavigationOpened,
|
|||
|
getEditorMode
|
|||
|
} = select(store_store);
|
|||
|
const {
|
|||
|
hasFinishedResolution,
|
|||
|
getEntityRecord
|
|||
|
} = select(external_wp_coreData_namespaceObject.store);
|
|||
|
const postType = getEditedPostType();
|
|||
|
const postId = getEditedPostId(); // The currently selected entity to display. Typically template or template part.
|
|||
|
|
|||
|
return {
|
|||
|
isInserterOpen: isInserterOpened(),
|
|||
|
isListViewOpen: isListViewOpened(),
|
|||
|
sidebarIsOpened: !!select(store).getActiveComplementaryArea(store_store.name),
|
|||
|
settings: getSettings(),
|
|||
|
templateType: postType,
|
|||
|
page: getPage(),
|
|||
|
template: postId ? getEntityRecord('postType', postType, postId) : null,
|
|||
|
templateResolved: postId ? hasFinishedResolution('getEntityRecord', ['postType', postType, postId]) : false,
|
|||
|
entityId: postId,
|
|||
|
isNavigationOpen: isNavigationOpened(),
|
|||
|
previousShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/previous-region'),
|
|||
|
nextShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/next-region'),
|
|||
|
editorMode: getEditorMode(),
|
|||
|
showIconLabels: select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'showIconLabels')
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const {
|
|||
|
setPage,
|
|||
|
setIsInserterOpened
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const {
|
|||
|
enableComplementaryArea
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
|
|||
|
const [isEntitiesSavedStatesOpen, setIsEntitiesSavedStatesOpen] = (0,external_wp_element_namespaceObject.useState)(false);
|
|||
|
const openEntitiesSavedStates = (0,external_wp_element_namespaceObject.useCallback)(() => setIsEntitiesSavedStatesOpen(true), []);
|
|||
|
const closeEntitiesSavedStates = (0,external_wp_element_namespaceObject.useCallback)(() => {
|
|||
|
setIsEntitiesSavedStatesOpen(false);
|
|||
|
}, []);
|
|||
|
const blockContext = (0,external_wp_element_namespaceObject.useMemo)(() => ({ ...(page === null || page === void 0 ? void 0 : page.context),
|
|||
|
queryContext: [(page === null || page === void 0 ? void 0 : page.context.queryContext) || {
|
|||
|
page: 1
|
|||
|
}, newQueryContext => setPage({ ...page,
|
|||
|
context: { ...(page === null || page === void 0 ? void 0 : page.context),
|
|||
|
queryContext: { ...(page === null || page === void 0 ? void 0 : page.context.queryContext),
|
|||
|
...newQueryContext
|
|||
|
}
|
|||
|
}
|
|||
|
})]
|
|||
|
}), [page === null || page === void 0 ? void 0 : page.context]);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
if (isNavigationOpen) {
|
|||
|
document.body.classList.add('is-navigation-sidebar-open');
|
|||
|
} else {
|
|||
|
document.body.classList.remove('is-navigation-sidebar-open');
|
|||
|
}
|
|||
|
}, [isNavigationOpen]);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(function openGlobalStylesOnLoad() {
|
|||
|
const searchParams = new URLSearchParams(window.location.search);
|
|||
|
|
|||
|
if (searchParams.get('styles') === 'open') {
|
|||
|
enableComplementaryArea('core/edit-site', 'edit-site/global-styles');
|
|||
|
}
|
|||
|
}, [enableComplementaryArea]); // Don't render the Editor until the settings are set and loaded.
|
|||
|
|
|||
|
const isReady = (settings === null || settings === void 0 ? void 0 : settings.siteUrl) && templateType !== undefined && entityId !== undefined;
|
|||
|
const secondarySidebarLabel = isListViewOpen ? (0,external_wp_i18n_namespaceObject.__)('List View') : (0,external_wp_i18n_namespaceObject.__)('Block Library');
|
|||
|
|
|||
|
const secondarySidebar = () => {
|
|||
|
if (editorMode === 'visual' && isInserterOpen) {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(InserterSidebar, null);
|
|||
|
}
|
|||
|
|
|||
|
if (editorMode === 'visual' && isListViewOpen) {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(ListViewSidebar, null);
|
|||
|
}
|
|||
|
|
|||
|
return null;
|
|||
|
}; // Only announce the title once the editor is ready to prevent "Replace"
|
|||
|
// action in <URlQueryController> from double-announcing.
|
|||
|
|
|||
|
|
|||
|
useTitle(isReady && (0,external_wp_i18n_namespaceObject.__)('Editor (beta)'));
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(URLQueryController, null), isReady && (0,external_wp_element_namespaceObject.createElement)(external_wp_keyboardShortcuts_namespaceObject.ShortcutProvider, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_coreData_namespaceObject.EntityProvider, {
|
|||
|
kind: "root",
|
|||
|
type: "site"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_coreData_namespaceObject.EntityProvider, {
|
|||
|
kind: "postType",
|
|||
|
type: templateType,
|
|||
|
id: entityId
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesProvider, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockContextProvider, {
|
|||
|
value: blockContext
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(GlobalStylesRenderer, null), (0,external_wp_element_namespaceObject.createElement)(ErrorBoundary, {
|
|||
|
onError: onError
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(keyboard_shortcuts.Register, null), (0,external_wp_element_namespaceObject.createElement)(SidebarComplementaryAreaFills, null), (0,external_wp_element_namespaceObject.createElement)(interface_skeleton, {
|
|||
|
labels: { ...interfaceLabels,
|
|||
|
secondarySidebar: secondarySidebarLabel
|
|||
|
},
|
|||
|
className: showIconLabels && 'show-icon-labels',
|
|||
|
secondarySidebar: secondarySidebar(),
|
|||
|
sidebar: sidebarIsOpened && (0,external_wp_element_namespaceObject.createElement)(complementary_area.Slot, {
|
|||
|
scope: "core/edit-site"
|
|||
|
}),
|
|||
|
drawer: (0,external_wp_element_namespaceObject.createElement)(navigation_sidebar.Slot, null),
|
|||
|
header: (0,external_wp_element_namespaceObject.createElement)(Header, {
|
|||
|
openEntitiesSavedStates: openEntitiesSavedStates,
|
|||
|
showIconLabels: showIconLabels
|
|||
|
}),
|
|||
|
notices: (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.EditorSnackbars, null),
|
|||
|
content: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.EditorNotices, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockStyles.Slot, {
|
|||
|
scope: "core/block-inspector"
|
|||
|
}), editorMode === 'visual' && template && (0,external_wp_element_namespaceObject.createElement)(BlockEditor, {
|
|||
|
setIsInserterOpen: setIsInserterOpened
|
|||
|
}), editorMode === 'text' && template && (0,external_wp_element_namespaceObject.createElement)(CodeEditor, null), templateResolved && !template && (settings === null || settings === void 0 ? void 0 : settings.siteUrl) && entityId && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Notice, {
|
|||
|
status: "warning",
|
|||
|
isDismissible: false
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)("You attempted to edit an item that doesn't exist. Perhaps it was deleted?")), (0,external_wp_element_namespaceObject.createElement)(keyboard_shortcuts, {
|
|||
|
openEntitiesSavedStates: openEntitiesSavedStates
|
|||
|
})),
|
|||
|
actions: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, isEntitiesSavedStatesOpen ? (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.EntitiesSavedStates, {
|
|||
|
close: closeEntitiesSavedStates
|
|||
|
}) : (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-editor__toggle-save-panel"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
variant: "secondary",
|
|||
|
className: "edit-site-editor__toggle-save-panel-button",
|
|||
|
onClick: openEntitiesSavedStates,
|
|||
|
"aria-expanded": false
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Open save panel')))),
|
|||
|
footer: (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockBreadcrumb, {
|
|||
|
rootLabelText: (0,external_wp_i18n_namespaceObject.__)('Template')
|
|||
|
}),
|
|||
|
shortcuts: {
|
|||
|
previous: previousShortcut,
|
|||
|
next: nextShortcut
|
|||
|
}
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(WelcomeGuide, null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Popover.Slot, null))))))));
|
|||
|
}
|
|||
|
|
|||
|
/* harmony default export */ var editor = (Editor);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/use-register-shortcuts.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function useRegisterShortcuts() {
|
|||
|
const {
|
|||
|
registerShortcut
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_keyboardShortcuts_namespaceObject.store);
|
|||
|
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/next-region',
|
|||
|
category: 'global',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the next part of the editor.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'ctrl',
|
|||
|
character: '`'
|
|||
|
},
|
|||
|
aliases: [{
|
|||
|
modifier: 'access',
|
|||
|
character: 'n'
|
|||
|
}]
|
|||
|
});
|
|||
|
registerShortcut({
|
|||
|
name: 'core/edit-site/previous-region',
|
|||
|
category: 'global',
|
|||
|
description: (0,external_wp_i18n_namespaceObject.__)('Navigate to the previous part of the editor.'),
|
|||
|
keyCombination: {
|
|||
|
modifier: 'ctrlShift',
|
|||
|
character: '`'
|
|||
|
},
|
|||
|
aliases: [{
|
|||
|
modifier: 'access',
|
|||
|
character: 'p'
|
|||
|
}]
|
|||
|
});
|
|||
|
}, []);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const post = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "m7.3 9.7 1.4 1.4c.2-.2.3-.3.4-.5 0 0 0-.1.1-.1.3-.5.4-1.1.3-1.6L12 7 9 4 7.2 6.5c-.6-.1-1.1 0-1.6.3 0 0-.1 0-.1.1-.3.1-.4.2-.6.4l1.4 1.4L4 11v1h1l2.3-2.3zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_post = (post);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/page.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const page = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M7 5.5h10a.5.5 0 01.5.5v12a.5.5 0 01-.5.5H7a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM17 4H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V6a2 2 0 00-2-2zm-1 3.75H8v1.5h8v-1.5zM8 11h8v1.5H8V11zm6 3.25H8v1.5h6v-1.5z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_page = (page);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/archive.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const archive = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
viewBox: "0 0 24 24",
|
|||
|
xmlns: "http://www.w3.org/2000/svg"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M19 6.2h-5.9l-.6-1.1c-.3-.7-1-1.1-1.8-1.1H5c-1.1 0-2 .9-2 2v11.8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V8.2c0-1.1-.9-2-2-2zm.5 11.6c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h5.8c.2 0 .4.1.4.3l1 2H19c.3 0 .5.2.5.5v9.5zM8 12.8h8v-1.5H8v1.5zm0 3h8v-1.5H8v1.5z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_archive = (archive);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/search.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const search = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M13.5 6C10.5 6 8 8.5 8 11.5c0 1.1.3 2.1.9 3l-3.4 3 1 1.1 3.4-2.9c1 .9 2.2 1.4 3.6 1.4 3 0 5.5-2.5 5.5-5.5C19 8.5 16.5 6 13.5 6zm0 9.5c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_search = (search);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/not-found.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const notFound = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M19 5H5c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm.5 12c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v10zm-11-7.6h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-.9 3.5H6.3l1.2-1.7v1.7zm5.6-3.2c-.4-.2-.8-.4-1.2-.4-.5 0-.9.1-1.2.4-.4.2-.6.6-.8 1-.2.4-.3.9-.3 1.5s.1 1.1.3 1.6c.2.4.5.8.8 1 .4.2.8.4 1.2.4.5 0 .9-.1 1.2-.4.4-.2.6-.6.8-1 .2-.4.3-1 .3-1.6 0-.6-.1-1.1-.3-1.5-.1-.5-.4-.8-.8-1zm0 3.6c-.1.3-.3.5-.5.7-.2.1-.4.2-.7.2-.3 0-.5-.1-.7-.2-.2-.1-.4-.4-.5-.7-.1-.3-.2-.7-.2-1.2 0-.7.1-1.2.4-1.5.3-.3.6-.5 1-.5s.7.2 1 .5c.3.3.4.8.4 1.5-.1.5-.1.9-.2 1.2zm5-3.9h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-1 3.5H16l1.2-1.7v1.7z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var not_found = (notFound);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/list.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const list = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
viewBox: "0 0 24 24",
|
|||
|
xmlns: "http://www.w3.org/2000/svg"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M4 4v1.5h16V4H4zm8 8.5h8V11h-8v1.5zM4 20h16v-1.5H4V20zm4-8c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_list = (list);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/category.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const category = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
viewBox: "0 0 24 24",
|
|||
|
xmlns: "http://www.w3.org/2000/svg"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z",
|
|||
|
fillRule: "evenodd",
|
|||
|
clipRule: "evenodd"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_category = (category);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-author.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const postAuthor = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
viewBox: "0 0 24 24",
|
|||
|
xmlns: "http://www.w3.org/2000/svg"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M10 4.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm2.25 7.5v-1A2.75 2.75 0 0011 8.25H7A2.75 2.75 0 004.25 11v1h1.5v-1c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v1h1.5zM4 20h9v-1.5H4V20zm16-4H4v-1.5h16V16z",
|
|||
|
fillRule: "evenodd",
|
|||
|
clipRule: "evenodd"
|
|||
|
}));
|
|||
|
/* harmony default export */ var post_author = (postAuthor);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/block-meta.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const blockMeta = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
fillRule: "evenodd",
|
|||
|
d: "M8.95 11.25H4v1.5h4.95v4.5H13V18c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75h-2.55v-7.5H13V9c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75H8.95v4.5ZM14.5 15v3c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5Zm0-6V6c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5Z",
|
|||
|
clipRule: "evenodd"
|
|||
|
}));
|
|||
|
/* harmony default export */ var block_meta = (blockMeta);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-date.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const postDate = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M11.696 13.972c.356-.546.599-.958.728-1.235a1.79 1.79 0 00.203-.783c0-.264-.077-.47-.23-.618-.148-.153-.354-.23-.618-.23-.295 0-.569.07-.82.212a3.413 3.413 0 00-.738.571l-.147-1.188c.289-.234.59-.41.903-.526.313-.117.66-.175 1.041-.175.375 0 .695.08.959.24.264.153.46.362.59.626.135.265.203.556.203.876 0 .362-.08.734-.24 1.115-.154.381-.427.87-.82 1.466l-.756 1.152H14v1.106h-4l1.696-2.609z"
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M19.5 7h-15v12a.5.5 0 00.5.5h14a.5.5 0 00.5-.5V7zM3 7V5a2 2 0 012-2h14a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V7z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var post_date = (postDate);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/tag.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const tag = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M20.1 11.2l-6.7-6.7c-.1-.1-.3-.2-.5-.2H5c-.4-.1-.8.3-.8.7v7.8c0 .2.1.4.2.5l6.7 6.7c.2.2.5.4.7.5s.6.2.9.2c.3 0 .6-.1.9-.2.3-.1.5-.3.8-.5l5.6-5.6c.4-.4.7-1 .7-1.6.1-.6-.2-1.2-.6-1.6zM19 13.4L13.4 19c-.1.1-.2.1-.3.2-.2.1-.4.1-.6 0-.1 0-.2-.1-.3-.2l-6.5-6.5V5.8h6.8l6.5 6.5c.2.2.2.4.2.6 0 .1 0 .3-.2.5zM9 8c-.6 0-1 .4-1 1s.4 1 1 1 1-.4 1-1-.4-1-1-1z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_tag = (tag);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/media.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const media = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h13.4c.4 0 .8.4.8.8v13.4zM10 15l5-3-5-3v6z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_media = (media);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/new-template.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const DEFAULT_TEMPLATE_SLUGS = ['front-page', 'single-post', 'page', 'index', 'archive', 'author', 'category', 'date', 'tag', 'taxonomy', 'search', '404'];
|
|||
|
const TEMPLATE_ICONS = {
|
|||
|
'front-page': library_home,
|
|||
|
'single-post': library_post,
|
|||
|
page: library_page,
|
|||
|
archive: library_archive,
|
|||
|
search: library_search,
|
|||
|
404: not_found,
|
|||
|
index: library_list,
|
|||
|
category: library_category,
|
|||
|
author: post_author,
|
|||
|
taxonomy: block_meta,
|
|||
|
date: post_date,
|
|||
|
tag: library_tag,
|
|||
|
attachment: library_media
|
|||
|
};
|
|||
|
function NewTemplate(_ref) {
|
|||
|
let {
|
|||
|
postType
|
|||
|
} = _ref;
|
|||
|
const history = useHistory();
|
|||
|
const {
|
|||
|
templates,
|
|||
|
defaultTemplateTypes
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => ({
|
|||
|
templates: select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_template', {
|
|||
|
per_page: -1
|
|||
|
}),
|
|||
|
defaultTemplateTypes: select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplateTypes()
|
|||
|
}), []);
|
|||
|
const {
|
|||
|
saveEntityRecord
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
|
|||
|
const {
|
|||
|
createErrorNotice
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
|
|||
|
const {
|
|||
|
setTemplate
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
|
|||
|
async function createTemplate(_ref2) {
|
|||
|
let {
|
|||
|
slug
|
|||
|
} = _ref2;
|
|||
|
|
|||
|
try {
|
|||
|
const {
|
|||
|
title,
|
|||
|
description
|
|||
|
} = (0,external_lodash_namespaceObject.find)(defaultTemplateTypes, {
|
|||
|
slug
|
|||
|
});
|
|||
|
const template = await saveEntityRecord('postType', 'wp_template', {
|
|||
|
excerpt: description,
|
|||
|
// Slugs need to be strings, so this is for template `404`
|
|||
|
slug: slug.toString(),
|
|||
|
status: 'publish',
|
|||
|
title
|
|||
|
}, {
|
|||
|
throwOnError: true
|
|||
|
}); // Set template before navigating away to avoid initial stale value.
|
|||
|
|
|||
|
setTemplate(template.id, template.slug); // Navigate to the created template editor.
|
|||
|
|
|||
|
history.push({
|
|||
|
postId: template.id,
|
|||
|
postType: template.type
|
|||
|
}); // TODO: Add a success notice?
|
|||
|
} catch (error) {
|
|||
|
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the template.');
|
|||
|
createErrorNotice(errorMessage, {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
const existingTemplateSlugs = (0,external_lodash_namespaceObject.map)(templates, 'slug');
|
|||
|
const missingTemplates = (0,external_lodash_namespaceObject.filter)(defaultTemplateTypes, template => (0,external_lodash_namespaceObject.includes)(DEFAULT_TEMPLATE_SLUGS, template.slug) && !(0,external_lodash_namespaceObject.includes)(existingTemplateSlugs, template.slug));
|
|||
|
|
|||
|
if (!missingTemplates.length) {
|
|||
|
return null;
|
|||
|
} // Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.
|
|||
|
|
|||
|
|
|||
|
missingTemplates.sort((template1, template2) => {
|
|||
|
return DEFAULT_TEMPLATE_SLUGS.indexOf(template1.slug) - DEFAULT_TEMPLATE_SLUGS.indexOf(template2.slug);
|
|||
|
});
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, {
|
|||
|
className: "edit-site-new-template-dropdown",
|
|||
|
icon: null,
|
|||
|
text: postType.labels.add_new,
|
|||
|
label: postType.labels.add_new_item,
|
|||
|
popoverProps: {
|
|||
|
noArrow: false
|
|||
|
},
|
|||
|
toggleProps: {
|
|||
|
variant: 'primary'
|
|||
|
}
|
|||
|
}, () => (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.NavigableMenu, {
|
|||
|
className: "edit-site-new-template-dropdown__popover"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, {
|
|||
|
label: postType.labels.add_new_item
|
|||
|
}, (0,external_lodash_namespaceObject.map)(missingTemplates, _ref3 => {
|
|||
|
let {
|
|||
|
title,
|
|||
|
description,
|
|||
|
slug
|
|||
|
} = _ref3;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
icon: TEMPLATE_ICONS[slug],
|
|||
|
iconPosition: "left",
|
|||
|
info: description,
|
|||
|
key: slug,
|
|||
|
onClick: () => {
|
|||
|
createTemplate({
|
|||
|
slug
|
|||
|
}); // We will be navigated way so no need to close the dropdown.
|
|||
|
}
|
|||
|
}, title);
|
|||
|
}))));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/new-template-part.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function NewTemplatePart(_ref) {
|
|||
|
let {
|
|||
|
postType
|
|||
|
} = _ref;
|
|||
|
const history = useHistory();
|
|||
|
const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
|
|||
|
const {
|
|||
|
createErrorNotice
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
|
|||
|
const {
|
|||
|
saveEntityRecord
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
|
|||
|
|
|||
|
async function createTemplatePart(_ref2) {
|
|||
|
let {
|
|||
|
title,
|
|||
|
area
|
|||
|
} = _ref2;
|
|||
|
|
|||
|
if (!title) {
|
|||
|
createErrorNotice((0,external_wp_i18n_namespaceObject.__)('Title is not defined.'), {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
// Currently template parts only allow latin chars.
|
|||
|
// Fallback slug will receive suffix by default.
|
|||
|
const cleanSlug = (0,external_lodash_namespaceObject.kebabCase)(title).replace(/[^\w-]+/g, '') || 'wp-custom-part';
|
|||
|
const templatePart = await saveEntityRecord('postType', 'wp_template_part', {
|
|||
|
slug: cleanSlug,
|
|||
|
title,
|
|||
|
content: '',
|
|||
|
area
|
|||
|
}, {
|
|||
|
throwOnError: true
|
|||
|
});
|
|||
|
setIsModalOpen(false); // Navigate to the created template part editor.
|
|||
|
|
|||
|
history.push({
|
|||
|
postId: templatePart.id,
|
|||
|
postType: templatePart.type
|
|||
|
}); // TODO: Add a success notice?
|
|||
|
} catch (error) {
|
|||
|
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the template part.');
|
|||
|
createErrorNotice(errorMessage, {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
setIsModalOpen(false);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
variant: "primary",
|
|||
|
onClick: () => {
|
|||
|
setIsModalOpen(true);
|
|||
|
}
|
|||
|
}, postType.labels.add_new), isModalOpen && (0,external_wp_element_namespaceObject.createElement)(CreateTemplatePartModal, {
|
|||
|
closeModal: () => setIsModalOpen(false),
|
|||
|
onCreate: createTemplatePart
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function AddNewTemplate(_ref) {
|
|||
|
let {
|
|||
|
templateType = 'wp_template'
|
|||
|
} = _ref;
|
|||
|
const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]);
|
|||
|
|
|||
|
if (!postType) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
if (templateType === 'wp_template') {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(NewTemplate, {
|
|||
|
postType: postType
|
|||
|
});
|
|||
|
} else if (templateType === 'wp_template_part') {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(NewTemplatePart, {
|
|||
|
postType: postType
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/header.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
function header_Header(_ref) {
|
|||
|
var _postType$labels;
|
|||
|
|
|||
|
let {
|
|||
|
templateType
|
|||
|
} = _ref;
|
|||
|
const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]);
|
|||
|
|
|||
|
if (!postType) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("header", {
|
|||
|
className: "edit-site-list-header"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
|
|||
|
level: 1,
|
|||
|
className: "edit-site-list-header__title"
|
|||
|
}, (_postType$labels = postType.labels) === null || _postType$labels === void 0 ? void 0 : _postType$labels.name), (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: "edit-site-list-header__right"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(AddNewTemplate, {
|
|||
|
templateType: templateType
|
|||
|
})));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/is-template-removable.js
|
|||
|
/**
|
|||
|
* Check if a template is removable.
|
|||
|
*
|
|||
|
* @param {Object} template The template entity to check.
|
|||
|
* @return {boolean} Whether the template is revertable.
|
|||
|
*/
|
|||
|
function isTemplateRemovable(template) {
|
|||
|
if (!template) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
return template.source === 'custom' && !template.has_theme_file;
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/actions/rename-menu-item.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function RenameMenuItem(_ref) {
|
|||
|
let {
|
|||
|
template,
|
|||
|
onClose
|
|||
|
} = _ref;
|
|||
|
const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(() => template.title.rendered);
|
|||
|
const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
|
|||
|
const {
|
|||
|
editEntityRecord,
|
|||
|
saveEditedEntityRecord
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
|
|||
|
const {
|
|||
|
createSuccessNotice,
|
|||
|
createErrorNotice
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
|
|||
|
|
|||
|
if (!template.is_custom) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
async function onTemplateRename(event) {
|
|||
|
event.preventDefault();
|
|||
|
|
|||
|
try {
|
|||
|
await editEntityRecord('postType', template.type, template.id, {
|
|||
|
title
|
|||
|
}); // Update state before saving rerenders the list.
|
|||
|
|
|||
|
setTitle('');
|
|||
|
setIsModalOpen(false);
|
|||
|
onClose(); // Persist edited entity.
|
|||
|
|
|||
|
await saveEditedEntityRecord('postType', template.type, template.id, {
|
|||
|
throwOnError: true
|
|||
|
});
|
|||
|
createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Entity renamed.'), {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
} catch (error) {
|
|||
|
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while renaming the entity.');
|
|||
|
createErrorNotice(errorMessage, {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
onClick: () => {
|
|||
|
setIsModalOpen(true);
|
|||
|
setTitle(template.title.rendered);
|
|||
|
}
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Rename')), isModalOpen && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, {
|
|||
|
title: (0,external_wp_i18n_namespaceObject.__)('Rename'),
|
|||
|
closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'),
|
|||
|
onRequestClose: () => {
|
|||
|
setIsModalOpen(false);
|
|||
|
},
|
|||
|
overlayClassName: "edit-site-list__rename-modal"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("form", {
|
|||
|
onSubmit: onTemplateRename
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, {
|
|||
|
align: "flex-start",
|
|||
|
gap: 8
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Name'),
|
|||
|
value: title,
|
|||
|
onChange: setTitle,
|
|||
|
required: true
|
|||
|
}))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, {
|
|||
|
className: "edit-site-list__rename-modal-actions",
|
|||
|
justify: "flex-end",
|
|||
|
expanded: false
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
variant: "tertiary",
|
|||
|
onClick: () => {
|
|||
|
setIsModalOpen(false);
|
|||
|
}
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Cancel'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
|
|||
|
variant: "primary",
|
|||
|
type: "submit"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Save')))))));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/actions/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function Actions(_ref) {
|
|||
|
let {
|
|||
|
template
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
removeTemplate,
|
|||
|
revertTemplate
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
|
|||
|
const {
|
|||
|
saveEditedEntityRecord
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
|
|||
|
const {
|
|||
|
createSuccessNotice,
|
|||
|
createErrorNotice
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
|
|||
|
const isRemovable = isTemplateRemovable(template);
|
|||
|
const isRevertable = isTemplateRevertable(template);
|
|||
|
|
|||
|
if (!isRemovable && !isRevertable) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
async function revertAndSaveTemplate() {
|
|||
|
try {
|
|||
|
await revertTemplate(template, {
|
|||
|
allowUndo: false
|
|||
|
});
|
|||
|
await saveEditedEntityRecord('postType', template.type, template.id);
|
|||
|
createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Entity reverted.'), {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
} catch (error) {
|
|||
|
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while reverting the entity.');
|
|||
|
createErrorNotice(errorMessage, {
|
|||
|
type: 'snackbar'
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropdownMenu, {
|
|||
|
icon: more_vertical,
|
|||
|
label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
|
|||
|
className: "edit-site-list-table__actions"
|
|||
|
}, _ref2 => {
|
|||
|
let {
|
|||
|
onClose
|
|||
|
} = _ref2;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, null, isRemovable && (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(RenameMenuItem, {
|
|||
|
template: template,
|
|||
|
onClose: onClose
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
isDestructive: true,
|
|||
|
isTertiary: true,
|
|||
|
onClick: () => {
|
|||
|
removeTemplate(template);
|
|||
|
onClose();
|
|||
|
}
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Delete'))), isRevertable && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
|
|||
|
info: (0,external_wp_i18n_namespaceObject.__)('Restore to default state'),
|
|||
|
onClick: () => {
|
|||
|
revertAndSaveTemplate();
|
|||
|
onClose();
|
|||
|
}
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Clear customizations')));
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plugins.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const plugins = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_plugins = (plugins);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment-author-avatar.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const commentAuthorAvatar = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
fillRule: "evenodd",
|
|||
|
d: "M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z",
|
|||
|
clipRule: "evenodd"
|
|||
|
}));
|
|||
|
/* harmony default export */ var comment_author_avatar = (commentAuthorAvatar);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/globe.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
const globe = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
|
|||
|
xmlns: "http://www.w3.org/2000/svg",
|
|||
|
viewBox: "0 0 24 24"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
|
|||
|
d: "M12 3.3c-4.8 0-8.8 3.9-8.8 8.8 0 4.8 3.9 8.8 8.8 8.8 4.8 0 8.8-3.9 8.8-8.8s-4-8.8-8.8-8.8zm6.5 5.5h-2.6C15.4 7.3 14.8 6 14 5c2 .6 3.6 2 4.5 3.8zm.7 3.2c0 .6-.1 1.2-.2 1.8h-2.9c.1-.6.1-1.2.1-1.8s-.1-1.2-.1-1.8H19c.2.6.2 1.2.2 1.8zM12 18.7c-1-.7-1.8-1.9-2.3-3.5h4.6c-.5 1.6-1.3 2.9-2.3 3.5zm-2.6-4.9c-.1-.6-.1-1.1-.1-1.8 0-.6.1-1.2.1-1.8h5.2c.1.6.1 1.1.1 1.8s-.1 1.2-.1 1.8H9.4zM4.8 12c0-.6.1-1.2.2-1.8h2.9c-.1.6-.1 1.2-.1 1.8 0 .6.1 1.2.1 1.8H5c-.2-.6-.2-1.2-.2-1.8zM12 5.3c1 .7 1.8 1.9 2.3 3.5H9.7c.5-1.6 1.3-2.9 2.3-3.5zM10 5c-.8 1-1.4 2.3-1.8 3.8H5.5C6.4 7 8 5.6 10 5zM5.5 15.3h2.6c.4 1.5 1 2.8 1.8 3.7-1.8-.6-3.5-2-4.4-3.7zM14 19c.8-1 1.4-2.2 1.8-3.7h2.6C17.6 17 16 18.4 14 19z"
|
|||
|
}));
|
|||
|
/* harmony default export */ var library_globe = (globe);
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/added-by.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const TEMPLATE_POST_TYPE_NAMES = ['wp_template', 'wp_template_part'];
|
|||
|
|
|||
|
function CustomizedTooltip(_ref) {
|
|||
|
let {
|
|||
|
isCustomized,
|
|||
|
children
|
|||
|
} = _ref;
|
|||
|
|
|||
|
if (!isCustomized) {
|
|||
|
return children;
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Tooltip, {
|
|||
|
text: (0,external_wp_i18n_namespaceObject.__)('This template has been customized')
|
|||
|
}, children);
|
|||
|
}
|
|||
|
|
|||
|
function BaseAddedBy(_ref2) {
|
|||
|
let {
|
|||
|
text,
|
|||
|
icon,
|
|||
|
imageUrl,
|
|||
|
isCustomized
|
|||
|
} = _ref2;
|
|||
|
const [isImageLoaded, setIsImageLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHStack, {
|
|||
|
alignment: "left"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(CustomizedTooltip, {
|
|||
|
isCustomized: isCustomized
|
|||
|
}, imageUrl ? (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: classnames_default()('edit-site-list-added-by__avatar', {
|
|||
|
'is-loaded': isImageLoaded
|
|||
|
})
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("img", {
|
|||
|
onLoad: () => setIsImageLoaded(true),
|
|||
|
alt: "",
|
|||
|
src: imageUrl
|
|||
|
})) : (0,external_wp_element_namespaceObject.createElement)("div", {
|
|||
|
className: classnames_default()('edit-site-list-added-by__icon', {
|
|||
|
'is-customized': isCustomized
|
|||
|
})
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
|
|||
|
icon: icon
|
|||
|
}))), (0,external_wp_element_namespaceObject.createElement)("span", null, text));
|
|||
|
}
|
|||
|
|
|||
|
function AddedByTheme(_ref3) {
|
|||
|
var _theme$name;
|
|||
|
|
|||
|
let {
|
|||
|
slug,
|
|||
|
isCustomized
|
|||
|
} = _ref3;
|
|||
|
const theme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getTheme(slug), [slug]);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, {
|
|||
|
icon: library_layout,
|
|||
|
text: (theme === null || theme === void 0 ? void 0 : (_theme$name = theme.name) === null || _theme$name === void 0 ? void 0 : _theme$name.rendered) || slug,
|
|||
|
isCustomized: isCustomized
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function AddedByPlugin(_ref4) {
|
|||
|
let {
|
|||
|
slug,
|
|||
|
isCustomized
|
|||
|
} = _ref4;
|
|||
|
const plugin = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPlugin(slug), [slug]);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, {
|
|||
|
icon: library_plugins,
|
|||
|
text: (plugin === null || plugin === void 0 ? void 0 : plugin.name) || slug,
|
|||
|
isCustomized: isCustomized
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function AddedByAuthor(_ref5) {
|
|||
|
var _user$avatar_urls;
|
|||
|
|
|||
|
let {
|
|||
|
id
|
|||
|
} = _ref5;
|
|||
|
const user = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getUser(id), [id]);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, {
|
|||
|
icon: comment_author_avatar,
|
|||
|
imageUrl: user === null || user === void 0 ? void 0 : (_user$avatar_urls = user.avatar_urls) === null || _user$avatar_urls === void 0 ? void 0 : _user$avatar_urls[48],
|
|||
|
text: user === null || user === void 0 ? void 0 : user.nickname
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function AddedBySite() {
|
|||
|
const {
|
|||
|
name,
|
|||
|
logoURL
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
var _getMedia;
|
|||
|
|
|||
|
const {
|
|||
|
getEntityRecord,
|
|||
|
getMedia
|
|||
|
} = select(external_wp_coreData_namespaceObject.store);
|
|||
|
const siteData = getEntityRecord('root', '__unstableBase');
|
|||
|
return {
|
|||
|
name: siteData === null || siteData === void 0 ? void 0 : siteData.name,
|
|||
|
logoURL: siteData !== null && siteData !== void 0 && siteData.site_logo ? (_getMedia = getMedia(siteData.site_logo)) === null || _getMedia === void 0 ? void 0 : _getMedia.source_url : undefined
|
|||
|
};
|
|||
|
}, []);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(BaseAddedBy, {
|
|||
|
icon: library_globe,
|
|||
|
imageUrl: logoURL,
|
|||
|
text: name
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function AddedBy(_ref6) {
|
|||
|
let {
|
|||
|
templateType,
|
|||
|
template
|
|||
|
} = _ref6;
|
|||
|
|
|||
|
if (!template) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (TEMPLATE_POST_TYPE_NAMES.includes(templateType)) {
|
|||
|
// Template originally provided by a theme, but customized by a user.
|
|||
|
// Templates originally didn't have the 'origin' field so identify
|
|||
|
// older customized templates by checking for no origin and a 'theme'
|
|||
|
// or 'custom' source.
|
|||
|
if (template.has_theme_file && (template.origin === 'theme' || !template.origin && ['theme', 'custom'].includes(template.source))) {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(AddedByTheme, {
|
|||
|
slug: template.theme,
|
|||
|
isCustomized: template.source === 'custom'
|
|||
|
});
|
|||
|
} // Template originally provided by a plugin, but customized by a user.
|
|||
|
|
|||
|
|
|||
|
if (template.has_theme_file && template.origin === 'plugin') {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(AddedByPlugin, {
|
|||
|
slug: template.theme,
|
|||
|
isCustomized: template.source === 'custom'
|
|||
|
});
|
|||
|
} // Template was created from scratch, but has no author. Author support
|
|||
|
// was only added to templates in WordPress 5.9. Fallback to showing the
|
|||
|
// site logo and title.
|
|||
|
|
|||
|
|
|||
|
if (!template.has_theme_file && template.source === 'custom' && !template.author) {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(AddedBySite, null);
|
|||
|
}
|
|||
|
} // Simply show the author for templates created from scratch that have an
|
|||
|
// author or for any other post type.
|
|||
|
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(AddedByAuthor, {
|
|||
|
id: template.author
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/table.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function Table(_ref) {
|
|||
|
let {
|
|||
|
templateType
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
records: templates,
|
|||
|
isResolving: isLoading
|
|||
|
} = (0,external_wp_coreData_namespaceObject.__experimentalUseEntityRecords)('postType', templateType, {
|
|||
|
per_page: -1
|
|||
|
});
|
|||
|
const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]);
|
|||
|
|
|||
|
if (!templates || isLoading) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
if (!templates.length) {
|
|||
|
var _postType$labels, _postType$labels$name;
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("div", null, (0,external_wp_i18n_namespaceObject.sprintf)( // translators: The template type name, should be either "templates" or "template parts".
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('No %s found.'), postType === null || postType === void 0 ? void 0 : (_postType$labels = postType.labels) === null || _postType$labels === void 0 ? void 0 : (_postType$labels$name = _postType$labels.name) === null || _postType$labels$name === void 0 ? void 0 : _postType$labels$name.toLowerCase()));
|
|||
|
}
|
|||
|
|
|||
|
return (// These explicit aria roles are needed for Safari.
|
|||
|
// See https://developer.mozilla.org/en-US/docs/Web/CSS/display#tables
|
|||
|
(0,external_wp_element_namespaceObject.createElement)("table", {
|
|||
|
className: "edit-site-list-table",
|
|||
|
role: "table"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("thead", null, (0,external_wp_element_namespaceObject.createElement)("tr", {
|
|||
|
className: "edit-site-list-table-head",
|
|||
|
role: "row"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("th", {
|
|||
|
className: "edit-site-list-table-column",
|
|||
|
role: "columnheader"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Template')), (0,external_wp_element_namespaceObject.createElement)("th", {
|
|||
|
className: "edit-site-list-table-column",
|
|||
|
role: "columnheader"
|
|||
|
}, (0,external_wp_i18n_namespaceObject.__)('Added by')), (0,external_wp_element_namespaceObject.createElement)("th", {
|
|||
|
className: "edit-site-list-table-column",
|
|||
|
role: "columnheader"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, null, (0,external_wp_i18n_namespaceObject.__)('Actions'))))), (0,external_wp_element_namespaceObject.createElement)("tbody", null, templates.map(template => {
|
|||
|
var _template$title;
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)("tr", {
|
|||
|
key: template.id,
|
|||
|
className: "edit-site-list-table-row",
|
|||
|
role: "row"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)("td", {
|
|||
|
className: "edit-site-list-table-column",
|
|||
|
role: "cell"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalHeading, {
|
|||
|
level: 4
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(Link, {
|
|||
|
params: {
|
|||
|
postId: template.id,
|
|||
|
postType: template.type
|
|||
|
}
|
|||
|
}, (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(((_template$title = template.title) === null || _template$title === void 0 ? void 0 : _template$title.rendered) || template.slug))), template.description), (0,external_wp_element_namespaceObject.createElement)("td", {
|
|||
|
className: "edit-site-list-table-column",
|
|||
|
role: "cell"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(AddedBy, {
|
|||
|
templateType: templateType,
|
|||
|
template: template
|
|||
|
})), (0,external_wp_element_namespaceObject.createElement)("td", {
|
|||
|
className: "edit-site-list-table-column",
|
|||
|
role: "cell"
|
|||
|
}, (0,external_wp_element_namespaceObject.createElement)(Actions, {
|
|||
|
template: template
|
|||
|
})));
|
|||
|
})))
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/list/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* External dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function List() {
|
|||
|
var _postType$labels, _postType$labels2;
|
|||
|
|
|||
|
const {
|
|||
|
params: {
|
|||
|
postType: templateType
|
|||
|
}
|
|||
|
} = useLocation();
|
|||
|
useRegisterShortcuts();
|
|||
|
const {
|
|||
|
previousShortcut,
|
|||
|
nextShortcut,
|
|||
|
isNavigationOpen
|
|||
|
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
|
|||
|
return {
|
|||
|
previousShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/previous-region'),
|
|||
|
nextShortcut: select(external_wp_keyboardShortcuts_namespaceObject.store).getAllShortcutKeyCombinations('core/edit-site/next-region'),
|
|||
|
isNavigationOpen: select(store_store).isNavigationOpened()
|
|||
|
};
|
|||
|
}, []);
|
|||
|
const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(templateType), [templateType]);
|
|||
|
useTitle(postType === null || postType === void 0 ? void 0 : (_postType$labels = postType.labels) === null || _postType$labels === void 0 ? void 0 : _postType$labels.name); // `postType` could load in asynchronously. Only provide the detailed region labels if
|
|||
|
// the postType has loaded, otherwise `InterfaceSkeleton` will fallback to the defaults.
|
|||
|
|
|||
|
const itemsListLabel = postType === null || postType === void 0 ? void 0 : (_postType$labels2 = postType.labels) === null || _postType$labels2 === void 0 ? void 0 : _postType$labels2.items_list;
|
|||
|
const detailedRegionLabels = postType ? {
|
|||
|
header: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s - the name of the page, 'Header' as in the header area of that page.
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('%s - Header'), itemsListLabel),
|
|||
|
body: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s - the name of the page, 'Content' as in the content area of that page.
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('%s - Content'), itemsListLabel)
|
|||
|
} : undefined;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(interface_skeleton, {
|
|||
|
className: classnames_default()('edit-site-list', {
|
|||
|
'is-navigation-open': isNavigationOpen
|
|||
|
}),
|
|||
|
labels: {
|
|||
|
drawer: (0,external_wp_i18n_namespaceObject.__)('Navigation Sidebar'),
|
|||
|
...detailedRegionLabels
|
|||
|
},
|
|||
|
header: (0,external_wp_element_namespaceObject.createElement)(header_Header, {
|
|||
|
templateType: templateType
|
|||
|
}),
|
|||
|
drawer: (0,external_wp_element_namespaceObject.createElement)(navigation_sidebar.Slot, null),
|
|||
|
notices: (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.EditorSnackbars, null),
|
|||
|
content: (0,external_wp_element_namespaceObject.createElement)(Table, {
|
|||
|
templateType: templateType
|
|||
|
}),
|
|||
|
shortcuts: {
|
|||
|
previous: previousShortcut,
|
|||
|
next: nextShortcut
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/get-is-list-page.js
|
|||
|
/**
|
|||
|
* Returns if the params match the list page route.
|
|||
|
*
|
|||
|
* @param {Object} params The search params.
|
|||
|
* @param {string} params.postId The post ID.
|
|||
|
* @param {string} params.postType The post type.
|
|||
|
* @return {boolean} Is list page or not.
|
|||
|
*/
|
|||
|
function getIsListPage(_ref) {
|
|||
|
let {
|
|||
|
postId,
|
|||
|
postType
|
|||
|
} = _ref;
|
|||
|
return !!(!postId && postType);
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/app/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function EditSiteApp(_ref) {
|
|||
|
let {
|
|||
|
reboot
|
|||
|
} = _ref;
|
|||
|
const {
|
|||
|
createErrorNotice
|
|||
|
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
|
|||
|
|
|||
|
function onPluginAreaError(name) {
|
|||
|
createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)(
|
|||
|
/* translators: %s: plugin name */
|
|||
|
(0,external_wp_i18n_namespaceObject.__)('The "%s" plugin has encountered an error and cannot be rendered.'), name));
|
|||
|
}
|
|||
|
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SlotFillProvider, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_editor_namespaceObject.UnsavedChangesWarning, null), (0,external_wp_element_namespaceObject.createElement)(Routes, null, _ref2 => {
|
|||
|
let {
|
|||
|
params
|
|||
|
} = _ref2;
|
|||
|
const isListPage = getIsListPage(params);
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, isListPage ? (0,external_wp_element_namespaceObject.createElement)(List, null) : (0,external_wp_element_namespaceObject.createElement)(editor, {
|
|||
|
onError: reboot
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(external_wp_plugins_namespaceObject.PluginArea, {
|
|||
|
onError: onPluginAreaError
|
|||
|
}), (0,external_wp_element_namespaceObject.createElement)(navigation_sidebar // Open the navigation sidebar by default when in the list page.
|
|||
|
, {
|
|||
|
isDefaultOpen: !!isListPage,
|
|||
|
activeTemplateType: isListPage ? params.postType : undefined
|
|||
|
}));
|
|||
|
}));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar/plugin-sidebar/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Renders a sidebar when activated. The contents within the `PluginSidebar` will appear as content within the sidebar.
|
|||
|
* It also automatically renders a corresponding `PluginSidebarMenuItem` component when `isPinnable` flag is set to `true`.
|
|||
|
* If you wish to display the sidebar, you can with use the `PluginSidebarMoreMenuItem` component or the `wp.data.dispatch` API:
|
|||
|
*
|
|||
|
* ```js
|
|||
|
* wp.data.dispatch( 'core/edit-site' ).openGeneralSidebar( 'plugin-name/sidebar-name' );
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @see PluginSidebarMoreMenuItem
|
|||
|
*
|
|||
|
* @param {Object} props Element props.
|
|||
|
* @param {string} props.name A string identifying the sidebar. Must be unique for every sidebar registered within the scope of your plugin.
|
|||
|
* @param {string} [props.className] An optional class name added to the sidebar body.
|
|||
|
* @param {string} props.title Title displayed at the top of the sidebar.
|
|||
|
* @param {boolean} [props.isPinnable=true] Whether to allow to pin sidebar to the toolbar. When set to `true` it also automatically renders a corresponding menu item.
|
|||
|
* @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered when the sidebar is pinned to toolbar.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```js
|
|||
|
* // Using ES5 syntax
|
|||
|
* var __ = wp.i18n.__;
|
|||
|
* var el = wp.element.createElement;
|
|||
|
* var PanelBody = wp.components.PanelBody;
|
|||
|
* var PluginSidebar = wp.editSite.PluginSidebar;
|
|||
|
* var moreIcon = wp.element.createElement( 'svg' ); //... svg element.
|
|||
|
*
|
|||
|
* function MyPluginSidebar() {
|
|||
|
* return el(
|
|||
|
* PluginSidebar,
|
|||
|
* {
|
|||
|
* name: 'my-sidebar',
|
|||
|
* title: 'My sidebar title',
|
|||
|
* icon: moreIcon,
|
|||
|
* },
|
|||
|
* el(
|
|||
|
* PanelBody,
|
|||
|
* {},
|
|||
|
* __( 'My sidebar content' )
|
|||
|
* )
|
|||
|
* );
|
|||
|
* }
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```jsx
|
|||
|
* // Using ESNext syntax
|
|||
|
* import { __ } from '@wordpress/i18n';
|
|||
|
* import { PanelBody } from '@wordpress/components';
|
|||
|
* import { PluginSidebar } from '@wordpress/edit-site';
|
|||
|
* import { more } from '@wordpress/icons';
|
|||
|
*
|
|||
|
* const MyPluginSidebar = () => (
|
|||
|
* <PluginSidebar
|
|||
|
* name="my-sidebar"
|
|||
|
* title="My sidebar title"
|
|||
|
* icon={ more }
|
|||
|
* >
|
|||
|
* <PanelBody>
|
|||
|
* { __( 'My sidebar content' ) }
|
|||
|
* </PanelBody>
|
|||
|
* </PluginSidebar>
|
|||
|
* );
|
|||
|
* ```
|
|||
|
*/
|
|||
|
|
|||
|
function PluginSidebarEditSite(_ref) {
|
|||
|
let {
|
|||
|
className,
|
|||
|
...props
|
|||
|
} = _ref;
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(complementary_area, extends_extends({
|
|||
|
panelClassName: className,
|
|||
|
className: "edit-site-sidebar",
|
|||
|
scope: "core/edit-site"
|
|||
|
}, props));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/plugin-sidebar-more-menu-item/index.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Renders a menu item in `Plugins` group in `More Menu` drop down,
|
|||
|
* and can be used to activate the corresponding `PluginSidebar` component.
|
|||
|
* The text within the component appears as the menu item label.
|
|||
|
*
|
|||
|
* @param {Object} props Component props.
|
|||
|
* @param {string} props.target A string identifying the target sidebar you wish to be activated by this menu item. Must be the same as the `name` prop you have given to that sidebar.
|
|||
|
* @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered to the left of the menu item label.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```js
|
|||
|
* // Using ES5 syntax
|
|||
|
* var __ = wp.i18n.__;
|
|||
|
* var PluginSidebarMoreMenuItem = wp.editSite.PluginSidebarMoreMenuItem;
|
|||
|
* var moreIcon = wp.element.createElement( 'svg' ); //... svg element.
|
|||
|
*
|
|||
|
* function MySidebarMoreMenuItem() {
|
|||
|
* return wp.element.createElement(
|
|||
|
* PluginSidebarMoreMenuItem,
|
|||
|
* {
|
|||
|
* target: 'my-sidebar',
|
|||
|
* icon: moreIcon,
|
|||
|
* },
|
|||
|
* __( 'My sidebar title' )
|
|||
|
* )
|
|||
|
* }
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```jsx
|
|||
|
* // Using ESNext syntax
|
|||
|
* import { __ } from '@wordpress/i18n';
|
|||
|
* import { PluginSidebarMoreMenuItem } from '@wordpress/edit-site';
|
|||
|
* import { more } from '@wordpress/icons';
|
|||
|
*
|
|||
|
* const MySidebarMoreMenuItem = () => (
|
|||
|
* <PluginSidebarMoreMenuItem
|
|||
|
* target="my-sidebar"
|
|||
|
* icon={ more }
|
|||
|
* >
|
|||
|
* { __( 'My sidebar title' ) }
|
|||
|
* </PluginSidebarMoreMenuItem>
|
|||
|
* );
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return {WPComponent} The component to be rendered.
|
|||
|
*/
|
|||
|
|
|||
|
function PluginSidebarMoreMenuItem(props) {
|
|||
|
return (0,external_wp_element_namespaceObject.createElement)(ComplementaryAreaMoreMenuItem // Menu item is marked with unstable prop for backward compatibility.
|
|||
|
// @see https://github.com/WordPress/gutenberg/issues/14457
|
|||
|
, extends_extends({
|
|||
|
__unstableExplicitMenuItem: true,
|
|||
|
scope: "core/edit-site"
|
|||
|
}, props));
|
|||
|
}
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/header/plugin-more-menu-item/index.js
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Renders a menu item in `Plugins` group in `More Menu` drop down, and can be used to as a button or link depending on the props provided.
|
|||
|
* The text within the component appears as the menu item label.
|
|||
|
*
|
|||
|
* @param {Object} props Component properties.
|
|||
|
* @param {string} [props.href] When `href` is provided then the menu item is represented as an anchor rather than button. It corresponds to the `href` attribute of the anchor.
|
|||
|
* @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered to the left of the menu item label.
|
|||
|
* @param {Function} [props.onClick=noop] The callback function to be executed when the user clicks the menu item.
|
|||
|
* @param {...*} [props.other] Any additional props are passed through to the underlying [Button](/packages/components/src/button/README.md) component.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```js
|
|||
|
* // Using ES5 syntax
|
|||
|
* var __ = wp.i18n.__;
|
|||
|
* var PluginMoreMenuItem = wp.editSite.PluginMoreMenuItem;
|
|||
|
* var moreIcon = wp.element.createElement( 'svg' ); //... svg element.
|
|||
|
*
|
|||
|
* function onButtonClick() {
|
|||
|
* alert( 'Button clicked.' );
|
|||
|
* }
|
|||
|
*
|
|||
|
* function MyButtonMoreMenuItem() {
|
|||
|
* return wp.element.createElement(
|
|||
|
* PluginMoreMenuItem,
|
|||
|
* {
|
|||
|
* icon: moreIcon,
|
|||
|
* onClick: onButtonClick,
|
|||
|
* },
|
|||
|
* __( 'My button title' )
|
|||
|
* );
|
|||
|
* }
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```jsx
|
|||
|
* // Using ESNext syntax
|
|||
|
* import { __ } from '@wordpress/i18n';
|
|||
|
* import { PluginMoreMenuItem } from '@wordpress/edit-site';
|
|||
|
* import { more } from '@wordpress/icons';
|
|||
|
*
|
|||
|
* function onButtonClick() {
|
|||
|
* alert( 'Button clicked.' );
|
|||
|
* }
|
|||
|
*
|
|||
|
* const MyButtonMoreMenuItem = () => (
|
|||
|
* <PluginMoreMenuItem
|
|||
|
* icon={ more }
|
|||
|
* onClick={ onButtonClick }
|
|||
|
* >
|
|||
|
* { __( 'My button title' ) }
|
|||
|
* </PluginMoreMenuItem>
|
|||
|
* );
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return {WPComponent} The component to be rendered.
|
|||
|
*/
|
|||
|
|
|||
|
/* harmony default export */ var plugin_more_menu_item = ((0,external_wp_compose_namespaceObject.compose)((0,external_wp_plugins_namespaceObject.withPluginContext)((context, ownProps) => {
|
|||
|
var _ownProps$as;
|
|||
|
|
|||
|
return {
|
|||
|
as: (_ownProps$as = ownProps.as) !== null && _ownProps$as !== void 0 ? _ownProps$as : external_wp_components_namespaceObject.MenuItem,
|
|||
|
icon: ownProps.icon || context.icon,
|
|||
|
name: 'core/edit-site/plugin-more-menu'
|
|||
|
};
|
|||
|
}))(action_item));
|
|||
|
|
|||
|
;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/index.js
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* WordPress dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Internal dependencies
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Reinitializes the editor after the user chooses to reboot the editor after
|
|||
|
* an unhandled error occurs, replacing previously mounted editor element using
|
|||
|
* an initial state from prior to the crash.
|
|||
|
*
|
|||
|
* @param {Element} target DOM node in which editor is rendered.
|
|||
|
* @param {?Object} settings Editor settings object.
|
|||
|
*/
|
|||
|
|
|||
|
function reinitializeEditor(target, settings) {
|
|||
|
// Display warning if editor wasn't able to resolve homepage template.
|
|||
|
if (!settings.__unstableHomeTemplate) {
|
|||
|
(0,external_wp_element_namespaceObject.render)((0,external_wp_element_namespaceObject.createElement)(ErrorBoundaryWarning, {
|
|||
|
message: (0,external_wp_i18n_namespaceObject.__)('The editor is unable to find a block template for the homepage.'),
|
|||
|
dashboardLink: "index.php"
|
|||
|
}), target);
|
|||
|
return;
|
|||
|
} // This will be a no-op if the target doesn't have any React nodes.
|
|||
|
|
|||
|
|
|||
|
(0,external_wp_element_namespaceObject.unmountComponentAtNode)(target);
|
|||
|
const reboot = reinitializeEditor.bind(null, target, settings); // We dispatch actions and update the store synchronously before rendering
|
|||
|
// so that we won't trigger unnecessary re-renders with useEffect.
|
|||
|
|
|||
|
{
|
|||
|
(0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core/edit-site', {
|
|||
|
editorMode: 'visual',
|
|||
|
fixedToolbar: false,
|
|||
|
focusMode: false,
|
|||
|
keepCaretInsideBlock: false,
|
|||
|
welcomeGuide: true,
|
|||
|
welcomeGuideStyles: true
|
|||
|
});
|
|||
|
(0,external_wp_data_namespaceObject.dispatch)(store_store).updateSettings(settings); // Keep the defaultTemplateTypes in the core/editor settings too,
|
|||
|
// so that they can be selected with core/editor selectors in any editor.
|
|||
|
// This is needed because edit-site doesn't initialize with EditorProvider,
|
|||
|
// which internally uses updateEditorSettings as well.
|
|||
|
|
|||
|
(0,external_wp_data_namespaceObject.dispatch)(external_wp_editor_namespaceObject.store).updateEditorSettings({
|
|||
|
defaultTemplateTypes: settings.defaultTemplateTypes,
|
|||
|
defaultTemplatePartAreas: settings.defaultTemplatePartAreas
|
|||
|
});
|
|||
|
const isLandingOnListPage = getIsListPage((0,external_wp_url_namespaceObject.getQueryArgs)(window.location.href));
|
|||
|
|
|||
|
if (isLandingOnListPage) {
|
|||
|
// Default the navigation panel to be opened when we're in a bigger
|
|||
|
// screen and land in the list screen.
|
|||
|
(0,external_wp_data_namespaceObject.dispatch)(store_store).setIsNavigationPanelOpened((0,external_wp_data_namespaceObject.select)(external_wp_viewport_namespaceObject.store).isViewportMatch('medium'));
|
|||
|
}
|
|||
|
}
|
|||
|
(0,external_wp_element_namespaceObject.render)((0,external_wp_element_namespaceObject.createElement)(EditSiteApp, {
|
|||
|
reboot: reboot
|
|||
|
}), target);
|
|||
|
}
|
|||
|
/**
|
|||
|
* Initializes the site editor screen.
|
|||
|
*
|
|||
|
* @param {string} id ID of the root element to render the screen in.
|
|||
|
* @param {Object} settings Editor settings.
|
|||
|
*/
|
|||
|
|
|||
|
function initializeEditor(id, settings) {
|
|||
|
settings.__experimentalFetchLinkSuggestions = (search, searchOptions) => (0,external_wp_coreData_namespaceObject.__experimentalFetchLinkSuggestions)(search, searchOptions, settings);
|
|||
|
|
|||
|
settings.__experimentalFetchRichUrlData = external_wp_coreData_namespaceObject.__experimentalFetchUrlData;
|
|||
|
settings.__experimentalSpotlightEntityBlocks = ['core/template-part'];
|
|||
|
const target = document.getElementById(id);
|
|||
|
|
|||
|
(0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).__experimentalReapplyBlockTypeFilters();
|
|||
|
|
|||
|
(0,external_wp_blockLibrary_namespaceObject.registerCoreBlocks)();
|
|||
|
|
|||
|
if (false) {}
|
|||
|
|
|||
|
reinitializeEditor(target, settings);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}();
|
|||
|
(window.wp = window.wp || {}).editSite = __webpack_exports__;
|
|||
|
/******/ })()
|
|||
|
;
|