: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
function NavigationMenuTitle({
const [isSearching, setIsSearching] = (0,external_wp_element_namespaceObject.useState)(false);
} = useNavigationMenuContext();
const searchButtonRef = (0,external_wp_element_namespaceObject.useRef)(null);
const onCloseSearch = () => {
// Wait for the slide-in animation to complete before focusing the search button.
// eslint-disable-next-line @wordpress/react-no-unsafe-timeout
searchButtonRef.current?.focus();
const menuTitleId = `components-navigation__menu-title-${menu}`;
/* translators: search button label for menu search box. %s: menu title */
const searchButtonLabel = (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Search in %s'), title);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(MenuTitleUI, {
className: "components-navigation__menu-title",
children: [!isSearching && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(GroupTitleUI, {
className: "components-navigation__menu-title-heading",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
}), (hasSearch || titleAction) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(MenuTitleActionsUI, {
children: [titleAction, hasSearch && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_button, {
label: searchButtonLabel,
onClick: () => setIsSearching(true),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(icons_build_module_icon, {
}), isSearching && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: getAnimateClassName({
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(menu_title_search, {
onCloseSearch: onCloseSearch,
;// CONCATENATED MODULE: ./node_modules/@wordpress/components/build-module/navigation/menu/search-no-results-found.js
function NavigationSearchNoResultsFound({
} = useNavigationContext();
const resultsCount = Object.values(items).filter(item => item._isVisible).length;
if (!search || !!resultsCount) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ItemBaseUI, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ItemUI, {
children: [(0,external_wp_i18n_namespaceObject.__)('No results found.'), " "]
;// CONCATENATED MODULE: ./node_modules/@wordpress/components/build-module/navigation/menu/index.js
* @deprecated Use `Navigator` instead.
function NavigationMenu(props) {
onSearch: setControlledSearch,
search: controlledSearch,
const [uncontrolledSearch, setUncontrolledSearch] = (0,external_wp_element_namespaceObject.useState)('');
useNavigationTreeMenu(props);
} = useNavigationContext();
search: uncontrolledSearch
// Keep the children rendered to make sure invisible items are included in the navigation tree.
if (activeMenu !== menu) {
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuContext.Provider, {
const isControlledSearch = !!setControlledSearch;
const search = isControlledSearch ? controlledSearch : uncontrolledSearch;
const onSearch = isControlledSearch ? setControlledSearch : setUncontrolledSearch;
const menuTitleId = `components-navigation__menu-title-${menu}`;
const classes = dist_clsx('components-navigation__menu', className);
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuContext.Provider, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(MenuUI, {
children: [(parentMenu || onBackButtonClick) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(back_button, {
backButtonLabel: backButtonLabel,
onClick: onBackButtonClick
}), title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuTitle, {
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(navigable_container_menu, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("ul", {
"aria-labelledby": menuTitleId,
children: [children, search && !isSearchDebouncing && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationSearchNoResultsFound, {
/* harmony default export */ const navigation_menu = (NavigationMenu);
;// CONCATENATED MODULE: ./node_modules/path-to-regexp/dist.es2015/index.js
if (char === "*" || char === "+" || char === "?") {
tokens.push({ type: "MODIFIER", index: i, value: str[i++] });
tokens.push({ type: "ESCAPED_CHAR", index: i++, value: str[i++] });
tokens.push({ type: "OPEN", index: i, value: str[i++] });
tokens.push({ type: "CLOSE", index: i, value: str[i++] });
var code = str.charCodeAt(j);
(code >= 48 && code <= 57) ||
(code >= 65 && code <= 90) ||
(code >= 97 && code <= 122) ||
throw new TypeError("Missing parameter name at ".concat(i));
tokens.push({ type: "NAME", index: i, value: name });
throw new TypeError("Pattern cannot start with \"?\" at ".concat(j));
pattern += str[j++] + str[j++];
else if (str[j] === "(") {
if (str[j + 1] !== "?") {
throw new TypeError("Capturing groups are not allowed at ".concat(j));
throw new TypeError("Unbalanced pattern at ".concat(i));
throw new TypeError("Missing pattern at ".concat(i));
tokens.push({ type: "PATTERN", index: i, value: pattern });
tokens.push({ type: "CHAR", index: i, value: str[i++] });
tokens.push({ type: "END", index: i, value: "" });
* Parse a string for the raw tokens.
function dist_es2015_parse(str, options) {
if (options === void 0) { options = {}; }
var _a = options.prefixes, prefixes = _a === void 0 ? "./" : _a;
var defaultPattern = "[^".concat(escapeString(options.delimiter || "/#?"), "]+?");
var tryConsume = function (type) {
if (i < tokens.length && tokens[i].type === type)
return tokens[i++].value;
var mustConsume = function (type) {
var value = tryConsume(type);
var _a = tokens[i], nextType = _a.type, index = _a.index;
throw new TypeError("Unexpected ".concat(nextType, " at ").concat(index, ", expected ").concat(type));
var consumeText = function () {
while ((value = tryConsume("CHAR") || tryConsume("ESCAPED_CHAR"))) {
while (i < tokens.length) {
var char = tryConsume("CHAR");
var name = tryConsume("NAME");
var pattern = tryConsume("PATTERN");
if (prefixes.indexOf(prefix) === -1) {
pattern: pattern || defaultPattern,
modifier: tryConsume("MODIFIER") || "",
var value = char || tryConsume("ESCAPED_CHAR");
var open = tryConsume("OPEN");
var prefix = consumeText();
var name_1 = tryConsume("NAME") || "";
var pattern_1 = tryConsume("PATTERN") || "";
var suffix = consumeText();
name: name_1 || (pattern_1 ? key++ : ""),
pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,
modifier: tryConsume("MODIFIER") || "",
* Compile a string to a template function for the path.
function dist_es2015_compile(str, options) {
return tokensToFunction(dist_es2015_parse(str, options), options);
* Expose a method for transforming tokens into the path function.
function tokensToFunction(tokens, options) {
if (options === void 0) { options = {}; }
var reFlags = flags(options);
var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;
// Compile all the tokens into regexps.
var matches = tokens.map(function (token) {
if (typeof token === "object") {
return new RegExp("^(?:".concat(token.pattern, ")$"), reFlags);
for (var i = 0; i < tokens.length; i++) {
if (typeof token === "string") {
var value = data ? data[token.name] : undefined;
var optional = token.modifier === "?" || token.modifier === "*";
var repeat = token.modifier === "*" || token.modifier === "+";
if (Array.isArray(value)) {
throw new TypeError("Expected \"".concat(token.name, "\" to not repeat, but got an array"));
if (value.length === 0) {
throw new TypeError("Expected \"".concat(token.name, "\" to not be empty"));
for (var j = 0; j < value.length; j++) {
var segment = encode(value[j], token);
if (validate && !matches[i].test(segment)) {
throw new TypeError("Expected all \"".concat(token.name, "\" to match \"").concat(token.pattern, "\", but got \"").concat(segment, "\""));
path += token.prefix + segment + token.suffix;
if (typeof value === "string" || typeof value === "number") {
var segment = encode(String(value), token);
if (validate && !matches[i].test(segment)) {
throw new TypeError("Expected \"".concat(token.name, "\" to match \"").concat(token.pattern, "\", but got \"").concat(segment, "\""));
path += token.prefix + segment + token.suffix;
var typeOfMessage = repeat ? "an array" : "a string";
throw new TypeError("Expected \"".concat(token.name, "\" to be ").concat(typeOfMessage));
* Create path match function from `path-to-regexp` spec.
function dist_es2015_match(str, options) {
var re = pathToRegexp(str, keys, options);
return regexpToFunction(re, keys, options);
* Create a path match function from `path-to-regexp` output.
function regexpToFunction(re, keys, options) {
if (options === void 0) { options = {}; }
var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;
return function (pathname) {
var m = re.exec(pathname);
var path = m[0], index = m.index;
var params = Object.create(null);
var _loop_1 = function (i) {
if (key.modifier === "*" || key.modifier === "+") {
params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {
return decode(value, key);
params[key.name] = decode(m[i], key);
for (var i = 1; i < m.length; i++) {
return { path: path, index: index, params: params };
* Escape a regular expression string.
function escapeString(str) {
return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1");
* Get the flags for a regexp from the options.
function flags(options) {
return options && options.sensitive ? "" : "i";
* Pull out keys from a regexp.
function regexpToRegexp(path, keys) {
var groupsRegex = /\((?:\?<(.*?)>)?(?!\?)/g;