Fix File
•
/
home
/
sportsfe...
/
httpdocs
/
clone
/
wp-inclu...
/
js
/
dist
•
File:
edit-site.js
•
Content:
if (!moveOnKeyPressProp(event)) return; event.preventDefault(); store.move(id); } } }); props = useWrapElement( props, (element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(CompositeContextProvider, { value: store, children: element }), [store] ); const activeDescendant = store.useState((state) => { var _a2; if (!store) return; if (!composite) return; if (!state.virtualFocus) return; return (_a2 = getEnabledItem(store, state.activeId)) == null ? void 0 : _a2.id; }); props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({ "aria-activedescendant": activeDescendant }, props), { ref: useMergeRefs(composite ? store.setBaseElement : null, props.ref), onKeyDownCapture, onKeyUpCapture, onFocusCapture, onFocus, onBlurCapture, onKeyDown }); const focusable = store.useState( (state) => composite && (state.virtualFocus || state.activeId === null) ); props = useFocusable(_4R3V3JGP_spreadValues({ focusable }, props)); return props; } ); var _7QTPYGNZ_Composite = createComponent((props) => { const htmlProps = useComposite(props); return createElement("div", htmlProps); }); if (false) {} ;// CONCATENATED MODULE: external "ReactDOM" const external_ReactDOM_namespaceObject = window["ReactDOM"]; ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/combobox/combobox.js "use client"; // src/combobox/combobox.ts function isFirstItemAutoSelected(items, activeValue, autoSelect) { if (!autoSelect) return false; const firstItem = items.find((item) => !item.disabled && item.value); return (firstItem == null ? void 0 : firstItem.value) === activeValue; } function hasCompletionString(value, activeValue) { if (!activeValue) return false; if (value == null) return false; value = normalizeString(value); return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0; } function isInputEvent(event) { return event.type === "input"; } function isAriaAutoCompleteValue(value) { return value === "inline" || value === "list" || value === "both" || value === "none"; } var useCombobox = createHook( (_a) => { var _b = _a, { store, focusable = true, autoSelect: autoSelectProp = false, getAutoSelectId, showOnChange = true, setValueOnChange = true, showOnMouseDown = true, setValueOnClick = true, showOnKeyDown = true, moveOnKeyPress = true, autoComplete = "list" } = _b, props = __objRest(_b, [ "store", "focusable", "autoSelect", "getAutoSelectId", "showOnChange", "setValueOnChange", "showOnMouseDown", "setValueOnClick", "showOnKeyDown", "moveOnKeyPress", "autoComplete" ]); const context = useComboboxProviderContext(); store = store || context; invariant( store, false && 0 ); const ref = (0,external_React_.useRef)(null); const [valueUpdated, forceValueUpdate] = useForceUpdate(); const canAutoSelectRef = (0,external_React_.useRef)(false); const composingRef = (0,external_React_.useRef)(false); const autoSelect = store.useState( (state) => !!autoSelectProp && state.virtualFocus ); const inline = autoComplete === "inline" || autoComplete === "both"; const [canInline, setCanInline] = (0,external_React_.useState)(inline); useUpdateLayoutEffect(() => { if (!inline) return; setCanInline(true); }, [inline]); const storeValue = store.useState("value"); const activeValue = store.useState( (state) => inline && canInline ? state.activeValue : void 0 ); const items = store.useState("renderedItems"); const open = store.useState("open"); const contentElement = store.useState("contentElement"); const value = (0,external_React_.useMemo)(() => { if (!inline) return storeValue; if (!canInline) return storeValue; const firstItemAutoSelected = isFirstItemAutoSelected( items, activeValue, autoSelect ); if (firstItemAutoSelected) { if (hasCompletionString(storeValue, activeValue)) { const slice = (activeValue == null ? void 0 : activeValue.slice(storeValue.length)) || ""; return storeValue + slice; } return storeValue; } return activeValue || storeValue; }, [inline, canInline, items, activeValue, autoSelect, storeValue]); (0,external_React_.useEffect)(() => { const element = ref.current; if (!element) return; const onCompositeItemMove = () => setCanInline(true); element.addEventListener("combobox-item-move", onCompositeItemMove); return () => { element.removeEventListener("combobox-item-move", onCompositeItemMove); }; }, []); (0,external_React_.useEffect)(() => { if (!inline) return; if (!canInline) return; if (!activeValue) return; const firstItemAutoSelected = isFirstItemAutoSelected( items, activeValue, autoSelect ); if (!firstItemAutoSelected) return; if (!hasCompletionString(storeValue, activeValue)) return; queueMicrotask(() => { const element = ref.current; if (!element) return; setSelectionRange(element, storeValue.length, activeValue.length); }); }, [ valueUpdated, inline, canInline, activeValue, items, autoSelect, storeValue ]); const scrollingElementRef = (0,external_React_.useRef)(null); const getAutoSelectIdProp = useEvent(getAutoSelectId); const autoSelectIdRef = (0,external_React_.useRef)(null); (0,external_React_.useEffect)(() => { if (!open) return; if (!contentElement) return; const scrollingElement = getScrollingElement(contentElement); if (!scrollingElement) return; scrollingElementRef.current = scrollingElement; const onWheel = () => { canAutoSelectRef.current = false; }; const onScroll = () => { if (!store) return; if (!canAutoSelectRef.current) return; const { activeId } = store.getState(); if (activeId === null) return; if (activeId === autoSelectIdRef.current) return; canAutoSelectRef.current = false; }; const options = { passive: true, capture: true }; scrollingElement.addEventListener("wheel", onWheel, options); scrollingElement.addEventListener("scroll", onScroll, options); return () => { scrollingElement.removeEventListener("wheel", onWheel, true); scrollingElement.removeEventListener("scroll", onScroll, true); }; }, [open, contentElement, store]); useSafeLayoutEffect(() => { if (!storeValue) return; if (composingRef.current) return; canAutoSelectRef.current = true; }, [storeValue]); useSafeLayoutEffect(() => { if (open) return; canAutoSelectRef.current = false; }, [open]); const resetValueOnSelect = store.useState("resetValueOnSelect"); useUpdateEffect(() => { var _a2; const canAutoSelect = canAutoSelectRef.current; if (!store) return; if ((!autoSelect || !canAutoSelect) && !resetValueOnSelect) return; const { baseElement, contentElement: contentElement2, activeId } = store.getState(); if (baseElement && !hasFocus(baseElement)) return; if (contentElement2 == null ? void 0 : contentElement2.hasAttribute("data-placing")) { const observer = new MutationObserver(forceValueUpdate); observer.observe(contentElement2, { attributeFilter: ["data-placing"] }); return () => observer.disconnect(); } if (autoSelect && canAutoSelect) { const userAutoSelectId = getAutoSelectIdProp(items); const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : store.first(); autoSelectIdRef.current = autoSelectId; store.move(autoSelectId != null ? autoSelectId : null); } else { const element = (_a2 = store.item(activeId)) == null ? void 0 : _a2.element; if (element && "scrollIntoView" in element) { element.scrollIntoView({ block: "nearest", inline: "nearest" }); } } return; }, [ store, valueUpdated, storeValue, autoSelect, resetValueOnSelect, getAutoSelectIdProp, items ]); (0,external_React_.useEffect)(() => { if (!inline) return; const combobox = ref.current; if (!combobox) return; const elements = [combobox, contentElement].filter( (value2) => !!value2 ); const onBlur2 = (event) => { if (elements.every((el) => isFocusEventOutside(event, el))) { store == null ? void 0 : store.setValue(value); } }; elements.forEach((el) => el.addEventListener("focusout", onBlur2)); return () => { elements.forEach((el) => el.removeEventListener("focusout", onBlur2)); }; }, [inline, contentElement, store, value]); const onChangeProp = props.onChange; const showOnChangeProp = useBooleanEvent(showOnChange); const setValueOnChangeProp = useBooleanEvent(setValueOnChange); const onChange = useEvent((event) => { onChangeProp == null ? void 0 : onChangeProp(event); if (event.defaultPrevented) return; if (!store) return; const { value: value2, selectionStart, selectionEnd } = event.target; const nativeEvent = event.nativeEvent; canAutoSelectRef.current = true; if (isInputEvent(nativeEvent)) { if (nativeEvent.isComposing) { canAutoSelectRef.current = false; composingRef.current = true; } if (inline) { const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText"; const caretAtEnd = selectionStart === value2.length; setCanInline(textInserted && caretAtEnd); } } if (setValueOnChangeProp(event)) { const isSameValue = value2 === store.getState().value; (0,external_ReactDOM_namespaceObject.flushSync)(() => store == null ? void 0 : store.setValue(value2)); setSelectionRange(event.currentTarget, selectionStart, selectionEnd); if (inline && autoSelect && isSameValue) { forceValueUpdate(); } } if (showOnChangeProp(event)) { store.show(); } if (!autoSelect || !canAutoSelectRef.current) { store.setActiveId(null); } }); const onCompositionEndProp = props.onCompositionEnd; const onCompositionEnd = useEvent( (event) => { canAutoSelectRef.current = true; composingRef.current = false; onCompositionEndProp == null ? void 0 : onCompositionEndProp(event); if (event.defaultPrevented) return; if (!autoSelect) return; forceValueUpdate(); } ); const onMouseDownProp = props.onMouseDown; const setValueOnClickProp = useBooleanEvent(setValueOnClick); const showOnMouseDownProp = useBooleanEvent(showOnMouseDown); const onMouseDown = useEvent((event) => { onMouseDownProp == null ? void 0 : onMouseDownProp(event); if (event.defaultPrevented) return; if (event.button) return; if (event.ctrlKey) return; if (!store) return; store.setActiveId(null); if (setValueOnClickProp(event)) { store.setValue(value); } if (showOnMouseDownProp(event)) { queueBeforeEvent(event.currentTarget, "mouseup", store.show); } }); const onKeyDownProp = props.onKeyDown; const showOnKeyDownProp = useBooleanEvent(showOnKeyDown); const onKeyDown = useEvent( (event) => { onKeyDownProp == null ? void 0 : onKeyDownProp(event); if (!event.repeat) { canAutoSelectRef.current = false; } if (event.defaultPrevented) return; if (event.ctrlKey) return; if (event.altKey) return; if (event.shiftKey) return; if (event.metaKey) return; if (!store) return; const { open: open2, activeId } = store.getState(); if (open2) return; if (activeId !== null) return; if (event.key === "ArrowUp" || event.key === "ArrowDown") { if (showOnKeyDownProp(event)) { event.preventDefault(); store.show(); } } } ); const onBlurProp = props.onBlur; const onBlur = useEvent((event) => { canAutoSelectRef.current = false; onBlurProp == null ? void 0 : onBlurProp(event); if (event.defaultPrevented) return; }); const id = useId(props.id); const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0; const isActiveItem = store.useState((state) => state.activeId === null); props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({ id, role: "combobox", "aria-autocomplete": ariaAutoComplete, "aria-haspopup": getPopupRole(contentElement, "listbox"), "aria-expanded": open, "aria-controls": contentElement == null ? void 0 : contentElement.id, "data-active-item": isActiveItem || void 0, value }, props), { ref: useMergeRefs(ref, props.ref), onChange, onCompositionEnd, onMouseDown, onKeyDown, onBlur }); props = useComposite(_4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({ store, focusable }, props), { // Enable inline autocomplete when the user moves from the combobox input // to an item. moveOnKeyPress: (event) => { if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false; if (inline) setCanInline(true); return true; } })); props = usePopoverAnchor(_4R3V3JGP_spreadValues({ store }, props)); return _4R3V3JGP_spreadValues({ autoComplete: "off" }, props); } ); var Combobox = createComponent((props) => { const htmlProps = useCombobox(props); return createElement("input", htmlProps); }); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/CLE7NTOY.js "use client"; // src/disclosure/disclosure-content.tsx function afterTimeout(timeoutMs, cb) { const timeoutId = setTimeout(cb, timeoutMs); return () => clearTimeout(timeoutId); } function CLE7NTOY_afterPaint(cb) { let raf = requestAnimationFrame(() => { raf = requestAnimationFrame(cb); }); return () => cancelAnimationFrame(raf); } function parseCSSTime(...times) { return times.join(", ").split(", ").reduce((longestTime, currentTimeString) => { const currentTime = parseFloat(currentTimeString || "0s") * 1e3; if (currentTime > longestTime) return currentTime; return longestTime; }, 0); } function isHidden(mounted, hidden, alwaysVisible) { return !alwaysVisible && hidden !== false && (!mounted || !!hidden); } var useDisclosureContent = createHook( (_a) => { var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, ["store", "alwaysVisible"]); const context = useDisclosureProviderContext(); store = store || context; invariant( store, false && 0 ); const id = useId(props.id); const [transition, setTransition] = (0,external_React_.useState)(null); const open = store.useState("open"); const mounted = store.useState("mounted"); const animated = store.useState("animated"); const contentElement = store.useState("contentElement"); useSafeLayoutEffect(() => { if (!animated) return; if (!(contentElement == null ? void 0 : contentElement.isConnected)) { setTransition(null); return; } return CLE7NTOY_afterPaint(() => { setTransition(open ? "enter" : "leave"); }); }, [animated, contentElement, open]); useSafeLayoutEffect(() => { if (!store) return; if (!animated) return; if (!contentElement) return; if (!transition) return; if (transition === "enter" && !open) return; if (transition === "leave" && open) return; if (typeof animated === "number") { const timeoutMs2 = animated; return afterTimeout(timeoutMs2, store.stopAnimation); } const { transitionDuration, animationDuration, transitionDelay, animationDelay } = getComputedStyle(contentElement); const delay = parseCSSTime(transitionDelay, animationDelay); const duration = parseCSSTime(transitionDuration, animationDuration); const timeoutMs = delay + duration; if (!timeoutMs) return; return afterTimeout(timeoutMs, store.stopAnimation); }, [store, animated, contentElement, open, transition]); props = useWrapElement( props, (element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(DialogScopedContextProvider, { value: store, children: element }), [store] ); const hidden = isHidden(mounted, props.hidden, alwaysVisible); const style = hidden ? _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props.style), { display: "none" }) : props.style; props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({ id, "data-enter": transition === "enter" ? "" : void 0, "data-leave": transition === "leave" ? "" : void 0, hidden }, props), { ref: useMergeRefs(id ? store.setContentElement : null, props.ref), style }); return props; } ); var DisclosureContentImpl = createComponent( (props) => { const htmlProps = useDisclosureContent(props); return createElement("div", htmlProps); } ); var DisclosureContent = createComponent( (_a) => { var _b = _a, { unmountOnHide } = _b, props = __objRest(_b, ["unmountOnHide"]); const context = useDisclosureProviderContext(); const store = props.store || context; const mounted = useStoreState( store, (state) => !unmountOnHide || (state == null ? void 0 : state.mounted) ); if (mounted === false) return null; return /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(DisclosureContentImpl, _4R3V3JGP_spreadValues({}, props)); } ); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/ZEXNX5JH.js "use client"; // src/combobox/combobox-list.tsx var useComboboxList = createHook( (_a) => { var _b = _a, { store, focusable = true, alwaysVisible } = _b, props = __objRest(_b, ["store", "focusable", "alwaysVisible"]); const context = useComboboxProviderContext(); store = store || context; invariant( store, false && 0 ); const ref = (0,external_React_.useRef)(null); const id = useId(props.id); const onKeyDownProp = props.onKeyDown; const onKeyDown = useEvent((event) => { onKeyDownProp == null ? void 0 : onKeyDownProp(event); if (event.defaultPrevented) return; if (event.key === "Escape") { store == null ? void 0 : store.move(null); } }); const restoreVirtualFocus = (0,external_React_.useRef)(false); const onFocusVisibleProp = props.onFocusVisible; const onFocusVisible = useEvent((event) => { onFocusVisibleProp == null ? void 0 : onFocusVisibleProp(event); if (event.defaultPrevented) return; if (event.type !== "focus") return; if (!store) return; const { virtualFocus } = store.getState(); if (!virtualFocus) return; const { relatedTarget, currentTarget } = event; if (relatedTarget && currentTarget.contains(relatedTarget)) return; restoreVirtualFocus.current = true; store.setState("virtualFocus", false); }); const onBlurProp = props.onBlur; const onBlur = useEvent((event) => { onBlurProp == null ? void 0 : onBlurProp(event); if (event.defaultPrevented) return; if (!restoreVirtualFocus.current) return; if (!isFocusEventOutside(event)) return; restoreVirtualFocus.current = false; store == null ? void 0 : store.setState("virtualFocus", true); }); props = useWrapElement( props, (element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxScopedContextProvider, { value: store, children: element }), [store] ); const mounted = store.useState("mounted"); const hidden = isHidden(mounted, props.hidden, alwaysVisible); const style = hidden ? _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props.style), { display: "none" }) : props.style; const multiSelectable = store.useState( (state) => Array.isArray(state.selectedValue) ); const role = useAttribute(ref, "role", props.role); const isCompositeRole = role === "listbox" || role === "tree" || role === "grid"; const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0; props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({ id, hidden, role: "listbox", tabIndex: focusable ? -1 : void 0, "aria-multiselectable": ariaMultiSelectable }, props), { ref: useMergeRefs(id ? store.setContentElement : null, ref, props.ref), style, onKeyDown, onFocusVisible, onBlur }); props = useFocusable(_4R3V3JGP_spreadValues({ focusable }, props)); return props; } ); var ComboboxList = createComponent((props) => { const htmlProps = useComboboxList(props); return createElement("div", htmlProps); }); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/NWCBQ4CV.js "use client"; // src/command/command.ts function isNativeClick(event) { if (!event.isTrusted) return false; const element = event.currentTarget; if (event.key === "Enter") { return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A"; } if (event.key === " ") { return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT"; } return false; } var NWCBQ4CV_symbol = Symbol("command"); var useCommand = createHook( (_a) => { var _b = _a, { clickOnEnter = true, clickOnSpace = true } = _b, props = __objRest(_b, ["clickOnEnter", "clickOnSpace"]); const ref = (0,external_React_.useRef)(null); const tagName = useTagName(ref, props.as); const type = props.type; const [isNativeButton, setIsNativeButton] = (0,external_React_.useState)( () => !!tagName && isButton({ tagName, type }) ); (0,external_React_.useEffect)(() => { if (!ref.current) return; setIsNativeButton(isButton(ref.current)); }, []); const [active, setActive] = (0,external_React_.useState)(false); const activeRef = (0,external_React_.useRef)(false); const disabled = disabledFromProps(props); const [isDuplicate, metadataProps] = useMetadataProps(props, NWCBQ4CV_symbol, true); const onKeyDownProp = props.onKeyDown; const onKeyDown = useEvent((event) => { onKeyDownProp == null ? void 0 : onKeyDownProp(event); const element = event.currentTarget; if (event.defaultPrevented) return; if (isDuplicate) return; if (disabled) return; if (!isSelfTarget(event)) return; if (DLOEKDPY_isTextField(element)) return; if (element.isContentEditable) return; const isEnter = clickOnEnter && event.key === "Enter"; const isSpace = clickOnSpace && event.key === " "; const shouldPreventEnter = event.key === "Enter" && !clickOnEnter; const shouldPreventSpace = event.key === " " && !clickOnSpace; if (shouldPreventEnter || shouldPreventSpace) { event.preventDefault(); return; } if (isEnter || isSpace) { const nativeClick = isNativeClick(event); if (isEnter) { if (!nativeClick) { event.preventDefault(); const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); const click = () => fireClickEvent(element, eventInit); if (isFirefox()) { queueBeforeEvent(element, "keyup", click); } else { queueMicrotask(click); } } } else if (isSpace) { activeRef.current = true; if (!nativeClick) { event.preventDefault(); setActive(true); } } } }); const onKeyUpProp = props.onKeyUp; const onKeyUp = useEvent((event) => { onKeyUpProp == null ? void 0 : onKeyUpProp(event); if (event.defaultPrevented) return; if (isDuplicate) return; if (disabled) return; if (event.metaKey) return; const isSpace = clickOnSpace && event.key === " "; if (activeRef.current && isSpace) { activeRef.current = false; if (!isNativeClick(event)) { event.preventDefault(); setActive(false); const element = event.currentTarget; const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, ["view"]); queueMicrotask(() => fireClickEvent(element, eventInit)); } } }); props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues(_4R3V3JGP_spreadValues({ "data-active": active ? "" : void 0, type: isNativeButton ? "button" : void 0 }, metadataProps), props), { ref: useMergeRefs(ref, props.ref), onKeyDown, onKeyUp }); props = useFocusable(props); return props; } ); var Command = createComponent((props) => { props = useCommand(props); return createElement("button", props); }); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/UH3I23HL.js "use client"; // src/collection/collection-item.ts var useCollectionItem = createHook( (_a) => { var _b = _a, { store, shouldRegisterItem = true, getItem = identity, element: element } = _b, props = __objRest(_b, [ "store", "shouldRegisterItem", "getItem", // @ts-expect-error This prop may come from a collection renderer. "element" ]); const context = useCollectionContext(); store = store || context; const id = useId(props.id); const ref = (0,external_React_.useRef)(element); (0,external_React_.useEffect)(() => { const element2 = ref.current; if (!id) return; if (!element2) return; if (!shouldRegisterItem) return; const item = getItem({ id, element: element2 }); return store == null ? void 0 : store.renderItem(item); }, [id, shouldRegisterItem, getItem, store]); props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { ref: useMergeRefs(ref, props.ref) }); return props; } ); var CollectionItem = createComponent( (props) => { const htmlProps = useCollectionItem(props); return createElement("div", htmlProps); } ); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/QZLXIDNP.js "use client"; // src/composite/composite-item.tsx function isEditableElement(element) { if (element.isContentEditable) return true; if (DLOEKDPY_isTextField(element)) return true; return element.tagName === "INPUT" && !isButton(element); } function getNextPageOffset(scrollingElement, pageUp = false) { const height = scrollingElement.clientHeight; const { top } = scrollingElement.getBoundingClientRect(); const pageSize = Math.max(height * 0.875, height - 40) * 1.5; const pageOffset = pageUp ? height - pageSize + top : pageSize + top; if (scrollingElement.tagName === "HTML") { return pageOffset + scrollingElement.scrollTop; } return pageOffset; } function getItemOffset(itemElement, pageUp = false) { const { top } = itemElement.getBoundingClientRect(); if (pageUp) { return top + itemElement.clientHeight; } return top; } function findNextPageItemId(element, store, next, pageUp = false) { var _a; if (!store) return; if (!next) return; const { renderedItems } = store.getState(); const scrollingElement = getScrollingElement(element); if (!scrollingElement) return; const nextPageOffset = getNextPageOffset(scrollingElement, pageUp); let id; let prevDifference; for (let i = 0; i < renderedItems.length; i += 1) { const previousId = id; id = next(i); if (!id) break; if (id === previousId) continue; const itemElement = (_a = getEnabledItem(store, id)) == null ? void 0 : _a.element; if (!itemElement) continue; const itemOffset = getItemOffset(itemElement, pageUp); const difference = itemOffset - nextPageOffset; const absDifference = Math.abs(difference); if (pageUp && difference <= 0 || !pageUp && difference >= 0) { if (prevDifference !== void 0 && prevDifference < absDifference) { id = previousId; } break; } prevDifference = absDifference; } return id; } function targetIsAnotherItem(event, store) { if (isSelfTarget(event)) return false; return isItem(store, event.target); } function useRole(ref, props) { const roleProp = props.role; const [role, setRole] = (0,external_React_.useState)(roleProp); useSafeLayoutEffect(() => { const element = ref.current; if (!element) return; setRole(element.getAttribute("role") || roleProp); }, [roleProp]); return role; } function requiresAriaSelected(role) { return role === "option" || role === "treeitem"; } function supportsAriaSelected(role) { if (role === "option") return true; if (role === "tab") return true; if (role === "treeitem") return true; if (role === "gridcell") return true; if (role === "row") return true; if (role === "columnheader") return true; if (role === "rowheader") return true; return false; } var useCompositeItem = createHook( (_a) => { var _b = _a, { store, rowId: rowIdProp, preventScrollOnKeyDown = false, moveOnKeyPress = true, tabbable = false, getItem: getItemProp, "aria-setsize": ariaSetSizeProp, "aria-posinset": ariaPosInSetProp } = _b, props = __objRest(_b, [ "store", "rowId", "preventScrollOnKeyDown", "moveOnKeyPress", "tabbable", "getItem", "aria-setsize", "aria-posinset" ]); const context = useCompositeContext(); store = store || context; const id = useId(props.id); const ref = (0,external_React_.useRef)(null); const row = (0,external_React_.useContext)(CompositeRowContext); const rowId = useStoreState(store, (state) => { if (rowIdProp) return rowIdProp; if (!state) return; if (!(row == null ? void 0 : row.baseElement)) return; if (row.baseElement !== state.baseElement) return; return row.id; }); const disabled = disabledFromProps(props); const trulyDisabled = disabled && !props.accessibleWhenDisabled; const getItem = (0,external_React_.useCallback)( (item) => { const nextItem = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, item), { id: id || item.id, rowId, disabled: !!trulyDisabled }); if (getItemProp) { return getItemProp(nextItem); } return nextItem; }, [id, rowId, trulyDisabled, getItemProp] ); const onFocusProp = props.onFocus; const hasFocusedComposite = (0,external_React_.useRef)(false); const onFocus = useEvent((event) => { onFocusProp == null ? void 0 : onFocusProp(event); if (event.defaultPrevented) return; if (isPortalEvent(event)) return; if (!id) return; if (!store) return; const { activeId, virtualFocus: virtualFocus2, baseElement: baseElement2 } = store.getState(); if (targetIsAnotherItem(event, store)) return; if (activeId !== id) { store.setActiveId(id); } if (!virtualFocus2) return; if (!isSelfTarget(event)) return; if (isEditableElement(event.currentTarget)) return; if (!(baseElement2 == null ? void 0 : baseElement2.isConnected)) return; hasFocusedComposite.current = true; const fromComposite = event.relatedTarget === baseElement2 || isItem(store, event.relatedTarget); if (fromComposite) { focusSilently(baseElement2); } else { baseElement2.focus(); } }); const onBlurCaptureProp = props.onBlurCapture; const onBlurCapture = useEvent((event) => { onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); if (event.defaultPrevented) return; const state = store == null ? void 0 : store.getState(); if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) { hasFocusedComposite.current = false; event.preventDefault(); event.stopPropagation(); } }); const onKeyDownProp = props.onKeyDown; const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown); const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); const onKeyDown = useEvent((event) => { onKeyDownProp == null ? void 0 : onKeyDownProp(event); if (event.defaultPrevented) return; if (!isSelfTarget(event)) return; if (!store) return; const { currentTarget } = event; const state = store.getState(); const item = store.item(id); const isGrid = !!(item == null ? void 0 : item.rowId); const isVertical = state.orientation !== "horizontal"; const isHorizontal = state.orientation !== "vertical"; const canHomeEnd = () => { if (isGrid) return true; if (isHorizontal) return true; if (!state.baseElement) return true; if (!DLOEKDPY_isTextField(state.baseElement)) return true; return false; }; const keyMap = { ArrowUp: (isGrid || isVertical) && store.up, ArrowRight: (isGrid || isHorizontal) && store.next, ArrowDown: (isGrid || isVertical) && store.down, ArrowLeft: (isGrid || isHorizontal) && store.previous, Home: () => { if (!canHomeEnd()) return; if (!isGrid || event.ctrlKey) { return store == null ? void 0 : store.first(); } return store == null ? void 0 : store.previous(-1); }, End: () => { if (!canHomeEnd()) return; if (!isGrid || event.ctrlKey) { return store == null ? void 0 : store.last(); } return store == null ? void 0 : store.next(-1); }, PageUp: () => { return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.up, true); }, PageDown: () => { return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.down); } }; const action = keyMap[event.key]; if (action) { const nextId = action(); if (preventScrollOnKeyDownProp(event) || nextId !== void 0) { if (!moveOnKeyPressProp(event)) return; event.preventDefault(); store.move(nextId); } } }); const baseElement = useStoreState( store, (state) => (state == null ? void 0 : state.baseElement) || void 0 ); const providerValue = (0,external_React_.useMemo)( () => ({ id, baseElement }), [id, baseElement] ); props = useWrapElement( props, (element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), [providerValue] ); const isActiveItem = useStoreState( store, (state) => !!state && state.activeId === id ); const virtualFocus = useStoreState(store, "virtualFocus"); const role = useRole(ref, props); let ariaSelected; if (isActiveItem) { if (requiresAriaSelected(role)) { ariaSelected = true; } else if (virtualFocus && supportsAriaSelected(role)) { ariaSelected = true; } } const ariaSetSize = useStoreState(store, (state) => { if (ariaSetSizeProp != null) return ariaSetSizeProp; if (!state) return; if (!(row == null ? void 0 : row.ariaSetSize)) return; if (row.baseElement !== state.baseElement) return; return row.ariaSetSize; }); const ariaPosInSet = useStoreState(store, (state) => { if (ariaPosInSetProp != null) return ariaPosInSetProp; if (!state) return; if (!(row == null ? void 0 : row.ariaPosInSet)) return; if (row.baseElement !== state.baseElement) return; const itemsInRow = state.renderedItems.filter( (item) => item.rowId === rowId ); return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id); }); const isTabbable = useStoreState(store, (state) => { if (!(state == null ? void 0 : state.renderedItems.length)) return true; if (state.virtualFocus) return false; if (tabbable) return true; return state.activeId === id; }); props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({ id, "aria-selected": ariaSelected, "data-active-item": isActiveItem ? "" : void 0 }, props), { ref: useMergeRefs(ref, props.ref), tabIndex: isTabbable ? props.tabIndex : -1, onFocus, onBlurCapture, onKeyDown }); props = useCommand(props); props = useCollectionItem(_4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({ store }, props), { getItem, shouldRegisterItem: !!id ? props.shouldRegisterItem : false })); return _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { "aria-setsize": ariaSetSize, "aria-posinset": ariaPosInSet }); } ); var QZLXIDNP_CompositeItem = createMemoComponent( (props) => { const htmlProps = useCompositeItem(props); return createElement("button", htmlProps); } ); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/combobox/combobox-item.js "use client"; // src/combobox/combobox-item.tsx function isSelected(storeValue, itemValue) { if (itemValue == null) return; if (storeValue == null) return false; if (Array.isArray(storeValue)) { return storeValue.includes(itemValue); } return storeValue === itemValue; } var useComboboxItem = createHook( (_a) => { var _b = _a, { store, value, hideOnClick, selectValueOnClick = true, setValueOnClick, focusOnHover = false, moveOnKeyPress = true, getItem: getItemProp } = _b, props = __objRest(_b, [ "store", "value", "hideOnClick", "selectValueOnClick", "setValueOnClick", "focusOnHover", "moveOnKeyPress", "getItem" ]); const context = useComboboxScopedContext(); store = store || context; invariant( store, false && 0 ); const getItem = (0,external_React_.useCallback)( (item) => { const nextItem = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, item), { value }); if (getItemProp) { return getItemProp(nextItem); } return nextItem; }, [value, getItemProp] ); const multiSelectable = store.useState( (state) => Array.isArray(state.selectedValue) ); setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable; hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable; const onClickProp = props.onClick; const setValueOnClickProp = useBooleanEvent(setValueOnClick); const selectValueOnClickProp = useBooleanEvent(selectValueOnClick); const hideOnClickProp = useBooleanEvent(hideOnClick); const onClick = useEvent((event) => { onClickProp == null ? void 0 : onClickProp(event); if (event.defaultPrevented) return; if (isDownloading(event)) return; if (isOpeningInNewTab(event)) return; if (value != null) { if (selectValueOnClickProp(event)) { store == null ? void 0 : store.setSelectedValue((prevValue) => { if (!Array.isArray(prevValue)) return value; if (prevValue.includes(value)) { return prevValue.filter((v) => v !== value); } return [...prevValue, value]; }); } if (setValueOnClickProp(event)) { store == null ? void 0 : store.setValue(value); } } if (hideOnClickProp(event)) { store == null ? void 0 : store.move(null); store == null ? void 0 : store.hide(); } }); const onKeyDownProp = props.onKeyDown; const onKeyDown = useEvent((event) => { onKeyDownProp == null ? void 0 : onKeyDownProp(event); if (event.defaultPrevented) return; const baseElement = store == null ? void 0 : store.getState().baseElement; if (!baseElement) return; if (hasFocus(baseElement)) return; const printable = event.key.length === 1; if (printable || event.key === "Backspace" || event.key === "Delete") { queueMicrotask(() => baseElement.focus()); if (DLOEKDPY_isTextField(baseElement)) { store == null ? void 0 : store.setValue(baseElement.value); } } }); const selected = store.useState( (state) => isSelected(state.selectedValue, value) ); if (multiSelectable && selected != null) { props = _4R3V3JGP_spreadValues({ "aria-selected": selected }, props); } props = useWrapElement( props, (element) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), [value, selected] ); const contentElement = store.useState("contentElement"); props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({ role: getPopupItemRole(contentElement), children: value }, props), { onClick, onKeyDown }); const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); props = useCompositeItem(_4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({ store }, props), { getItem, // Dispatch a custom event on the combobox input when moving to an item // with the keyboard so the Combobox component can enable inline // autocompletion. moveOnKeyPress: (event) => { if (!moveOnKeyPressProp(event)) return false; const moveEvent = new Event("combobox-item-move"); const baseElement = store == null ? void 0 : store.getState().baseElement; baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent); return true; } })); props = useCompositeHover(_4R3V3JGP_spreadValues({ store, focusOnHover }, props)); return props; } ); var ComboboxItem = createMemoComponent( (props) => { const htmlProps = useComboboxItem(props); return createElement("div", htmlProps); } ); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js "use client"; // src/combobox/combobox-item-value.tsx function normalizeValue(value) { return normalizeString(value).toLowerCase(); } function splitValue(itemValue, userValue) { userValue = normalizeValue(userValue); let index = normalizeValue(itemValue).indexOf(userValue); const parts = []; while (index !== -1) { if (index !== 0) { parts.push( /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { "data-autocomplete-value": "", children: itemValue.substr(0, index) }, parts.length) ); } parts.push( /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { "data-user-value": "", children: itemValue.substr(index, userValue.length) }, parts.length) ); itemValue = itemValue.substr(index + userValue.length); index = normalizeValue(itemValue).indexOf(userValue); } if (itemValue) { parts.push( /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { "data-autocomplete-value": "", children: itemValue }, parts.length) ); } return parts; } var useComboboxItemValue = createHook( (_a) => { var _b = _a, { store, value } = _b, props = __objRest(_b, ["store", "value"]); const context = useComboboxScopedContext(); store = store || context; const itemContext = (0,external_React_.useContext)(ComboboxItemValueContext); const itemValue = value != null ? value : itemContext; invariant( store, false && 0 ); const stateValue = store.useState( (state) => itemValue && state.value ? state.value : void 0 ); const children = (0,external_React_.useMemo)( () => itemValue && stateValue ? splitValue(itemValue, stateValue) : itemValue, [itemValue, stateValue] ); props = _4R3V3JGP_spreadValues({ children }, props); return props; } ); var ComboboxItemValue = createComponent( (props) => { const htmlProps = useComboboxItemValue(props); return createElement("span", htmlProps); } ); if (false) {} // EXTERNAL MODULE: ./node_modules/remove-accents/index.js var remove_accents = __webpack_require__(9681); var remove_accents_default = /*#__PURE__*/__webpack_require__.n(remove_accents); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/check.js /** * WordPress dependencies */ const check = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z" }) }); /* harmony default export */ const library_check = (check); ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/search-widget.js /** * External dependencies */ // eslint-disable-next-line no-restricted-imports /** * WordPress dependencies */ /** * Internal dependencies */ const { CompositeV2: search_widget_Composite, CompositeItemV2: search_widget_CompositeItem, useCompositeStoreV2: search_widget_useCompositeStore } = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); const radioCheck = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Circle, { cx: 12, cy: 12, r: 3 }) }); function normalizeSearchInput(input = '') { return remove_accents_default()(input.trim().toLowerCase()); } const search_widget_EMPTY_ARRAY = []; const getCurrentValue = (filterDefinition, currentFilter) => { if (filterDefinition.singleSelection) { return currentFilter?.value; } if (Array.isArray(currentFilter?.value)) { return currentFilter.value; } if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) { return [currentFilter.value]; } return search_widget_EMPTY_ARRAY; }; const getNewValue = (filterDefinition, currentFilter, value) => { if (filterDefinition.singleSelection) { return value; } if (Array.isArray(currentFilter?.value)) { return currentFilter.value.includes(value) ? currentFilter.value.filter(v => v !== value) : [...currentFilter.value, value]; } return [value]; }; function ListBox({ view, filter, onChangeView }) { const compositeStore = search_widget_useCompositeStore({ virtualFocus: true, focusLoop: true, // When we have no or just one operator, we can set the first item as active. // We do that by passing `undefined` to `defaultActiveId`. Otherwise, we set it to `null`, // so the first item is not selected, since the focus is on the operators control. defaultActiveId: filter.operators?.length === 1 ? undefined : null }); const currentFilter = view.filters.find(f => f.field === filter.field); const currentValue = getCurrentValue(filter, currentFilter); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(search_widget_Composite, { store: compositeStore, role: "listbox", className: "dataviews-search-widget-listbox", "aria-label": (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */ (0,external_wp_i18n_namespaceObject.__)('List of: %1$s'), filter.name), onFocusVisible: () => { if (!compositeStore.getState().activeId) { compositeStore.move(compositeStore.first()); } }, render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CompositeTypeahead, { store: compositeStore }), children: filter.elements.map(element => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(CompositeHover, { store: compositeStore, render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(search_widget_CompositeItem, { render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { "aria-label": element.label, role: "option", className: "dataviews-search-widget-listitem" }), onClick: () => { const newFilters = currentFilter ? [...view.filters.map(_filter => { if (_filter.field === filter.field) { return { ..._filter, operator: currentFilter.operator || filter.operators[0], value: getNewValue(filter, currentFilter, element.value) }; } return _filter; })] : [...view.filters, { field: filter.field, operator: filter.operators[0], value: getNewValue(filter, currentFilter, element.value) }]; onChangeView({ ...view, page: 1, filters: newFilters }); } }), children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { className: "dataviews-search-widget-listitem-check", children: [filter.singleSelection && currentValue === element.value && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { icon: radioCheck }), !filter.singleSelection && currentValue.includes(element.value) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { icon: library_check })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { children: [element.label, !!element.description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "dataviews-search-widget-listitem-description", children: element.description })] })] }, element.value)) }); } function search_widget_ComboboxList({ view, filter, onChangeView }) { const [searchValue, setSearchValue] = (0,external_wp_element_namespaceObject.useState)(''); const deferredSearchValue = (0,external_wp_element_namespaceObject.useDeferredValue)(searchValue); const currentFilter = view.filters.find(_filter => _filter.field === filter.field); const currentValue = getCurrentValue(filter, currentFilter); const matches = (0,external_wp_element_namespaceObject.useMemo)(() => { const normalizedSearch = normalizeSearchInput(deferredSearchValue); return filter.elements.filter(item => normalizeSearchInput(item.label).includes(normalizedSearch)); }, [filter.elements, deferredSearchValue]); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ComboboxProvider, { resetValueOnSelect: false, selectedValue: currentValue, setSelectedValue: value => { const newFilters = currentFilter ? [...view.filters.map(_filter => { if (_filter.field === filter.field) { return { ..._filter, operator: currentFilter.operator || filter.operators[0], value }; } return _filter; })] : [...view.filters, { field: filter.field, operator: filter.operators[0], value }]; onChangeView({ ...view, page: 1, filters: newFilters }); }, setValue: setSearchValue, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { className: "dataviews-search-widget-filter-combobox__wrapper", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxLabel, { render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, { children: (0,external_wp_i18n_namespaceObject.__)('Search items') }), children: (0,external_wp_i18n_namespaceObject.__)('Search items') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Combobox, { autoSelect: "always", placeholder: (0,external_wp_i18n_namespaceObject.__)('Search'), className: "dataviews-search-widget-filter-combobox__input" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "dataviews-search-widget-filter-combobox__icon", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { icon: library_search }) })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ComboboxList, { className: "dataviews-search-widget-filter-combobox-list", alwaysVisible: true, children: [matches.map(element => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ComboboxItem, { value: element.value, className: "dataviews-search-widget-listitem", hideOnClick: false, setValueOnClick: false, focusOnHover: true, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { className: "dataviews-search-widget-listitem-check", children: [filter.singleSelection && currentValue === element.value && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { icon: radioCheck }), !filter.singleSelection && currentValue.includes(element.value) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { icon: library_check })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxItemValue, { className: "dataviews-search-widget-filter-combobox-item-value", value: element.label }), !!element.description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "dataviews-search-widget-listitem-description", children: element.description })] })] }, element.value); }), !matches.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { children: (0,external_wp_i18n_namespaceObject.__)('No results found') })] })] }); } function SearchWidget(props) { const Widget = props.filter.elements.length > 10 ? search_widget_ComboboxList : ListBox; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Widget, { ...props }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/filter-summary.js /** * External dependencies */ /** * WordPress dependencies */ const ENTER = 'Enter'; const SPACE = ' '; /** * Internal dependencies */ const FilterText = ({ activeElements, filterInView, filter }) => { if (activeElements === undefined || activeElements.length === 0) { return filter.name; } const filterTextWrappers = { Name: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "dataviews-filter-summary__filter-text-name" }), Value: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "dataviews-filter-summary__filter-text-value" }) }; if (filterInView?.operator === constants_OPERATOR_IS_ANY) { return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is any: Admin, Editor". */ (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is any: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers); } if (filterInView?.operator === constants_OPERATOR_IS_NONE) { return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is none: Admin, Editor". */ (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is none: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers); } if (filterInView?.operator === OPERATOR_IS_ALL) { return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is all: Admin, Editor". */ (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is all: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers); } if (filterInView?.operator === OPERATOR_IS_NOT_ALL) { return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not all: Admin, Editor". */ (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is not all: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers); } if (filterInView?.operator === constants_OPERATOR_IS) { return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is: Admin". */ (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is: </Name><Value>%2$s</Value>'), filter.name, activeElements[0].label), filterTextWrappers); } if (filterInView?.operator === constants_OPERATOR_IS_NOT) { return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not: Admin". */ (0,external_wp_i18n_namespaceObject.__)('<Name>%1$s is not: </Name><Value>%2$s</Value>'), filter.name, activeElements[0].label), filterTextWrappers); } return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name e.g.: "Unknown status for Author". */ (0,external_wp_i18n_namespaceObject.__)('Unknown status for %1$s'), filter.name); }; function OperatorSelector({ filter, view, onChangeView }) { const operatorOptions = filter.operators?.map(operator => ({ value: operator, label: OPERATORS[operator]?.label })); const currentFilter = view.filters.find(_filter => _filter.field === filter.field); const value = currentFilter?.operator || filter.operators[0]; return operatorOptions.length > 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { spacing: 2, justify: "flex-start", className: "dataviews-filter-summary__operators-container", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { className: "dataviews-filter-summary__operators-filter-name", children: filter.name }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { label: (0,external_wp_i18n_namespaceObject.__)('Conditions'), value: value, options: operatorOptions, onChange: newValue => { const operator = newValue; const newFilters = currentFilter ? [...view.filters.map(_filter => { if (_filter.field === filter.field) { return { ..._filter, operator }; } return _filter; })] : [...view.filters, { field: filter.field, operator, value: undefined }]; onChangeView({ ...view, page: 1, filters: newFilters }); }, size: "small", __nextHasNoMarginBottom: true, hideLabelFromVision: true })] }); } function FilterSummary({ addFilterRef, openedFilter, ...commonProps }) { const toggleRef = (0,external_wp_element_namespaceObject.useRef)(null); const { filter, view, onChangeView } = commonProps; const filterInView = view.filters.find(f => f.field === filter.field); const activeElements = filter.elements.filter(element => { if (filter.singleSelection) { return element.value === filterInView?.value; } return filterInView?.value?.includes(element.value); }); const isPrimary = filter.isPrimary; const hasValues = filterInView?.value !== undefined; const canResetOrRemove = !isPrimary || hasValues; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, { defaultOpen: openedFilter === filter.field, contentClassName: "dataviews-filter-summary__popover", popoverProps: { placement: 'bottom-start', role: 'dialog' }, onClose: () => { toggleRef.current?.focus(); }, renderToggle: ({ isOpen, onToggle }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { className: "dataviews-filter-summary__chip-container", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, { text: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Filter name. */ (0,external_wp_i18n_namespaceObject.__)('Filter by: %1$s'), filter.name.toLowerCase()), placement: "top", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: dist_clsx('dataviews-filter-summary__chip', { 'has-reset': canResetOrRemove, 'has-values': hasValues }), role: "button", tabIndex: 0, onClick: onToggle, onKeyDown: event => { if ([ENTER, SPACE].includes(event.key)) { onToggle(); event.preventDefault(); } }, "aria-pressed": isOpen, "aria-expanded": isOpen, ref: toggleRef, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FilterText, { activeElements: activeElements, filterInView: filterInView, filter: filter }) }) }), canResetOrRemove && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, { text: isPrimary ? (0,external_wp_i18n_namespaceObject.__)('Reset') : (0,external_wp_i18n_namespaceObject.__)('Remove'), placement: "top", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("button", { className: dist_clsx('dataviews-filter-summary__chip-remove', { 'has-values': hasValues }), onClick: () => { onChangeView({ ...view, page: 1, filters: view.filters.filter(_filter => _filter.field !== filter.field) }); // If the filter is not primary and can be removed, it will be added // back to the available filters from `Add filter` component. if (!isPrimary) { addFilterRef.current?.focus(); } else { // If is primary, focus the toggle button. toggleRef.current?.focus(); } }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { icon: close_small }) }) })] }), renderContent: () => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 0, justify: "flex-start", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(OperatorSelector, { ...commonProps }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SearchWidget, { ...commonProps })] }); } }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/add-filter.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { DropdownMenuV2: add_filter_DropdownMenu, DropdownMenuItemV2: add_filter_DropdownMenuItem, DropdownMenuItemLabelV2: add_filter_DropdownMenuItemLabel } = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); function AddFilter({ filters, view, onChangeView, setOpenedFilter }, ref) { if (!filters.length || filters.every(({ isPrimary }) => isPrimary)) { return null; } const inactiveFilters = filters.filter(filter => !filter.isVisible); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter_DropdownMenu, { trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { __experimentalIsFocusable: true, size: "compact", className: "dataviews-filters-button", variant: "tertiary", disabled: !inactiveFilters.length, ref: ref, children: (0,external_wp_i18n_namespaceObject.__)('Add filter') }), children: inactiveFilters.map(filter => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter_DropdownMenuItem, { onClick: () => { setOpenedFilter(filter.field); onChangeView({ ...view, page: 1, filters: [...(view.filters || []), { field: filter.field, value: undefined, operator: filter.operators[0] }] }); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter_DropdownMenuItemLabel, { children: filter.name }) }, filter.field); }) }); } /* harmony default export */ const add_filter = ((0,external_wp_element_namespaceObject.forwardRef)(AddFilter)); ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/reset-filters.js /** * WordPress dependencies */ /** * Internal dependencies */ function ResetFilter({ filters, view, onChangeView }) { const isPrimary = field => filters.some(_filter => _filter.field === field && _filter.isPrimary); const isDisabled = !view.search && !view.filters?.some(_filter => _filter.value !== undefined || !isPrimary(_filter.field)); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { disabled: isDisabled, __experimentalIsFocusable: true, size: "compact", variant: "tertiary", className: "dataviews-filters__reset-button", onClick: () => { onChangeView({ ...view, page: 1, search: '', filters: [] }); }, children: (0,external_wp_i18n_namespaceObject.__)('Reset') }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/filters.js /** * WordPress dependencies */ /** * Internal dependencies */ function _Filters({ fields, view, onChangeView, openedFilter, setOpenedFilter }) { const addFilterRef = (0,external_wp_element_namespaceObject.useRef)(null); const filters = []; fields.forEach(field => { if (!field.elements?.length) { return; } const operators = sanitizeOperators(field); if (operators.length === 0) { return; } const isPrimary = !!field.filterBy?.isPrimary; filters.push({ field: field.id, name: field.header, elements: field.elements, singleSelection: operators.some(op => [constants_OPERATOR_IS, constants_OPERATOR_IS_NOT].includes(op)), operators, isVisible: isPrimary || view.filters.some(f => f.field === field.id && ALL_OPERATORS.includes(f.operator)), isPrimary }); }); // Sort filters by primary property. We need the primary filters to be first. // Then we sort by name. filters.sort((a, b) => { if (a.isPrimary && !b.isPrimary) { return -1; } if (!a.isPrimary && b.isPrimary) { return 1; } return a.name.localeCompare(b.name); }); const addFilter = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_filter, { filters: filters, view: view, onChangeView: onChangeView, ref: addFilterRef, setOpenedFilter: setOpenedFilter }, "add-filter"); const filterComponents = [...filters.map(filter => { if (!filter.isVisible) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FilterSummary, { filter: filter, view: view, onChangeView: onChangeView, addFilterRef: addFilterRef, openedFilter: openedFilter }, filter.field); }), addFilter]; if (filterComponents.length > 1) { filterComponents.push( /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResetFilter, { filters: filters, view: view, onChangeView: onChangeView }, "reset-filters")); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "flex-start", style: { width: 'fit-content' }, wrap: true, children: filterComponents }); } // A type assertion is used here to keep the type argument. const Filters = (0,external_wp_element_namespaceObject.memo)(_Filters); /* harmony default export */ const filters = (Filters); ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/search.js /** * WordPress dependencies */ /** * Internal dependencies */ const Search = (0,external_wp_element_namespaceObject.memo)(function Search({ label, view, onChangeView }) { const [search, setSearch, debouncedSearch] = (0,external_wp_compose_namespaceObject.useDebouncedInput)(view.search); (0,external_wp_element_namespaceObject.useEffect)(() => { var _view$search; setSearch((_view$search = view.search) !== null && _view$search !== void 0 ? _view$search : ''); }, [view.search, setSearch]); const onChangeViewRef = (0,external_wp_element_namespaceObject.useRef)(onChangeView); const viewRef = (0,external_wp_element_namespaceObject.useRef)(view); (0,external_wp_element_namespaceObject.useEffect)(() => { onChangeViewRef.current = onChangeView; viewRef.current = view; }, [onChangeView, view]); (0,external_wp_element_namespaceObject.useEffect)(() => { onChangeViewRef.current({ ...viewRef.current, page: 1, search: debouncedSearch }); }, [debouncedSearch]); const searchLabel = label || (0,external_wp_i18n_namespaceObject.__)('Search'); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, { __nextHasNoMarginBottom: true, onChange: setSearch, value: search, label: searchLabel, placeholder: searchLabel, size: "compact" }); }); /* harmony default export */ const build_module_search = (Search); ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/normalize-fields.js /** * Internal dependencies */ /** * Apply default values and normalize the fields config. * * @param fields Fields config. * @return Normalized fields config. */ function normalizeFields(fields) { return fields.map(field => { const getValue = field.getValue || (({ item }) => item[field.id]); return { ...field, header: field.header || field.id, getValue, render: field.render || getValue }; }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/bulk-actions-toolbar.js /** * WordPress dependencies */ /** * Internal dependencies */ const SNACKBAR_VARIANTS = { init: { bottom: -48 }, open: { bottom: 24, transition: { bottom: { type: 'tween', duration: 0.2, ease: [0, 0, 0.2, 1] } } }, exit: { opacity: 0, bottom: 24, transition: { opacity: { type: 'tween', duration: 0.2, ease: [0, 0, 0.2, 1] } } } }; function ActionTrigger({ action, onClick, isBusy, items }) { const label = typeof action.label === 'string' ? action.label : action.label(items); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { disabled: isBusy, label: label, icon: action.icon, isDestructive: action.isDestructive, size: "compact", onClick: onClick, isBusy: isBusy, __experimentalIsFocusable: true, tooltipPosition: "top" }); } const bulk_actions_toolbar_EMPTY_ARRAY = []; function ActionButton({ action, selectedItems, actionInProgress, setActionInProgress }) { const selectedEligibleItems = (0,external_wp_element_namespaceObject.useMemo)(() => { return selectedItems.filter(item => { return !action.isEligible || action.isEligible(item); }); }, [action, selectedItems]); if ('RenderModal' in action) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionWithModal, { action: action, items: selectedEligibleItems, ActionTrigger: ActionTrigger }, action.id); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionTrigger, { action: action, onClick: () => { setActionInProgress(action.id); action.callback(selectedItems); }, items: selectedEligibleItems, isBusy: actionInProgress === action.id }, action.id); } function renderToolbarContent(selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onSelectionChange) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "dataviews-bulk-actions__selection-count", children: selection.length === 1 ? (0,external_wp_i18n_namespaceObject.__)('1 item selected') : (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Total number of selected items. (0,external_wp_i18n_namespaceObject._n)('%s item selected', '%s items selected', selection.length), selection.length) }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { children: actionsToShow.map(action => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionButton, { action: action, selectedItems: selectedItems, actionInProgress: actionInProgress, setActionInProgress: setActionInProgress }, action.id); }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { icon: close_small, showTooltip: true, tooltipPosition: "top", label: (0,external_wp_i18n_namespaceObject.__)('Cancel'), disabled: !!actionInProgress, onClick: () => { onSelectionChange(bulk_actions_toolbar_EMPTY_ARRAY); } }) })] }); } function ToolbarContent({ selection, actionsToShow, selectedItems, onSelectionChange }) { const [actionInProgress, setActionInProgress] = (0,external_wp_element_namespaceObject.useState)(null); const buttons = (0,external_wp_element_namespaceObject.useRef)(null); if (!actionInProgress) { if (buttons.current) { buttons.current = null; } return renderToolbarContent(selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onSelectionChange); } else if (!buttons.current) { buttons.current = renderToolbarContent(selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onSelectionChange); } return buttons.current; } function BulkActionsToolbar({ data, selection, actions = bulk_actions_toolbar_EMPTY_ARRAY, onSelectionChange, getItemId }) { const isReducedMotion = (0,external_wp_compose_namespaceObject.useReducedMotion)(); const selectedItems = (0,external_wp_element_namespaceObject.useMemo)(() => { return data.filter(item => selection.includes(getItemId(item))); }, [selection, data, getItemId]); const actionsToShow = (0,external_wp_element_namespaceObject.useMemo)(() => actions.filter(action => { return action.supportsBulk && action.icon && selectedItems.some(item => !action.isEligible || action.isEligible(item)); }), [actions, selectedItems]); if (selection && selection.length === 0 || actionsToShow.length === 0) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableAnimatePresence, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, { layout: !isReducedMotion // See https://www.framer.com/docs/animation/#layout-animations , initial: "init", animate: "open", exit: "exit", variants: isReducedMotion ? undefined : SNACKBAR_VARIANTS, className: "dataviews-bulk-actions", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Toolbar, { label: (0,external_wp_i18n_namespaceObject.__)('Bulk actions'), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "dataviews-bulk-actions-toolbar-wrapper", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ToolbarContent, { selection: selection, actionsToShow: actionsToShow, selectedItems: selectedItems, onSelectionChange: onSelectionChange }) }) }) }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/dataviews.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const defaultGetItemId = item => item.id; const defaultOnSelectionChange = () => {}; function dataviews_useSomeItemHasAPossibleBulkAction(actions, data) { return (0,external_wp_element_namespaceObject.useMemo)(() => { return data.some(item => { return actions.some(action => { return action.supportsBulk && (!action.isEligible || action.isEligible(item)); }); }); }, [actions, data]); } function DataViews({ view, onChangeView, fields, search = true, searchLabel = undefined, actions = [], data, getItemId = defaultGetItemId, isLoading = false, paginationInfo, supportedLayouts, selection: selectionProperty, setSelection: setSelectionProperty, onSelectionChange = defaultOnSelectionChange }) { const [selectionState, setSelectionState] = (0,external_wp_element_namespaceObject.useState)([]); let selection, setSelection; if (selectionProperty !== undefined && setSelectionProperty !== undefined) { selection = selectionProperty; setSelection = setSelectionProperty; } else { selection = selectionState; setSelection = setSelectionState; } const [openedFilter, setOpenedFilter] = (0,external_wp_element_namespaceObject.useState)(null); const onSetSelection = (0,external_wp_element_namespaceObject.useCallback)(items => { setSelection(items.map(item => getItemId(item))); onSelectionChange(items); }, [setSelection, getItemId, onSelectionChange]); const ViewComponent = VIEW_LAYOUTS.find(v => v.type === view.type)?.component; const _fields = (0,external_wp_element_namespaceObject.useMemo)(() => normalizeFields(fields), [fields]); const hasPossibleBulkAction = dataviews_useSomeItemHasAPossibleBulkAction(actions, data); const _selection = (0,external_wp_element_namespaceObject.useMemo)(() => { return selection.filter(id => data.some(item => getItemId(item) === id)); }, [selection, data, getItemId]); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { className: "dataviews-wrapper", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { alignment: "top", justify: "start", className: "dataviews-filters__view-actions", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "start", className: "dataviews-filters__container", wrap: true, children: [search && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_search, { label: searchLabel, view: view, onChangeView: onChangeView }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(filters, { fields: _fields, view: view, onChangeView: onChangeView, openedFilter: openedFilter, setOpenedFilter: setOpenedFilter })] }), [constants_LAYOUT_TABLE, constants_LAYOUT_GRID].includes(view.type) && hasPossibleBulkAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkActions, { actions: actions, data: data, onSelectionChange: onSetSelection, selection: _selection, getItemId: getItemId }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions, { fields: _fields, view: view, onChangeView: onChangeView, supportedLayouts: supportedLayouts })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ViewComponent, { actions: actions, data: data, fields: _fields, getItemId: getItemId, isLoading: isLoading, onChangeView: onChangeView, onSelectionChange: onSetSelection, selection: _selection, setOpenedFilter: setOpenedFilter, view: view }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(pagination, { view: view, onChangeView: onChangeView, paginationInfo: paginationInfo }), [constants_LAYOUT_TABLE, constants_LAYOUT_GRID].includes(view.type) && hasPossibleBulkAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkActionsToolbar, { data: data, actions: actions, selection: _selection, onSelectionChange: onSetSelection, getItemId: getItemId })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page/header.js /** * WordPress dependencies */ /** * Internal dependencies */ function Header({ title, subTitle, actions }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { className: "edit-site-page-header", as: "header", spacing: 0, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { className: "edit-site-page-header__page-title", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, { as: "h2", level: 3, weight: 500, className: "edit-site-page-header__title", children: title }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { className: "edit-site-page-header__actions", children: actions })] }), subTitle && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { variant: "muted", as: "p", className: "edit-site-page-header__sub-title", children: subTitle })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { NavigableRegion: page_NavigableRegion } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); function Page({ title, subTitle, actions, children, className, hideTitleFromUI = false }) { const classes = dist_clsx('edit-site-page', className); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_NavigableRegion, { className: classes, ariaLabel: title, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { className: "edit-site-page-content", children: [!hideTitleFromUI && title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Header, { title: title, subTitle: subTitle, actions: actions }), children] }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pages.js /** * WordPress dependencies */ const pages = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M14.5 5.5h-7V7h7V5.5ZM7.5 9h7v1.5h-7V9Zm7 3.5h-7V14h7v-1.5Z" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M16 2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2ZM6 3.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V4a.5.5 0 0 1 .5-.5Z" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z" })] }); /* harmony default export */ const library_pages = (pages); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/published.js /** * WordPress dependencies */ const published = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z" }) }); /* harmony default export */ const library_published = (published); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/scheduled.js /** * WordPress dependencies */ const scheduled = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm9 1V8h-1.5v3.5h-2V13H13Z" }) }); /* harmony default export */ const library_scheduled = (scheduled); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/drafts.js /** * WordPress dependencies */ const drafts = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 0 4-4H8a4 4 0 0 0 4 4Z" }) }); /* harmony default export */ const library_drafts = (drafts); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pending.js /** * WordPress dependencies */ const pending = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 1-4-4h4V8a4 4 0 0 1 0 8Z" }) }); /* harmony default export */ const library_pending = (pending); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/not-allowed.js /** * WordPress dependencies */ const notAllowed = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5A6.5 6.5 0 0 1 6.93 7.931l9.139 9.138A6.473 6.473 0 0 1 12 18.5Zm5.123-2.498a6.5 6.5 0 0 0-9.124-9.124l9.124 9.124ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Z" }) }); /* harmony default export */ const not_allowed = (notAllowed); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/default-views.js /** * WordPress dependencies */ /** * Internal dependencies */ const DEFAULT_CONFIG_PER_VIEW_TYPE = { [LAYOUT_TABLE]: { primaryField: 'title' }, [LAYOUT_GRID]: { mediaField: 'featured-image', primaryField: 'title' }, [LAYOUT_LIST]: { primaryField: 'title', mediaField: 'featured-image' } }; const DEFAULT_PAGE_BASE = { type: LAYOUT_LIST, search: '', filters: [], page: 1, perPage: 20, sort: { field: 'date', direction: 'desc' }, // All fields are visible by default, so it's // better to keep track of the hidden ones. hiddenFields: ['date', 'featured-image'], layout: { ...DEFAULT_CONFIG_PER_VIEW_TYPE[LAYOUT_LIST] } }; const DEFAULT_VIEWS = { page: [{ title: (0,external_wp_i18n_namespaceObject.__)('All pages'), slug: 'all', icon: library_pages, view: DEFAULT_PAGE_BASE }, { title: (0,external_wp_i18n_namespaceObject.__)('Published'), slug: 'published', icon: library_published, view: { ...DEFAULT_PAGE_BASE, filters: [{ field: 'status', operator: OPERATOR_IS_ANY, value: 'publish' }] } }, { title: (0,external_wp_i18n_namespaceObject.__)('Scheduled'), slug: 'future', icon: library_scheduled, view: { ...DEFAULT_PAGE_BASE, filters: [{ field: 'status', operator: OPERATOR_IS_ANY, value: 'future' }] } }, { title: (0,external_wp_i18n_namespaceObject.__)('Drafts'), slug: 'drafts', icon: library_drafts, view: { ...DEFAULT_PAGE_BASE, filters: [{ field: 'status', operator: OPERATOR_IS_ANY, value: 'draft' }] } }, { title: (0,external_wp_i18n_namespaceObject.__)('Pending'), slug: 'pending', icon: library_pending, view: { ...DEFAULT_PAGE_BASE, filters: [{ field: 'status', operator: OPERATOR_IS_ANY, value: 'pending' }] } }, { title: (0,external_wp_i18n_namespaceObject.__)('Private'), slug: 'private', icon: not_allowed, view: { ...DEFAULT_PAGE_BASE, filters: [{ field: 'status', operator: OPERATOR_IS_ANY, value: 'private' }] } }, { title: (0,external_wp_i18n_namespaceObject.__)('Trash'), slug: 'trash', icon: library_trash, view: { ...DEFAULT_PAGE_BASE, filters: [{ field: 'status', operator: OPERATOR_IS_ANY, value: 'trash' }] } }] }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-page/index.js /** * WordPress dependencies */ function AddNewPageModal({ onSave, onClose }) { const [isCreatingPage, setIsCreatingPage] = (0,external_wp_element_namespaceObject.useState)(false); const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(''); const { saveEntityRecord } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); const { createErrorNotice, createSuccessNotice } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); const { resolveSelect } = (0,external_wp_data_namespaceObject.useRegistry)(); async function createPage(event) { event.preventDefault(); if (isCreatingPage) { return; } setIsCreatingPage(true); try { const pagePostType = await resolveSelect(external_wp_coreData_namespaceObject.store).getPostType('page'); const newPage = await saveEntityRecord('postType', 'page', { status: 'draft', title, slug: title || (0,external_wp_i18n_namespaceObject.__)('No title'), content: !!pagePostType.template && pagePostType.template.length ? (0,external_wp_blocks_namespaceObject.serialize)((0,external_wp_blocks_namespaceObject.synchronizeBlocksWithTemplate)([], pagePostType.template)) : undefined }, { throwOnError: true }); onSave(newPage); createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Title of the created template e.g: "Category". (0,external_wp_i18n_namespaceObject.__)('"%s" successfully created.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(newPage.title?.rendered || title)), { type: 'snackbar' }); } catch (error) { const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the page.'); createErrorNotice(errorMessage, { type: 'snackbar' }); } finally { setIsCreatingPage(false); } } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { title: (0,external_wp_i18n_namespaceObject.__)('Draft a new page'), onRequestClose: onClose, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", { onSubmit: createPage, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 3, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { __next40pxDefaultSize: true, label: (0,external_wp_i18n_namespaceObject.__)('Page title'), onChange: setTitle, placeholder: (0,external_wp_i18n_namespaceObject.__)('No title'), value: title }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { spacing: 2, justify: "end", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: onClose, children: (0,external_wp_i18n_namespaceObject.__)('Cancel') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { __next40pxDefaultSize: true, variant: "primary", type: "submit", isBusy: isCreatingPage, "aria-disabled": isCreatingPage, children: (0,external_wp_i18n_namespaceObject.__)('Create draft') })] })] }) }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/media/index.js /** * WordPress dependencies */ function Media({ id, size = ['large', 'medium', 'thumbnail'], ...props }) { const { record: media } = (0,external_wp_coreData_namespaceObject.useEntityRecord)('root', 'media', id); const currentSize = size.find(s => !!media?.media_details?.sizes[s]); const mediaUrl = media?.media_details?.sizes[currentSize]?.source_url || media?.source_url; if (!mediaUrl) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { ...props, src: mediaUrl, alt: media.alt_text }); } /* harmony default export */ const components_media = (Media); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pencil.js /** * WordPress dependencies */ const pencil = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z" }) }); /* harmony default export */ const library_pencil = (pencil); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/edit.js /** * Internal dependencies */ /* harmony default export */ const edit = (library_pencil); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/dataviews-actions/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useHistory: dataviews_actions_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); const useEditPostAction = () => { const history = dataviews_actions_useHistory(); return (0,external_wp_element_namespaceObject.useMemo)(() => ({ id: 'edit-post', label: (0,external_wp_i18n_namespaceObject.__)('Edit'), isPrimary: true, icon: edit, isEligible(post) { if (post.status === 'trash') { return false; } // It's eligible for all post types except theme patterns. return post.type !== PATTERN_TYPES.theme; }, callback(items) { const post = items[0]; history.push({ postId: post.id, postType: post.type, canvas: 'edit' }); } }), [history]); }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-pages/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { usePostActions } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); const { useLocation: page_pages_useLocation, useHistory: page_pages_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); const page_pages_EMPTY_ARRAY = []; const getFormattedDate = dateToDisplay => (0,external_wp_date_namespaceObject.dateI18n)((0,external_wp_date_namespaceObject.getSettings)().formats.datetimeAbbreviated, (0,external_wp_date_namespaceObject.getDate)(dateToDisplay)); function useView(postType) { const { params: { activeView = 'all', isCustom = 'false', layout } } = page_pages_useLocation(); const history = page_pages_useHistory(); const selectedDefaultView = (0,external_wp_element_namespaceObject.useMemo)(() => { const defaultView = isCustom === 'false' && DEFAULT_VIEWS[postType].find(({ slug }) => slug === activeView)?.view; if (isCustom === 'false' && layout) { return { ...defaultView, type: layout, layout: { ...(DEFAULT_CONFIG_PER_VIEW_TYPE[layout] || {}) } }; } return defaultView; }, [isCustom, activeView, layout, postType]); const [view, setView] = (0,external_wp_element_namespaceObject.useState)(selectedDefaultView); (0,external_wp_element_namespaceObject.useEffect)(() => { if (selectedDefaultView) { setView(selectedDefaultView); } }, [selectedDefaultView]); const editedViewRecord = (0,external_wp_data_namespaceObject.useSelect)(select => { if (isCustom !== 'true') { return; } const { getEditedEntityRecord } = select(external_wp_coreData_namespaceObject.store); const dataviewRecord = getEditedEntityRecord('postType', 'wp_dataviews', Number(activeView)); return dataviewRecord; }, [activeView, isCustom]); const { editEntityRecord } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); const customView = (0,external_wp_element_namespaceObject.useMemo)(() => { const storedView = editedViewRecord?.content && JSON.parse(editedViewRecord?.content); if (!storedView) { return storedView; } return { ...storedView, layout: { ...(DEFAULT_CONFIG_PER_VIEW_TYPE[storedView?.type] || {}) } }; }, [editedViewRecord?.content]); const setCustomView = (0,external_wp_element_namespaceObject.useCallback)(viewToSet => { editEntityRecord('postType', 'wp_dataviews', editedViewRecord?.id, { content: JSON.stringify(viewToSet) }); }, [editEntityRecord, editedViewRecord?.id]); const setDefaultViewAndUpdateUrl = (0,external_wp_element_namespaceObject.useCallback)(viewToSet => { if (viewToSet.type !== view?.type) { const { params } = history.getLocationWithParams(); history.push({ ...params, layout: viewToSet.type }); } setView(viewToSet); }, [history, view?.type]); if (isCustom === 'false') { return [view, setDefaultViewAndUpdateUrl]; } else if (isCustom === 'true' && customView) { return [customView, setCustomView]; } // Loading state where no the view was not found on custom views or default views. return [DEFAULT_VIEWS[postType][0].view, setDefaultViewAndUpdateUrl]; } // See https://github.com/WordPress/gutenberg/issues/55886 // We do not support custom statutes at the moment. const STATUSES = [{ value: 'draft', label: (0,external_wp_i18n_namespaceObject.__)('Draft') }, { value: 'future', label: (0,external_wp_i18n_namespaceObject.__)('Scheduled') }, { value: 'pending', label: (0,external_wp_i18n_namespaceObject.__)('Pending Review') }, { value: 'private', label: (0,external_wp_i18n_namespaceObject.__)('Private') }, { value: 'publish', label: (0,external_wp_i18n_namespaceObject.__)('Published') }, { value: 'trash', label: (0,external_wp_i18n_namespaceObject.__)('Trash') }]; const DEFAULT_STATUSES = 'draft,future,pending,private,publish'; // All but 'trash'. function FeaturedImage({ item, viewType }) { const isDisabled = item.status === 'trash'; const { onClick } = useLink({ postId: item.id, postType: item.type, canvas: 'edit' }); const hasMedia = !!item.featured_media; const size = viewType === LAYOUT_GRID ? ['large', 'full', 'medium', 'thumbnail'] : ['thumbnail', 'medium', 'large', 'full']; const media = hasMedia ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(components_media, { className: "edit-site-page-pages__featured-image", id: item.featured_media, size: size }) : null; const renderButton = viewType !== LAYOUT_LIST && !isDisabled; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: `edit-site-page-pages__featured-image-wrapper is-layout-${viewType}`, children: renderButton ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("button", { className: "page-pages-preview-field__button", type: "button", onClick: onClick, "aria-label": item.title?.rendered || (0,external_wp_i18n_namespaceObject.__)('(no title)'), children: media }) : media }); } function getItemId(item) { return item.id.toString(); } function PagePages() { var _pages$map, _usePrevious; const postType = 'page'; const [view, setView] = useView(postType); const history = page_pages_useHistory(); const { params: { postId } } = page_pages_useLocation(); const [selection, setSelection] = (0,external_wp_element_namespaceObject.useState)([postId]); const onSelectionChange = (0,external_wp_element_namespaceObject.useCallback)(items => { var _params$isCustom; const { params } = history.getLocationWithParams(); if (((_params$isCustom = params.isCustom) !== null && _params$isCustom !== void 0 ? _params$isCustom : 'false') === 'false' && view?.type === LAYOUT_LIST) { history.push({ ...params, postId: items.length === 1 ? items[0].id : undefined }); } }, [history, view?.type]); const queryArgs = (0,external_wp_element_namespaceObject.useMemo)(() => { const filters = {}; view.filters.forEach(filter => { if (filter.field === 'status' && filter.operator === OPERATOR_IS_ANY) { filters.status = filter.value; } if (filter.field === 'author' && filter.operator === OPERATOR_IS_ANY) { filters.author = filter.value; } else if (filter.field === 'author' && filter.operator === OPERATOR_IS_NONE) { filters.author_exclude = filter.value; } }); // We want to provide a different default item for the status filter // than the REST API provides. if (!filters.status || filters.status === '') { filters.status = DEFAULT_STATUSES; } return { per_page: view.perPage, page: view.page, _embed: 'author', order: view.sort?.direction, orderby: view.sort?.field, search: view.search, ...filters }; }, [view]); const { records: pages, isResolving: isLoadingPages, totalItems, totalPages } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', postType, queryArgs); const ids = (_pages$map = pages?.map(page => getItemId(page))) !== null && _pages$map !== void 0 ? _pages$map : []; const prevIds = (_usePrevious = (0,external_wp_compose_namespaceObject.usePrevious)(ids)) !== null && _usePrevious !== void 0 ? _usePrevious : []; const deletedIds = prevIds.filter(id => !ids.includes(id)); const postIdWasDeleted = deletedIds.includes(postId); (0,external_wp_element_namespaceObject.useEffect)(() => { if (postIdWasDeleted) { history.push({ ...history.getLocationWithParams().params, postId: undefined }); } }, [postIdWasDeleted, history]); const { records: authors, isResolving: isLoadingAuthors } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('root', 'user', { per_page: -1 }); const paginationInfo = (0,external_wp_element_namespaceObject.useMemo)(() => ({ totalItems, totalPages }), [totalItems, totalPages]); const { frontPageId, postsPageId, addNewLabel, canCreatePage } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getEntityRecord, getPostType, canUser } = select(external_wp_coreData_namespaceObject.store); const siteSettings = getEntityRecord('root', 'site'); return { frontPageId: siteSettings?.page_on_front, postsPageId: siteSettings?.page_for_posts, addNewLabel: getPostType('page')?.labels?.add_new_item, canCreatePage: canUser('create', 'pages') }; }); const fields = (0,external_wp_element_namespaceObject.useMemo)(() => [{ id: 'featured-image', header: (0,external_wp_i18n_namespaceObject.__)('Featured Image'), getValue: ({ item }) => item.featured_media, render: ({ item }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FeaturedImage, { item: item, viewType: view.type }), enableSorting: false, width: '1%' }, { header: (0,external_wp_i18n_namespaceObject.__)('Title'), id: 'title', getValue: ({ item }) => item.title?.rendered, render: ({ item }) => { const addLink = [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type) && item.status !== 'trash'; const title = addLink ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Link, { params: { postId: item.id, postType: item.type, canvas: 'edit' }, children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.title?.rendered) || (0,external_wp_i18n_namespaceObject.__)('(no title)') }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.title?.rendered) || (0,external_wp_i18n_namespaceObject.__)('(no title)') }); let suffix = ''; if (item.id === frontPageId) { suffix = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "edit-site-page-pages__title-badge", children: (0,external_wp_i18n_namespaceObject.__)('Front Page') }); } else if (item.id === postsPageId) { suffix = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "edit-site-page-pages__title-badge", children: (0,external_wp_i18n_namespaceObject.__)('Posts Page') }); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { className: "edit-site-page-pages-title", alignment: "center", justify: "flex-start", children: [title, suffix] }); }, maxWidth: 300, enableHiding: false }, { header: (0,external_wp_i18n_namespaceObject.__)('Author'), id: 'author', getValue: ({ item }) => item._embedded?.author[0]?.name, elements: authors?.map(({ id, name }) => ({ value: id, label: name })) || [] }, { header: (0,external_wp_i18n_namespaceObject.__)('Status'), id: 'status', getValue: ({ item }) => { var _STATUSES$find$label; return (_STATUSES$find$label = STATUSES.find(({ value }) => value === item.status)?.label) !== null && _STATUSES$find$label !== void 0 ? _STATUSES$find$label : item.status; }, elements: STATUSES, enableSorting: false, filterBy: { operators: [OPERATOR_IS_ANY] } }, { header: (0,external_wp_i18n_namespaceObject.__)('Date'), id: 'date', render: ({ item }) => { const isDraftOrPrivate = ['draft', 'private'].includes(item.status); if (isDraftOrPrivate) { return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: page creation date */ (0,external_wp_i18n_namespaceObject.__)('<span>Modified: <time>%s</time></span>'), getFormattedDate(item.date)), { span: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {}), time: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {}) }); } const isScheduled = item.status === 'future'; if (isScheduled) { return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: page creation date */ (0,external_wp_i18n_namespaceObject.__)('<span>Scheduled: <time>%s</time></span>'), getFormattedDate(item.date)), { span: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {}), time: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {}) }); } // Pending & Published posts show the modified date if it's newer. const dateToDisplay = (0,external_wp_date_namespaceObject.getDate)(item.modified) > (0,external_wp_date_namespaceObject.getDate)(item.date) ? item.modified : item.date; const isPending = item.status === 'pending'; if (isPending) { return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: the newest of created or modified date for the page */ (0,external_wp_i18n_namespaceObject.__)('<span>Modified: <time>%s</time></span>'), getFormattedDate(dateToDisplay)), { span: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {}), time: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {}) }); } const isPublished = item.status === 'publish'; if (isPublished) { return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: the newest of created or modified date for the page */ (0,external_wp_i18n_namespaceObject.__)('<span>Published: <time>%s</time></span>'), getFormattedDate(dateToDisplay)), { span: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {}), time: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", {}) }); } // Unknow status. return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", { children: getFormattedDate(item.date) }); } }], [authors, view.type, frontPageId, postsPageId]); const postTypeActions = usePostActions({ postType: 'page', context: 'list' }); const editAction = useEditPostAction(); const actions = (0,external_wp_element_namespaceObject.useMemo)(() => [editAction, ...postTypeActions], [postTypeActions, editAction]); const onChangeView = (0,external_wp_element_namespaceObject.useCallback)(newView => { if (newView.type !== view.type) { newView = { ...newView, layout: { ...DEFAULT_CONFIG_PER_VIEW_TYPE[newView.type] } }; } setView(newView); }, [view.type, setView]); const [showAddPageModal, setShowAddPageModal] = (0,external_wp_element_namespaceObject.useState)(false); const openModal = () => setShowAddPageModal(true); const closeModal = () => setShowAddPageModal(false); const handleNewPage = ({ type, id }) => { history.push({ postId: id, postType: type, canvas: 'edit' }); closeModal(); }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Page, { title: (0,external_wp_i18n_namespaceObject.__)('Pages'), actions: addNewLabel && canCreatePage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "primary", onClick: openModal, __next40pxDefaultSize: true, children: addNewLabel }), showAddPageModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewPageModal, { onSave: handleNewPage, onClose: closeModal })] }), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViews, { paginationInfo: paginationInfo, fields: fields, actions: actions, data: pages || page_pages_EMPTY_ARRAY, isLoading: isLoadingPages || isLoadingAuthors, view: view, onChangeView: onChangeView, selection: selection, setSelection: setSelection, onSelectionChange: onSelectionChange, getItemId: getItemId }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/filter-and-sort-data-view.js /** * External dependencies */ /** * Internal dependencies */ function filter_and_sort_data_view_normalizeSearchInput(input = '') { return remove_accents_default()(input.trim().toLowerCase()); } const filter_and_sort_data_view_EMPTY_ARRAY = []; /** * Applies the filtering, sorting and pagination to the raw data based on the view configuration. * * @param data Raw data. * @param view View config. * @param fields Fields config. * * @return Filtered, sorted and paginated data. */ function filterSortAndPaginate(data, view, fields) { if (!data) { return { data: filter_and_sort_data_view_EMPTY_ARRAY, paginationInfo: { totalItems: 0, totalPages: 0 } }; } const _fields = normalizeFields(fields); let filteredData = [...data]; // Handle global search. if (view.search) { const normalizedSearch = filter_and_sort_data_view_normalizeSearchInput(view.search); filteredData = filteredData.filter(item => { return _fields.filter(field => field.enableGlobalSearch).map(field => { return filter_and_sort_data_view_normalizeSearchInput(field.getValue({ item })); }).some(field => field.includes(normalizedSearch)); }); } if (view.filters.length > 0) { view.filters.forEach(filter => { const field = _fields.find(_field => _field.id === filter.field); if (field) { if (filter.operator === constants_OPERATOR_IS_ANY && filter?.value?.length > 0) { filteredData = filteredData.filter(item => { const fieldValue = field.getValue({ item }); if (Array.isArray(fieldValue)) { return filter.value.some(filterValue => fieldValue.includes(filterValue)); } else if (typeof fieldValue === 'string') { return filter.value.includes(fieldValue); } return false; }); } else if (filter.operator === constants_OPERATOR_IS_NONE && filter?.value?.length > 0) { filteredData = filteredData.filter(item => { const fieldValue = field.getValue({ item }); if (Array.isArray(fieldValue)) { return !filter.value.some(filterValue => fieldValue.includes(filterValue)); } else if (typeof fieldValue === 'string') { return !filter.value.includes(fieldValue); } return false; }); } else if (filter.operator === OPERATOR_IS_ALL && filter?.value?.length > 0) { filteredData = filteredData.filter(item => { return filter.value.every(value => { return field.getValue({ item })?.includes(value); }); }); } else if (filter.operator === OPERATOR_IS_NOT_ALL && filter?.value?.length > 0) { filteredData = filteredData.filter(item => { return filter.value.every(value => { return !field.getValue({ item })?.includes(value); }); }); } else if (filter.operator === constants_OPERATOR_IS) { filteredData = filteredData.filter(item => { return filter.value === field.getValue({ item }); }); } else if (filter.operator === constants_OPERATOR_IS_NOT) { filteredData = filteredData.filter(item => { return filter.value !== field.getValue({ item }); }); } } }); } // Handle sorting. if (view.sort) { const fieldId = view.sort.field; const fieldToSort = _fields.find(field => { return field.id === fieldId; }); if (fieldToSort) { filteredData.sort((a, b) => { var _fieldToSort$getValue, _fieldToSort$getValue2; const valueA = (_fieldToSort$getValue = fieldToSort.getValue({ item: a })) !== null && _fieldToSort$getValue !== void 0 ? _fieldToSort$getValue : ''; const valueB = (_fieldToSort$getValue2 = fieldToSort.getValue({ item: b })) !== null && _fieldToSort$getValue2 !== void 0 ? _fieldToSort$getValue2 : ''; return view.sort?.direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA); }); } } // Handle pagination. let totalItems = filteredData.length; let totalPages = 1; if (view.page !== undefined && view.perPage !== undefined) { const start = (view.page - 1) * view.perPage; totalItems = filteredData?.length || 0; totalPages = Math.ceil(totalItems / view.perPage); filteredData = filteredData?.slice(start, start + view.perPage); } return { data: filteredData, paginationInfo: { totalItems, totalPages } }; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/lock-small.js /** * WordPress dependencies */ const lockSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M15 11h-.2V9c0-1.5-1.2-2.8-2.8-2.8S9.2 7.5 9.2 9v2H9c-.6 0-1 .4-1 1v4c0 .6.4 1 1 1h6c.6 0 1-.4 1-1v-4c0-.6-.4-1-1-1zm-1.8 0h-2.5V9c0-.7.6-1.2 1.2-1.2s1.2.6 1.2 1.2v2z" }) }); /* harmony default export */ const lock_small = (lockSmall); ;// CONCATENATED MODULE: external ["wp","priorityQueue"] const external_wp_priorityQueue_namespaceObject = window["wp"]["priorityQueue"]; ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/async/index.js /** * WordPress dependencies */ const blockPreviewQueue = (0,external_wp_priorityQueue_namespaceObject.createQueue)(); /** * Renders a component at the next idle time. * @param {*} props */ function Async({ children, placeholder }) { const [shouldRender, setShouldRender] = (0,external_wp_element_namespaceObject.useState)(false); // In the future, we could try to use startTransition here, but currently // react will batch all transitions, which means all previews will be // rendered at the same time. // https://react.dev/reference/react/startTransition#caveats // > If there are multiple ongoing Transitions, React currently batches them // > together. This is a limitation that will likely be removed in a future // > release. (0,external_wp_element_namespaceObject.useEffect)(() => { const context = {}; blockPreviewQueue.add(context, () => { // Synchronously run all renders so it consumes timeRemaining. // See https://github.com/WordPress/gutenberg/pull/48238 (0,external_wp_element_namespaceObject.flushSync)(() => { setShouldRender(true); }); }); return () => { blockPreviewQueue.cancel(context); }; }, []); if (!shouldRender) { return placeholder; } return children; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/utils.js const filterOutDuplicatesByName = (currentItem, index, items) => index === items.findIndex(item => currentItem.name === item.name); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/use-pattern-settings.js /** * WordPress dependencies */ /** * Internal dependencies */ function usePatternSettings() { var _storedSettings$__exp; const storedSettings = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getSettings } = lock_unlock_unlock(select(store)); return getSettings(); }, []); const settingsBlockPatterns = (_storedSettings$__exp = storedSettings.__experimentalAdditionalBlockPatterns) !== null && _storedSettings$__exp !== void 0 ? _storedSettings$__exp : // WP 6.0 storedSettings.__experimentalBlockPatterns; // WP 5.9 const restBlockPatterns = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getBlockPatterns(), []); const blockPatterns = (0,external_wp_element_namespaceObject.useMemo)(() => [...(settingsBlockPatterns || []), ...(restBlockPatterns || [])].filter(filterOutDuplicatesByName), [settingsBlockPatterns, restBlockPatterns]); const settings = (0,external_wp_element_namespaceObject.useMemo)(() => { const { __experimentalAdditionalBlockPatterns, ...restStoredSettings } = storedSettings; return { ...restStoredSettings, __experimentalBlockPatterns: blockPatterns, __unstableIsPreviewMode: true }; }, [storedSettings, blockPatterns]); return settings; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/search-items.js /** * WordPress dependencies */ /** * Internal dependencies */ const { extractWords, getNormalizedSearchTerms, normalizeString: search_items_normalizeString } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); /** * Internal dependencies */ // Default search helpers. const defaultGetName = item => item.name || ''; const defaultGetTitle = item => item.title; const defaultGetDescription = item => item.description || ''; const defaultGetKeywords = item => item.keywords || []; const defaultHasCategory = () => false; const removeMatchingTerms = (unmatchedTerms, unprocessedTerms) => { return unmatchedTerms.filter(term => !getNormalizedSearchTerms(unprocessedTerms).some(unprocessedTerm => unprocessedTerm.includes(term))); }; /** * Filters an item list given a search term. * * @param {Array} items Item list * @param {string} searchInput Search input. * @param {Object} config Search Config. * * @return {Array} Filtered item list. */ const searchItems = (items = [], searchInput = '', config = {}) => { const normalizedSearchTerms = getNormalizedSearchTerms(searchInput); // Filter patterns by category: the default category indicates that all patterns will be shown. const onlyFilterByCategory = config.categoryId !== PATTERN_DEFAULT_CATEGORY && !normalizedSearchTerms.length; const searchRankConfig = { ...config, onlyFilterByCategory }; // If we aren't filtering on search terms, matching on category is satisfactory. // If we are, then we need more than a category match. const threshold = onlyFilterByCategory ? 0 : 1; const rankedItems = items.map(item => { return [item, getItemSearchRank(item, searchInput, searchRankConfig)]; }).filter(([, rank]) => rank > threshold); // If we didn't have terms to search on, there's no point sorting. if (normalizedSearchTerms.length === 0) { return rankedItems.map(([item]) => item); } rankedItems.sort(([, rank1], [, rank2]) => rank2 - rank1); return rankedItems.map(([item]) => item); }; /** * Get the search rank for a given item and a specific search term. * The better the match, the higher the rank. * If the rank equals 0, it should be excluded from the results. * * @param {Object} item Item to filter. * @param {string} searchTerm Search term. * @param {Object} config Search Config. * * @return {number} Search Rank. */ function getItemSearchRank(item, searchTerm, config) { const { categoryId, getName = defaultGetName, getTitle = defaultGetTitle, getDescription = defaultGetDescription, getKeywords = defaultGetKeywords, hasCategory = defaultHasCategory, onlyFilterByCategory } = config; let rank = categoryId === PATTERN_DEFAULT_CATEGORY || categoryId === TEMPLATE_PART_ALL_AREAS_CATEGORY || categoryId === PATTERN_USER_CATEGORY && item.type === PATTERN_TYPES.user || hasCategory(item, categoryId) ? 1 : 0; // If an item doesn't belong to the current category or we don't have // search terms to filter by, return the initial rank value. if (!rank || onlyFilterByCategory) { return rank; } const name = getName(item); const title = getTitle(item); const description = getDescription(item); const keywords = getKeywords(item); const normalizedSearchInput = search_items_normalizeString(searchTerm); const normalizedTitle = search_items_normalizeString(title); // Prefers exact matches // Then prefers if the beginning of the title matches the search term // name, keywords, description matches come later. if (normalizedSearchInput === normalizedTitle) { rank += 30; } else if (normalizedTitle.startsWith(normalizedSearchInput)) { rank += 20; } else { const terms = [name, title, description, ...keywords].join(' '); const normalizedSearchTerms = extractWords(normalizedSearchInput); const unmatchedTerms = removeMatchingTerms(normalizedSearchTerms, terms); if (unmatchedTerms.length === 0) { rank += 10; } } return rank; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/use-patterns.js /** * WordPress dependencies */ /** * Internal dependencies */ const EMPTY_PATTERN_LIST = []; const createTemplatePartId = (theme, slug) => theme && slug ? theme + '//' + slug : null; const templatePartToPattern = templatePart => ({ blocks: (0,external_wp_blocks_namespaceObject.parse)(templatePart.content.raw, { __unstableSkipMigrationLogs: true }), categories: [templatePart.area], description: templatePart.description || '', isCustom: templatePart.source === TEMPLATE_ORIGINS.custom, keywords: templatePart.keywords || [], id: createTemplatePartId(templatePart.theme, templatePart.slug), name: createTemplatePartId(templatePart.theme, templatePart.slug), title: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(templatePart.title.rendered), type: templatePart.type, _links: templatePart._links, templatePart }); const selectTemplatePartsAsPatterns = (0,external_wp_data_namespaceObject.createSelector)((select, categoryId, search = '') => { var _getEntityRecords; const { getEntityRecords, isResolving: isResolvingSelector } = select(external_wp_coreData_namespaceObject.store); const { __experimentalGetDefaultTemplatePartAreas } = select(external_wp_editor_namespaceObject.store); const query = { per_page: -1 }; const rawTemplateParts = (_getEntityRecords = getEntityRecords('postType', TEMPLATE_PART_POST_TYPE, query)) !== null && _getEntityRecords !== void 0 ? _getEntityRecords : EMPTY_PATTERN_LIST; const templateParts = rawTemplateParts.map(templatePart => templatePartToPattern(templatePart)); // In the case where a custom template part area has been removed we need // the current list of areas to cross check against so orphaned template // parts can be treated as uncategorized. const knownAreas = __experimentalGetDefaultTemplatePartAreas() || []; const templatePartAreas = knownAreas.map(area => area.area); const templatePartHasCategory = (item, category) => { if (category !== TEMPLATE_PART_AREA_DEFAULT_CATEGORY) { return item.templatePart.area === category; } return item.templatePart.area === category || !templatePartAreas.includes(item.templatePart.area); }; const isResolving = isResolvingSelector('getEntityRecords', ['postType', TEMPLATE_PART_POST_TYPE, query]); const patterns = searchItems(templateParts, search, { categoryId, hasCategory: templatePartHasCategory }); return { patterns, isResolving }; }, select => [select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', TEMPLATE_PART_POST_TYPE, { per_page: -1 }), select(external_wp_coreData_namespaceObject.store).isResolving('getEntityRecords', ['postType', TEMPLATE_PART_POST_TYPE, { per_page: -1 }]), select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas()]); const selectThemePatterns = (0,external_wp_data_namespaceObject.createSelector)(select => { var _settings$__experimen; const { getSettings } = lock_unlock_unlock(select(store)); const { isResolving: isResolvingSelector } = select(external_wp_coreData_namespaceObject.store); const settings = getSettings(); const blockPatterns = (_settings$__experimen = settings.__experimentalAdditionalBlockPatterns) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : settings.__experimentalBlockPatterns; const restBlockPatterns = select(external_wp_coreData_namespaceObject.store).getBlockPatterns(); const patterns = [...(blockPatterns || []), ...(restBlockPatterns || [])].filter(pattern => !EXCLUDED_PATTERN_SOURCES.includes(pattern.source)).filter(filterOutDuplicatesByName).filter(pattern => pattern.inserter !== false).map(pattern => ({ ...pattern, keywords: pattern.keywords || [], type: PATTERN_TYPES.theme, blocks: (0,external_wp_blocks_namespaceObject.parse)(pattern.content, { __unstableSkipMigrationLogs: true }) })); return { patterns, isResolving: isResolvingSelector('getBlockPatterns') }; }, select => [select(external_wp_coreData_namespaceObject.store).getBlockPatterns(), select(external_wp_coreData_namespaceObject.store).isResolving('getBlockPatterns'), lock_unlock_unlock(select(store)).getSettings()]); const selectPatterns = (0,external_wp_data_namespaceObject.createSelector)((select, categoryId, syncStatus, search = '') => { const { patterns: themePatterns, isResolving: isResolvingThemePatterns } = selectThemePatterns(select); const { patterns: userPatterns, isResolving: isResolvingUserPatterns } = selectUserPatterns(select); let patterns = [...(themePatterns || []), ...(userPatterns || [])]; if (syncStatus) { // User patterns can have their sync statuses checked directly // Non-user patterns are all unsynced for the time being. patterns = patterns.filter(pattern => { return pattern.type === PATTERN_TYPES.user ? pattern.syncStatus === syncStatus : syncStatus === PATTERN_SYNC_TYPES.unsynced; }); } if (categoryId) { patterns = searchItems(patterns, search, { categoryId, hasCategory: (item, currentCategory) => item.categories?.includes(currentCategory) }); } else { patterns = searchItems(patterns, search, { hasCategory: item => !item.hasOwnProperty('categories') }); } return { patterns, isResolving: isResolvingThemePatterns || isResolvingUserPatterns }; }, select => [selectThemePatterns(select), selectUserPatterns(select)]); /** * Converts a post of type `wp_block` to a 'pattern item' that more closely * matches the structure of theme provided patterns. * * @param {Object} patternPost The `wp_block` record being normalized. * @param {Map} categories A Map of user created categories. * * @return {Object} The normalized item. */ const convertPatternPostToItem = (patternPost, categories) => ({ blocks: (0,external_wp_blocks_namespaceObject.parse)(patternPost.content.raw, { __unstableSkipMigrationLogs: true }), ...(patternPost.wp_pattern_category.length > 0 && { categories: patternPost.wp_pattern_category.map(patternCategoryId => categories && categories.get(patternCategoryId) ? categories.get(patternCategoryId).slug : patternCategoryId) }), termLabels: patternPost.wp_pattern_category.map(patternCategoryId => categories?.get(patternCategoryId) ? categories.get(patternCategoryId).label : patternCategoryId), id: patternPost.id, name: patternPost.slug, syncStatus: patternPost.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full, title: patternPost.title.raw, type: patternPost.type, description: patternPost.excerpt.raw, patternPost }); const selectUserPatterns = (0,external_wp_data_namespaceObject.createSelector)((select, syncStatus, search = '') => { const { getEntityRecords, isResolving: isResolvingSelector, getUserPatternCategories } = select(external_wp_coreData_namespaceObject.store); const query = { per_page: -1 }; const patternPosts = getEntityRecords('postType', PATTERN_TYPES.user, query); const userPatternCategories = getUserPatternCategories(); const categories = new Map(); userPatternCategories.forEach(userCategory => categories.set(userCategory.id, userCategory)); let patterns = patternPosts ? patternPosts.map(record => convertPatternPostToItem(record, categories)) : EMPTY_PATTERN_LIST; const isResolving = isResolvingSelector('getEntityRecords', ['postType', PATTERN_TYPES.user, query]); if (syncStatus) { patterns = patterns.filter(pattern => pattern.syncStatus === syncStatus); } patterns = searchItems(patterns, search, { // We exit user pattern retrieval early if we aren't in the // catch-all category for user created patterns, so it has // to be in the category. hasCategory: () => true }); return { patterns, isResolving, categories: userPatternCategories }; }, select => [select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', PATTERN_TYPES.user, { per_page: -1 }), select(external_wp_coreData_namespaceObject.store).isResolving('getEntityRecords', ['postType', PATTERN_TYPES.user, { per_page: -1 }]), select(external_wp_coreData_namespaceObject.store).getUserPatternCategories()]); const usePatterns = (postType, categoryId, { search = '', syncStatus } = {}) => { return (0,external_wp_data_namespaceObject.useSelect)(select => { if (postType === TEMPLATE_PART_POST_TYPE) { return selectTemplatePartsAsPatterns(select, categoryId, search); } else if (postType === PATTERN_TYPES.user && !!categoryId) { const appliedCategory = categoryId === 'uncategorized' ? '' : categoryId; return selectPatterns(select, appliedCategory, syncStatus, search); } else if (postType === PATTERN_TYPES.user) { return selectUserPatterns(select, syncStatus, search); } return { patterns: EMPTY_PATTERN_LIST, isResolving: false }; }, [categoryId, postType, search, syncStatus]); }; /* harmony default export */ const use_patterns = (usePatterns); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol.js /** * WordPress dependencies */ const symbol_symbol = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z" }) }); /* harmony default export */ const library_symbol = (symbol_symbol); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/upload.js /** * WordPress dependencies */ const upload = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z" }) }); /* harmony default export */ const library_upload = (upload); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-pattern/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useHistory: add_new_pattern_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); const { CreatePatternModal, useAddPatternCategory } = lock_unlock_unlock(external_wp_patterns_namespaceObject.privateApis); const { CreateTemplatePartModal: add_new_pattern_CreateTemplatePartModal } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); function AddNewPattern() { const history = add_new_pattern_useHistory(); const [showPatternModal, setShowPatternModal] = (0,external_wp_element_namespaceObject.useState)(false); const [showTemplatePartModal, setShowTemplatePartModal] = (0,external_wp_element_namespaceObject.useState)(false); // eslint-disable-next-line @wordpress/no-unused-vars-before-return const { createPatternFromFile } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(external_wp_patterns_namespaceObject.store)); const { createSuccessNotice, createErrorNotice } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); const patternUploadInputRef = (0,external_wp_element_namespaceObject.useRef)(); const { isBlockBasedTheme, addNewPatternLabel, addNewTemplatePartLabel, canCreatePattern, canCreateTemplatePart } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getCurrentTheme, getPostType, canUser } = select(external_wp_coreData_namespaceObject.store); return { isBlockBasedTheme: getCurrentTheme()?.is_block_theme, addNewPatternLabel: getPostType(PATTERN_TYPES.user)?.labels?.add_new_item, addNewTemplatePartLabel: getPostType(TEMPLATE_PART_POST_TYPE)?.labels?.add_new_item, canCreatePattern: canUser('create', 'blocks'), canCreateTemplatePart: canUser('create', 'template-parts') }; }, []); function handleCreatePattern({ pattern }) { setShowPatternModal(false); history.push({ postId: pattern.id, postType: PATTERN_TYPES.user, canvas: 'edit' }); } function handleCreateTemplatePart(templatePart) { setShowTemplatePartModal(false); // Navigate to the created template part editor. history.push({ postId: templatePart.id, postType: TEMPLATE_PART_POST_TYPE, canvas: 'edit' }); } function handleError() { setShowPatternModal(false); setShowTemplatePartModal(false); } const controls = []; if (canCreatePattern) { controls.push({ icon: library_symbol, onClick: () => setShowPatternModal(true), title: addNewPatternLabel }); } if (isBlockBasedTheme && canCreateTemplatePart) { controls.push({ icon: symbol_filled, onClick: () => setShowTemplatePartModal(true), title: addNewTemplatePartLabel }); } if (canCreatePattern) { controls.push({ icon: library_upload, onClick: () => { patternUploadInputRef.current.click(); }, title: (0,external_wp_i18n_namespaceObject.__)('Import pattern from JSON') }); } const { categoryMap, findOrCreateTerm } = useAddPatternCategory(); if (controls.length === 0) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [addNewPatternLabel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, { controls: controls, icon: null, toggleProps: { variant: 'primary', showTooltip: false, __next40pxDefaultSize: true }, text: addNewPatternLabel, label: addNewPatternLabel }), showPatternModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CreatePatternModal, { onClose: () => setShowPatternModal(false), onSuccess: handleCreatePattern, onError: handleError }), showTemplatePartModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_new_pattern_CreateTemplatePartModal, { closeModal: () => setShowTemplatePartModal(false), blocks: [], onCreate: handleCreateTemplatePart, onError: handleError }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("input", { type: "file", accept: ".json", hidden: true, ref: patternUploadInputRef, onChange: async event => { const file = event.target.files?.[0]; if (!file) { return; } try { const { params: { postType, categoryId } } = history.getLocationWithParams(); let currentCategoryId; // When we're not handling template parts, we should // add or create the proper pattern category. if (postType !== TEMPLATE_PART_POST_TYPE) { const currentCategory = categoryMap.values().find(term => term.name === categoryId); if (currentCategory) { currentCategoryId = currentCategory.id || (await findOrCreateTerm(currentCategory.label)); } } const pattern = await createPatternFromFile(file, currentCategoryId ? [currentCategoryId] : undefined); // Navigate to the All patterns category for the newly created pattern // if we're not on that page already and if we're not in the `my-patterns` // category. if (!currentCategoryId && categoryId !== 'my-patterns') { history.push({ postType: PATTERN_TYPES.user, categoryId: PATTERN_DEFAULT_CATEGORY }); } createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: The imported pattern's title. (0,external_wp_i18n_namespaceObject.__)('Imported "%s" from JSON.'), pattern.title.raw), { type: 'snackbar', id: 'import-pattern-success' }); } catch (err) { createErrorNotice(err.message, { type: 'snackbar', id: 'import-pattern-error' }); } finally { event.target.value = ''; } } })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-default-pattern-categories.js /** * WordPress dependencies */ /** * Internal dependencies */ function useDefaultPatternCategories() { const blockPatternCategories = (0,external_wp_data_namespaceObject.useSelect)(select => { var _settings$__experimen; const { getSettings } = lock_unlock_unlock(select(store)); const settings = getSettings(); return (_settings$__experimen = settings.__experimentalAdditionalBlockPatternCategories) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : settings.__experimentalBlockPatternCategories; }); const restBlockPatternCategories = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getBlockPatternCategories()); return [...(blockPatternCategories || []), ...(restBlockPatternCategories || [])]; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js /** * WordPress dependencies */ /** * Internal dependencies */ function useThemePatterns() { const blockPatterns = (0,external_wp_data_namespaceObject.useSelect)(select => { var _getSettings$__experi; const { getSettings } = lock_unlock_unlock(select(store)); return (_getSettings$__experi = getSettings().__experimentalAdditionalBlockPatterns) !== null && _getSettings$__experi !== void 0 ? _getSettings$__experi : getSettings().__experimentalBlockPatterns; }); const restBlockPatterns = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getBlockPatterns()); const patterns = (0,external_wp_element_namespaceObject.useMemo)(() => [...(blockPatterns || []), ...(restBlockPatterns || [])].filter(pattern => !EXCLUDED_PATTERN_SOURCES.includes(pattern.source)).filter(filterOutDuplicatesByName).filter(pattern => pattern.inserter !== false), [blockPatterns, restBlockPatterns]); return patterns; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js /** * WordPress dependencies */ /** * Internal dependencies */ function usePatternCategories() { const defaultCategories = useDefaultPatternCategories(); defaultCategories.push({ name: TEMPLATE_PART_AREA_DEFAULT_CATEGORY, label: (0,external_wp_i18n_namespaceObject.__)('Uncategorized') }); const themePatterns = useThemePatterns(); const { patterns: userPatterns, categories: userPatternCategories } = use_patterns(PATTERN_TYPES.user); const patternCategories = (0,external_wp_element_namespaceObject.useMemo)(() => { const categoryMap = {}; const categoriesWithCounts = []; // Create a map for easier counting of patterns in categories. defaultCategories.forEach(category => { if (!categoryMap[category.name]) { categoryMap[category.name] = { ...category, count: 0 }; } }); userPatternCategories.forEach(category => { if (!categoryMap[category.name]) { categoryMap[category.name] = { ...category, count: 0 }; } }); // Update the category counts to reflect theme registered patterns. themePatterns.forEach(pattern => { pattern.categories?.forEach(category => { if (categoryMap[category]) { categoryMap[category].count += 1; } }); // If the pattern has no categories, add it to uncategorized. if (!pattern.categories?.length) { categoryMap.uncategorized.count += 1; } }); // Update the category counts to reflect user registered patterns. userPatterns.forEach(pattern => { pattern.categories?.forEach(category => { if (categoryMap[category]) { categoryMap[category].count += 1; } }); // If the pattern has no categories, add it to uncategorized. if (!pattern.categories?.length) { categoryMap.uncategorized.count += 1; } }); // Filter categories so we only have those containing patterns. [...defaultCategories, ...userPatternCategories].forEach(category => { if (categoryMap[category.name].count && !categoriesWithCounts.find(cat => cat.name === category.name)) { categoriesWithCounts.push(categoryMap[category.name]); } }); const sortedCategories = categoriesWithCounts.sort((a, b) => a.label.localeCompare(b.label)); sortedCategories.unshift({ name: PATTERN_USER_CATEGORY, label: (0,external_wp_i18n_namespaceObject.__)('My patterns'), count: userPatterns.length }); sortedCategories.unshift({ name: PATTERN_DEFAULT_CATEGORY, label: (0,external_wp_i18n_namespaceObject.__)('All patterns'), description: (0,external_wp_i18n_namespaceObject.__)('A list of all patterns from all sources.'), count: themePatterns.length + userPatterns.length }); return sortedCategories; }, [defaultCategories, themePatterns, userPatternCategories, userPatterns]); return { patternCategories, hasPatterns: !!patternCategories.length }; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/rename-category-menu-item.js /** * WordPress dependencies */ /** * Internal dependencies */ /** * Internal dependencies */ const { RenamePatternCategoryModal } = lock_unlock_unlock(external_wp_patterns_namespaceObject.privateApis); function RenameCategoryMenuItem({ category, onClose }) { const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: () => setIsModalOpen(true), children: (0,external_wp_i18n_namespaceObject.__)('Rename') }), isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenameModal, { category: category, onClose: () => { setIsModalOpen(false); onClose(); } })] }); } function RenameModal({ category, onClose }) { // User created pattern categories have their properties updated when // retrieved via `getUserPatternCategories`. The rename modal expects an // object that will match the pattern category entity. const normalizedCategory = { id: category.id, slug: category.slug, name: category.label }; // Optimization - only use pattern categories when the modal is open. const existingCategories = usePatternCategories(); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenamePatternCategoryModal, { category: normalizedCategory, existingCategories: existingCategories, onClose: onClose, overlayClassName: "edit-site-list__rename-modal" }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/delete-category-menu-item.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useHistory: delete_category_menu_item_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function DeleteCategoryMenuItem({ category, onClose }) { const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false); const history = delete_category_menu_item_useHistory(); const { createSuccessNotice, createErrorNotice } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); const { deleteEntityRecord, invalidateResolution } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); const onDelete = async () => { try { await 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: The pattern category's name */ (0,external_wp_i18n_namespaceObject.__)('"%s" deleted.'), category.label), { type: 'snackbar', id: 'pattern-category-delete' }); onClose?.(); history.push({ postType: PATTERN_TYPES.user, categoryId: PATTERN_DEFAULT_CATEGORY }); } catch (error) { const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while deleting the pattern category.'); createErrorNotice(errorMessage, { type: 'snackbar', id: 'pattern-category-delete' }); } }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { isDestructive: true, onClick: () => setIsModalOpen(true), children: (0,external_wp_i18n_namespaceObject.__)('Delete') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, { isOpen: isModalOpen, onConfirm: onDelete, onCancel: () => setIsModalOpen(false), confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'), className: "edit-site-patterns__delete-modal", title: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: The pattern category's name. (0,external_wp_i18n_namespaceObject.__)('Delete "%s"?'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(category.label)), size: "medium", __experimentalHideHeader: false, children: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: The pattern category's name. (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete the category "%s"? The patterns will not be deleted.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(category.label)) })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/header.js /** * WordPress dependencies */ /** * Internal dependencies */ function PatternsHeader({ categoryId, type, titleId, descriptionId }) { const { patternCategories } = usePatternCategories(); const templatePartAreas = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas(), []); let title, description, patternCategory; if (type === TEMPLATE_PART_POST_TYPE) { const templatePartArea = templatePartAreas.find(area => area.area === categoryId); title = templatePartArea?.label || (0,external_wp_i18n_namespaceObject.__)('All Template Parts'); description = templatePartArea?.description || (0,external_wp_i18n_namespaceObject.__)('Includes every template part defined for any area.'); } else if (type === PATTERN_TYPES.user && !!categoryId) { patternCategory = patternCategories.find(category => category.name === categoryId); title = patternCategory?.label; description = patternCategory?.description; } if (!title) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { className: "edit-site-patterns__section-header", spacing: 0, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "space-between", className: "edit-site-patterns__title", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, { as: "h2", level: 3, id: titleId, weight: 500, children: title }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { expanded: false, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewPattern, {}), !!patternCategory?.id && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, { icon: more_vertical, label: (0,external_wp_i18n_namespaceObject.__)('Actions'), toggleProps: { className: 'edit-site-patterns__button', describedBy: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: pattern category name */ (0,external_wp_i18n_namespaceObject.__)('Action menu for %s pattern category'), title), size: 'compact' }, children: ({ onClose }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenameCategoryMenuItem, { category: patternCategory, onClose: onClose }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DeleteCategoryMenuItem, { category: patternCategory, onClose: onClose })] }) })] })] }), description ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { variant: "muted", as: "p", id: descriptionId, className: "edit-site-patterns__sub-title", children: description }) : null] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plugins.js /** * WordPress dependencies */ const plugins = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z" }) }); /* harmony default export */ const library_plugins = (plugins); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/globe.js /** * WordPress dependencies */ const globe = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M12 3.3c-4.8 0-8.8 3.9-8.8 8.8 0 4.8 3.9 8.8 8.8 8.8 4.8 0 8.8-3.9 8.8-8.8s-4-8.8-8.8-8.8zm6.5 5.5h-2.6C15.4 7.3 14.8 6 14 5c2 .6 3.6 2 4.5 3.8zm.7 3.2c0 .6-.1 1.2-.2 1.8h-2.9c.1-.6.1-1.2.1-1.8s-.1-1.2-.1-1.8H19c.2.6.2 1.2.2 1.8zM12 18.7c-1-.7-1.8-1.9-2.3-3.5h4.6c-.5 1.6-1.3 2.9-2.3 3.5zm-2.6-4.9c-.1-.6-.1-1.1-.1-1.8 0-.6.1-1.2.1-1.8h5.2c.1.6.1 1.1.1 1.8s-.1 1.2-.1 1.8H9.4zM4.8 12c0-.6.1-1.2.2-1.8h2.9c-.1.6-.1 1.2-.1 1.8 0 .6.1 1.2.1 1.8H5c-.2-.6-.2-1.2-.2-1.8zM12 5.3c1 .7 1.8 1.9 2.3 3.5H9.7c.5-1.6 1.3-2.9 2.3-3.5zM10 5c-.8 1-1.4 2.3-1.8 3.8H5.5C6.4 7 8 5.6 10 5zM5.5 15.3h2.6c.4 1.5 1 2.8 1.8 3.7-1.8-.6-3.5-2-4.4-3.7zM14 19c.8-1 1.4-2.2 1.8-3.7h2.6C17.6 17 16 18.4 14 19z" }) }); /* harmony default export */ const library_globe = (globe); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment-author-avatar.js /** * WordPress dependencies */ const commentAuthorAvatar = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", d: "M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z", clipRule: "evenodd" }) }); /* harmony default export */ const comment_author_avatar = (commentAuthorAvatar); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-templates/hooks.js /** * WordPress dependencies */ /** * Internal dependencies */ /** @typedef {'wp_template'|'wp_template_part'} TemplateType */ /** * @typedef {'theme'|'plugin'|'site'|'user'} AddedByType * * @typedef AddedByData * @type {Object} * @property {AddedByType} type The type of the data. * @property {JSX.Element} icon The icon to display. * @property {string} [imageUrl] The optional image URL to display. * @property {string} [text] The text to display. * @property {boolean} isCustomized Whether the template has been customized. * * @param {TemplateType} postType The template post type. * @param {number} postId The template post id. * @return {AddedByData} The added by object or null. */ function useAddedBy(postType, postId) { return (0,external_wp_data_namespaceObject.useSelect)(select => { const { getEntityRecord, getMedia, getUser, getEditedEntityRecord } = select(external_wp_coreData_namespaceObject.store); const template = getEditedEntityRecord('postType', postType, postId); const originalSource = template?.original_source; const authorText = template?.author_text; switch (originalSource) { case 'theme': { return { type: originalSource, icon: library_layout, text: authorText, isCustomized: template.source === TEMPLATE_ORIGINS.custom }; } case 'plugin': { return { type: originalSource, icon: library_plugins, text: authorText, isCustomized: template.source === TEMPLATE_ORIGINS.custom }; } case 'site': { const siteData = getEntityRecord('root', '__unstableBase'); return { type: originalSource, icon: library_globe, imageUrl: siteData?.site_logo ? getMedia(siteData.site_logo)?.source_url : undefined, text: authorText, isCustomized: false }; } default: { const user = getUser(template.author); return { type: 'user', icon: comment_author_avatar, imageUrl: user?.avatar_urls?.[48], text: authorText, isCustomized: false }; } } }, [postType, postId]); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-patterns/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { ExperimentalBlockEditorProvider: page_patterns_ExperimentalBlockEditorProvider, useGlobalStyle: page_patterns_useGlobalStyle } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const { usePostActions: page_patterns_usePostActions } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); const { useLocation: page_patterns_useLocation } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); const page_patterns_EMPTY_ARRAY = []; const defaultConfigPerViewType = { [LAYOUT_TABLE]: { primaryField: 'title' }, [LAYOUT_GRID]: { mediaField: 'preview', primaryField: 'title', badgeFields: ['sync-status'] } }; const DEFAULT_VIEW = { type: LAYOUT_GRID, search: '', page: 1, perPage: 20, hiddenFields: [], layout: { ...defaultConfigPerViewType[LAYOUT_GRID] }, filters: [] }; const SYNC_FILTERS = [{ value: PATTERN_SYNC_TYPES.full, label: (0,external_wp_i18n_namespaceObject._x)('Synced', 'pattern (singular)'), description: (0,external_wp_i18n_namespaceObject.__)('Patterns that are kept in sync across the site.') }, { value: PATTERN_SYNC_TYPES.unsynced, label: (0,external_wp_i18n_namespaceObject._x)('Not synced', 'pattern (singular)'), description: (0,external_wp_i18n_namespaceObject.__)('Patterns that can be changed freely without affecting the site.') }]; function PreviewWrapper({ item, onClick, ariaDescribedBy, children }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("button", { className: "page-patterns-preview-field__button", type: "button", onClick: item.type !== PATTERN_TYPES.theme ? onClick : undefined, "aria-label": item.title, "aria-describedby": ariaDescribedBy, "aria-disabled": item.type === PATTERN_TYPES.theme, children: children }); } function Preview({ item, viewType }) { const descriptionId = (0,external_wp_element_namespaceObject.useId)(); const isUserPattern = item.type === PATTERN_TYPES.user; const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE; const isEmpty = !item.blocks?.length; const [backgroundColor] = page_patterns_useGlobalStyle('color.background'); const { onClick } = useLink({ postType: item.type, postId: isUserPattern ? item.id : item.name, canvas: 'edit' }); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { className: `page-patterns-preview-field is-viewtype-${viewType}`, style: { backgroundColor }, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(PreviewWrapper, { item: item, onClick: onClick, ariaDescribedBy: item.description ? descriptionId : undefined, children: [isEmpty && isTemplatePart && (0,external_wp_i18n_namespaceObject.__)('Empty template part'), isEmpty && !isTemplatePart && (0,external_wp_i18n_namespaceObject.__)('Empty pattern'), !isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Async, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview, { blocks: item.blocks, viewportWidth: item.viewportWidth }) })] }), item.description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { hidden: true, id: descriptionId, children: item.description })] }); } function Author({ item, viewType }) { const [isImageLoaded, setIsImageLoaded] = (0,external_wp_element_namespaceObject.useState)(false); const { text, icon, imageUrl } = useAddedBy(item.type, item.id); const withIcon = viewType !== LAYOUT_LIST; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { alignment: "left", spacing: 1, children: [withIcon && imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: dist_clsx('page-templates-author-field__avatar', { 'is-loaded': isImageLoaded }), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { onLoad: () => setIsImageLoaded(true), alt: "", src: imageUrl }) }), withIcon && !imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "page-templates-author-field__icon", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { icon: icon }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "page-templates-author-field__name", children: text })] }); } function Title({ item }) { const isUserPattern = item.type === PATTERN_TYPES.user; const { onClick } = useLink({ postType: item.type, postId: isUserPattern ? item.id : item.name, canvas: 'edit' }); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { alignment: "center", justify: "flex-start", spacing: 2, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, { as: "div", gap: 0, justify: "left", className: "edit-site-patterns__pattern-title", children: item.type === PATTERN_TYPES.theme ? item.title : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "link", onClick: onClick // Required for the grid's roving tab index system. // See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243. , tabIndex: "-1", children: item.title || item.name }) }), item.type === PATTERN_TYPES.theme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, { placement: "top", text: (0,external_wp_i18n_namespaceObject.__)('This pattern cannot be edited.'), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { className: "edit-site-patterns__pattern-lock-icon", icon: lock_small, size: 24 }) })] }); } function DataviewsPatterns() { const { params: { postType, categoryId: categoryIdFromURL } } = page_patterns_useLocation(); const type = postType || PATTERN_TYPES.user; const categoryId = categoryIdFromURL || PATTERN_DEFAULT_CATEGORY; const [view, setView] = (0,external_wp_element_namespaceObject.useState)(DEFAULT_VIEW); const previousCategoryId = (0,external_wp_compose_namespaceObject.usePrevious)(categoryId); const viewSyncStatus = view.filters?.find(({ field }) => field === 'sync-status')?.value; const { patterns, isResolving } = use_patterns(type, categoryId, { search: view.search, syncStatus: viewSyncStatus }); const { records } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_PART_POST_TYPE, { per_page: -1 }); const authors = (0,external_wp_element_namespaceObject.useMemo)(() => { if (!records) { return page_patterns_EMPTY_ARRAY; } const authorsSet = new Set(); records.forEach(template => { authorsSet.add(template.author_text); }); return Array.from(authorsSet).map(author => ({ value: author, label: author })); }, [records]); const fields = (0,external_wp_element_namespaceObject.useMemo)(() => { const _fields = [{ header: (0,external_wp_i18n_namespaceObject.__)('Preview'), id: 'preview', render: ({ item }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Preview, { item: item, viewType: view.type }), enableSorting: false, enableHiding: false, width: '1%' }, { header: (0,external_wp_i18n_namespaceObject.__)('Title'), id: 'title', render: ({ item }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Title, { item: item }), enableHiding: false }]; if (type === PATTERN_TYPES.user) { _fields.push({ header: (0,external_wp_i18n_namespaceObject.__)('Sync status'), id: 'sync-status', render: ({ item }) => { // User patterns can have their sync statuses checked directly. // Non-user patterns are all unsynced for the time being. return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: `edit-site-patterns__field-sync-status-${item.syncStatus}`, children: (SYNC_FILTERS.find(({ value }) => value === item.syncStatus) || SYNC_FILTERS.find(({ value }) => value === PATTERN_SYNC_TYPES.unsynced)).label }); }, elements: SYNC_FILTERS, filterBy: { operators: [OPERATOR_IS], isPrimary: true }, enableSorting: false }); } else if (type === TEMPLATE_PART_POST_TYPE) { _fields.push({ header: (0,external_wp_i18n_namespaceObject.__)('Author'), id: 'author', getValue: ({ item }) => item.templatePart.author_text, render: ({ item }) => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Author, { viewType: view.type, item: item }); }, elements: authors, filterBy: { isPrimary: true }, width: '1%' }); } return _fields; }, [view.type, type, authors]); // Reset the page number when the category changes. (0,external_wp_element_namespaceObject.useEffect)(() => { if (previousCategoryId !== categoryId) { setView(DEFAULT_VIEW); } }, [categoryId, previousCategoryId]); const { data, paginationInfo } = (0,external_wp_element_namespaceObject.useMemo)(() => { // Search is managed server-side as well as filters for patterns. // However, the author filter in template parts is done client-side. const viewWithoutFilters = { ...view }; delete viewWithoutFilters.search; if (type !== TEMPLATE_PART_POST_TYPE) { viewWithoutFilters.filters = []; } return filterSortAndPaginate(patterns, viewWithoutFilters, fields); }, [patterns, view, fields, type]); const templatePartActions = page_patterns_usePostActions({ postType: TEMPLATE_PART_POST_TYPE, context: 'list' }); const patternActions = page_patterns_usePostActions({ postType: PATTERN_TYPES.user, context: 'list' }); const editAction = useEditPostAction(); const actions = (0,external_wp_element_namespaceObject.useMemo)(() => { if (type === TEMPLATE_PART_POST_TYPE) { return [editAction, ...templatePartActions].filter(Boolean); } return [editAction, ...patternActions].filter(Boolean); }, [editAction, type, templatePartActions, patternActions]); const onChangeView = (0,external_wp_element_namespaceObject.useCallback)(newView => { if (newView.type !== view.type) { newView = { ...newView, layout: { ...defaultConfigPerViewType[newView.type] } }; } setView(newView); }, [view.type, setView]); const id = (0,external_wp_element_namespaceObject.useId)(); const settings = usePatternSettings(); // Wrap everything in a block editor provider. // This ensures 'styles' that are needed for the previews are synced // from the site editor store to the block editor store. return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_patterns_ExperimentalBlockEditorProvider, { settings: settings, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Page, { title: (0,external_wp_i18n_namespaceObject.__)('Patterns content'), className: "edit-site-page-patterns-dataviews", hideTitleFromUI: true, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PatternsHeader, { categoryId: categoryId, type: type, titleId: `${id}-title`, descriptionId: `${id}-description` }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViews, { paginationInfo: paginationInfo, fields: fields, actions: actions, data: data || page_patterns_EMPTY_ARRAY, getItemId: item => item.name, isLoading: isResolving, view: view, onChangeView: onChangeView, supportedLayouts: [LAYOUT_GRID, LAYOUT_TABLE] })] }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/home.js /** * WordPress dependencies */ const home = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z" }) }); /* harmony default export */ const library_home = (home); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/verse.js /** * WordPress dependencies */ const verse = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M17.8 2l-.9.3c-.1 0-3.6 1-5.2 2.1C10 5.5 9.3 6.5 8.9 7.1c-.6.9-1.7 4.7-1.7 6.3l-.9 2.3c-.2.4 0 .8.4 1 .1 0 .2.1.3.1.3 0 .6-.2.7-.5l.6-1.5c.3 0 .7-.1 1.2-.2.7-.1 1.4-.3 2.2-.5.8-.2 1.6-.5 2.4-.8.7-.3 1.4-.7 1.9-1.2s.8-1.2 1-1.9c.2-.7.3-1.6.4-2.4.1-.8.1-1.7.2-2.5 0-.8.1-1.5.2-2.1V2zm-1.9 5.6c-.1.8-.2 1.5-.3 2.1-.2.6-.4 1-.6 1.3-.3.3-.8.6-1.4.9-.7.3-1.4.5-2.2.8-.6.2-1.3.3-1.8.4L15 7.5c.3-.3.6-.7 1-1.1 0 .4 0 .8-.1 1.2zM6 20h8v-1.5H6V20z" }) }); /* harmony default export */ const library_verse = (verse); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pin.js /** * WordPress dependencies */ const pin = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "m21.5 9.1-6.6-6.6-4.2 5.6c-1.2-.1-2.4.1-3.6.7-.1 0-.1.1-.2.1-.5.3-.9.6-1.2.9l3.7 3.7-5.7 5.7v1.1h1.1l5.7-5.7 3.7 3.7c.4-.4.7-.8.9-1.2.1-.1.1-.2.2-.3.6-1.1.8-2.4.6-3.6l5.6-4.1zm-7.3 3.5.1.9c.1.9 0 1.8-.4 2.6l-6-6c.8-.4 1.7-.5 2.6-.4l.9.1L15 4.9 19.1 9l-4.9 3.6z" }) }); /* harmony default export */ const library_pin = (pin); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/archive.js /** * WordPress dependencies */ const archive = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M11.934 7.406a1 1 0 0 0 .914.594H19a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5.764a.5.5 0 0 1 .447.276l.723 1.63Zm1.064-1.216a.5.5 0 0 0 .462.31H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.764a2 2 0 0 1 1.789 1.106l.445 1.084ZM8.5 10.5h7V12h-7v-1.5Zm7 3.5h-7v1.5h7V14Z" }) }); /* harmony default export */ const library_archive = (archive); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/not-found.js /** * WordPress dependencies */ const notFound = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M19 5H5c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm.5 12c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v10zm-11-7.6h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-.9 3.5H6.3l1.2-1.7v1.7zm5.6-3.2c-.4-.2-.8-.4-1.2-.4-.5 0-.9.1-1.2.4-.4.2-.6.6-.8 1-.2.4-.3.9-.3 1.5s.1 1.1.3 1.6c.2.4.5.8.8 1 .4.2.8.4 1.2.4.5 0 .9-.1 1.2-.4.4-.2.6-.6.8-1 .2-.4.3-1 .3-1.6 0-.6-.1-1.1-.3-1.5-.1-.5-.4-.8-.8-1zm0 3.6c-.1.3-.3.5-.5.7-.2.1-.4.2-.7.2-.3 0-.5-.1-.7-.2-.2-.1-.4-.4-.5-.7-.1-.3-.2-.7-.2-1.2 0-.7.1-1.2.4-1.5.3-.3.6-.5 1-.5s.7.2 1 .5c.3.3.4.8.4 1.5-.1.5-.1.9-.2 1.2zm5-3.9h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-1 3.5H16l1.2-1.7v1.7z" }) }); /* harmony default export */ const not_found = (notFound); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/list.js /** * WordPress dependencies */ const list = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M4 4v1.5h16V4H4zm8 8.5h8V11h-8v1.5zM4 20h16v-1.5H4V20zm4-8c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2z" }) }); /* harmony default export */ const library_list = (list); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/block-meta.js /** * WordPress dependencies */ const blockMeta = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", d: "M8.95 11.25H4v1.5h4.95v4.5H13V18c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75h-2.55v-7.5H13V9c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75H8.95v4.5ZM14.5 15v3c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5Zm0-6V6c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5Z", clipRule: "evenodd" }) }); /* harmony default export */ const block_meta = (blockMeta); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/calendar.js /** * WordPress dependencies */ const calendar = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7h15v12zM9 10H7v2h2v-2zm0 4H7v2h2v-2zm4-4h-2v2h2v-2zm4 0h-2v2h2v-2zm-4 4h-2v2h2v-2zm4 0h-2v2h2v-2z" }) }); /* harmony default export */ const library_calendar = (calendar); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/tag.js /** * WordPress dependencies */ const tag = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M4.75 4a.75.75 0 0 0-.75.75v7.826c0 .2.08.39.22.53l6.72 6.716a2.313 2.313 0 0 0 3.276-.001l5.61-5.611-.531-.53.532.528a2.315 2.315 0 0 0 0-3.264L13.104 4.22a.75.75 0 0 0-.53-.22H4.75ZM19 12.576a.815.815 0 0 1-.236.574l-5.61 5.611a.814.814 0 0 1-1.153 0L5.5 12.264V5.5h6.763l6.5 6.502a.816.816 0 0 1 .237.574ZM8.75 9.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" }) }); /* harmony default export */ const library_tag = (tag); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/media.js /** * WordPress dependencies */ const media = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "m7 6.5 4 2.5-4 2.5z" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "m5 3c-1.10457 0-2 .89543-2 2v14c0 1.1046.89543 2 2 2h14c1.1046 0 2-.8954 2-2v-14c0-1.10457-.8954-2-2-2zm14 1.5h-14c-.27614 0-.5.22386-.5.5v10.7072l3.62953-2.6465c.25108-.1831.58905-.1924.84981-.0234l2.92666 1.8969 3.5712-3.4719c.2911-.2831.7545-.2831 1.0456 0l2.9772 2.8945v-9.3568c0-.27614-.2239-.5-.5-.5zm-14.5 14.5v-1.4364l4.09643-2.987 2.99567 1.9417c.2936.1903.6798.1523.9307-.0917l3.4772-3.3806 3.4772 3.3806.0228-.0234v2.5968c0 .2761-.2239.5-.5.5h-14c-.27614 0-.5-.2239-.5-.5z" })] }); /* harmony default export */ const library_media = (media); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post.js /** * WordPress dependencies */ const post_post = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "m7.3 9.7 1.4 1.4c.2-.2.3-.3.4-.5 0 0 0-.1.1-.1.3-.5.4-1.1.3-1.6L12 7 9 4 7.2 6.5c-.6-.1-1.1 0-1.6.3 0 0-.1 0-.1.1-.3.1-.4.2-.6.4l1.4 1.4L4 11v1h1l2.3-2.3zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z" }) }); /* harmony default export */ const library_post = (post_post); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/utils.js /** * WordPress dependencies */ /** * Internal dependencies */ const EMPTY_OBJECT = {}; /** * @typedef IHasNameAndId * @property {string|number} id The entity's id. * @property {string} name The entity's name. */ const utils_getValueFromObjectPath = (object, path) => { let value = object; path.split('.').forEach(fieldName => { value = value?.[fieldName]; }); return value; }; /** * Helper util to map records to add a `name` prop from a * provided path, in order to handle all entities in the same * fashion(implementing`IHasNameAndId` interface). * * @param {Object[]} entities The array of entities. * @param {string} path The path to map a `name` property from the entity. * @return {IHasNameAndId[]} An array of enitities that now implement the `IHasNameAndId` interface. */ const mapToIHasNameAndId = (entities, path) => { return (entities || []).map(entity => ({ ...entity, name: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(utils_getValueFromObjectPath(entity, path)) })); }; /** * @typedef {Object} EntitiesInfo * @property {boolean} hasEntities If an entity has available records(posts, terms, etc..). * @property {number[]} existingEntitiesIds An array of the existing entities ids. */ const useExistingTemplates = () => { return (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', TEMPLATE_POST_TYPE, { per_page: -1 }), []); }; const useDefaultTemplateTypes = () => { return (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplateTypes(), []); }; const usePublicPostTypes = () => { const postTypes = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getPostTypes({ per_page: -1 }), []); return (0,external_wp_element_namespaceObject.useMemo)(() => { const excludedPostTypes = ['attachment']; return postTypes?.filter(({ viewable, slug }) => viewable && !excludedPostTypes.includes(slug)); }, [postTypes]); }; const usePublicTaxonomies = () => { const taxonomies = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getTaxonomies({ per_page: -1 }), []); return (0,external_wp_element_namespaceObject.useMemo)(() => { return taxonomies?.filter(({ visibility }) => visibility?.publicly_queryable); }, [taxonomies]); }; function usePostTypeArchiveMenuItems() { const publicPostTypes = usePublicPostTypes(); const postTypesWithArchives = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.filter(postType => postType.has_archive), [publicPostTypes]); const existingTemplates = useExistingTemplates(); // We need to keep track of naming conflicts. If a conflict // occurs, we need to add slug. const postTypeLabels = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.reduce((accumulator, { labels }) => { const singularName = labels.singular_name.toLowerCase(); accumulator[singularName] = (accumulator[singularName] || 0) + 1; return accumulator; }, {}), [publicPostTypes]); const needsUniqueIdentifier = (0,external_wp_element_namespaceObject.useCallback)(({ labels, slug }) => { const singularName = labels.singular_name.toLowerCase(); return postTypeLabels[singularName] > 1 && singularName !== slug; }, [postTypeLabels]); return (0,external_wp_element_namespaceObject.useMemo)(() => postTypesWithArchives?.filter(postType => !(existingTemplates || []).some(existingTemplate => existingTemplate.slug === 'archive-' + postType.slug)).map(postType => { let title; if (needsUniqueIdentifier(postType)) { title = (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %1s: Name of the post type e.g: "Post"; %2s: Slug of the post type e.g: "book". (0,external_wp_i18n_namespaceObject.__)('Archive: %1$s (%2$s)'), postType.labels.singular_name, postType.slug); } else { title = (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0,external_wp_i18n_namespaceObject.__)('Archive: %s'), postType.labels.singular_name); } return { slug: 'archive-' + postType.slug, description: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0,external_wp_i18n_namespaceObject.__)('Displays an archive with the latest posts of type: %s.'), postType.labels.singular_name), title, // `icon` is the `menu_icon` property of a post type. We // only handle `dashicons` for now, even if the `menu_icon` // also supports urls and svg as values. icon: typeof postType.icon === 'string' && postType.icon.startsWith('dashicons-') ? postType.icon.slice(10) : library_archive, templatePrefix: 'archive' }; }) || [], [postTypesWithArchives, existingTemplates, needsUniqueIdentifier]); } const usePostTypeMenuItems = onClickMenuItem => { const publicPostTypes = usePublicPostTypes(); const existingTemplates = useExistingTemplates(); const defaultTemplateTypes = useDefaultTemplateTypes(); // We need to keep track of naming conflicts. If a conflict // occurs, we need to add slug. const templateLabels = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.reduce((accumulator, { labels }) => { const templateName = (labels.template_name || labels.singular_name).toLowerCase(); accumulator[templateName] = (accumulator[templateName] || 0) + 1; return accumulator; }, {}), [publicPostTypes]); const needsUniqueIdentifier = (0,external_wp_element_namespaceObject.useCallback)(({ labels, slug }) => { const templateName = (labels.template_name || labels.singular_name).toLowerCase(); return templateLabels[templateName] > 1 && templateName !== slug; }, [templateLabels]); // `page`is a special case in template hierarchy. const templatePrefixes = (0,external_wp_element_namespaceObject.useMemo)(() => publicPostTypes?.reduce((accumulator, { slug }) => { let suffix = slug; if (slug !== 'page') { suffix = `single-${suffix}`; } accumulator[slug] = suffix; return accumulator; }, {}), [publicPostTypes]); const postTypesInfo = useEntitiesInfo('postType', templatePrefixes); const existingTemplateSlugs = (existingTemplates || []).map(({ slug }) => slug); const menuItems = (publicPostTypes || []).reduce((accumulator, postType) => { const { slug, labels, icon } = postType; // We need to check if the general template is part of the // defaultTemplateTypes. If it is, just use that info and // augment it with the specific template functionality. const generalTemplateSlug = templatePrefixes[slug]; const defaultTemplateType = defaultTemplateTypes?.find(({ slug: _slug }) => _slug === generalTemplateSlug); const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug); const _needsUniqueIdentifier = needsUniqueIdentifier(postType); let menuItemTitle = labels.template_name || (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0,external_wp_i18n_namespaceObject.__)('Single item: %s'), labels.singular_name); if (_needsUniqueIdentifier) { menuItemTitle = labels.template_name ? (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %1s: Name of the template e.g: "Single Item: Post"; %2s: Slug of the post type e.g: "book". (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), labels.template_name, slug) : (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %1s: Name of the post type e.g: "Post"; %2s: Slug of the post type e.g: "book". (0,external_wp_i18n_namespaceObject.__)('Single item: %1$s (%2$s)'), labels.singular_name, slug); } const menuItem = defaultTemplateType ? { ...defaultTemplateType, templatePrefix: templatePrefixes[slug] } : { slug: generalTemplateSlug, title: menuItemTitle, description: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0,external_wp_i18n_namespaceObject.__)('Displays a single item: %s.'), labels.singular_name), // `icon` is the `menu_icon` property of a post type. We // only handle `dashicons` for now, even if the `menu_icon` // also supports urls and svg as values. icon: typeof icon === 'string' && icon.startsWith('dashicons-') ? icon.slice(10) : library_post, templatePrefix: templatePrefixes[slug] }; const hasEntities = postTypesInfo?.[slug]?.hasEntities; // We have a different template creation flow only if they have entities. if (hasEntities) { menuItem.onClick = template => { onClickMenuItem({ type: 'postType', slug, config: { recordNamePath: 'title.rendered', queryArgs: ({ search }) => { return { _fields: 'id,title,slug,link', orderBy: search ? 'relevance' : 'modified', exclude: postTypesInfo[slug].existingEntitiesIds }; }, getSpecificTemplate: suggestion => { const templateSlug = `${templatePrefixes[slug]}-${suggestion.slug}`; return { title: templateSlug, slug: templateSlug, templatePrefix: templatePrefixes[slug] }; } }, labels, hasGeneralTemplate, template }); }; } // We don't need to add the menu item if there are no // entities and the general template exists. if (!hasGeneralTemplate || hasEntities) { accumulator.push(menuItem); } return accumulator; }, []); // Split menu items into two groups: one for the default post types // and one for the rest. const postTypesMenuItems = (0,external_wp_element_namespaceObject.useMemo)(() => menuItems.reduce((accumulator, postType) => { const { slug } = postType; let key = 'postTypesMenuItems'; if (slug === 'page') { key = 'defaultPostTypesMenuItems'; } accumulator[key].push(postType); return accumulator; }, { defaultPostTypesMenuItems: [], postTypesMenuItems: [] }), [menuItems]); return postTypesMenuItems; }; const useTaxonomiesMenuItems = onClickMenuItem => { const publicTaxonomies = usePublicTaxonomies(); const existingTemplates = useExistingTemplates(); const defaultTemplateTypes = useDefaultTemplateTypes(); // `category` and `post_tag` are special cases in template hierarchy. const templatePrefixes = (0,external_wp_element_namespaceObject.useMemo)(() => publicTaxonomies?.reduce((accumulator, { slug }) => { let suffix = slug; if (!['category', 'post_tag'].includes(slug)) { suffix = `taxonomy-${suffix}`; } if (slug === 'post_tag') { suffix = `tag`; } accumulator[slug] = suffix; return accumulator; }, {}), [publicTaxonomies]); // We need to keep track of naming conflicts. If a conflict // occurs, we need to add slug. const taxonomyLabels = publicTaxonomies?.reduce((accumulator, { labels }) => { const templateName = (labels.template_name || labels.singular_name).toLowerCase(); accumulator[templateName] = (accumulator[templateName] || 0) + 1; return accumulator; }, {}); const needsUniqueIdentifier = (labels, slug) => { if (['category', 'post_tag'].includes(slug)) { return false; } const templateName = (labels.template_name || labels.singular_name).toLowerCase(); return taxonomyLabels[templateName] > 1 && templateName !== slug; }; const taxonomiesInfo = useEntitiesInfo('taxonomy', templatePrefixes); const existingTemplateSlugs = (existingTemplates || []).map(({ slug }) => slug); const menuItems = (publicTaxonomies || []).reduce((accumulator, taxonomy) => { const { slug, labels } = taxonomy; // We need to check if the general template is part of the // defaultTemplateTypes. If it is, just use that info and // augment it with the specific template functionality. const generalTemplateSlug = templatePrefixes[slug]; const defaultTemplateType = defaultTemplateTypes?.find(({ slug: _slug }) => _slug === generalTemplateSlug); const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug); const _needsUniqueIdentifier = needsUniqueIdentifier(labels, slug); let menuItemTitle = labels.template_name || labels.singular_name; if (_needsUniqueIdentifier) { menuItemTitle = labels.template_name ? (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %1s: Name of the template e.g: "Products by Category"; %2s: Slug of the taxonomy e.g: "product_cat". (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), labels.template_name, slug) : (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %1s: Name of the taxonomy e.g: "Category"; %2s: Slug of the taxonomy e.g: "product_cat". (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), labels.singular_name, slug); } const menuItem = defaultTemplateType ? { ...defaultTemplateType, templatePrefix: templatePrefixes[slug] } : { slug: generalTemplateSlug, title: menuItemTitle, description: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Name of the taxonomy e.g: "Product Categories". (0,external_wp_i18n_namespaceObject.__)('Displays taxonomy: %s.'), labels.singular_name), icon: block_meta, templatePrefix: templatePrefixes[slug] }; const hasEntities = taxonomiesInfo?.[slug]?.hasEntities; // We have a different template creation flow only if they have entities. if (hasEntities) { menuItem.onClick = template => { onClickMenuItem({ type: 'taxonomy', slug, config: { queryArgs: ({ search }) => { return { _fields: 'id,name,slug,link', orderBy: search ? 'name' : 'count', exclude: taxonomiesInfo[slug].existingEntitiesIds }; }, getSpecificTemplate: suggestion => { const templateSlug = `${templatePrefixes[slug]}-${suggestion.slug}`; return { title: templateSlug, slug: templateSlug, templatePrefix: templatePrefixes[slug] }; } }, labels, hasGeneralTemplate, template }); }; } // We don't need to add the menu item if there are no // entities and the general template exists. if (!hasGeneralTemplate || hasEntities) { accumulator.push(menuItem); } return accumulator; }, []); // Split menu items into two groups: one for the default taxonomies // and one for the rest. const taxonomiesMenuItems = (0,external_wp_element_namespaceObject.useMemo)(() => menuItems.reduce((accumulator, taxonomy) => { const { slug } = taxonomy; let key = 'taxonomiesMenuItems'; if (['category', 'tag'].includes(slug)) { key = 'defaultTaxonomiesMenuItems'; } accumulator[key].push(taxonomy); return accumulator; }, { defaultTaxonomiesMenuItems: [], taxonomiesMenuItems: [] }), [menuItems]); return taxonomiesMenuItems; }; const USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = { user: 'author' }; const USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = { user: { who: 'authors' } }; function useAuthorMenuItem(onClickMenuItem) { const existingTemplates = useExistingTemplates(); const defaultTemplateTypes = useDefaultTemplateTypes(); const authorInfo = useEntitiesInfo('root', USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX, USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS); let authorMenuItem = defaultTemplateTypes?.find(({ slug }) => slug === 'author'); if (!authorMenuItem) { authorMenuItem = { description: (0,external_wp_i18n_namespaceObject.__)('Displays latest posts written by a single author.'), slug: 'author', title: 'Author' }; } const hasGeneralTemplate = !!existingTemplates?.find(({ slug }) => slug === 'author'); if (authorInfo.user?.hasEntities) { authorMenuItem = { ...authorMenuItem, templatePrefix: 'author' }; authorMenuItem.onClick = template => { onClickMenuItem({ type: 'root', slug: 'user', config: { queryArgs: ({ search }) => { return { _fields: 'id,name,slug,link', orderBy: search ? 'name' : 'registered_date', exclude: authorInfo.user.existingEntitiesIds, who: 'authors' }; }, getSpecificTemplate: suggestion => { const templateSlug = `author-${suggestion.slug}`; return { title: templateSlug, slug: templateSlug, templatePrefix: 'author' }; } }, labels: { singular_name: (0,external_wp_i18n_namespaceObject.__)('Author'), search_items: (0,external_wp_i18n_namespaceObject.__)('Search Authors'), not_found: (0,external_wp_i18n_namespaceObject.__)('No authors found.'), all_items: (0,external_wp_i18n_namespaceObject.__)('All Authors') }, hasGeneralTemplate, template }); }; } if (!hasGeneralTemplate || authorInfo.user?.hasEntities) { return authorMenuItem; } } /** * Helper hook that filters all the existing templates by the given * object with the entity's slug as key and the template prefix as value. * * Example: * `existingTemplates` is: [ { slug: 'tag-apple' }, { slug: 'page-about' }, { slug: 'tag' } ] * `templatePrefixes` is: { post_tag: 'tag' } * It will return: { post_tag: ['apple'] } * * Note: We append the `-` to the given template prefix in this function for our checks. * * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value. * @return {Record<string,string[]>} An object with the entity's slug as key and an array with the existing template slugs as value. */ const useExistingTemplateSlugs = templatePrefixes => { const existingTemplates = useExistingTemplates(); const existingSlugs = (0,external_wp_element_namespaceObject.useMemo)(() => { return Object.entries(templatePrefixes || {}).reduce((accumulator, [slug, prefix]) => { const slugsWithTemplates = (existingTemplates || []).reduce((_accumulator, existingTemplate) => { const _prefix = `${prefix}-`; if (existingTemplate.slug.startsWith(_prefix)) { _accumulator.push(existingTemplate.slug.substring(_prefix.length)); } return _accumulator; }, []); if (slugsWithTemplates.length) { accumulator[slug] = slugsWithTemplates; } return accumulator; }, {}); }, [templatePrefixes, existingTemplates]); return existingSlugs; }; /** * Helper hook that finds the existing records with an associated template, * as they need to be excluded from the template suggestions. * * @param {string} entityName The entity's name. * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value. * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value. * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value. */ const useTemplatesToExclude = (entityName, templatePrefixes, additionalQueryParameters = {}) => { const slugsToExcludePerEntity = useExistingTemplateSlugs(templatePrefixes); const recordsToExcludePerEntity = (0,external_wp_data_namespaceObject.useSelect)(select => { return Object.entries(slugsToExcludePerEntity || {}).reduce((accumulator, [slug, slugsWithTemplates]) => { const entitiesWithTemplates = select(external_wp_coreData_namespaceObject.store).getEntityRecords(entityName, slug, { _fields: 'id', context: 'view', slug: slugsWithTemplates, ...additionalQueryParameters[slug] }); if (entitiesWithTemplates?.length) { accumulator[slug] = entitiesWithTemplates; } return accumulator; }, {}); }, [slugsToExcludePerEntity]); return recordsToExcludePerEntity; }; /** * Helper hook that returns information about an entity having * records that we can create a specific template for. * * For example we can search for `terms` in `taxonomy` entity or * `posts` in `postType` entity. * * First we need to find the existing records with an associated template, * to query afterwards for any remaining record, by excluding them. * * @param {string} entityName The entity's name. * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value. * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value. * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value. */ const useEntitiesInfo = (entityName, templatePrefixes, additionalQueryParameters = EMPTY_OBJECT) => { const recordsToExcludePerEntity = useTemplatesToExclude(entityName, templatePrefixes, additionalQueryParameters); const entitiesHasRecords = (0,external_wp_data_namespaceObject.useSelect)(select => { return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => { const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({ id }) => id) || []; accumulator[slug] = !!select(external_wp_coreData_namespaceObject.store).getEntityRecords(entityName, slug, { per_page: 1, _fields: 'id', context: 'view', exclude: existingEntitiesIds, ...additionalQueryParameters[slug] })?.length; return accumulator; }, {}); }, [templatePrefixes, recordsToExcludePerEntity, entityName, additionalQueryParameters]); const entitiesInfo = (0,external_wp_element_namespaceObject.useMemo)(() => { return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => { const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({ id }) => id) || []; accumulator[slug] = { hasEntities: entitiesHasRecords[slug], existingEntitiesIds }; return accumulator; }, {}); }, [templatePrefixes, recordsToExcludePerEntity, entitiesHasRecords]); return entitiesInfo; }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/add-custom-template-modal-content.js /** * WordPress dependencies */ /** * Internal dependencies */ const { CompositeV2: add_custom_template_modal_content_Composite, CompositeItemV2: add_custom_template_modal_content_CompositeItem, useCompositeStoreV2: add_custom_template_modal_content_useCompositeStore } = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); const add_custom_template_modal_content_EMPTY_ARRAY = []; function SuggestionListItem({ suggestion, search, onSelect, entityForSuggestions }) { const baseCssClass = 'edit-site-custom-template-modal__suggestions_list__list-item'; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(add_custom_template_modal_content_CompositeItem, { render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { role: "option", className: baseCssClass, onClick: () => onSelect(entityForSuggestions.config.getSpecificTemplate(suggestion)) }), children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { size: "body", lineHeight: 1.53846153846 // 20px , weight: 500, className: `${baseCssClass}__title`, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextHighlight, { text: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(suggestion.name), highlight: search }) }), suggestion.link && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { size: "body", lineHeight: 1.53846153846 // 20px , className: `${baseCssClass}__info`, children: suggestion.link })] }); } function useSearchSuggestions(entityForSuggestions, search) { const { config } = entityForSuggestions; const query = (0,external_wp_element_namespaceObject.useMemo)(() => ({ order: 'asc', context: 'view', search, per_page: search ? 20 : 10, ...config.queryArgs(search) }), [search, config]); const { records: searchResults, hasResolved: searchHasResolved } = (0,external_wp_coreData_namespaceObject.useEntityRecords)(entityForSuggestions.type, entityForSuggestions.slug, query); const [suggestions, setSuggestions] = (0,external_wp_element_namespaceObject.useState)(add_custom_template_modal_content_EMPTY_ARRAY); (0,external_wp_element_namespaceObject.useEffect)(() => { if (!searchHasResolved) { return; } let newSuggestions = add_custom_template_modal_content_EMPTY_ARRAY; if (searchResults?.length) { newSuggestions = searchResults; if (config.recordNamePath) { newSuggestions = mapToIHasNameAndId(newSuggestions, config.recordNamePath); } } // Update suggestions only when the query has resolved, so as to keep // the previous results in the UI. setSuggestions(newSuggestions); }, [searchResults, searchHasResolved]); return suggestions; } function SuggestionList({ entityForSuggestions, onSelect }) { const composite = add_custom_template_modal_content_useCompositeStore({ orientation: 'vertical' }); const [search, setSearch, debouncedSearch] = (0,external_wp_compose_namespaceObject.useDebouncedInput)(); const suggestions = useSearchSuggestions(entityForSuggestions, debouncedSearch); const { labels } = entityForSuggestions; const [showSearchControl, setShowSearchControl] = (0,external_wp_element_namespaceObject.useState)(false); if (!showSearchControl && suggestions?.length > 9) { setShowSearchControl(true); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [showSearchControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, { __nextHasNoMarginBottom: true, onChange: setSearch, value: search, label: labels.search_items, placeholder: labels.search_items }), !!suggestions?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_custom_template_modal_content_Composite, { store: composite, role: "listbox", className: "edit-site-custom-template-modal__suggestions_list", "aria-label": (0,external_wp_i18n_namespaceObject.__)('Suggestions list'), children: suggestions.map(suggestion => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SuggestionListItem, { suggestion: suggestion, search: debouncedSearch, onSelect: onSelect, entityForSuggestions: entityForSuggestions }, suggestion.slug)) }), debouncedSearch && !suggestions?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { as: "p", className: "edit-site-custom-template-modal__no-results", children: labels.not_found })] }); } function AddCustomTemplateModalContent({ onSelect, entityForSuggestions }) { const [showSearchEntities, setShowSearchEntities] = (0,external_wp_element_namespaceObject.useState)(entityForSuggestions.hasGeneralTemplate); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 4, className: "edit-site-custom-template-modal__contents-wrapper", alignment: "left", children: [!showSearchEntities && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { as: "p", children: (0,external_wp_i18n_namespaceObject.__)('Select whether to create a single template for all items or a specific one.') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, { className: "edit-site-custom-template-modal__contents", gap: "4", align: "initial", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.FlexItem, { isBlock: true, as: external_wp_components_namespaceObject.Button, onClick: () => { const { slug, title, description, templatePrefix } = entityForSuggestions.template; onSelect({ slug, title, description, templatePrefix }); }, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { as: "span", weight: 500, lineHeight: 1.53846153846 // 20px , children: entityForSuggestions.labels.all_items }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { as: "span", lineHeight: 1.53846153846 // 20px , children: // translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one. (0,external_wp_i18n_namespaceObject.__)('For all items') })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.FlexItem, { isBlock: true, as: external_wp_components_namespaceObject.Button, onClick: () => { setShowSearchEntities(true); }, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { as: "span", weight: 500, lineHeight: 1.53846153846 // 20px , children: entityForSuggestions.labels.singular_name }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { as: "span", lineHeight: 1.53846153846 // 20px , children: // translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one. (0,external_wp_i18n_namespaceObject.__)('For a specific item') })] })] })] }), showSearchEntities && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { as: "p", children: (0,external_wp_i18n_namespaceObject.__)('This template will be used only for the specific item chosen.') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SuggestionList, { entityForSuggestions: entityForSuggestions, onSelect: onSelect })] })] }); } /* harmony default export */ const add_custom_template_modal_content = (AddCustomTemplateModalContent); ;// CONCATENATED MODULE: ./node_modules/tslib/tslib.es6.mjs /****************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ /* global Reflect, Promise, SuppressedError, Symbol */ var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; } return __assign.apply(this, arguments); } function __rest(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } } function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); var _, done = false; for (var i = decorators.length - 1; i >= 0; i--) { var context = {}; for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; for (var p in contextIn.access) context.access[p] = contextIn.access[p]; context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); if (kind === "accessor") { if (result === void 0) continue; if (result === null || typeof result !== "object") throw new TypeError("Object expected"); if (_ = accept(result.get)) descriptor.get = _; if (_ = accept(result.set)) descriptor.set = _; if (_ = accept(result.init)) initializers.unshift(_); } else if (_ = accept(result)) { if (kind === "field") initializers.unshift(_); else descriptor[key] = _; } } if (target) Object.defineProperty(target, contextIn.name, descriptor); done = true; }; function __runInitializers(thisArg, initializers, value) { var useValue = arguments.length > 2; for (var i = 0; i < initializers.length; i++) { value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); } return useValue ? value : void 0; }; function __propKey(x) { return typeof x === "symbol" ? x : "".concat(x); }; function __setFunctionName(f, name, prefix) { if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); }; function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } var __createBinding = Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); function __exportStar(m, o) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); } function __values(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } /** @deprecated */ function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } /** @deprecated */ function __spreadArrays() { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; } function __spreadArray(to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); } function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } } function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } } function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __setModuleDefault = Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }; function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; } function __importDefault(mod) { return (mod && mod.__esModule) ? mod : { default: mod }; } function __classPrivateFieldGet(receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); } function __classPrivateFieldSet(receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; } function __classPrivateFieldIn(state, receiver) { if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); return typeof state === "function" ? receiver === state : state.has(receiver); } function __addDisposableResource(env, value, async) { if (value !== null && value !== void 0) { if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); var dispose; if (async) { if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); dispose = value[Symbol.asyncDispose]; } if (dispose === void 0) { if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); dispose = value[Symbol.dispose]; } if (typeof dispose !== "function") throw new TypeError("Object not disposable."); env.stack.push({ value: value, dispose: dispose, async: async }); } else if (async) { env.stack.push({ async: true }); } return value; } var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { var e = new Error(message); return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; }; function __disposeResources(env) { function fail(e) { env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; env.hasError = true; } function next() { while (env.stack.length) { var rec = env.stack.pop(); try { var result = rec.dispose && rec.dispose.call(rec.value); if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); } catch (e) { fail(e); } } if (env.hasError) throw env.error; } return next(); } /* harmony default export */ const tslib_es6 = ({ __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __createBinding, __exportStar, __values, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet, __classPrivateFieldIn, __addDisposableResource, __disposeResources, }); ;// CONCATENATED MODULE: ./node_modules/lower-case/dist.es2015/index.js /** * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt */ var SUPPORTED_LOCALE = { tr: { regexp: /\u0130|\u0049|\u0049\u0307/g, map: { İ: "\u0069", I: "\u0131", İ: "\u0069", }, }, az: { regexp: /\u0130/g, map: { İ: "\u0069", I: "\u0131", İ: "\u0069", }, }, lt: { regexp: /\u0049|\u004A|\u012E|\u00CC|\u00CD|\u0128/g, map: { I: "\u0069\u0307", J: "\u006A\u0307", Į: "\u012F\u0307", Ì: "\u0069\u0307\u0300", Í: "\u0069\u0307\u0301", Ĩ: "\u0069\u0307\u0303", }, }, }; /** * Localized lower case. */ function localeLowerCase(str, locale) { var lang = SUPPORTED_LOCALE[locale.toLowerCase()]; if (lang) return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; })); return lowerCase(str); } /** * Lower case as a function. */ function lowerCase(str) { return str.toLowerCase(); } ;// CONCATENATED MODULE: ./node_modules/no-case/dist.es2015/index.js // Support camel case ("camelCase" -> "camel Case" and "CAMELCase" -> "CAMEL Case"). var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g]; // Remove all non-word characters. var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi; /** * Normalize the string into something other libraries can manipulate easier. */ function noCase(input, options) { if (options === void 0) { options = {}; } var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d; var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0"); var start = 0; var end = result.length; // Trim the delimiter from around the output string. while (result.charAt(start) === "\0") start++; while (result.charAt(end - 1) === "\0") end--; // Transform each token independently. return result.slice(start, end).split("\0").map(transform).join(delimiter); } /** * Replace `re` in the input string with the replacement value. */ function replace(input, re, value) { if (re instanceof RegExp) return input.replace(re, value); return re.reduce(function (input, re) { return input.replace(re, value); }, input); } ;// CONCATENATED MODULE: ./node_modules/dot-case/dist.es2015/index.js function dotCase(input, options) { if (options === void 0) { options = {}; } return noCase(input, __assign({ delimiter: "." }, options)); } ;// CONCATENATED MODULE: ./node_modules/param-case/dist.es2015/index.js function paramCase(input, options) { if (options === void 0) { options = {}; } return dotCase(input, __assign({ delimiter: "-" }, options)); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/add-custom-generic-template-modal-content.js /** * External dependencies */ /** * WordPress dependencies */ function AddCustomGenericTemplateModalContent({ onClose, createTemplate }) { const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(''); const defaultTitle = (0,external_wp_i18n_namespaceObject.__)('Custom Template'); const [isBusy, setIsBusy] = (0,external_wp_element_namespaceObject.useState)(false); async function onCreateTemplate(event) { event.preventDefault(); if (isBusy) { return; } setIsBusy(true); try { await createTemplate({ slug: 'wp-custom-template-' + paramCase(title || defaultTitle), title: title || defaultTitle }, false); } finally { setIsBusy(false); } } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", { onSubmit: onCreateTemplate, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 6, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { __next40pxDefaultSize: true, __nextHasNoMarginBottom: true, label: (0,external_wp_i18n_namespaceObject.__)('Name'), value: title, onChange: setTitle, placeholder: defaultTitle, disabled: isBusy, help: (0,external_wp_i18n_namespaceObject.__)('Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { className: "edit-site-custom-generic-template__modal-actions", justify: "right", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: () => { onClose(); }, children: (0,external_wp_i18n_namespaceObject.__)('Cancel') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { __next40pxDefaultSize: true, variant: "primary", type: "submit", isBusy: isBusy, "aria-disabled": isBusy, children: (0,external_wp_i18n_namespaceObject.__)('Create') })] })] }) }); } /* harmony default export */ const add_custom_generic_template_modal_content = (AddCustomGenericTemplateModalContent); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/add-new-template/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ /** * Internal dependencies */ const { useHistory: add_new_template_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); const DEFAULT_TEMPLATE_SLUGS = ['front-page', 'home', 'single', 'page', 'index', 'archive', 'author', 'category', 'date', 'tag', 'search', '404']; const TEMPLATE_ICONS = { 'front-page': library_home, home: library_verse, single: library_pin, page: library_page, archive: library_archive, search: library_search, 404: not_found, index: library_list, category: library_category, author: comment_author_avatar, taxonomy: block_meta, date: library_calendar, tag: library_tag, attachment: library_media }; function TemplateListItem({ title, direction, className, description, icon, onClick, children }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { className: className, onClick: onClick, label: description, showTooltip: !!description, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, { as: "span", spacing: 2, align: "center", justify: "center", style: { width: '100%' }, direction: direction, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-add-new-template__template-icon", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { icon: icon }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { className: "edit-site-add-new-template__template-name", alignment: "center", spacing: 0, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { align: "center", weight: 500, lineHeight: 1.53846153846 // 20px , children: title }), children] })] }) }); } const modalContentMap = { templatesList: 1, customTemplate: 2, customGenericTemplate: 3 }; function NewTemplateModal({ onClose }) { const [modalContent, setModalContent] = (0,external_wp_element_namespaceObject.useState)(modalContentMap.templatesList); const [entityForSuggestions, setEntityForSuggestions] = (0,external_wp_element_namespaceObject.useState)({}); const [isSubmitting, setIsSubmitting] = (0,external_wp_element_namespaceObject.useState)(false); const missingTemplates = useMissingTemplates(setEntityForSuggestions, () => setModalContent(modalContentMap.customTemplate)); const history = add_new_template_useHistory(); const { saveEntityRecord } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); const { createErrorNotice, createSuccessNotice } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); const { homeUrl } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getUnstableBase // Site index. } = select(external_wp_coreData_namespaceObject.store); return { homeUrl: getUnstableBase()?.home }; }, []); const TEMPLATE_SHORT_DESCRIPTIONS = { 'front-page': homeUrl, date: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: The homepage url. (0,external_wp_i18n_namespaceObject.__)('E.g. %s'), homeUrl + '/' + new Date().getFullYear()) }; async function createTemplate(template, isWPSuggestion = true) { if (isSubmitting) { return; } setIsSubmitting(true); try { const { title, description, slug } = template; const newTemplate = await saveEntityRecord('postType', TEMPLATE_POST_TYPE, { description, // Slugs need to be strings, so this is for template `404` slug: slug.toString(), status: 'publish', title, // This adds a post meta field in template that is part of `is_custom` value calculation. is_wp_suggestion: isWPSuggestion }, { throwOnError: true }); // Navigate to the created template editor. history.push({ postId: newTemplate.id, postType: TEMPLATE_POST_TYPE, canvas: 'edit' }); createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Title of the created template e.g: "Category". (0,external_wp_i18n_namespaceObject.__)('"%s" successfully created.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(newTemplate.title?.rendered || title)), { type: 'snackbar' }); } catch (error) { const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while 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: 3, gap: 4, align: "flex-start", justify: "center", className: "edit-site-add-new-template__template-list__contents", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, { className: "edit-site-add-new-template__template-list__prompt", children: (0,external_wp_i18n_namespaceObject.__)('Select what the new template should apply to:') }), missingTemplates.map(template => { const { title, slug, onClick } = template; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplateListItem, { title: title, direction: "column", className: "edit-site-add-new-template__template-button", description: TEMPLATE_SHORT_DESCRIPTIONS[slug], icon: TEMPLATE_ICONS[slug] || library_layout, onClick: () => onClick ? onClick(template) : createTemplate(template) }, slug); }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplateListItem, { title: (0,external_wp_i18n_namespaceObject.__)('Custom template'), direction: "row", className: "edit-site-add-new-template__custom-template-button", icon: edit, onClick: () => setModalContent(modalContentMap.customGenericTemplate), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { lineHeight: 1.53846153846 // 20px , children: (0,external_wp_i18n_namespaceObject.__)('A custom template can be manually applied to any post or page.') }) })] }), modalContent === modalContentMap.customTemplate && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_custom_template_modal_content, { onSelect: createTemplate, entityForSuggestions: entityForSuggestions }), modalContent === modalContentMap.customGenericTemplate && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_custom_generic_template_modal_content, { onClose: onModalClose, createTemplate: createTemplate })] }); } function NewTemplate() { const [showModal, setShowModal] = (0,external_wp_element_namespaceObject.useState)(false); const { postType } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getPostType } = select(external_wp_coreData_namespaceObject.store); return { postType: getPostType(TEMPLATE_POST_TYPE) }; }, []); if (!postType) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "primary", onClick: () => setShowModal(true), label: postType.labels.add_new_item, __next40pxDefaultSize: true, children: postType.labels.add_new_item }), showModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NewTemplateModal, { onClose: () => setShowModal(false) })] }); } function useMissingTemplates(setEntityForSuggestions, onClick) { const existingTemplates = useExistingTemplates(); const defaultTemplateTypes = useDefaultTemplateTypes(); const existingTemplateSlugs = (existingTemplates || []).map(({ slug }) => slug); const missingDefaultTemplates = (defaultTemplateTypes || []).filter(template => DEFAULT_TEMPLATE_SLUGS.includes(template.slug) && !existingTemplateSlugs.includes(template.slug)); const onClickMenuItem = _entityForSuggestions => { onClick?.(); setEntityForSuggestions(_entityForSuggestions); }; // We need to replace existing default template types with // the create specific template functionality. The original // info (title, description, etc.) is preserved in the // used hooks. const enhancedMissingDefaultTemplateTypes = [...missingDefaultTemplates]; const { defaultTaxonomiesMenuItems, taxonomiesMenuItems } = useTaxonomiesMenuItems(onClickMenuItem); const { defaultPostTypesMenuItems, postTypesMenuItems } = usePostTypeMenuItems(onClickMenuItem); const authorMenuItem = useAuthorMenuItem(onClickMenuItem); [...defaultTaxonomiesMenuItems, ...defaultPostTypesMenuItems, authorMenuItem].forEach(menuItem => { if (!menuItem) { return; } const matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(template => template.slug === menuItem.slug); // Some default template types might have been filtered above from // `missingDefaultTemplates` because they only check for the general // template. So here we either replace or append the item, augmented // with the check if it has available specific item to create a // template for. if (matchIndex > -1) { enhancedMissingDefaultTemplateTypes[matchIndex] = menuItem; } else { enhancedMissingDefaultTemplateTypes.push(menuItem); } }); // Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order. enhancedMissingDefaultTemplateTypes?.sort((template1, template2) => { return DEFAULT_TEMPLATE_SLUGS.indexOf(template1.slug) - DEFAULT_TEMPLATE_SLUGS.indexOf(template2.slug); }); const missingTemplates = [...enhancedMissingDefaultTemplateTypes, ...usePostTypeArchiveMenuItems(), ...postTypesMenuItems, ...taxonomiesMenuItems]; return missingTemplates; } /* harmony default export */ const add_new_template = ((0,external_wp_element_namespaceObject.memo)(NewTemplate)); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/page-templates/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { usePostActions: page_templates_usePostActions } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); const { ExperimentalBlockEditorProvider: page_templates_ExperimentalBlockEditorProvider, useGlobalStyle: page_templates_useGlobalStyle } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const { useHistory: page_templates_useHistory, useLocation: page_templates_useLocation } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); const page_templates_EMPTY_ARRAY = []; const page_templates_defaultConfigPerViewType = { [LAYOUT_TABLE]: { primaryField: 'title' }, [LAYOUT_GRID]: { mediaField: 'preview', primaryField: 'title', columnFields: ['description'] }, [LAYOUT_LIST]: { primaryField: 'title', mediaField: 'preview' } }; const page_templates_DEFAULT_VIEW = { type: LAYOUT_GRID, search: '', page: 1, perPage: 20, sort: { field: 'title', direction: 'asc' }, // All fields are visible by default, so it's // better to keep track of the hidden ones. hiddenFields: ['preview'], layout: page_templates_defaultConfigPerViewType[LAYOUT_GRID], filters: [] }; function page_templates_Title({ item, viewType }) { if (viewType === LAYOUT_LIST) { return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.title?.rendered) || (0,external_wp_i18n_namespaceObject.__)('(no title)'); } const linkProps = { params: { postId: item.id, postType: item.type, canvas: 'edit' } }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Link, { ...linkProps, children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.title?.rendered) || (0,external_wp_i18n_namespaceObject.__)('(no title)') }); } function AuthorField({ item, viewType }) { const [isImageLoaded, setIsImageLoaded] = (0,external_wp_element_namespaceObject.useState)(false); const { text, icon, imageUrl } = useAddedBy(item.type, item.id); const withIcon = viewType !== LAYOUT_LIST; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { alignment: "left", spacing: 1, children: [withIcon && imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: dist_clsx('page-templates-author-field__avatar', { 'is-loaded': isImageLoaded }), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { onLoad: () => setIsImageLoaded(true), alt: "", src: imageUrl }) }), withIcon && !imageUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "page-templates-author-field__icon", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { icon: icon }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "page-templates-author-field__name", children: text })] }); } function page_templates_Preview({ item, viewType }) { const settings = usePatternSettings(); const [backgroundColor = 'white'] = page_templates_useGlobalStyle('color.background'); const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => { return (0,external_wp_blocks_namespaceObject.parse)(item.content.raw); }, [item.content.raw]); const { onClick } = useLink({ postId: item.id, postType: item.type, canvas: 'edit' }); const isEmpty = !blocks?.length; // Wrap everything in a block editor provider to ensure 'styles' that are needed // for the previews are synced between the site editor store and the block editor store. // Additionally we need to have the `__experimentalBlockPatterns` setting in order to // render patterns inside the previews. // TODO: Same approach is used in the patterns list and it becomes obvious that some of // the block editor settings are needed in context where we don't have the block editor. // Explore how we can solve this in a better way. return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_templates_ExperimentalBlockEditorProvider, { settings: settings, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { className: `page-templates-preview-field is-viewtype-${viewType}`, style: { backgroundColor }, children: [viewType === LAYOUT_LIST && !isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Async, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview, { blocks: blocks }) }), viewType !== LAYOUT_LIST && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("button", { className: "page-templates-preview-field__button", type: "button", onClick: onClick, "aria-label": item.title?.rendered || item.title, children: [isEmpty && (0,external_wp_i18n_namespaceObject.__)('Empty template'), !isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Async, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockPreview, { blocks: blocks }) })] })] }) }); } function PageTemplates() { const { params } = page_templates_useLocation(); const { activeView = 'all', layout, postId } = params; const [selection, setSelection] = (0,external_wp_element_namespaceObject.useState)([postId]); const defaultView = (0,external_wp_element_namespaceObject.useMemo)(() => { const usedType = layout !== null && layout !== void 0 ? layout : page_templates_DEFAULT_VIEW.type; return { ...page_templates_DEFAULT_VIEW, type: usedType, layout: page_templates_defaultConfigPerViewType[usedType], filters: activeView !== 'all' ? [{ field: 'author', operator: 'isAny', value: [activeView] }] : [] }; }, [layout, activeView]); const [view, setView] = (0,external_wp_element_namespaceObject.useState)(defaultView); (0,external_wp_element_namespaceObject.useEffect)(() => { setView(currentView => ({ ...currentView, filters: activeView !== 'all' ? [{ field: 'author', operator: OPERATOR_IS_ANY, value: [activeView] }] : [] })); }, [activeView]); const { records, isResolving: isLoadingData } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_POST_TYPE, { per_page: -1 }); const history = page_templates_useHistory(); const onSelectionChange = (0,external_wp_element_namespaceObject.useCallback)(items => { if (view?.type === LAYOUT_LIST) { history.push({ ...params, postId: items.length === 1 ? items[0].id : undefined }); } }, [history, params, view?.type]); const authors = (0,external_wp_element_namespaceObject.useMemo)(() => { if (!records) { return page_templates_EMPTY_ARRAY; } const authorsSet = new Set(); records.forEach(template => { authorsSet.add(template.author_text); }); return Array.from(authorsSet).map(author => ({ value: author, label: author })); }, [records]); const fields = (0,external_wp_element_namespaceObject.useMemo)(() => [{ header: (0,external_wp_i18n_namespaceObject.__)('Preview'), id: 'preview', render: ({ item }) => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_templates_Preview, { item: item, viewType: view.type }); }, minWidth: 120, maxWidth: 120, enableSorting: false }, { header: (0,external_wp_i18n_namespaceObject.__)('Template'), id: 'title', getValue: ({ item }) => item.title?.rendered, render: ({ item }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(page_templates_Title, { item: item, viewType: view.type }), maxWidth: 400, enableHiding: false, enableGlobalSearch: true }, { header: (0,external_wp_i18n_namespaceObject.__)('Description'), id: 'description', render: ({ item }) => { return item.description ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "page-templates-description", children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(item.description) }) : view.type === LAYOUT_TABLE && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { variant: "muted", "aria-hidden": "true", children: "\u2014" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, { children: (0,external_wp_i18n_namespaceObject.__)('No description.') })] }); }, maxWidth: 400, minWidth: 320, enableSorting: false, enableGlobalSearch: true }, { header: (0,external_wp_i18n_namespaceObject.__)('Author'), id: 'author', getValue: ({ item }) => item.author_text, render: ({ item }) => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AuthorField, { viewType: view.type, item: item }); }, elements: authors, width: '1%' }], [authors, view.type]); const { data, paginationInfo } = (0,external_wp_element_namespaceObject.useMemo)(() => { return filterSortAndPaginate(records, view, fields); }, [records, view, fields]); const postTypeActions = page_templates_usePostActions({ postType: TEMPLATE_POST_TYPE, context: 'list' }); const editAction = useEditPostAction(); const actions = (0,external_wp_element_namespaceObject.useMemo)(() => [editAction, ...postTypeActions], [postTypeActions, editAction]); const onChangeView = (0,external_wp_element_namespaceObject.useCallback)(newView => { if (newView.type !== view.type) { newView = { ...newView, layout: { ...page_templates_defaultConfigPerViewType[newView.type] } }; history.push({ ...params, layout: newView.type }); } setView(newView); }, [view.type, setView, history, params]); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Page, { className: "edit-site-page-templates", title: (0,external_wp_i18n_namespaceObject.__)('Templates'), actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(add_new_template, {}), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViews, { paginationInfo: paginationInfo, fields: fields, actions: actions, data: data, isLoading: isLoadingData, view: view, onChangeView: onChangeView, onSelectionChange: onSelectionChange, selection: selection, setSelection: setSelection }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-button/index.js /** * External dependencies */ /** * WordPress dependencies */ function SidebarButton(props) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { ...props, className: dist_clsx('edit-site-sidebar-button', props.className) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { useHistory: sidebar_navigation_screen_useHistory, useLocation: sidebar_navigation_screen_useLocation } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function SidebarNavigationScreen({ isRoot, title, actions, meta, content, footer, description, backPath: backPathProp }) { const { dashboardLink, dashboardLinkText, previewingThemeName } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getSettings } = lock_unlock_unlock(select(store)); const currentlyPreviewingThemeId = currentlyPreviewingTheme(); return { dashboardLink: getSettings().__experimentalDashboardLink, dashboardLinkText: getSettings().__experimentalDashboardLinkText, // Do not call `getTheme` with null, it will cause a request to // the server. previewingThemeName: currentlyPreviewingThemeId ? select(external_wp_coreData_namespaceObject.store).getTheme(currentlyPreviewingThemeId)?.name?.rendered : undefined }; }, []); const location = sidebar_navigation_screen_useLocation(); const history = sidebar_navigation_screen_useHistory(); const { navigate } = (0,external_wp_element_namespaceObject.useContext)(SidebarNavigationContext); const backPath = backPathProp !== null && backPathProp !== void 0 ? backPathProp : location.state?.backPath; const icon = (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right : chevron_left; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { className: dist_clsx('edit-site-sidebar-navigation-screen__main', { 'has-footer': !!footer }), spacing: 0, justify: "flex-start", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { spacing: 3, alignment: "flex-start", className: "edit-site-sidebar-navigation-screen__title-icon", children: [!isRoot && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarButton, { onClick: () => { history.push(backPath); navigate('back'); }, icon: icon, label: (0,external_wp_i18n_namespaceObject.__)('Back'), showTooltip: false }), isRoot && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarButton, { icon: icon, label: dashboardLinkText || (0,external_wp_i18n_namespaceObject.__)('Go to the Dashboard'), href: dashboardLink || 'index.php' }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, { className: "edit-site-sidebar-navigation-screen__title", color: '#e0e0e0' /* $gray-200 */, level: 1, size: 20, children: !isPreviewingTheme() ? title : (0,external_wp_i18n_namespaceObject.sprintf)('Previewing %1$s: %2$s', previewingThemeName, title) }), actions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-sidebar-navigation-screen__actions", children: actions })] }), meta && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-sidebar-navigation-screen__meta", children: meta }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { className: "edit-site-sidebar-navigation-screen__content", children: [description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { className: "edit-site-sidebar-navigation-screen__description", children: description }), content] })] }), footer && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("footer", { className: "edit-site-sidebar-navigation-screen__footer", children: footer })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-left-small.js /** * WordPress dependencies */ const chevronLeftSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z" }) }); /* harmony default export */ const chevron_left_small = (chevronLeftSmall); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-right-small.js /** * WordPress dependencies */ const chevronRightSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z" }) }); /* harmony default export */ const chevron_right_small = (chevronRightSmall); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-item/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { useHistory: sidebar_navigation_item_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function SidebarNavigationItem({ className, icon, withChevron = false, suffix, uid, params, onClick, children, ...props }) { const history = sidebar_navigation_item_useHistory(); const { navigate } = (0,external_wp_element_namespaceObject.useContext)(SidebarNavigationContext); // If there is no custom click handler, create one that navigates to `params`. function handleClick(e) { if (onClick) { onClick(e); navigate('forward'); } else if (params) { e.preventDefault(); history.push(params); navigate('forward', `[id="${uid}"]`); } } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItem, { className: dist_clsx('edit-site-sidebar-navigation-item', { 'with-suffix': !withChevron && suffix }, className), onClick: handleClick, id: uid, ...props, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "flex-start", children: [icon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { style: { fill: 'currentcolor' }, icon: icon, size: 24 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexBlock, { children: children }), withChevron && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left_small : chevron_right_small, className: "edit-site-sidebar-navigation-item__drilldown-indicator", size: 24 }), !withChevron && suffix] }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-label.js /** * WordPress dependencies */ function SidebarNavigationScreenDetailsPanelLabel({ children }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { className: "edit-site-sidebar-navigation-details-screen-panel__label", children: children }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js /** * External dependencies */ /** * WordPress dependencies */ function SidebarNavigationScreenDetailsPanelRow({ label, children, className, ...extraProps }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, { spacing: 5, alignment: "left", className: dist_clsx('edit-site-sidebar-navigation-details-screen-panel__row', className), ...extraProps, children: children }, label); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-value.js /** * WordPress dependencies */ function SidebarNavigationScreenDetailsPanelValue({ children }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { className: "edit-site-sidebar-navigation-details-screen-panel__value", children: children }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-panel/index.js /** * WordPress dependencies */ /** * Internal dependencies */ function SidebarNavigationScreenDetailsPanel({ title, children, spacing }) { return /*#__PURE__*/_jsxs(VStack, { className: "edit-site-sidebar-navigation-details-screen-panel", spacing: spacing, children: [title && /*#__PURE__*/_jsx(Heading, { className: "edit-site-sidebar-navigation-details-screen-panel__heading", level: 2, children: title }), children] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-details-footer/index.js /** * WordPress dependencies */ /** * Internal dependencies */ function SidebarNavigationScreenDetailsFooter({ record, ...otherProps }) { var _record$_links$predec, _record$_links$versio; /* * There might be other items in the future, * but for now it's just modified date. * Later we might render a list of items and isolate * the following logic. */ const hrefProps = {}; const lastRevisionId = (_record$_links$predec = record?._links?.['predecessor-version']?.[0]?.id) !== null && _record$_links$predec !== void 0 ? _record$_links$predec : null; const revisionsCount = (_record$_links$versio = record?._links?.['version-history']?.[0]?.count) !== null && _record$_links$versio !== void 0 ? _record$_links$versio : 0; // Enable the revisions link if there is a last revision and there are more than one revisions. if (lastRevisionId && revisionsCount > 1) { hrefProps.href = (0,external_wp_url_namespaceObject.addQueryArgs)('revision.php', { revision: record?._links['predecessor-version'][0].id }); hrefProps.as = 'a'; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, { className: "edit-site-sidebar-navigation-screen-details-footer", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { "aria-label": (0,external_wp_i18n_namespaceObject.__)('Revisions'), ...hrefProps, ...otherProps, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(SidebarNavigationScreenDetailsPanelRow, { justify: "space-between", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenDetailsPanelLabel, { children: (0,external_wp_i18n_namespaceObject.__)('Last modified') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenDetailsPanelValue, { children: (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: is the relative time when the post was last modified. */ (0,external_wp_i18n_namespaceObject.__)('<time>%s</time>'), (0,external_wp_date_namespaceObject.humanTimeDiff)(record.modified)), { time: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", { dateTime: record.modified }) }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { className: "edit-site-sidebar-navigation-screen-details-footer__icon", icon: library_backup })] }) }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-global-styles/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const sidebar_navigation_screen_global_styles_noop = () => {}; function SidebarNavigationItemGlobalStyles(props) { const { openGeneralSidebar } = (0,external_wp_data_namespaceObject.useDispatch)(store); const { setCanvasMode } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store)); const hasGlobalStyleVariations = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations()?.length, []); if (hasGlobalStyleVariations) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { ...props, params: { path: '/wp_global_styles' }, uid: "global-styles-navigation-item" }); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { ...props, onClick: () => { // Switch to edit mode. setCanvasMode('edit'); // Open global styles sidebar. openGeneralSidebar('edit-site/global-styles'); } }); } function SidebarNavigationScreenGlobalStylesContent() { const { storedSettings } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getSettings } = lock_unlock_unlock(select(store)); return { storedSettings: getSettings() }; }, []); const colorVariations = useColorVariations(); const typographyVariations = useTypographyVariations(); const gap = 3; // Wrap in a BlockEditorProvider to ensure that the Iframe's dependencies are // loaded. This is necessary because the Iframe component waits until // the block editor store's `__internalIsInitialized` is true before // rendering the iframe. Without this, the iframe previews will not render // in mobile viewport sizes, where the editor canvas is hidden. return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, { settings: storedSettings, onChange: sidebar_navigation_screen_global_styles_noop, onInput: sidebar_navigation_screen_global_styles_noop, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 10, className: "edit-site-global-styles-variation-container", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleVariationsContainer, { gap: gap }), colorVariations?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColorVariations, { title: (0,external_wp_i18n_namespaceObject.__)('Palettes'), gap: gap }), typographyVariations?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyVariations, { title: (0,external_wp_i18n_namespaceObject.__)('Typography'), gap: gap })] }) }); } function SidebarNavigationScreenGlobalStyles({ backPath }) { const { revisions, isLoading: isLoadingRevisions } = useGlobalStylesRevisions(); const { openGeneralSidebar } = (0,external_wp_data_namespaceObject.useDispatch)(store); const { setIsListViewOpened } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store); const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<'); const { setCanvasMode, setEditorCanvasContainerView } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store)); const { isViewMode, isStyleBookOpened, revisionsCount } = (0,external_wp_data_namespaceObject.useSelect)(select => { var _globalStyles$_links$; const { getCanvasMode, getEditorCanvasContainerView } = lock_unlock_unlock(select(store)); const { getEntityRecord, __experimentalGetCurrentGlobalStylesId } = select(external_wp_coreData_namespaceObject.store); const globalStylesId = __experimentalGetCurrentGlobalStylesId(); const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined; return { isViewMode: 'view' === getCanvasMode(), isStyleBookOpened: 'style-book' === getEditorCanvasContainerView(), revisionsCount: (_globalStyles$_links$ = globalStyles?._links?.['version-history']?.[0]?.count) !== null && _globalStyles$_links$ !== void 0 ? _globalStyles$_links$ : 0 }; }, []); const { set: setPreference } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store); const openGlobalStyles = (0,external_wp_element_namespaceObject.useCallback)(async () => { return Promise.all([setPreference('core', 'distractionFree', false), setCanvasMode('edit'), openGeneralSidebar('edit-site/global-styles')]); }, [setCanvasMode, openGeneralSidebar, setPreference]); const openStyleBook = (0,external_wp_element_namespaceObject.useCallback)(async () => { await openGlobalStyles(); // Open the Style Book once the canvas mode is set to edit, // and the global styles sidebar is open. This ensures that // the Style Book is not prematurely closed. setEditorCanvasContainerView('style-book'); setIsListViewOpened(false); }, [openGlobalStyles, setEditorCanvasContainerView, setIsListViewOpened]); const openRevisions = (0,external_wp_element_namespaceObject.useCallback)(async () => { await openGlobalStyles(); // Open the global styles revisions once the canvas mode is set to edit, // and the global styles sidebar is open. The global styles UI is responsible // for redirecting to the revisions screen once the editor canvas container // has been set to 'global-styles-revisions'. setEditorCanvasContainerView('global-styles-revisions'); }, [openGlobalStyles, setEditorCanvasContainerView]); // If there are no revisions, do not render a footer. const hasRevisions = revisionsCount > 0; const modifiedDateTime = revisions?.[0]?.modified; const shouldShowGlobalStylesFooter = hasRevisions && !isLoadingRevisions && modifiedDateTime; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, { title: (0,external_wp_i18n_namespaceObject.__)('Styles'), description: (0,external_wp_i18n_namespaceObject.__)('Choose a different style combination for the theme styles.'), backPath: backPath, content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenGlobalStylesContent, {}), footer: shouldShowGlobalStylesFooter && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenDetailsFooter, { record: revisions?.[0], onClick: openRevisions }), actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [!isMobileViewport && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarButton, { icon: library_seen, label: (0,external_wp_i18n_namespaceObject.__)('Style Book'), onClick: () => setEditorCanvasContainerView(!isStyleBookOpened ? 'style-book' : undefined), isPressed: isStyleBookOpened }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarButton, { icon: edit, label: (0,external_wp_i18n_namespaceObject.__)('Edit styles'), onClick: async () => await openGlobalStyles() })] }) }), isStyleBookOpened && !isMobileViewport && isViewMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book, { enableResizing: false, isSelected: () => false, onClick: openStyleBook, onSelect: openStyleBook, showCloseButton: false, showTabs: false })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/navigation.js /** * WordPress dependencies */ const navigation = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.5c-3.6 0-6.5-2.9-6.5-6.5S8.4 5.5 12 5.5s6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5zM9 16l4.5-3L15 8.4l-4.5 3L9 16z" }) }); /* harmony default export */ const library_navigation = (navigation); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-main/index.js /** * WordPress dependencies */ /** * Internal dependencies */ function SidebarNavigationScreenMain() { const { setEditorCanvasContainerView } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store)); // Clear the editor canvas container view when accessing the main navigation screen. (0,external_wp_element_namespaceObject.useEffect)(() => { setEditorCanvasContainerView(undefined); }, [setEditorCanvasContainerView]); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, { isRoot: true, title: (0,external_wp_i18n_namespaceObject.__)('Design'), description: (0,external_wp_i18n_namespaceObject.__)('Customize the appearance of your website using the block editor.'), content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { uid: "navigation-navigation-item", params: { postType: NAVIGATION_POST_TYPE }, withChevron: true, icon: library_navigation, children: (0,external_wp_i18n_namespaceObject.__)('Navigation') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItemGlobalStyles, { uid: "styles-navigation-item", withChevron: true, icon: library_styles, children: (0,external_wp_i18n_namespaceObject.__)('Styles') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { uid: "page-navigation-item", params: { postType: 'page' }, withChevron: true, icon: library_page, children: (0,external_wp_i18n_namespaceObject.__)('Pages') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { uid: "template-navigation-item", params: { postType: TEMPLATE_POST_TYPE }, withChevron: true, icon: library_layout, children: (0,external_wp_i18n_namespaceObject.__)('Templates') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { uid: "patterns-navigation-item", params: { postType: PATTERN_TYPES.user }, withChevron: true, icon: library_symbol, children: (0,external_wp_i18n_namespaceObject.__)('Patterns') })] }) }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js // This requested is preloaded in `gutenberg_preload_navigation_posts`. // As unbounded queries are limited to 100 by `fetchAllMiddleware` // on apiFetch this query is limited to 100. // These parameters must be kept aligned with those in // lib/compat/wordpress-6.3/navigation-block-preloading.php // and // block-library/src/navigation/constants.js const PRELOADED_NAVIGATION_MENUS_QUERY = { per_page: 100, status: ['publish', 'draft'], order: 'desc', orderby: 'date' }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.js /** * WordPress dependencies */ const notEmptyString = testString => testString?.trim()?.length > 0; function rename_modal_RenameModal({ menuTitle, onClose, onSave }) { const [editedMenuTitle, setEditedMenuTitle] = (0,external_wp_element_namespaceObject.useState)(menuTitle); const titleHasChanged = editedMenuTitle !== menuTitle; const isEditedMenuTitleValid = titleHasChanged && notEmptyString(editedMenuTitle); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { title: (0,external_wp_i18n_namespaceObject.__)('Rename'), onRequestClose: onClose, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", { className: "sidebar-navigation__rename-modal-form", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: "3", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { __nextHasNoMarginBottom: true, __next40pxDefaultSize: true, value: editedMenuTitle, placeholder: (0,external_wp_i18n_namespaceObject.__)('Navigation title'), onChange: setEditedMenuTitle }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "right", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: onClose, children: (0,external_wp_i18n_namespaceObject.__)('Cancel') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { __next40pxDefaultSize: true, __experimentalIsFocusable: true, disabled: !isEditedMenuTitleValid, variant: "primary", type: "submit", onClick: e => { e.preventDefault(); if (!isEditedMenuTitleValid) { return; } onSave({ title: editedMenuTitle }); // Immediate close avoids ability to hit save multiple times. onClose(); }, children: (0,external_wp_i18n_namespaceObject.__)('Save') })] })] }) }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js /** * WordPress dependencies */ function DeleteConfirmDialog({ onClose, onConfirm }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, { isOpen: true, onConfirm: () => { onConfirm(); // Immediate close avoids ability to hit delete multiple times. onClose(); }, onCancel: onClose, confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'), size: "medium", children: (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete this Navigation Menu?') }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useHistory: more_menu_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); const POPOVER_PROPS = { position: 'bottom right' }; function ScreenNavigationMoreMenu(props) { const { onDelete, onSave, onDuplicate, menuTitle, menuId } = props; const [renameModalOpen, setRenameModalOpen] = (0,external_wp_element_namespaceObject.useState)(false); const [deleteConfirmDialogOpen, setDeleteConfirmDialogOpen] = (0,external_wp_element_namespaceObject.useState)(false); const history = more_menu_useHistory(); const closeModals = () => { setRenameModalOpen(false); setDeleteConfirmDialogOpen(false); }; const openRenameModal = () => setRenameModalOpen(true); const openDeleteConfirmDialog = () => setDeleteConfirmDialogOpen(true); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, { className: "sidebar-navigation__more-menu", label: (0,external_wp_i18n_namespaceObject.__)('Actions'), icon: more_vertical, popoverProps: POPOVER_PROPS, children: ({ onClose }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: () => { openRenameModal(); // Close the dropdown after opening the modal. onClose(); }, children: (0,external_wp_i18n_namespaceObject.__)('Rename') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: () => { history.push({ postId: menuId, postType: 'wp_navigation', canvas: 'edit' }); }, children: (0,external_wp_i18n_namespaceObject.__)('Edit') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: () => { onDuplicate(); onClose(); }, children: (0,external_wp_i18n_namespaceObject.__)('Duplicate') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { isDestructive: true, onClick: () => { openDeleteConfirmDialog(); // Close the dropdown after opening the modal. onClose(); }, children: (0,external_wp_i18n_namespaceObject.__)('Delete') })] }) }) }), deleteConfirmDialogOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DeleteConfirmDialog, { onClose: closeModals, onConfirm: onDelete }), renameModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(rename_modal_RenameModal, { onClose: closeModals, menuTitle: menuTitle, onSave: onSave })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-up.js /** * WordPress dependencies */ const chevronUp = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z" }) }); /* harmony default export */ const chevron_up = (chevronUp); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-down.js /** * WordPress dependencies */ const chevronDown = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z" }) }); /* harmony default export */ const chevron_down = (chevronDown); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js /** * WordPress dependencies */ const leaf_more_menu_POPOVER_PROPS = { className: 'block-editor-block-settings-menu__popover', placement: 'bottom-start' }; /** * Internal dependencies */ const { useHistory: leaf_more_menu_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function LeafMoreMenu(props) { const history = leaf_more_menu_useHistory(); const { block } = props; const { clientId } = block; const { moveBlocksDown, moveBlocksUp, removeBlocks } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); const removeLabel = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: block name */ (0,external_wp_i18n_namespaceObject.__)('Remove %s'), (0,external_wp_blockEditor_namespaceObject.BlockTitle)({ clientId, maximumLength: 25 })); const goToLabel = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: block name */ (0,external_wp_i18n_namespaceObject.__)('Go to %s'), (0,external_wp_blockEditor_namespaceObject.BlockTitle)({ clientId, maximumLength: 25 })); const rootClientId = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getBlockRootClientId } = select(external_wp_blockEditor_namespaceObject.store); return getBlockRootClientId(clientId); }, [clientId]); const onGoToPage = (0,external_wp_element_namespaceObject.useCallback)(selectedBlock => { const { attributes, name } = selectedBlock; if (attributes.kind === 'post-type' && attributes.id && attributes.type && history) { const { params } = history.getLocationWithParams(); history.push({ postType: attributes.type, postId: attributes.id, canvas: 'edit' }, { backPath: params }); } if (name === 'core/page-list-item' && attributes.id && history) { const { params } = history.getLocationWithParams(); history.push({ postType: 'page', postId: attributes.id, canvas: 'edit' }, { backPath: params }); } }, [history]); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, { icon: more_vertical, label: (0,external_wp_i18n_namespaceObject.__)('Options'), className: "block-editor-block-settings-menu", popoverProps: leaf_more_menu_POPOVER_PROPS, noIcons: true, ...props, children: ({ onClose }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { icon: chevron_up, onClick: () => { moveBlocksUp([clientId], rootClientId); onClose(); }, children: (0,external_wp_i18n_namespaceObject.__)('Move up') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { icon: chevron_down, onClick: () => { moveBlocksDown([clientId], rootClientId); onClose(); }, children: (0,external_wp_i18n_namespaceObject.__)('Move down') }), block.attributes?.type === 'page' && block.attributes?.id && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: () => { onGoToPage(block); onClose(); }, children: goToLabel })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: () => { removeBlocks([clientId], false); onClose(); }, children: removeLabel }) })] }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js /** * WordPress dependencies */ /** * Internal dependencies */ const { PrivateListView } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); // Needs to be kept in sync with the query used at packages/block-library/src/page-list/edit.js. const MAX_PAGE_COUNT = 100; const PAGES_QUERY = ['postType', 'page', { per_page: MAX_PAGE_COUNT, _fields: ['id', 'link', 'menu_order', 'parent', 'title', 'type'], // TODO: When https://core.trac.wordpress.org/ticket/39037 REST API support for multiple orderby // values is resolved, update 'orderby' to [ 'menu_order', 'post_title' ] to provide a consistent // sort. orderby: 'menu_order', order: 'asc' }]; function NavigationMenuContent({ rootClientId }) { const { listViewRootClientId, isLoading } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { areInnerBlocksControlled, getBlockName, getBlockCount, getBlockOrder } = select(external_wp_blockEditor_namespaceObject.store); const { isResolving } = select(external_wp_coreData_namespaceObject.store); const blockClientIds = getBlockOrder(rootClientId); const hasOnlyPageListBlock = blockClientIds.length === 1 && getBlockName(blockClientIds[0]) === 'core/page-list'; const pageListHasBlocks = hasOnlyPageListBlock && getBlockCount(blockClientIds[0]) > 0; const isLoadingPages = isResolving('getEntityRecords', PAGES_QUERY); return { listViewRootClientId: pageListHasBlocks ? blockClientIds[0] : rootClientId, // This is a small hack to wait for the navigation block // to actually load its inner blocks. isLoading: !areInnerBlocksControlled(rootClientId) || isLoadingPages }; }, [rootClientId]); const { replaceBlock, __unstableMarkNextChangeAsNotPersistent } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); const offCanvasOnselect = (0,external_wp_element_namespaceObject.useCallback)(block => { if (block.name === 'core/navigation-link' && !block.attributes.url) { __unstableMarkNextChangeAsNotPersistent(); replaceBlock(block.clientId, (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link', block.attributes)); } }, [__unstableMarkNextChangeAsNotPersistent, replaceBlock]); // The hidden block is needed because it makes block edit side effects trigger. // For example a navigation page list load its items has an effect on edit to load its items. return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [!isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PrivateListView, { rootClientId: listViewRootClientId, onSelect: offCanvasOnselect, blockSettingsMenu: LeafMoreMenu, showAppender: false }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-sidebar-navigation-screen-navigation-menus__helper-block-editor", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockList, {}) })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js /** * WordPress dependencies */ /** * Internal dependencies */ const navigation_menu_editor_noop = () => {}; function NavigationMenuEditor({ navigationMenuId }) { const { storedSettings } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getSettings } = lock_unlock_unlock(select(store)); return { storedSettings: getSettings() }; }, []); const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => { if (!navigationMenuId) { return []; } return [(0,external_wp_blocks_namespaceObject.createBlock)('core/navigation', { ref: navigationMenuId })]; }, [navigationMenuId]); if (!navigationMenuId || !blocks?.length) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, { settings: storedSettings, value: blocks, onChange: navigation_menu_editor_noop, onInput: navigation_menu_editor_noop, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-sidebar-navigation-screen-navigation-menus__content", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuContent, { rootClientId: blocks[0].clientId }) }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/build-navigation-label.js /** * WordPress dependencies */ // Copied from packages/block-library/src/navigation/edit/navigation-menu-selector.js. function buildNavigationLabel(title, id, status) { if (!title?.rendered) { /* translators: %s is the index of the menu in the list of menus. */ return (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('(no title %s)'), id); } if (status === 'publish') { return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title?.rendered); } return (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %1s: title of the menu; %2s: status of the menu (draft, pending, etc.). (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title?.rendered), status); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js /** * WordPress dependencies */ /** * Internal dependencies */ function SingleNavigationMenu({ navigationMenu, backPath, handleDelete, handleDuplicate, handleSave }) { const menuTitle = navigationMenu?.title?.rendered; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, { actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenNavigationMoreMenu, { menuId: navigationMenu?.id, menuTitle: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(menuTitle), onDelete: handleDelete, onSave: handleSave, onDuplicate: handleDuplicate }) }), backPath: backPath, title: buildNavigationLabel(navigationMenu?.title, navigationMenu?.id, navigationMenu?.status), description: (0,external_wp_i18n_namespaceObject.__)('Navigation Menus are a curated collection of blocks that allow visitors to get around your site.'), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuEditor, { navigationMenuId: navigationMenu?.id }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useLocation: sidebar_navigation_screen_navigation_menu_useLocation } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); const postType = `wp_navigation`; function SidebarNavigationScreenNavigationMenu({ backPath }) { const { params: { postId } } = sidebar_navigation_screen_navigation_menu_useLocation(); const { record: navigationMenu, isResolving } = (0,external_wp_coreData_namespaceObject.useEntityRecord)('postType', postType, postId); const { isSaving, isDeleting } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { isSavingEntityRecord, isDeletingEntityRecord } = select(external_wp_coreData_namespaceObject.store); return { isSaving: isSavingEntityRecord('postType', postType, postId), isDeleting: isDeletingEntityRecord('postType', postType, postId) }; }, [postId]); const isLoading = isResolving || isSaving || isDeleting; const menuTitle = navigationMenu?.title?.rendered || navigationMenu?.slug; const { handleSave, handleDelete, handleDuplicate } = useNavigationMenuHandlers(); const _handleDelete = () => handleDelete(navigationMenu); const _handleSave = edits => handleSave(navigationMenu, edits); const _handleDuplicate = () => handleDuplicate(navigationMenu); if (isLoading) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, { description: (0,external_wp_i18n_namespaceObject.__)('Navigation Menus are a curated collection of blocks that allow visitors to get around your site.'), backPath: backPath, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, { className: "edit-site-sidebar-navigation-screen-navigation-menus__loading" }) }); } if (!isLoading && !navigationMenu) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, { description: (0,external_wp_i18n_namespaceObject.__)('Navigation Menu missing.'), backPath: backPath }); } if (!navigationMenu?.content?.raw) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, { actions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenNavigationMoreMenu, { menuId: navigationMenu?.id, menuTitle: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(menuTitle), onDelete: _handleDelete, onSave: _handleSave, onDuplicate: _handleDuplicate }), backPath: backPath, title: buildNavigationLabel(navigationMenu?.title, navigationMenu?.id, navigationMenu?.status), description: (0,external_wp_i18n_namespaceObject.__)('This Navigation Menu is empty.') }); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleNavigationMenu, { navigationMenu: navigationMenu, backPath: backPath, handleDelete: _handleDelete, handleSave: _handleSave, handleDuplicate: _handleDuplicate }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useHistory: use_navigation_menu_handlers_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function useDeleteNavigationMenu() { const { deleteEntityRecord } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); const { createSuccessNotice, createErrorNotice } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); const 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.push({ postType: 'wp_navigation' }); } catch (error) { createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: error message describing why the navigation menu could not be deleted. */ (0,external_wp_i18n_namespaceObject.__)(`Unable to delete Navigation Menu (%s).`), error?.message), { type: 'snackbar' }); } }; return handleDelete; } function useSaveNavigationMenu() { const { getEditedEntityRecord } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getEditedEntityRecord: getEditedEntityRecordSelector } = select(external_wp_coreData_namespaceObject.store); return { getEditedEntityRecord: getEditedEntityRecordSelector }; }, []); const { editEntityRecord, __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); const { createSuccessNotice, createErrorNotice } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); const handleSave = async (navigationMenu, edits) => { if (!edits) { return; } const postId = navigationMenu?.id; // Prepare for revert in case of error. const originalRecord = getEditedEntityRecord('postType', NAVIGATION_POST_TYPE, postId); // Apply the edits. editEntityRecord('postType', postType, postId, edits); const recordPropertiesToSave = Object.keys(edits); // Attempt to persist. try { await saveSpecifiedEntityEdits('postType', postType, postId, recordPropertiesToSave, { throwOnError: true }); createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Renamed Navigation Menu'), { type: 'snackbar' }); } catch (error) { // Revert to original in case of error. editEntityRecord('postType', postType, postId, originalRecord); createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: error message describing why the navigation menu could not be renamed. */ (0,external_wp_i18n_namespaceObject.__)(`Unable to rename Navigation Menu (%s).`), error?.message), { type: 'snackbar' }); } }; return handleSave; } function useDuplicateNavigationMenu() { const history = use_navigation_menu_handlers_useHistory(); const { saveEntityRecord } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); const { createSuccessNotice, createErrorNotice } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); const handleDuplicate = async navigationMenu => { const menuTitle = navigationMenu?.title?.rendered || navigationMenu?.slug; try { const savedRecord = await saveEntityRecord('postType', postType, { title: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Navigation menu title */ (0,external_wp_i18n_namespaceObject.__)('%s (Copy)'), menuTitle), content: navigationMenu?.content?.raw, status: 'publish' }, { throwOnError: true }); if (savedRecord) { createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Duplicated Navigation Menu'), { type: 'snackbar' }); history.push({ postType: postType, postId: savedRecord.id }); } } catch (error) { createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: error message describing why the navigation menu could not be deleted. */ (0,external_wp_i18n_namespaceObject.__)(`Unable to duplicate Navigation Menu (%s).`), error?.message), { type: 'snackbar' }); } }; return handleDuplicate; } function useNavigationMenuHandlers() { return { handleDelete: useDeleteNavigationMenu(), handleSave: useSaveNavigationMenu(), handleDuplicate: useDuplicateNavigationMenu() }; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/index.js /** * WordPress dependencies */ /** * Internal dependencies */ // Copied from packages/block-library/src/navigation/edit/navigation-menu-selector.js. function buildMenuLabel(title, id, status) { if (!title) { /* translators: %s is the index of the menu in the list of menus. */ return (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('(no title %s)'), id); } if (status === 'publish') { return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title); } return (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %1s: title of the menu; %2s: status of the menu (draft, pending, etc.). (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title), status); } // Save a boolean to prevent us creating a fallback more than once per session. let hasCreatedFallback = false; function SidebarNavigationScreenNavigationMenus({ backPath }) { const { records: navigationMenus, isResolving: isResolvingNavigationMenus, hasResolved: hasResolvedNavigationMenus } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', NAVIGATION_POST_TYPE, PRELOADED_NAVIGATION_MENUS_QUERY); const isLoading = isResolvingNavigationMenus && !hasResolvedNavigationMenus; const { getNavigationFallbackId } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store)); const firstNavigationMenu = navigationMenus?.[0]; // Save a boolean to prevent us creating a fallback more than once per session. if (firstNavigationMenu) { hasCreatedFallback = true; } // If there is no navigation menu found // then trigger fallback algorithm to create one. if (!firstNavigationMenu && !isResolvingNavigationMenus && hasResolvedNavigationMenus && !hasCreatedFallback) { getNavigationFallbackId(); } const { handleSave, handleDelete, handleDuplicate } = useNavigationMenuHandlers(); const hasNavigationMenus = !!navigationMenus?.length; if (isLoading) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, { backPath: backPath, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, { className: "edit-site-sidebar-navigation-screen-navigation-menus__loading" }) }); } if (!isLoading && !hasNavigationMenus) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, { description: (0,external_wp_i18n_namespaceObject.__)('No Navigation Menus found.'), backPath: backPath }); } // if single menu then render it if (navigationMenus?.length === 1) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleNavigationMenu, { navigationMenu: firstNavigationMenu, backPath: backPath, handleDelete: () => handleDelete(firstNavigationMenu), handleDuplicate: () => handleDuplicate(firstNavigationMenu), handleSave: edits => handleSave(firstNavigationMenu, edits) }); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenWrapper, { backPath: backPath, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, { children: navigationMenus?.map(({ id, title, status }, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavMenuItem, { postId: id, withChevron: true, icon: library_navigation, children: buildMenuLabel(title?.rendered, index + 1, status) }, id)) }) }); } function SidebarNavigationScreenWrapper({ children, actions, title, description, backPath }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, { title: title || (0,external_wp_i18n_namespaceObject.__)('Navigation'), actions: actions, description: description || (0,external_wp_i18n_namespaceObject.__)('Manage your Navigation Menus.'), backPath: backPath, content: children }); } const NavMenuItem = ({ postId, ...props }) => { const linkInfo = useLink({ postId, postType: 'wp_navigation' }); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { ...linkInfo, ...props }); }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/dataview-item.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { useLocation: dataview_item_useLocation } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function DataViewItem({ title, slug, customViewId, type, icon, isActive, isCustom, suffix }) { const { params: { postType, layout } } = dataview_item_useLocation(); const iconToUse = icon || VIEW_LAYOUTS.find(v => v.type === type).icon; let activeView = isCustom ? customViewId : slug; if (activeView === 'all') { activeView = undefined; } const linkInfo = useLink({ postType, layout, activeView, isCustom: isCustom ? 'true' : undefined }); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "flex-start", className: dist_clsx('edit-site-sidebar-dataviews-dataview-item', { 'is-selected': isActive }), children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { icon: iconToUse, ...linkInfo, "aria-current": isActive ? 'true' : undefined, children: title }), suffix] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-templates-browse/content.js /** * WordPress dependencies */ /** * Internal dependencies */ const content_EMPTY_ARRAY = []; function TemplateDataviewItem({ template, isActive }) { const { text, icon } = useAddedBy(template.type, template.id); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewItem, { slug: text, title: text, icon: icon, isActive: isActive, isCustom: false }, text); } function DataviewsTemplatesSidebarContent({ activeView, title }) { const { records } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_POST_TYPE, { per_page: -1 }); const firstItemPerAuthorText = (0,external_wp_element_namespaceObject.useMemo)(() => { var _ref; const firstItemPerAuthor = records?.reduce((acc, template) => { const author = template.author_text; if (author && !acc[author]) { acc[author] = template; } return acc; }, {}); return (_ref = firstItemPerAuthor && Object.values(firstItemPerAuthor)) !== null && _ref !== void 0 ? _ref : content_EMPTY_ARRAY; }, [records]); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewItem, { slug: "all", title: title, icon: library_layout, isActive: activeView === 'all', isCustom: false }), firstItemPerAuthorText.map(template => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplateDataviewItem, { template: template, isActive: activeView === template.author_text }, template.author_text); })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-templates-browse/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useLocation: sidebar_navigation_screen_templates_browse_useLocation } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function SidebarNavigationScreenTemplatesBrowse({ backPath }) { const { params: { activeView = 'all' } } = sidebar_navigation_screen_templates_browse_useLocation(); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, { title: (0,external_wp_i18n_namespaceObject.__)('Templates'), description: (0,external_wp_i18n_namespaceObject.__)('Create new templates, or reset any customizations made to the templates supplied by your theme.'), backPath: backPath, content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataviewsTemplatesSidebarContent, { activeView: activeView, title: (0,external_wp_i18n_namespaceObject.__)('All templates') }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/file.js /** * WordPress dependencies */ const file = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z" }) }); /* harmony default export */ const library_file = (file); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/category-item.js /** * Internal dependencies */ function CategoryItem({ count, icon, id, isActive, label, type }) { const linkInfo = useLink({ categoryId: id !== TEMPLATE_PART_ALL_AREAS_CATEGORY && id !== PATTERN_DEFAULT_CATEGORY ? id : undefined, postType: type === TEMPLATE_PART_POST_TYPE ? TEMPLATE_PART_POST_TYPE : PATTERN_TYPES.user }); if (!count) { return; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { ...linkInfo, icon: icon, suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { children: count }), "aria-current": isActive ? 'true' : undefined, children: label }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js /** * WordPress dependencies */ /** * Internal dependencies */ const useTemplatePartsGroupedByArea = items => { const allItems = items || []; const templatePartAreas = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).__experimentalGetDefaultTemplatePartAreas(), []); // Create map of template areas ensuring that default areas are displayed before // any custom registered template part areas. const knownAreas = { header: {}, footer: {}, sidebar: {}, uncategorized: {} }; templatePartAreas.forEach(templatePartArea => knownAreas[templatePartArea.area] = { ...templatePartArea, templateParts: [] }); const groupedByArea = allItems.reduce((accumulator, item) => { const key = accumulator[item.area] ? item.area : TEMPLATE_PART_AREA_DEFAULT_CATEGORY; accumulator[key].templateParts.push(item); return accumulator; }, knownAreas); return groupedByArea; }; function useTemplatePartAreas() { const { records: templateParts, isResolving: isLoading } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', TEMPLATE_PART_POST_TYPE, { per_page: -1 }); return { hasTemplateParts: templateParts ? !!templateParts.length : false, isLoading, templatePartAreas: useTemplatePartsGroupedByArea(templateParts) }; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-navigation-screen-patterns/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useLocation: sidebar_navigation_screen_patterns_useLocation } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function CategoriesGroup({ templatePartAreas, patternCategories, currentCategory, currentType }) { const [allPatterns, ...otherPatterns] = patternCategories; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, { className: "edit-site-sidebar-navigation-screen-patterns__group", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, { count: Object.values(templatePartAreas).map(({ templateParts }) => templateParts?.length || 0).reduce((acc, val) => acc + val, 0), icon: (0,external_wp_editor_namespaceObject.getTemplatePartIcon)() /* no name, so it provides the fallback icon */, label: (0,external_wp_i18n_namespaceObject.__)('All template parts'), id: TEMPLATE_PART_ALL_AREAS_CATEGORY, type: TEMPLATE_PART_POST_TYPE, isActive: currentCategory === TEMPLATE_PART_ALL_AREAS_CATEGORY && currentType === TEMPLATE_PART_POST_TYPE }, "all"), Object.entries(templatePartAreas).map(([area, { label, templateParts }]) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, { count: templateParts?.length, icon: (0,external_wp_editor_namespaceObject.getTemplatePartIcon)(area), label: label, id: area, type: TEMPLATE_PART_POST_TYPE, isActive: currentCategory === area && currentType === TEMPLATE_PART_POST_TYPE }, area)), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-sidebar-navigation-screen-patterns__divider" }), allPatterns && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, { count: allPatterns.count, label: allPatterns.label, icon: library_file, id: allPatterns.name, type: PATTERN_TYPES.user, isActive: currentCategory === `${allPatterns.name}` && currentType === PATTERN_TYPES.user }, allPatterns.name), otherPatterns.map(category => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoryItem, { count: category.count, label: category.label, icon: library_file, id: category.name, type: PATTERN_TYPES.user, isActive: currentCategory === `${category.name}` && currentType === PATTERN_TYPES.user }, category.name))] }); } function SidebarNavigationScreenPatterns({ backPath }) { const { params: { postType, categoryId } } = sidebar_navigation_screen_patterns_useLocation(); const currentType = postType || PATTERN_TYPES.user; const currentCategory = categoryId || (currentType === PATTERN_TYPES.user ? PATTERN_DEFAULT_CATEGORY : TEMPLATE_PART_ALL_AREAS_CATEGORY); const { templatePartAreas, hasTemplateParts, isLoading } = useTemplatePartAreas(); const { patternCategories, hasPatterns } = usePatternCategories(); const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.is_block_theme, []); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, { isRoot: !isBlockBasedTheme, title: (0,external_wp_i18n_namespaceObject.__)('Patterns'), description: (0,external_wp_i18n_namespaceObject.__)('Manage what patterns are available when editing the site.'), backPath: backPath, content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [isLoading && (0,external_wp_i18n_namespaceObject.__)('Loading items…'), !isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [!hasTemplateParts && !hasPatterns && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, { className: "edit-site-sidebar-navigation-screen-patterns__group", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItem, { children: (0,external_wp_i18n_namespaceObject.__)('No items found') }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CategoriesGroup, { templatePartAreas: templatePartAreas, patternCategories: patternCategories, currentCategory: currentCategory, currentType: currentType })] })] }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/add-new-view.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useHistory: add_new_view_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function AddNewItemModalContent({ type, setIsAdding }) { const history = add_new_view_useHistory(); const { saveEntityRecord } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(''); const [isSaving, setIsSaving] = (0,external_wp_element_namespaceObject.useState)(false); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", { onSubmit: async event => { event.preventDefault(); setIsSaving(true); const { getEntityRecords } = (0,external_wp_data_namespaceObject.resolveSelect)(external_wp_coreData_namespaceObject.store); let dataViewTaxonomyId; const dataViewTypeRecords = await getEntityRecords('taxonomy', 'wp_dataviews_type', { slug: type }); if (dataViewTypeRecords && dataViewTypeRecords.length > 0) { dataViewTaxonomyId = dataViewTypeRecords[0].id; } else { const record = await saveEntityRecord('taxonomy', 'wp_dataviews_type', { name: type }); if (record && record.id) { dataViewTaxonomyId = record.id; } } const savedRecord = await saveEntityRecord('postType', 'wp_dataviews', { title, status: 'publish', wp_dataviews_type: dataViewTaxonomyId, content: JSON.stringify(DEFAULT_VIEWS[type][0].view) }); const { params: { postType } } = history.getLocationWithParams(); history.push({ postType, activeView: savedRecord.id, isCustom: 'true' }); setIsSaving(false); setIsAdding(false); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: "5", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { __nextHasNoMarginBottom: true, label: (0,external_wp_i18n_namespaceObject.__)('Name'), value: title, onChange: setTitle, placeholder: (0,external_wp_i18n_namespaceObject.__)('My view'), className: "patterns-create-modal__name-input" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "right", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "tertiary", onClick: () => { setIsAdding(false); }, children: (0,external_wp_i18n_namespaceObject.__)('Cancel') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "primary", type: "submit", "aria-disabled": !title || isSaving, isBusy: isSaving, children: (0,external_wp_i18n_namespaceObject.__)('Create') })] })] }) }); } function AddNewItem({ type }) { const [isAdding, setIsAdding] = (0,external_wp_element_namespaceObject.useState)(false); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationItem, { icon: library_plus, onClick: () => { setIsAdding(true); }, className: "dataviews__siderbar-content-add-new-item", children: (0,external_wp_i18n_namespaceObject.__)('New view') }), isAdding && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { title: (0,external_wp_i18n_namespaceObject.__)('Add new view'), onRequestClose: () => { setIsAdding(false); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewItemModalContent, { type: type, setIsAdding: setIsAdding }) })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/custom-dataviews-list.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useHistory: custom_dataviews_list_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); const custom_dataviews_list_EMPTY_ARRAY = []; function RenameItemModalContent({ dataviewId, currentTitle, setIsRenaming }) { const { editEntityRecord } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(currentTitle); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", { onSubmit: async event => { event.preventDefault(); await editEntityRecord('postType', 'wp_dataviews', dataviewId, { title }); setIsRenaming(false); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: "5", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { __nextHasNoMarginBottom: true, label: (0,external_wp_i18n_namespaceObject.__)('Name'), value: title, onChange: setTitle, placeholder: (0,external_wp_i18n_namespaceObject.__)('My view'), className: "patterns-create-modal__name-input" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "right", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "tertiary", onClick: () => { setIsRenaming(false); }, children: (0,external_wp_i18n_namespaceObject.__)('Cancel') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "primary", type: "submit", "aria-disabled": !title, children: (0,external_wp_i18n_namespaceObject.__)('Rename') })] })] }) }); } function CustomDataViewItem({ dataviewId, isActive }) { const history = custom_dataviews_list_useHistory(); const { dataview } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getEditedEntityRecord } = select(external_wp_coreData_namespaceObject.store); return { dataview: getEditedEntityRecord('postType', 'wp_dataviews', dataviewId) }; }, [dataviewId]); const { deleteEntityRecord } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); const type = (0,external_wp_element_namespaceObject.useMemo)(() => { const viewContent = JSON.parse(dataview.content); return viewContent.type; }, [dataview.content]); const [isRenaming, setIsRenaming] = (0,external_wp_element_namespaceObject.useState)(false); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewItem, { title: dataview.title, type: type, isActive: isActive, isCustom: true, customViewId: dataviewId, suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, { icon: more_vertical, label: (0,external_wp_i18n_namespaceObject.__)('Actions'), className: "edit-site-sidebar-dataviews-dataview-item__dropdown-menu", toggleProps: { style: { color: 'inherit' }, size: 'small' }, children: ({ onClose }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: () => { setIsRenaming(true); onClose(); }, children: (0,external_wp_i18n_namespaceObject.__)('Rename') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: async () => { await deleteEntityRecord('postType', 'wp_dataviews', dataview.id, { force: true }); if (isActive) { const { params: { postType } } = history.getLocationWithParams(); history.replace({ postType }); } onClose(); }, isDestructive: true, children: (0,external_wp_i18n_namespaceObject.__)('Delete') })] }) }) }), isRenaming && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { title: (0,external_wp_i18n_namespaceObject.__)('Rename view'), onRequestClose: () => { setIsRenaming(false); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenameItemModalContent, { dataviewId: dataviewId, setIsRenaming: setIsRenaming, currentTitle: dataview.title }) })] }); } function useCustomDataViews(type) { const customDataViews = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getEntityRecords } = select(external_wp_coreData_namespaceObject.store); const dataViewTypeRecords = getEntityRecords('taxonomy', 'wp_dataviews_type', { slug: type }); if (!dataViewTypeRecords || dataViewTypeRecords.length === 0) { return custom_dataviews_list_EMPTY_ARRAY; } const dataViews = getEntityRecords('postType', 'wp_dataviews', { wp_dataviews_type: dataViewTypeRecords[0].id, orderby: 'date', order: 'asc' }); if (!dataViews) { return custom_dataviews_list_EMPTY_ARRAY; } return dataViews; }); return customDataViews; } function CustomDataViewsList({ type, activeView, isCustom }) { const customDataViews = useCustomDataViews(type); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-sidebar-navigation-screen-dataviews__group-header", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, { level: 2, children: (0,external_wp_i18n_namespaceObject.__)('Custom Views') }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, { children: [customDataViews.map(customViewRecord => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CustomDataViewItem, { dataviewId: customViewRecord.id, isActive: isCustom && Number(activeView) === customViewRecord.id }, customViewRecord.id); }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddNewItem, { type: type })] })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/sidebar-dataviews/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useLocation: sidebar_dataviews_useLocation } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function DataViewsSidebarContent() { const { params: { postType, activeView = 'all', isCustom = 'false' } } = sidebar_dataviews_useLocation(); if (!postType) { return null; } const isCustomBoolean = isCustom === 'true'; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, { children: DEFAULT_VIEWS[postType].map(dataview => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewItem, { slug: dataview.slug, title: dataview.title, icon: dataview.icon, type: dataview.view.type, isActive: !isCustomBoolean && dataview.slug === activeView, isCustom: false }, dataview.slug); }) }), window?.__experimentalCustomViews && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CustomDataViewsList, { activeView: activeView, type: postType, isCustom: true })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/layout/router.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useLocation: router_useLocation, useHistory: router_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function useRedirectOldPaths() { const history = router_useHistory(); const { params } = router_useLocation(); (0,external_wp_element_namespaceObject.useEffect)(() => { const { postType, path, categoryType, ...rest } = params; if (path === '/wp_template_part/all') { history.replace({ postType: TEMPLATE_PART_POST_TYPE }); } if (path === '/page') { history.replace({ postType: 'page', ...rest }); } if (path === '/wp_template') { history.replace({ postType: TEMPLATE_POST_TYPE, ...rest }); } if (path === '/patterns') { history.replace({ postType: categoryType === TEMPLATE_PART_POST_TYPE ? TEMPLATE_PART_POST_TYPE : PATTERN_TYPES.user, ...rest }); } if (path === '/navigation') { history.replace({ postType: NAVIGATION_POST_TYPE, ...rest }); } }, [history, params]); } function useLayoutAreas() { const isSiteEditorLoading = useIsSiteEditorLoading(); const { params } = router_useLocation(); const { postType, postId, path, layout, isCustom, canvas } = params; const hasEditCanvasMode = canvas === 'edit'; useRedirectOldPaths(); // Page list if (postType === 'page') { const isListLayout = layout === 'list' || !layout; return { key: 'pages', areas: { sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreen, { title: (0,external_wp_i18n_namespaceObject.__)('Pages'), backPath: {}, content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DataViewsSidebarContent, {}) }), content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PagePages, {}), preview: (isListLayout || hasEditCanvasMode) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, { isLoading: isSiteEditorLoading }), mobile: hasEditCanvasMode ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, { isLoading: isSiteEditorLoading }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PagePages, {}) }, widths: { content: isListLayout ? 380 : undefined } }; } // Templates if (postType === TEMPLATE_POST_TYPE) { const isListLayout = isCustom !== 'true' && layout === 'list'; return { key: 'templates', areas: { sidebar: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SidebarNavigationScreenTemplatesBrowse, { backPath: {} }), content: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PageTemplates, {}), preview: (isListLayout || hasEditCanvasMode) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, { isLoading: isSiteEditorLoading }), mobile: hasEditCanvasMode ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditSiteEditor, { isLoading: isSiteEditorLoading }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PageTemplates, {}) }, widths: { content: isListLayout ? 380 : undefined
•
Search:
•
Replace:
1
2
3
4
5
Function
Edit by line
Download
Information
Rename
Copy
Move
Delete
Chmod
List