| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 var __create = Object.create; 2 var __defProp = Object.defineProperty; 3 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 4 var __getOwnPropNames = Object.getOwnPropertyNames; 5 var __getProtoOf = Object.getPrototypeOf; 6 var __hasOwnProp = Object.prototype.hasOwnProperty; 7 var __commonJS = (cb, mod) => function __require() { 8 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 9 }; 10 var __export = (target, all) => { 11 for (var name in all) 12 __defProp(target, name, { get: all[name], enumerable: true }); 13 }; 14 var __copyProps = (to, from, except, desc) => { 15 if (from && typeof from === "object" || typeof from === "function") { 16 for (let key of __getOwnPropNames(from)) 17 if (!__hasOwnProp.call(to, key) && key !== except) 18 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 19 } 20 return to; 21 }; 22 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 23 // If the importer is in node compatibility mode or this is not an ESM 24 // file that has been converted to a CommonJS file using a Babel- 25 // compatible transform (i.e. "__esModule" has not been set), then set 26 // "default" to the CommonJS "module.exports" for node compatibility. 27 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 28 mod 29 )); 30 31 // package-external:@wordpress/element 32 var require_element = __commonJS({ 33 "package-external:@wordpress/element"(exports, module) { 34 module.exports = window.wp.element; 35 } 36 }); 37 38 // package-external:@wordpress/data 39 var require_data = __commonJS({ 40 "package-external:@wordpress/data"(exports, module) { 41 module.exports = window.wp.data; 42 } 43 }); 44 45 // package-external:@wordpress/i18n 46 var require_i18n = __commonJS({ 47 "package-external:@wordpress/i18n"(exports, module) { 48 module.exports = window.wp.i18n; 49 } 50 }); 51 52 // package-external:@wordpress/components 53 var require_components = __commonJS({ 54 "package-external:@wordpress/components"(exports, module) { 55 module.exports = window.wp.components; 56 } 57 }); 58 59 // vendor-external:react/jsx-runtime 60 var require_jsx_runtime = __commonJS({ 61 "vendor-external:react/jsx-runtime"(exports, module) { 62 module.exports = window.ReactJSXRuntime; 63 } 64 }); 65 66 // vendor-external:react 67 var require_react = __commonJS({ 68 "vendor-external:react"(exports, module) { 69 module.exports = window.React; 70 } 71 }); 72 73 // package-external:@wordpress/primitives 74 var require_primitives = __commonJS({ 75 "package-external:@wordpress/primitives"(exports, module) { 76 module.exports = window.wp.primitives; 77 } 78 }); 79 80 // package-external:@wordpress/theme 81 var require_theme = __commonJS({ 82 "package-external:@wordpress/theme"(exports, module) { 83 module.exports = window.wp.theme; 84 } 85 }); 86 87 // package-external:@wordpress/private-apis 88 var require_private_apis = __commonJS({ 89 "package-external:@wordpress/private-apis"(exports, module) { 90 module.exports = window.wp.privateApis; 91 } 92 }); 93 94 // package-external:@wordpress/compose 95 var require_compose = __commonJS({ 96 "package-external:@wordpress/compose"(exports, module) { 97 module.exports = window.wp.compose; 98 } 99 }); 100 101 // package-external:@wordpress/core-data 102 var require_core_data = __commonJS({ 103 "package-external:@wordpress/core-data"(exports, module) { 104 module.exports = window.wp.coreData; 105 } 106 }); 107 108 // package-external:@wordpress/notices 109 var require_notices = __commonJS({ 110 "package-external:@wordpress/notices"(exports, module) { 111 module.exports = window.wp.notices; 112 } 113 }); 114 115 // package-external:@wordpress/html-entities 116 var require_html_entities = __commonJS({ 117 "package-external:@wordpress/html-entities"(exports, module) { 118 module.exports = window.wp.htmlEntities; 119 } 120 }); 121 122 // package-external:@wordpress/keycodes 123 var require_keycodes = __commonJS({ 124 "package-external:@wordpress/keycodes"(exports, module) { 125 module.exports = window.wp.keycodes; 126 } 127 }); 128 129 // package-external:@wordpress/commands 130 var require_commands = __commonJS({ 131 "package-external:@wordpress/commands"(exports, module) { 132 module.exports = window.wp.commands; 133 } 134 }); 135 136 // package-external:@wordpress/url 137 var require_url = __commonJS({ 138 "package-external:@wordpress/url"(exports, module) { 139 module.exports = window.wp.url; 140 } 141 }); 142 143 // package-external:@wordpress/editor 144 var require_editor = __commonJS({ 145 "package-external:@wordpress/editor"(exports, module) { 146 module.exports = window.wp.editor; 147 } 148 }); 149 150 // package-external:@wordpress/keyboard-shortcuts 151 var require_keyboard_shortcuts = __commonJS({ 152 "package-external:@wordpress/keyboard-shortcuts"(exports, module) { 153 module.exports = window.wp.keyboardShortcuts; 154 } 155 }); 156 157 // packages/boot/build-module/components/app/index.mjs 158 var import_element16 = __toESM(require_element(), 1); 159 var import_data11 = __toESM(require_data(), 1); 160 161 // packages/boot/build-module/components/app/router.mjs 162 var import_i18n11 = __toESM(require_i18n(), 1); 163 var import_element15 = __toESM(require_element(), 1); 164 165 // node_modules/clsx/dist/clsx.mjs 166 function r(e) { 167 var t, f, n = ""; 168 if ("string" == typeof e || "number" == typeof e) n += e; 169 else if ("object" == typeof e) if (Array.isArray(e)) { 170 var o = e.length; 171 for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); 172 } else for (f in e) e[f] && (n && (n += " "), n += f); 173 return n; 174 } 175 function clsx() { 176 for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); 177 return n; 178 } 179 var clsx_default = clsx; 180 181 // packages/admin-ui/build-module/navigable-region/index.mjs 182 var import_element = __toESM(require_element(), 1); 183 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); 184 var NavigableRegion = (0, import_element.forwardRef)( 185 ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { 186 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( 187 Tag, 188 { 189 ref, 190 className: clsx_default("admin-ui-navigable-region", className), 191 "aria-label": ariaLabel, 192 role: "region", 193 tabIndex: "-1", 194 ...props, 195 children 196 } 197 ); 198 } 199 ); 200 NavigableRegion.displayName = "NavigableRegion"; 201 var navigable_region_default = NavigableRegion; 202 203 // node_modules/@base-ui/utils/esm/useRefWithInit.js 204 var React = __toESM(require_react(), 1); 205 var UNINITIALIZED = {}; 206 function useRefWithInit(init2, initArg) { 207 const ref = React.useRef(UNINITIALIZED); 208 if (ref.current === UNINITIALIZED) { 209 ref.current = init2(initArg); 210 } 211 return ref; 212 } 213 214 // node_modules/@base-ui/react/esm/utils/useRenderElement.js 215 var React4 = __toESM(require_react(), 1); 216 217 // node_modules/@base-ui/utils/esm/useMergedRefs.js 218 function useMergedRefs(a, b, c, d) { 219 const forkRef = useRefWithInit(createForkRef).current; 220 if (didChange(forkRef, a, b, c, d)) { 221 update(forkRef, [a, b, c, d]); 222 } 223 return forkRef.callback; 224 } 225 function useMergedRefsN(refs) { 226 const forkRef = useRefWithInit(createForkRef).current; 227 if (didChangeN(forkRef, refs)) { 228 update(forkRef, refs); 229 } 230 return forkRef.callback; 231 } 232 function createForkRef() { 233 return { 234 callback: null, 235 cleanup: null, 236 refs: [] 237 }; 238 } 239 function didChange(forkRef, a, b, c, d) { 240 return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d; 241 } 242 function didChangeN(forkRef, newRefs) { 243 return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]); 244 } 245 function update(forkRef, refs) { 246 forkRef.refs = refs; 247 if (refs.every((ref) => ref == null)) { 248 forkRef.callback = null; 249 return; 250 } 251 forkRef.callback = (instance) => { 252 if (forkRef.cleanup) { 253 forkRef.cleanup(); 254 forkRef.cleanup = null; 255 } 256 if (instance != null) { 257 const cleanupCallbacks = Array(refs.length).fill(null); 258 for (let i = 0; i < refs.length; i += 1) { 259 const ref = refs[i]; 260 if (ref == null) { 261 continue; 262 } 263 switch (typeof ref) { 264 case "function": { 265 const refCleanup = ref(instance); 266 if (typeof refCleanup === "function") { 267 cleanupCallbacks[i] = refCleanup; 268 } 269 break; 270 } 271 case "object": { 272 ref.current = instance; 273 break; 274 } 275 default: 276 } 277 } 278 forkRef.cleanup = () => { 279 for (let i = 0; i < refs.length; i += 1) { 280 const ref = refs[i]; 281 if (ref == null) { 282 continue; 283 } 284 switch (typeof ref) { 285 case "function": { 286 const cleanupCallback = cleanupCallbacks[i]; 287 if (typeof cleanupCallback === "function") { 288 cleanupCallback(); 289 } else { 290 ref(null); 291 } 292 break; 293 } 294 case "object": { 295 ref.current = null; 296 break; 297 } 298 default: 299 } 300 } 301 }; 302 } 303 }; 304 } 305 306 // node_modules/@base-ui/utils/esm/getReactElementRef.js 307 var React3 = __toESM(require_react(), 1); 308 309 // node_modules/@base-ui/utils/esm/reactVersion.js 310 var React2 = __toESM(require_react(), 1); 311 var majorVersion = parseInt(React2.version, 10); 312 function isReactVersionAtLeast(reactVersionToCheck) { 313 return majorVersion >= reactVersionToCheck; 314 } 315 316 // node_modules/@base-ui/utils/esm/getReactElementRef.js 317 function getReactElementRef(element) { 318 if (!/* @__PURE__ */ React3.isValidElement(element)) { 319 return null; 320 } 321 const reactElement = element; 322 const propsWithRef = reactElement.props; 323 return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; 324 } 325 326 // node_modules/@base-ui/utils/esm/mergeObjects.js 327 function mergeObjects(a, b) { 328 if (a && !b) { 329 return a; 330 } 331 if (!a && b) { 332 return b; 333 } 334 if (a || b) { 335 return { 336 ...a, 337 ...b 338 }; 339 } 340 return void 0; 341 } 342 343 // node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js 344 function getStateAttributesProps(state, customMapping) { 345 const props = {}; 346 for (const key in state) { 347 const value = state[key]; 348 if (customMapping?.hasOwnProperty(key)) { 349 const customProps = customMapping[key](value); 350 if (customProps != null) { 351 Object.assign(props, customProps); 352 } 353 continue; 354 } 355 if (value === true) { 356 props[`data-$key.toLowerCase()}`] = ""; 357 } else if (value) { 358 props[`data-$key.toLowerCase()}`] = value.toString(); 359 } 360 } 361 return props; 362 } 363 364 // node_modules/@base-ui/react/esm/utils/resolveClassName.js 365 function resolveClassName(className, state) { 366 return typeof className === "function" ? className(state) : className; 367 } 368 369 // node_modules/@base-ui/react/esm/utils/resolveStyle.js 370 function resolveStyle(style, state) { 371 return typeof style === "function" ? style(state) : style; 372 } 373 374 // node_modules/@base-ui/react/esm/merge-props/mergeProps.js 375 var EMPTY_PROPS = {}; 376 function mergeProps(a, b, c, d, e) { 377 let merged = { 378 ...resolvePropsGetter(a, EMPTY_PROPS) 379 }; 380 if (b) { 381 merged = mergeOne(merged, b); 382 } 383 if (c) { 384 merged = mergeOne(merged, c); 385 } 386 if (d) { 387 merged = mergeOne(merged, d); 388 } 389 if (e) { 390 merged = mergeOne(merged, e); 391 } 392 return merged; 393 } 394 function mergePropsN(props) { 395 if (props.length === 0) { 396 return EMPTY_PROPS; 397 } 398 if (props.length === 1) { 399 return resolvePropsGetter(props[0], EMPTY_PROPS); 400 } 401 let merged = { 402 ...resolvePropsGetter(props[0], EMPTY_PROPS) 403 }; 404 for (let i = 1; i < props.length; i += 1) { 405 merged = mergeOne(merged, props[i]); 406 } 407 return merged; 408 } 409 function mergeOne(merged, inputProps) { 410 if (isPropsGetter(inputProps)) { 411 return inputProps(merged); 412 } 413 return mutablyMergeInto(merged, inputProps); 414 } 415 function mutablyMergeInto(mergedProps, externalProps) { 416 if (!externalProps) { 417 return mergedProps; 418 } 419 for (const propName in externalProps) { 420 const externalPropValue = externalProps[propName]; 421 switch (propName) { 422 case "style": { 423 mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); 424 break; 425 } 426 case "className": { 427 mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); 428 break; 429 } 430 default: { 431 if (isEventHandler(propName, externalPropValue)) { 432 mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); 433 } else { 434 mergedProps[propName] = externalPropValue; 435 } 436 } 437 } 438 } 439 return mergedProps; 440 } 441 function isEventHandler(key, value) { 442 const code0 = key.charCodeAt(0); 443 const code1 = key.charCodeAt(1); 444 const code2 = key.charCodeAt(2); 445 return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); 446 } 447 function isPropsGetter(inputProps) { 448 return typeof inputProps === "function"; 449 } 450 function resolvePropsGetter(inputProps, previousProps) { 451 if (isPropsGetter(inputProps)) { 452 return inputProps(previousProps); 453 } 454 return inputProps ?? EMPTY_PROPS; 455 } 456 function mergeEventHandlers(ourHandler, theirHandler) { 457 if (!theirHandler) { 458 return ourHandler; 459 } 460 if (!ourHandler) { 461 return theirHandler; 462 } 463 return (event) => { 464 if (isSyntheticEvent(event)) { 465 const baseUIEvent = event; 466 makeEventPreventable(baseUIEvent); 467 const result2 = theirHandler(baseUIEvent); 468 if (!baseUIEvent.baseUIHandlerPrevented) { 469 ourHandler?.(baseUIEvent); 470 } 471 return result2; 472 } 473 const result = theirHandler(event); 474 ourHandler?.(event); 475 return result; 476 }; 477 } 478 function makeEventPreventable(event) { 479 event.preventBaseUIHandler = () => { 480 event.baseUIHandlerPrevented = true; 481 }; 482 return event; 483 } 484 function mergeClassNames(ourClassName, theirClassName) { 485 if (theirClassName) { 486 if (ourClassName) { 487 return theirClassName + " " + ourClassName; 488 } 489 return theirClassName; 490 } 491 return ourClassName; 492 } 493 function isSyntheticEvent(event) { 494 return event != null && typeof event === "object" && "nativeEvent" in event; 495 } 496 497 // node_modules/@base-ui/utils/esm/empty.js 498 var EMPTY_ARRAY = Object.freeze([]); 499 var EMPTY_OBJECT = Object.freeze({}); 500 501 // node_modules/@base-ui/react/esm/utils/useRenderElement.js 502 var import_react = __toESM(require_react(), 1); 503 function useRenderElement(element, componentProps, params = {}) { 504 const renderProp = componentProps.render; 505 const outProps = useRenderElementProps(componentProps, params); 506 if (params.enabled === false) { 507 return null; 508 } 509 const state = params.state ?? EMPTY_OBJECT; 510 return evaluateRenderProp(element, renderProp, outProps, state); 511 } 512 function useRenderElementProps(componentProps, params = {}) { 513 const { 514 className: classNameProp, 515 style: styleProp, 516 render: renderProp 517 } = componentProps; 518 const { 519 state = EMPTY_OBJECT, 520 ref, 521 props, 522 stateAttributesMapping, 523 enabled = true 524 } = params; 525 const className = enabled ? resolveClassName(classNameProp, state) : void 0; 526 const style = enabled ? resolveStyle(styleProp, state) : void 0; 527 const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT; 528 const outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT; 529 if (typeof document !== "undefined") { 530 if (!enabled) { 531 useMergedRefs(null, null); 532 } else if (Array.isArray(ref)) { 533 outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); 534 } else { 535 outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); 536 } 537 } 538 if (!enabled) { 539 return EMPTY_OBJECT; 540 } 541 if (className !== void 0) { 542 outProps.className = mergeClassNames(outProps.className, className); 543 } 544 if (style !== void 0) { 545 outProps.style = mergeObjects(outProps.style, style); 546 } 547 return outProps; 548 } 549 function evaluateRenderProp(element, render, props, state) { 550 if (render) { 551 if (typeof render === "function") { 552 return render(props, state); 553 } 554 const mergedProps = mergeProps(props, render.props); 555 mergedProps.ref = props.ref; 556 return /* @__PURE__ */ React4.cloneElement(render, mergedProps); 557 } 558 if (element) { 559 if (typeof element === "string") { 560 return renderTag(element, props); 561 } 562 } 563 throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage(8)); 564 } 565 function renderTag(Tag, props) { 566 if (Tag === "button") { 567 return /* @__PURE__ */ (0, import_react.createElement)("button", { 568 type: "button", 569 ...props, 570 key: props.key 571 }); 572 } 573 if (Tag === "img") { 574 return /* @__PURE__ */ (0, import_react.createElement)("img", { 575 alt: "", 576 ...props, 577 key: props.key 578 }); 579 } 580 return /* @__PURE__ */ React4.createElement(Tag, props); 581 } 582 583 // node_modules/@base-ui/react/esm/use-render/useRender.js 584 function useRender(params) { 585 return useRenderElement(params.defaultTagName ?? "div", params, params); 586 } 587 588 // packages/icons/build-module/icon/index.mjs 589 var import_element2 = __toESM(require_element(), 1); 590 var icon_default = (0, import_element2.forwardRef)( 591 ({ icon, size = 24, ...props }, ref) => { 592 return (0, import_element2.cloneElement)(icon, { 593 width: size, 594 height: size, 595 ...props, 596 ref 597 }); 598 } 599 ); 600 601 // packages/icons/build-module/library/arrow-up-left.mjs 602 var import_primitives = __toESM(require_primitives(), 1); 603 var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); 604 var arrow_up_left_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives.Path, { d: "M14 6H6v8h1.5V8.5L17 18l1-1-9.5-9.5H14V6Z" }) }); 605 606 // packages/icons/build-module/library/check.mjs 607 var import_primitives2 = __toESM(require_primitives(), 1); 608 var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); 609 var check_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.Path, { d: "M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z" }) }); 610 611 // packages/icons/build-module/library/chevron-down-small.mjs 612 var import_primitives3 = __toESM(require_primitives(), 1); 613 var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); 614 var chevron_down_small_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.Path, { d: "m15.99 10.889-3.988 3.418-3.988-3.418.976-1.14 3.012 2.582 3.012-2.581.976 1.139Z" }) }); 615 616 // packages/icons/build-module/library/chevron-left-small.mjs 617 var import_primitives4 = __toESM(require_primitives(), 1); 618 var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); 619 var chevron_left_small_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.Path, { d: "m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z" }) }); 620 621 // packages/icons/build-module/library/chevron-left.mjs 622 var import_primitives5 = __toESM(require_primitives(), 1); 623 var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); 624 var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.Path, { d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" }) }); 625 626 // packages/icons/build-module/library/chevron-right-small.mjs 627 var import_primitives6 = __toESM(require_primitives(), 1); 628 var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); 629 var chevron_right_small_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives6.Path, { d: "M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z" }) }); 630 631 // packages/icons/build-module/library/chevron-right.mjs 632 var import_primitives7 = __toESM(require_primitives(), 1); 633 var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); 634 var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives7.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) }); 635 636 // packages/icons/build-module/library/menu.mjs 637 var import_primitives8 = __toESM(require_primitives(), 1); 638 var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); 639 var menu_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives8.Path, { d: "M5 5v1.5h14V5H5zm0 7.8h14v-1.5H5v1.5zM5 19h14v-1.5H5V19z" }) }); 640 641 // packages/icons/build-module/library/search.mjs 642 var import_primitives9 = __toESM(require_primitives(), 1); 643 var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); 644 var search_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives9.Path, { d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z" }) }); 645 646 // packages/icons/build-module/library/wordpress.mjs 647 var import_primitives10 = __toESM(require_primitives(), 1); 648 var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); 649 var wordpress_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "-2 -2 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives10.Path, { d: "M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z" }) }); 650 651 // packages/ui/build-module/stack/stack.mjs 652 var import_element3 = __toESM(require_element(), 1); 653 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='71d20935c2']")) { 654 const style = document.createElement("style"); 655 style.setAttribute("data-wp-hash", "71d20935c2"); 656 style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")); 657 document.head.appendChild(style); 658 } 659 var style_default = { "stack": "_19ce0419607e1896__stack" }; 660 var gapTokens = { 661 xs: "var(--wpds-dimension-gap-xs, 4px)", 662 sm: "var(--wpds-dimension-gap-sm, 8px)", 663 md: "var(--wpds-dimension-gap-md, 12px)", 664 lg: "var(--wpds-dimension-gap-lg, 16px)", 665 xl: "var(--wpds-dimension-gap-xl, 24px)", 666 "2xl": "var(--wpds-dimension-gap-2xl, 32px)", 667 "3xl": "var(--wpds-dimension-gap-3xl, 40px)" 668 }; 669 var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { 670 const style = { 671 gap: gap && gapTokens[gap], 672 alignItems: align, 673 justifyContent: justify, 674 flexDirection: direction, 675 flexWrap: wrap 676 }; 677 const element = useRender({ 678 render, 679 ref, 680 props: mergeProps(props, { style, className: style_default.stack }) 681 }); 682 return element; 683 }); 684 685 // packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs 686 var import_components = __toESM(require_components(), 1); 687 var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); 688 689 // packages/admin-ui/build-module/page/header.mjs 690 var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); 691 function Header({ 692 headingLevel = 1, 693 breadcrumbs, 694 badges, 695 title, 696 subTitle, 697 actions, 698 showSidebarToggle = true 699 }) { 700 const HeadingTag = `h$headingLevel}`; 701 return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Stack, { direction: "column", className: "admin-ui-page__header", children: [ 702 /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ 703 /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ 704 showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( 705 SidebarToggleSlot, 706 { 707 bubblesVirtually: true, 708 className: "admin-ui-page__sidebar-toggle-slot" 709 } 710 ), 711 title && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), 712 breadcrumbs, 713 badges 714 ] }), 715 /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( 716 Stack, 717 { 718 direction: "row", 719 gap: "sm", 720 style: { width: "auto", flexShrink: 0 }, 721 className: "admin-ui-page__header-actions", 722 align: "center", 723 children: actions 724 } 725 ) 726 ] }), 727 subTitle && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) 728 ] }); 729 } 730 731 // packages/admin-ui/build-module/page/index.mjs 732 var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); 733 function Page({ 734 headingLevel, 735 breadcrumbs, 736 badges, 737 title, 738 subTitle, 739 children, 740 className, 741 actions, 742 hasPadding = false, 743 showSidebarToggle = true 744 }) { 745 const classes = clsx_default("admin-ui-page", className); 746 return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ 747 (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)( 748 Header, 749 { 750 headingLevel, 751 breadcrumbs, 752 badges, 753 title, 754 subTitle, 755 actions, 756 showSidebarToggle 757 } 758 ), 759 hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children 760 ] }); 761 } 762 Page.SidebarToggleFill = SidebarToggleFill; 763 var page_default = Page; 764 765 // packages/boot/build-module/components/app/router.mjs 766 var import_data10 = __toESM(require_data(), 1); 767 var import_core_data6 = __toESM(require_core_data(), 1); 768 import { 769 privateApis as routePrivateApis6 770 } from "@wordpress/route"; 771 772 // packages/boot/build-module/components/root/index.mjs 773 var import_notices = __toESM(require_notices(), 1); 774 var import_compose4 = __toESM(require_compose(), 1); 775 var import_components14 = __toESM(require_components(), 1); 776 import { privateApis as routePrivateApis5 } from "@wordpress/route"; 777 var import_element14 = __toESM(require_element(), 1); 778 var import_i18n10 = __toESM(require_i18n(), 1); 779 780 // packages/boot/build-module/components/site-hub/index.mjs 781 var import_data3 = __toESM(require_data(), 1); 782 var import_components3 = __toESM(require_components(), 1); 783 var import_i18n2 = __toESM(require_i18n(), 1); 784 var import_core_data2 = __toESM(require_core_data(), 1); 785 var import_html_entities = __toESM(require_html_entities(), 1); 786 var import_keycodes = __toESM(require_keycodes(), 1); 787 var import_commands = __toESM(require_commands(), 1); 788 var import_url = __toESM(require_url(), 1); 789 790 // packages/boot/build-module/components/site-icon-link/index.mjs 791 var import_components2 = __toESM(require_components(), 1); 792 import { Link, privateApis as routePrivateApis } from "@wordpress/route"; 793 794 // packages/boot/build-module/lock-unlock.mjs 795 var import_private_apis = __toESM(require_private_apis(), 1); 796 var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 797 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 798 "@wordpress/boot" 799 ); 800 801 // packages/boot/build-module/components/site-icon/index.mjs 802 var import_data = __toESM(require_data(), 1); 803 var import_i18n = __toESM(require_i18n(), 1); 804 var import_core_data = __toESM(require_core_data(), 1); 805 var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); 806 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='1a8e849690']")) { 807 const style = document.createElement("style"); 808 style.setAttribute("data-wp-hash", "1a8e849690"); 809 style.appendChild(document.createTextNode(".boot-site-icon{display:flex}.boot-site-icon__icon{fill:var(--wpds-color-fg-content-neutral,#1e1e1e);height:32px;width:32px}.boot-site-icon__image{aspect-ratio:1/1;border-radius:var(--wpds-border-radius-md,4px);height:32px;object-fit:cover;width:32px}")); 810 document.head.appendChild(style); 811 } 812 function SiteIcon({ className }) { 813 const { isRequestingSite, siteIconUrl } = (0, import_data.useSelect)((select) => { 814 const { getEntityRecord } = select(import_core_data.store); 815 const siteData = getEntityRecord( 816 "root", 817 "__unstableBase", 818 void 0 819 ); 820 return { 821 isRequestingSite: !siteData, 822 siteIconUrl: siteData?.site_icon_url 823 }; 824 }, []); 825 let icon = null; 826 if (isRequestingSite && !siteIconUrl) { 827 icon = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "boot-site-icon__image" }); 828 } else { 829 icon = siteIconUrl ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( 830 "img", 831 { 832 className: "boot-site-icon__image", 833 alt: (0, import_i18n.__)("Site Icon"), 834 src: siteIconUrl 835 } 836 ) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( 837 icon_default, 838 { 839 className: "boot-site-icon__icon", 840 icon: wordpress_default, 841 size: 48 842 } 843 ); 844 } 845 return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: clsx_default(className, "boot-site-icon"), children: icon }); 846 } 847 var site_icon_default = SiteIcon; 848 849 // packages/boot/build-module/components/site-icon-link/index.mjs 850 var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); 851 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='3de37b6316']")) { 852 const style = document.createElement("style"); 853 style.setAttribute("data-wp-hash", "3de37b6316"); 854 style.appendChild(document.createTextNode(".boot-site-icon-link{align-items:center;background:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);display:inline-flex;height:64px;justify-content:center;text-decoration:none;width:64px}@media not (prefers-reduced-motion){.boot-site-icon-link{transition:outline .1s ease-out}}.boot-site-icon-link:focus:not(:active){outline:var(--wpds-border-width-focus,2px) solid var(--wpds-color-stroke-focus-brand,#0073aa);outline-offset:calc(var(--wpds-border-width-focus, 2px)*-1)}")); 855 document.head.appendChild(style); 856 } 857 var { useCanGoBack, useRouter } = unlock(routePrivateApis); 858 function SiteIconLink({ 859 to, 860 isBackButton, 861 ...props 862 }) { 863 const router = useRouter(); 864 const canGoBack = useCanGoBack(); 865 return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_components2.Tooltip, { text: props["aria-label"], placement: "right", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( 866 Link, 867 { 868 to, 869 "aria-label": props["aria-label"], 870 className: "boot-site-icon-link", 871 onClick: (event) => { 872 if (canGoBack && isBackButton) { 873 event.preventDefault(); 874 router.history.back(); 875 } 876 }, 877 children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(site_icon_default, {}) 878 } 879 ) }); 880 } 881 var site_icon_link_default = SiteIconLink; 882 883 // packages/boot/build-module/store/index.mjs 884 var import_data2 = __toESM(require_data(), 1); 885 886 // packages/boot/build-module/store/reducer.mjs 887 var initialState = { 888 menuItems: {}, 889 routes: [], 890 dashboardLink: void 0 891 }; 892 function reducer(state = initialState, action) { 893 switch (action.type) { 894 case "REGISTER_MENU_ITEM": 895 return { 896 ...state, 897 menuItems: { 898 ...state.menuItems, 899 [action.id]: action.menuItem 900 } 901 }; 902 case "UPDATE_MENU_ITEM": 903 return { 904 ...state, 905 menuItems: { 906 ...state.menuItems, 907 [action.id]: { 908 ...state.menuItems[action.id], 909 ...action.updates 910 } 911 } 912 }; 913 case "REGISTER_ROUTE": 914 return { 915 ...state, 916 routes: [...state.routes, action.route] 917 }; 918 case "SET_DASHBOARD_LINK": 919 return { 920 ...state, 921 dashboardLink: action.dashboardLink 922 }; 923 } 924 return state; 925 } 926 927 // packages/boot/build-module/store/actions.mjs 928 var actions_exports = {}; 929 __export(actions_exports, { 930 registerMenuItem: () => registerMenuItem, 931 registerRoute: () => registerRoute, 932 setDashboardLink: () => setDashboardLink, 933 updateMenuItem: () => updateMenuItem 934 }); 935 function registerMenuItem(id, menuItem) { 936 return { 937 type: "REGISTER_MENU_ITEM", 938 id, 939 menuItem 940 }; 941 } 942 function updateMenuItem(id, updates) { 943 return { 944 type: "UPDATE_MENU_ITEM", 945 id, 946 updates 947 }; 948 } 949 function registerRoute(route) { 950 return { 951 type: "REGISTER_ROUTE", 952 route 953 }; 954 } 955 function setDashboardLink(dashboardLink) { 956 return { 957 type: "SET_DASHBOARD_LINK", 958 dashboardLink 959 }; 960 } 961 962 // packages/boot/build-module/store/selectors.mjs 963 var selectors_exports = {}; 964 __export(selectors_exports, { 965 getDashboardLink: () => getDashboardLink, 966 getMenuItems: () => getMenuItems, 967 getRoutes: () => getRoutes 968 }); 969 function getMenuItems(state) { 970 return Object.values(state.menuItems); 971 } 972 function getRoutes(state) { 973 return state.routes; 974 } 975 function getDashboardLink(state) { 976 return state.dashboardLink; 977 } 978 979 // packages/boot/build-module/store/index.mjs 980 var STORE_NAME = "wordpress/boot"; 981 var store = (0, import_data2.createReduxStore)(STORE_NAME, { 982 reducer, 983 actions: actions_exports, 984 selectors: selectors_exports 985 }); 986 (0, import_data2.register)(store); 987 988 // packages/boot/build-module/components/site-hub/index.mjs 989 var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); 990 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='78184fe2c5']")) { 991 const style = document.createElement("style"); 992 style.setAttribute("data-wp-hash", "78184fe2c5"); 993 style.appendChild(document.createTextNode(".boot-site-hub{align-items:center;background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);display:grid;flex-shrink:0;grid-template-columns:60px 1fr auto;padding-right:16px;position:sticky;top:0;z-index:1}.boot-site-hub__actions{flex-shrink:0}.boot-site-hub__title{align-items:center;display:flex;text-decoration:none}.boot-site-hub__title .components-external-link__contents{margin-inline-start:4px;max-width:140px;overflow:hidden;text-decoration:none}.boot-site-hub__title .components-external-link__icon{opacity:0;transition:opacity .1s ease-out}.boot-site-hub__title:hover .components-external-link__icon{opacity:1}@media not (prefers-reduced-motion){.boot-site-hub__title{transition:outline .1s ease-out}}.boot-site-hub__title:focus:not(:active){outline:var(--wpds-border-width-focus,2px) solid var(--wpds-color-stroke-focus-brand,#0073aa);outline-offset:calc(var(--wpds-border-width-focus, 2px)*-1)}.boot-site-hub__title-text{color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-size:13px;font-weight:499}.boot-site-hub__title-text,.boot-site-hub__url{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.boot-site-hub__url{color:var(--wpds-color-fg-content-neutral-weak,#757575);font-size:12px}")); 994 document.head.appendChild(style); 995 } 996 function SiteHub() { 997 const { dashboardLink, homeUrl, siteTitle } = (0, import_data3.useSelect)((select) => { 998 const { getEntityRecord } = select(import_core_data2.store); 999 const _base = getEntityRecord( 1000 "root", 1001 "__unstableBase" 1002 ); 1003 return { 1004 dashboardLink: select(store).getDashboardLink(), 1005 homeUrl: _base?.home, 1006 siteTitle: !_base?.name && !!_base?.url ? (0, import_url.filterURLForDisplay)(_base?.url) : _base?.name 1007 }; 1008 }, []); 1009 const { open: openCommandCenter } = (0, import_data3.useDispatch)(import_commands.store); 1010 return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "boot-site-hub", children: [ 1011 /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( 1012 site_icon_link_default, 1013 { 1014 to: dashboardLink || "/", 1015 "aria-label": (0, import_i18n2.__)("Go to the Dashboard") 1016 } 1017 ), 1018 /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)( 1019 import_components3.ExternalLink, 1020 { 1021 href: homeUrl ?? "/", 1022 className: "boot-site-hub__title", 1023 children: [ 1024 /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "boot-site-hub__title-text", children: siteTitle && (0, import_html_entities.decodeEntities)(siteTitle) }), 1025 /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "boot-site-hub__url", children: (0, import_url.filterURLForDisplay)(homeUrl ?? "") }) 1026 ] 1027 } 1028 ), 1029 /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_components3.__experimentalHStack, { className: "boot-site-hub__actions", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( 1030 import_components3.Button, 1031 { 1032 variant: "tertiary", 1033 icon: search_default, 1034 onClick: () => openCommandCenter(), 1035 size: "compact", 1036 label: (0, import_i18n2.__)("Open command palette"), 1037 shortcut: import_keycodes.displayShortcut.primary("k") 1038 } 1039 ) }) 1040 ] }); 1041 } 1042 var site_hub_default = SiteHub; 1043 1044 // packages/boot/build-module/components/navigation/index.mjs 1045 var import_element7 = __toESM(require_element(), 1); 1046 var import_data6 = __toESM(require_data(), 1); 1047 1048 // packages/boot/build-module/components/navigation/navigation-item/index.mjs 1049 var import_components6 = __toESM(require_components(), 1); 1050 1051 // packages/boot/build-module/components/navigation/router-link-item.mjs 1052 var import_element4 = __toESM(require_element(), 1); 1053 var import_components4 = __toESM(require_components(), 1); 1054 import { privateApis as routePrivateApis2 } from "@wordpress/route"; 1055 var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); 1056 var { createLink } = unlock(routePrivateApis2); 1057 function AnchorOnlyItem(props, forwardedRef) { 1058 return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_components4.__experimentalItem, { as: "a", ref: forwardedRef, ...props }); 1059 } 1060 var RouterLinkItem = createLink((0, import_element4.forwardRef)(AnchorOnlyItem)); 1061 var router_link_item_default = RouterLinkItem; 1062 1063 // packages/boot/build-module/components/navigation/items.mjs 1064 var import_element5 = __toESM(require_element(), 1); 1065 var import_components5 = __toESM(require_components(), 1); 1066 var import_primitives11 = __toESM(require_primitives(), 1); 1067 var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); 1068 function isSvg(element) { 1069 return (0, import_element5.isValidElement)(element) && (element.type === import_primitives11.SVG || element.type === "svg"); 1070 } 1071 function wrapIcon(icon, shouldShowPlaceholder = true) { 1072 if (isSvg(icon)) { 1073 return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_components5.Icon, { icon }); 1074 } 1075 if (typeof icon === "string" && icon.startsWith("dashicons-")) { 1076 const iconKey = icon.replace( 1077 /^dashicons-/, 1078 "" 1079 ); 1080 return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)( 1081 import_components5.Dashicon, 1082 { 1083 style: { padding: "2px" }, 1084 icon: iconKey, 1085 "aria-hidden": "true" 1086 } 1087 ); 1088 } 1089 if (typeof icon === "string" && icon.startsWith("data:")) { 1090 return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)( 1091 "img", 1092 { 1093 src: icon, 1094 alt: "", 1095 "aria-hidden": "true", 1096 style: { 1097 width: "20px", 1098 height: "20px", 1099 display: "block", 1100 padding: "2px" 1101 } 1102 } 1103 ); 1104 } 1105 if (icon) { 1106 return icon; 1107 } 1108 if (shouldShowPlaceholder) { 1109 return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)( 1110 "div", 1111 { 1112 style: { width: "24px", height: "24px" }, 1113 "aria-hidden": "true" 1114 } 1115 ); 1116 } 1117 return null; 1118 } 1119 1120 // packages/boot/build-module/components/navigation/navigation-item/index.mjs 1121 var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); 1122 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='ead8c8ad15']")) { 1123 const style = document.createElement("style"); 1124 style.setAttribute("data-wp-hash", "ead8c8ad15"); 1125 style.appendChild(document.createTextNode('.boot-navigation-item.components-item{align-items:center;border:none;color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);display:flex;font-family:-apple-system,"system-ui",Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:400;line-height:20px;margin-block-end:4px;margin-inline:12px;min-height:32px;padding-block:0;padding-inline:4px;width:calc(100% - 24px)}.boot-dropdown-item__children .boot-navigation-item.components-item{min-height:24px}.boot-navigation-item.components-item{border-radius:var(--wpds-border-radius-sm,2px)}.boot-navigation-item.components-item.active,.boot-navigation-item.components-item:focus,.boot-navigation-item.components-item:hover,.boot-navigation-item.components-item[aria-current=true]{color:var(--wpds-color-fg-interactive-brand-active,#0073aa)}.boot-navigation-item.components-item.active{font-weight:499}.boot-navigation-item.components-item svg:last-child{padding:4px}.boot-navigation-item.components-item[aria-current=true]{color:var(--wpds-color-fg-interactive-brand-active,#0073aa);font-weight:499}.boot-navigation-item.components-item:focus-visible{transform:translateZ(0)}.boot-navigation-item.components-item.with-suffix{padding-right:16px}')); 1126 document.head.appendChild(style); 1127 } 1128 function NavigationItem({ 1129 className, 1130 icon, 1131 shouldShowPlaceholder = true, 1132 children, 1133 to 1134 }) { 1135 const isExternal = !String( 1136 new URL(to, window.location.origin) 1137 ).startsWith(window.location.origin); 1138 const content = /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_components6.__experimentalHStack, { justify: "flex-start", spacing: 2, style: { flexGrow: "1" }, children: [ 1139 wrapIcon(icon, shouldShowPlaceholder), 1140 /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_components6.FlexBlock, { children }) 1141 ] }); 1142 if (isExternal) { 1143 return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)( 1144 import_components6.__experimentalItem, 1145 { 1146 as: "a", 1147 href: to, 1148 className: clsx_default("boot-navigation-item", className), 1149 children: content 1150 } 1151 ); 1152 } 1153 return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)( 1154 router_link_item_default, 1155 { 1156 to, 1157 className: clsx_default("boot-navigation-item", className), 1158 children: content 1159 } 1160 ); 1161 } 1162 1163 // packages/boot/build-module/components/navigation/drilldown-item/index.mjs 1164 var import_components7 = __toESM(require_components(), 1); 1165 var import_i18n3 = __toESM(require_i18n(), 1); 1166 var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); 1167 function DrilldownItem({ 1168 className, 1169 id, 1170 icon, 1171 shouldShowPlaceholder = true, 1172 children, 1173 onNavigate 1174 }) { 1175 const handleClick = (e) => { 1176 e.preventDefault(); 1177 onNavigate({ id, direction: "forward" }); 1178 }; 1179 return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( 1180 import_components7.__experimentalItem, 1181 { 1182 className: clsx_default("boot-navigation-item", className), 1183 onClick: handleClick, 1184 children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)( 1185 import_components7.__experimentalHStack, 1186 { 1187 justify: "flex-start", 1188 spacing: 2, 1189 style: { flexGrow: "1" }, 1190 children: [ 1191 wrapIcon(icon, shouldShowPlaceholder), 1192 /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components7.FlexBlock, { children }), 1193 /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components7.Icon, { icon: (0, import_i18n3.isRTL)() ? chevron_left_small_default : chevron_right_small_default }) 1194 ] 1195 } 1196 ) 1197 } 1198 ); 1199 } 1200 1201 // packages/boot/build-module/components/navigation/dropdown-item/index.mjs 1202 var import_components8 = __toESM(require_components(), 1); 1203 var import_compose = __toESM(require_compose(), 1); 1204 var import_data4 = __toESM(require_data(), 1); 1205 var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); 1206 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='58e2debd11']")) { 1207 const style = document.createElement("style"); 1208 style.setAttribute("data-wp-hash", "58e2debd11"); 1209 style.appendChild(document.createTextNode(".boot-dropdown-item__children{display:flex;flex-direction:column;margin-block-end:2px;margin-block-start:-2px;margin-inline-start:30px;overflow:hidden;padding:2px}.boot-dropdown-item__chevron.is-up{transform:rotate(180deg)}")); 1210 document.head.appendChild(style); 1211 } 1212 var ANIMATION_DURATION = 0.2; 1213 function DropdownItem({ 1214 className, 1215 id, 1216 icon, 1217 children, 1218 isExpanded, 1219 onToggle 1220 }) { 1221 const menuItems = (0, import_data4.useSelect)( 1222 (select) => ( 1223 // @ts-ignore 1224 select(STORE_NAME).getMenuItems() 1225 ), 1226 [] 1227 ); 1228 const items = menuItems.filter((item) => item.parent === id); 1229 const disableMotion = (0, import_compose.useReducedMotion)(); 1230 return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "boot-dropdown-item", children: [ 1231 /* @__PURE__ */ (0, import_jsx_runtime21.jsx)( 1232 import_components8.__experimentalItem, 1233 { 1234 className: clsx_default("boot-navigation-item", className), 1235 onClick: (e) => { 1236 e.preventDefault(); 1237 e.stopPropagation(); 1238 onToggle(); 1239 }, 1240 onMouseDown: (e) => e.preventDefault(), 1241 children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)( 1242 import_components8.__experimentalHStack, 1243 { 1244 justify: "flex-start", 1245 spacing: 2, 1246 style: { flexGrow: "1" }, 1247 children: [ 1248 wrapIcon(icon, false), 1249 /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_components8.FlexBlock, { children }), 1250 /* @__PURE__ */ (0, import_jsx_runtime21.jsx)( 1251 import_components8.Icon, 1252 { 1253 icon: chevron_down_small_default, 1254 className: clsx_default("boot-dropdown-item__chevron", { 1255 "is-up": isExpanded 1256 }) 1257 } 1258 ) 1259 ] 1260 } 1261 ) 1262 } 1263 ), 1264 /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_components8.__unstableAnimatePresence, { initial: false, children: isExpanded && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)( 1265 import_components8.__unstableMotion.div, 1266 { 1267 initial: { height: 0 }, 1268 animate: { height: "auto" }, 1269 exit: { height: 0 }, 1270 transition: { 1271 type: "tween", 1272 duration: disableMotion ? 0 : ANIMATION_DURATION, 1273 ease: "easeOut" 1274 }, 1275 className: "boot-dropdown-item__children", 1276 children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)( 1277 NavigationItem, 1278 { 1279 to: item.to, 1280 shouldShowPlaceholder: false, 1281 children: item.label 1282 }, 1283 index 1284 )) 1285 } 1286 ) }) 1287 ] }); 1288 } 1289 1290 // packages/boot/build-module/components/navigation/navigation-screen/index.mjs 1291 var import_components9 = __toESM(require_components(), 1); 1292 var import_i18n4 = __toESM(require_i18n(), 1); 1293 var import_compose2 = __toESM(require_compose(), 1); 1294 var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); 1295 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='c52b1efb2f']")) { 1296 const style = document.createElement("style"); 1297 style.setAttribute("data-wp-hash", "c52b1efb2f"); 1298 style.appendChild(document.createTextNode(".boot-navigation-screen{padding-block-end:4px}.boot-navigation-screen .components-text{color:var(--wpds-color-fg-content-neutral,#1e1e1e)}.boot-navigation-screen__title-icon{padding:12px 16px 8px;position:sticky;top:0}.boot-navigation-screen__title{flex-grow:1;overflow-wrap:break-word}.boot-navigation-screen__title.boot-navigation-screen__title,.boot-navigation-screen__title.boot-navigation-screen__title .boot-navigation-screen__title{color:var(--wpds-color-fg-content-neutral,#1e1e1e);line-height:32px}.boot-navigation-screen__actions{display:flex;flex-shrink:0}")); 1299 document.head.appendChild(style); 1300 } 1301 var ANIMATION_DURATION2 = 0.3; 1302 var slideVariants = { 1303 initial: (direction) => ({ 1304 x: direction === "forward" ? 100 : -100, 1305 opacity: 0 1306 }), 1307 animate: { 1308 x: 0, 1309 opacity: 1 1310 }, 1311 exit: (direction) => ({ 1312 x: direction === "forward" ? 100 : -100, 1313 opacity: 0 1314 }) 1315 }; 1316 function NavigationScreen({ 1317 isRoot, 1318 title, 1319 actions, 1320 content, 1321 description, 1322 animationDirection, 1323 backMenuItem, 1324 backButtonRef, 1325 navigationKey, 1326 onNavigate 1327 }) { 1328 const icon = (0, import_i18n4.isRTL)() ? chevron_right_default : chevron_left_default; 1329 const disableMotion = (0, import_compose2.useReducedMotion)(); 1330 const handleBackClick = (e) => { 1331 e.preventDefault(); 1332 onNavigate({ id: backMenuItem, direction: "backward" }); 1333 }; 1334 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)( 1335 "div", 1336 { 1337 className: "boot-navigation-screen", 1338 style: { 1339 overflow: "hidden", 1340 position: "relative", 1341 display: "grid", 1342 gridTemplateColumns: "1fr", 1343 gridTemplateRows: "1fr" 1344 }, 1345 children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_components9.__unstableAnimatePresence, { initial: false, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)( 1346 import_components9.__unstableMotion.div, 1347 { 1348 custom: animationDirection, 1349 variants: slideVariants, 1350 initial: "initial", 1351 animate: "animate", 1352 exit: "exit", 1353 transition: { 1354 type: "tween", 1355 duration: disableMotion ? 0 : ANIMATION_DURATION2, 1356 ease: [0.33, 0, 0, 1] 1357 }, 1358 style: { 1359 width: "100%", 1360 gridColumn: "1", 1361 gridRow: "1" 1362 }, 1363 children: [ 1364 /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)( 1365 import_components9.__experimentalHStack, 1366 { 1367 spacing: 2, 1368 className: "boot-navigation-screen__title-icon", 1369 children: [ 1370 !isRoot && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)( 1371 import_components9.Button, 1372 { 1373 ref: backButtonRef, 1374 icon, 1375 onClick: handleBackClick, 1376 label: (0, import_i18n4.__)("Back"), 1377 size: "small", 1378 variant: "tertiary" 1379 } 1380 ), 1381 /* @__PURE__ */ (0, import_jsx_runtime22.jsx)( 1382 import_components9.__experimentalHeading, 1383 { 1384 className: "boot-navigation-screen__title", 1385 level: 1, 1386 size: "15px", 1387 children: title 1388 } 1389 ), 1390 actions && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "boot-navigation-screen__actions", children: actions }) 1391 ] 1392 } 1393 ), 1394 description && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "boot-navigation-screen__description", children: description }), 1395 content 1396 ] 1397 }, 1398 navigationKey 1399 ) }) 1400 } 1401 ); 1402 } 1403 1404 // packages/boot/build-module/components/navigation/use-sidebar-parent.mjs 1405 var import_element6 = __toESM(require_element(), 1); 1406 var import_data5 = __toESM(require_data(), 1); 1407 import { privateApis as routePrivateApis3 } from "@wordpress/route"; 1408 1409 // packages/boot/build-module/components/navigation/path-matching.mjs 1410 var isValidParentPath = (currentPath, menuPath) => { 1411 if (!menuPath || menuPath === currentPath) { 1412 return false; 1413 } 1414 const normalizePath = (path) => { 1415 const normalized = path.startsWith("/") ? path : "/" + path; 1416 return normalized.endsWith("/") && normalized.length > 1 ? normalized.slice(0, -1) : normalized; 1417 }; 1418 const normalizedCurrent = normalizePath(currentPath); 1419 const normalizedMenu = normalizePath(menuPath); 1420 return normalizedCurrent.startsWith(normalizedMenu) && (normalizedCurrent[normalizedMenu.length] === "/" || normalizedMenu === "/"); 1421 }; 1422 var findClosestMenuItem = (currentPath, menuItems) => { 1423 const exactMatch = menuItems.find((item) => item.to === currentPath); 1424 if (exactMatch) { 1425 return exactMatch; 1426 } 1427 let bestMatch = null; 1428 let bestPathLength = 0; 1429 for (const item of menuItems) { 1430 if (!item.to) { 1431 continue; 1432 } 1433 if (isValidParentPath(currentPath, item.to)) { 1434 if (item.to.length > bestPathLength) { 1435 bestMatch = item; 1436 bestPathLength = item.to.length; 1437 } 1438 } 1439 } 1440 return bestMatch; 1441 }; 1442 var findDrilldownParent = (id, menuItems) => { 1443 if (!id) { 1444 return void 0; 1445 } 1446 const currentItem = menuItems.find((item) => item.id === id); 1447 if (!currentItem) { 1448 return void 0; 1449 } 1450 if (currentItem.parent) { 1451 const parentItem = menuItems.find( 1452 (item) => item.id === currentItem.parent 1453 ); 1454 if (parentItem?.parent_type === "drilldown") { 1455 return parentItem.id; 1456 } 1457 if (parentItem) { 1458 return findDrilldownParent(parentItem.id, menuItems); 1459 } 1460 } 1461 return void 0; 1462 }; 1463 var findDropdownParent = (id, menuItems) => { 1464 if (!id) { 1465 return void 0; 1466 } 1467 const currentItem = menuItems.find((item) => item.id === id); 1468 if (!currentItem) { 1469 return void 0; 1470 } 1471 if (currentItem.parent) { 1472 const parentItem = menuItems.find( 1473 (item) => item.id === currentItem.parent 1474 ); 1475 if (parentItem?.parent_type === "dropdown") { 1476 return parentItem.id; 1477 } 1478 } 1479 return void 0; 1480 }; 1481 1482 // packages/boot/build-module/components/navigation/use-sidebar-parent.mjs 1483 var { useRouter: useRouter2, useMatches } = unlock(routePrivateApis3); 1484 function useSidebarParent() { 1485 const matches = useMatches(); 1486 const router = useRouter2(); 1487 const menuItems = (0, import_data5.useSelect)( 1488 (select) => ( 1489 // @ts-ignore 1490 select(STORE_NAME).getMenuItems() 1491 ), 1492 [] 1493 ); 1494 const currentPath = matches[matches.length - 1].pathname.slice( 1495 router.options.basepath?.length ?? 0 1496 ); 1497 const currentMenuItem = findClosestMenuItem(currentPath, menuItems); 1498 const [parentId, setParentId] = (0, import_element6.useState)( 1499 findDrilldownParent(currentMenuItem?.id, menuItems) 1500 ); 1501 const [parentDropdownId, setParentDropdownId] = (0, import_element6.useState)(findDropdownParent(currentMenuItem?.id, menuItems)); 1502 (0, import_element6.useEffect)(() => { 1503 const matchedMenuItem = findClosestMenuItem(currentPath, menuItems); 1504 const updatedParentId = findDrilldownParent( 1505 matchedMenuItem?.id, 1506 menuItems 1507 ); 1508 const updatedDropdownParent = findDropdownParent( 1509 matchedMenuItem?.id, 1510 menuItems 1511 ); 1512 setParentId(updatedParentId); 1513 setParentDropdownId(updatedDropdownParent); 1514 }, [currentPath, menuItems]); 1515 return [ 1516 parentId, 1517 setParentId, 1518 parentDropdownId, 1519 setParentDropdownId 1520 ]; 1521 } 1522 1523 // packages/boot/build-module/components/navigation/index.mjs 1524 var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); 1525 function Navigation() { 1526 const backButtonRef = (0, import_element7.useRef)(null); 1527 const [animationDirection, setAnimationDirection] = (0, import_element7.useState)(null); 1528 const [parentId, setParentId, parentDropdownId, setParentDropdownId] = useSidebarParent(); 1529 const menuItems = (0, import_data6.useSelect)( 1530 (select) => ( 1531 // @ts-ignore 1532 select(STORE_NAME).getMenuItems() 1533 ), 1534 [] 1535 ); 1536 const parent = (0, import_element7.useMemo)( 1537 () => menuItems.find((item) => item.id === parentId), 1538 [menuItems, parentId] 1539 ); 1540 const navigationKey = parent ? `drilldown-$parent.id}` : "root"; 1541 const handleNavigate = ({ 1542 id, 1543 direction 1544 }) => { 1545 setAnimationDirection(direction); 1546 setParentId(id); 1547 }; 1548 const handleDropdownToggle = (dropdownId) => { 1549 setParentDropdownId( 1550 parentDropdownId === dropdownId ? void 0 : dropdownId 1551 ); 1552 }; 1553 const items = (0, import_element7.useMemo)( 1554 () => menuItems.filter((item) => item.parent === parentId), 1555 [menuItems, parentId] 1556 ); 1557 const hasRealIcons = items.some((item) => !!item.icon); 1558 return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( 1559 NavigationScreen, 1560 { 1561 isRoot: !parent, 1562 title: parent ? parent.label : "", 1563 backMenuItem: parent?.parent, 1564 backButtonRef, 1565 animationDirection: animationDirection || void 0, 1566 navigationKey, 1567 onNavigate: handleNavigate, 1568 content: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children: items.map((item) => { 1569 if (item.parent_type === "dropdown") { 1570 return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( 1571 DropdownItem, 1572 { 1573 id: item.id, 1574 className: "boot-navigation-item", 1575 icon: item.icon, 1576 shouldShowPlaceholder: hasRealIcons, 1577 isExpanded: parentDropdownId === item.id, 1578 onToggle: () => handleDropdownToggle(item.id), 1579 children: item.label 1580 }, 1581 item.id 1582 ); 1583 } 1584 if (item.parent_type === "drilldown") { 1585 return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( 1586 DrilldownItem, 1587 { 1588 id: item.id, 1589 icon: item.icon, 1590 shouldShowPlaceholder: hasRealIcons, 1591 onNavigate: handleNavigate, 1592 children: item.label 1593 }, 1594 item.id 1595 ); 1596 } 1597 return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( 1598 NavigationItem, 1599 { 1600 to: item.to, 1601 icon: item.icon, 1602 shouldShowPlaceholder: hasRealIcons, 1603 children: item.label 1604 }, 1605 item.id 1606 ); 1607 }) }) 1608 } 1609 ); 1610 } 1611 var navigation_default = Navigation; 1612 1613 // packages/boot/build-module/components/save-button/index.mjs 1614 var import_element9 = __toESM(require_element(), 1); 1615 var import_data8 = __toESM(require_data(), 1); 1616 var import_i18n6 = __toESM(require_i18n(), 1); 1617 var import_core_data4 = __toESM(require_core_data(), 1); 1618 var import_keycodes2 = __toESM(require_keycodes(), 1); 1619 var import_editor2 = __toESM(require_editor(), 1); 1620 var import_components10 = __toESM(require_components(), 1); 1621 1622 // packages/boot/build-module/components/save-panel/use-save-shortcut.mjs 1623 var import_element8 = __toESM(require_element(), 1); 1624 var import_keyboard_shortcuts = __toESM(require_keyboard_shortcuts(), 1); 1625 var import_i18n5 = __toESM(require_i18n(), 1); 1626 var import_data7 = __toESM(require_data(), 1); 1627 var import_core_data3 = __toESM(require_core_data(), 1); 1628 var import_editor = __toESM(require_editor(), 1); 1629 var shortcutName = "core/boot/save"; 1630 function useSaveShortcut({ 1631 openSavePanel 1632 }) { 1633 const { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } = (0, import_data7.useSelect)(import_core_data3.store); 1634 const { hasNonPostEntityChanges, isPostSavingLocked } = (0, import_data7.useSelect)(import_editor.store); 1635 const { savePost } = (0, import_data7.useDispatch)(import_editor.store); 1636 const { registerShortcut, unregisterShortcut } = (0, import_data7.useDispatch)( 1637 import_keyboard_shortcuts.store 1638 ); 1639 (0, import_element8.useEffect)(() => { 1640 registerShortcut({ 1641 name: shortcutName, 1642 category: "global", 1643 description: (0, import_i18n5.__)("Save your changes."), 1644 keyCombination: { 1645 modifier: "primary", 1646 character: "s" 1647 } 1648 }); 1649 return () => { 1650 unregisterShortcut(shortcutName); 1651 }; 1652 }, [registerShortcut, unregisterShortcut]); 1653 (0, import_keyboard_shortcuts.useShortcut)(shortcutName, (event) => { 1654 event.preventDefault(); 1655 const dirtyEntityRecords = __experimentalGetDirtyEntityRecords(); 1656 const hasDirtyEntities = !!dirtyEntityRecords.length; 1657 const isSaving = dirtyEntityRecords.some( 1658 (record) => isSavingEntityRecord(record.kind, record.name, record.key) 1659 ); 1660 if (!hasDirtyEntities || isSaving) { 1661 return; 1662 } 1663 if (hasNonPostEntityChanges()) { 1664 openSavePanel(); 1665 } else if (!isPostSavingLocked()) { 1666 savePost(); 1667 } 1668 }); 1669 } 1670 1671 // packages/boot/build-module/components/save-button/index.mjs 1672 var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); 1673 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='a012fe845a']")) { 1674 const style = document.createElement("style"); 1675 style.setAttribute("data-wp-hash", "a012fe845a"); 1676 style.appendChild(document.createTextNode(".boot-save-button{width:100%}")); 1677 document.head.appendChild(style); 1678 } 1679 function SaveButton() { 1680 const [isSaveViewOpen, setIsSaveViewOpened] = (0, import_element9.useState)(false); 1681 const { isSaving, dirtyEntityRecordsCount } = (0, import_data8.useSelect)((select) => { 1682 const { isSavingEntityRecord, __experimentalGetDirtyEntityRecords } = select(import_core_data4.store); 1683 const dirtyEntityRecords = __experimentalGetDirtyEntityRecords(); 1684 return { 1685 isSaving: dirtyEntityRecords.some( 1686 (record) => isSavingEntityRecord(record.kind, record.name, record.key) 1687 ), 1688 dirtyEntityRecordsCount: dirtyEntityRecords.length 1689 }; 1690 }, []); 1691 const [showSavedState, setShowSavedState] = (0, import_element9.useState)(false); 1692 (0, import_element9.useEffect)(() => { 1693 if (isSaving) { 1694 setShowSavedState(true); 1695 } 1696 }, [isSaving]); 1697 const hasChanges = dirtyEntityRecordsCount > 0; 1698 (0, import_element9.useEffect)(() => { 1699 if (!isSaving && hasChanges) { 1700 setShowSavedState(false); 1701 } 1702 }, [isSaving, hasChanges]); 1703 function hideSavedState() { 1704 if (showSavedState) { 1705 setShowSavedState(false); 1706 } 1707 } 1708 const shouldShowButton = hasChanges || showSavedState; 1709 useSaveShortcut({ openSavePanel: () => setIsSaveViewOpened(true) }); 1710 if (!shouldShowButton) { 1711 return null; 1712 } 1713 const isInSavedState = showSavedState && !hasChanges; 1714 const disabled = isSaving || isInSavedState; 1715 const getLabel = () => { 1716 if (isInSavedState) { 1717 return (0, import_i18n6.__)("Saved"); 1718 } 1719 return (0, import_i18n6.sprintf)( 1720 // translators: %d: number of unsaved changes (number). 1721 (0, import_i18n6._n)( 1722 "Review %d change\u2026", 1723 "Review %d changes\u2026", 1724 dirtyEntityRecordsCount 1725 ), 1726 dirtyEntityRecordsCount 1727 ); 1728 }; 1729 const label = getLabel(); 1730 return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment, { children: [ 1731 /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( 1732 import_components10.Tooltip, 1733 { 1734 text: hasChanges ? label : void 0, 1735 shortcut: import_keycodes2.displayShortcut.primary("s"), 1736 children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( 1737 import_components10.Button, 1738 { 1739 variant: "primary", 1740 size: "compact", 1741 onClick: () => setIsSaveViewOpened(true), 1742 onBlur: hideSavedState, 1743 disabled, 1744 accessibleWhenDisabled: true, 1745 isBusy: isSaving, 1746 "aria-keyshortcuts": import_keycodes2.rawShortcut.primary("s"), 1747 className: "boot-save-button", 1748 icon: isInSavedState ? check_default : void 0, 1749 children: label 1750 } 1751 ) 1752 } 1753 ), 1754 isSaveViewOpen && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( 1755 import_components10.Modal, 1756 { 1757 title: (0, import_i18n6.__)("Review changes"), 1758 onRequestClose: () => setIsSaveViewOpened(false), 1759 size: "small", 1760 children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( 1761 import_editor2.EntitiesSavedStates, 1762 { 1763 close: () => setIsSaveViewOpened(false), 1764 variant: "inline" 1765 } 1766 ) 1767 } 1768 ) 1769 ] }); 1770 } 1771 1772 // packages/boot/build-module/components/sidebar/index.mjs 1773 var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); 1774 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='e5d2041211']")) { 1775 const style = document.createElement("style"); 1776 style.setAttribute("data-wp-hash", "e5d2041211"); 1777 style.appendChild(document.createTextNode(".boot-sidebar__scrollable{display:flex;flex-direction:column;height:100%;overflow:auto;position:relative}.boot-sidebar__content{contain:content;flex-grow:1;position:relative}.boot-sidebar__footer{padding:16px 8px 8px 16px}")); 1778 document.head.appendChild(style); 1779 } 1780 function Sidebar() { 1781 return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "boot-sidebar__scrollable", children: [ 1782 /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(site_hub_default, {}), 1783 /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "boot-sidebar__content", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(navigation_default, {}) }), 1784 /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "boot-sidebar__footer", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SaveButton, {}) }) 1785 ] }); 1786 } 1787 1788 // packages/boot/build-module/components/save-panel/index.mjs 1789 var import_element10 = __toESM(require_element(), 1); 1790 var import_components11 = __toESM(require_components(), 1); 1791 var import_editor3 = __toESM(require_editor(), 1); 1792 var import_i18n7 = __toESM(require_i18n(), 1); 1793 var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); 1794 function SavePanel() { 1795 const [isOpen, setIsOpen] = (0, import_element10.useState)(false); 1796 useSaveShortcut({ 1797 openSavePanel: () => setIsOpen(true) 1798 }); 1799 if (!isOpen) { 1800 return false; 1801 } 1802 return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( 1803 import_components11.Modal, 1804 { 1805 className: "edit-site-save-panel__modal", 1806 onRequestClose: () => setIsOpen(false), 1807 title: (0, import_i18n7.__)("Review changes"), 1808 size: "small", 1809 children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( 1810 import_editor3.EntitiesSavedStates, 1811 { 1812 close: () => setIsOpen(false), 1813 variant: "inline" 1814 } 1815 ) 1816 } 1817 ); 1818 } 1819 1820 // packages/boot/build-module/components/canvas-renderer/index.mjs 1821 var import_element12 = __toESM(require_element(), 1); 1822 1823 // packages/boot/build-module/components/canvas/index.mjs 1824 var import_element11 = __toESM(require_element(), 1); 1825 var import_components13 = __toESM(require_components(), 1); 1826 import { useNavigate } from "@wordpress/route"; 1827 1828 // packages/boot/build-module/components/canvas/back-button.mjs 1829 var import_components12 = __toESM(require_components(), 1); 1830 var import_compose3 = __toESM(require_compose(), 1); 1831 var import_i18n8 = __toESM(require_i18n(), 1); 1832 var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); 1833 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='68d99fe376']")) { 1834 const style = document.createElement("style"); 1835 style.setAttribute("data-wp-hash", "68d99fe376"); 1836 style.appendChild(document.createTextNode(".boot-canvas-back-button{height:64px;left:0;position:absolute;top:0;width:64px;z-index:100}.boot-canvas-back-button__container{height:100%;position:relative;width:100%}.boot-canvas-back-button__link.components-button{align-items:center;background:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);border-radius:0;display:inline-flex;height:64px;justify-content:center;padding:0;text-decoration:none;width:64px}@media not (prefers-reduced-motion){.boot-canvas-back-button__link.components-button{transition:outline .1s ease-out}}.boot-canvas-back-button__link.components-button:focus:not(:active){outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline-offset:calc(var(--wpds-border-width-focus, var(--wp-admin-border-width-focus, 2px))*-1)}.boot-canvas-back-button__icon{align-items:center;background-color:#ccc;display:flex;height:64px;justify-content:center;left:0;pointer-events:none;position:absolute;top:0;width:64px}.boot-canvas-back-button__icon svg{fill:currentColor}.boot-canvas-back-button__icon.has-site-icon{-webkit-backdrop-filter:saturate(180%) blur(15px);backdrop-filter:saturate(180%) blur(15px);background-color:#fff9}.interface-interface-skeleton__header{margin-top:0!important}")); 1837 document.head.appendChild(style); 1838 } 1839 var toggleHomeIconVariants = { 1840 edit: { 1841 opacity: 0, 1842 scale: 0.2 1843 }, 1844 hover: { 1845 opacity: 1, 1846 scale: 1, 1847 clipPath: "inset( 22% round 2px )" 1848 } 1849 }; 1850 function BootBackButton({ length }) { 1851 const disableMotion = (0, import_compose3.useReducedMotion)(); 1852 const handleBack = () => { 1853 window.history.back(); 1854 }; 1855 if (length > 1) { 1856 return null; 1857 } 1858 const transition = { 1859 duration: disableMotion ? 0 : 0.3 1860 }; 1861 return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)( 1862 import_components12.__unstableMotion.div, 1863 { 1864 className: "boot-canvas-back-button", 1865 animate: "edit", 1866 initial: "edit", 1867 whileHover: "hover", 1868 whileTap: "tap", 1869 transition, 1870 children: [ 1871 /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( 1872 import_components12.Button, 1873 { 1874 className: "boot-canvas-back-button__link", 1875 onClick: handleBack, 1876 "aria-label": (0, import_i18n8.__)("Go back"), 1877 __next40pxDefaultSize: true, 1878 children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(site_icon_default, {}) 1879 } 1880 ), 1881 /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( 1882 import_components12.__unstableMotion.div, 1883 { 1884 className: "boot-canvas-back-button__icon", 1885 variants: toggleHomeIconVariants, 1886 children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components12.Icon, { icon: arrow_up_left_default }) 1887 } 1888 ) 1889 ] 1890 } 1891 ); 1892 } 1893 1894 // packages/boot/build-module/components/canvas/index.mjs 1895 var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); 1896 function Canvas({ canvas }) { 1897 const [Editor, setEditor] = (0, import_element11.useState)(null); 1898 const navigate = useNavigate(); 1899 (0, import_element11.useEffect)(() => { 1900 import("@wordpress/lazy-editor").then((module) => { 1901 setEditor(() => module.Editor); 1902 }).catch((error) => { 1903 console.error("Failed to load lazy editor:", error); 1904 }); 1905 }, []); 1906 if (!Editor) { 1907 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( 1908 "div", 1909 { 1910 style: { 1911 display: "flex", 1912 justifyContent: "center", 1913 alignItems: "center", 1914 height: "100%", 1915 padding: "2rem" 1916 }, 1917 children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_components13.Spinner, {}) 1918 } 1919 ); 1920 } 1921 const backButton = !canvas.isPreview ? ({ length }) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(BootBackButton, { length }) : void 0; 1922 return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { style: { height: "100%", position: "relative" }, children: [ 1923 /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( 1924 "div", 1925 { 1926 style: { height: "100%" }, 1927 inert: canvas.isPreview ? "true" : void 0, 1928 children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( 1929 Editor, 1930 { 1931 postType: canvas.postType, 1932 postId: canvas.postId, 1933 settings: { isPreviewMode: canvas.isPreview }, 1934 backButton 1935 } 1936 ) 1937 } 1938 ), 1939 canvas.isPreview && canvas.editLink && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( 1940 "div", 1941 { 1942 onClick: () => navigate({ to: canvas.editLink }), 1943 onKeyDown: (e) => { 1944 if (e.key === "Enter" || e.key === " ") { 1945 e.preventDefault(); 1946 navigate({ to: canvas.editLink }); 1947 } 1948 }, 1949 style: { 1950 position: "absolute", 1951 inset: 0, 1952 cursor: "pointer", 1953 zIndex: 1 1954 }, 1955 role: "button", 1956 tabIndex: 0, 1957 "aria-label": "Click to edit" 1958 } 1959 ) 1960 ] }); 1961 } 1962 1963 // packages/boot/build-module/components/canvas-renderer/index.mjs 1964 var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); 1965 function CanvasRenderer({ 1966 canvas, 1967 routeContentModule 1968 }) { 1969 const [CustomCanvas, setCustomCanvas] = (0, import_element12.useState)(null); 1970 (0, import_element12.useEffect)(() => { 1971 if (canvas === null && routeContentModule) { 1972 import(routeContentModule).then((module) => { 1973 setCustomCanvas(() => module.canvas); 1974 }).catch((error) => { 1975 console.error("Failed to load custom canvas:", error); 1976 }); 1977 } else { 1978 setCustomCanvas(null); 1979 } 1980 }, [canvas, routeContentModule]); 1981 if (canvas === void 0) { 1982 return null; 1983 } 1984 if (canvas === null) { 1985 if (!CustomCanvas) { 1986 return null; 1987 } 1988 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CustomCanvas, {}); 1989 } 1990 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Canvas, { canvas }); 1991 } 1992 1993 // packages/boot/build-module/components/app/use-route-title.mjs 1994 var import_element13 = __toESM(require_element(), 1); 1995 var import_data9 = __toESM(require_data(), 1); 1996 var import_core_data5 = __toESM(require_core_data(), 1); 1997 var import_i18n9 = __toESM(require_i18n(), 1); 1998 var import_html_entities2 = __toESM(require_html_entities(), 1); 1999 import { speak } from "@wordpress/a11y"; 2000 import { privateApis as routePrivateApis4 } from "@wordpress/route"; 2001 var { useLocation, useMatches: useMatches2 } = unlock(routePrivateApis4); 2002 function useRouteTitle() { 2003 const location = useLocation(); 2004 const matches = useMatches2(); 2005 const currentMatch = matches[matches.length - 1]; 2006 const routeTitle = currentMatch?.loaderData?.title; 2007 const siteTitle = (0, import_data9.useSelect)( 2008 (select) => select(import_core_data5.store).getEntityRecord( 2009 "root", 2010 "__unstableBase" 2011 )?.name, 2012 [] 2013 ); 2014 const isInitialLocationRef = (0, import_element13.useRef)(true); 2015 (0, import_element13.useEffect)(() => { 2016 isInitialLocationRef.current = false; 2017 }, [location]); 2018 (0, import_element13.useEffect)(() => { 2019 if (isInitialLocationRef.current) { 2020 return; 2021 } 2022 if (routeTitle && typeof routeTitle === "string" && siteTitle && typeof siteTitle === "string") { 2023 const decodedRouteTitle = (0, import_html_entities2.decodeEntities)(routeTitle); 2024 const decodedSiteTitle = (0, import_html_entities2.decodeEntities)(siteTitle); 2025 const formattedTitle = (0, import_i18n9.sprintf)( 2026 /* translators: Admin document title. 1: Admin screen name, 2: Site name. */ 2027 (0, import_i18n9.__)("%1$s \u2039 %2$s \u2014 WordPress"), 2028 decodedRouteTitle, 2029 decodedSiteTitle 2030 ); 2031 document.title = formattedTitle; 2032 if (decodedRouteTitle) { 2033 speak(decodedRouteTitle, "assertive"); 2034 } 2035 } 2036 }, [routeTitle, siteTitle, location]); 2037 } 2038 2039 // packages/boot/build-module/components/user-theme-provider/index.mjs 2040 var import_theme = __toESM(require_theme(), 1); 2041 var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); 2042 var ThemeProvider = unlock(import_theme.privateApis).ThemeProvider; 2043 var THEME_PRIMARY_COLORS = /* @__PURE__ */ new Map([ 2044 ["light", "#0085ba"], 2045 ["modern", "#3858e9"], 2046 ["blue", "#096484"], 2047 ["coffee", "#46403c"], 2048 ["ectoplasm", "#523f6d"], 2049 ["midnight", "#e14d43"], 2050 ["ocean", "#627c83"], 2051 ["sunrise", "#dd823b"] 2052 ]); 2053 function getAdminThemePrimaryColor() { 2054 const theme = document.body.className.match(/admin-color-([a-z]+)/)?.[1]; 2055 return theme && THEME_PRIMARY_COLORS.get(theme); 2056 } 2057 function UserThemeProvider({ 2058 color, 2059 ...restProps 2060 }) { 2061 const primary = getAdminThemePrimaryColor(); 2062 return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ThemeProvider, { ...restProps, color: { primary, ...color } }); 2063 } 2064 2065 // packages/boot/build-module/components/root/index.mjs 2066 var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); 2067 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='d1ebf43fe1']")) { 2068 const style = document.createElement("style"); 2069 style.setAttribute("data-wp-hash", "d1ebf43fe1"); 2070 style.appendChild(document.createTextNode(".boot-layout{background:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-direction:row;height:100%;isolation:isolate;width:100%}.boot-layout__sidebar-backdrop{background-color:#00000080;bottom:0;cursor:pointer;left:0;position:fixed;right:0;top:0;z-index:100002}.boot-layout__sidebar{flex-shrink:0;height:100%;overflow:hidden;position:relative;width:240px}.boot-layout__sidebar.is-mobile{background:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);bottom:0;box-shadow:2px 0 8px #0003;inset-inline-start:0;max-width:85vw;position:fixed;top:0;width:300px;z-index:100003}.boot-layout__mobile-sidebar-drawer{left:0;position:fixed;right:0;top:0}.boot-layout--single-page .boot-layout__mobile-sidebar-drawer{top:46px}.boot-layout__mobile-sidebar-drawer{align-items:center;background:var(--wpds-color-bg-surface-neutral,#fff);border-bottom:1px solid var(--wpds-color-stroke-surface-neutral-weak,#ddd);display:flex;justify-content:flex-start;padding:16px;z-index:3}.boot-layout__canvas.has-mobile-drawer{padding-top:65px;position:relative}.boot-layout__surfaces{display:flex;flex-grow:1;gap:8px;margin:0}@media (min-width:782px){.boot-layout__surfaces{margin:8px}.boot-layout--single-page .boot-layout__surfaces{margin-top:0;margin-inline-start:0}}.boot-layout__inspector,.boot-layout__stage{background:var(--wpds-color-bg-surface-neutral,#fff);border-radius:0;bottom:0;color:var(--wpds-color-fg-content-neutral,#1e1e1e);flex:1;height:100vh;left:0;margin:0;overflow-y:auto;position:relative;position:fixed;right:0;top:0;width:100vw}.boot-layout--single-page .boot-layout__inspector,.boot-layout--single-page .boot-layout__stage{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.boot-layout__inspector,.boot-layout__stage{border-radius:8px;height:auto;margin:0;position:static;width:auto}.boot-layout--single-page .boot-layout__inspector,.boot-layout--single-page .boot-layout__stage{height:auto}}.boot-layout__stage{z-index:2}@media (min-width:782px){.boot-layout__stage{z-index:auto}}.boot-layout__inspector{z-index:3}@media (min-width:782px){.boot-layout__inspector{z-index:auto}}.boot-layout__canvas{background:var(--wpds-color-bg-surface-neutral,#fff);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#ddd);border-radius:0;bottom:0;box-shadow:0 1px 3px #0000001a;color:var(--wpds-color-fg-content-neutral,#1e1e1e);flex:1;height:100vh;left:0;margin:0;overflow-y:auto;position:relative;position:fixed;right:0;top:0;width:100vw;z-index:1}.boot-layout--single-page .boot-layout__canvas{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.boot-layout__canvas{border-radius:8px;height:auto;position:static;width:auto;z-index:auto}.boot-layout--single-page .boot-layout__canvas{height:auto}.boot-layout.has-canvas .boot-layout__stage,.boot-layout__inspector{max-width:400px}}.boot-layout__canvas .interface-interface-skeleton{height:100%;left:0!important;position:relative;top:0!important}.boot-layout.has-full-canvas .boot-layout__surfaces{gap:0;margin:0}.boot-layout.has-full-canvas .boot-layout__inspector,.boot-layout.has-full-canvas .boot-layout__stage{display:none}.boot-layout.has-full-canvas .boot-layout__canvas{border:none;border-radius:0;bottom:0;box-shadow:none;left:0;margin:0;max-width:none;overflow:hidden;position:fixed;right:0;top:0}.boot-layout--single-page .boot-layout.has-full-canvas .boot-layout__canvas{top:46px}@media (min-width:782px){.boot-layout--single-page .boot-layout.has-full-canvas .boot-layout__canvas{top:32px}}")); 2071 document.head.appendChild(style); 2072 } 2073 var { useLocation: useLocation2, useMatches: useMatches3, Outlet } = unlock(routePrivateApis5); 2074 function Root() { 2075 const matches = useMatches3(); 2076 const location = useLocation2(); 2077 const currentMatch = matches[matches.length - 1]; 2078 const canvas = currentMatch?.loaderData?.canvas; 2079 const routeContentModule = currentMatch?.loaderData?.routeContentModule; 2080 const isFullScreen = canvas && !canvas.isPreview; 2081 useRouteTitle(); 2082 const isMobileViewport = (0, import_compose4.useViewportMatch)("medium", "<"); 2083 const [isMobileSidebarOpen, setIsMobileSidebarOpen] = (0, import_element14.useState)(false); 2084 const disableMotion = (0, import_compose4.useReducedMotion)(); 2085 (0, import_element14.useEffect)(() => { 2086 setIsMobileSidebarOpen(false); 2087 }, [location.pathname, isMobileViewport]); 2088 return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components14.SlotFillProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(UserThemeProvider, { isRoot: true, color: { bg: "#f8f8f8" }, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(UserThemeProvider, { color: { bg: "#1d2327" }, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( 2089 "div", 2090 { 2091 className: clsx_default("boot-layout", { 2092 "has-canvas": !!canvas || canvas === null, 2093 "has-full-canvas": isFullScreen 2094 }), 2095 children: [ 2096 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SavePanel, {}), 2097 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_notices.SnackbarNotices, { className: "boot-notices__snackbar" }), 2098 isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(page_default.SidebarToggleFill, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( 2099 import_components14.Button, 2100 { 2101 icon: menu_default, 2102 onClick: () => setIsMobileSidebarOpen(true), 2103 label: (0, import_i18n10.__)("Open navigation panel"), 2104 size: "compact" 2105 } 2106 ) }), 2107 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components14.__unstableAnimatePresence, { children: isMobileViewport && isMobileSidebarOpen && !isFullScreen && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( 2108 import_components14.__unstableMotion.div, 2109 { 2110 initial: { opacity: 0 }, 2111 animate: { opacity: 1 }, 2112 exit: { opacity: 0 }, 2113 transition: { 2114 type: "tween", 2115 duration: disableMotion ? 0 : 0.2, 2116 ease: "easeOut" 2117 }, 2118 className: "boot-layout__sidebar-backdrop", 2119 onClick: () => setIsMobileSidebarOpen(false), 2120 onKeyDown: (event) => { 2121 if (event.key === "Escape") { 2122 setIsMobileSidebarOpen(false); 2123 } 2124 }, 2125 role: "button", 2126 tabIndex: -1, 2127 "aria-label": (0, import_i18n10.__)( 2128 "Close navigation panel" 2129 ) 2130 } 2131 ) }), 2132 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components14.__unstableAnimatePresence, { children: isMobileViewport && isMobileSidebarOpen && !isFullScreen && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( 2133 import_components14.__unstableMotion.div, 2134 { 2135 initial: { x: "-100%" }, 2136 animate: { x: 0 }, 2137 exit: { x: "-100%" }, 2138 transition: { 2139 type: "tween", 2140 duration: disableMotion ? 0 : 0.2, 2141 ease: "easeOut" 2142 }, 2143 className: "boot-layout__sidebar is-mobile", 2144 children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Sidebar, {}) 2145 } 2146 ) }), 2147 !isMobileViewport && !isFullScreen && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "boot-layout__sidebar", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Sidebar, {}) }), 2148 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "boot-layout__surfaces", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(UserThemeProvider, { color: { bg: "#ffffff" }, children: [ 2149 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Outlet, {}), 2150 (canvas || canvas === null) && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)( 2151 "div", 2152 { 2153 className: clsx_default( 2154 "boot-layout__canvas", 2155 { 2156 "has-mobile-drawer": canvas?.isPreview && isMobileViewport 2157 } 2158 ), 2159 children: [ 2160 canvas?.isPreview && isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "boot-layout__mobile-sidebar-drawer", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( 2161 import_components14.Button, 2162 { 2163 icon: menu_default, 2164 onClick: () => setIsMobileSidebarOpen( 2165 true 2166 ), 2167 label: (0, import_i18n10.__)( 2168 "Open navigation panel" 2169 ), 2170 size: "compact" 2171 } 2172 ) }), 2173 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( 2174 CanvasRenderer, 2175 { 2176 canvas, 2177 routeContentModule 2178 } 2179 ) 2180 ] 2181 } 2182 ) 2183 ] }) }) 2184 ] 2185 } 2186 ) }) }) }); 2187 } 2188 2189 // packages/boot/build-module/components/app/router.mjs 2190 var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); 2191 var { 2192 createLazyRoute, 2193 createRouter, 2194 createRootRoute, 2195 createRoute, 2196 RouterProvider, 2197 createBrowserHistory, 2198 parseHref, 2199 useLoaderData 2200 } = unlock(routePrivateApis6); 2201 function NotFoundComponent() { 2202 return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "boot-layout__stage", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(page_default, { title: (0, import_i18n11.__)("Route not found"), hasPadding: true, children: (0, import_i18n11.__)("The page you're looking for does not exist") }) }); 2203 } 2204 function createRouteFromDefinition(route, parentRoute) { 2205 let tanstackRoute = createRoute({ 2206 getParentRoute: () => parentRoute, 2207 path: route.path, 2208 beforeLoad: async (opts) => { 2209 if (route.route_module) { 2210 const module = await import(route.route_module); 2211 const routeConfig = module.route || {}; 2212 if (routeConfig.beforeLoad) { 2213 return routeConfig.beforeLoad({ 2214 params: opts.params || {}, 2215 search: opts.search || {} 2216 }); 2217 } 2218 } 2219 }, 2220 loader: async (opts) => { 2221 let routeConfig = {}; 2222 if (route.route_module) { 2223 const module = await import(route.route_module); 2224 routeConfig = module.route || {}; 2225 } 2226 const context = { 2227 params: opts.params || {}, 2228 search: opts.deps || {} 2229 }; 2230 const [, loaderData, canvasData, titleData] = await Promise.all([ 2231 (0, import_data10.resolveSelect)(import_core_data6.store).getEntityRecord( 2232 "root", 2233 "__unstableBase" 2234 ), 2235 routeConfig.loader ? routeConfig.loader(context) : Promise.resolve(void 0), 2236 routeConfig.canvas ? routeConfig.canvas(context) : Promise.resolve(void 0), 2237 routeConfig.title ? routeConfig.title(context) : Promise.resolve(void 0) 2238 ]); 2239 let inspector = true; 2240 if (routeConfig.inspector) { 2241 inspector = await routeConfig.inspector(context); 2242 } 2243 return { 2244 ...loaderData, 2245 canvas: canvasData, 2246 inspector, 2247 title: titleData, 2248 routeContentModule: route.content_module 2249 }; 2250 }, 2251 loaderDeps: (opts) => opts.search 2252 }); 2253 tanstackRoute = tanstackRoute.lazy(async () => { 2254 const module = route.content_module ? await import(route.content_module) : {}; 2255 const Stage = module.stage; 2256 const Inspector = module.inspector; 2257 return createLazyRoute(route.path)({ 2258 component: function RouteComponent() { 2259 const { inspector: showInspector } = useLoaderData({ from: route.path }) ?? {}; 2260 return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [ 2261 Stage && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "boot-layout__stage", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Stage, {}) }), 2262 Inspector && showInspector && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "boot-layout__inspector", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Inspector, {}) }) 2263 ] }); 2264 } 2265 }); 2266 }); 2267 return tanstackRoute; 2268 } 2269 function createRouteTree(routes, rootComponent = Root) { 2270 const rootRoute = createRootRoute({ 2271 component: rootComponent, 2272 context: () => ({}) 2273 }); 2274 const dynamicRoutes = routes.map( 2275 (route) => createRouteFromDefinition(route, rootRoute) 2276 ); 2277 return rootRoute.addChildren(dynamicRoutes); 2278 } 2279 function createPathHistory() { 2280 return createBrowserHistory({ 2281 parseLocation: () => { 2282 const url = new URL(window.location.href); 2283 const path = url.searchParams.get("p") || "/"; 2284 const pathHref = `$path}$url.hash}`; 2285 return parseHref(pathHref, window.history.state); 2286 }, 2287 createHref: (href) => { 2288 const searchParams = new URLSearchParams(window.location.search); 2289 searchParams.set("p", href); 2290 return `$window.location.pathname}?$searchParams}`; 2291 } 2292 }); 2293 } 2294 function Router({ 2295 routes, 2296 rootComponent = Root 2297 }) { 2298 const router = (0, import_element15.useMemo)(() => { 2299 const history = createPathHistory(); 2300 const routeTree = createRouteTree(routes, rootComponent); 2301 return createRouter({ 2302 history, 2303 routeTree, 2304 defaultPreload: "intent", 2305 defaultNotFoundComponent: NotFoundComponent, 2306 defaultViewTransition: { 2307 types: ({ 2308 fromLocation 2309 }) => { 2310 if (!fromLocation) { 2311 return false; 2312 } 2313 return ["navigate"]; 2314 } 2315 } 2316 }); 2317 }, [routes, rootComponent]); 2318 return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RouterProvider, { router }); 2319 } 2320 2321 // packages/boot/build-module/components/root/single-page.mjs 2322 var import_notices2 = __toESM(require_notices(), 1); 2323 var import_components15 = __toESM(require_components(), 1); 2324 import { privateApis as routePrivateApis7 } from "@wordpress/route"; 2325 var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); 2326 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='d1ebf43fe1']")) { 2327 const style = document.createElement("style"); 2328 style.setAttribute("data-wp-hash", "d1ebf43fe1"); 2329 style.appendChild(document.createTextNode(".boot-layout{background:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-direction:row;height:100%;isolation:isolate;width:100%}.boot-layout__sidebar-backdrop{background-color:#00000080;bottom:0;cursor:pointer;left:0;position:fixed;right:0;top:0;z-index:100002}.boot-layout__sidebar{flex-shrink:0;height:100%;overflow:hidden;position:relative;width:240px}.boot-layout__sidebar.is-mobile{background:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);bottom:0;box-shadow:2px 0 8px #0003;inset-inline-start:0;max-width:85vw;position:fixed;top:0;width:300px;z-index:100003}.boot-layout__mobile-sidebar-drawer{left:0;position:fixed;right:0;top:0}.boot-layout--single-page .boot-layout__mobile-sidebar-drawer{top:46px}.boot-layout__mobile-sidebar-drawer{align-items:center;background:var(--wpds-color-bg-surface-neutral,#fff);border-bottom:1px solid var(--wpds-color-stroke-surface-neutral-weak,#ddd);display:flex;justify-content:flex-start;padding:16px;z-index:3}.boot-layout__canvas.has-mobile-drawer{padding-top:65px;position:relative}.boot-layout__surfaces{display:flex;flex-grow:1;gap:8px;margin:0}@media (min-width:782px){.boot-layout__surfaces{margin:8px}.boot-layout--single-page .boot-layout__surfaces{margin-top:0;margin-inline-start:0}}.boot-layout__inspector,.boot-layout__stage{background:var(--wpds-color-bg-surface-neutral,#fff);border-radius:0;bottom:0;color:var(--wpds-color-fg-content-neutral,#1e1e1e);flex:1;height:100vh;left:0;margin:0;overflow-y:auto;position:relative;position:fixed;right:0;top:0;width:100vw}.boot-layout--single-page .boot-layout__inspector,.boot-layout--single-page .boot-layout__stage{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.boot-layout__inspector,.boot-layout__stage{border-radius:8px;height:auto;margin:0;position:static;width:auto}.boot-layout--single-page .boot-layout__inspector,.boot-layout--single-page .boot-layout__stage{height:auto}}.boot-layout__stage{z-index:2}@media (min-width:782px){.boot-layout__stage{z-index:auto}}.boot-layout__inspector{z-index:3}@media (min-width:782px){.boot-layout__inspector{z-index:auto}}.boot-layout__canvas{background:var(--wpds-color-bg-surface-neutral,#fff);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#ddd);border-radius:0;bottom:0;box-shadow:0 1px 3px #0000001a;color:var(--wpds-color-fg-content-neutral,#1e1e1e);flex:1;height:100vh;left:0;margin:0;overflow-y:auto;position:relative;position:fixed;right:0;top:0;width:100vw;z-index:1}.boot-layout--single-page .boot-layout__canvas{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.boot-layout__canvas{border-radius:8px;height:auto;position:static;width:auto;z-index:auto}.boot-layout--single-page .boot-layout__canvas{height:auto}.boot-layout.has-canvas .boot-layout__stage,.boot-layout__inspector{max-width:400px}}.boot-layout__canvas .interface-interface-skeleton{height:100%;left:0!important;position:relative;top:0!important}.boot-layout.has-full-canvas .boot-layout__surfaces{gap:0;margin:0}.boot-layout.has-full-canvas .boot-layout__inspector,.boot-layout.has-full-canvas .boot-layout__stage{display:none}.boot-layout.has-full-canvas .boot-layout__canvas{border:none;border-radius:0;bottom:0;box-shadow:none;left:0;margin:0;max-width:none;overflow:hidden;position:fixed;right:0;top:0}.boot-layout--single-page .boot-layout.has-full-canvas .boot-layout__canvas{top:46px}@media (min-width:782px){.boot-layout--single-page .boot-layout.has-full-canvas .boot-layout__canvas{top:32px}}")); 2330 document.head.appendChild(style); 2331 } 2332 var { useMatches: useMatches4, Outlet: Outlet2 } = unlock(routePrivateApis7); 2333 function RootSinglePage() { 2334 const matches = useMatches4(); 2335 const currentMatch = matches[matches.length - 1]; 2336 const canvas = currentMatch?.loaderData?.canvas; 2337 const routeContentModule = currentMatch?.loaderData?.routeContentModule; 2338 const isFullScreen = canvas && !canvas.isPreview; 2339 useRouteTitle(); 2340 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components15.SlotFillProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(UserThemeProvider, { isRoot: true, color: { bg: "#f8f8f8" }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(UserThemeProvider, { color: { bg: "#1d2327" }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)( 2341 "div", 2342 { 2343 className: clsx_default( 2344 "boot-layout boot-layout--single-page", 2345 { 2346 "has-canvas": !!canvas || canvas === null, 2347 "has-full-canvas": isFullScreen 2348 } 2349 ), 2350 children: [ 2351 /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SavePanel, {}), 2352 /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_notices2.SnackbarNotices, { className: "boot-notices__snackbar" }), 2353 /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "boot-layout__surfaces", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(UserThemeProvider, { color: { bg: "#ffffff" }, children: [ 2354 /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Outlet2, {}), 2355 (canvas || canvas === null) && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "boot-layout__canvas", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( 2356 CanvasRenderer, 2357 { 2358 canvas, 2359 routeContentModule 2360 } 2361 ) }) 2362 ] }) }) 2363 ] 2364 } 2365 ) }) }) }); 2366 } 2367 2368 // packages/boot/build-module/components/app/index.mjs 2369 var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); 2370 function App({ rootComponent }) { 2371 const routes = (0, import_data11.useSelect)((select) => select(store).getRoutes(), []); 2372 return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Router, { routes, rootComponent }); 2373 } 2374 async function init({ 2375 mountId, 2376 menuItems, 2377 routes, 2378 initModules, 2379 dashboardLink 2380 }) { 2381 (menuItems ?? []).forEach((menuItem) => { 2382 (0, import_data11.dispatch)(store).registerMenuItem(menuItem.id, menuItem); 2383 }); 2384 (routes ?? []).forEach((route) => { 2385 (0, import_data11.dispatch)(store).registerRoute(route); 2386 }); 2387 if (dashboardLink) { 2388 (0, import_data11.dispatch)(store).setDashboardLink(dashboardLink); 2389 } 2390 for (const moduleId of initModules ?? []) { 2391 const module = await import(moduleId); 2392 await module.init(); 2393 } 2394 const rootElement = document.getElementById(mountId); 2395 if (rootElement) { 2396 const root = (0, import_element16.createRoot)(rootElement); 2397 root.render( 2398 /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_element16.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(App, {}) }) 2399 ); 2400 } 2401 } 2402 async function initSinglePage({ 2403 mountId, 2404 routes 2405 }) { 2406 (routes ?? []).forEach((route) => { 2407 (0, import_data11.dispatch)(store).registerRoute(route); 2408 }); 2409 const rootElement = document.getElementById(mountId); 2410 if (rootElement) { 2411 const root = (0, import_element16.createRoot)(rootElement); 2412 root.render( 2413 /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_element16.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(App, { rootComponent: RootSinglePage }) }) 2414 ); 2415 } 2416 } 2417 2418 // packages/boot/build-module/index.mjs 2419 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='e39fdc0848']")) { 2420 const style = document.createElement("style"); 2421 style.setAttribute("data-wp-hash", "e39fdc0848"); 2422 style.appendChild(document.createTextNode(':root{--wpds-border-radius-lg:8px;--wpds-border-radius-md:4px;--wpds-border-radius-sm:2px;--wpds-border-radius-xs:1px;--wpds-border-width-focus:2px;--wpds-border-width-lg:8px;--wpds-border-width-md:4px;--wpds-border-width-sm:2px;--wpds-border-width-xs:1px;--wpds-color-bg-interactive-brand-strong:#3858e9;--wpds-color-bg-interactive-brand-strong-active:#2e49d9;--wpds-color-bg-interactive-brand-weak:#0000;--wpds-color-bg-interactive-brand-weak-active:#e6eaf4;--wpds-color-bg-interactive-error:#0000;--wpds-color-bg-interactive-error-active:#fff6f4;--wpds-color-bg-interactive-error-strong:#cc1818;--wpds-color-bg-interactive-error-strong-active:#b90000;--wpds-color-bg-interactive-error-weak:#0000;--wpds-color-bg-interactive-error-weak-active:#f6e6e3;--wpds-color-bg-interactive-neutral-strong:#2d2d2d;--wpds-color-bg-interactive-neutral-strong-active:#1e1e1e;--wpds-color-bg-interactive-neutral-strong-disabled:#e2e2e2;--wpds-color-bg-interactive-neutral-weak:#0000;--wpds-color-bg-interactive-neutral-weak-active:#eaeaea;--wpds-color-bg-interactive-neutral-weak-disabled:#0000;--wpds-color-bg-surface-brand:#ecf0f9;--wpds-color-bg-surface-caution:#fee994;--wpds-color-bg-surface-caution-weak:#fff9c9;--wpds-color-bg-surface-error:#f6e6e3;--wpds-color-bg-surface-error-weak:#fff6f4;--wpds-color-bg-surface-info:#deebfa;--wpds-color-bg-surface-info-weak:#f2f9ff;--wpds-color-bg-surface-neutral:#f8f8f8;--wpds-color-bg-surface-neutral-strong:#fff;--wpds-color-bg-surface-neutral-weak:#f0f0f0;--wpds-color-bg-surface-success:#c5f7cc;--wpds-color-bg-surface-success-weak:#eaffed;--wpds-color-bg-surface-warning:#fde6bd;--wpds-color-bg-surface-warning-weak:#fff7e0;--wpds-color-bg-thumb-brand:#3858e9;--wpds-color-bg-thumb-brand-active:#3858e9;--wpds-color-bg-thumb-neutral-disabled:#d8d8d8;--wpds-color-bg-thumb-neutral-weak:#8a8a8a;--wpds-color-bg-thumb-neutral-weak-active:#6c6c6c;--wpds-color-bg-track-neutral:#d8d8d8;--wpds-color-bg-track-neutral-weak:#e0e0e0;--wpds-color-fg-content-caution:#281d00;--wpds-color-fg-content-caution-weak:#826a00;--wpds-color-fg-content-error:#470000;--wpds-color-fg-content-error-weak:#cc1818;--wpds-color-fg-content-info:#001b4f;--wpds-color-fg-content-info-weak:#006bd7;--wpds-color-fg-content-neutral:#1e1e1e;--wpds-color-fg-content-neutral-weak:#6d6d6d;--wpds-color-fg-content-success:#002900;--wpds-color-fg-content-success-weak:#007f30;--wpds-color-fg-content-warning:#2e1900;--wpds-color-fg-content-warning-weak:#926300;--wpds-color-fg-interactive-brand:#3858e9;--wpds-color-fg-interactive-brand-active:#3858e9;--wpds-color-fg-interactive-brand-strong:#eff0f2;--wpds-color-fg-interactive-brand-strong-active:#eff0f2;--wpds-color-fg-interactive-error:#cc1818;--wpds-color-fg-interactive-error-active:#cc1818;--wpds-color-fg-interactive-error-strong:#f2efef;--wpds-color-fg-interactive-error-strong-active:#f2efef;--wpds-color-fg-interactive-neutral:#1e1e1e;--wpds-color-fg-interactive-neutral-active:#1e1e1e;--wpds-color-fg-interactive-neutral-disabled:#8a8a8a;--wpds-color-fg-interactive-neutral-strong:#f0f0f0;--wpds-color-fg-interactive-neutral-strong-active:#f0f0f0;--wpds-color-fg-interactive-neutral-strong-disabled:#8a8a8a;--wpds-color-fg-interactive-neutral-weak:#6d6d6d;--wpds-color-fg-interactive-neutral-weak-disabled:#8a8a8a;--wpds-color-stroke-focus-brand:#3858e9;--wpds-color-stroke-interactive-brand:#3858e9;--wpds-color-stroke-interactive-brand-active:#2337c8;--wpds-color-stroke-interactive-error:#cc1818;--wpds-color-stroke-interactive-error-active:#9d0000;--wpds-color-stroke-interactive-error-strong:#cc1818;--wpds-color-stroke-interactive-neutral:#8a8a8a;--wpds-color-stroke-interactive-neutral-active:#6c6c6c;--wpds-color-stroke-interactive-neutral-disabled:#d8d8d8;--wpds-color-stroke-interactive-neutral-strong:#6c6c6c;--wpds-color-stroke-surface-brand:#a3b1d4;--wpds-color-stroke-surface-brand-strong:#3858e9;--wpds-color-stroke-surface-error:#daa39b;--wpds-color-stroke-surface-error-strong:#cc1818;--wpds-color-stroke-surface-info:#9fbcdc;--wpds-color-stroke-surface-info-strong:#006bd7;--wpds-color-stroke-surface-neutral:#d8d8d8;--wpds-color-stroke-surface-neutral-strong:#8a8a8a;--wpds-color-stroke-surface-neutral-weak:#e0e0e0;--wpds-color-stroke-surface-success:#8ac894;--wpds-color-stroke-surface-success-strong:#007f30;--wpds-color-stroke-surface-warning:#d0b381;--wpds-color-stroke-surface-warning-strong:#926300;--wpds-dimension-base:4px;--wpds-dimension-gap-2xl:32px;--wpds-dimension-gap-3xl:40px;--wpds-dimension-gap-lg:16px;--wpds-dimension-gap-md:12px;--wpds-dimension-gap-sm:8px;--wpds-dimension-gap-xl:24px;--wpds-dimension-gap-xs:4px;--wpds-dimension-padding-2xl:24px;--wpds-dimension-padding-3xl:32px;--wpds-dimension-padding-lg:16px;--wpds-dimension-padding-md:12px;--wpds-dimension-padding-sm:8px;--wpds-dimension-padding-xl:20px;--wpds-dimension-padding-xs:4px;--wpds-elevation-lg:0 5px 15px 0 #00000014,0 15px 27px 0 #00000012,0 30px 36px 0 #0000000a,0 50px 43px 0 #00000005;--wpds-elevation-md:0 2px 3px 0 #0000000d,0 4px 5px 0 #0000000a,0 12px 12px 0 #00000008,0 16px 16px 0 #00000005;--wpds-elevation-sm:0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005;--wpds-elevation-xs:0 1px 1px 0 #00000008,0 1px 2px 0 #00000005,0 3px 3px 0 #00000005,0 4px 4px 0 #00000003;--wpds-font-family-body:-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif;--wpds-font-family-heading:-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif;--wpds-font-family-mono:"Menlo","Consolas",monaco,monospace;--wpds-font-line-height-2xl:40px;--wpds-font-line-height-lg:28px;--wpds-font-line-height-md:24px;--wpds-font-line-height-sm:20px;--wpds-font-line-height-xl:32px;--wpds-font-line-height-xs:16px;--wpds-font-size-2xl:32px;--wpds-font-size-lg:15px;--wpds-font-size-md:13px;--wpds-font-size-sm:12px;--wpds-font-size-xl:20px;--wpds-font-size-xs:11px;--wpds-font-weight-medium:499;--wpds-font-weight-regular:400}[data-wpds-theme-provider-id][data-wpds-density=compact]{--wpds-dimension-gap-2xl:24px;--wpds-dimension-gap-3xl:32px;--wpds-dimension-gap-lg:12px;--wpds-dimension-gap-md:8px;--wpds-dimension-gap-sm:4px;--wpds-dimension-gap-xl:20px;--wpds-dimension-gap-xs:4px;--wpds-dimension-padding-2xl:20px;--wpds-dimension-padding-3xl:24px;--wpds-dimension-padding-lg:12px;--wpds-dimension-padding-md:8px;--wpds-dimension-padding-sm:4px;--wpds-dimension-padding-xl:16px;--wpds-dimension-padding-xs:4px}[data-wpds-theme-provider-id][data-wpds-density=comfortable]{--wpds-dimension-gap-2xl:40px;--wpds-dimension-gap-3xl:48px;--wpds-dimension-gap-lg:20px;--wpds-dimension-gap-md:16px;--wpds-dimension-gap-sm:12px;--wpds-dimension-gap-xl:32px;--wpds-dimension-gap-xs:8px;--wpds-dimension-padding-2xl:32px;--wpds-dimension-padding-3xl:40px;--wpds-dimension-padding-lg:20px;--wpds-dimension-padding-md:16px;--wpds-dimension-padding-sm:12px;--wpds-dimension-padding-xl:24px;--wpds-dimension-padding-xs:8px}[data-wpds-theme-provider-id][data-wpds-density=default]{--wpds-dimension-base:4px;--wpds-dimension-gap-2xl:32px;--wpds-dimension-gap-3xl:40px;--wpds-dimension-gap-lg:16px;--wpds-dimension-gap-md:12px;--wpds-dimension-gap-sm:8px;--wpds-dimension-gap-xl:24px;--wpds-dimension-gap-xs:4px;--wpds-dimension-padding-2xl:24px;--wpds-dimension-padding-3xl:32px;--wpds-dimension-padding-lg:16px;--wpds-dimension-padding-md:12px;--wpds-dimension-padding-sm:8px;--wpds-dimension-padding-xl:20px;--wpds-dimension-padding-xs:4px}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){:root{--wpds-border-width-focus:1.5px}}.admin-ui-page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}.admin-ui-page__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-bottom:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e0e0e0);padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;top:0;z-index:1}.admin-ui-page__header-title{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-xl,20px);font-weight:var(--wpds-font-weight-medium,499);line-height:var(--wpds-font-line-height-xl,32px);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-ui-page__sidebar-toggle-slot:empty{display:none}.admin-ui-page__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#6d6d6d);font-size:var(--wpds-font-size-md,13px);line-height:var(--wpds-font-line-height-md,24px);margin:0;padding-block-end:var(--wpds-dimension-padding-xs,4px)}.admin-ui-page__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto}.admin-ui-page__content.has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}.show-icon-labels .admin-ui-page__header-actions .components-button.has-icon{padding:0 var(--wpds-dimension-padding-xs,4px);width:auto}.show-icon-labels .admin-ui-page__header-actions .components-button.has-icon svg{display:none}.show-icon-labels .admin-ui-page__header-actions .components-button.has-icon:after{content:attr(aria-label);font-size:var(--wpds-font-size-sm,12px)}.admin-ui-breadcrumbs__list{font-size:15px;font-weight:500;gap:0;list-style:none;margin:0;min-height:32px;padding:0}.admin-ui-breadcrumbs__list li:not(:last-child):after{content:"/";margin:0 8px}.admin-ui-breadcrumbs__list h1{font-size:inherit;line-height:inherit}@media (min-width:600px){.boot-layout-container .boot-layout{bottom:0;left:0;min-height:calc(100vh - 46px);position:absolute;right:0;top:0}}@media (min-width:782px){.boot-layout-container .boot-layout{min-height:calc(100vh - 32px)}body:has(.boot-layout.has-full-canvas) .boot-layout-container .boot-layout{min-height:100vh}}.boot-layout-container .boot-layout img{height:auto;max-width:100%}.boot-layout .boot-notices__snackbar{bottom:24px;box-sizing:border-box;display:flex;flex-direction:column;left:0;padding-inline:16px;pointer-events:none;position:fixed;right:0}.boot-layout .boot-notices__snackbar .components-snackbar{margin-inline:auto}')); 2423 document.head.appendChild(style); 2424 } 2425 if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='2a741c061f']")) { 2426 const style = document.createElement("style"); 2427 style.setAttribute("data-wp-hash", "2a741c061f"); 2428 style.appendChild(document.createTextNode("@media (max-width:782px){*{view-transition-name:none!important}}::view-transition-new(root),::view-transition-old(root){animation-duration:.25s}@media not (prefers-reduced-motion:reduce){.boot-layout__canvas .interface-interface-skeleton__header{view-transition-name:boot--canvas-header}.boot-layout__canvas .interface-interface-skeleton__sidebar{view-transition-name:boot--canvas-sidebar}.boot-layout.has-full-canvas .boot-layout__canvas .boot-site-icon-link,.boot-layout:not(.has-full-canvas) .boot-site-hub .boot-site-icon-link{view-transition-name:boot--site-icon-link}.boot-layout__stage{view-transition-name:boot--stage}.boot-layout__inspector{view-transition-name:boot--inspector}.boot-layout__canvas.is-full-canvas .interface-interface-skeleton__content,.boot-layout__canvas:not(.is-full-canvas){view-transition-name:boot--canvas}@supports (-webkit-hyphens:none) and (not (-moz-appearance:none)){.boot-layout__stage{view-transition-name:boot-safari--stage}.boot-layout__inspector{view-transition-name:boot-safari--inspector}.boot-layout__canvas.is-full-canvas .interface-interface-skeleton__content,.boot-layout__canvas:not(.is-full-canvas){view-transition-name:boot-safari--canvas}}.components-popover:first-of-type{view-transition-name:boot--components-popover}}::view-transition-group(boot--canvas),::view-transition-group(boot--canvas-header),::view-transition-group(boot--canvas-sidebar),::view-transition-group(boot-safari--canvas){z-index:1}::view-transition-group(boot--site-icon-link){z-index:2}::view-transition-new(boot--site-icon-link),::view-transition-old(boot--site-icon-link){animation:none}::view-transition-new(boot-safari--canvas),::view-transition-new(boot-safari--inspector),::view-transition-new(boot-safari--stage),::view-transition-old(boot-safari--canvas),::view-transition-old(boot-safari--inspector),::view-transition-old(boot-safari--stage){width:auto}::view-transition-new(boot--canvas),::view-transition-new(boot--inspector),::view-transition-new(boot--stage),::view-transition-old(boot--canvas),::view-transition-old(boot--inspector),::view-transition-old(boot--stage){background:#fff;border-radius:8px;height:100%;object-fit:none;object-position:left top;overflow:hidden;width:100%}::view-transition-new(boot--canvas),::view-transition-old(boot--canvas){object-position:center top}::view-transition-old(boot--inspector):only-child,::view-transition-old(boot--stage):only-child,::view-transition-old(boot-safari--inspector):only-child,::view-transition-old(boot-safari--stage):only-child{animation-name:zoomOut;will-change:transform,opacity}::view-transition-new(boot--inspector):only-child,::view-transition-new(boot--stage):only-child,::view-transition-new(boot-safari--inspector):only-child,::view-transition-new(boot-safari--stage):only-child{animation-name:zoomIn;will-change:transform,opacity}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}::view-transition-new(boot--canvas):only-child,::view-transition-new(boot-safari--canvas):only-child{animation-name:slideFromRight;will-change:transform}::view-transition-old(boot--canvas):only-child,::view-transition-old(boot-safari--canvas):only-child{animation-name:slideToRight;will-change:transform}@keyframes slideFromRight{0%{transform:translateX(100vw)}to{transform:translateX(0)}}@keyframes slideToRight{0%{transform:translateX(0)}to{transform:translateX(100vw)}}::view-transition-new(boot--canvas-header):only-child{animation-name:slideHeaderFromTop;will-change:transform}::view-transition-old(boot--canvas-header):only-child{animation-name:slideHeaderToTop;will-change:transform}@keyframes slideHeaderFromTop{0%{transform:translateY(-100%)}}@keyframes slideHeaderToTop{to{transform:translateY(-100%)}}::view-transition-new(boot--canvas-sidebar):only-child{animation-name:slideSidebarFromRight;will-change:transform}::view-transition-old(boot--canvas-sidebar):only-child{animation-name:slideSidebarToRight;will-change:transform}@keyframes slideSidebarFromRight{0%{transform:translateX(100%)}}@keyframes slideSidebarToRight{to{transform:translateX(100%)}}")); 2429 document.head.appendChild(style); 2430 } 2431 export { 2432 init, 2433 initSinglePage, 2434 store 2435 };
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Sun Jun 14 08:20:09 2026 | Cross-referenced by PHPXref |